From 98db689eb65a6f39b340eca61e9f70d6b178fb5a Mon Sep 17 00:00:00 2001 From: Mario Perez Date: Sun, 19 Jul 2015 15:41:42 +0200 Subject: [PATCH 001/548] "scss-lint" has been renamed to "scss_lint" See attached image for the warning: https://cloudup.com/cZzMtRGE5oU --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 44ca6e4b1..d48f74699 100644 --- a/Gemfile +++ b/Gemfile @@ -65,7 +65,7 @@ group :development, :test do gem "ruby-lint", require: false - gem "scss-lint", require: false + gem "scss_lint", require: false gem "brakeman", require: false diff --git a/Gemfile.lock b/Gemfile.lock index 8003a782b..e6688c3a6 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -205,7 +205,7 @@ GEM sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) tilt (~> 1.1) - scss-lint (0.38.0) + scss_lint (0.40.1) rainbow (~> 2.0) sass (~> 3.4.1) sdoc (0.4.1) @@ -274,7 +274,7 @@ DEPENDENCIES rubocop ruby-lint sass-rails - scss-lint + scss_lint sdoc spring spring-commands-rspec From 83766416e4dc539c957836f080b773c766137a14 Mon Sep 17 00:00:00 2001 From: Dylan Grafmyre Date: Tue, 28 Jul 2015 20:01:50 -1000 Subject: [PATCH 002/548] Remove reference to gemset Rails4.2 from README, Basic Setup --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b79a825b..ab19b4631 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ See package.json and Gemfile for versions 1. Be sure that you have Node installed. I use [nvm](https://github.com/creationix/nvm), with node version `v0.10.33`. 1. `git clone git@github.com:justin808/react-webpack-rails-tutorial.git` 1. `cd react-webpack-rails-tutorial` -1. Check that you have Ruby 2.2.1 and the gemset Rails 4.2 (this might change in the future) +1. Check that you have Ruby 2.2.1 1. `bundle install` 1. `npm install` 1. `rake db:setup` From fbed641f4997c7d2602abef87a2f54b091bebe76 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 1 Aug 2015 14:40:35 -1000 Subject: [PATCH 003/548] Update versions of ruby, node, gems, npm --- .nvmrc | 1 + .ruby-version | 2 +- Gemfile | 4 +- Gemfile.lock | 154 +++--- client/.eslintrc | 258 +-------- client/README.md | 3 +- client/npm-shrinkwrap.json | 930 +++++++++++++++++--------------- client/package.json | 61 +-- client/webpack.common.config.js | 3 +- client/webpack.hot.config.js | 3 + 10 files changed, 620 insertions(+), 799 deletions(-) create mode 100644 .nvmrc diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 000000000..9212624f5 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v0.12.7 diff --git a/.ruby-version b/.ruby-version index c043eea77..b1b25a5ff 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.2.1 +2.2.2 diff --git a/Gemfile b/Gemfile index 44ca6e4b1..42d3f3ba1 100644 --- a/Gemfile +++ b/Gemfile @@ -1,5 +1,5 @@ source "https://rubygems.org/" -ruby "2.2.1" +ruby "2.2.2" # # Bundle edge Rails instead: gem "rails", github: "rails/rails" @@ -49,7 +49,7 @@ group :development, :test do gem "byebug" # Access an IRB console on exceptions page and /console in development - gem "web-console", "~> 2.0.0.beta2" + gem "web-console" # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem "spring" diff --git a/Gemfile.lock b/Gemfile.lock index 8003a782b..ef948a2b3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,66 +1,66 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (4.2.1) - actionpack (= 4.2.1) - actionview (= 4.2.1) - activejob (= 4.2.1) + actionmailer (4.2.3) + actionpack (= 4.2.3) + actionview (= 4.2.3) + activejob (= 4.2.3) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.1) - actionview (= 4.2.1) - activesupport (= 4.2.1) + actionpack (4.2.3) + actionview (= 4.2.3) + activesupport (= 4.2.3) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.1) - actionview (4.2.1) - activesupport (= 4.2.1) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (4.2.3) + activesupport (= 4.2.3) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) - rails-html-sanitizer (~> 1.0, >= 1.0.1) - activejob (4.2.1) - activesupport (= 4.2.1) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + activejob (4.2.3) + activesupport (= 4.2.3) globalid (>= 0.3.0) - activemodel (4.2.1) - activesupport (= 4.2.1) + activemodel (4.2.3) + activesupport (= 4.2.3) builder (~> 3.1) - activerecord (4.2.1) - activemodel (= 4.2.1) - activesupport (= 4.2.1) + activerecord (4.2.3) + activemodel (= 4.2.3) + activesupport (= 4.2.3) arel (~> 6.0) - activesupport (4.2.1) + activesupport (4.2.3) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) addressable (2.3.8) - arel (6.0.0) + arel (6.0.2) ast (2.0.0) - astrolabe (1.3.0) - parser (>= 2.2.0.pre.3, < 3.0) - autoprefixer-rails (5.1.11) + astrolabe (1.3.1) + parser (~> 2.2) + autoprefixer-rails (5.2.1.1) execjs json binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) - bootstrap-sass (3.3.4.1) + bootstrap-sass (3.3.5.1) autoprefixer-rails (>= 5.0.0.1) - sass (>= 3.2.19) - brakeman (3.0.3) + sass (>= 3.3.0) + brakeman (3.0.5) erubis (~> 2.6) fastercsv (~> 1.5) haml (>= 3.0, < 5.0) highline (~> 1.6.20) multi_json (~> 1.2) ruby2ruby (~> 2.1.1) - ruby_parser (~> 3.6.2) + ruby_parser (~> 3.7.0) sass (~> 3.0) terminal-table (~> 1.4) builder (3.2.2) - bundler-audit (0.3.1) + bundler-audit (0.4.0) bundler (~> 1.2) thor (~> 0.18) byebug (5.0.0) @@ -71,10 +71,10 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - capybara-screenshot (1.0.9) + capybara-screenshot (1.0.11) capybara (>= 1.0, < 3) launchy - capybara-webkit (1.5.1) + capybara-webkit (1.6.0) capybara (>= 2.3.0, < 2.5.0) json coffee-rails (4.1.0) @@ -104,14 +104,14 @@ GEM tilt highline (1.6.21) i18n (0.7.0) - jbuilder (2.2.16) + jbuilder (2.3.1) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) - jquery-rails (4.0.3) + jquery-rails (4.0.4) rails-dom-testing (~> 1.0) railties (>= 4.2.0) thor (>= 0.14, < 2.0) - json (1.8.2) + json (1.8.3) kgio (2.9.3) launchy (2.4.3) addressable (~> 2.3) @@ -119,29 +119,29 @@ GEM nokogiri (>= 1.5.9) mail (2.6.3) mime-types (>= 1.16, < 3) - mime-types (2.5) + mime-types (2.6.1) mini_portile (0.6.2) - minitest (5.6.1) - multi_json (1.11.0) + minitest (5.7.0) + multi_json (1.11.2) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) - parser (2.2.2.3) + parser (2.2.2.6) ast (>= 1.1, < 3.0) pg (0.18.2) powerpack (0.1.1) - rack (1.6.1) + rack (1.6.4) rack-test (0.6.3) rack (>= 1.0) - rails (4.2.1) - actionmailer (= 4.2.1) - actionpack (= 4.2.1) - actionview (= 4.2.1) - activejob (= 4.2.1) - activemodel (= 4.2.1) - activerecord (= 4.2.1) - activesupport (= 4.2.1) + rails (4.2.3) + actionmailer (= 4.2.3) + actionpack (= 4.2.3) + actionview (= 4.2.3) + activejob (= 4.2.3) + activemodel (= 4.2.3) + activerecord (= 4.2.3) + activesupport (= 4.2.3) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.1) + railties (= 4.2.3) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) @@ -156,36 +156,35 @@ GEM rails_stdout_logging rails_serve_static_assets (0.0.4) rails_stdout_logging (0.0.3) - railties (4.2.1) - actionpack (= 4.2.1) - activesupport (= 4.2.1) + railties (4.2.3) + actionpack (= 4.2.3) + activesupport (= 4.2.3) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.0.0) - raindrops (0.13.0) + raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - json (~> 1.4) - rspec-core (3.2.3) - rspec-support (~> 3.2.0) - rspec-expectations (3.2.1) + rspec-core (3.3.2) + rspec-support (~> 3.3.0) + rspec-expectations (3.3.1) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.2.0) - rspec-mocks (3.2.1) + rspec-support (~> 3.3.0) + rspec-mocks (3.3.2) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.2.0) - rspec-rails (3.2.1) + rspec-support (~> 3.3.0) + rspec-rails (3.3.3) actionpack (>= 3.0, < 4.3) activesupport (>= 3.0, < 4.3) railties (>= 3.0, < 4.3) - rspec-core (~> 3.2.0) - rspec-expectations (~> 3.2.0) - rspec-mocks (~> 3.2.0) - rspec-support (~> 3.2.0) - rspec-support (3.2.2) - rubocop (0.31.0) + rspec-core (~> 3.3.0) + rspec-expectations (~> 3.3.0) + rspec-mocks (~> 3.3.0) + rspec-support (~> 3.3.0) + rspec-support (3.3.0) + rubocop (0.32.1) astrolabe (~> 1.3) - parser (>= 2.2.2.1, < 3.0) + parser (>= 2.2.2.5, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.4) @@ -196,9 +195,9 @@ GEM ruby2ruby (2.1.4) ruby_parser (~> 3.1) sexp_processor (~> 4.0) - ruby_parser (3.6.6) + ruby_parser (3.7.0) sexp_processor (~> 4.1) - sass (3.4.13) + sass (3.4.16) sass-rails (5.0.3) railties (>= 4.0.0, < 5.0) sass (~> 3.1) @@ -211,19 +210,19 @@ GEM sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - sexp_processor (4.5.1) + sexp_processor (4.6.0) slop (3.6.0) spring (1.3.6) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - sprockets (3.1.0) + sprockets (3.2.0) rack (~> 1.0) - sprockets-rails (2.3.1) + sprockets-rails (2.3.2) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) sqlite3 (1.3.10) - terminal-table (1.4.5) + terminal-table (1.5.2) thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) @@ -238,10 +237,10 @@ GEM kgio (~> 2.6) rack raindrops (~> 0.7) - web-console (2.0.0) - activemodel (~> 4.0) + web-console (2.2.1) + activemodel (>= 4.0) binding_of_caller (>= 0.7.2) - railties (~> 4.0) + railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) xpath (2.0.0) nokogiri (~> 1.3) @@ -282,4 +281,7 @@ DEPENDENCIES turbolinks uglifier unicorn - web-console (~> 2.0.0.beta2) + web-console + +BUNDLED WITH + 1.10.5 diff --git a/client/.eslintrc b/client/.eslintrc index 4b4ba8476..7c3ca0c7a 100644 --- a/client/.eslintrc +++ b/client/.eslintrc @@ -1,260 +1,4 @@ { + "extends": "airbnb", -/** - * Slight changes from https://raw.githubusercontent.com/airbnb/javascript/master/linters/.eslintrc - */ - - "parser": "babel-eslint", - "env": { - "browser": true, - "node": true - }, - "plugins": ["react"], - - "ecmaFeatures": { - "arrowFunctions": true, - "blockBindings": true, - "classes": true, - "defaultParams": true, - "destructuring": true, - "forOf": true, - "generators": false, - "modules": true, - "objectLiteralComputedProperties": true, - "objectLiteralDuplicateProperties": false, - "objectLiteralShorthandMethods": true, - "objectLiteralShorthandProperties": true, - "spread": true, - "superInFunctions": true, - "templateStrings": true, - "jsx": true - }, - "rules": { -/** - * Strict mode - */ - // babel inserts "use strict"; for us - // http://eslint.org/docs/rules/strict - "strict": [2, "never"], - -/** - * ES6 - */ - "no-var": 2, // http://eslint.org/docs/rules/no-var - -/** - * Variables - */ - "no-shadow": 2, // http://eslint.org/docs/rules/no-shadow - "no-shadow-restricted-names": 2, // http://eslint.org/docs/rules/no-shadow-restricted-names - "no-unused-vars": [2, { // http://eslint.org/docs/rules/no-unused-vars - "vars": "local", - "args": "after-used" - }], - "no-use-before-define": 2, // http://eslint.org/docs/rules/no-use-before-define - -/** - * Possible errors - */ - "comma-dangle": [2, "never"], // http://eslint.org/docs/rules/comma-dangle - "no-cond-assign": [2, "always"], // http://eslint.org/docs/rules/no-cond-assign - "no-console": 1, // http://eslint.org/docs/rules/no-console - - // DEVIATION - "no-debugger": 2, // http://eslint.org/docs/rules/no-debugger - - "no-alert": 1, // http://eslint.org/docs/rules/no-alert - "no-constant-condition": 1, // http://eslint.org/docs/rules/no-constant-condition - "no-dupe-keys": 2, // http://eslint.org/docs/rules/no-dupe-keys - "no-duplicate-case": 2, // http://eslint.org/docs/rules/no-duplicate-case - "no-empty": 2, // http://eslint.org/docs/rules/no-empty - "no-ex-assign": 2, // http://eslint.org/docs/rules/no-ex-assign - "no-extra-boolean-cast": 0, // http://eslint.org/docs/rules/no-extra-boolean-cast - "no-extra-semi": 2, // http://eslint.org/docs/rules/no-extra-semi - "no-func-assign": 2, // http://eslint.org/docs/rules/no-func-assign - "no-inner-declarations": 2, // http://eslint.org/docs/rules/no-inner-declarations - "no-invalid-regexp": 2, // http://eslint.org/docs/rules/no-invalid-regexp - "no-irregular-whitespace": 2, // http://eslint.org/docs/rules/no-irregular-whitespace - "no-obj-calls": 2, // http://eslint.org/docs/rules/no-obj-calls - "no-reserved-keys": 2, // http://eslint.org/docs/rules/no-reserved-keys - "no-sparse-arrays": 2, // http://eslint.org/docs/rules/no-sparse-arrays - "no-unreachable": 2, // http://eslint.org/docs/rules/no-unreachable - "use-isnan": 2, // http://eslint.org/docs/rules/use-isnan - "block-scoped-var": 2, // http://eslint.org/docs/rules/block-scoped-var - -/** - * Best practices - */ - "consistent-return": 2, // http://eslint.org/docs/rules/consistent-return - "curly": [2, "multi-line"], // http://eslint.org/docs/rules/curly - "default-case": 2, // http://eslint.org/docs/rules/default-case - "dot-notation": [2, { // http://eslint.org/docs/rules/dot-notation - "allowKeywords": false - }], - "eqeqeq": 2, // http://eslint.org/docs/rules/eqeqeq - "guard-for-in": 2, // http://eslint.org/docs/rules/guard-for-in - "no-caller": 2, // http://eslint.org/docs/rules/no-caller - "no-else-return": 2, // http://eslint.org/docs/rules/no-else-return - "no-eq-null": 2, // http://eslint.org/docs/rules/no-eq-null - "no-eval": 2, // http://eslint.org/docs/rules/no-eval - "no-extend-native": 2, // http://eslint.org/docs/rules/no-extend-native - "no-extra-bind": 2, // http://eslint.org/docs/rules/no-extra-bind - "no-fallthrough": 2, // http://eslint.org/docs/rules/no-fallthrough - "no-floating-decimal": 2, // http://eslint.org/docs/rules/no-floating-decimal - "no-implied-eval": 2, // http://eslint.org/docs/rules/no-implied-eval - "no-lone-blocks": 2, // http://eslint.org/docs/rules/no-lone-blocks - "no-loop-func": 2, // http://eslint.org/docs/rules/no-loop-func - "no-multi-str": 2, // http://eslint.org/docs/rules/no-multi-str - "no-native-reassign": 2, // http://eslint.org/docs/rules/no-native-reassign - "no-new": 2, // http://eslint.org/docs/rules/no-new - "no-new-func": 2, // http://eslint.org/docs/rules/no-new-func - "no-new-wrappers": 2, // http://eslint.org/docs/rules/no-new-wrappers - "no-octal": 2, // http://eslint.org/docs/rules/no-octal - "no-octal-escape": 2, // http://eslint.org/docs/rules/no-octal-escape - "no-param-reassign": 2, // http://eslint.org/docs/rules/no-param-reassign - "no-proto": 2, // http://eslint.org/docs/rules/no-proto - "no-redeclare": 2, // http://eslint.org/docs/rules/no-redeclare - "no-return-assign": 2, // http://eslint.org/docs/rules/no-return-assign - "no-script-url": 2, // http://eslint.org/docs/rules/no-script-url - "no-self-compare": 2, // http://eslint.org/docs/rules/no-self-compare - "no-sequences": 2, // http://eslint.org/docs/rules/no-sequences - "no-throw-literal": 2, // http://eslint.org/docs/rules/no-throw-literal - "no-with": 2, // http://eslint.org/docs/rules/no-with - "radix": 2, // http://eslint.org/docs/rules/radix - "vars-on-top": 2, // http://eslint.org/docs/rules/vars-on-top - "wrap-iife": [2, "any"], // http://eslint.org/docs/rules/wrap-iife - "yoda": 2, // http://eslint.org/docs/rules/yoda - -/** - * Style - */ - "indent": [2, 2], // http://eslint.org/docs/rules/ - "brace-style": [2, // http://eslint.org/docs/rules/brace-style - "1tbs", { - "allowSingleLine": true - }], - "quotes": [ - 2, "single", "avoid-escape" // http://eslint.org/docs/rules/quotes - ], - "camelcase": [2, { // http://eslint.org/docs/rules/camelcase - "properties": "never" - }], - "comma-spacing": [2, { // http://eslint.org/docs/rules/comma-spacing - "before": false, - "after": true - }], - "comma-style": [2, "last"], // http://eslint.org/docs/rules/comma-style - "eol-last": 2, // http://eslint.org/docs/rules/eol-last - "func-names": 1, // http://eslint.org/docs/rules/func-names - "key-spacing": [2, { // http://eslint.org/docs/rules/key-spacing - "beforeColon": false, - "afterColon": true - }], - "new-cap": [2, { // http://eslint.org/docs/rules/new-cap - "newIsCap": true - }], - "no-multiple-empty-lines": [2, { // http://eslint.org/docs/rules/no-multiple-empty-lines - "max": 2 - }], - "no-nested-ternary": 2, // http://eslint.org/docs/rules/no-nested-ternary - "no-new-object": 2, // http://eslint.org/docs/rules/no-new-object - "no-spaced-func": 2, // http://eslint.org/docs/rules/no-spaced-func - "no-trailing-spaces": 2, // http://eslint.org/docs/rules/no-trailing-spaces - "no-wrap-func": 2, // http://eslint.org/docs/rules/no-wrap-func - "no-underscore-dangle": 0, // http://eslint.org/docs/rules/no-underscore-dangle - "one-var": [2, "never"], // http://eslint.org/docs/rules/one-var - - # This issue is fixed: https://github.com/babel/babel-eslint/issues/33 - "padded-blocks": [2, "never"], // http://eslint.org/docs/rules/padded-blocks - - "semi": [2, "always"], // http://eslint.org/docs/rules/semi - "semi-spacing": [2, { // http://eslint.org/docs/rules/semi-spacing - "before": false, - "after": true - }], - "space-after-keywords": 2, // http://eslint.org/docs/rules/space-after-keywords - "space-before-blocks": 2, // http://eslint.org/docs/rules/space-before-blocks - "space-before-function-paren": [2, "never"], // http://eslint.org/docs/rules/space-before-function-paren - "space-infix-ops": 2, // http://eslint.org/docs/rules/space-infix-ops - "space-return-throw-case": 2, // http://eslint.org/docs/rules/space-return-throw-case - "spaced-line-comment": 2, // http://eslint.org/docs/rules/spaced-line-comment - - // ONES BELOW HERE are NOT in the Air Bnb standards, so they should be removed if they seem unnecessary - "no-array-constructor": 2, - "no-bitwise": 0, - "no-catch-shadow": 2, - "no-comma-dangle": 2, - "no-control-regex": 2, - "no-delete-var": 2, - "no-div-regex": 0, - "no-dupe-args": 2, - "no-empty-class": 2, - "no-empty-label": 2, - "no-extra-parens": 0, - "no-inline-comments": 0, - "no-iterator": 2, - "no-label-var": 2, - "no-labels": 2, - "no-lonely-if": 2, - "no-mixed-requires": [0, false], - "no-mixed-spaces-and-tabs": [2, false], - "no-multi-spaces": 2, - "no-negated-in-lhs": 2, - "no-new-require": 0, - "no-path-concat": 0, - "no-plusplus": 0, - "no-process-env": 0, - "no-process-exit": 0, - "no-regex-spaces": 2, - "no-space-before-semi": 2, - "no-sync": 0, - "no-ternary": 0, - "no-undef": 2, - "no-undef-init": 2, - "no-undefined": 0, - "no-unused-expressions": 2, - "no-warning-comments": [0, {"terms": ['todo', 'fixme', 'xxx'], "location": 'start'}], - "complexity": [0, 11], - "consistent-this": [2, 'self'], - "func-style": [2, 'declaration'], - "generator-star": 0, - "handle-callback-err": 2, - "max-depth": [1, 4], - # Different from 80 chars of AirBnb Javascript, - "max-len": [2, 120], - "max-nested-callbacks": [1, 2], - "max-params": [1, 4], - "max-statements": [0, 10], - "new-parens": 2, - "operator-assignment": [0, 'always'], - "quote-props": 0, - "semi": 2, - "sort-vars": 0, - "space-after-function-name": [0, 'never'], - "space-before-function-parentheses": [2, "never"], - "space-in-brackets": 2, - "space-in-parens": 2, - "space-return-throw-case": 2, - "space-unary-ops": [2, {"words": true, "nonwords": false}], - "valid-jsdoc": 2, - "valid-typeof": 2, - "wrap-iife": 0, - "wrap-regex": 0, - -/** - * JSX (not in airbnb guide) - */ - "react/display-name": 1, - "react/jsx-quotes": 1, - "react/jsx-no-undef": 1, - "react/jsx-uses-react": 1, - "react/jsx-uses-vars": 1, - "react/no-did-mount-set-state": 1, - "react/no-did-update-set-state": 1, - "react/no-multi-comp": 1, - "react/prop-types": 1, - "react/react-in-jsx-scope": 1, - "react/self-closing-comp": 1, - "react/wrap-multilines": 1 - } } diff --git a/client/README.md b/client/README.md index aa2a47b05..30d0717d1 100644 --- a/client/README.md +++ b/client/README.md @@ -29,9 +29,10 @@ Updating Node Dependenencies npm install -g npm-check-updates ``` -Make sure you are in the client directory, then run: ``` +# Make sure you are in the `client` directory, then run: +cd client rm npm-shrinkwrap.json npm-check-updates -u npm install diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index e8e7d73c8..a895fef2e 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -3,63 +3,128 @@ "version": "1.1.0", "dependencies": { "alt": { - "version": "0.16.5", - "from": "alt@>=0.16.5 <0.17.0", - "resolved": "https://registry.npmjs.org/alt/-/alt-0.16.5.tgz", + "version": "0.17.1", + "from": "alt@>=0.17.1 <0.18.0", + "resolved": "https://registry.npmjs.org/alt/-/alt-0.17.1.tgz", "dependencies": { - "es-symbol": { - "version": "1.1.2", - "from": "es-symbol@1.1.2", - "resolved": "https://registry.npmjs.org/es-symbol/-/es-symbol-1.1.2.tgz" - }, - "eventemitter3": { - "version": "0.1.6", - "from": "eventemitter3@0.1.6", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-0.1.6.tgz" - }, "flux": { "version": "2.0.3", "from": "flux@2.0.3", "resolved": "https://registry.npmjs.org/flux/-/flux-2.0.3.tgz" + }, + "transmitter": { + "version": "1.0.2", + "from": "transmitter@1.0.2", + "resolved": "https://registry.npmjs.org/transmitter/-/transmitter-1.0.2.tgz" } } }, "babel-core": { - "version": "5.4.5", - "from": "babel-core@>=5.4.5 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.4.5.tgz", + "version": "5.8.20", + "from": "babel-core@>=5.8.20 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.20.tgz", "dependencies": { - "acorn-jsx": { + "babel-plugin-constant-folding": { + "version": "1.0.1", + "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" + }, + "babel-plugin-eval": { + "version": "1.0.1", + "from": "babel-plugin-eval@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" + }, + "babel-plugin-property-literals": { "version": "1.0.1", - "from": "acorn-jsx@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-1.0.1.tgz", + "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" + }, + "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" + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "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-undeclared-variables-check": { + "version": "1.0.2", + "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", "dependencies": { - "acorn": { - "version": "1.1.0", - "from": "acorn@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-1.1.0.tgz" + "leven": { + "version": "1.0.2", + "from": "leven@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" } } }, - "ast-types": { - "version": "0.7.6", - "from": "ast-types@>=0.7.0 <0.8.0", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.6.tgz" + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "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" + }, + "babylon": { + "version": "5.8.20", + "from": "babylon@>=5.8.20 <6.0.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.20.tgz" }, "bluebird": { - "version": "2.9.25", - "from": "bluebird@>=2.9.25 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.25.tgz" + "version": "2.9.34", + "from": "bluebird@>=2.9.33 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" }, "chalk": { - "version": "1.0.0", + "version": "1.1.0", "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", "dependencies": { "ansi-styles": { - "version": "2.0.1", - "from": "ansi-styles@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz" + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" }, "escape-string-regexp": { "version": "1.0.3", @@ -67,38 +132,33 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" }, "has-ansi": { - "version": "1.0.3", - "from": "has-ansi@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz", + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "dependencies": { "ansi-regex": { - "version": "1.1.1", - "from": "ansi-regex@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" - }, - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "strip-ansi": { - "version": "2.0.1", - "from": "strip-ansi@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz", + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", "dependencies": { "ansi-regex": { - "version": "1.1.1", - "from": "ansi-regex@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "supports-color": { - "version": "1.3.1", - "from": "supports-color@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz" + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } } }, @@ -108,9 +168,9 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" }, "core-js": { - "version": "0.9.11", - "from": "core-js@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-0.9.11.tgz" + "version": "1.0.1", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.0.1.tgz" }, "debug": { "version": "2.2.0", @@ -135,22 +195,12 @@ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" }, "minimist": { - "version": "1.1.1", + "version": "1.1.2", "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.2.tgz" } } }, - "esquery": { - "version": "0.4.0", - "from": "esquery@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-0.4.0.tgz" - }, - "estraverse": { - "version": "4.1.0", - "from": "estraverse@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.0.tgz" - }, "esutils": { "version": "2.0.2", "from": "esutils@>=2.0.0 <3.0.0", @@ -201,21 +251,40 @@ } }, "is-nan": { - "version": "1.0.1", + "version": "1.1.0", "from": "is-nan@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.0.1.tgz" + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.1.0.tgz", + "dependencies": { + "define-properties": { + "version": "1.1.1", + "from": "define-properties@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.1.tgz", + "dependencies": { + "foreach": { + "version": "2.0.5", + "from": "foreach@>=2.0.5 <3.0.0", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" + }, + "object-keys": { + "version": "1.0.7", + "from": "object-keys@>=1.0.7 <2.0.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.7.tgz" + } + } + } + } } } }, "js-tokens": { - "version": "1.0.0", - "from": "js-tokens@1.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.0.tgz" + "version": "1.0.1", + "from": "js-tokens@1.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" }, - "leven": { - "version": "1.0.2", - "from": "leven@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" + "json5": { + "version": "0.4.0", + "from": "json5@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" }, "line-numbers": { "version": "0.2.0", @@ -230,14 +299,14 @@ } }, "lodash": { - "version": "3.9.1", - "from": "lodash@>=3.6.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.9.1.tgz" + "version": "3.10.0", + "from": "lodash@>=3.10.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz" }, "minimatch": { - "version": "2.0.8", + "version": "2.0.10", "from": "minimatch@>=2.0.3 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.8.tgz", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { "brace-expansion": { "version": "1.1.0", @@ -259,13 +328,13 @@ } }, "output-file-sync": { - "version": "1.1.0", + "version": "1.1.1", "from": "output-file-sync@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", + "from": "mkdirp@>=0.5.1 <0.6.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { @@ -282,6 +351,11 @@ } } }, + "path-exists": { + "version": "1.0.0", + "from": "path-exists@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz" + }, "path-is-absolute": { "version": "1.0.0", "from": "path-is-absolute@>=1.0.0 <2.0.0", @@ -293,58 +367,29 @@ "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" }, "regenerator": { - "version": "0.8.26", - "from": "regenerator@>=0.8.20 <0.9.0", - "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.26.tgz", + "version": "0.8.35", + "from": "regenerator@0.8.35", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", "dependencies": { "commoner": { - "version": "0.10.1", + "version": "0.10.3", "from": "commoner@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.1.tgz", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", "dependencies": { "q": { "version": "1.1.2", "from": "q@>=1.1.2 <1.2.0", "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" }, - "recast": { - "version": "0.9.18", - "from": "recast@>=0.9.5 <0.10.0", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.9.18.tgz", - "dependencies": { - "esprima-fb": { - "version": "10001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=10001.1.0-dev-harmony-fb <10001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-10001.1.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.43", - "from": "source-map@>=0.1.40 <0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "0.1.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" - } - } - }, - "ast-types": { - "version": "0.6.16", - "from": "ast-types@>=0.6.1 <0.7.0", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.6.16.tgz" - } - } - }, "commander": { "version": "2.5.1", "from": "commander@>=2.5.0 <2.6.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" }, "graceful-fs": { - "version": "3.0.7", + "version": "3.0.8", "from": "graceful-fs@>=3.0.4 <3.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" }, "glob": { "version": "4.2.2", @@ -374,9 +419,9 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", "dependencies": { "lru-cache": { - "version": "2.6.4", + "version": "2.6.5", "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" }, "sigmund": { "version": "1.0.1", @@ -417,34 +462,12 @@ "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" }, "iconv-lite": { - "version": "0.4.8", + "version": "0.4.11", "from": "iconv-lite@>=0.4.5 <0.5.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz" + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" } } }, - "esprima-fb": { - "version": "13001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=13001.1.0-dev-harmony-fb <13001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1.0-dev-harmony-fb.tgz" - }, - "recast": { - "version": "0.10.12", - "from": "recast@>=0.10.3 <0.11.0", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.12.tgz", - "dependencies": { - "esprima-fb": { - "version": "14001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=14001.1.0-dev-harmony-fb <14001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-14001.1.0-dev-harmony-fb.tgz" - } - } - }, - "through": { - "version": "2.3.7", - "from": "through@>=2.3.6 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.7.tgz" - }, "defs": { "version": "1.1.0", "from": "defs@>=1.1.0 <1.2.0", @@ -508,23 +531,50 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" } } + }, + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" + }, + "recast": { + "version": "0.10.24", + "from": "recast@0.10.24", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", + "dependencies": { + "ast-types": { + "version": "0.8.5", + "from": "ast-types@0.8.5", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" + } + } + }, + "through": { + "version": "2.3.8", + "from": "through@>=2.3.6 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" } } }, "regexpu": { - "version": "1.1.2", + "version": "1.2.0", "from": "regexpu@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", "dependencies": { "recast": { - "version": "0.10.12", - "from": "recast@>=0.10.1 <0.11.0", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.12.tgz", + "version": "0.10.26", + "from": "recast@>=0.10.6 <0.11.0", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.26.tgz", "dependencies": { "esprima-fb": { - "version": "14001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=14001.1.0-dev-harmony-fb <14001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-14001.1.0-dev-harmony-fb.tgz" + "version": "15001.1.0-dev-harmony-fb", + "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" + }, + "ast-types": { + "version": "0.8.7", + "from": "ast-types@0.8.7", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.7.tgz" } } }, @@ -553,9 +603,9 @@ } }, "repeating": { - "version": "1.1.2", + "version": "1.1.3", "from": "repeating@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.2.tgz", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "dependencies": { "is-finite": { "version": "1.0.1", @@ -568,52 +618,6 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" } } - }, - "meow": { - "version": "3.1.0", - "from": "meow@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.1.0.tgz", - "dependencies": { - "camelcase-keys": { - "version": "1.0.0", - "from": "camelcase-keys@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", - "dependencies": { - "camelcase": { - "version": "1.1.0", - "from": "camelcase@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz" - }, - "map-obj": { - "version": "1.0.1", - "from": "map-obj@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - } - } - }, - "indent-string": { - "version": "1.2.1", - "from": "indent-string@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.1.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - } - } - }, - "minimist": { - "version": "1.1.1", - "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.1.tgz" - }, - "object-assign": { - "version": "2.0.0", - "from": "object-assign@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.0.0.tgz" - } - } } } }, @@ -633,14 +637,14 @@ "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" }, "source-map": { - "version": "0.4.2", + "version": "0.4.4", "from": "source-map@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", + "version": "1.0.0", "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, @@ -655,52 +659,52 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", + "version": "1.0.0", "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } } } }, - "strip-json-comments": { - "version": "1.0.2", - "from": "strip-json-comments@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.2.tgz" - }, "to-fast-properties": { "version": "1.0.1", "from": "to-fast-properties@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" }, "trim-right": { - "version": "1.0.0", + "version": "1.0.1", "from": "trim-right@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.0.tgz" + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + }, + "try-resolve": { + "version": "1.0.1", + "from": "try-resolve@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" } } }, "babel-loader": { - "version": "5.1.3", - "from": "babel-loader@>=5.1.3 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.1.3.tgz", + "version": "5.3.2", + "from": "babel-loader@>=5.3.2 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", "dependencies": { "object-assign": { - "version": "2.0.0", - "from": "object-assign@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.0.0.tgz" + "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" } } }, "body-parser": { - "version": "1.12.4", - "from": "body-parser@>=1.12.4 <2.0.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.12.4.tgz", + "version": "1.13.3", + "from": "body-parser@>=1.13.3 <2.0.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", "dependencies": { "bytes": { - "version": "1.0.0", - "from": "bytes@1.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz" + "version": "2.1.0", + "from": "bytes@2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" }, "content-type": { "version": "1.0.1", @@ -724,44 +728,61 @@ "from": "depd@>=1.0.1 <1.1.0", "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" }, + "http-errors": { + "version": "1.3.1", + "from": "http-errors@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "statuses@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + }, "iconv-lite": { - "version": "0.4.8", - "from": "iconv-lite@0.4.8", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz" + "version": "0.4.11", + "from": "iconv-lite@0.4.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" }, "on-finished": { - "version": "2.2.1", - "from": "on-finished@>=2.2.1 <2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.2.1.tgz", + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { - "version": "1.1.0", - "from": "ee-first@1.1.0", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.0.tgz" + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" } } }, "qs": { - "version": "2.4.2", - "from": "qs@2.4.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-2.4.2.tgz" + "version": "4.0.0", + "from": "qs@4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" }, "raw-body": { - "version": "2.0.1", - "from": "raw-body@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.0.1.tgz", + "version": "2.1.2", + "from": "raw-body@>=2.1.2 <2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz", "dependencies": { - "bytes": { - "version": "2.0.1", - "from": "bytes@2.0.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.0.1.tgz" + "unpipe": { + "version": "1.0.0", + "from": "unpipe@1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" } } }, "type-is": { - "version": "1.6.2", - "from": "type-is@>=1.6.2 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.2.tgz", + "version": "1.6.6", + "from": "type-is@>=1.6.6 <1.7.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", "dependencies": { "media-typer": { "version": "0.3.0", @@ -769,14 +790,14 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" }, "mime-types": { - "version": "2.0.12", - "from": "mime-types@>=2.0.11 <2.1.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.12.tgz", + "version": "2.1.4", + "from": "mime-types@>=2.1.4 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", "dependencies": { "mime-db": { - "version": "1.10.0", - "from": "mime-db@>=1.10.0 <1.11.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.10.0.tgz" + "version": "1.16.0", + "from": "mime-db@>=1.16.0 <1.17.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" } } } @@ -785,24 +806,24 @@ } }, "es5-shim": { - "version": "4.1.3", - "from": "es5-shim@>=4.1.3 <5.0.0", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.3.tgz" + "version": "4.1.10", + "from": "es5-shim@>=4.1.10 <5.0.0", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.10.tgz" }, "imports-loader": { - "version": "0.6.3", - "from": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.3.tgz", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.3.tgz", + "version": "0.6.4", + "from": "imports-loader@>=0.6.4 <0.7.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", "dependencies": { "source-map": { "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "from": "source-map@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } } @@ -814,248 +835,248 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" }, "loader-utils": { - "version": "0.2.7", - "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.7.tgz", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.7.tgz", + "version": "0.2.11", + "from": "loader-utils@>=0.2.11 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", "dependencies": { - "json5": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/json5/-/json5-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.1.0.tgz" - }, "big.js": { - "version": "2.5.1", - "from": "https://registry.npmjs.org/big.js/-/big.js-2.5.1.tgz", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-2.5.1.tgz" + "version": "3.1.3", + "from": "big.js@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" + }, + "json5": { + "version": "0.4.0", + "from": "json5@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" } } }, "marked": { - "version": "0.3.3", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.3.tgz", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.3.tgz" + "version": "0.3.5", + "from": "marked@>=0.3.5 <0.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" }, "node-libs-browser": { "version": "0.5.0", - "from": "node-libs-browser@>=0.4.0 <=0.5.0", + "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", "dependencies": { "assert": { "version": "1.3.0", - "from": "assert@>=1.1.1 <2.0.0", + "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" }, "browserify-zlib": { "version": "0.1.4", - "from": "browserify-zlib@>=0.1.4 <0.2.0", + "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "dependencies": { "pako": { "version": "0.2.6", - "from": "pako@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz" } } }, "buffer": { "version": "3.2.2", - "from": "buffer@>=3.0.3 <4.0.0", + "from": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", "dependencies": { "base64-js": { "version": "0.0.8", - "from": "base64-js@0.0.8", + "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" }, "ieee754": { "version": "1.1.5", - "from": "ieee754@>=1.1.4 <2.0.0", + "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz" }, "is-array": { "version": "1.0.1", - "from": "is-array@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" } } }, "console-browserify": { "version": "1.1.0", - "from": "console-browserify@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "dependencies": { "date-now": { "version": "0.1.4", - "from": "date-now@>=0.1.4 <0.2.0", + "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" } } }, "constants-browserify": { "version": "0.0.1", - "from": "constants-browserify@0.0.1", + "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" }, "crypto-browserify": { "version": "3.2.8", - "from": "crypto-browserify@>=3.2.6 <3.3.0", + "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", "dependencies": { "pbkdf2-compat": { "version": "2.0.1", - "from": "pbkdf2-compat@2.0.1", + "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" }, "ripemd160": { "version": "0.2.0", - "from": "ripemd160@0.2.0", + "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" }, "sha.js": { "version": "2.2.6", - "from": "sha.js@2.2.6", + "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" } } }, "domain-browser": { "version": "1.1.4", - "from": "domain-browser@>=1.1.1 <2.0.0", + "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" }, "events": { "version": "1.0.2", - "from": "events@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" }, "http-browserify": { "version": "1.7.0", - "from": "http-browserify@>=1.3.2 <2.0.0", + "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "dependencies": { "Base64": { "version": "0.2.1", - "from": "Base64@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "https-browserify": { "version": "0.0.0", - "from": "https-browserify@0.0.0", + "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" }, "os-browserify": { "version": "0.1.2", - "from": "os-browserify@>=0.1.2 <0.2.0", + "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" }, "path-browserify": { "version": "0.0.0", - "from": "path-browserify@0.0.0", + "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" }, "process": { "version": "0.11.0", - "from": "process@>=0.11.0 <0.12.0", + "from": "https://registry.npmjs.org/process/-/process-0.11.0.tgz", "resolved": "https://registry.npmjs.org/process/-/process-0.11.0.tgz" }, "punycode": { "version": "1.3.2", - "from": "punycode@>=1.2.4 <2.0.0", + "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" }, "querystring-es3": { "version": "0.2.1", - "from": "querystring-es3@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" }, "readable-stream": { "version": "1.1.13", - "from": "readable-stream@>=1.1.13 <2.0.0", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", + "from": "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.1.tgz" }, "isarray": { "version": "0.0.1", - "from": "isarray@0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "stream-browserify": { "version": "1.0.0", - "from": "stream-browserify@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "string_decoder": { "version": "0.10.31", - "from": "string_decoder@>=0.10.25 <0.11.0", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "timers-browserify": { "version": "1.4.1", - "from": "timers-browserify@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" }, "tty-browserify": { "version": "0.0.0", - "from": "tty-browserify@0.0.0", + "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" }, "url": { "version": "0.10.3", - "from": "url@>=0.10.1 <0.11.0", + "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "dependencies": { "querystring": { "version": "0.2.0", - "from": "querystring@0.2.0", + "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" } } }, "util": { "version": "0.10.3", - "from": "util@>=0.10.3 <0.11.0", + "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "inherits@2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "vm-browserify": { "version": "0.0.4", - "from": "vm-browserify@0.0.4", + "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "dependencies": { "indexof": { "version": "0.0.1", - "from": "indexof@0.0.1", + "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" } } @@ -1064,42 +1085,42 @@ }, "react": { "version": "0.13.3", - "from": "react@>=0.13.3 <0.14.0", + "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.7", - "from": "through@>=2.3.4 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.7.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.7.tgz" }, "jstransform": { "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "base62@0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "source-map@0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "0.1.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" } } @@ -1111,65 +1132,82 @@ } }, "react-bootstrap": { - "version": "0.22.6", - "from": "react-bootstrap@>=0.22.6 <0.23.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.22.6.tgz", + "version": "0.24.3", + "from": "react-bootstrap@>=0.24.3 <0.25.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.24.3.tgz", "dependencies": { + "babel-runtime": { + "version": "5.8.20", + "from": "babel-runtime@>=5.8.19 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.20.tgz", + "dependencies": { + "core-js": { + "version": "1.0.1", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.0.1.tgz" + } + } + }, + "lodash": { + "version": "3.10.0", + "from": "lodash@>=3.10.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz" + }, "classnames": { - "version": "2.1.1", - "from": "classnames@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.1.tgz" + "version": "2.1.3", + "from": "classnames@>=2.1.3 <3.0.0", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz" } } }, "sleep": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/sleep/-/sleep-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/sleep/-/sleep-2.0.0.tgz", + "version": "3.0.0", + "from": "sleep@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "dependencies": { "nan": { - "version": "1.8.4", - "from": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "version": "2.0.0", + "from": "nan@>=2.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.0.tgz" } } }, "webpack": { - "version": "1.9.7", - "from": "webpack@>=1.9.7 <2.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.9.7.tgz", + "version": "1.10.5", + "from": "webpack@>=1.10.5 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.10.5.tgz", "dependencies": { "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + "version": "1.4.0", + "from": "async@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz" }, "clone": { "version": "1.0.2", - "from": "clone@>=1.0.2 <1.1.0", + "from": "clone@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" }, "enhanced-resolve": { - "version": "0.8.6", - "from": "enhanced-resolve@>=0.8.2 <0.9.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.8.6.tgz", + "version": "0.9.0", + "from": "enhanced-resolve@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", "dependencies": { "graceful-fs": { - "version": "3.0.7", - "from": "graceful-fs@>=3.0.5 <4.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" + "version": "3.0.8", + "from": "graceful-fs@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "esprima": { "version": "1.2.5", - "from": "esprima@>=1.2.0 <1.3.0", + "from": "esprima@>=1.2.0 <2.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz" }, "interpret": { - "version": "0.5.2", - "from": "interpret@>=0.5.2 <0.6.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.5.2.tgz" + "version": "0.6.5", + "from": "interpret@>=0.6.4 <0.7.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz" }, "memory-fs": { "version": "0.2.0", @@ -1206,9 +1244,16 @@ } }, "supports-color": { - "version": "1.3.1", - "from": "supports-color@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.1.tgz" + "version": "3.1.0", + "from": "supports-color@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.0.tgz", + "dependencies": { + "has-flag": { + "version": "1.0.0", + "from": "has-flag@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + } + } }, "tapable": { "version": "0.1.9", @@ -1216,9 +1261,9 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" }, "uglify-js": { - "version": "2.4.23", + "version": "2.4.24", "from": "uglify-js@>=2.4.13 <2.5.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.23.tgz", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "dependencies": { "async": { "version": "0.2.10", @@ -1231,9 +1276,9 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", + "version": "1.0.0", "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, @@ -1248,9 +1293,9 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "dependencies": { "camelcase": { - "version": "1.1.0", + "version": "1.2.1", "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.1.0.tgz" + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" }, "decamelize": { "version": "1.0.0", @@ -1276,10 +1321,15 @@ "from": "watchpack@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", "dependencies": { + "async": { + "version": "0.9.2", + "from": "async@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + }, "chokidar": { - "version": "1.0.1", + "version": "1.0.5", "from": "chokidar@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", "dependencies": { "anymatch": { "version": "1.3.0", @@ -1287,9 +1337,9 @@ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "dependencies": { "micromatch": { - "version": "2.1.6", + "version": "2.2.0", "from": "micromatch@>=2.1.5 <3.0.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.1.6.tgz", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", "dependencies": { "arr-diff": { "version": "1.0.1", @@ -1303,6 +1353,11 @@ } } }, + "array-unique": { + "version": "0.2.1", + "from": "array-unique@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + }, "braces": { "version": "1.8.0", "from": "braces@>=1.8.0 <2.0.0", @@ -1324,9 +1379,9 @@ "resolved": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz" }, "isobject": { - "version": "1.0.0", + "version": "1.0.2", "from": "isobject@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.0.tgz" + "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" }, "randomatic": { "version": "1.1.0", @@ -1335,7 +1390,7 @@ }, "repeat-string": { "version": "1.5.2", - "from": "repeat-string@>=1.5.0 <2.0.0", + "from": "repeat-string@>=1.5.2 <2.0.0", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" } } @@ -1354,23 +1409,40 @@ } } }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.1.3 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "expand-brackets": { + "version": "0.1.2", + "from": "expand-brackets@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.2.tgz" + }, + "extglob": { + "version": "0.3.1", + "from": "extglob@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + "ansi-green": { + "version": "0.1.1", + "from": "ansi-green@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "dependencies": { + "ansi-wrap": { + "version": "0.1.0", + "from": "ansi-wrap@0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" + } + } + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "success-symbol": { + "version": "0.1.0", + "from": "success-symbol@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" } } }, - "expand-brackets": { - "version": "0.1.1", - "from": "expand-brackets@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.1.tgz" - }, "filename-regex": { "version": "2.0.0", "from": "filename-regex@>=2.0.0 <3.0.0", @@ -1382,13 +1454,13 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" }, "object.omit": { - "version": "0.2.1", - "from": "object.omit@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-0.2.1.tgz", + "version": "1.1.0", + "from": "object.omit@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", "dependencies": { "for-own": { "version": "0.1.3", - "from": "for-own@>=0.1.1 <0.2.0", + "from": "for-own@>=0.1.3 <0.2.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", "dependencies": { "for-in": { @@ -1399,15 +1471,15 @@ } }, "isobject": { - "version": "0.2.0", - "from": "isobject@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-0.2.0.tgz" + "version": "1.0.2", + "from": "isobject@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" } } }, "parse-glob": { "version": "3.0.2", - "from": "parse-glob@>=3.0.0 <4.0.0", + "from": "parse-glob@>=3.0.1 <4.0.0", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", "dependencies": { "glob-base": { @@ -1416,9 +1488,9 @@ "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" }, "is-dotfile": { - "version": "1.0.0", + "version": "1.0.1", "from": "is-dotfile@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.0.tgz" + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" }, "is-extglob": { "version": "1.0.0", @@ -1429,20 +1501,13 @@ }, "regex-cache": { "version": "0.4.2", - "from": "regex-cache@>=0.4.0 <0.5.0", + "from": "regex-cache@>=0.4.2 <0.5.0", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", "dependencies": { "is-equal-shallow": { - "version": "0.1.2", + "version": "0.1.3", "from": "is-equal-shallow@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.2.tgz", - "dependencies": { - "is-primitive": { - "version": "1.0.0", - "from": "is-primitive@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-1.0.0.tgz" - } - } + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" }, "is-primitive": { "version": "2.0.0", @@ -1471,9 +1536,9 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz" }, "is-binary-path": { - "version": "1.0.0", + "version": "1.0.1", "from": "is-binary-path@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "dependencies": { "binary-extensions": { "version": "1.3.1", @@ -1487,15 +1552,20 @@ "from": "is-glob@>=1.1.3 <2.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.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" + }, "readdirp": { - "version": "1.3.0", + "version": "1.4.0", "from": "readdirp@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", "dependencies": { "graceful-fs": { - "version": "2.0.3", - "from": "graceful-fs@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz" + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" }, "minimatch": { "version": "0.2.14", @@ -1503,9 +1573,9 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "dependencies": { "lru-cache": { - "version": "2.6.4", + "version": "2.6.5", "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" }, "sigmund": { "version": "1.0.1", @@ -1544,40 +1614,40 @@ } }, "fsevents": { - "version": "0.3.6", + "version": "0.3.7", "from": "fsevents@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.6.tgz", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.7.tgz", "dependencies": { "nan": { - "version": "1.8.4", + "version": "1.9.0", "from": "nan@>=1.8.0 <2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.8.4.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-1.9.0.tgz" } } } } }, "graceful-fs": { - "version": "3.0.7", + "version": "3.0.8", "from": "graceful-fs@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.7.tgz" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "webpack-core": { - "version": "0.6.5", + "version": "0.6.6", "from": "webpack-core@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.6.tgz", "dependencies": { "source-map": { - "version": "0.4.2", + "version": "0.4.4", "from": "source-map@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.2.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", + "version": "1.0.0", "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, diff --git a/client/package.json b/client/package.json index 73b98be90..d89c59a95 100644 --- a/client/package.json +++ b/client/package.json @@ -23,40 +23,41 @@ }, "homepage": "https://github.com/justin808/react-webpack-rails-tutorial", "dependencies": { - "alt": "^0.16.5", - "babel-core": "^5.4.5", - "babel-loader": "^5.1.3", - "body-parser": "^1.12.4", - "es5-shim": "^4.1.3", - "imports-loader": "^0.6.3", + "alt": "^0.17.1", + "babel-core": "^5.8.20", + "babel-loader": "^5.3.2", + "body-parser": "^1.13.3", + "es5-shim": "^4.1.10", + "imports-loader": "^0.6.4", "jquery": "^2.1.4", - "loader-utils": "^0.2.7", - "marked": "^0.3.3", + "loader-utils": "^0.2.11", + "marked": "^0.3.5", "react": "^0.13.3", - "react-bootstrap": "^0.22.6", - "sleep": "^2.0.0", - "webpack": "^1.9.7" + "react-bootstrap": "^0.24.3", + "sleep": "^3.0.0", + "webpack": "^1.10.5" }, "devDependencies": { - "babel-eslint": "^3.1.7", - "bootstrap-sass": "^3.3.4", - "bootstrap-sass-loader": "^1.0.4", - "css-loader": "^0.13.1", - "eslint": "^0.21.2", - "eslint-plugin-react": "^2.3.0", - "esprima-fb": "^15001.1.0-dev-harmony-fb", - "expose-loader": "^0.6.0", - "express": "^4.12.4", - "file-loader": "^0.8.1", - "gulp": "^3.8.11", - "gulp-eslint": "^0.12.0", - "jscs": "^1.13.1", - "node-sass": "^3.1.2", - "react-hot-loader": "^1.2.7", - "sass-loader": "^1.0.2", - "style-loader": "^0.12.2", - "url-loader": "^0.5.5", - "webpack-dev-server": "^1.8.2" + "babel-eslint": "^4.0.5", + "bootstrap-sass": "^3.3.5", + "bootstrap-sass-loader": "^1.0.8", + "css-loader": "^0.15.6", + "eslint": "^1.0.0", + "eslint-config-airbnb": "0.0.7", + "eslint-plugin-react": "^3.1.0", + "esprima-fb": "^15001.1001.0-dev-harmony-fb", + "expose-loader": "^0.7.0", + "express": "^4.13.2", + "file-loader": "^0.8.4", + "gulp": "^3.9.0", + "gulp-eslint": "^1.0.0", + "jscs": "^2.0.0", + "node-sass": "^3.2.0", + "react-hot-loader": "^1.2.8", + "sass-loader": "^1.0.3", + "style-loader": "^0.12.3", + "url-loader": "^0.5.6", + "webpack-dev-server": "^1.10.1" }, "scripts": { "test": "echo \"Error: no test specified\" && exit 1", diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 2b5321445..3316f191f 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -14,8 +14,7 @@ module.exports = { // }, resolve: { root: [path.join(__dirname, 'scripts'), - path.join(__dirname, 'assets/javascripts'), - path.join(__dirname, 'assets/stylesheets')], + path.join(__dirname, 'assets/javascripts')], extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'] }, module: { diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index ef4f80b7b..9cbe9b42d 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -22,6 +22,9 @@ config.output = { config.plugins = [new webpack.HotModuleReplacementPlugin()]; config.devtool = 'eval-source-map'; +// Add the styles +config.resolve.root.push(path.join(__dirname, 'assets/stylesheets')); + // All the styling loaders only apply to hot-reload, not rails config.module.loaders.push( {test: /\.jsx?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/}, From 78a6df8688257354c9797c718ee30abc95c1cff0 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 1 Aug 2015 14:53:31 -1000 Subject: [PATCH 004/548] Added jscs linting support --- client/.jscsrc | 3 +-- .../assets/javascripts/components/Comment.jsx | 4 ++-- .../javascripts/components/CommentBox.jsx | 8 ++++---- .../javascripts/components/CommentForm.jsx | 12 ++++++------ .../javascripts/components/CommentList.jsx | 6 +++--- .../assets/javascripts/stores/CommentStore.js | 2 +- client/assets/javascripts/stores/FormStore.js | 2 +- .../javascripts/utils/CommentsManager.js | 6 +++--- client/bootstrap-sass.config.js | 6 +++--- client/karma.conf.js | 18 +++++++++--------- client/server.js | 4 ++-- client/webpack.common.config.js | 8 ++++---- client/webpack.hot.config.js | 4 ++-- client/webpack.rails.config.js | 2 +- 14 files changed, 42 insertions(+), 43 deletions(-) diff --git a/client/.jscsrc b/client/.jscsrc index 8caea9139..0be7eea16 100644 --- a/client/.jscsrc +++ b/client/.jscsrc @@ -1,6 +1,5 @@ { "preset": "airbnb", "fileExtensions": [".js", ".jsx"], - "excludeFiles": ["build/**", "node_modules/**"], - "esprima": "esprima-fb" + "excludeFiles": ["build/**", "node_modules/**"] } diff --git a/client/assets/javascripts/components/Comment.jsx b/client/assets/javascripts/components/Comment.jsx index c93c9ff0e..b1783fc4a 100644 --- a/client/assets/javascripts/components/Comment.jsx +++ b/client/assets/javascripts/components/Comment.jsx @@ -6,7 +6,7 @@ const Comment = React.createClass({ propTypes: { author: React.PropTypes.string.isRequired, - text: React.PropTypes.string.isRequired + text: React.PropTypes.string.isRequired, }, render() { @@ -19,7 +19,7 @@ const Comment = React.createClass({ ); - } + }, }); export default Comment; diff --git a/client/assets/javascripts/components/CommentBox.jsx b/client/assets/javascripts/components/CommentBox.jsx index 82af0fd68..0d25f563e 100644 --- a/client/assets/javascripts/components/CommentBox.jsx +++ b/client/assets/javascripts/components/CommentBox.jsx @@ -10,13 +10,13 @@ const CommentBox = React.createClass({ propTypes: { url: React.PropTypes.string.isRequired, - pollInterval: React.PropTypes.number.isRequired + pollInterval: React.PropTypes.number.isRequired, }, getStoreState() { return { comments: CommentStore.getState(), - form: FormStore.getState() + form: FormStore.getState(), }; }, @@ -45,7 +45,7 @@ const CommentBox = React.createClass({ render() { return ( -
+

Comments { this.state.form.ajaxSending ? 'SENDING AJAX REQUEST!' : '' }

); - } + }, }); export default CommentBox; diff --git a/client/assets/javascripts/components/CommentForm.jsx b/client/assets/javascripts/components/CommentForm.jsx index 7a8ffc9fa..bc7b77f69 100644 --- a/client/assets/javascripts/components/CommentForm.jsx +++ b/client/assets/javascripts/components/CommentForm.jsx @@ -13,12 +13,12 @@ const CommentForm = React.createClass({ propTypes: { url: React.PropTypes.string.isRequired, formData: React.PropTypes.object.isRequired, - ajaxSending: React.PropTypes.bool.isRequired + ajaxSending: React.PropTypes.bool.isRequired, }, getInitialState() { return { - formMode: 0 + formMode: 0, }; }, @@ -34,14 +34,14 @@ const CommentForm = React.createClass({ if (this.state.formMode < 2) { obj = { author: this.refs.author.getValue(), - text: this.refs.text.getValue() + text: this.refs.text.getValue(), }; } else { obj = { // This is different because the input is a native HTML element // rather than a React element. author: this.refs.inlineAuthor.getDOMNode().value, - text: this.refs.inlineText.getDOMNode().value + text: this.refs.inlineText.getDOMNode().value, }; } @@ -145,7 +145,7 @@ const CommentForm = React.createClass({ } return (
-
); - } + }, }); export default CommentForm; diff --git a/client/assets/javascripts/components/CommentList.jsx b/client/assets/javascripts/components/CommentList.jsx index c1a496b7b..05c4151c4 100644 --- a/client/assets/javascripts/components/CommentList.jsx +++ b/client/assets/javascripts/components/CommentList.jsx @@ -5,7 +5,7 @@ const CommentList = React.createClass({ displayName: 'CommentList', propTypes: { - comments: React.PropTypes.array + comments: React.PropTypes.array, }, render() { @@ -20,11 +20,11 @@ const CommentList = React.createClass({ }); return ( -
+
{commentNodes}
); - } + }, }); export default CommentList; diff --git a/client/assets/javascripts/stores/CommentStore.js b/client/assets/javascripts/stores/CommentStore.js index 392f2e8fb..8f4d186a6 100644 --- a/client/assets/javascripts/stores/CommentStore.js +++ b/client/assets/javascripts/stores/CommentStore.js @@ -10,7 +10,7 @@ class CommentStore { handleFetchComments: CommentActions.FETCH_COMMENTS, handleUpdateComments: CommentActions.UPDATE_COMMENTS, handleUpdateCommentsError: CommentActions.UPDATE_COMMENTS_ERROR, - handleAddComment: CommentActions.ADD_COMMENT + handleAddComment: CommentActions.ADD_COMMENT, }); } diff --git a/client/assets/javascripts/stores/FormStore.js b/client/assets/javascripts/stores/FormStore.js index c5df8aa6a..78d802179 100644 --- a/client/assets/javascripts/stores/FormStore.js +++ b/client/assets/javascripts/stores/FormStore.js @@ -15,7 +15,7 @@ class FormStore { handleFetchComments: CommentActions.FETCH_COMMENTS, handleUpdateComments: CommentActions.UPDATE_COMMENTS, handleUpdateCommentsError: CommentActions.UPDATE_COMMENTS_ERROR, - handleAddComment: CommentActions.ADD_COMMENT + handleAddComment: CommentActions.ADD_COMMENT, }); } diff --git a/client/assets/javascripts/utils/CommentsManager.js b/client/assets/javascripts/utils/CommentsManager.js index 3f30ba3d1..61f74109a 100644 --- a/client/assets/javascripts/utils/CommentsManager.js +++ b/client/assets/javascripts/utils/CommentsManager.js @@ -10,7 +10,7 @@ const CommentsManager = { fetchComments(url) { return $.ajax({ url: url, - dataType: 'json' + dataType: 'json', }); }, @@ -26,9 +26,9 @@ const CommentsManager = { url: url, dataType: 'json', type: 'POST', - data: {comment: comment} + data: {comment: comment}, }); - } + }, }; export default CommentsManager; diff --git a/client/bootstrap-sass.config.js b/client/bootstrap-sass.config.js index 08dab8138..f7718848f 100644 --- a/client/bootstrap-sass.config.js +++ b/client/bootstrap-sass.config.js @@ -31,7 +31,7 @@ module.exports = { popover: true, scrollspy: true, tab: true, - affix: true + affix: true, }, // ### Styles @@ -83,6 +83,6 @@ module.exports = { carousel: true, utilities: true, - 'responsive-utilities': true - } + 'responsive-utilities': true, + }, }; diff --git a/client/karma.conf.js b/client/karma.conf.js index d6d592b6f..138c1d555 100644 --- a/client/karma.conf.js +++ b/client/karma.conf.js @@ -12,11 +12,11 @@ module.exports = function karmaMain(config) { frameworks: ['mocha'], files: [ - 'tests.webpack.js' + 'tests.webpack.js', ], preprocessors: { - 'tests.webpack.js': ['webpack', 'sourcemap'] + 'tests.webpack.js': ['webpack', 'sourcemap'], }, reporters: ['dots'], @@ -25,19 +25,19 @@ module.exports = function karmaMain(config) { devtool: 'inline-source-map', module: { loaders: [ - {test: /\.js$/, loader: 'babel-loader'} - ] + {test: /\.js$/, loader: 'babel-loader'}, + ], }, plugins: [ new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify('test') - }) - ] + 'process.env.NODE_ENV': JSON.stringify('test'), + }), + ], }, webpackServer: { - noInfo: true - } + noInfo: true, + }, }); }; diff --git a/client/server.js b/client/server.js index d0b958020..1e1c3d528 100644 --- a/client/server.js +++ b/client/server.js @@ -6,13 +6,13 @@ var config = require('./webpack.hot.config'); var sleep = require('sleep'); var comments = [{author: 'Pete Hunt', text: 'Hey there!'}, - {author: 'Justin Gordon', text: 'Aloha from @railsonmaui'}]; + {author: 'Justin Gordon', text: 'Aloha from @railsonmaui'},]; var server = new WebpackDevServer(webpack(config), { publicPath: config.output.publicPath, hot: true, noInfo: false, - stats: {colors: true} + stats: {colors: true}, }); server.app.use(bodyParser.json(null)); diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 3316f191f..9ed8b42b4 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -14,10 +14,10 @@ module.exports = { // }, resolve: { root: [path.join(__dirname, 'scripts'), - path.join(__dirname, 'assets/javascripts')], - extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'] + path.join(__dirname, 'assets/javascripts'),], + extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'], }, module: { - loaders: [] - } + loaders: [], + }, }; diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index 9cbe9b42d..dff158eca 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -17,7 +17,7 @@ config.output = { // this file is served directly by webpack filename: 'express-bundle.js', - path: __dirname + path: __dirname, }; config.plugins = [new webpack.HotModuleReplacementPlugin()]; config.devtool = 'eval-source-map'; @@ -32,7 +32,7 @@ config.module.loaders.push( { test: /\.scss$/, loader: 'style!css!sass?outputStyle=expanded&imagePath=/assets/images&includePaths[]=' + - path.resolve(__dirname, './assets/stylesheets') + path.resolve(__dirname, './assets/stylesheets'), }, // The url-loader uses DataUrls. The file-loader emits files. diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index de4c32e11..5ee60ac20 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -8,7 +8,7 @@ const config = require('./webpack.common.config'); config.output = { filename: 'client-bundle.js', - path: '../app/assets/javascripts/generated' + path: '../app/assets/javascripts/generated', }; // load jQuery from cdn or rails asset pipeline From cba0f74e75eea8c745ea4b319392329c1338ba34 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 1 Aug 2015 14:59:34 -1000 Subject: [PATCH 005/548] Updated README.md --- README.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ab19b4631..512b39c19 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ choose the form layout. `react-bootstrap` is used for the React components. A pure Rails UI generated from scaffolding is shown for comparison. -You can see this tutorial live here: [http://react-webpack-rails-tutorial.herokuapp.com/](http://react-webpack-rails-tutorial.herokuapp.com/) +You can see this tutorial live here: [http://reactrails.com/](http://reactrails.com/) # Motivation @@ -38,6 +38,7 @@ In no particular order: - Easily enable retrofitting such a JS framework into an existing Rails app. - Enable the use of the JavaScript ES6 transpiler. - Example setting up Ruby and ES6 linting in a real project. +- Example of thorough use of Ruby and JavaScript linters, and other CI tasks. # Technologies involved @@ -52,10 +53,12 @@ See package.json and Gemfile for versions 7. Heroku (for deployment) # Basic Setup -1. Be sure that you have Node installed. I use [nvm](https://github.com/creationix/nvm), with node version `v0.10.33`. +1. Be sure that you have Node installed. I use [nvm](https://github.com/creationix/nvm), with node + version `v0.12.7`. See this article [Updating and using nvm](http://forum.railsonmaui.com/t/updating-and-using-nvm/293). 1. `git clone git@github.com:justin808/react-webpack-rails-tutorial.git` 1. `cd react-webpack-rails-tutorial` -1. Check that you have Ruby 2.2.1 +1. Check that you have Ruby 2.2.2 +1. Check that you're using the right version of node. Run `nvm list` to check. 1. `bundle install` 1. `npm install` 1. `rake db:setup` @@ -251,13 +254,18 @@ Then run `rspec` and you should see the tests have passed. * Default rake task runs tests and linting (yes, repeating this!) (see `ci.rake`) * See file [README.md](client/README.md) for how to run ESLint and JSCS * See scripts `scripts/lint` and `client/bin/lint`. -* Create a custom scope like this for RubyMine, named "Inspection Scope" +* We're using the [AirBnb JavaScript style guidelines](https://github.com/airbnb/javascript). + +### RubyMine/Webstorm Linting Configuration + * I started out trying to make RubyMine and WebStorm catch and fix linting errors. However, I find + it faster to just do this with the command line. Your mileage may vary. + * Create a custom scope like this for RubyMine, named "Inspection Scope" file[react-rails-tutorial]:*/&&!file[react-rails-tutorial]:tmp//*&&!file[react-rails-tutorial]:log//*&&!file[react-rails-tutorial]:client/node_modules//*&&!file[react-rails-tutorial]:client/assets/fonts//*&&!file[react-rails-tutorial]:app/assets/fonts//*&&!file[react-rails-tutorial]:bin//*&&!file[react-rails-tutorial]:app/assets/javascripts//* -* Install the code style and inspection files in [client/jetbrains](client/jetbrains) -* Use the installed inspection settings and new Inspection Scope for code inspection. -* RubyMine configuration is optional. All linters run from the command line. + * Install the code style and inspection files in [client/jetbrains](client/jetbrains) + * Use the installed inspection settings and new Inspection Scope for code inspection. + * RubyMine configuration is optional. All linters run from the command line. ## Linters 1. [Rubocop](https://github.com/bbatsov/rubocop) From 5bdca4e51b6d2ac4c5643e62bd9a78655ddf51aa Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 1 Aug 2015 15:43:11 -1000 Subject: [PATCH 006/548] Updated version of node in enginees section --- .nvmrc | 2 +- client/package.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.nvmrc b/.nvmrc index 9212624f5..e2e3067dd 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v0.12.7 +0.12.7 diff --git a/client/package.json b/client/package.json index d89c59a95..f90b9d5cc 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,7 @@ "description": "Code from the React Webpack tutorial.", "main": "server.js", "engines": { - "node": "0.12.2" + "node": "0.12.7" }, "repository": { "type": "git", diff --git a/package.json b/package.json index b23d269b3..91d56bae2 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Code from the React Webpack tutorial.", "main": "server.js", "engines": { - "node": "0.12.2" + "node": "0.12.7" }, "scripts": { "postinstall": "cd ./client && npm install", From ea00715eeacf4220be09aa8dacf5c473c8bd0c2f Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Sat, 1 Aug 2015 17:38:15 -1000 Subject: [PATCH 007/548] Move from capybara-webkit to Poltergeist for Capybara js driver Add Gem Poltergeist and es5-shim-rails Add require es5-shim to application.js Change capybara driver to poltergeist within rails_helper. --- Gemfile | 3 ++- Gemfile.lock | 20 +++++++++++++++----- app/assets/javascripts/application.js | 1 + db/schema.rb | 2 +- spec/rails_helper.rb | 4 +++- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/Gemfile b/Gemfile index 42d3f3ba1..8985da685 100644 --- a/Gemfile +++ b/Gemfile @@ -26,6 +26,7 @@ gem "turbolinks" gem "jbuilder" # bundle exec rake doc:rails generates the API under doc/api. gem "sdoc", group: :doc +gem "es5-shim-rails" # Use ActiveModel has_secure_password # gem "bcrypt", "~> 3.1.7" @@ -78,7 +79,7 @@ group :test do gem "rspec-rails" gem "capybara" gem "capybara-screenshot" - gem "capybara-webkit" + gem "poltergeist" gem "database_cleaner" gem "launchy" end diff --git a/Gemfile.lock b/Gemfile.lock index ef948a2b3..22d40b8a8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -74,9 +74,7 @@ GEM capybara-screenshot (1.0.11) capybara (>= 1.0, < 3) launchy - capybara-webkit (1.6.0) - capybara (>= 2.3.0, < 2.5.0) - json + cliver (0.3.2) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) @@ -89,6 +87,9 @@ GEM debug_inspector (0.0.2) diff-lcs (1.2.5) erubis (2.7.0) + es5-shim-rails (4.0.1) + actionpack (>= 3.1) + railties (>= 3.1) execjs (2.5.2) factory_girl (4.5.0) activesupport (>= 3.0.0) @@ -128,6 +129,11 @@ GEM parser (2.2.2.6) ast (>= 1.1, < 3.0) pg (0.18.2) + poltergeist (1.6.0) + capybara (~> 2.1) + cliver (~> 0.3.1) + multi_json (~> 1.0) + websocket-driver (>= 0.2.0) powerpack (0.1.1) rack (1.6.4) rack-test (0.6.3) @@ -242,6 +248,9 @@ GEM binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) + websocket-driver (0.6.2) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.2) xpath (2.0.0) nokogiri (~> 1.3) @@ -256,15 +265,16 @@ DEPENDENCIES byebug capybara capybara-screenshot - capybara-webkit coffee-rails database_cleaner + es5-shim-rails factory_girl_rails foreman jbuilder jquery-rails launchy pg + poltergeist rails (~> 4.2) rails-html-sanitizer rails_12factor @@ -284,4 +294,4 @@ DEPENDENCIES web-console BUNDLED WITH - 1.10.5 + 1.10.6 diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index c5f3f132a..64b094692 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -17,5 +17,6 @@ // Important to import jquery_ujs before rails-bundle as that patches jquery xhr to use the authenticity token! +//= require es5-shim/es5-shim //= require generated/client-bundle //= require turbolinks diff --git a/db/schema.rb b/db/schema.rb index 7e4e95dac..d7f2834b1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -13,7 +13,7 @@ ActiveRecord::Schema.define(version: 20140823052830) do - create_table "comments", force: true do |t| + create_table "comments", force: :cascade do |t| t.string "author" t.text "text" t.datetime "created_at", null: false diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 003b310d7..76361e85c 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -4,6 +4,7 @@ require File.expand_path("../../config/environment", __FILE__) require "rspec/rails" require "capybara/rspec" +require "capybara/poltergeist" require "capybara-screenshot/rspec" # Add additional requires below this line. Rails is not loaded until this point! @@ -47,7 +48,8 @@ DatabaseCleaner.clean end - Capybara.javascript_driver = :webkit + + Capybara.javascript_driver = :poltergeist # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" From 63c6906c3f80247f69d820424307ef9638dbbf03 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 8 Aug 2015 22:49:47 -1000 Subject: [PATCH 008/548] Several slight enhancements, most importantly sanitization 1. Markdown is github flavored and sanitized 2. Some help text explaining that text is treated as markdown 3. Rake task to delete tasks older than 24 hours --- client/assets/javascripts/components/Comment.jsx | 2 +- client/assets/javascripts/components/CommentBox.jsx | 1 + lib/tasks/daily.rake | 8 ++++++++ spec/features/comments_spec.rb | 8 ++++++++ 4 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 lib/tasks/daily.rake diff --git a/client/assets/javascripts/components/Comment.jsx b/client/assets/javascripts/components/Comment.jsx index b1783fc4a..d6d5a4e97 100644 --- a/client/assets/javascripts/components/Comment.jsx +++ b/client/assets/javascripts/components/Comment.jsx @@ -10,7 +10,7 @@ const Comment = React.createClass({ }, render() { - const rawMarkup = marked(this.props.text); + const rawMarkup = marked(this.props.text, { gfm: true, sanitize: true }); return (

diff --git a/client/assets/javascripts/components/CommentBox.jsx b/client/assets/javascripts/components/CommentBox.jsx index 0d25f563e..c14fe9eba 100644 --- a/client/assets/javascripts/components/CommentBox.jsx +++ b/client/assets/javascripts/components/CommentBox.jsx @@ -47,6 +47,7 @@ const CommentBox = React.createClass({ return (

Comments { this.state.form.ajaxSending ? 'SENDING AJAX REQUEST!' : '' }

+

Text take Github Flavored Markdown. Comments older than 24 hours are deleted.

diff --git a/lib/tasks/daily.rake b/lib/tasks/daily.rake new file mode 100644 index 000000000..3a0ba11ae --- /dev/null +++ b/lib/tasks/daily.rake @@ -0,0 +1,8 @@ +task daily: :environment do + t = 1.day.ago + older_comments = Comment.where("created_at < ?", t) + newer_comments = Comment.where("created_at >= ?", t) + Rails.logger.info "Deleting #{older_comments.count} comments older than #{t}" + Rails.logger.info "Keeping #{newer_comments.count} comments newer than #{t}" + older_comments.delete_all +end diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index e9e53ce53..22f0c6797 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -11,6 +11,14 @@ expect(page).to have_css(".commentList .comment", text: "Tommy") expect(page).to have_css(".commentList .comment", text: "Surf's up dude!") + click_link "Horizontal Form" + fill_in "Your Name", with: "Jason" + fill_in "Say something...", with: "" + click_button "Post" + expect(page).to have_css(".commentList .comment", text: "Jason") + expect(page).not_to have_css("iframe") + expect(page).to have_css(".commentList .comment", text: "" - click_button "Post" - expect(page).to have_css(".commentList .comment", text: "Jason") - expect(page).not_to have_css("iframe") - expect(page).to have_css(".commentList .comment", text: "" } - click_link "Inline Form" - fill_in "Your Name", with: "Wilbur Kookmeyer" - fill_in hint_text, with: "dude!" - click_button "Post" - expect(page).to have_css(".commentList .comment", text: "Wilbur Kookmeyer") - expect(page).to have_css(".commentList .comment", text: "dude!") + include_context "Form Submitted", text: :iframe_text + + scenario "doesn't add an iframe", js: true do + expect(page).not_to have_css("iframe") + end + end + end + + context "Inline Form" do + background do + click_link "Inline Form" + end + + it_behaves_like "Form" + end + + context "Stacked Form" do + background do + click_link "Stacked Form" + end + + it_behaves_like "Form" end end From 22d2809ddbe1c32fda8e9b6d0c67bb36fe828597 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 24 Aug 2015 19:32:18 -1000 Subject: [PATCH 023/548] Added explanatory text on behavior, improved linter * Still some js linting failures * Run rake lint to see them --- client/.eslintrc | 1 - .../javascripts/components/CommentBox.jsx | 4 +- lib/tasks/linters.rake | 92 ++++++++++++------- 3 files changed, 63 insertions(+), 34 deletions(-) diff --git a/client/.eslintrc b/client/.eslintrc index 7c3ca0c7a..552147c3b 100644 --- a/client/.eslintrc +++ b/client/.eslintrc @@ -1,4 +1,3 @@ { "extends": "airbnb", - } diff --git a/client/assets/javascripts/components/CommentBox.jsx b/client/assets/javascripts/components/CommentBox.jsx index bf7ef8bfc..73dcc56d9 100644 --- a/client/assets/javascripts/components/CommentBox.jsx +++ b/client/assets/javascripts/components/CommentBox.jsx @@ -34,7 +34,9 @@ const CommentBox = React.createClass({

Comments { this.isSendingAjax() ? `SENDING AJAX REQUEST! Ajax Counter is ${this.ajaxCounter()}` : '' }

-

Text take Github Flavored Markdown. Comments older than 24 hours are deleted.

+

+ Text take Github Flavored Markdown. Comments older than 24 hours are deleted. + Name is preserved, Text is reset, between submits.

[] do |_t, args| + def to_bool(str) + return true if str =~ (/^(true|t|yes|y|1)$/i) + return false if str.blank? || str =~ (/^(false|f|no|n|0)$/i) + fail ArgumentError, "invalid value for Boolean: \"#{str}\"" + end - # If we had slim - # require "slim_lint/rake_task" - # SlimLint::RakeTask.new + fix = (args.fix == "fix") || to_bool(args.fix) + cmd = "rubocop -S -D#{fix ? ' -a' : ''} ." + puts "Running Rubocop Linters via `#{cmd}`#{fix ? ' auto-correct is turned on!' : ''}" + sh cmd + end - SCSSLint::RakeTask.new do |t| - t.files = ["app/assets/stylesheets/", "client/assets/stylesheets/"] - end + desc "Run ruby-lint as shell" + task :ruby do + cmd = "ruby-lint app config spec lib" + puts "Running ruby-lint Linters via `#{cmd}`" + sh cmd + end - desc "eslint" - task :eslint_lint do - puts "Running eslint" - sh "cd client && npm run eslint . -- --ext .jsx,.js" - end + # SlimLint::RakeTask.new do |t| + # t.files = ["app/views"] + # end - desc "jscs" - task :jscs_lint do - puts "Running jscs" - sh "cd client && npm run jscs ." - end + SCSSLint::RakeTask.new do |t| + t.files = ["app/assets/stylesheets/", "client/assets/stylesheets/"] + end - desc "JS Linting" - task js_lint: [:eslint_lint, :jscs_lint] do - puts "Running JavaScript Linters" - end + desc "eslint" + task :eslint do + cmd = "cd client && npm run eslint . -- --ext .jsx,.js" + puts "Running eslint via `#{cmd}`" + sh cmd + end - # could add :slim_lint here - task lint: [:rubocop_lint, :js_lint, :scss_lint] do - puts "Completed All Linting" + desc "jscs" + task :jscs do + cmd = "cd client && npm run jscs ." + puts "Running jscs via `#{cmd}`" + sh cmd + end + + desc "JS Linting" + task js: [:eslint, :jscs] do + puts "Completed running all JavaScript Linters" + end + + # desc "See docs for task 'slim_lint'" + # task slim: :slim_lint + + desc "See docs for task 'scss_lint'" + task scss: :scss_lint + + task lint: [:rubocop, :ruby, :js, :scss] do + puts "Completed all linting" + end end + + desc "Runs all linters. Run `rake -D lint` to see all available lint options" + task lint: ["lint:lint"] end From f31305c0d9a466967171c44c1c0dd144bb323323 Mon Sep 17 00:00:00 2001 From: Mario Perez Date: Tue, 25 Aug 2015 18:29:26 +0200 Subject: [PATCH 024/548] Fix lint errors - Updated eslint file --- client/.eslintrc | 19 +++++++++++--- .../actions/CommentActionCreators.js | 2 +- .../assets/javascripts/components/Comment.jsx | 4 +-- .../javascripts/components/CommentBox.jsx | 2 +- .../javascripts/components/CommentForm.jsx | 25 +++++++++++-------- .../javascripts/components/CommentList.jsx | 4 +-- .../javascripts/components/CommentScreen.jsx | 3 ++- .../middleware/loggerMiddleware.js | 1 + .../javascripts/reducers/commentReducer.js | 3 +++ .../_app-styling-post-bootstrap-loading.scss | 18 ++++++------- 10 files changed, 51 insertions(+), 30 deletions(-) diff --git a/client/.eslintrc b/client/.eslintrc index 552147c3b..659178c0f 100644 --- a/client/.eslintrc +++ b/client/.eslintrc @@ -1,3 +1,16 @@ -{ - "extends": "airbnb", -} +--- +parser: babel-eslint + +extends: eslint-config-airbnb + +plugins: + - react + +env: + browser: true + node: true + +rules: + indent: [1, 2, { SwitchCase: 1, VariableDeclarator: 2 }] + react/sort-comp: 0 + react/jsx-quotes: 0 diff --git a/client/assets/javascripts/actions/CommentActionCreators.js b/client/assets/javascripts/actions/CommentActionCreators.js index 4edc54206..4b4c38e15 100644 --- a/client/assets/javascripts/actions/CommentActionCreators.js +++ b/client/assets/javascripts/actions/CommentActionCreators.js @@ -59,7 +59,7 @@ export function submitComment(comment) { dispatch(incrementAjaxCounter()); return CommentsManager.submitComment(comment) .then( - comment => dispatch(submitCommentSuccess(comment)), + _comment => dispatch(submitCommentSuccess(_comment)), error => dispatch(submitCommentFailure(error))) .then(() => dispatchDecrementAjaxCounter(dispatch)); }; diff --git a/client/assets/javascripts/components/Comment.jsx b/client/assets/javascripts/components/Comment.jsx index 3d909c305..d6d5a4e97 100644 --- a/client/assets/javascripts/components/Comment.jsx +++ b/client/assets/javascripts/components/Comment.jsx @@ -12,8 +12,8 @@ const Comment = React.createClass({ render() { const rawMarkup = marked(this.props.text, { gfm: true, sanitize: true }); return ( -
-

+
+

{this.props.author}

diff --git a/client/assets/javascripts/components/CommentBox.jsx b/client/assets/javascripts/components/CommentBox.jsx index 73dcc56d9..33870dc87 100644 --- a/client/assets/javascripts/components/CommentBox.jsx +++ b/client/assets/javascripts/components/CommentBox.jsx @@ -12,7 +12,7 @@ const CommentBox = React.createClass({ }, componentDidMount() { - let fetchComments = this.props.actions.fetchComments; + const { fetchComments } = this.props.actions; fetchComments(); setInterval(fetchComments, this.props.pollInterval); diff --git a/client/assets/javascripts/components/CommentForm.jsx b/client/assets/javascripts/components/CommentForm.jsx index 4a31eaaa7..1533415b0 100644 --- a/client/assets/javascripts/components/CommentForm.jsx +++ b/client/assets/javascripts/components/CommentForm.jsx @@ -60,16 +60,19 @@ const CommentForm = React.createClass({ }, resetAndFocus() { - //don't reset a form that didn't submit, this results in data loss + // Don't reset a form that didn't submit, this results in data loss if (this.props.error) return; - const comment = {author:this.state.comment.author,text:''} + + const comment = {author: this.state.comment.author, text: ''}; this.setState({comment}); + let ref; - if (this.state.formMode < 2){ - ref = this.refs.text.getInputDOMNode() + if (this.state.formMode < 2) { + ref = this.refs.text.getInputDOMNode(); } else { - ref = React.findDOMNode(this.refs.inlineText) + ref = React.findDOMNode(this.refs.inlineText); } + ref.focus(); }, @@ -149,16 +152,16 @@ const CommentForm = React.createClass({ }, errorWarning() { - //If there is no error, there is nothing to add to the DOM + // If there is no error, there is nothing to add to the DOM if (!this.props.error) return undefined; return ( - Your comment was not saved! A server error prevented your comment from being saved. Please try again. + Your comment was not saved! A server error prevented your comment from being saved. Please try + again. - ) + ); }, - render() { let inputForm; switch (this.state.formMode) { @@ -172,12 +175,12 @@ const CommentForm = React.createClass({ inputForm = this.formInline(); break; default: - throw `Unknown form mode: ${this.state.formMode}.`; + throw new Error(`Unknown form mode: ${this.state.formMode}.`); } return (
- + {this.errorWarning()} diff --git a/client/assets/javascripts/components/CommentList.jsx b/client/assets/javascripts/components/CommentList.jsx index cd85e2df2..48a5a92ac 100644 --- a/client/assets/javascripts/components/CommentList.jsx +++ b/client/assets/javascripts/components/CommentList.jsx @@ -12,13 +12,13 @@ const CommentList = React.createClass({ }, errorWarning() { - //If there is no error, there is nothing to add to the DOM + // If there is no error, there is nothing to add to the DOM if (!this.props.error) return undefined; return ( Comments could not be retrieved. A server error prevented loading comments. Please try again. - ) + ); }, render() { diff --git a/client/assets/javascripts/components/CommentScreen.jsx b/client/assets/javascripts/components/CommentScreen.jsx index 2a2995b31..843c37a53 100644 --- a/client/assets/javascripts/components/CommentScreen.jsx +++ b/client/assets/javascripts/components/CommentScreen.jsx @@ -16,6 +16,7 @@ const CommentScreen = React.createClass({ propTypes: { dispatch: React.PropTypes.func.isRequired, + data: React.PropTypes.object.isRequired, }, render() { @@ -42,7 +43,7 @@ const CommentScreen = React.createClass({
); - } + }, }); // Don't forget to actually use connect! diff --git a/client/assets/javascripts/middleware/loggerMiddleware.js b/client/assets/javascripts/middleware/loggerMiddleware.js index 3841a2ba1..09a127b7d 100644 --- a/client/assets/javascripts/middleware/loggerMiddleware.js +++ b/client/assets/javascripts/middleware/loggerMiddleware.js @@ -15,6 +15,7 @@ export default function logger({ getState }) { readableState[storeItem] = immutableState[storeItem].toJS(); } } + console.log('state after dispatch', readableState); // This will likely be the action itself, unless diff --git a/client/assets/javascripts/reducers/commentReducer.js b/client/assets/javascripts/reducers/commentReducer.js index 558974d84..0d75247f0 100644 --- a/client/assets/javascripts/reducers/commentReducer.js +++ b/client/assets/javascripts/reducers/commentReducer.js @@ -1,3 +1,5 @@ +/* eslint new-cap: 0 */ + import * as actionTypes from '../constants/ActionTypes'; import { Map, List } from 'immutable'; @@ -21,6 +23,7 @@ export default function commentsReducer(state = initialState, action) { .updateIn(['comments'], comments => comments.push(Map(action.comment))) .merge({submitCommentError: ''}); }); + case actionTypes.SUBMIT_COMMENT_FAILURE: return state.merge({submitCommentError: action.error}); case actionTypes.INCREMENT_AJAX_COUNTER: diff --git a/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss b/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss index e02181b73..c0711358b 100644 --- a/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss +++ b/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss @@ -41,18 +41,18 @@ body { .element-enter { opacity: 0.01; -} -.element-enter.element-enter-active { - opacity: 1; - transition: opacity .5s ease-in; + &.element-enter-active { + opacity: 1; + transition: opacity 0.5s ease-in; + } } .element-leave { opacity: 1; -} -.element-leave.element-leave-active { - opacity: 0.01; - transition: opacity .5s ease-in; -} \ No newline at end of file + &.element-leave-active { + opacity: 0.01; + transition: opacity 0.5s ease-in; + } +} From 3628c2074b1e266c937ae74d651bcca0a5928d8d Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 27 Aug 2015 15:02:57 -0700 Subject: [PATCH 025/548] Updated docs --- CHANGELOG.md | 5 +++++ README.md | 16 +++++++++------- app/views/pages/index.html.erb | 20 +++++++++++++++++--- 3 files changed, 31 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3e67dfd8..e76a5b4ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ v1.1 - Sunday, March 22, 2015 ------------------------------ 1. Changed /webpack directory to /client + + +This is out of date. + +See: [pull requests](https://github.com/justin808/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr) diff --git a/README.md b/README.md index 67ded295a..1754d889c 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,17 @@ # React, React-Bootstrap, and ES-6 on Rails via WebPack +## Now with Redux! + By Justin Gordon and the Rails On Maui Team, http://www.railsonmaui.com -- If you came to here from the blog article, this example project has evolved. See CHANGELOG.md for - what's changed. -- Please email us at [justin@railsonmaui.com](mailto:justin@railsonmaui.com) if you have a ReactJs + - Rails project. -- Please file issues for problems and feature requests. -- Pull requests are welcome! +- If you came to here from the blog article, this example project has evolved. + See [pull requests](https://github.com/justin808/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr). - If this work interests you and you are looking for full or part-time remote work, please [click here](http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156). +- Please email us at [justin@railsonmaui.com](mailto:justin@railsonmaui.com) if you have a ReactJs + + Rails project and are interested in help from our experienced team. +- Please file issues for problems and feature requests. +- Pull requests are welcome! (and a great way to get on the team) - Feel free to open discussions at [forum.railsonmaui.com](http://www.forum.railsonmaui.com). - We now have a [gitter chat room for this topic](https://gitter.im/justin808/react-webpack-rails-tutorial). @@ -33,7 +35,7 @@ You can see this tutorial live here: [http://reactrails.com/](http://reactrails. In no particular order: -- Example of Rails 4.2 with ReactJs/Flux with Webpack and ES6. +- Example of Rails 4.2 with ReactJs/Redux with Webpack and ES6. - Enable development of a JS client independently from Rails using Webpack Hot Module Reload. - Easily enable use of npm modules with a Rails application. - Easily enable retrofitting such a JS framework into an existing Rails app. diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index b20be1add..052a2a956 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -1,7 +1,21 @@ -

Using React

+

Using React + Redux + Rails Backend

+
    +
  • + If this work interests you and you're a developer or designer looking for full or part-time remote work: please + <%= link_to "click here", + "http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156" %> + and + <%= link_to "here", + "http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156/2" %>. +
  • +
  • + Please see the + <%= link_to "github.com/react-webpack-rails-tutorial/README.md", + "https://github.com/justin808/react-webpack-rails-tutorial/blob/master/README.md" %> + for details of how this example site was built. +
  • +

- -
From a66a5d9272e83ec127cae693494605383a569cce Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 27 Aug 2015 23:54:48 -0700 Subject: [PATCH 026/548] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1754d889c..3e7b5c5b6 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,9 @@ See package.json and Gemfile for versions 1. React (for front-end app) 2. React-bootstrap -3. [Flux Alt](https://github.com/goatslacker/alt) +3. [Redux](https://github.com/rackt/redux) 4. Webpack with hot-reload (for local dev) -5. ES6 transpiler (es6-loader) +5. Babel transpiler (https://github.com/babel/babel) 6. Rails 4.2 (for backend app) 7. Heroku (for deployment) From e48b6767981612077b3d1e1141bed20e89c0b119 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 1 Sep 2015 18:25:03 -1000 Subject: [PATCH 027/548] Update README.md --- README.md | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3e7b5c5b6..dd802f430 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# React, React-Bootstrap, and ES-6 on Rails via WebPack +# React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack -## Now with Redux! +## Now with Redux and ES7! Servering Rendering ASAP! -By Justin Gordon and the Rails On Maui Team, http://www.railsonmaui.com +By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com - If you came to here from the blog article, this example project has evolved. See [pull requests](https://github.com/justin808/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr). @@ -17,7 +17,7 @@ By Justin Gordon and the Rails On Maui Team, http://www.railsonmaui.com A Full tutorial article can be found at: [Fast Rich Client Rails Development With Webpack and the ES6 Transpiler](http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/) -Note, this source code repository is going to be ahead of the tutorial. We plan to update the tutorial soon. +Note, this source code repository is way ahead of the tutorial. We plan to update the tutorial as soon as can catch our breath! [Discussion forum regarding the tutorial](http://forum.railsonmaui.com/t/fast-rich-client-rails-development-with-webpack-and-the-es6-transpiler/82/10) @@ -35,22 +35,22 @@ You can see this tutorial live here: [http://reactrails.com/](http://reactrails. In no particular order: -- Example of Rails 4.2 with ReactJs/Redux with Webpack and ES6. -- Enable development of a JS client independently from Rails using Webpack Hot Module Reload. +- Example of Rails 4.2 with ReactJs/Redux with Webpack and ES7. +- Enable development of a JS client independently from Rails using Webpack Hot Module Reload. You can see this by starting the app and visiting http://localhost:3000 - Easily enable use of npm modules with a Rails application. - Easily enable retrofitting such a JS framework into an existing Rails app. -- Enable the use of the JavaScript ES6 transpiler. -- Example setting up Ruby and ES6 linting in a real project. +- Enable the use of the JavaScript ES7 transpiler. +- Example setting up Ruby and ES7 linting in a real project. - Example of thorough use of Ruby and JavaScript linters, and other CI tasks. # Technologies involved See package.json and Gemfile for versions -1. React (for front-end app) -2. React-bootstrap +1. [React](http://facebook.github.io/react/) (for front-end app) +2. [react-bootstrap](https://react-bootstrap.github.io/) 3. [Redux](https://github.com/rackt/redux) -4. Webpack with hot-reload (for local dev) +4. [Webpack with hot-reload](https://github.com/webpack/docs/wiki/hot-module-replacement-with-webpack) (for local dev) 5. Babel transpiler (https://github.com/babel/babel) 6. Rails 4.2 (for backend app) 7. Heroku (for deployment) @@ -252,6 +252,9 @@ QMAKE=/usr/local/Cellar/qt5/5.4.0/bin/qmake bundle install Then run `rspec` and you should see the tests have passed. +# Rails Asset Pipeline Magic +Be sure to see [assets.rake](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/lib/tasks/assets.rake) for how webpack is invoked during asset compilation. + # Linting and Code Inspection ## Running Lint and CI tasks * Default rake task runs tests and linting (yes, repeating this!) (see `ci.rake`) From 11bc8acc99346bebe9e183eae7ed9315758fb18d Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 1 Sep 2015 18:26:38 -1000 Subject: [PATCH 028/548] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dd802f430..e9be20f19 100644 --- a/README.md +++ b/README.md @@ -164,6 +164,9 @@ search path. See config `config/application.rb`. Keep that in mind as you customize the Bootstrap Sass variables. # Notes on Rails assets +## Rails Asset Pipeline Magic +Be sure to see [assets.rake](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/lib/tasks/assets.rake) for how webpack is invoked during asset compilation. + ## Javascript The `webpack.rails.config.js` file generates client-bundle.js which is then included by the Rails asset pipeline. @@ -252,8 +255,6 @@ QMAKE=/usr/local/Cellar/qt5/5.4.0/bin/qmake bundle install Then run `rspec` and you should see the tests have passed. -# Rails Asset Pipeline Magic -Be sure to see [assets.rake](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/lib/tasks/assets.rake) for how webpack is invoked during asset compilation. # Linting and Code Inspection ## Running Lint and CI tasks From 64c514ecea4903809128a03cc0dc21062c1609c5 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 1 Sep 2015 22:53:24 -1000 Subject: [PATCH 029/548] Changed justin808 to shakacode --- app/views/pages/index.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 052a2a956..23ac242a8 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -10,8 +10,8 @@
  • Please see the - <%= link_to "github.com/react-webpack-rails-tutorial/README.md", - "https://github.com/justin808/react-webpack-rails-tutorial/blob/master/README.md" %> + <%= link_to "github.com/shakacode/react-webpack-rails-tutorial/README.md", + "https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/README.md" %> for details of how this example site was built.
  • From 0262e978d974a6951adac642b4a12a5afee60489 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 1 Sep 2015 23:19:33 -1000 Subject: [PATCH 030/548] Only README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e9be20f19..ffbd1323d 100644 --- a/README.md +++ b/README.md @@ -299,3 +299,8 @@ WebStorm opened up to the `client` directory to focus on JSX and Sass files. ``` alias git-cleanup-merged-branches='git branch --merged master | grep -v master | xargs git branch -d' ``` + +# Open Code of Conduct +This project adheres to the [Open Code of Conduct][code-of-conduct]. By participating, you are expected to uphold this code. +[code-of-conduct](http://todogroup.org/opencodeofconduct/#fetch/opensource@github.com) + From 3b7a5c7f678db56e8f02355db08140b9b0ae80de Mon Sep 17 00:00:00 2001 From: Mario Perez Date: Wed, 2 Sep 2015 12:57:51 +0200 Subject: [PATCH 031/548] Use fetch instead of $.ajax. Resolves #69 --- client/.jscsrc | 3 +- .../actions/CommentActionCreators.js | 12 +++--- .../javascripts/utils/CommentsManager.js | 42 ++++++++++++------- client/package.json | 3 +- client/webpack.common.config.js | 2 +- 5 files changed, 38 insertions(+), 24 deletions(-) diff --git a/client/.jscsrc b/client/.jscsrc index 0be7eea16..bb03b57cf 100644 --- a/client/.jscsrc +++ b/client/.jscsrc @@ -1,5 +1,6 @@ { "preset": "airbnb", "fileExtensions": [".js", ".jsx"], - "excludeFiles": ["build/**", "node_modules/**"] + "excludeFiles": ["build/**", "node_modules/**"], + "disallowQuotedKeysInObjects": false } diff --git a/client/assets/javascripts/actions/CommentActionCreators.js b/client/assets/javascripts/actions/CommentActionCreators.js index 4b4c38e15..9b9b7108a 100644 --- a/client/assets/javascripts/actions/CommentActionCreators.js +++ b/client/assets/javascripts/actions/CommentActionCreators.js @@ -43,10 +43,9 @@ export function submitCommentFailure(error) { export function fetchComments() { return dispatch => { - return CommentsManager.fetchComments().then( - comments => dispatch(fetchCommentsSuccess(comments)), - error => dispatch(fetchCommentsFailure(error)) - ); + return CommentsManager.fetchComments() + .then(comments => dispatch(fetchCommentsSuccess(comments))) + .catch(error => dispatch(fetchCommentsFailure(error))); }; } @@ -58,9 +57,8 @@ export function submitComment(comment) { return dispatch => { dispatch(incrementAjaxCounter()); return CommentsManager.submitComment(comment) - .then( - _comment => dispatch(submitCommentSuccess(_comment)), - error => dispatch(submitCommentFailure(error))) + .then(commentFromServer => dispatch(submitCommentSuccess(commentFromServer))) + .catch(error => dispatch(submitCommentFailure(error))) .then(() => dispatchDecrementAjaxCounter(dispatch)); }; } diff --git a/client/assets/javascripts/utils/CommentsManager.js b/client/assets/javascripts/utils/CommentsManager.js index 4348018cb..c8500c638 100644 --- a/client/assets/javascripts/utils/CommentsManager.js +++ b/client/assets/javascripts/utils/CommentsManager.js @@ -1,34 +1,48 @@ -import $ from 'jquery'; - const API_URL = 'comments.json'; +// fetch won't reject on HTTP error status +// https://github.com/github/fetch#handling-http-error-statuses +function checkStatus(response) { + if (response.status >= 200 && response.status < 300) { + return response; + } + + const error = new Error(response.statusText); + error.response = response; + throw error; +} + +function parseJSON(response) { + return response.json(); +} + const CommentsManager = { /** * Retrieve comments from server using AJAX call. * - * @returns {Promise} - jqXHR result of ajax call. + * @returns {Promise} - response of fetch request. */ fetchComments() { - return Promise.resolve($.ajax({ - url: API_URL, - dataType: 'json', - })); + return fetch(API_URL).then(checkStatus).then(parseJSON); }, /** * Submit new comment to server using AJAX call. * * @param {Object} comment - Comment body to post. - * @returns {Promise} - jqXHR result of ajax call. + * @returns {Promise} - response of fetch request. */ + submitComment(comment) { - return Promise.resolve($.ajax({ - url: API_URL, - dataType: 'json', - type: 'POST', - data: {comment: comment}, - })); + return fetch(API_URL, { + method: 'post', + headers: { + 'Accept': 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({comment}), + }).then(checkStatus).then(parseJSON); }, }; diff --git a/client/package.json b/client/package.json index 93e6bde9a..b7126cf7f 100644 --- a/client/package.json +++ b/client/package.json @@ -40,7 +40,8 @@ "redux-promise": "^0.5.0", "redux-thunk": "^0.1.0", "sleep": "^3.0.0", - "webpack": "^1.10.5" + "webpack": "^1.10.5", + "whatwg-fetch": "^0.9.0" }, "devDependencies": { "babel-eslint": "^4.0.5", diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 50471f39c..91370cb6b 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -6,7 +6,7 @@ module.exports = { // the project dir context: __dirname, - entry: ['./assets/javascripts/App'], + entry: ['whatwg-fetch', './assets/javascripts/App'], // In case you wanted to load jQuery from the CDN, this is how you would do it: // externals: { From 0a9bc824526c8bb4881475c5c37ba608b4fa3e85 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Fri, 4 Sep 2015 01:11:09 -0700 Subject: [PATCH 032/548] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ffbd1323d..7a5a3d971 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack -## Now with Redux and ES7! Servering Rendering ASAP! +## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com @@ -14,6 +14,7 @@ By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com - Pull requests are welcome! (and a great way to get on the team) - Feel free to open discussions at [forum.railsonmaui.com](http://www.forum.railsonmaui.com). - We now have a [gitter chat room for this topic](https://gitter.im/justin808/react-webpack-rails-tutorial). +- Check out the [react_on_rails gem](https://github.com/shakacode/react_on_rails) for easy webpack integration. A Full tutorial article can be found at: [Fast Rich Client Rails Development With Webpack and the ES6 Transpiler](http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/) From 7d8dbc3fe815a54959c5f29047a3200962dd7130 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 4 Sep 2015 08:38:50 -1000 Subject: [PATCH 033/548] Update package.json for Redux 1.0.1 and npm shrinkwrap --- client/npm-shrinkwrap.json | 720 +++++++++++++++++-------------------- client/package.json | 2 +- 2 files changed, 329 insertions(+), 393 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 97a09ea50..ec659672e 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -3,9 +3,9 @@ "version": "1.1.0", "dependencies": { "babel-core": { - "version": "5.8.20", + "version": "5.8.23", "from": "babel-core@>=5.8.20 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.20.tgz", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.23.tgz", "dependencies": { "babel-plugin-constant-folding": { "version": "1.0.1", @@ -90,9 +90,9 @@ "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz" }, "babylon": { - "version": "5.8.20", - "from": "babylon@>=5.8.20 <6.0.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.20.tgz" + "version": "5.8.23", + "from": "babylon@>=5.8.23 <6.0.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" }, "bluebird": { "version": "2.9.34", @@ -100,9 +100,9 @@ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" }, "chalk": { - "version": "1.1.0", + "version": "1.1.1", "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", "dependencies": { "ansi-styles": { "version": "2.1.0", @@ -151,9 +151,9 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" }, "core-js": { - "version": "1.0.1", + "version": "1.1.3", "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.0.1.tgz" + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.3.tgz" }, "debug": { "version": "2.2.0", @@ -178,9 +178,9 @@ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" }, "minimist": { - "version": "1.1.2", + "version": "1.2.0", "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.2.tgz" + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" } } }, @@ -217,9 +217,9 @@ } }, "is-integer": { - "version": "1.0.4", + "version": "1.0.6", "from": "is-integer@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.4.tgz", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", "dependencies": { "is-finite": { "version": "1.0.1", @@ -232,30 +232,6 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" } } - }, - "is-nan": { - "version": "1.1.0", - "from": "is-nan@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.1.0.tgz", - "dependencies": { - "define-properties": { - "version": "1.1.1", - "from": "define-properties@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.1.tgz", - "dependencies": { - "foreach": { - "version": "2.0.5", - "from": "foreach@>=2.0.5 <3.0.0", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" - }, - "object-keys": { - "version": "1.0.7", - "from": "object-keys@>=1.0.7 <2.0.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.7.tgz" - } - } - } - } } } }, @@ -282,9 +258,9 @@ } }, "lodash": { - "version": "3.10.0", + "version": "3.10.1", "from": "lodash@>=3.10.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "minimatch": { "version": "2.0.10", @@ -545,19 +521,14 @@ "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", "dependencies": { "recast": { - "version": "0.10.26", + "version": "0.10.32", "from": "recast@>=0.10.6 <0.11.0", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.26.tgz", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", "dependencies": { - "esprima-fb": { - "version": "15001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" - }, "ast-types": { - "version": "0.8.7", - "from": "ast-types@0.8.7", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.7.tgz" + "version": "0.8.11", + "from": "ast-types@0.8.11", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz" } } }, @@ -572,9 +543,9 @@ "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" }, "regjsparser": { - "version": "0.1.4", + "version": "0.1.5", "from": "regjsparser@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "dependencies": { "jsesc": { "version": "0.5.0", @@ -757,15 +728,15 @@ "dependencies": { "unpipe": { "version": "1.0.0", - "from": "unpipe@1.0.0", + "from": "unpipe@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" } } }, "type-is": { - "version": "1.6.6", + "version": "1.6.8", "from": "type-is@>=1.6.6 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", "dependencies": { "media-typer": { "version": "0.3.0", @@ -773,14 +744,14 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" }, "mime-types": { - "version": "2.1.4", + "version": "2.1.6", "from": "mime-types@>=2.1.4 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", "dependencies": { "mime-db": { - "version": "1.16.0", - "from": "mime-db@>=1.16.0 <1.17.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + "version": "1.18.0", + "from": "mime-db@>=1.18.0 <1.19.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz" } } } @@ -789,14 +760,19 @@ } }, "es5-shim": { - "version": "4.1.10", + "version": "4.1.11", "from": "es5-shim@>=4.1.10 <5.0.0", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.10.tgz" + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.11.tgz" + }, + "es6-promise": { + "version": "2.3.0", + "from": "es6-promise@>=2.3.0 <3.0.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz" }, "immutable": { - "version": "3.7.4", - "from": "immutable@*", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.4.tgz" + "version": "3.7.5", + "from": "immutable@>=3.7.4 <4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz" }, "imports-loader": { "version": "0.6.4", @@ -819,7 +795,7 @@ }, "jquery": { "version": "2.1.4", - "from": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "from": "jquery@>=2.1.4 <3.0.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" }, "loader-utils": { @@ -844,272 +820,45 @@ "from": "marked@>=0.3.5 <0.4.0", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" }, - "node-libs-browser": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", - "dependencies": { - "assert": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "dependencies": { - "pako": { - "version": "0.2.6", - "from": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz" - } - } - }, - "buffer": { - "version": "3.2.2", - "from": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", - "dependencies": { - "base64-js": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" - }, - "ieee754": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz" - }, - "is-array": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" - } - } - }, - "console-browserify": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "constants-browserify": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" - }, - "crypto-browserify": { - "version": "3.2.8", - "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "dependencies": { - "pbkdf2-compat": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" - }, - "ripemd160": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" - }, - "sha.js": { - "version": "2.2.6", - "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" - } - } - }, - "domain-browser": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" - }, - "events": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" - }, - "http-browserify": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "dependencies": { - "Base64": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "https-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" - }, - "os-browserify": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" - }, - "path-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" - }, - "process": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/process/-/process-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.0.tgz" - }, - "punycode": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - }, - "querystring-es3": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "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.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "stream-browserify": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "timers-browserify": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" - }, - "tty-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - }, - "url": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "dependencies": { - "querystring": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "dependencies": { - "indexof": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } - } - } - }, "react": { "version": "0.13.3", - "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", + "from": "react@>=0.13.3 <0.14.0", "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "from": "envify@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { - "version": "2.3.7", - "from": "https://registry.npmjs.org/through/-/through-2.3.7.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.7.tgz" + "version": "2.3.8", + "from": "through@>=2.3.4 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "from": "jstransform@>=10.0.1 <11.0.0", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", + "from": "base62@0.1.1", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "from": "source-map@0.1.31", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } } @@ -1120,9 +869,9 @@ } }, "react-bootstrap": { - "version": "0.24.3", + "version": "0.24.5", "from": "react-bootstrap@>=0.24.3 <0.25.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.24.3.tgz", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.24.5.tgz", "dependencies": { "babel-runtime": { "version": "5.8.20", @@ -1130,16 +879,16 @@ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.20.tgz", "dependencies": { "core-js": { - "version": "1.0.1", + "version": "1.1.3", "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.0.1.tgz" + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.3.tgz" } } }, "lodash": { - "version": "3.10.0", + "version": "3.10.1", "from": "lodash@>=3.10.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.0.tgz" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "classnames": { "version": "2.1.3", @@ -1150,7 +899,7 @@ }, "react-redux": { "version": "0.2.2", - "from": "react-redux@*", + "from": "react-redux@>=0.2.2 <0.3.0", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-0.2.2.tgz", "dependencies": { "invariant": { @@ -1204,63 +953,13 @@ } }, "redux": { - "version": "1.0.0-rc", - "from": "redux@1.0.0-rc", - "resolved": "https://registry.npmjs.org/redux/-/redux-1.0.0-rc.tgz", - "dependencies": { - "invariant": { - "version": "2.1.0", - "from": "invariant@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", - "dependencies": { - "envify": { - "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "base62@0.1.1", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "source-map@0.1.31", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - } - } - } - } - } - } + "version": "1.0.1", + "from": "redux@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-1.0.1.tgz" }, "redux-promise": { "version": "0.5.0", - "from": "redux-promise@*", + "from": "redux-promise@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", "dependencies": { "flux-standard-action": { @@ -1303,7 +1002,7 @@ }, "redux-thunk": { "version": "0.1.0", - "from": "redux-thunk@*", + "from": "redux-thunk@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz" }, "sleep": { @@ -1312,21 +1011,21 @@ "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "dependencies": { "nan": { - "version": "2.0.0", + "version": "2.0.8", "from": "nan@>=2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.0.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz" } } }, "webpack": { - "version": "1.10.5", + "version": "1.12.1", "from": "webpack@>=1.10.5 <2.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.10.5.tgz", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.1.tgz", "dependencies": { "async": { - "version": "1.4.0", + "version": "1.4.2", "from": "async@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.4.0.tgz" + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" }, "clone": { "version": "1.0.2", @@ -1340,15 +1039,15 @@ "dependencies": { "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <4.0.0", + "from": "graceful-fs@>=3.0.5 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "esprima": { - "version": "1.2.5", - "from": "esprima@>=1.2.0 <2.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.5.tgz" + "version": "2.6.0", + "from": "esprima@>=2.5.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" }, "interpret": { "version": "0.6.5", @@ -1372,6 +1071,233 @@ } } }, + "node-libs-browser": { + "version": "0.5.2", + "from": "node-libs-browser@>=0.4.0 <=0.6.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.2.tgz", + "dependencies": { + "assert": { + "version": "1.3.0", + "from": "assert@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" + }, + "browserify-zlib": { + "version": "0.1.4", + "from": "browserify-zlib@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "dependencies": { + "pako": { + "version": "0.2.7", + "from": "pako@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.7.tgz" + } + } + }, + "buffer": { + "version": "3.4.3", + "from": "buffer@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.4.3.tgz", + "dependencies": { + "base64-js": { + "version": "0.0.8", + "from": "base64-js@0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" + }, + "ieee754": { + "version": "1.1.6", + "from": "ieee754@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.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" + } + } + }, + "console-browserify": { + "version": "1.1.0", + "from": "console-browserify@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dependencies": { + "date-now": { + "version": "0.1.4", + "from": "date-now@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + } + } + }, + "constants-browserify": { + "version": "0.0.1", + "from": "constants-browserify@0.0.1", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" + }, + "crypto-browserify": { + "version": "3.2.8", + "from": "crypto-browserify@>=3.2.6 <3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", + "dependencies": { + "pbkdf2-compat": { + "version": "2.0.1", + "from": "pbkdf2-compat@2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" + }, + "ripemd160": { + "version": "0.2.0", + "from": "ripemd160@0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" + }, + "sha.js": { + "version": "2.2.6", + "from": "sha.js@2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" + } + } + }, + "domain-browser": { + "version": "1.1.4", + "from": "domain-browser@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" + }, + "events": { + "version": "1.0.2", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" + }, + "http-browserify": { + "version": "1.7.0", + "from": "http-browserify@>=1.3.2 <2.0.0", + "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", + "dependencies": { + "Base64": { + "version": "0.2.1", + "from": "Base64@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "https-browserify": { + "version": "0.0.0", + "from": "https-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" + }, + "os-browserify": { + "version": "0.1.2", + "from": "os-browserify@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" + }, + "path-browserify": { + "version": "0.0.0", + "from": "path-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" + }, + "process": { + "version": "0.11.1", + "from": "process@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.1.tgz" + }, + "punycode": { + "version": "1.3.2", + "from": "punycode@>=1.2.4 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + }, + "querystring-es3": { + "version": "0.2.1", + "from": "querystring-es3@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + }, + "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", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "stream-browserify": { + "version": "1.0.0", + "from": "stream-browserify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.25 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "timers-browserify": { + "version": "1.4.1", + "from": "timers-browserify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" + }, + "tty-browserify": { + "version": "0.0.0", + "from": "tty-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.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", + "dependencies": { + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + } + } + }, + "util": { + "version": "0.10.3", + "from": "util@>=0.10.3 <0.11.0", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "from": "vm-browserify@0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "dependencies": { + "indexof": { + "version": "0.0.1", + "from": "indexof@0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + } + } + } + } + }, "optimist": { "version": "0.6.1", "from": "optimist@>=0.6.0 <0.7.0", @@ -1390,9 +1316,9 @@ } }, "supports-color": { - "version": "3.1.0", + "version": "3.1.1", "from": "supports-color@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", "dependencies": { "has-flag": { "version": "1.0.0", @@ -1408,7 +1334,7 @@ }, "uglify-js": { "version": "2.4.24", - "from": "uglify-js@>=2.4.13 <2.5.0", + "from": "uglify-js@>=2.4.24 <2.5.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "dependencies": { "async": { @@ -1488,13 +1414,18 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", "dependencies": { "arr-diff": { - "version": "1.0.1", + "version": "1.1.0", "from": "arr-diff@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "dependencies": { + "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-slice": { "version": "0.2.3", - "from": "array-slice@>=0.2.2 <0.3.0", + "from": "array-slice@>=0.2.3 <0.3.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" } } @@ -1505,9 +1436,9 @@ "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" }, "braces": { - "version": "1.8.0", + "version": "1.8.1", "from": "braces@>=1.8.0 <2.0.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.0.tgz", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", "dependencies": { "expand-range": { "version": "1.8.1", @@ -1543,6 +1474,11 @@ } } }, + "lazy-cache": { + "version": "0.2.3", + "from": "lazy-cache@>=0.2.3 <0.3.0", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" + }, "preserve": { "version": "0.2.0", "from": "preserve@>=0.2.0 <0.3.0", @@ -1550,15 +1486,15 @@ }, "repeat-element": { "version": "1.1.2", - "from": "repeat-element@>=1.1.0 <2.0.0", + "from": "repeat-element@>=1.1.2 <2.0.0", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" } } }, "expand-brackets": { - "version": "0.1.2", + "version": "0.1.4", "from": "expand-brackets@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.2.tgz" + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" }, "extglob": { "version": "0.3.1", @@ -1760,14 +1696,14 @@ } }, "fsevents": { - "version": "0.3.7", + "version": "0.3.8", "from": "fsevents@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.7.tgz", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", "dependencies": { "nan": { - "version": "1.9.0", - "from": "nan@>=1.8.0 <2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-1.9.0.tgz" + "version": "2.0.8", + "from": "nan@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz" } } } diff --git a/client/package.json b/client/package.json index 93e6bde9a..047a15e30 100644 --- a/client/package.json +++ b/client/package.json @@ -36,7 +36,7 @@ "react": "^0.13.3", "react-bootstrap": "^0.24.3", "react-redux": "^0.2.2", - "redux": "^1.0.0-rc", + "redux": "^1.0.1", "redux-promise": "^0.5.0", "redux-thunk": "^0.1.0", "sleep": "^3.0.0", From 594f96b0d0984555b7f9e1f2521183596e8e8886 Mon Sep 17 00:00:00 2001 From: Scott Bronson Date: Fri, 4 Sep 2015 15:33:36 -0700 Subject: [PATCH 034/548] more justin808 -> shakacode conversions --- CHANGELOG.md | 2 +- README.md | 6 +++--- app/views/layouts/application.html.erb | 2 +- client/package.json | 6 +++--- client/webpack.hot.config.js | 2 +- package.json | 6 +++--- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e76a5b4ae..948411bf9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,4 +5,4 @@ v1.1 - Sunday, March 22, 2015 This is out of date. -See: [pull requests](https://github.com/justin808/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr) +See: [pull requests](https://github.com/shakacode/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr) diff --git a/README.md b/README.md index 7a5a3d971..2f803a6f9 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com - If you came to here from the blog article, this example project has evolved. - See [pull requests](https://github.com/justin808/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr). + See [pull requests](https://github.com/shakacode/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr). - If this work interests you and you are looking for full or part-time remote work, please [click here](http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156). - Please email us at [justin@railsonmaui.com](mailto:justin@railsonmaui.com) if you have a ReactJs + @@ -13,7 +13,7 @@ By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com - Please file issues for problems and feature requests. - Pull requests are welcome! (and a great way to get on the team) - Feel free to open discussions at [forum.railsonmaui.com](http://www.forum.railsonmaui.com). -- We now have a [gitter chat room for this topic](https://gitter.im/justin808/react-webpack-rails-tutorial). +- We now have a [gitter chat room for this topic](https://gitter.im/shakacode/react-webpack-rails-tutorial). - Check out the [react_on_rails gem](https://github.com/shakacode/react_on_rails) for easy webpack integration. A Full tutorial article can be found at: [Fast Rich Client Rails Development With Webpack and the ES6 Transpiler](http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/) @@ -59,7 +59,7 @@ See package.json and Gemfile for versions # Basic Setup 1. Be sure that you have Node installed. I use [nvm](https://github.com/creationix/nvm), with node version `v0.12.7`. See this article [Updating and using nvm](http://forum.railsonmaui.com/t/updating-and-using-nvm/293). -1. `git clone git@github.com:justin808/react-webpack-rails-tutorial.git` +1. `git clone git@github.com:shakacode/react-webpack-rails-tutorial.git` 1. `cd react-webpack-rails-tutorial` 1. Check that you have Ruby 2.2.2 1. Check that you're using the right version of node. Run `nvm list` to check. diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 30a019885..b47b9b949 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -25,7 +25,7 @@
  • React Demo
  • <%= link_to "Classic Rails", comments_path %>
  • <%= link_to "by Justin Gordon, www.railsonmaui.com", "http://www.railsonmaui.com/" %>
  • -
  • <%= link_to "Source on Github", "https://github.com/justin808/react-webpack-rails-tutorial" %>
  • +
  • <%= link_to "Source on Github", "https://github.com/shakacode/react-webpack-rails-tutorial" %>
  • <%= link_to "Tutorial Article", "http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/" %>
  • <%= link_to "Forum Discussion", "http://forum.railsonmaui.com/t/fast-rich-client-rails-development-with-webpack-and-the-es6-transpiler/82/22" %>
  • diff --git a/client/package.json b/client/package.json index 047a15e30..1682a21b1 100644 --- a/client/package.json +++ b/client/package.json @@ -8,7 +8,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/justin808/react-webpack-rails-tutorial.git" + "url": "https://github.com/shakacode/react-webpack-rails-tutorial.git" }, "keywords": [ "react", @@ -19,9 +19,9 @@ "author": "justin808", "license": "MIT", "bugs": { - "url": "https://github.com/justin808/react-webpack-rails-tutorial/issues" + "url": "https://github.com/shakacode/react-webpack-rails-tutorial/issues" }, - "homepage": "https://github.com/justin808/react-webpack-rails-tutorial", + "homepage": "https://github.com/shakacode/react-webpack-rails-tutorial", "dependencies": { "babel-core": "^5.8.20", "babel-loader": "^5.3.2", diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index 8191a36b9..71c103318 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -6,7 +6,7 @@ const config = require('./webpack.common.config'); const webpack = require('webpack'); // We're using the bootstrap-sass loader. -// See: https://github.com/justin808/bootstrap-sass-loader +// See: https://github.com/shakacode/bootstrap-sass-loader config.entry.push('webpack-dev-server/client?http://localhost:3000', 'webpack/hot/dev-server', './scripts/webpack_only', diff --git a/package.json b/package.json index 24309c12f..21ffb2eb0 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ }, "repository": { "type": "git", - "url": "https://github.com/justin808/react-webpack-rails-tutorial.git" + "url": "https://github.com/shakacode/react-webpack-rails-tutorial.git" }, "keywords": [ "react", @@ -24,8 +24,8 @@ "author": "justin808", "license": "MIT", "bugs": { - "url": "https://github.com/justin808/react-webpack-rails-tutorial/issues" + "url": "https://github.com/shakacode/react-webpack-rails-tutorial/issues" }, - "homepage": "https://github.com/justin808/react-webpack-rails-tutorial", + "homepage": "https://github.com/shakacode/react-webpack-rails-tutorial", "dependencies": {} } From b5b085e407b4c38343a274432c1a980a2b55035b Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 4 Sep 2015 16:09:21 -1000 Subject: [PATCH 035/548] Update npm shrinkwrap for whathg-fetch --- client/npm-shrinkwrap.json | 1746 ------------------------------------ 1 file changed, 1746 deletions(-) delete mode 100644 client/npm-shrinkwrap.json diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json deleted file mode 100644 index ec659672e..000000000 --- a/client/npm-shrinkwrap.json +++ /dev/null @@ -1,1746 +0,0 @@ -{ - "name": "react-webpack-rails-tutorial", - "version": "1.1.0", - "dependencies": { - "babel-core": { - "version": "5.8.23", - "from": "babel-core@>=5.8.20 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.23.tgz", - "dependencies": { - "babel-plugin-constant-folding": { - "version": "1.0.1", - "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" - }, - "babel-plugin-dead-code-elimination": { - "version": "1.0.2", - "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" - }, - "babel-plugin-eval": { - "version": "1.0.1", - "from": "babel-plugin-eval@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" - }, - "babel-plugin-inline-environment-variables": { - "version": "1.0.1", - "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" - }, - "babel-plugin-jscript": { - "version": "1.0.4", - "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" - }, - "babel-plugin-member-expression-literals": { - "version": "1.0.1", - "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" - }, - "babel-plugin-property-literals": { - "version": "1.0.1", - "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" - }, - "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" - }, - "babel-plugin-react-constant-elements": { - "version": "1.0.3", - "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" - }, - "babel-plugin-react-display-name": { - "version": "1.0.3", - "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" - }, - "babel-plugin-remove-console": { - "version": "1.0.1", - "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" - }, - "babel-plugin-remove-debugger": { - "version": "1.0.1", - "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" - }, - "babel-plugin-runtime": { - "version": "1.0.7", - "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-undeclared-variables-check": { - "version": "1.0.2", - "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", - "dependencies": { - "leven": { - "version": "1.0.2", - "from": "leven@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" - } - } - }, - "babel-plugin-undefined-to-void": { - "version": "1.1.6", - "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" - }, - "babylon": { - "version": "5.8.23", - "from": "babylon@>=5.8.23 <6.0.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" - }, - "bluebird": { - "version": "2.9.34", - "from": "bluebird@>=2.9.33 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.1.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.3", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.0", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "convert-source-map": { - "version": "1.1.1", - "from": "convert-source-map@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" - }, - "core-js": { - "version": "1.1.3", - "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.3.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "detect-indent": { - "version": "3.0.1", - "from": "detect-indent@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - } - } - }, - "esutils": { - "version": "2.0.2", - "from": "esutils@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" - }, - "fs-readdir-recursive": { - "version": "0.1.2", - "from": "fs-readdir-recursive@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" - }, - "globals": { - "version": "6.4.1", - "from": "globals@>=6.4.0 <7.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz" - }, - "home-or-tmp": { - "version": "1.0.0", - "from": "home-or-tmp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1", - "from": "os-tmpdir@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - }, - "user-home": { - "version": "1.1.1", - "from": "user-home@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - } - } - }, - "is-integer": { - "version": "1.0.6", - "from": "is-integer@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.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" - }, - "json5": { - "version": "0.4.0", - "from": "json5@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" - }, - "line-numbers": { - "version": "0.2.0", - "from": "line-numbers@0.2.0", - "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", - "dependencies": { - "left-pad": { - "version": "0.0.3", - "from": "left-pad@0.0.3", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" - } - } - }, - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.10.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "minimatch": { - "version": "2.0.10", - "from": "minimatch@>=2.0.3 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "brace-expansion": { - "version": "1.1.0", - "from": "brace-expansion@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "from": "balanced-match@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" - } - } - } - } - }, - "output-file-sync": { - "version": "1.1.1", - "from": "output-file-sync@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", - "dependencies": { - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.1 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "xtend": { - "version": "4.0.0", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" - } - } - }, - "path-exists": { - "version": "1.0.0", - "from": "path-exists@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.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" - }, - "private": { - "version": "0.1.6", - "from": "private@>=0.1.6 <0.2.0", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" - }, - "regenerator": { - "version": "0.8.35", - "from": "regenerator@0.8.35", - "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", - "dependencies": { - "commoner": { - "version": "0.10.3", - "from": "commoner@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", - "dependencies": { - "q": { - "version": "1.1.2", - "from": "q@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" - }, - "commander": { - "version": "2.5.1", - "from": "commander@>=2.5.0 <2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" - }, - "graceful-fs": { - "version": "3.0.8", - "from": "graceful-fs@>=3.0.4 <3.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "glob": { - "version": "4.2.2", - "from": "glob@>=4.2.1 <4.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", - "dependencies": { - "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": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "minimatch": { - "version": "1.0.0", - "from": "minimatch@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", - "dependencies": { - "lru-cache": { - "version": "2.6.5", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.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", - "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" - } - } - } - } - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "install": { - "version": "0.1.8", - "from": "install@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" - }, - "iconv-lite": { - "version": "0.4.11", - "from": "iconv-lite@>=0.4.5 <0.5.0", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" - } - } - }, - "defs": { - "version": "1.1.0", - "from": "defs@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", - "dependencies": { - "alter": { - "version": "0.2.0", - "from": "alter@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", - "dependencies": { - "stable": { - "version": "0.1.5", - "from": "stable@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" - } - } - }, - "ast-traverse": { - "version": "0.1.1", - "from": "ast-traverse@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" - }, - "breakable": { - "version": "1.0.0", - "from": "breakable@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" - }, - "esprima-fb": { - "version": "8001.1001.0-dev-harmony-fb", - "from": "esprima-fb@>=8001.1001.0-dev-harmony-fb <8001.1002.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz" - }, - "simple-fmt": { - "version": "0.1.0", - "from": "simple-fmt@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" - }, - "simple-is": { - "version": "0.2.0", - "from": "simple-is@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" - }, - "stringmap": { - "version": "0.2.2", - "from": "stringmap@>=0.2.2 <0.3.0", - "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" - }, - "stringset": { - "version": "0.2.1", - "from": "stringset@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz" - }, - "tryor": { - "version": "0.1.2", - "from": "tryor@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" - }, - "yargs": { - "version": "1.3.3", - "from": "yargs@>=1.3.2 <1.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" - } - } - }, - "esprima-fb": { - "version": "15001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" - }, - "recast": { - "version": "0.10.24", - "from": "recast@0.10.24", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", - "dependencies": { - "ast-types": { - "version": "0.8.5", - "from": "ast-types@0.8.5", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" - } - } - }, - "through": { - "version": "2.3.8", - "from": "through@>=2.3.6 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "regexpu": { - "version": "1.2.0", - "from": "regexpu@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", - "dependencies": { - "recast": { - "version": "0.10.32", - "from": "recast@>=0.10.6 <0.11.0", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", - "dependencies": { - "ast-types": { - "version": "0.8.11", - "from": "ast-types@0.8.11", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz" - } - } - }, - "regenerate": { - "version": "1.2.1", - "from": "regenerate@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" - }, - "regjsgen": { - "version": "0.2.0", - "from": "regjsgen@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" - }, - "regjsparser": { - "version": "0.1.5", - "from": "regjsparser@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "dependencies": { - "jsesc": { - "version": "0.5.0", - "from": "jsesc@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - } - } - } - } - }, - "repeating": { - "version": "1.1.3", - "from": "repeating@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } - }, - "resolve": { - "version": "1.1.6", - "from": "resolve@>=1.1.6 <2.0.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" - }, - "shebang-regex": { - "version": "1.0.0", - "from": "shebang-regex@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - }, - "slash": { - "version": "1.0.0", - "from": "slash@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - }, - "source-map": { - "version": "0.4.4", - "from": "source-map@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "source-map-support": { - "version": "0.2.10", - "from": "source-map-support@>=0.2.10 <0.3.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "dependencies": { - "source-map": { - "version": "0.1.32", - "from": "source-map@0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - }, - "to-fast-properties": { - "version": "1.0.1", - "from": "to-fast-properties@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" - }, - "trim-right": { - "version": "1.0.1", - "from": "trim-right@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - }, - "try-resolve": { - "version": "1.0.1", - "from": "try-resolve@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" - } - } - }, - "babel-loader": { - "version": "5.3.2", - "from": "babel-loader@>=5.3.2 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", - "dependencies": { - "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" - } - } - }, - "body-parser": { - "version": "1.13.3", - "from": "body-parser@>=1.13.3 <2.0.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", - "dependencies": { - "bytes": { - "version": "2.1.0", - "from": "bytes@2.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" - }, - "content-type": { - "version": "1.0.1", - "from": "content-type@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.0.1", - "from": "depd@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "http-errors@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "statuses@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - } - } - }, - "iconv-lite": { - "version": "0.4.11", - "from": "iconv-lite@0.4.11", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" - }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "ee-first@1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } - }, - "qs": { - "version": "4.0.0", - "from": "qs@4.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" - }, - "raw-body": { - "version": "2.1.2", - "from": "raw-body@>=2.1.2 <2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "unpipe@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } - }, - "type-is": { - "version": "1.6.8", - "from": "type-is@>=1.6.6 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "media-typer@0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.6", - "from": "mime-types@>=2.1.4 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", - "dependencies": { - "mime-db": { - "version": "1.18.0", - "from": "mime-db@>=1.18.0 <1.19.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz" - } - } - } - } - } - } - }, - "es5-shim": { - "version": "4.1.11", - "from": "es5-shim@>=4.1.10 <5.0.0", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.11.tgz" - }, - "es6-promise": { - "version": "2.3.0", - "from": "es6-promise@>=2.3.0 <3.0.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz" - }, - "immutable": { - "version": "3.7.5", - "from": "immutable@>=3.7.4 <4.0.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz" - }, - "imports-loader": { - "version": "0.6.4", - "from": "imports-loader@>=0.6.4 <0.7.0", - "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", - "dependencies": { - "source-map": { - "version": "0.1.43", - "from": "source-map@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - }, - "jquery": { - "version": "2.1.4", - "from": "jquery@>=2.1.4 <3.0.0", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" - }, - "loader-utils": { - "version": "0.2.11", - "from": "loader-utils@>=0.2.11 <0.3.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", - "dependencies": { - "big.js": { - "version": "3.1.3", - "from": "big.js@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" - }, - "json5": { - "version": "0.4.0", - "from": "json5@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" - } - } - }, - "marked": { - "version": "0.3.5", - "from": "marked@>=0.3.5 <0.4.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" - }, - "react": { - "version": "0.13.3", - "from": "react@>=0.13.3 <0.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", - "dependencies": { - "envify": { - "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "base62@0.1.1", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "source-map@0.1.31", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - } - } - } - } - }, - "react-bootstrap": { - "version": "0.24.5", - "from": "react-bootstrap@>=0.24.3 <0.25.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.24.5.tgz", - "dependencies": { - "babel-runtime": { - "version": "5.8.20", - "from": "babel-runtime@>=5.8.19 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.20.tgz", - "dependencies": { - "core-js": { - "version": "1.1.3", - "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.3.tgz" - } - } - }, - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.10.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "classnames": { - "version": "2.1.3", - "from": "classnames@>=2.1.3 <3.0.0", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz" - } - } - }, - "react-redux": { - "version": "0.2.2", - "from": "react-redux@>=0.2.2 <0.3.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-0.2.2.tgz", - "dependencies": { - "invariant": { - "version": "2.1.0", - "from": "invariant@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", - "dependencies": { - "envify": { - "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "base62@0.1.1", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "source-map@0.1.31", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - } - } - } - } - } - } - }, - "redux": { - "version": "1.0.1", - "from": "redux@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-1.0.1.tgz" - }, - "redux-promise": { - "version": "0.5.0", - "from": "redux-promise@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", - "dependencies": { - "flux-standard-action": { - "version": "0.6.0", - "from": "flux-standard-action@0.6.0", - "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", - "dependencies": { - "lodash.isplainobject": { - "version": "3.2.0", - "from": "lodash.isplainobject@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", - "dependencies": { - "lodash._basefor": { - "version": "3.0.2", - "from": "lodash._basefor@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz" - }, - "lodash.isarguments": { - "version": "3.0.4", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" - }, - "lodash.keysin": { - "version": "3.0.8", - "from": "lodash.keysin@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", - "dependencies": { - "lodash.isarray": { - "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - } - } - } - } - } - } - } - } - }, - "redux-thunk": { - "version": "0.1.0", - "from": "redux-thunk@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.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", - "dependencies": { - "nan": { - "version": "2.0.8", - "from": "nan@>=2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz" - } - } - }, - "webpack": { - "version": "1.12.1", - "from": "webpack@>=1.10.5 <2.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.1.tgz", - "dependencies": { - "async": { - "version": "1.4.2", - "from": "async@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" - }, - "clone": { - "version": "1.0.2", - "from": "clone@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "enhanced-resolve": { - "version": "0.9.0", - "from": "enhanced-resolve@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.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" - } - } - }, - "esprima": { - "version": "2.6.0", - "from": "esprima@>=2.5.0 <3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" - }, - "interpret": { - "version": "0.6.5", - "from": "interpret@>=0.6.4 <0.7.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz" - }, - "memory-fs": { - "version": "0.2.0", - "from": "memory-fs@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "node-libs-browser": { - "version": "0.5.2", - "from": "node-libs-browser@>=0.4.0 <=0.6.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.2.tgz", - "dependencies": { - "assert": { - "version": "1.3.0", - "from": "assert@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "browserify-zlib@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "dependencies": { - "pako": { - "version": "0.2.7", - "from": "pako@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.7.tgz" - } - } - }, - "buffer": { - "version": "3.4.3", - "from": "buffer@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.4.3.tgz", - "dependencies": { - "base64-js": { - "version": "0.0.8", - "from": "base64-js@0.0.8", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" - }, - "ieee754": { - "version": "1.1.6", - "from": "ieee754@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.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" - } - } - }, - "console-browserify": { - "version": "1.1.0", - "from": "console-browserify@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "from": "date-now@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "constants-browserify": { - "version": "0.0.1", - "from": "constants-browserify@0.0.1", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" - }, - "crypto-browserify": { - "version": "3.2.8", - "from": "crypto-browserify@>=3.2.6 <3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "dependencies": { - "pbkdf2-compat": { - "version": "2.0.1", - "from": "pbkdf2-compat@2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" - }, - "ripemd160": { - "version": "0.2.0", - "from": "ripemd160@0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" - }, - "sha.js": { - "version": "2.2.6", - "from": "sha.js@2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" - } - } - }, - "domain-browser": { - "version": "1.1.4", - "from": "domain-browser@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" - }, - "events": { - "version": "1.0.2", - "from": "events@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" - }, - "http-browserify": { - "version": "1.7.0", - "from": "http-browserify@>=1.3.2 <2.0.0", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "dependencies": { - "Base64": { - "version": "0.2.1", - "from": "Base64@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "https-browserify": { - "version": "0.0.0", - "from": "https-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" - }, - "os-browserify": { - "version": "0.1.2", - "from": "os-browserify@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" - }, - "path-browserify": { - "version": "0.0.0", - "from": "path-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" - }, - "process": { - "version": "0.11.1", - "from": "process@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.1.tgz" - }, - "punycode": { - "version": "1.3.2", - "from": "punycode@>=1.2.4 <2.0.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - }, - "querystring-es3": { - "version": "0.2.1", - "from": "querystring-es3@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - }, - "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", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "stream-browserify": { - "version": "1.0.0", - "from": "stream-browserify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.25 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "timers-browserify": { - "version": "1.4.1", - "from": "timers-browserify@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" - }, - "tty-browserify": { - "version": "0.0.0", - "from": "tty-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.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", - "dependencies": { - "querystring": { - "version": "0.2.0", - "from": "querystring@0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "util@>=0.10.3 <0.11.0", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "from": "vm-browserify@0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "dependencies": { - "indexof": { - "version": "0.0.1", - "from": "indexof@0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } - } - } - }, - "optimist": { - "version": "0.6.1", - "from": "optimist@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "wordwrap@>=0.0.2 <0.1.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "minimist@>=0.0.1 <0.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } - }, - "supports-color": { - "version": "3.1.1", - "from": "supports-color@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", - "dependencies": { - "has-flag": { - "version": "1.0.0", - "from": "has-flag@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - } - } - }, - "tapable": { - "version": "0.1.9", - "from": "tapable@>=0.1.8 <0.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" - }, - "uglify-js": { - "version": "2.4.24", - "from": "uglify-js@>=2.4.24 <2.5.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "source-map@0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "uglify-to-browserify@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "yargs@>=3.5.4 <3.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.0.0", - "from": "decamelize@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.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" - } - } - } - } - }, - "watchpack": { - "version": "0.2.8", - "from": "watchpack@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "chokidar": { - "version": "1.0.5", - "from": "chokidar@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "from": "anymatch@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "dependencies": { - "micromatch": { - "version": "2.2.0", - "from": "micromatch@>=2.1.5 <3.0.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "from": "arr-diff@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "dependencies": { - "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-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-unique": { - "version": "0.2.1", - "from": "array-unique@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "braces": { - "version": "1.8.1", - "from": "braces@>=1.8.0 <2.0.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", - "dependencies": { - "expand-range": { - "version": "1.8.1", - "from": "expand-range@>=1.8.1 <2.0.0", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", - "dependencies": { - "fill-range": { - "version": "2.2.2", - "from": "fill-range@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", - "dependencies": { - "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" - }, - "isobject": { - "version": "1.0.2", - "from": "isobject@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" - }, - "randomatic": { - "version": "1.1.0", - "from": "randomatic@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" - }, - "repeat-string": { - "version": "1.5.2", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" - } - } - } - } - }, - "lazy-cache": { - "version": "0.2.3", - "from": "lazy-cache@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" - }, - "preserve": { - "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "repeat-element@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - } - } - }, - "expand-brackets": { - "version": "0.1.4", - "from": "expand-brackets@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" - }, - "extglob": { - "version": "0.3.1", - "from": "extglob@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", - "dependencies": { - "ansi-green": { - "version": "0.1.1", - "from": "ansi-green@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "dependencies": { - "ansi-wrap": { - "version": "0.1.0", - "from": "ansi-wrap@0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" - } - } - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "success-symbol": { - "version": "0.1.0", - "from": "success-symbol@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" - } - } - }, - "filename-regex": { - "version": "2.0.0", - "from": "filename-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" - }, - "kind-of": { - "version": "1.1.0", - "from": "kind-of@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" - }, - "object.omit": { - "version": "1.1.0", - "from": "object.omit@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", - "dependencies": { - "for-own": { - "version": "0.1.3", - "from": "for-own@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", - "dependencies": { - "for-in": { - "version": "0.1.4", - "from": "for-in@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.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" - } - } - }, - "parse-glob": { - "version": "3.0.2", - "from": "parse-glob@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", - "dependencies": { - "glob-base": { - "version": "0.2.0", - "from": "glob-base@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" - }, - "is-dotfile": { - "version": "1.0.1", - "from": "is-dotfile@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - } - } - }, - "regex-cache": { - "version": "0.4.2", - "from": "regex-cache@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3", - "from": "is-equal-shallow@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "is-primitive@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - } - } - } - } - } - } - }, - "arrify": { - "version": "1.0.0", - "from": "arrify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" - }, - "async-each": { - "version": "0.1.6", - "from": "async-each@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" - }, - "glob-parent": { - "version": "1.2.0", - "from": "glob-parent@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz" - }, - "is-binary-path": { - "version": "1.0.1", - "from": "is-binary-path@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "dependencies": { - "binary-extensions": { - "version": "1.3.1", - "from": "binary-extensions@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" - } - } - }, - "is-glob": { - "version": "1.1.3", - "from": "is-glob@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.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" - }, - "readdirp": { - "version": "1.4.0", - "from": "readdirp@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.2", - "from": "graceful-fs@>=4.1.2 <4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" - }, - "minimatch": { - "version": "0.2.14", - "from": "minimatch@>=0.2.12 <0.3.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.6.5", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@>=1.0.26-2 <1.1.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "fsevents": { - "version": "0.3.8", - "from": "fsevents@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", - "dependencies": { - "nan": { - "version": "2.0.8", - "from": "nan@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz" - } - } - } - } - }, - "graceful-fs": { - "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - } - } - }, - "webpack-core": { - "version": "0.6.6", - "from": "webpack-core@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.6.tgz", - "dependencies": { - "source-map": { - "version": "0.4.4", - "from": "source-map@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "source-list-map": { - "version": "0.1.5", - "from": "source-list-map@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" - } - } - } - } - } - } -} From 9c01fdd2318f984357534d4e418840542764f7e6 Mon Sep 17 00:00:00 2001 From: Scott Bronson Date: Fri, 4 Sep 2015 21:22:44 -0700 Subject: [PATCH 036/548] Make localhost links in README clickable --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2f803a6f9..65971ef80 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,8 @@ See package.json and Gemfile for versions 1. `npm install` 1. `rake db:setup` 1. `foreman start -f Procfile.dev` -1. Open a browser tab to [http://0.0.0.0:4000]() for the Rail app example. -1. Open a browser tab to [http://0.0.0.0:3000]() for the Hot Module Replacement Example. +1. Open a browser tab to http://0.0.0.0:4000 for the Rail app example. +1. Open a browser tab to http://0.0.0.0:3000 for the Hot Module Replacement Example. # Javascript development without Rails using Hot Module Replacement (HMR) @@ -79,7 +79,7 @@ cd client node server.js ``` -Point your browser to [http://0.0.0.0:3000](). +Point your browser to http://0.0.0.0:3000. Save a change to a JSX file and see it update immediately in the browser! Note, any browser state still exists, such as what you've typed in the comments box. @@ -116,7 +116,7 @@ rake db:setup rails s -p 4000 ``` -Now point your browser to [http://0.0.0.0:4000](). +Now point your browser to http://0.0.0.0:4000. Note that it's important to run the Rails server on a different port than the node server. From 72a424bc52fdcf8cec6040c41e2d4e3988d18011 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Fri, 4 Sep 2015 21:46:30 -1000 Subject: [PATCH 037/548] Revert "Use fetch instead of $.ajax" --- client/.jscsrc | 3 +- .../actions/CommentActionCreators.js | 12 +++--- .../javascripts/utils/CommentsManager.js | 42 +++++++------------ client/package.json | 3 +- client/webpack.common.config.js | 2 +- 5 files changed, 24 insertions(+), 38 deletions(-) diff --git a/client/.jscsrc b/client/.jscsrc index bb03b57cf..0be7eea16 100644 --- a/client/.jscsrc +++ b/client/.jscsrc @@ -1,6 +1,5 @@ { "preset": "airbnb", "fileExtensions": [".js", ".jsx"], - "excludeFiles": ["build/**", "node_modules/**"], - "disallowQuotedKeysInObjects": false + "excludeFiles": ["build/**", "node_modules/**"] } diff --git a/client/assets/javascripts/actions/CommentActionCreators.js b/client/assets/javascripts/actions/CommentActionCreators.js index 9b9b7108a..4b4c38e15 100644 --- a/client/assets/javascripts/actions/CommentActionCreators.js +++ b/client/assets/javascripts/actions/CommentActionCreators.js @@ -43,9 +43,10 @@ export function submitCommentFailure(error) { export function fetchComments() { return dispatch => { - return CommentsManager.fetchComments() - .then(comments => dispatch(fetchCommentsSuccess(comments))) - .catch(error => dispatch(fetchCommentsFailure(error))); + return CommentsManager.fetchComments().then( + comments => dispatch(fetchCommentsSuccess(comments)), + error => dispatch(fetchCommentsFailure(error)) + ); }; } @@ -57,8 +58,9 @@ export function submitComment(comment) { return dispatch => { dispatch(incrementAjaxCounter()); return CommentsManager.submitComment(comment) - .then(commentFromServer => dispatch(submitCommentSuccess(commentFromServer))) - .catch(error => dispatch(submitCommentFailure(error))) + .then( + _comment => dispatch(submitCommentSuccess(_comment)), + error => dispatch(submitCommentFailure(error))) .then(() => dispatchDecrementAjaxCounter(dispatch)); }; } diff --git a/client/assets/javascripts/utils/CommentsManager.js b/client/assets/javascripts/utils/CommentsManager.js index c8500c638..4348018cb 100644 --- a/client/assets/javascripts/utils/CommentsManager.js +++ b/client/assets/javascripts/utils/CommentsManager.js @@ -1,48 +1,34 @@ -const API_URL = 'comments.json'; - -// fetch won't reject on HTTP error status -// https://github.com/github/fetch#handling-http-error-statuses -function checkStatus(response) { - if (response.status >= 200 && response.status < 300) { - return response; - } - - const error = new Error(response.statusText); - error.response = response; - throw error; -} +import $ from 'jquery'; -function parseJSON(response) { - return response.json(); -} +const API_URL = 'comments.json'; const CommentsManager = { /** * Retrieve comments from server using AJAX call. * - * @returns {Promise} - response of fetch request. + * @returns {Promise} - jqXHR result of ajax call. */ fetchComments() { - return fetch(API_URL).then(checkStatus).then(parseJSON); + return Promise.resolve($.ajax({ + url: API_URL, + dataType: 'json', + })); }, /** * Submit new comment to server using AJAX call. * * @param {Object} comment - Comment body to post. - * @returns {Promise} - response of fetch request. + * @returns {Promise} - jqXHR result of ajax call. */ - submitComment(comment) { - return fetch(API_URL, { - method: 'post', - headers: { - 'Accept': 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify({comment}), - }).then(checkStatus).then(parseJSON); + return Promise.resolve($.ajax({ + url: API_URL, + dataType: 'json', + type: 'POST', + data: {comment: comment}, + })); }, }; diff --git a/client/package.json b/client/package.json index d8d2d30f9..1682a21b1 100644 --- a/client/package.json +++ b/client/package.json @@ -40,8 +40,7 @@ "redux-promise": "^0.5.0", "redux-thunk": "^0.1.0", "sleep": "^3.0.0", - "webpack": "^1.10.5", - "whatwg-fetch": "^0.9.0" + "webpack": "^1.10.5" }, "devDependencies": { "babel-eslint": "^4.0.5", diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 91370cb6b..50471f39c 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -6,7 +6,7 @@ module.exports = { // the project dir context: __dirname, - entry: ['whatwg-fetch', './assets/javascripts/App'], + entry: ['./assets/javascripts/App'], // In case you wanted to load jQuery from the CDN, this is how you would do it: // externals: { From b2c683358199565d8eb298b221fb92bc99c29561 Mon Sep 17 00:00:00 2001 From: Mario Perez Date: Mon, 7 Sep 2015 10:57:34 +0200 Subject: [PATCH 038/548] Using react_on_rails gem for rendering components on the client - Paired with @samnang --- Gemfile | 2 ++ Gemfile.lock | 4 ++++ app/views/pages/index.html.erb | 7 +++---- client/assets/javascripts/App.jsx | 28 ++++++++-------------------- client/webpack.rails.config.js | 5 ++++- 5 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Gemfile b/Gemfile index 0214ea054..500e7a905 100644 --- a/Gemfile +++ b/Gemfile @@ -37,6 +37,8 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" +gem "react_on_rails", "~> 0.1.1" + gem "autoprefixer-rails" # Use Capistrano for deployment diff --git a/Gemfile.lock b/Gemfile.lock index b72e54789..a991b50c5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -172,6 +172,9 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) + react_on_rails (0.1.1) + execjs (~> 2.5) + rails (~> 4.2) rspec-core (3.3.2) rspec-support (~> 3.3.0) rspec-expectations (3.3.1) @@ -281,6 +284,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow + react_on_rails (~> 0.1.1) rspec-rails rubocop ruby-lint diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 23ac242a8..dc94cc278 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -16,7 +16,6 @@
    -
    - - - +
    + <%= react_component('App') %> +
    diff --git a/client/assets/javascripts/App.jsx b/client/assets/javascripts/App.jsx index 6ba820153..131fbb0b7 100755 --- a/client/assets/javascripts/App.jsx +++ b/client/assets/javascripts/App.jsx @@ -1,26 +1,14 @@ -import $ from 'jquery'; - import React from 'react'; import { Provider } from 'react-redux'; import CommentScreen from './components/CommentScreen'; import CommentStore from './stores/CommentStore'; -$(function onLoad() { - function render() { - if ($('#content').length > 0) { - React.render(( - - { () => } - - ), document.getElementById('content')); - } - } - - render(); - - // Next part is to make this work with turbo-links - $(document).on('page:change', () => { - render(); - }); -}); +window.App = () => { + const reactComponent = ( + + {() => } + + ); + return reactComponent; +}; diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index 943ebd273..62ebe3c4f 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -25,7 +25,10 @@ config.module.loaders.push( // Next 2 lines expose jQuery and $ to any JavaScript files loaded after client-bundle.js // in the Rails Asset Pipeline. Thus, load this one prior. {test: require.resolve('jquery'), loader: 'expose?jQuery'}, - {test: require.resolve('jquery'), loader: 'expose?$'} + {test: require.resolve('jquery'), loader: 'expose?$'}, + + // React is necessary for the client rendering: + {test: require.resolve('react'), loader: 'expose?React'} ); module.exports = config; From be97718499d94b8be319b9d71ebca93dfd866028 Mon Sep 17 00:00:00 2001 From: Kent William Innholt Date: Mon, 7 Sep 2015 18:00:16 -0700 Subject: [PATCH 039/548] Added hint to check that Postgres is installed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The error shown if Postgres is missing is confusing—for me it was along the lines of ```Installing pg 0.18.2 with native extensions Gem::Ext::BuildError: ERROR: Failed to build gem native extension. /Users/user/.rbenv/versions/2.2.2/bin/ruby -r ./siteconf20150907-78059-f9x8cq.rb extconf.rb checking for pg_config... no No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config checking for libpq-fe.h... no Can't find the 'libpq-fe.h header *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. ``` To save the next person some time, I suggest we add the "check" to the docs. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 65971ef80..83b33322b 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,7 @@ See package.json and Gemfile for versions 1. `cd react-webpack-rails-tutorial` 1. Check that you have Ruby 2.2.2 1. Check that you're using the right version of node. Run `nvm list` to check. +1. Check that you have Postgres installed. Run `which postgres` to check. 1. `bundle install` 1. `npm install` 1. `rake db:setup` From 7d431a5b7d48e88dde366a9700954a0388de2d23 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 7 Sep 2015 22:31:42 -1000 Subject: [PATCH 040/548] Make hot-reload server work w/ react_on_rails gem * Need to export App from App.jsx * Removed specifying stage for babel in the loader. * Move exposing React to webpack.common.config.js for page rendering. --- app/views/pages/index.html.erb | 4 +--- client/assets/javascripts/App.jsx | 7 ++++++- client/index.html | 3 +++ client/webpack.common.config.js | 5 ++++- client/webpack.hot.config.js | 2 +- client/webpack.rails.config.js | 7 ++----- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index dc94cc278..8bd226cdc 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -16,6 +16,4 @@
    -
    - <%= react_component('App') %> -
    +<%= react_component('App', {}, prerender: false) %> diff --git a/client/assets/javascripts/App.jsx b/client/assets/javascripts/App.jsx index 131fbb0b7..15dadab08 100755 --- a/client/assets/javascripts/App.jsx +++ b/client/assets/javascripts/App.jsx @@ -4,7 +4,7 @@ import { Provider } from 'react-redux'; import CommentScreen from './components/CommentScreen'; import CommentStore from './stores/CommentStore'; -window.App = () => { +const App = () => { const reactComponent = ( {() => } @@ -12,3 +12,8 @@ window.App = () => { ); return reactComponent; }; + +window.App = App; + +// Export is needed for the hot reload server +export default App; diff --git a/client/index.html b/client/index.html index 71fbb1f9f..c1906cd7e 100755 --- a/client/index.html +++ b/client/index.html @@ -6,5 +6,8 @@
    + diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 50471f39c..a99a79e99 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -20,6 +20,9 @@ module.exports = { extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'], }, module: { - loaders: [], + loaders: [ + // React is necessary for the client rendering: + {test: require.resolve('react'), loader: 'expose?React'} + ], }, }; diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index 71c103318..919c047ad 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -27,7 +27,7 @@ config.resolve.root.push(path.join(__dirname, 'assets/stylesheets')); // All the styling loaders only apply to hot-reload, not rails config.module.loaders.push( - {test: /\.jsx?$/, loaders: ['react-hot', 'babel?stage=0'], exclude: /node_modules/}, + {test: /\.jsx?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/}, {test: /\.css$/, loader: 'style-loader!css-loader'}, { test: /\.scss$/, diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index 62ebe3c4f..512bab13e 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -20,15 +20,12 @@ config.entry.push('./scripts/rails_only'); // See webpack.common.config for adding modules common to both the webpack dev server and rails config.module.loaders.push( - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader?stage=0'}, + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'}, // Next 2 lines expose jQuery and $ to any JavaScript files loaded after client-bundle.js // in the Rails Asset Pipeline. Thus, load this one prior. {test: require.resolve('jquery'), loader: 'expose?jQuery'}, - {test: require.resolve('jquery'), loader: 'expose?$'}, - - // React is necessary for the client rendering: - {test: require.resolve('react'), loader: 'expose?React'} + {test: require.resolve('jquery'), loader: 'expose?$'} ); module.exports = config; From 6776f30009fd5ed2a057495e1f8d6de81a9ba63c Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 7 Sep 2015 23:41:08 -1000 Subject: [PATCH 041/548] fix js linter issue --- client/webpack.common.config.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index a99a79e99..6a99a7f39 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -21,8 +21,9 @@ module.exports = { }, module: { loaders: [ + // React is necessary for the client rendering: - {test: require.resolve('react'), loader: 'expose?React'} + {test: require.resolve('react'), loader: 'expose?React'}, ], }, }; From 11111f90bbb39dedc9a632dc56bcda2b052a1a3e Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 7 Sep 2015 23:58:49 -1000 Subject: [PATCH 042/548] Updated README.me --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 83b33322b..d8553561d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack +# React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack and the react_on_rails gem ## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! From 4e01dfdbcfbba7cbf121e8cad2194da273019f9a Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 8 Sep 2015 00:06:44 -1000 Subject: [PATCH 043/548] update dependencies --- client/npm-shrinkwrap.json | 1871 ++++++++++++++++++++++++++++++++++++ client/package.json | 38 +- 2 files changed, 1890 insertions(+), 19 deletions(-) create mode 100644 client/npm-shrinkwrap.json diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json new file mode 100644 index 000000000..7b3e9d208 --- /dev/null +++ b/client/npm-shrinkwrap.json @@ -0,0 +1,1871 @@ +{ + "name": "react-webpack-rails-tutorial", + "version": "1.1.0", + "dependencies": { + "babel-core": { + "version": "5.8.23", + "from": "babel-core@>=5.8.23 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.23.tgz", + "dependencies": { + "babel-plugin-constant-folding": { + "version": "1.0.1", + "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" + }, + "babel-plugin-eval": { + "version": "1.0.1", + "from": "babel-plugin-eval@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" + }, + "babel-plugin-property-literals": { + "version": "1.0.1", + "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" + }, + "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" + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "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-undeclared-variables-check": { + "version": "1.0.2", + "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", + "dependencies": { + "leven": { + "version": "1.0.2", + "from": "leven@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" + } + } + }, + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "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" + }, + "babylon": { + "version": "5.8.23", + "from": "babylon@>=5.8.23 <6.0.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" + }, + "bluebird": { + "version": "2.9.34", + "from": "bluebird@>=2.9.33 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "convert-source-map": { + "version": "1.1.1", + "from": "convert-source-map@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" + }, + "core-js": { + "version": "1.1.4", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "detect-indent": { + "version": "3.0.1", + "from": "detect-indent@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "dependencies": { + "get-stdin": { + "version": "4.0.1", + "from": "get-stdin@>=4.0.1 <5.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + }, + "minimist": { + "version": "1.2.0", + "from": "minimist@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + } + } + }, + "esutils": { + "version": "2.0.2", + "from": "esutils@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + }, + "fs-readdir-recursive": { + "version": "0.1.2", + "from": "fs-readdir-recursive@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" + }, + "globals": { + "version": "6.4.1", + "from": "globals@>=6.4.0 <7.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz" + }, + "home-or-tmp": { + "version": "1.0.0", + "from": "home-or-tmp@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", + "dependencies": { + "os-tmpdir": { + "version": "1.0.1", + "from": "os-tmpdir@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + }, + "user-home": { + "version": "1.1.1", + "from": "user-home@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + } + } + }, + "is-integer": { + "version": "1.0.6", + "from": "is-integer@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", + "dependencies": { + "is-finite": { + "version": "1.0.1", + "from": "is-finite@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "number-is-nan@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.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" + }, + "json5": { + "version": "0.4.0", + "from": "json5@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + }, + "line-numbers": { + "version": "0.2.0", + "from": "line-numbers@0.2.0", + "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", + "dependencies": { + "left-pad": { + "version": "0.0.3", + "from": "left-pad@0.0.3", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" + } + } + }, + "lodash": { + "version": "3.10.1", + "from": "lodash@>=3.10.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "minimatch": { + "version": "2.0.10", + "from": "minimatch@>=2.0.3 <3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "brace-expansion@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "balanced-match@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" + } + } + } + } + }, + "output-file-sync": { + "version": "1.1.1", + "from": "output-file-sync@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", + "dependencies": { + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "xtend": { + "version": "4.0.0", + "from": "xtend@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" + } + } + }, + "path-exists": { + "version": "1.0.0", + "from": "path-exists@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.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" + }, + "private": { + "version": "0.1.6", + "from": "private@>=0.1.6 <0.2.0", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" + }, + "regenerator": { + "version": "0.8.35", + "from": "regenerator@0.8.35", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", + "dependencies": { + "commoner": { + "version": "0.10.3", + "from": "commoner@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", + "dependencies": { + "q": { + "version": "1.1.2", + "from": "q@>=1.1.2 <1.2.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" + }, + "commander": { + "version": "2.5.1", + "from": "commander@>=2.5.0 <2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" + }, + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.4 <3.1.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + }, + "glob": { + "version": "4.2.2", + "from": "glob@>=4.2.1 <4.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", + "dependencies": { + "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": { + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "1.0.0", + "from": "minimatch@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", + "dependencies": { + "lru-cache": { + "version": "2.6.5", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.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", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "install": { + "version": "0.1.8", + "from": "install@>=0.1.7 <0.2.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" + }, + "iconv-lite": { + "version": "0.4.11", + "from": "iconv-lite@>=0.4.5 <0.5.0", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" + } + } + }, + "defs": { + "version": "1.1.0", + "from": "defs@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", + "dependencies": { + "alter": { + "version": "0.2.0", + "from": "alter@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "dependencies": { + "stable": { + "version": "0.1.5", + "from": "stable@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" + } + } + }, + "ast-traverse": { + "version": "0.1.1", + "from": "ast-traverse@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" + }, + "breakable": { + "version": "1.0.0", + "from": "breakable@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" + }, + "esprima-fb": { + "version": "8001.1001.0-dev-harmony-fb", + "from": "esprima-fb@>=8001.1001.0-dev-harmony-fb <8001.1002.0", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz" + }, + "simple-fmt": { + "version": "0.1.0", + "from": "simple-fmt@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" + }, + "simple-is": { + "version": "0.2.0", + "from": "simple-is@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" + }, + "stringmap": { + "version": "0.2.2", + "from": "stringmap@>=0.2.2 <0.3.0", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" + }, + "stringset": { + "version": "0.2.1", + "from": "stringset@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz" + }, + "tryor": { + "version": "0.1.2", + "from": "tryor@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" + }, + "yargs": { + "version": "1.3.3", + "from": "yargs@>=1.3.2 <1.4.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" + } + } + }, + "esprima-fb": { + "version": "15001.1.0-dev-harmony-fb", + "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" + }, + "recast": { + "version": "0.10.24", + "from": "recast@0.10.24", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", + "dependencies": { + "ast-types": { + "version": "0.8.5", + "from": "ast-types@0.8.5", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" + } + } + }, + "through": { + "version": "2.3.8", + "from": "through@>=2.3.6 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } + } + }, + "regexpu": { + "version": "1.2.0", + "from": "regexpu@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", + "dependencies": { + "recast": { + "version": "0.10.32", + "from": "recast@>=0.10.6 <0.11.0", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", + "dependencies": { + "ast-types": { + "version": "0.8.11", + "from": "ast-types@0.8.11", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz" + } + } + }, + "regenerate": { + "version": "1.2.1", + "from": "regenerate@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" + }, + "regjsgen": { + "version": "0.2.0", + "from": "regjsgen@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + }, + "regjsparser": { + "version": "0.1.5", + "from": "regjsparser@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "dependencies": { + "jsesc": { + "version": "0.5.0", + "from": "jsesc@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + } + } + } + } + }, + "repeating": { + "version": "1.1.3", + "from": "repeating@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "dependencies": { + "is-finite": { + "version": "1.0.1", + "from": "is-finite@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "dependencies": { + "number-is-nan": { + "version": "1.0.0", + "from": "number-is-nan@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + } + } + } + } + }, + "resolve": { + "version": "1.1.6", + "from": "resolve@>=1.1.6 <2.0.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" + }, + "shebang-regex": { + "version": "1.0.0", + "from": "shebang-regex@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + }, + "slash": { + "version": "1.0.0", + "from": "slash@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + }, + "source-map": { + "version": "0.4.4", + "from": "source-map@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "source-map-support": { + "version": "0.2.10", + "from": "source-map-support@>=0.2.10 <0.3.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "dependencies": { + "source-map": { + "version": "0.1.32", + "from": "source-map@0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + } + } + }, + "to-fast-properties": { + "version": "1.0.1", + "from": "to-fast-properties@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" + }, + "trim-right": { + "version": "1.0.1", + "from": "trim-right@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + }, + "try-resolve": { + "version": "1.0.1", + "from": "try-resolve@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" + } + } + }, + "babel-loader": { + "version": "5.3.2", + "from": "babel-loader@>=5.3.2 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", + "dependencies": { + "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" + } + } + }, + "body-parser": { + "version": "1.13.3", + "from": "body-parser@>=1.13.3 <2.0.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "dependencies": { + "bytes": { + "version": "2.1.0", + "from": "bytes@2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" + }, + "content-type": { + "version": "1.0.1", + "from": "content-type@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "depd": { + "version": "1.0.1", + "from": "depd@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "http-errors@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "statuses@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + } + } + }, + "iconv-lite": { + "version": "0.4.11", + "from": "iconv-lite@0.4.11", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dependencies": { + "ee-first": { + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + } + }, + "qs": { + "version": "4.0.0", + "from": "qs@4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" + }, + "raw-body": { + "version": "2.1.2", + "from": "raw-body@>=2.1.2 <2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz", + "dependencies": { + "unpipe": { + "version": "1.0.0", + "from": "unpipe@1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + } + } + }, + "type-is": { + "version": "1.6.6", + "from": "type-is@>=1.6.6 <1.7.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", + "dependencies": { + "media-typer": { + "version": "0.3.0", + "from": "media-typer@0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "mime-types": { + "version": "2.1.4", + "from": "mime-types@>=2.1.4 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "dependencies": { + "mime-db": { + "version": "1.16.0", + "from": "mime-db@>=1.16.0 <1.17.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + } + } + } + } + } + } + }, + "es5-shim": { + "version": "4.1.12", + "from": "es5-shim@>=4.1.12 <5.0.0", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.12.tgz" + }, + "es6-promise": { + "version": "3.0.2", + "from": "es6-promise@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" + }, + "immutable": { + "version": "3.7.5", + "from": "immutable@>=3.7.5 <4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz" + }, + "imports-loader": { + "version": "0.6.4", + "from": "imports-loader@>=0.6.4 <0.7.0", + "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", + "dependencies": { + "source-map": { + "version": "0.1.43", + "from": "source-map@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + } + } + }, + "jquery": { + "version": "2.1.4", + "from": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" + }, + "loader-utils": { + "version": "0.2.11", + "from": "loader-utils@>=0.2.11 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", + "dependencies": { + "big.js": { + "version": "3.1.3", + "from": "big.js@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" + }, + "json5": { + "version": "0.4.0", + "from": "json5@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + } + } + }, + "marked": { + "version": "0.3.5", + "from": "marked@>=0.3.5 <0.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" + }, + "node-libs-browser": { + "version": "0.5.0", + "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", + "dependencies": { + "assert": { + "version": "1.3.0", + "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" + }, + "browserify-zlib": { + "version": "0.1.4", + "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "dependencies": { + "pako": { + "version": "0.2.6", + "from": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz" + } + } + }, + "buffer": { + "version": "3.2.2", + "from": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", + "dependencies": { + "base64-js": { + "version": "0.0.8", + "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" + }, + "ieee754": { + "version": "1.1.5", + "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz" + }, + "is-array": { + "version": "1.0.1", + "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" + } + } + }, + "console-browserify": { + "version": "1.1.0", + "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dependencies": { + "date-now": { + "version": "0.1.4", + "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + } + } + }, + "constants-browserify": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" + }, + "crypto-browserify": { + "version": "3.2.8", + "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", + "dependencies": { + "pbkdf2-compat": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" + }, + "ripemd160": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" + }, + "sha.js": { + "version": "2.2.6", + "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" + } + } + }, + "domain-browser": { + "version": "1.1.4", + "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" + }, + "events": { + "version": "1.0.2", + "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" + }, + "http-browserify": { + "version": "1.7.0", + "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", + "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", + "dependencies": { + "Base64": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "https-browserify": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" + }, + "os-browserify": { + "version": "0.1.2", + "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" + }, + "path-browserify": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" + }, + "process": { + "version": "0.11.0", + "from": "https://registry.npmjs.org/process/-/process-0.11.0.tgz", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.0.tgz" + }, + "punycode": { + "version": "1.3.2", + "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + }, + "querystring-es3": { + "version": "0.2.1", + "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "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.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "stream-browserify": { + "version": "1.0.0", + "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "string_decoder": { + "version": "0.10.31", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "timers-browserify": { + "version": "1.4.1", + "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" + }, + "tty-browserify": { + "version": "0.0.0", + "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + }, + "url": { + "version": "0.10.3", + "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "dependencies": { + "querystring": { + "version": "0.2.0", + "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + } + } + }, + "util": { + "version": "0.10.3", + "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "dependencies": { + "indexof": { + "version": "0.0.1", + "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + } + } + } + } + }, + "react": { + "version": "0.13.3", + "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", + "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", + "dependencies": { + "envify": { + "version": "3.4.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "dependencies": { + "through": { + "version": "2.3.7", + "from": "https://registry.npmjs.org/through/-/through-2.3.7.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.7.tgz" + }, + "jstransform": { + "version": "10.1.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "dependencies": { + "base62": { + "version": "0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" + }, + "esprima-fb": { + "version": "13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" + }, + "source-map": { + "version": "0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "dependencies": { + "amdefine": { + "version": "0.1.0", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + } + } + } + } + } + } + } + } + }, + "react-bootstrap": { + "version": "0.25.1", + "from": "react-bootstrap@>=0.25.1 <0.26.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.1.tgz", + "dependencies": { + "babel-runtime": { + "version": "5.8.20", + "from": "babel-runtime@>=5.8.19 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.20.tgz", + "dependencies": { + "core-js": { + "version": "1.1.4", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz" + } + } + }, + "classnames": { + "version": "2.1.3", + "from": "classnames@>=2.1.3 <3.0.0", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz" + }, + "dom-helpers": { + "version": "2.4.0", + "from": "dom-helpers@>=2.2.4 <3.0.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz" + }, + "keycode": { + "version": "2.1.0", + "from": "keycode@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz" + }, + "lodash": { + "version": "3.10.1", + "from": "lodash@>=3.10.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "react-overlays": { + "version": "0.4.4", + "from": "react-overlays@>=0.4.4 <0.5.0", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.4.4.tgz", + "dependencies": { + "react-prop-types": { + "version": "0.2.2", + "from": "react-prop-types@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" + }, + "warning": { + "version": "2.0.0", + "from": "warning@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.0.0.tgz", + "dependencies": { + "envify": { + "version": "3.4.0", + "from": "envify@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "dependencies": { + "through": { + "version": "2.3.8", + "from": "through@>=2.3.4 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + }, + "jstransform": { + "version": "10.1.0", + "from": "jstransform@>=10.0.1 <11.0.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "dependencies": { + "base62": { + "version": "0.1.1", + "from": "base62@0.1.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" + }, + "esprima-fb": { + "version": "13001.1001.0-dev-harmony-fb", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" + }, + "source-map": { + "version": "0.1.31", + "from": "source-map@0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + } + } + } + } + } + } + } + } + }, + "uncontrollable": { + "version": "3.1.0", + "from": "uncontrollable@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.0.tgz", + "dependencies": { + "invariant": { + "version": "2.1.0", + "from": "invariant@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", + "dependencies": { + "envify": { + "version": "3.4.0", + "from": "envify@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "dependencies": { + "through": { + "version": "2.3.8", + "from": "through@>=2.3.4 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + }, + "jstransform": { + "version": "10.1.0", + "from": "jstransform@>=10.0.1 <11.0.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "dependencies": { + "base62": { + "version": "0.1.1", + "from": "base62@0.1.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" + }, + "esprima-fb": { + "version": "13001.1001.0-dev-harmony-fb", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" + }, + "source-map": { + "version": "0.1.31", + "from": "source-map@0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + } + } + } + } + } + } + } + } + } + } + }, + "react-redux": { + "version": "2.1.1", + "from": "react-redux@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.1.tgz", + "dependencies": { + "invariant": { + "version": "2.1.0", + "from": "invariant@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", + "dependencies": { + "envify": { + "version": "3.4.0", + "from": "envify@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "dependencies": { + "through": { + "version": "2.3.8", + "from": "through@>=2.3.4 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + }, + "jstransform": { + "version": "10.1.0", + "from": "jstransform@>=10.0.1 <11.0.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "dependencies": { + "base62": { + "version": "0.1.1", + "from": "base62@0.1.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" + }, + "esprima-fb": { + "version": "13001.1001.0-dev-harmony-fb", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" + }, + "source-map": { + "version": "0.1.31", + "from": "source-map@0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + } + } + } + } + } + } + } + } + }, + "redux": { + "version": "2.0.0", + "from": "redux@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-2.0.0.tgz" + }, + "redux-promise": { + "version": "0.5.0", + "from": "redux-promise@*", + "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", + "dependencies": { + "flux-standard-action": { + "version": "0.6.0", + "from": "flux-standard-action@0.6.0", + "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", + "dependencies": { + "lodash.isplainobject": { + "version": "3.2.0", + "from": "lodash.isplainobject@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", + "dependencies": { + "lodash._basefor": { + "version": "3.0.2", + "from": "lodash._basefor@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz" + }, + "lodash.isarguments": { + "version": "3.0.4", + "from": "lodash.isarguments@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" + }, + "lodash.keysin": { + "version": "3.0.8", + "from": "lodash.keysin@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", + "dependencies": { + "lodash.isarray": { + "version": "3.0.4", + "from": "lodash.isarray@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" + } + } + } + } + } + } + } + } + }, + "redux-thunk": { + "version": "0.1.0", + "from": "redux-thunk@*", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.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", + "dependencies": { + "nan": { + "version": "2.0.0", + "from": "nan@>=2.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.0.tgz" + } + } + }, + "webpack": { + "version": "1.12.1", + "from": "webpack@>=1.12.1 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.1.tgz", + "dependencies": { + "async": { + "version": "1.4.2", + "from": "async@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" + }, + "clone": { + "version": "1.0.2", + "from": "clone@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "enhanced-resolve": { + "version": "0.9.0", + "from": "enhanced-resolve@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.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" + } + } + }, + "esprima": { + "version": "2.6.0", + "from": "esprima@>=2.5.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" + }, + "interpret": { + "version": "0.6.5", + "from": "interpret@>=0.6.4 <0.7.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz" + }, + "memory-fs": { + "version": "0.2.0", + "from": "memory-fs@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" + }, + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "optimist": { + "version": "0.6.1", + "from": "optimist@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "from": "wordwrap@>=0.0.2 <0.1.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + }, + "minimist": { + "version": "0.0.10", + "from": "minimist@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" + } + } + }, + "supports-color": { + "version": "3.1.1", + "from": "supports-color@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", + "dependencies": { + "has-flag": { + "version": "1.0.0", + "from": "has-flag@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + } + } + }, + "tapable": { + "version": "0.1.9", + "from": "tapable@>=0.1.8 <0.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" + }, + "uglify-js": { + "version": "2.4.24", + "from": "uglify-js@>=2.4.24 <2.5.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "async@>=0.2.6 <0.3.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" + }, + "source-map": { + "version": "0.1.34", + "from": "source-map@0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "uglify-to-browserify@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "yargs": { + "version": "3.5.4", + "from": "yargs@>=3.5.4 <3.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "dependencies": { + "camelcase": { + "version": "1.2.1", + "from": "camelcase@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" + }, + "decamelize": { + "version": "1.0.0", + "from": "decamelize@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.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" + } + } + } + } + }, + "watchpack": { + "version": "0.2.8", + "from": "watchpack@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", + "dependencies": { + "async": { + "version": "0.9.2", + "from": "async@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + }, + "chokidar": { + "version": "1.0.5", + "from": "chokidar@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", + "dependencies": { + "anymatch": { + "version": "1.3.0", + "from": "anymatch@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "dependencies": { + "micromatch": { + "version": "2.2.0", + "from": "micromatch@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", + "dependencies": { + "arr-diff": { + "version": "1.1.0", + "from": "arr-diff@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "dependencies": { + "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-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-unique": { + "version": "0.2.1", + "from": "array-unique@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + }, + "braces": { + "version": "1.8.1", + "from": "braces@>=1.8.0 <2.0.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", + "dependencies": { + "expand-range": { + "version": "1.8.1", + "from": "expand-range@>=1.8.1 <2.0.0", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", + "dependencies": { + "fill-range": { + "version": "2.2.2", + "from": "fill-range@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", + "dependencies": { + "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" + }, + "isobject": { + "version": "1.0.2", + "from": "isobject@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" + }, + "randomatic": { + "version": "1.1.0", + "from": "randomatic@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" + }, + "repeat-string": { + "version": "1.5.2", + "from": "repeat-string@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" + } + } + } + } + }, + "lazy-cache": { + "version": "0.2.3", + "from": "lazy-cache@>=0.2.3 <0.3.0", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" + }, + "preserve": { + "version": "0.2.0", + "from": "preserve@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + }, + "repeat-element": { + "version": "1.1.2", + "from": "repeat-element@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" + } + } + }, + "expand-brackets": { + "version": "0.1.4", + "from": "expand-brackets@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" + }, + "extglob": { + "version": "0.3.1", + "from": "extglob@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", + "dependencies": { + "ansi-green": { + "version": "0.1.1", + "from": "ansi-green@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "dependencies": { + "ansi-wrap": { + "version": "0.1.0", + "from": "ansi-wrap@0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" + } + } + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "success-symbol": { + "version": "0.1.0", + "from": "success-symbol@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" + } + } + }, + "filename-regex": { + "version": "2.0.0", + "from": "filename-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" + }, + "kind-of": { + "version": "1.1.0", + "from": "kind-of@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" + }, + "object.omit": { + "version": "1.1.0", + "from": "object.omit@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", + "dependencies": { + "for-own": { + "version": "0.1.3", + "from": "for-own@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", + "dependencies": { + "for-in": { + "version": "0.1.4", + "from": "for-in@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.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" + } + } + }, + "parse-glob": { + "version": "3.0.2", + "from": "parse-glob@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", + "dependencies": { + "glob-base": { + "version": "0.2.0", + "from": "glob-base@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" + }, + "is-dotfile": { + "version": "1.0.1", + "from": "is-dotfile@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + } + } + }, + "regex-cache": { + "version": "0.4.2", + "from": "regex-cache@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", + "dependencies": { + "is-equal-shallow": { + "version": "0.1.3", + "from": "is-equal-shallow@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" + }, + "is-primitive": { + "version": "2.0.0", + "from": "is-primitive@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + } + } + } + } + } + } + }, + "arrify": { + "version": "1.0.0", + "from": "arrify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" + }, + "async-each": { + "version": "0.1.6", + "from": "async-each@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" + }, + "glob-parent": { + "version": "1.2.0", + "from": "glob-parent@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz" + }, + "is-binary-path": { + "version": "1.0.1", + "from": "is-binary-path@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "dependencies": { + "binary-extensions": { + "version": "1.3.1", + "from": "binary-extensions@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" + } + } + }, + "is-glob": { + "version": "1.1.3", + "from": "is-glob@>=1.1.3 <2.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.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" + }, + "readdirp": { + "version": "1.4.0", + "from": "readdirp@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <4.2.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + }, + "minimatch": { + "version": "0.2.14", + "from": "minimatch@>=0.2.11 <0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.6.5", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "readable-stream": { + "version": "1.0.33", + "from": "readable-stream@>=1.0.26-2 <1.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "fsevents": { + "version": "0.3.8", + "from": "fsevents@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", + "dependencies": { + "nan": { + "version": "2.0.8", + "from": "nan@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz" + } + } + } + } + }, + "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" + } + } + }, + "webpack-core": { + "version": "0.6.6", + "from": "webpack-core@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.6.tgz", + "dependencies": { + "source-map": { + "version": "0.4.4", + "from": "source-map@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "dependencies": { + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + } + } + }, + "source-list-map": { + "version": "0.1.5", + "from": "source-list-map@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" + } + } + } + } + } + } +} diff --git a/client/package.json b/client/package.json index 1682a21b1..ad3e0c08c 100644 --- a/client/package.json +++ b/client/package.json @@ -23,43 +23,43 @@ }, "homepage": "https://github.com/shakacode/react-webpack-rails-tutorial", "dependencies": { - "babel-core": "^5.8.20", + "babel-core": "^5.8.23", "babel-loader": "^5.3.2", "body-parser": "^1.13.3", - "es5-shim": "^4.1.10", - "es6-promise": "^2.3.0", - "immutable": "^3.7.4", + "es5-shim": "^4.1.12", + "es6-promise": "^3.0.2", + "immutable": "^3.7.5", "imports-loader": "^0.6.4", "jquery": "^2.1.4", "loader-utils": "^0.2.11", "marked": "^0.3.5", "react": "^0.13.3", - "react-bootstrap": "^0.24.3", - "react-redux": "^0.2.2", - "redux": "^1.0.1", + "react-bootstrap": "^0.25.1", + "react-redux": "^2.1.1", + "redux": "^2.0.0", "redux-promise": "^0.5.0", "redux-thunk": "^0.1.0", "sleep": "^3.0.0", - "webpack": "^1.10.5" + "webpack": "^1.12.1" }, "devDependencies": { - "babel-eslint": "^4.0.5", + "babel-eslint": "^4.1.1", "bootstrap-sass": "^3.3.5", - "bootstrap-sass-loader": "^1.0.8", - "css-loader": "^0.15.6", - "eslint": "^1.0.0", - "eslint-config-airbnb": "0.0.7", - "eslint-plugin-react": "^3.1.0", + "bootstrap-sass-loader": "^1.0.9", + "css-loader": "^0.17.0", + "eslint": "^1.3.1", + "eslint-config-airbnb": "0.0.8", + "eslint-plugin-react": "^3.3.1", "esprima-fb": "^15001.1001.0-dev-harmony-fb", "expose-loader": "^0.7.0", - "express": "^4.13.2", + "express": "^4.13.3", "file-loader": "^0.8.4", "gulp": "^3.9.0", "gulp-eslint": "^1.0.0", - "jscs": "^2.0.0", - "node-sass": "^3.2.0", - "react-hot-loader": "^1.2.8", - "sass-loader": "^1.0.3", + "jscs": "^2.1.1", + "node-sass": "^3.3.2", + "react-hot-loader": "^1.3.0", + "sass-loader": "^2.0.1", "style-loader": "^0.12.3", "url-loader": "^0.5.6", "webpack-dev-server": "^1.10.1" From 77a889ac6fe60459bab816df2d580b11c9428212 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 8 Sep 2015 00:12:04 -1000 Subject: [PATCH 044/548] Updated index.html.erb --- app/views/pages/index.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 8bd226cdc..3c9df8cd4 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -1,4 +1,4 @@ -

    Using React + Redux + Rails Backend

    +

    Using React + Redux + Rails Backend (using the react_on_rails gem)

    • If this work interests you and you're a developer or designer looking for full or part-time remote work: please From 23094510a95a3868855ec7be2887217fe75801f3 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Tue, 8 Sep 2015 00:18:03 -1000 Subject: [PATCH 045/548] added expose loader --- client/npm-shrinkwrap.json | 5 +++++ client/package.json | 1 + 2 files changed, 6 insertions(+) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 7b3e9d208..5cf54c508 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -769,6 +769,11 @@ "from": "es6-promise@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" }, + "expose-loader": { + "version": "0.7.0", + "from": "expose-loader@*", + "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" + }, "immutable": { "version": "3.7.5", "from": "immutable@>=3.7.5 <4.0.0", diff --git a/client/package.json b/client/package.json index ad3e0c08c..0fa3926c1 100644 --- a/client/package.json +++ b/client/package.json @@ -28,6 +28,7 @@ "body-parser": "^1.13.3", "es5-shim": "^4.1.12", "es6-promise": "^3.0.2", + "expose-loader": "^0.7.0", "immutable": "^3.7.5", "imports-loader": "^0.6.4", "jquery": "^2.1.4", From 879ecb2f1c1f657c6af4b086d6d6a5e00122ba48 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 10 Sep 2015 22:41:20 -1000 Subject: [PATCH 046/548] Move jQuery and jQuery-ujs under /client and npm Comment out jquery-rails gem Remove require for jQuery and jQuery-ujs from application.js Change required order of application.js client-bundle and es5-shim Add jquery-ujs to package.json and npm shrinkwrap Remove comments about jQuery from webpack.common.config.js Remove jQuery loader expose from webpack.rails.config.js Comment out jQuery import or external jQuery since it is served from /client. Move jQuery and jQuery-ujs expose to via require to rails_only.jsx entry point. --- Gemfile | 3 +- Gemfile.lock | 5 - README.md | 8 + app/assets/javascripts/application.js | 11 +- client/npm-shrinkwrap.json | 533 +++++++++++++------------- client/package.json | 1 + client/scripts/rails_only.jsx | 4 + client/webpack.common.config.js | 4 - client/webpack.rails.config.js | 9 +- 9 files changed, 290 insertions(+), 288 deletions(-) diff --git a/Gemfile b/Gemfile index 500e7a905..ff0ba542e 100644 --- a/Gemfile +++ b/Gemfile @@ -19,7 +19,8 @@ gem "coffee-rails" # gem "therubyracer", platforms: :ruby # Use jquery as the JavaScript library -gem "jquery-rails" +# gem "jquery-rails" + # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem "turbolinks" # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder diff --git a/Gemfile.lock b/Gemfile.lock index a991b50c5..42d6e6002 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -108,10 +108,6 @@ GEM jbuilder (2.3.1) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) - jquery-rails (4.0.4) - rails-dom-testing (~> 1.0) - railties (>= 4.2.0) - thor (>= 0.14, < 2.0) json (1.8.3) kgio (2.9.3) launchy (2.4.3) @@ -275,7 +271,6 @@ DEPENDENCIES factory_girl_rails foreman jbuilder - jquery-rails launchy pg phantomjs diff --git a/README.md b/README.md index d8553561d..a4c42cc41 100644 --- a/README.md +++ b/README.md @@ -173,6 +173,14 @@ Be sure to see [assets.rake](https://github.com/shakacode/react-webpack-rails-tu The `webpack.rails.config.js` file generates client-bundle.js which is then included by the Rails asset pipeline. +##jQuery with Rails and Webpack +jQuery and jQuery-ujs are not required within `app/assets/javascript/application.js` +and have been moved under`/client` and managed by npm. The modules are exposed as global via entry point +`script/rails_only.jsx` by `webpack.rails.config.js`. + +Please refer to [Considerations for jQuery with Rails and Webpack](http://forum.railsonmaui.com/t/considerations-for-jquery-with-rails-and-webpack/344) for further info. + + ## Sass and images 1. The Webpack server loads the images from the **symlink** of the `app/assets/images` directory. diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 64b094692..34e53597a 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -9,14 +9,11 @@ // // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details // about supported directives. -// -//= require jquery -//= require jquery_ujs - -//= require bootstrap-sprockets - -// Important to import jquery_ujs before rails-bundle as that patches jquery xhr to use the authenticity token! +// Need to be on top to allow Poltergeist test to work with React. //= require es5-shim/es5-shim + +// It is important that generated/client-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs //= require generated/client-bundle +//= require bootstrap-sprockets //= require turbolinks diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 5cf54c508..07041ee37 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -3,9 +3,9 @@ "version": "1.1.0", "dependencies": { "babel-core": { - "version": "5.8.23", + "version": "5.8.24", "from": "babel-core@>=5.8.23 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.23.tgz", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.24.tgz", "dependencies": { "babel-plugin-constant-folding": { "version": "1.0.1", @@ -95,9 +95,9 @@ "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" }, "bluebird": { - "version": "2.9.34", + "version": "2.10.0", "from": "bluebird@>=2.9.33 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.9.34.tgz" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.0.tgz" }, "chalk": { "version": "1.1.1", @@ -734,9 +734,9 @@ } }, "type-is": { - "version": "1.6.6", + "version": "1.6.8", "from": "type-is@>=1.6.6 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.6.tgz", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", "dependencies": { "media-typer": { "version": "0.3.0", @@ -744,14 +744,14 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" }, "mime-types": { - "version": "2.1.4", - "from": "mime-types@>=2.1.4 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.4.tgz", + "version": "2.1.6", + "from": "mime-types@>=2.1.6 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", "dependencies": { "mime-db": { - "version": "1.16.0", - "from": "mime-db@>=1.16.0 <1.17.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.16.0.tgz" + "version": "1.18.0", + "from": "mime-db@>=1.18.0 <1.19.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz" } } } @@ -760,9 +760,9 @@ } }, "es5-shim": { - "version": "4.1.12", + "version": "4.1.13", "from": "es5-shim@>=4.1.12 <5.0.0", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.12.tgz" + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.13.tgz" }, "es6-promise": { "version": "3.0.2", @@ -771,7 +771,7 @@ }, "expose-loader": { "version": "0.7.0", - "from": "expose-loader@*", + "from": "expose-loader@>=0.7.0 <0.8.0", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" }, "immutable": { @@ -800,9 +800,14 @@ }, "jquery": { "version": "2.1.4", - "from": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "from": "jquery@>=2.1.4 <3.0.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" }, + "jquery-ujs": { + "version": "1.0.4", + "from": "jquery-ujs@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.0.4.tgz" + }, "loader-utils": { "version": "0.2.11", "from": "loader-utils@>=0.2.11 <0.3.0", @@ -825,272 +830,45 @@ "from": "marked@>=0.3.5 <0.4.0", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" }, - "node-libs-browser": { - "version": "0.5.0", - "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.0.tgz", - "dependencies": { - "assert": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "dependencies": { - "pako": { - "version": "0.2.6", - "from": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.6.tgz" - } - } - }, - "buffer": { - "version": "3.2.2", - "from": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.2.2.tgz", - "dependencies": { - "base64-js": { - "version": "0.0.8", - "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" - }, - "ieee754": { - "version": "1.1.5", - "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.5.tgz" - }, - "is-array": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" - } - } - }, - "console-browserify": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "constants-browserify": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" - }, - "crypto-browserify": { - "version": "3.2.8", - "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "dependencies": { - "pbkdf2-compat": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" - }, - "ripemd160": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" - }, - "sha.js": { - "version": "2.2.6", - "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" - } - } - }, - "domain-browser": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" - }, - "events": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" - }, - "http-browserify": { - "version": "1.7.0", - "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "dependencies": { - "Base64": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "https-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" - }, - "os-browserify": { - "version": "0.1.2", - "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" - }, - "path-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" - }, - "process": { - "version": "0.11.0", - "from": "https://registry.npmjs.org/process/-/process-0.11.0.tgz", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.0.tgz" - }, - "punycode": { - "version": "1.3.2", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - }, - "querystring-es3": { - "version": "0.2.1", - "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "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.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "stream-browserify": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "string_decoder": { - "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "timers-browserify": { - "version": "1.4.1", - "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" - }, - "tty-browserify": { - "version": "0.0.0", - "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - }, - "url": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "dependencies": { - "querystring": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "dependencies": { - "indexof": { - "version": "0.0.1", - "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } - } - } - }, "react": { "version": "0.13.3", - "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", + "from": "react@>=0.13.3 <0.14.0", "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "from": "envify@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { - "version": "2.3.7", - "from": "https://registry.npmjs.org/through/-/through-2.3.7.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.7.tgz" + "version": "2.3.8", + "from": "through@>=2.3.4 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "from": "jstransform@>=10.0.1 <11.0.0", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", + "from": "base62@0.1.1", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "from": "source-map@0.1.31", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } } @@ -1316,7 +1094,7 @@ }, "redux-promise": { "version": "0.5.0", - "from": "redux-promise@*", + "from": "redux-promise@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", "dependencies": { "flux-standard-action": { @@ -1359,7 +1137,7 @@ }, "redux-thunk": { "version": "0.1.0", - "from": "redux-thunk@*", + "from": "redux-thunk@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz" }, "sleep": { @@ -1368,9 +1146,9 @@ "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "dependencies": { "nan": { - "version": "2.0.0", + "version": "2.0.9", "from": "nan@>=2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.0.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" } } }, @@ -1396,7 +1174,7 @@ "dependencies": { "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.5 <4.0.0", + "from": "graceful-fs@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } @@ -1428,6 +1206,233 @@ } } }, + "node-libs-browser": { + "version": "0.5.2", + "from": "node-libs-browser@>=0.4.0 <=0.6.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.2.tgz", + "dependencies": { + "assert": { + "version": "1.3.0", + "from": "assert@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" + }, + "browserify-zlib": { + "version": "0.1.4", + "from": "browserify-zlib@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "dependencies": { + "pako": { + "version": "0.2.7", + "from": "pako@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.7.tgz" + } + } + }, + "buffer": { + "version": "3.4.3", + "from": "buffer@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.4.3.tgz", + "dependencies": { + "base64-js": { + "version": "0.0.8", + "from": "base64-js@0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" + }, + "ieee754": { + "version": "1.1.6", + "from": "ieee754@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.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" + } + } + }, + "console-browserify": { + "version": "1.1.0", + "from": "console-browserify@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "dependencies": { + "date-now": { + "version": "0.1.4", + "from": "date-now@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + } + } + }, + "constants-browserify": { + "version": "0.0.1", + "from": "constants-browserify@0.0.1", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" + }, + "crypto-browserify": { + "version": "3.2.8", + "from": "crypto-browserify@>=3.2.6 <3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", + "dependencies": { + "pbkdf2-compat": { + "version": "2.0.1", + "from": "pbkdf2-compat@2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" + }, + "ripemd160": { + "version": "0.2.0", + "from": "ripemd160@0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" + }, + "sha.js": { + "version": "2.2.6", + "from": "sha.js@2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" + } + } + }, + "domain-browser": { + "version": "1.1.4", + "from": "domain-browser@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" + }, + "events": { + "version": "1.0.2", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" + }, + "http-browserify": { + "version": "1.7.0", + "from": "http-browserify@>=1.3.2 <2.0.0", + "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", + "dependencies": { + "Base64": { + "version": "0.2.1", + "from": "Base64@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "https-browserify": { + "version": "0.0.0", + "from": "https-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" + }, + "os-browserify": { + "version": "0.1.2", + "from": "os-browserify@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" + }, + "path-browserify": { + "version": "0.0.0", + "from": "path-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" + }, + "process": { + "version": "0.11.2", + "from": "process@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" + }, + "punycode": { + "version": "1.3.2", + "from": "punycode@>=1.2.4 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + }, + "querystring-es3": { + "version": "0.2.1", + "from": "querystring-es3@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + }, + "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", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "stream-browserify": { + "version": "1.0.0", + "from": "stream-browserify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.25 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "timers-browserify": { + "version": "1.4.1", + "from": "timers-browserify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" + }, + "tty-browserify": { + "version": "0.0.0", + "from": "tty-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.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", + "dependencies": { + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + } + } + }, + "util": { + "version": "0.10.3", + "from": "util@>=0.10.3 <0.11.0", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "vm-browserify": { + "version": "0.0.4", + "from": "vm-browserify@0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "dependencies": { + "indexof": { + "version": "0.0.1", + "from": "indexof@0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + } + } + } + } + }, "optimist": { "version": "0.6.1", "from": "optimist@>=0.6.0 <0.7.0", @@ -1781,7 +1786,7 @@ }, "minimatch": { "version": "0.2.14", - "from": "minimatch@>=0.2.11 <0.3.0", + "from": "minimatch@>=0.2.12 <0.3.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "dependencies": { "lru-cache": { @@ -1831,9 +1836,9 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", "dependencies": { "nan": { - "version": "2.0.8", + "version": "2.0.9", "from": "nan@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.8.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" } } } @@ -1841,7 +1846,7 @@ }, "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.5 <4.0.0", + "from": "graceful-fs@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } diff --git a/client/package.json b/client/package.json index 0fa3926c1..c33a61dc7 100644 --- a/client/package.json +++ b/client/package.json @@ -32,6 +32,7 @@ "immutable": "^3.7.5", "imports-loader": "^0.6.4", "jquery": "^2.1.4", + "jquery-ujs": "^1.0.4", "loader-utils": "^0.2.11", "marked": "^0.3.5", "react": "^0.13.3", diff --git a/client/scripts/rails_only.jsx b/client/scripts/rails_only.jsx index e56bcd414..d8178af4c 100644 --- a/client/scripts/rails_only.jsx +++ b/client/scripts/rails_only.jsx @@ -8,3 +8,7 @@ require('es5-shim/es5-sham'); // Due to issue: https://github.com/ariya/phantomjs/issues/12401 // Phantomjs does not like promises require('es6-promise').polyfill(); + +require('expose?jQuery!jquery'); +require('expose?$!jquery'); +require('expose?jquery-ujs!jquery-ujs'); diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 6a99a7f39..2043ac2c7 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -8,10 +8,6 @@ module.exports = { context: __dirname, entry: ['./assets/javascripts/App'], - // In case you wanted to load jQuery from the CDN, this is how you would do it: - // externals: { - // jquery: 'var jQuery' - // }, resolve: { root: [ path.join(__dirname, 'scripts'), diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index 512bab13e..54af571f7 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -12,7 +12,7 @@ config.output = { }; // load jQuery from cdn or rails asset pipeline -config.externals = {jquery: 'var jQuery'}; +// config.externals = {jquery: 'var jQuery'}; // You can add entry points specific to rails here config.entry.push('./scripts/rails_only'); @@ -20,12 +20,7 @@ config.entry.push('./scripts/rails_only'); // See webpack.common.config for adding modules common to both the webpack dev server and rails config.module.loaders.push( - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'}, - - // Next 2 lines expose jQuery and $ to any JavaScript files loaded after client-bundle.js - // in the Rails Asset Pipeline. Thus, load this one prior. - {test: require.resolve('jquery'), loader: 'expose?jQuery'}, - {test: require.resolve('jquery'), loader: 'expose?$'} + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'} ); module.exports = config; From 6beab2379372d8e2fdb7e79e34e71609686a884f Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 06:45:47 -1000 Subject: [PATCH 047/548] Remove jquery-rails gem, remove commented external jQuery from webpack.rails.config.js --- Gemfile | 3 +-- client/webpack.rails.config.js | 3 --- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index ff0ba542e..af4c8e05f 100644 --- a/Gemfile +++ b/Gemfile @@ -18,8 +18,7 @@ gem "coffee-rails" # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem "therubyracer", platforms: :ruby -# Use jquery as the JavaScript library -# gem "jquery-rails" +# jquery as the JavaScript library has been moved under /client and managed by npm # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem "turbolinks" diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index 54af571f7..8236eb5b8 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -11,9 +11,6 @@ config.output = { path: '../app/assets/javascripts/generated', }; -// load jQuery from cdn or rails asset pipeline -// config.externals = {jquery: 'var jQuery'}; - // You can add entry points specific to rails here config.entry.push('./scripts/rails_only'); From f72f982aa84d4f02e611e958c165ad0122ca4c88 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 10:19:13 -1000 Subject: [PATCH 048/548] Add travis.yml file for Travis-CI build --- .travis.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..be537debf --- /dev/null +++ b/.travis.yml @@ -0,0 +1,14 @@ +language: + - ruby +rvm: + - 2.2.2 +install: + - bundle install + - npm install + - cd client && $(npm bin)/webpack --config webpack.rails.config.js +env: + - export RAILS_ENV=test +script: + - bundle exec rake db:schema:load + - bundle exec rake + - bundle exec rake lint From 2ace4439fdecc8e29a17f6d8993ca39c09c1c728 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 12:19:31 -1000 Subject: [PATCH 049/548] Remove require expose jQuery and jQuery-ujs from script/rails_only Move add jquery and jquery-ujs to entry point in web.common.config.js Add expose-loader for jQuery module/loaders with web.common.config.js --- client/scripts/rails_only.jsx | 4 ---- client/webpack.common.config.js | 3 ++- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/client/scripts/rails_only.jsx b/client/scripts/rails_only.jsx index d8178af4c..e56bcd414 100644 --- a/client/scripts/rails_only.jsx +++ b/client/scripts/rails_only.jsx @@ -8,7 +8,3 @@ require('es5-shim/es5-sham'); // Due to issue: https://github.com/ariya/phantomjs/issues/12401 // Phantomjs does not like promises require('es6-promise').polyfill(); - -require('expose?jQuery!jquery'); -require('expose?$!jquery'); -require('expose?jquery-ujs!jquery-ujs'); diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 2043ac2c7..44bce5c48 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -6,7 +6,7 @@ module.exports = { // the project dir context: __dirname, - entry: ['./assets/javascripts/App'], + entry: ['jquery', 'jquery-ujs', './assets/javascripts/App'], resolve: { root: [ @@ -20,6 +20,7 @@ module.exports = { // React is necessary for the client rendering: {test: require.resolve('react'), loader: 'expose?React'}, + {test: require.resolve('jquery'), loader: 'expose?jQuery'} ], }, }; From 78de2cb2ba1916baa0c6f1e48bcd0b61713e8a90 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 12:23:52 -1000 Subject: [PATCH 050/548] Address eslint linting issue --- client/webpack.common.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 44bce5c48..aa6fd5681 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -20,7 +20,7 @@ module.exports = { // React is necessary for the client rendering: {test: require.resolve('react'), loader: 'expose?React'}, - {test: require.resolve('jquery'), loader: 'expose?jQuery'} + {test: require.resolve('jquery'), loader: 'expose?jQuery'}, ], }, }; From 851dc3c21b3b98d60965cda6368623a3750c3c22 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 12:29:14 -1000 Subject: [PATCH 051/548] Add additional jquery expose-loader to global $ --- client/webpack.common.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index aa6fd5681..100712fb5 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -21,6 +21,7 @@ module.exports = { // React is necessary for the client rendering: {test: require.resolve('react'), loader: 'expose?React'}, {test: require.resolve('jquery'), loader: 'expose?jQuery'}, + {test: require.resolve('jquery'), loader: 'expose?$'}, ], }, }; From 208dc628df4d693608f830ccd577a60c6c511739 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 12:32:42 -1000 Subject: [PATCH 052/548] Update README.md referencing the jQuery expose and entry point within webpack.common.config.js --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a4c42cc41..4003c8d9b 100644 --- a/README.md +++ b/README.md @@ -175,8 +175,8 @@ by the Rails asset pipeline. ##jQuery with Rails and Webpack jQuery and jQuery-ujs are not required within `app/assets/javascript/application.js` -and have been moved under`/client` and managed by npm. The modules are exposed as global via entry point -`script/rails_only.jsx` by `webpack.rails.config.js`. +and have been moved under`/client` and managed by npm. The modules are exposed via entry point +by `webpack.common.config.js`. Please refer to [Considerations for jQuery with Rails and Webpack](http://forum.railsonmaui.com/t/considerations-for-jquery-with-rails-and-webpack/344) for further info. From 421cef2b313c3e437ffa7e029f03bee0e41b9444 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 11 Sep 2015 15:06:17 -1000 Subject: [PATCH 053/548] Addrees suggest comments from PR --- Gemfile | 4 +++- README.md | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index af4c8e05f..b95d7b8a5 100644 --- a/Gemfile +++ b/Gemfile @@ -18,7 +18,9 @@ gem "coffee-rails" # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem "therubyracer", platforms: :ruby -# jquery as the JavaScript library has been moved under /client and managed by npm +# jquery as the JavaScript library has been moved under /client and managed by npm. +# It is critical to not include any of the jquery gems when following this pattern or +# else you might have multiple jQuery versions. # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem "turbolinks" diff --git a/README.md b/README.md index 4003c8d9b..c67badaa3 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,9 @@ jQuery and jQuery-ujs are not required within `app/assets/javascript/application and have been moved under`/client` and managed by npm. The modules are exposed via entry point by `webpack.common.config.js`. +In `application.js`, it's critical that any libraries that depend on jQuery come after the inclusion +of the Webpack bundle, such as the twitter bootstrap javascript. + Please refer to [Considerations for jQuery with Rails and Webpack](http://forum.railsonmaui.com/t/considerations-for-jquery-with-rails-and-webpack/344) for further info. From 63d48cfbf751f18da2fb800dddb0594fcf7fd148 Mon Sep 17 00:00:00 2001 From: Sergey Zyablitsky Date: Mon, 14 Sep 2015 14:42:08 +1000 Subject: [PATCH 054/548] url-loader typo fix --- client/webpack.hot.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index 919c047ad..d63768a89 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -36,8 +36,8 @@ config.module.loaders.push( }, // The url-loader uses DataUrls. The file-loader emits files. - {test: /\.woff$/, loader: 'url-loader?limit=10000&minetype=application/font-woff'}, - {test: /\.woff2$/, loader: 'url-loader?limit=10000&minetype=application/font-woff'}, + {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'}); From 9b299f5042b23d6e6860c490db1dcb17ec9bb3c1 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 14 Sep 2015 10:17:35 -1000 Subject: [PATCH 055/548] Add coveralls.io code coverage integration. Add coverall gem to gemfile and bundle install to update Gemfile.lock Add require for coveralls to top of spec/rails_helper.rb. this must be at the top before any rails code loads. Add .coveralls.yml config file and set CI service_name to Codeship. --- .coveralls.yml | 1 + .gitignore | 1 + Gemfile | 1 + Gemfile.lock | 31 +++++++++++++++++++++++++++++++ spec/rails_helper.rb | 2 ++ 5 files changed, 36 insertions(+) create mode 100644 .coveralls.yml diff --git a/.coveralls.yml b/.coveralls.yml new file mode 100644 index 000000000..bc0b7b03c --- /dev/null +++ b/.coveralls.yml @@ -0,0 +1 @@ +service_name: codeship diff --git a/.gitignore b/.gitignore index 845392777..2817fbbcf 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ client-bundle.js.map .env node_modules npm-debug.log +/coverage # Ignore bundle dependencies vendor/ruby diff --git a/Gemfile b/Gemfile index b95d7b8a5..54b7c0d9c 100644 --- a/Gemfile +++ b/Gemfile @@ -80,6 +80,7 @@ group :development, :test do end group :test do + gem "coveralls", require: false gem "rspec-rails" gem "capybara" gem "capybara-screenshot" diff --git a/Gemfile.lock b/Gemfile.lock index 42d6e6002..4191861ba 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -83,9 +83,18 @@ GEM execjs coffee-script-source (1.9.1.1) columnize (0.9.0) + coveralls (0.8.2) + json (~> 1.8) + rest-client (>= 1.6.8, < 2) + simplecov (~> 0.10.0) + term-ansicolor (~> 1.3) + thor (~> 0.19.1) database_cleaner (1.4.1) debug_inspector (0.0.2) diff-lcs (1.2.5) + docile (1.1.5) + domain_name (0.5.24) + unf (>= 0.0.5, < 1.0.0) erubis (2.7.0) es5-shim-rails (4.0.1) actionpack (>= 3.1) @@ -104,6 +113,8 @@ GEM haml (4.0.6) tilt highline (1.6.21) + http-cookie (1.0.2) + domain_name (~> 0.5) i18n (0.7.0) jbuilder (2.3.1) activesupport (>= 3.0.0, < 5) @@ -120,6 +131,7 @@ GEM mini_portile (0.6.2) minitest (5.7.0) multi_json (1.11.2) + netrc (0.10.3) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) parser (2.2.2.6) @@ -171,6 +183,10 @@ GEM react_on_rails (0.1.1) execjs (~> 2.5) rails (~> 4.2) + rest-client (1.8.0) + http-cookie (>= 1.0.2, < 2.0) + mime-types (>= 1.16, < 3.0) + netrc (~> 0.7) rspec-core (3.3.2) rspec-support (~> 3.3.0) rspec-expectations (3.3.1) @@ -217,6 +233,11 @@ GEM json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) sexp_processor (4.6.0) + simplecov (0.10.0) + docile (~> 1.1.0) + json (~> 1.8) + simplecov-html (~> 0.10.0) + simplecov-html (0.10.0) slop (3.6.0) spring (1.3.6) spring-commands-rspec (1.0.4) @@ -228,10 +249,13 @@ GEM activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) sqlite3 (1.3.10) + term-ansicolor (1.3.2) + tins (~> 1.0) terminal-table (1.5.2) thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) + tins (1.6.0) turbolinks (2.5.3) coffee-rails tzinfo (1.2.2) @@ -239,6 +263,9 @@ GEM uglifier (2.7.1) execjs (>= 0.3.0) json (>= 1.8.0) + unf (0.1.4) + unf_ext + unf_ext (0.0.7.1) unicorn (4.9.0) kgio (~> 2.6) rack @@ -266,6 +293,7 @@ DEPENDENCIES capybara capybara-screenshot coffee-rails + coveralls database_cleaner es5-shim-rails factory_girl_rails @@ -293,3 +321,6 @@ DEPENDENCIES uglifier unicorn web-console + +BUNDLED WITH + 1.10.6 diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index ce0f3b6ea..a9d42faed 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,5 +1,7 @@ # This file is copied to spec/ when you run "rails generate rspec:install" ENV["RAILS_ENV"] ||= "test" +require "coveralls" +Coveralls.wear!("rails") # must occur before any of your application code is required require "spec_helper" require File.expand_path("../../config/environment", __FILE__) require "rspec/rails" From 23c6969e08f9a50b907ab549044704dcccd61280 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 14 Sep 2015 10:29:50 -1000 Subject: [PATCH 056/548] Add markdown code for code coverage badge within README --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c67badaa3..60e6ac4a1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Coverage Status](https://coveralls.io/repos/shakacode/react-webpack-rails-tutorial/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react-webpack-rails-tutorial?branch=master) + # React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack and the react_on_rails gem ## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! From 971f56dbfee9ac1d9c09272c1dde4bef41342447 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 14 Sep 2015 10:44:18 -1000 Subject: [PATCH 057/548] Add Codeship badge markdown code to README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 60e6ac4a1..8afe5e17b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Coverage Status](https://coveralls.io/repos/shakacode/react-webpack-rails-tutorial/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react-webpack-rails-tutorial?branch=master) - +[![Codeship Status for justin808/react-webpack-rails-tutorial](https://codeship.com/projects/287b26d0-0c05-0133-7a33-02e67aca5f06/status?branch=master)](https://codeship.com/projects/90975) # React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack and the react_on_rails gem ## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! From b20b12c0b433eb5f413d1b29151987f1203387a4 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 14 Sep 2015 10:54:11 -1000 Subject: [PATCH 058/548] Add travis-ci build badge to README --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8afe5e17b..8f8ddab34 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ -[![Coverage Status](https://coveralls.io/repos/shakacode/react-webpack-rails-tutorial/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react-webpack-rails-tutorial?branch=master) [![Codeship Status for justin808/react-webpack-rails-tutorial](https://codeship.com/projects/287b26d0-0c05-0133-7a33-02e67aca5f06/status?branch=master)](https://codeship.com/projects/90975) +[![Build Status](https://travis-ci.org/shakacode/react-webpack-rails-tutorial.svg?branch=code_coverage-linting)](https://travis-ci.org/shakacode/react-webpack-rails-tutorial) +[![Coverage Status](https://coveralls.io/repos/shakacode/react-webpack-rails-tutorial/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react-webpack-rails-tutorial?branch=master) + # React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack and the react_on_rails gem ## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! From 98104dbee6a56addc6d7c8e89c7b473235b47076 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 14 Sep 2015 11:21:39 -1000 Subject: [PATCH 059/548] Add Gemasium dependencies badge to README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8f8ddab34..50fc12a34 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Codeship Status for justin808/react-webpack-rails-tutorial](https://codeship.com/projects/287b26d0-0c05-0133-7a33-02e67aca5f06/status?branch=master)](https://codeship.com/projects/90975) [![Build Status](https://travis-ci.org/shakacode/react-webpack-rails-tutorial.svg?branch=code_coverage-linting)](https://travis-ci.org/shakacode/react-webpack-rails-tutorial) [![Coverage Status](https://coveralls.io/repos/shakacode/react-webpack-rails-tutorial/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react-webpack-rails-tutorial?branch=master) - +[![Dependency Status](https://gemnasium.com/shakacode/react-webpack-rails-tutorial.svg)](https://gemnasium.com/shakacode/react-webpack-rails-tutorial) # React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack and the react_on_rails gem ## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! From c5a91b8f91c24c0a666b169c5d518e395799ccdc Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 14 Sep 2015 11:53:13 -1000 Subject: [PATCH 060/548] Upate gem uglifier ~> 2.7.2 to address report security issue with gem --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 54b7c0d9c..301460518 100644 --- a/Gemfile +++ b/Gemfile @@ -12,7 +12,7 @@ gem "pg", group: :production gem "sass-rails" gem "bootstrap-sass", "~> 3.3.1" # Use Uglifier as compressor for JavaScript assets -gem "uglifier" +gem "uglifier", "~> 2.7.2" # Use CoffeeScript for .js.coffee assets and views gem "coffee-rails" # See https://github.com/sstephenson/execjs#readme for more supported runtimes diff --git a/Gemfile.lock b/Gemfile.lock index 4191861ba..83102356b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -260,7 +260,7 @@ GEM coffee-rails tzinfo (1.2.2) thread_safe (~> 0.1) - uglifier (2.7.1) + uglifier (2.7.2) execjs (>= 0.3.0) json (>= 1.8.0) unf (0.1.4) @@ -318,7 +318,7 @@ DEPENDENCIES spring-commands-rspec sqlite3 turbolinks - uglifier + uglifier (~> 2.7.2) unicorn web-console From 1c4115480fcb68fc58e656cc6f7849207e87bb95 Mon Sep 17 00:00:00 2001 From: Scott Bronson Date: Wed, 16 Sep 2015 12:34:28 -0700 Subject: [PATCH 061/548] Remove an unneeded section from the README Haven't used capybara-webkit since 07950bd08f63c --- README.md | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/README.md b/README.md index 50fc12a34..5e3eeeba8 100644 --- a/README.md +++ b/README.md @@ -250,29 +250,6 @@ We have feature tests in /spec/features Run the tests with `rspec`. -If you get errors when running rspec in that it can't find expected DOM elements, then you'll want to -check if you have qt-4.x installed. You need at least qt-5 installed. - -``` -brew info qt -``` -Check the output. Does the version say less than 5? If so, install qt5. -``` -brew uninstall qt -brew install qt5 -``` - -Then you need to run -``` -gem uninstall capybara-webkit -QMAKE=/usr/local/Cellar/qt5/5.4.0/bin/qmake bundle install -``` - -**IMPORTANT** Be sure that the path indicated for the QMAKE corresponds to a correct path. - -Then run `rspec` and you should see the tests have passed. - - # Linting and Code Inspection ## Running Lint and CI tasks * Default rake task runs tests and linting (yes, repeating this!) (see `ci.rake`) From 14482d976481d3857cec8c43e91533ccf971e2ab Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Wed, 16 Sep 2015 21:47:55 -1000 Subject: [PATCH 062/548] Update README.md --- README.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5e3eeeba8..1d181cf2b 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com See [pull requests](https://github.com/shakacode/react-webpack-rails-tutorial/pulls?utf8=%E2%9C%93&q=is%3Apr). - If this work interests you and you are looking for full or part-time remote work, please [click here](http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156). -- Please email us at [justin@railsonmaui.com](mailto:justin@railsonmaui.com) if you have a ReactJs + +- Please email us at [justin@shakacode.com](mailto:justin@shakacode.com) if you have a ReactJs + Rails project and are interested in help from our experienced team. - Please file issues for problems and feature requests. - Pull requests are welcome! (and a great way to get on the team) @@ -295,6 +295,4 @@ alias git-cleanup-merged-branches='git branch --merged master | grep -v master | ``` # Open Code of Conduct -This project adheres to the [Open Code of Conduct][code-of-conduct]. By participating, you are expected to uphold this code. -[code-of-conduct](http://todogroup.org/opencodeofconduct/#fetch/opensource@github.com) - +This project adheres to the [Open Code of Conduct](http://todogroup.org/opencodeofconduct/#fetch/opensource@github.com). By participating, you are expected to uphold this code. From b0b8d19aa54e153dee06fd989597a889f653f81b Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 18 Sep 2015 15:11:00 -1000 Subject: [PATCH 063/548] Update npm module jquery-ujs to 1.1.0-1, npm shrinkwrap --- client/npm-shrinkwrap.json | 97 ++++++++++++++++++++------------------ client/package.json | 2 +- 2 files changed, 53 insertions(+), 46 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 07041ee37..baa404962 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -3,9 +3,9 @@ "version": "1.1.0", "dependencies": { "babel-core": { - "version": "5.8.24", + "version": "5.8.25", "from": "babel-core@>=5.8.23 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.24.tgz", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", "dependencies": { "babel-plugin-constant-folding": { "version": "1.0.1", @@ -378,9 +378,9 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", "dependencies": { "lru-cache": { - "version": "2.6.5", + "version": "2.7.0", "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "sigmund": { "version": "1.0.1", @@ -651,9 +651,9 @@ } }, "body-parser": { - "version": "1.13.3", + "version": "1.14.0", "from": "body-parser@>=1.13.3 <2.0.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.13.3.tgz", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.0.tgz", "dependencies": { "bytes": { "version": "2.1.0", @@ -678,9 +678,9 @@ } }, "depd": { - "version": "1.0.1", - "from": "depd@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + "version": "1.1.0", + "from": "depd@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" }, "http-errors": { "version": "1.3.1", @@ -717,14 +717,14 @@ } }, "qs": { - "version": "4.0.0", - "from": "qs@4.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" + "version": "5.1.0", + "from": "qs@5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" }, "raw-body": { - "version": "2.1.2", - "from": "raw-body@>=2.1.2 <2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.2.tgz", + "version": "2.1.3", + "from": "raw-body@>=2.1.3 <2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.3.tgz", "dependencies": { "unpipe": { "version": "1.0.0", @@ -735,7 +735,7 @@ }, "type-is": { "version": "1.6.8", - "from": "type-is@>=1.6.6 <1.7.0", + "from": "type-is@>=1.6.8 <1.7.0", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", "dependencies": { "media-typer": { @@ -804,9 +804,9 @@ "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" }, "jquery-ujs": { - "version": "1.0.4", - "from": "jquery-ujs@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.0.4.tgz" + "version": "1.1.0-1", + "from": "jquery-ujs@>=1.1.0-1 <2.0.0", + "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.1.0-1.tgz" }, "loader-utils": { "version": "0.2.11", @@ -879,14 +879,14 @@ } }, "react-bootstrap": { - "version": "0.25.1", + "version": "0.25.2", "from": "react-bootstrap@>=0.25.1 <0.26.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.1.tgz", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.2.tgz", "dependencies": { "babel-runtime": { - "version": "5.8.20", + "version": "5.8.24", "from": "babel-runtime@>=5.8.19 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.20.tgz", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", "dependencies": { "core-js": { "version": "1.1.4", @@ -976,9 +976,9 @@ } }, "uncontrollable": { - "version": "3.1.0", + "version": "3.1.2", "from": "uncontrollable@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.0.tgz", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.2.tgz", "dependencies": { "invariant": { "version": "2.1.0", @@ -1033,9 +1033,9 @@ } }, "react-redux": { - "version": "2.1.1", + "version": "2.1.2", "from": "react-redux@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.1.tgz", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.2.tgz", "dependencies": { "invariant": { "version": "2.1.0", @@ -1153,9 +1153,9 @@ } }, "webpack": { - "version": "1.12.1", + "version": "1.12.2", "from": "webpack@>=1.12.1 <2.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.1.tgz", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", "dependencies": { "async": { "version": "1.4.2", @@ -1207,9 +1207,9 @@ } }, "node-libs-browser": { - "version": "0.5.2", + "version": "0.5.3", "from": "node-libs-browser@>=0.4.0 <=0.6.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.2.tgz", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", "dependencies": { "assert": { "version": "1.3.0", @@ -1222,16 +1222,16 @@ "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "dependencies": { "pako": { - "version": "0.2.7", + "version": "0.2.8", "from": "pako@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.7.tgz" + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" } } }, "buffer": { - "version": "3.4.3", + "version": "3.5.0", "from": "buffer@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.4.3.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.0.tgz", "dependencies": { "base64-js": { "version": "0.0.8", @@ -1534,9 +1534,9 @@ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" }, "chokidar": { - "version": "1.0.5", + "version": "1.0.6", "from": "chokidar@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.5.tgz", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.6.tgz", "dependencies": { "anymatch": { "version": "1.3.0", @@ -1748,9 +1748,16 @@ "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" }, "glob-parent": { - "version": "1.2.0", + "version": "1.3.0", "from": "glob-parent@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.2.0.tgz" + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.3.0.tgz", + "dependencies": { + "is-glob": { + "version": "2.0.0", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.0.tgz" + } + } }, "is-binary-path": { "version": "1.0.1", @@ -1790,9 +1797,9 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "dependencies": { "lru-cache": { - "version": "2.6.5", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.5.tgz" + "version": "2.7.0", + "from": "lru-cache@>=2.6.5 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "sigmund": { "version": "1.0.1", @@ -1832,7 +1839,7 @@ }, "fsevents": { "version": "0.3.8", - "from": "fsevents@>=0.3.1 <0.4.0", + "from": "fsevents@>=0.3.8 <0.4.0", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", "dependencies": { "nan": { @@ -1852,9 +1859,9 @@ } }, "webpack-core": { - "version": "0.6.6", + "version": "0.6.7", "from": "webpack-core@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.6.tgz", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz", "dependencies": { "source-map": { "version": "0.4.4", diff --git a/client/package.json b/client/package.json index c33a61dc7..009d4ef4a 100644 --- a/client/package.json +++ b/client/package.json @@ -32,7 +32,7 @@ "immutable": "^3.7.5", "imports-loader": "^0.6.4", "jquery": "^2.1.4", - "jquery-ujs": "^1.0.4", + "jquery-ujs": "^1.1.0-1", "loader-utils": "^0.2.11", "marked": "^0.3.5", "react": "^0.13.3", From 7955e1928be0a5068c3cfe30126790ddf36857c2 Mon Sep 17 00:00:00 2001 From: Sergey Zyablitsky Date: Sat, 19 Sep 2015 12:32:05 +0900 Subject: [PATCH 064/548] Upadate README CI configuration --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 1d181cf2b..3f42ae618 100644 --- a/README.md +++ b/README.md @@ -250,6 +250,13 @@ We have feature tests in /spec/features Run the tests with `rspec`. +## CI configuration +Add those lines to your CI scripts after `bundle install` +``` +npm install +cd client && $(npm bin)/webpack --config webpack.rails.config.js +``` + # Linting and Code Inspection ## Running Lint and CI tasks * Default rake task runs tests and linting (yes, repeating this!) (see `ci.rake`) From a6e0555eba9e240509ba4984b973fcdf838ab5dd Mon Sep 17 00:00:00 2001 From: Sergey Zyablitsky Date: Sat, 19 Sep 2015 18:19:44 +0900 Subject: [PATCH 065/548] Update README.md fix for new build system --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3f42ae618..7869b5b29 100644 --- a/README.md +++ b/README.md @@ -254,7 +254,7 @@ Run the tests with `rspec`. Add those lines to your CI scripts after `bundle install` ``` npm install -cd client && $(npm bin)/webpack --config webpack.rails.config.js +cd client && npm run build ``` # Linting and Code Inspection From a88cd1ce4368114f4d96ca88a63f144c1c6de05f Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Sun, 20 Sep 2015 21:23:12 -1000 Subject: [PATCH 066/548] Bump react_on_rails gem version to 1.0.3 Add server-bundle.js to .gitignore Add server webpack command to Procfile.dev Create webpack.server.config.js for server side rendering. Add react_on_rails config initializer file Rename App.jsx to ServerApp.jsx to use for App server-side Add clientGlobals.jsx entry point for client-side rendering Add serverGlobals.jsx entry point for server-side rendering Add ClientApp.jsx for client-side App --- .gitignore | 2 ++ Gemfile | 3 ++- Gemfile.lock | 10 +++++++-- Procfile.dev | 1 + app/views/pages/index.html.erb | 2 +- .../javascripts/{App.jsx => ClientApp.jsx} | 2 -- client/assets/javascripts/ServerApp.jsx | 17 +++++++++++++++ client/assets/javascripts/clientGlobals.jsx | 3 +++ client/assets/javascripts/serverGlobals.jsx | 7 +++++++ client/webpack.common.config.js | 2 +- client/webpack.rails.config.js | 2 +- client/webpack.server.config.js | 21 +++++++++++++++++++ config/initializers/react_on_rails.rb | 16 ++++++++++++++ 13 files changed, 80 insertions(+), 8 deletions(-) rename client/assets/javascripts/{App.jsx => ClientApp.jsx} (95%) mode change 100755 => 100644 create mode 100755 client/assets/javascripts/ServerApp.jsx create mode 100644 client/assets/javascripts/clientGlobals.jsx create mode 100644 client/assets/javascripts/serverGlobals.jsx create mode 100644 client/webpack.server.config.js create mode 100644 config/initializers/react_on_rails.rb diff --git a/.gitignore b/.gitignore index 2817fbbcf..6a1e60411 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ /public/assets client-bundle.js client-bundle.js.map +server-bundle.js +server-bundle.js.map .env node_modules npm-debug.log diff --git a/Gemfile b/Gemfile index 301460518..bc827d431 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,8 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" -gem "react_on_rails", "~> 0.1.1" +gem "react_on_rails", "~> 0.1.3" +gem "therubyracer" gem "autoprefixer-rails" diff --git a/Gemfile.lock b/Gemfile.lock index 83102356b..4254f8265 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -123,6 +123,7 @@ GEM kgio (2.9.3) launchy (2.4.3) addressable (~> 2.3) + libv8 (3.16.14.11) loofah (2.0.2) nokogiri (>= 1.5.9) mail (2.6.3) @@ -180,9 +181,10 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - react_on_rails (0.1.1) + react_on_rails (0.1.3) execjs (~> 2.5) rails (~> 4.2) + ref (2.0.0) rest-client (1.8.0) http-cookie (>= 1.0.2, < 2.0) mime-types (>= 1.16, < 3.0) @@ -252,6 +254,9 @@ GEM term-ansicolor (1.3.2) tins (~> 1.0) terminal-table (1.5.2) + therubyracer (0.12.2) + libv8 (~> 3.16.14.0) + ref thor (0.19.1) thread_safe (0.3.5) tilt (1.4.1) @@ -307,7 +312,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow - react_on_rails (~> 0.1.1) + react_on_rails (~> 0.1.3) rspec-rails rubocop ruby-lint @@ -317,6 +322,7 @@ DEPENDENCIES spring spring-commands-rspec sqlite3 + therubyracer turbolinks uglifier (~> 2.7.2) unicorn diff --git a/Procfile.dev b/Procfile.dev index 12f93ff4f..03105c6e6 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,3 +1,4 @@ web: rails s -p 4000 client: sh -c 'cd client && $(npm bin)/webpack -w --config webpack.rails.config.js' +server: sh -c 'cd client && $(npm bin)/webpack -w --config webpack.server.config.js' hot: sh -c 'cd client && node server.js' diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 3c9df8cd4..9c514b3c9 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -16,4 +16,4 @@

    -<%= react_component('App', {}, prerender: false) %> +<%= react_component('App', {}, generator_function: true, prerender: true) %> diff --git a/client/assets/javascripts/App.jsx b/client/assets/javascripts/ClientApp.jsx old mode 100755 new mode 100644 similarity index 95% rename from client/assets/javascripts/App.jsx rename to client/assets/javascripts/ClientApp.jsx index 15dadab08..fe28bb08c --- a/client/assets/javascripts/App.jsx +++ b/client/assets/javascripts/ClientApp.jsx @@ -13,7 +13,5 @@ const App = () => { return reactComponent; }; -window.App = App; - // Export is needed for the hot reload server export default App; diff --git a/client/assets/javascripts/ServerApp.jsx b/client/assets/javascripts/ServerApp.jsx new file mode 100755 index 000000000..fe28bb08c --- /dev/null +++ b/client/assets/javascripts/ServerApp.jsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { Provider } from 'react-redux'; + +import CommentScreen from './components/CommentScreen'; +import CommentStore from './stores/CommentStore'; + +const App = () => { + const reactComponent = ( + + {() => } + + ); + return reactComponent; +}; + +// Export is needed for the hot reload server +export default App; diff --git a/client/assets/javascripts/clientGlobals.jsx b/client/assets/javascripts/clientGlobals.jsx new file mode 100644 index 000000000..9d20ad388 --- /dev/null +++ b/client/assets/javascripts/clientGlobals.jsx @@ -0,0 +1,3 @@ +import App from './ClientApp'; + +window.App = App; diff --git a/client/assets/javascripts/serverGlobals.jsx b/client/assets/javascripts/serverGlobals.jsx new file mode 100644 index 000000000..eaddc5314 --- /dev/null +++ b/client/assets/javascripts/serverGlobals.jsx @@ -0,0 +1,7 @@ +// Example of React + Redux +// Shows the mapping from the exported object to the name used by the server rendering. +import App from './ServerApp'; + +// We can use the node global object for exposing. +// NodeJs: https://nodejs.org/api/globals.html#globals_global +global.App = App; diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 100712fb5..83d0c50e7 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -6,7 +6,7 @@ module.exports = { // the project dir context: __dirname, - entry: ['jquery', 'jquery-ujs', './assets/javascripts/App'], + entry: ['jquery', 'jquery-ujs'], resolve: { root: [ diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index 8236eb5b8..7c99c236f 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -12,7 +12,7 @@ config.output = { }; // You can add entry points specific to rails here -config.entry.push('./scripts/rails_only'); +config.entry.push('./scripts/rails_only', './assets/javascripts/clientGlobals'); // See webpack.common.config for adding modules common to both the webpack dev server and rails diff --git a/client/webpack.server.config.js b/client/webpack.server.config.js new file mode 100644 index 000000000..fa361ee1d --- /dev/null +++ b/client/webpack.server.config.js @@ -0,0 +1,21 @@ +const config = require('./webpack.common.config'); + +config.output = { + filename: 'server-bundle.js', + path: '../app/assets/javascripts/generated', + + // CRITICAL for enabling Rails to find the globally exposed variables. + libaryTarget: 'this', +}; + +config.entry.push('./assets/javascripts/serverGlobals'); + +config.module.loaders.push( + + { loader: 'babel-loader' }, + + // require Resolve must go first + // 1. React must be exposed (BOILERPLATE) + { test: require.resolve('react'), loader: 'expose?React' } +); +module.exports = config; diff --git a/config/initializers/react_on_rails.rb b/config/initializers/react_on_rails.rb new file mode 100644 index 000000000..a83b7706f --- /dev/null +++ b/config/initializers/react_on_rails.rb @@ -0,0 +1,16 @@ +# Shown below are the defaults for configuration +ReactOnRails.configure do |config| + # Client bundles are configured in application.js + + # 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 + + # Below options can be overriden by passing to the helper method. + config.prerender = true # default is false + config.generator_function = true # default is false, meaning that you expose ReactComponents directly + config.trace = Rails.env.development? # default is true for development, off otherwise + + # For server rendering. This can be set to false so that server side messages are discarded. + config.replay_console = true # Default is true. Be cautious about turning this off. +end From 84263355d579aa4e4d13eaa2493708f322d94403 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Mon, 21 Sep 2015 12:32:04 +0300 Subject: [PATCH 067/548] Ignore generated js bundles --- .gitignore | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 6a1e60411..f9252f3a0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,10 +15,6 @@ /log/*.log /tmp /public/assets -client-bundle.js -client-bundle.js.map -server-bundle.js -server-bundle.js.map .env node_modules npm-debug.log @@ -29,3 +25,6 @@ vendor/ruby # RVM gemset .ruby-gemset + +# Generated js bundles +/app/assets/javascripts/generated/* From 73222887e24b0d297a6c34842fe57ec5bf61b44e Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Mon, 21 Sep 2015 15:58:39 +0300 Subject: [PATCH 068/548] Fix server-side rendering with react_on_rails gem --- .../actions/CommentActionCreators.js | 18 +- .../javascripts/utils/CommentsManager.js | 39 +- client/npm-shrinkwrap.json | 676 +++++++++--------- client/package.json | 1 + client/scripts/webpack_only.jsx | 3 - client/webpack.common.config.js | 4 +- client/webpack.hot.config.js | 7 + client/webpack.rails.config.js | 6 +- client/webpack.server.config.js | 9 +- 9 files changed, 398 insertions(+), 365 deletions(-) diff --git a/client/assets/javascripts/actions/CommentActionCreators.js b/client/assets/javascripts/actions/CommentActionCreators.js index 4b4c38e15..5808f2b5c 100644 --- a/client/assets/javascripts/actions/CommentActionCreators.js +++ b/client/assets/javascripts/actions/CommentActionCreators.js @@ -43,9 +43,10 @@ export function submitCommentFailure(error) { export function fetchComments() { return dispatch => { - return CommentsManager.fetchComments().then( - comments => dispatch(fetchCommentsSuccess(comments)), - error => dispatch(fetchCommentsFailure(error)) + return ( + CommentsManager.fetchComments() + .then(res => dispatch(fetchCommentsSuccess(res.data))) + .catch(res => dispatch(fetchCommentsFailure(res.data))) ); }; } @@ -57,10 +58,11 @@ function dispatchDecrementAjaxCounter(dispatch) { export function submitComment(comment) { return dispatch => { dispatch(incrementAjaxCounter()); - return CommentsManager.submitComment(comment) - .then( - _comment => dispatch(submitCommentSuccess(_comment)), - error => dispatch(submitCommentFailure(error))) - .then(() => dispatchDecrementAjaxCounter(dispatch)); + return ( + CommentsManager.submitComment(comment) + .then(res => dispatch(submitCommentSuccess(res.data))) + .catch(res => dispatch(submitCommentFailure(res.data))) + .then(() => dispatchDecrementAjaxCounter(dispatch)) + ); }; } diff --git a/client/assets/javascripts/utils/CommentsManager.js b/client/assets/javascripts/utils/CommentsManager.js index 4348018cb..e3360b7c6 100644 --- a/client/assets/javascripts/utils/CommentsManager.js +++ b/client/assets/javascripts/utils/CommentsManager.js @@ -1,4 +1,4 @@ -import $ from 'jquery'; +import request from 'axios'; const API_URL = 'comments.json'; @@ -10,10 +10,11 @@ const CommentsManager = { * @returns {Promise} - jqXHR result of ajax call. */ fetchComments() { - return Promise.resolve($.ajax({ + return request({ + method: 'GET', url: API_URL, - dataType: 'json', - })); + responseType: 'json', + }); }, /** @@ -23,13 +24,33 @@ const CommentsManager = { * @returns {Promise} - jqXHR result of ajax call. */ submitComment(comment) { - return Promise.resolve($.ajax({ + return request({ + method: 'POST', url: API_URL, - dataType: 'json', - type: 'POST', - data: {comment: comment}, - })); + responseType: 'json', + headers: { + 'X-CSRF-Token': this.getCSRFToken(), + }, + data: { comment }, + }); }, + + /** + * Get CSRF Token from the DOM. + * + * @returns {String} - CSRF Token. + */ + getCSRFToken() { + const metas = document.getElementsByTagName('meta'); + for (let i = 0; i < metas.length; i++) { + const meta = metas[i]; + if (meta.getAttribute('name') === 'csrf-token') { + return meta.getAttribute('content'); + } + } + return null; + }, + }; export default CommentsManager; diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index baa404962..8943c431e 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -2,233 +2,245 @@ "name": "react-webpack-rails-tutorial", "version": "1.1.0", "dependencies": { + "axios": { + "version": "0.5.4", + "from": "axios@*", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.5.4.tgz", + "dependencies": { + "es6-promise": { + "version": "2.3.0", + "from": "es6-promise@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz" + } + } + }, "babel-core": { "version": "5.8.25", - "from": "babel-core@>=5.8.23 <6.0.0", + "from": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", "dependencies": { "babel-plugin-constant-folding": { "version": "1.0.1", - "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" }, "babel-plugin-dead-code-elimination": { "version": "1.0.2", - "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" }, "babel-plugin-eval": { "version": "1.0.1", - "from": "babel-plugin-eval@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" }, "babel-plugin-inline-environment-variables": { "version": "1.0.1", - "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" }, "babel-plugin-jscript": { "version": "1.0.4", - "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" }, "babel-plugin-member-expression-literals": { "version": "1.0.1", - "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" }, "babel-plugin-property-literals": { "version": "1.0.1", - "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" }, "babel-plugin-proto-to-assign": { "version": "1.0.4", - "from": "babel-plugin-proto-to-assign@>=1.0.3 <2.0.0", + "from": "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" }, "babel-plugin-react-constant-elements": { "version": "1.0.3", - "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" }, "babel-plugin-react-display-name": { "version": "1.0.3", - "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" }, "babel-plugin-remove-console": { "version": "1.0.1", - "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" }, "babel-plugin-remove-debugger": { "version": "1.0.1", - "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" }, "babel-plugin-runtime": { "version": "1.0.7", - "from": "babel-plugin-runtime@>=1.0.7 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz" }, "babel-plugin-undeclared-variables-check": { "version": "1.0.2", - "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", "dependencies": { "leven": { "version": "1.0.2", - "from": "leven@>=1.0.2 <2.0.0", + "from": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" } } }, "babel-plugin-undefined-to-void": { "version": "1.1.6", - "from": "babel-plugin-undefined-to-void@>=1.1.6 <2.0.0", + "from": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", "resolved": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz" }, "babylon": { "version": "5.8.23", - "from": "babylon@>=5.8.23 <6.0.0", + "from": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz", "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" }, "bluebird": { "version": "2.10.0", - "from": "bluebird@>=2.9.33 <3.0.0", + "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.0.tgz", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.0.tgz" }, "chalk": { "version": "1.1.1", - "from": "chalk@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", "dependencies": { "ansi-styles": { "version": "2.1.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", + "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" }, "escape-string-regexp": { "version": "1.0.3", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" }, "has-ansi": { "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "dependencies": { "ansi-regex": { "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "strip-ansi": { "version": "3.0.0", - "from": "strip-ansi@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", "dependencies": { "ansi-regex": { "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "supports-color": { "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } } }, "convert-source-map": { "version": "1.1.1", - "from": "convert-source-map@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" }, "core-js": { "version": "1.1.4", - "from": "core-js@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz" }, "debug": { "version": "2.2.0", - "from": "debug@>=2.1.1 <3.0.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "ms@0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" } } }, "detect-indent": { "version": "3.0.1", - "from": "detect-indent@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", "dependencies": { "get-stdin": { "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", + "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" }, "minimist": { "version": "1.2.0", - "from": "minimist@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" } } }, "esutils": { "version": "2.0.2", - "from": "esutils@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" }, "fs-readdir-recursive": { "version": "0.1.2", - "from": "fs-readdir-recursive@>=0.1.0 <0.2.0", + "from": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" }, "globals": { "version": "6.4.1", - "from": "globals@>=6.4.0 <7.0.0", + "from": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz" }, "home-or-tmp": { "version": "1.0.0", - "from": "home-or-tmp@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", "dependencies": { "os-tmpdir": { "version": "1.0.1", - "from": "os-tmpdir@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" }, "user-home": { "version": "1.1.1", - "from": "user-home@>=1.1.1 <2.0.0", + "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" } } }, "is-integer": { "version": "1.0.6", - "from": "is-integer@>=1.0.4 <2.0.0", + "from": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", "dependencies": { "is-finite": { "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", "dependencies": { "number-is-nan": { "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" } } @@ -237,49 +249,49 @@ }, "js-tokens": { "version": "1.0.1", - "from": "js-tokens@1.0.1", + "from": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" }, "json5": { "version": "0.4.0", - "from": "json5@>=0.4.0 <0.5.0", + "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" }, "line-numbers": { "version": "0.2.0", - "from": "line-numbers@0.2.0", + "from": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", "dependencies": { "left-pad": { "version": "0.0.3", - "from": "left-pad@0.0.3", + "from": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" } } }, "lodash": { "version": "3.10.1", - "from": "lodash@>=3.10.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "minimatch": { "version": "2.0.10", - "from": "minimatch@>=2.0.3 <3.0.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { "brace-expansion": { "version": "1.1.0", - "from": "brace-expansion@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", "dependencies": { "balanced-match": { "version": "0.2.0", - "from": "balanced-match@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" }, "concat-map": { "version": "0.0.1", - "from": "concat-map@0.0.1", + "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" } } @@ -288,115 +300,115 @@ }, "output-file-sync": { "version": "1.1.1", - "from": "output-file-sync@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "mkdirp@>=0.5.1 <0.6.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { "version": "0.0.8", - "from": "minimist@0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "xtend": { "version": "4.0.0", - "from": "xtend@>=4.0.0 <5.0.0", + "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" } } }, "path-exists": { "version": "1.0.0", - "from": "path-exists@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz" }, "path-is-absolute": { "version": "1.0.0", - "from": "path-is-absolute@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" }, "private": { "version": "0.1.6", - "from": "private@>=0.1.6 <0.2.0", + "from": "https://registry.npmjs.org/private/-/private-0.1.6.tgz", "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" }, "regenerator": { "version": "0.8.35", - "from": "regenerator@0.8.35", + "from": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", "dependencies": { "commoner": { "version": "0.10.3", - "from": "commoner@>=0.10.0 <0.11.0", + "from": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", "dependencies": { "q": { "version": "1.1.2", - "from": "q@>=1.1.2 <1.2.0", + "from": "https://registry.npmjs.org/q/-/q-1.1.2.tgz", "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" }, "commander": { "version": "2.5.1", - "from": "commander@>=2.5.0 <2.6.0", + "from": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" }, "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.4 <3.1.0", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" }, "glob": { "version": "4.2.2", - "from": "glob@>=4.2.1 <4.3.0", + "from": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", "dependencies": { "inflight": { "version": "1.0.4", - "from": "inflight@>=1.0.4 <2.0.0", + "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", "dependencies": { "wrappy": { "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" } } }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "minimatch": { "version": "1.0.0", - "from": "minimatch@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", "dependencies": { "lru-cache": { "version": "2.7.0", - "from": "lru-cache@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "sigmund": { "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" } } }, "once": { "version": "1.3.2", - "from": "once@>=1.3.0 <2.0.0", + "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", "dependencies": { "wrappy": { "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" } } @@ -405,151 +417,151 @@ }, "mkdirp": { "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { "version": "0.0.8", - "from": "minimist@0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "install": { "version": "0.1.8", - "from": "install@>=0.1.7 <0.2.0", + "from": "https://registry.npmjs.org/install/-/install-0.1.8.tgz", "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" }, "iconv-lite": { "version": "0.4.11", - "from": "iconv-lite@>=0.4.5 <0.5.0", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" } } }, "defs": { "version": "1.1.0", - "from": "defs@>=1.1.0 <1.2.0", + "from": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", "dependencies": { "alter": { "version": "0.2.0", - "from": "alter@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", "dependencies": { "stable": { "version": "0.1.5", - "from": "stable@>=0.1.3 <0.2.0", + "from": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" } } }, "ast-traverse": { "version": "0.1.1", - "from": "ast-traverse@>=0.1.1 <0.2.0", + "from": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" }, "breakable": { "version": "1.0.0", - "from": "breakable@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" }, "esprima-fb": { "version": "8001.1001.0-dev-harmony-fb", - "from": "esprima-fb@>=8001.1001.0-dev-harmony-fb <8001.1002.0", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz" }, "simple-fmt": { "version": "0.1.0", - "from": "simple-fmt@>=0.1.0 <0.2.0", + "from": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" }, "simple-is": { "version": "0.2.0", - "from": "simple-is@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" }, "stringmap": { "version": "0.2.2", - "from": "stringmap@>=0.2.2 <0.3.0", + "from": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" }, "stringset": { "version": "0.2.1", - "from": "stringset@>=0.2.1 <0.3.0", + "from": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz" }, "tryor": { "version": "0.1.2", - "from": "tryor@>=0.1.2 <0.2.0", + "from": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" }, "yargs": { "version": "1.3.3", - "from": "yargs@>=1.3.2 <1.4.0", + "from": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" } } }, "esprima-fb": { "version": "15001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" }, "recast": { "version": "0.10.24", - "from": "recast@0.10.24", + "from": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", "dependencies": { "ast-types": { "version": "0.8.5", - "from": "ast-types@0.8.5", + "from": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" } } }, "through": { "version": "2.3.8", - "from": "through@>=2.3.6 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" } } }, "regexpu": { "version": "1.2.0", - "from": "regexpu@>=1.1.2 <2.0.0", + "from": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", "dependencies": { "recast": { "version": "0.10.32", - "from": "recast@>=0.10.6 <0.11.0", + "from": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", "dependencies": { "ast-types": { "version": "0.8.11", - "from": "ast-types@0.8.11", + "from": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz" } } }, "regenerate": { "version": "1.2.1", - "from": "regenerate@>=1.2.1 <2.0.0", + "from": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" }, "regjsgen": { "version": "0.2.0", - "from": "regjsgen@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" }, "regjsparser": { "version": "0.1.5", - "from": "regjsparser@>=0.1.4 <0.2.0", + "from": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "dependencies": { "jsesc": { "version": "0.5.0", - "from": "jsesc@>=0.5.0 <0.6.0", + "from": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" } } @@ -558,17 +570,17 @@ }, "repeating": { "version": "1.1.3", - "from": "repeating@>=1.1.2 <2.0.0", + "from": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "dependencies": { "is-finite": { "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", "dependencies": { "number-is-nan": { "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" } } @@ -577,44 +589,44 @@ }, "resolve": { "version": "1.1.6", - "from": "resolve@>=1.1.6 <2.0.0", + "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" }, "shebang-regex": { "version": "1.0.0", - "from": "shebang-regex@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" }, "slash": { "version": "1.0.0", - "from": "slash@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" }, "source-map": { "version": "0.4.4", - "from": "source-map@>=0.4.0 <0.5.0", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, "source-map-support": { "version": "0.2.10", - "from": "source-map-support@>=0.2.10 <0.3.0", + "from": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "dependencies": { "source-map": { "version": "0.1.32", - "from": "source-map@0.1.32", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -623,134 +635,134 @@ }, "to-fast-properties": { "version": "1.0.1", - "from": "to-fast-properties@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" }, "trim-right": { "version": "1.0.1", - "from": "trim-right@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" }, "try-resolve": { "version": "1.0.1", - "from": "try-resolve@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" } } }, "babel-loader": { "version": "5.3.2", - "from": "babel-loader@>=5.3.2 <6.0.0", + "from": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", "dependencies": { "object-assign": { "version": "3.0.0", - "from": "object-assign@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" } } }, "body-parser": { "version": "1.14.0", - "from": "body-parser@>=1.13.3 <2.0.0", + "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.0.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.0.tgz", "dependencies": { "bytes": { "version": "2.1.0", - "from": "bytes@2.1.0", + "from": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" }, "content-type": { "version": "1.0.1", - "from": "content-type@>=1.0.1 <1.1.0", + "from": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" }, "debug": { "version": "2.2.0", - "from": "debug@>=2.2.0 <2.3.0", + "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "ms@0.7.1", + "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" } } }, "depd": { "version": "1.1.0", - "from": "depd@>=1.1.0 <1.2.0", + "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" }, "http-errors": { "version": "1.3.1", - "from": "http-errors@>=1.3.1 <1.4.0", + "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "statuses": { "version": "1.2.1", - "from": "statuses@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" } } }, "iconv-lite": { "version": "0.4.11", - "from": "iconv-lite@0.4.11", + "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" }, "on-finished": { "version": "2.3.0", - "from": "on-finished@>=2.3.0 <2.4.0", + "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "ee-first@1.1.1", + "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" } } }, "qs": { "version": "5.1.0", - "from": "qs@5.1.0", + "from": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" }, "raw-body": { "version": "2.1.3", - "from": "raw-body@>=2.1.3 <2.2.0", + "from": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.3.tgz", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.3.tgz", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "unpipe@1.0.0", + "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" } } }, "type-is": { "version": "1.6.8", - "from": "type-is@>=1.6.8 <1.7.0", + "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "media-typer@0.3.0", + "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" }, "mime-types": { "version": "2.1.6", - "from": "mime-types@>=2.1.6 <2.2.0", + "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", "dependencies": { "mime-db": { "version": "1.18.0", - "from": "mime-db@>=1.18.0 <1.19.0", + "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz" } } @@ -761,37 +773,37 @@ }, "es5-shim": { "version": "4.1.13", - "from": "es5-shim@>=4.1.12 <5.0.0", + "from": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.13.tgz", "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.13.tgz" }, "es6-promise": { "version": "3.0.2", - "from": "es6-promise@>=3.0.2 <4.0.0", + "from": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" }, "expose-loader": { "version": "0.7.0", - "from": "expose-loader@>=0.7.0 <0.8.0", + "from": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" }, "immutable": { "version": "3.7.5", - "from": "immutable@>=3.7.5 <4.0.0", + "from": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz" }, "imports-loader": { "version": "0.6.4", - "from": "imports-loader@>=0.6.4 <0.7.0", + "from": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", "dependencies": { "source-map": { "version": "0.1.43", - "from": "source-map@>=0.1.0 <0.2.0", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -800,74 +812,74 @@ }, "jquery": { "version": "2.1.4", - "from": "jquery@>=2.1.4 <3.0.0", + "from": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" }, "jquery-ujs": { "version": "1.1.0-1", - "from": "jquery-ujs@>=1.1.0-1 <2.0.0", + "from": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.1.0-1.tgz", "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.1.0-1.tgz" }, "loader-utils": { "version": "0.2.11", - "from": "loader-utils@>=0.2.11 <0.3.0", + "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", "dependencies": { "big.js": { "version": "3.1.3", - "from": "big.js@>=3.0.2 <4.0.0", + "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" }, "json5": { "version": "0.4.0", - "from": "json5@>=0.4.0 <0.5.0", + "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" } } }, "marked": { "version": "0.3.5", - "from": "marked@>=0.3.5 <0.4.0", + "from": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" }, "react": { "version": "0.13.3", - "from": "react@>=0.13.3 <0.14.0", + "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "base62@0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "source-map@0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -880,89 +892,89 @@ }, "react-bootstrap": { "version": "0.25.2", - "from": "react-bootstrap@>=0.25.1 <0.26.0", + "from": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.2.tgz", "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.2.tgz", "dependencies": { "babel-runtime": { "version": "5.8.24", - "from": "babel-runtime@>=5.8.19 <6.0.0", + "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", "dependencies": { "core-js": { "version": "1.1.4", - "from": "core-js@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz" } } }, "classnames": { "version": "2.1.3", - "from": "classnames@>=2.1.3 <3.0.0", + "from": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz" }, "dom-helpers": { "version": "2.4.0", - "from": "dom-helpers@>=2.2.4 <3.0.0", + "from": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz" }, "keycode": { "version": "2.1.0", - "from": "keycode@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz", "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz" }, "lodash": { "version": "3.10.1", - "from": "lodash@>=3.10.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "react-overlays": { "version": "0.4.4", - "from": "react-overlays@>=0.4.4 <0.5.0", + "from": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.4.4.tgz", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.4.4.tgz", "dependencies": { "react-prop-types": { "version": "0.2.2", - "from": "react-prop-types@>=0.2.1 <0.3.0", + "from": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz", "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" }, "warning": { "version": "2.0.0", - "from": "warning@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/warning/-/warning-2.0.0.tgz", "resolved": "https://registry.npmjs.org/warning/-/warning-2.0.0.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "base62@0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "source-map@0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -977,47 +989,47 @@ }, "uncontrollable": { "version": "3.1.2", - "from": "uncontrollable@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.2.tgz", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.2.tgz", "dependencies": { "invariant": { "version": "2.1.0", - "from": "invariant@>=2.1.0 <3.0.0", + "from": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "base62@0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "source-map@0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -1034,47 +1046,47 @@ }, "react-redux": { "version": "2.1.2", - "from": "react-redux@>=2.1.1 <3.0.0", + "from": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.2.tgz", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.2.tgz", "dependencies": { "invariant": { "version": "2.1.0", - "from": "invariant@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", + "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", + "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "base62@0.1.1", + "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "source-map@0.1.31", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -1089,42 +1101,42 @@ }, "redux": { "version": "2.0.0", - "from": "redux@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/redux/-/redux-2.0.0.tgz", "resolved": "https://registry.npmjs.org/redux/-/redux-2.0.0.tgz" }, "redux-promise": { "version": "0.5.0", - "from": "redux-promise@>=0.5.0 <0.6.0", + "from": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", "dependencies": { "flux-standard-action": { "version": "0.6.0", - "from": "flux-standard-action@0.6.0", + "from": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", "dependencies": { "lodash.isplainobject": { "version": "3.2.0", - "from": "lodash.isplainobject@>=3.2.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", "dependencies": { "lodash._basefor": { "version": "3.0.2", - "from": "lodash._basefor@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz", "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz" }, "lodash.isarguments": { "version": "3.0.4", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" }, "lodash.keysin": { "version": "3.0.8", - "from": "lodash.keysin@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", "dependencies": { "lodash.isarray": { "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" } } @@ -1137,296 +1149,296 @@ }, "redux-thunk": { "version": "0.1.0", - "from": "redux-thunk@>=0.1.0 <0.2.0", + "from": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz" }, "sleep": { "version": "3.0.0", - "from": "sleep@>=3.0.0 <4.0.0", + "from": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "dependencies": { "nan": { "version": "2.0.9", - "from": "nan@>=2.0.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" } } }, "webpack": { "version": "1.12.2", - "from": "webpack@>=1.12.1 <2.0.0", + "from": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", "dependencies": { "async": { "version": "1.4.2", - "from": "async@>=1.3.0 <2.0.0", + "from": "https://registry.npmjs.org/async/-/async-1.4.2.tgz", "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" }, "clone": { "version": "1.0.2", - "from": "clone@>=1.0.2 <2.0.0", + "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" }, "enhanced-resolve": { "version": "0.9.0", - "from": "enhanced-resolve@>=0.9.0 <0.10.0", + "from": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", "dependencies": { "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <4.0.0", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "esprima": { "version": "2.6.0", - "from": "esprima@>=2.5.0 <3.0.0", + "from": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" }, "interpret": { "version": "0.6.5", - "from": "interpret@>=0.6.4 <0.7.0", + "from": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz", "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz" }, "memory-fs": { "version": "0.2.0", - "from": "memory-fs@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" }, "mkdirp": { "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", + "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { "version": "0.0.8", - "from": "minimist@0.0.8", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "node-libs-browser": { "version": "0.5.3", - "from": "node-libs-browser@>=0.4.0 <=0.6.0", + "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", "dependencies": { "assert": { "version": "1.3.0", - "from": "assert@>=1.1.1 <2.0.0", + "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" }, "browserify-zlib": { "version": "0.1.4", - "from": "browserify-zlib@>=0.1.4 <0.2.0", + "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "dependencies": { "pako": { "version": "0.2.8", - "from": "pako@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" } } }, "buffer": { "version": "3.5.0", - "from": "buffer@>=3.0.3 <4.0.0", + "from": "https://registry.npmjs.org/buffer/-/buffer-3.5.0.tgz", "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.0.tgz", "dependencies": { "base64-js": { "version": "0.0.8", - "from": "base64-js@0.0.8", + "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" }, "ieee754": { "version": "1.1.6", - "from": "ieee754@>=1.1.4 <2.0.0", + "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz" }, "is-array": { "version": "1.0.1", - "from": "is-array@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" } } }, "console-browserify": { "version": "1.1.0", - "from": "console-browserify@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "dependencies": { "date-now": { "version": "0.1.4", - "from": "date-now@>=0.1.4 <0.2.0", + "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" } } }, "constants-browserify": { "version": "0.0.1", - "from": "constants-browserify@0.0.1", + "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" }, "crypto-browserify": { "version": "3.2.8", - "from": "crypto-browserify@>=3.2.6 <3.3.0", + "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", "dependencies": { "pbkdf2-compat": { "version": "2.0.1", - "from": "pbkdf2-compat@2.0.1", + "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" }, "ripemd160": { "version": "0.2.0", - "from": "ripemd160@0.2.0", + "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" }, "sha.js": { "version": "2.2.6", - "from": "sha.js@2.2.6", + "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" } } }, "domain-browser": { "version": "1.1.4", - "from": "domain-browser@>=1.1.1 <2.0.0", + "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" }, "events": { "version": "1.0.2", - "from": "events@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" }, "http-browserify": { "version": "1.7.0", - "from": "http-browserify@>=1.3.2 <2.0.0", + "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "dependencies": { "Base64": { "version": "0.2.1", - "from": "Base64@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "https-browserify": { "version": "0.0.0", - "from": "https-browserify@0.0.0", + "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" }, "os-browserify": { "version": "0.1.2", - "from": "os-browserify@>=0.1.2 <0.2.0", + "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" }, "path-browserify": { "version": "0.0.0", - "from": "path-browserify@0.0.0", + "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" }, "process": { "version": "0.11.2", - "from": "process@>=0.11.0 <0.12.0", + "from": "https://registry.npmjs.org/process/-/process-0.11.2.tgz", "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" }, "punycode": { "version": "1.3.2", - "from": "punycode@>=1.2.4 <2.0.0", + "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" }, "querystring-es3": { "version": "0.2.1", - "from": "querystring-es3@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" }, "readable-stream": { "version": "1.1.13", - "from": "readable-stream@>=1.1.13 <2.0.0", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", + "from": "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.1.tgz" }, "isarray": { "version": "0.0.1", - "from": "isarray@0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "stream-browserify": { "version": "1.0.0", - "from": "stream-browserify@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "string_decoder": { "version": "0.10.31", - "from": "string_decoder@>=0.10.25 <0.11.0", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "timers-browserify": { "version": "1.4.1", - "from": "timers-browserify@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" }, "tty-browserify": { "version": "0.0.0", - "from": "tty-browserify@0.0.0", + "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" }, "url": { "version": "0.10.3", - "from": "url@>=0.10.1 <0.11.0", + "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "dependencies": { "querystring": { "version": "0.2.0", - "from": "querystring@0.2.0", + "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" } } }, "util": { "version": "0.10.3", - "from": "util@>=0.10.3 <0.11.0", + "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "inherits@2.0.1", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "vm-browserify": { "version": "0.0.4", - "from": "vm-browserify@0.0.4", + "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "dependencies": { "indexof": { "version": "0.0.1", - "from": "indexof@0.0.1", + "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" } } @@ -1435,88 +1447,88 @@ }, "optimist": { "version": "0.6.1", - "from": "optimist@>=0.6.0 <0.7.0", + "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "wordwrap@>=0.0.2 <0.1.0", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" }, "minimist": { "version": "0.0.10", - "from": "minimist@>=0.0.1 <0.1.0", + "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" } } }, "supports-color": { "version": "3.1.1", - "from": "supports-color@>=3.1.0 <4.0.0", + "from": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", "dependencies": { "has-flag": { "version": "1.0.0", - "from": "has-flag@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" } } }, "tapable": { "version": "0.1.9", - "from": "tapable@>=0.1.8 <0.2.0", + "from": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" }, "uglify-js": { "version": "2.4.24", - "from": "uglify-js@>=2.4.24 <2.5.0", + "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "dependencies": { "async": { "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", + "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, "source-map": { "version": "0.1.34", - "from": "source-map@0.1.34", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "uglify-to-browserify@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" }, "yargs": { "version": "3.5.4", - "from": "yargs@>=3.5.4 <3.6.0", + "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "camelcase@>=1.0.2 <2.0.0", + "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" }, "decamelize": { "version": "1.0.0", - "from": "decamelize@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" }, "window-size": { "version": "0.1.0", - "from": "window-size@0.1.0", + "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" }, "wordwrap": { "version": "0.0.2", - "from": "wordwrap@0.0.2", + "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" } } @@ -1525,84 +1537,84 @@ }, "watchpack": { "version": "0.2.8", - "from": "watchpack@>=0.2.1 <0.3.0", + "from": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", "dependencies": { "async": { "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", + "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" }, "chokidar": { "version": "1.0.6", - "from": "chokidar@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.6.tgz", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.6.tgz", "dependencies": { "anymatch": { "version": "1.3.0", - "from": "anymatch@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "dependencies": { "micromatch": { "version": "2.2.0", - "from": "micromatch@>=2.1.5 <3.0.0", + "from": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", "dependencies": { "arr-diff": { "version": "1.1.0", - "from": "arr-diff@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "dependencies": { "arr-flatten": { "version": "1.0.1", - "from": "arr-flatten@>=1.0.1 <2.0.0", + "from": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz" }, "array-slice": { "version": "0.2.3", - "from": "array-slice@>=0.2.3 <0.3.0", + "from": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" } } }, "array-unique": { "version": "0.2.1", - "from": "array-unique@>=0.2.1 <0.3.0", + "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" }, "braces": { "version": "1.8.1", - "from": "braces@>=1.8.0 <2.0.0", + "from": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", "dependencies": { "expand-range": { "version": "1.8.1", - "from": "expand-range@>=1.8.1 <2.0.0", + "from": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", "dependencies": { "fill-range": { "version": "2.2.2", - "from": "fill-range@>=2.1.0 <3.0.0", + "from": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", "dependencies": { "is-number": { "version": "1.1.2", - "from": "is-number@>=1.1.2 <2.0.0", + "from": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz", "resolved": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz" }, "isobject": { "version": "1.0.2", - "from": "isobject@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" }, "randomatic": { "version": "1.1.0", - "from": "randomatic@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" }, "repeat-string": { "version": "1.5.2", - "from": "repeat-string@>=1.5.2 <2.0.0", + "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" } } @@ -1611,124 +1623,124 @@ }, "lazy-cache": { "version": "0.2.3", - "from": "lazy-cache@>=0.2.3 <0.3.0", + "from": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" }, "preserve": { "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" }, "repeat-element": { "version": "1.1.2", - "from": "repeat-element@>=1.1.2 <2.0.0", + "from": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" } } }, "expand-brackets": { "version": "0.1.4", - "from": "expand-brackets@>=0.1.1 <0.2.0", + "from": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" }, "extglob": { "version": "0.3.1", - "from": "extglob@>=0.3.0 <0.4.0", + "from": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", "dependencies": { "ansi-green": { "version": "0.1.1", - "from": "ansi-green@>=0.1.1 <0.2.0", + "from": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", "dependencies": { "ansi-wrap": { "version": "0.1.0", - "from": "ansi-wrap@0.1.0", + "from": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" } } }, "is-extglob": { "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" }, "success-symbol": { "version": "0.1.0", - "from": "success-symbol@>=0.1.0 <0.2.0", + "from": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" } } }, "filename-regex": { "version": "2.0.0", - "from": "filename-regex@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" }, "kind-of": { "version": "1.1.0", - "from": "kind-of@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" }, "object.omit": { "version": "1.1.0", - "from": "object.omit@>=1.1.0 <2.0.0", + "from": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", "dependencies": { "for-own": { "version": "0.1.3", - "from": "for-own@>=0.1.3 <0.2.0", + "from": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", "dependencies": { "for-in": { "version": "0.1.4", - "from": "for-in@>=0.1.4 <0.2.0", + "from": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz" } } }, "isobject": { "version": "1.0.2", - "from": "isobject@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" } } }, "parse-glob": { "version": "3.0.2", - "from": "parse-glob@>=3.0.1 <4.0.0", + "from": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", "dependencies": { "glob-base": { "version": "0.2.0", - "from": "glob-base@>=0.2.0 <0.3.0", + "from": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" }, "is-dotfile": { "version": "1.0.1", - "from": "is-dotfile@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" }, "is-extglob": { "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" } } }, "regex-cache": { "version": "0.4.2", - "from": "regex-cache@>=0.4.2 <0.5.0", + "from": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", "dependencies": { "is-equal-shallow": { "version": "0.1.3", - "from": "is-equal-shallow@>=0.1.1 <0.2.0", + "from": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" }, "is-primitive": { "version": "2.0.0", - "from": "is-primitive@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" } } @@ -1739,98 +1751,98 @@ }, "arrify": { "version": "1.0.0", - "from": "arrify@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" }, "async-each": { "version": "0.1.6", - "from": "async-each@>=0.1.5 <0.2.0", + "from": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" }, "glob-parent": { "version": "1.3.0", - "from": "glob-parent@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.3.0.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.3.0.tgz", "dependencies": { "is-glob": { "version": "2.0.0", - "from": "is-glob@>=2.0.0 <3.0.0", + "from": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.0.tgz", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.0.tgz" } } }, "is-binary-path": { "version": "1.0.1", - "from": "is-binary-path@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "dependencies": { "binary-extensions": { "version": "1.3.1", - "from": "binary-extensions@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" } } }, "is-glob": { "version": "1.1.3", - "from": "is-glob@>=1.1.3 <2.0.0", + "from": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" }, "path-is-absolute": { "version": "1.0.0", - "from": "path-is-absolute@>=1.0.0 <2.0.0", + "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" }, "readdirp": { "version": "1.4.0", - "from": "readdirp@>=1.3.0 <2.0.0", + "from": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", "dependencies": { "graceful-fs": { "version": "4.1.2", - "from": "graceful-fs@>=4.1.2 <4.2.0", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" }, "minimatch": { "version": "0.2.14", - "from": "minimatch@>=0.2.12 <0.3.0", + "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", "dependencies": { "lru-cache": { "version": "2.7.0", - "from": "lru-cache@>=2.6.5 <3.0.0", + "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "sigmund": { "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", + "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" } } }, "readable-stream": { "version": "1.0.33", - "from": "readable-stream@>=1.0.26-2 <1.1.0", + "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", + "from": "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.1.tgz" }, "isarray": { "version": "0.0.1", - "from": "isarray@0.0.1", + "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "string_decoder": { "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", + "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "inherits": { "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", + "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } @@ -1839,12 +1851,12 @@ }, "fsevents": { "version": "0.3.8", - "from": "fsevents@>=0.3.8 <0.4.0", + "from": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", "dependencies": { "nan": { "version": "2.0.9", - "from": "nan@>=2.0.2 <3.0.0", + "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" } } @@ -1853,31 +1865,31 @@ }, "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <4.0.0", + "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "webpack-core": { "version": "0.6.7", - "from": "webpack-core@>=0.6.0 <0.7.0", + "from": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz", "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz", "dependencies": { "source-map": { "version": "0.4.4", - "from": "source-map@>=0.4.1 <0.5.0", + "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "amdefine@>=0.0.4", + "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, "source-list-map": { "version": "0.1.5", - "from": "source-list-map@>=0.1.0 <0.2.0", + "from": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" } } diff --git a/client/package.json b/client/package.json index 009d4ef4a..bd8e7a5e3 100644 --- a/client/package.json +++ b/client/package.json @@ -23,6 +23,7 @@ }, "homepage": "https://github.com/shakacode/react-webpack-rails-tutorial", "dependencies": { + "axios": "^0.5.4", "babel-core": "^5.8.23", "babel-loader": "^5.3.2", "body-parser": "^1.13.3", diff --git a/client/scripts/webpack_only.jsx b/client/scripts/webpack_only.jsx index beee31ad6..a0fbe11d7 100755 --- a/client/scripts/webpack_only.jsx +++ b/client/scripts/webpack_only.jsx @@ -6,6 +6,3 @@ require('test-stylesheet.css'); // Note that any sass in here cannot use the variables and mixins // defined in the boostrap customizations file. require('test-sass-stylesheet.scss'); - -require('expose?$!jquery'); -require('expose?jQuery!jquery'); diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 83d0c50e7..4c59b907b 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -6,7 +6,7 @@ module.exports = { // the project dir context: __dirname, - entry: ['jquery', 'jquery-ujs'], + entry: [], resolve: { root: [ @@ -20,8 +20,6 @@ module.exports = { // React is necessary for the client rendering: {test: require.resolve('react'), loader: 'expose?React'}, - {test: require.resolve('jquery'), loader: 'expose?jQuery'}, - {test: require.resolve('jquery'), loader: 'expose?$'}, ], }, }; diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index d63768a89..09007011c 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -10,6 +10,9 @@ const webpack = require('webpack'); config.entry.push('webpack-dev-server/client?http://localhost:3000', 'webpack/hot/dev-server', './scripts/webpack_only', + 'jquery', + 'jquery-ujs', + './assets/javascripts/clientGlobals', // custom bootstrap 'bootstrap-sass!./bootstrap-sass.config.js'); @@ -28,6 +31,10 @@ config.resolve.root.push(path.join(__dirname, 'assets/stylesheets')); // All the styling loaders only apply to hot-reload, not rails config.module.loaders.push( {test: /\.jsx?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/}, + + {test: require.resolve('jquery'), loader: 'expose?jQuery'}, + {test: require.resolve('jquery'), loader: 'expose?$'}, + {test: /\.css$/, loader: 'style-loader!css-loader'}, { test: /\.scss$/, diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index 7c99c236f..af75a50ed 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -12,12 +12,14 @@ config.output = { }; // You can add entry points specific to rails here -config.entry.push('./scripts/rails_only', './assets/javascripts/clientGlobals'); +config.entry.push('./scripts/rails_only', 'jquery', 'jquery-ujs', './assets/javascripts/clientGlobals'); // See webpack.common.config for adding modules common to both the webpack dev server and rails config.module.loaders.push( - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'} + {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'}, + {test: require.resolve('jquery'), loader: 'expose?jQuery'}, + {test: require.resolve('jquery'), loader: 'expose?$'} ); module.exports = config; diff --git a/client/webpack.server.config.js b/client/webpack.server.config.js index fa361ee1d..ec952ad06 100644 --- a/client/webpack.server.config.js +++ b/client/webpack.server.config.js @@ -10,12 +10,5 @@ config.output = { config.entry.push('./assets/javascripts/serverGlobals'); -config.module.loaders.push( - - { loader: 'babel-loader' }, - - // require Resolve must go first - // 1. React must be exposed (BOILERPLATE) - { test: require.resolve('react'), loader: 'expose?React' } -); +config.module.loaders.push({ loader: 'babel-loader' }); module.exports = config; From 5ef8e71e76f2223cec42e4d4626811dd05bd6f42 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 21 Sep 2015 10:25:09 -1000 Subject: [PATCH 069/548] Update .travis.yml for webpack.server.config.js --- .travis.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index be537debf..1af63bc21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,9 @@ rvm: install: - bundle install - npm install - - cd client && $(npm bin)/webpack --config webpack.rails.config.js + - cd client && $(npm bin)/webpack --config webpack.rails.config.js \ + && $(npm bin)/webpack --config webpack.server.config.js + env: - export RAILS_ENV=test script: From 9f2142e556da3cf905eb1ece1c3e37e9f96ec666 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 21 Sep 2015 10:55:47 -1000 Subject: [PATCH 070/548] Update .travis.yml --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1af63bc21..1c94af416 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,8 +5,8 @@ rvm: install: - bundle install - npm install - - cd client && $(npm bin)/webpack --config webpack.rails.config.js \ - && $(npm bin)/webpack --config webpack.server.config.js + - cd client && NODE_ENV=production $(npm bin)/webpack --config webpack.rails.config.js + - cd client && NODE_ENV=production $(npm bin)/webpack --config webpack.server.config.js env: - export RAILS_ENV=test From 02abc296bb20e9be0086380120bfecfe92a925b0 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 21 Sep 2015 11:02:23 -1000 Subject: [PATCH 071/548] Edit .travis.yml to fix build error --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1c94af416..5e498dbe5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ install: - bundle install - npm install - cd client && NODE_ENV=production $(npm bin)/webpack --config webpack.rails.config.js - - cd client && NODE_ENV=production $(npm bin)/webpack --config webpack.server.config.js + - NODE_ENV=production $(npm bin)/webpack --config webpack.server.config.js env: - export RAILS_ENV=test From 6215a64ad571f20afd3966a55160c9ad167e2da0 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 21 Sep 2015 17:41:38 -1000 Subject: [PATCH 072/548] Update assets.rake and assets.rb for server-bundle.js --- config/initializers/assets.rb | 2 +- lib/tasks/assets.rake | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 0838adaa2..78a808385 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -8,4 +8,4 @@ # 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( search.js ) +Rails.application.config.assets.precompile += %w( generated/server-bundle.js ) diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index f0eaca920..2c43109d4 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -14,9 +14,11 @@ namespace :assets do desc "Compile assets with webpack" task :webpack do sh "cd client && $(npm bin)/webpack --config webpack.rails.config.js" + sh "cd client && $(npm bin)/webpack --config webpack.server.config.js" end task :clobber do - rm_rf "#{RailsReactTutorial::Application.config.root}/app/assets/javascripts/rails-bundle.js" + rm_rf "#{RailsReactTutorial::Application.config.root}/app/assets/javascripts/generated/client-bundle.js" + rm_rf "#{RailsReactTutorial::Application.config.root}/app/assets/javascripts/generated/server-bundle.js" end end From 63cf052167b23b7b305977f2e76f6f7abca17c6b Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 21 Sep 2015 18:23:53 -1000 Subject: [PATCH 073/548] Added ability to set the JS driver for capybara Default is poltergeist Sample commands to try: DRIVER=chrome rspec DRIVER=firefox rspec DRIVER=webkit rspec DRIVER=poltergeist rspec --- Gemfile | 4 ++++ Gemfile.lock | 17 +++++++++++++++++ spec/features/comments_spec.rb | 8 ++++---- spec/rails_helper.rb | 27 ++++++++++++++++++++++++++- 4 files changed, 51 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index bc827d431..ad035966d 100644 --- a/Gemfile +++ b/Gemfile @@ -44,6 +44,8 @@ gem "therubyracer" gem "autoprefixer-rails" +gem "awesome_print" + # Use Capistrano for deployment # gem "capistrano-rails", group: :development group :production do @@ -87,6 +89,8 @@ group :test do gem "capybara-screenshot" gem "poltergeist" gem "phantomjs", require: "phantomjs/poltergeist" + gem "selenium-webdriver" + gem "capybara-webkit" gem "database_cleaner" gem "launchy" end diff --git a/Gemfile.lock b/Gemfile.lock index 4254f8265..b44dbb147 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -44,6 +44,7 @@ GEM autoprefixer-rails (5.2.1.1) execjs json + awesome_print (1.6.1) binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) bootstrap-sass (3.3.5.1) @@ -74,6 +75,11 @@ GEM capybara-screenshot (1.0.11) capybara (>= 1.0, < 3) launchy + capybara-webkit (1.6.0) + capybara (>= 2.3.0, < 2.5.0) + json + childprocess (0.5.6) + ffi (~> 1.0, >= 1.0.11) cliver (0.3.2) coffee-rails (4.1.0) coffee-script (>= 2.2.0) @@ -106,6 +112,7 @@ GEM factory_girl (~> 4.5.0) railties (>= 3.0.0) fastercsv (1.5.5) + ffi (1.9.10) foreman (0.78.0) thor (~> 0.19.1) globalid (0.3.5) @@ -221,6 +228,7 @@ GEM sexp_processor (~> 4.0) ruby_parser (3.7.0) sexp_processor (~> 4.1) + rubyzip (1.1.7) sass (3.4.16) sass-rails (5.0.3) railties (>= 4.0.0, < 5.0) @@ -234,6 +242,11 @@ GEM sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) + selenium-webdriver (2.47.1) + childprocess (~> 0.5) + multi_json (~> 1.0) + rubyzip (~> 1.0) + websocket (~> 1.0) sexp_processor (4.6.0) simplecov (0.10.0) docile (~> 1.1.0) @@ -280,6 +293,7 @@ GEM binding_of_caller (>= 0.7.2) railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) + websocket (1.2.2) websocket-driver (0.6.2) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.2) @@ -291,12 +305,14 @@ PLATFORMS DEPENDENCIES autoprefixer-rails + awesome_print bootstrap-sass (~> 3.3.1) brakeman bundler-audit byebug capybara capybara-screenshot + capybara-webkit coffee-rails coveralls database_cleaner @@ -319,6 +335,7 @@ DEPENDENCIES sass-rails scss_lint sdoc + selenium-webdriver spring spring-commands-rspec sqlite3 diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index ba3d21f9a..5bad93635 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -14,7 +14,7 @@ end end -shared_examples "Form" do +shared_examples "Comments Form" do include_context "Form Submitted" scenario "submits form", js: true do @@ -33,7 +33,7 @@ click_link "Horizontal Form" end - it_behaves_like "Form" + it_behaves_like "Comments Form" context "iframe text" do let(:iframe_text) { "" } @@ -51,7 +51,7 @@ click_link "Inline Form" end - it_behaves_like "Form" + it_behaves_like "Comments Form" end context "Stacked Form" do @@ -59,6 +59,6 @@ click_link "Stacked Form" end - it_behaves_like "Form" + it_behaves_like "Comments Form" end end diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index a9d42faed..c599fc6e8 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -50,7 +50,32 @@ DatabaseCleaner.clean end - Capybara.javascript_driver = :poltergeist + driver = ENV["DRIVER"].try(:to_sym) + if driver.nil? || driver == :poltergeist + require "capybara/poltergeist" + Capybara.default_driver = :poltergeist + Capybara.current_driver = :poltergeist + Capybara.javascript_driver = :poltergeist + elsif driver == :webkit + Capybara.default_driver = :webkit + Capybara.current_driver = :webkit + Capybara.javascript_driver = :webkit + elsif driver == :selenium + Capybara.default_driver = :selenium + Capybara.current_driver = :selenium + Capybara.javascript_driver = :selenium + else # to use chrome, for example, with selenium + Capybara.register_driver :selenium do |app| + Capybara::Selenium::Driver.new(app, browser: driver) + end + Capybara.default_driver = :selenium + Capybara.current_driver = :selenium + Capybara.javascript_driver = :selenium + end + + puts "Capybara using driver: #{Capybara.default_driver}" + + Capybara::Screenshot.prune_strategy = { keep: 10 } # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" From 05ac811bb09df38591028814d6c1778d527671af Mon Sep 17 00:00:00 2001 From: Stanislas Boyet Date: Tue, 22 Sep 2015 10:00:15 +0200 Subject: [PATCH 074/548] Fix forum URL There was a `www` at the top, which with the subdomain `forum` leads to a `ERR_NAME_NOT_RESOLVED` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1d181cf2b..28ca1b4eb 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com Rails project and are interested in help from our experienced team. - Please file issues for problems and feature requests. - Pull requests are welcome! (and a great way to get on the team) -- Feel free to open discussions at [forum.railsonmaui.com](http://www.forum.railsonmaui.com). +- Feel free to open discussions at [forum.railsonmaui.com](http://forum.railsonmaui.com). - We now have a [gitter chat room for this topic](https://gitter.im/shakacode/react-webpack-rails-tutorial). - Check out the [react_on_rails gem](https://github.com/shakacode/react_on_rails) for easy webpack integration. From b9285cf52e8b2523ab7fe70f621e3335153a0a27 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 21 Sep 2015 22:59:33 -1000 Subject: [PATCH 075/548] Change to Capybara webdriver selenium Remove gem poltergeist and phantomjs Add gems selenium-webdriver and chromedriver-helper Configure Capybara webdriver for :selenium_chrome --- Gemfile | 4 +--- Gemfile.lock | 23 +++++++---------------- spec/rails_helper.rb | 29 +++-------------------------- 3 files changed, 11 insertions(+), 45 deletions(-) diff --git a/Gemfile b/Gemfile index ad035966d..ff61dc1d7 100644 --- a/Gemfile +++ b/Gemfile @@ -87,10 +87,8 @@ group :test do gem "rspec-rails" gem "capybara" gem "capybara-screenshot" - gem "poltergeist" - gem "phantomjs", require: "phantomjs/poltergeist" gem "selenium-webdriver" - gem "capybara-webkit" + gem "chromedriver-helper" gem "database_cleaner" gem "launchy" end diff --git a/Gemfile.lock b/Gemfile.lock index b44dbb147..7579e5a1e 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -37,6 +37,8 @@ GEM thread_safe (~> 0.3, >= 0.3.4) tzinfo (~> 1.1) addressable (2.3.8) + archive-zip (0.7.0) + io-like (~> 0.3.0) arel (6.0.2) ast (2.0.0) astrolabe (1.3.1) @@ -75,12 +77,11 @@ GEM capybara-screenshot (1.0.11) capybara (>= 1.0, < 3) launchy - capybara-webkit (1.6.0) - capybara (>= 2.3.0, < 2.5.0) - json childprocess (0.5.6) ffi (~> 1.0, >= 1.0.11) - cliver (0.3.2) + chromedriver-helper (1.0.0) + archive-zip (~> 0.7.0) + nokogiri (~> 1.6) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) @@ -123,6 +124,7 @@ GEM http-cookie (1.0.2) domain_name (~> 0.5) i18n (0.7.0) + io-like (0.3.0) jbuilder (2.3.1) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) @@ -145,12 +147,6 @@ GEM parser (2.2.2.6) ast (>= 1.1, < 3.0) pg (0.18.2) - phantomjs (1.9.8.0) - poltergeist (1.6.0) - capybara (~> 2.1) - cliver (~> 0.3.1) - multi_json (~> 1.0) - websocket-driver (>= 0.2.0) powerpack (0.1.1) rack (1.6.4) rack-test (0.6.3) @@ -294,9 +290,6 @@ GEM railties (>= 4.0) sprockets-rails (>= 2.0, < 4.0) websocket (1.2.2) - websocket-driver (0.6.2) - websocket-extensions (>= 0.1.0) - websocket-extensions (0.1.2) xpath (2.0.0) nokogiri (~> 1.3) @@ -312,7 +305,7 @@ DEPENDENCIES byebug capybara capybara-screenshot - capybara-webkit + chromedriver-helper coffee-rails coveralls database_cleaner @@ -322,8 +315,6 @@ DEPENDENCIES jbuilder launchy pg - phantomjs - poltergeist rails (~> 4.2) rails-html-sanitizer rails_12factor diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index c599fc6e8..da01e6037 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -6,7 +6,6 @@ require File.expand_path("../../config/environment", __FILE__) require "rspec/rails" require "capybara/rspec" -require "capybara/poltergeist" require "capybara-screenshot/rspec" # Add additional requires below this line. Rails is not loaded until this point! @@ -49,33 +48,11 @@ config.after(:each) do DatabaseCleaner.clean end - - driver = ENV["DRIVER"].try(:to_sym) - if driver.nil? || driver == :poltergeist - require "capybara/poltergeist" - Capybara.default_driver = :poltergeist - Capybara.current_driver = :poltergeist - Capybara.javascript_driver = :poltergeist - elsif driver == :webkit - Capybara.default_driver = :webkit - Capybara.current_driver = :webkit - Capybara.javascript_driver = :webkit - elsif driver == :selenium - Capybara.default_driver = :selenium - Capybara.current_driver = :selenium - Capybara.javascript_driver = :selenium - else # to use chrome, for example, with selenium - Capybara.register_driver :selenium do |app| - Capybara::Selenium::Driver.new(app, browser: driver) - end - Capybara.default_driver = :selenium - Capybara.current_driver = :selenium - Capybara.javascript_driver = :selenium + Capybara.register_driver :selenium_chrome do |app| + Capybara::Selenium::Driver.new(app, browser: :chrome) end - puts "Capybara using driver: #{Capybara.default_driver}" - - Capybara::Screenshot.prune_strategy = { keep: 10 } + Capybara.javascript_driver = :selenium_chrome # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" From d24b00828bdeaa419d8223d13cfa93c357cea796 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 21 Sep 2015 23:14:30 -1000 Subject: [PATCH 076/548] Address js linting issue --- client/assets/javascripts/utils/CommentsManager.js | 1 + 1 file changed, 1 insertion(+) diff --git a/client/assets/javascripts/utils/CommentsManager.js b/client/assets/javascripts/utils/CommentsManager.js index e3360b7c6..c501968f8 100644 --- a/client/assets/javascripts/utils/CommentsManager.js +++ b/client/assets/javascripts/utils/CommentsManager.js @@ -48,6 +48,7 @@ const CommentsManager = { return meta.getAttribute('content'); } } + return null; }, From 2b9bdfb437d020489e5de790e74ecc09d53aed41 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Tue, 22 Sep 2015 09:25:36 -1000 Subject: [PATCH 077/548] Update .travis.yml for selenium_firefox webdriver --- .travis.yml | 1 + spec/rails_helper.rb | 18 +++++++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5e498dbe5..3cac88bdd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,7 @@ install: env: - export RAILS_ENV=test + - export DRIVER=selenium_firefox script: - bundle exec rake db:schema:load - bundle exec rake diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index da01e6037..ff1636d35 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -48,12 +48,24 @@ config.after(:each) do DatabaseCleaner.clean end - Capybara.register_driver :selenium_chrome do |app| - Capybara::Selenium::Driver.new(app, browser: :chrome) + + driver = ENV["DRIVER"].try(:to_sym) + if driver.nil? || driver == :selenium_chrome_ + Capybara.register_driver :selenium_chrome do |app| + Capybara::Selenium::Driver.new(app, browser: :chrome) + end + Capybara.javascript_driver = :selenium_chrome + else + Capybara.register_driver :selenium_firefox do |app| + Capybara::Selenium::Driver.new(app, browser: :firefox) + end + Capybara.javascript_driver = :selenium_firefox end - Capybara.javascript_driver = :selenium_chrome + puts "Capybara using driver: #{Capybara.javascript_driver}" + + Capybara::Screenshot.prune_strategy = { keep: 10 } # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" From fcde7d85509c7d5cd430dcad4a6ac3e791ba7b70 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Tue, 22 Sep 2015 09:30:29 -1000 Subject: [PATCH 078/548] Move ENV variable inline for .travis.yml --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 3cac88bdd..65a427d5d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,8 +10,7 @@ install: env: - export RAILS_ENV=test - - export DRIVER=selenium_firefox script: - bundle exec rake db:schema:load - - bundle exec rake + - DRIVER=selenium_firefox bundle exec rake - bundle exec rake lint From 527bc449fb41d639792cc4327d7443ffb7df1ce5 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Tue, 22 Sep 2015 09:40:46 -1000 Subject: [PATCH 079/548] Adjust .travis.yml for running xvfb before_script --- .travis.yml | 3 +++ spec/rails_helper.rb | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 65a427d5d..b0b2aa180 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,9 @@ install: env: - export RAILS_ENV=test + +before_script: + - xvfb-run -a script: - bundle exec rake db:schema:load - DRIVER=selenium_firefox bundle exec rake diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index ff1636d35..6cb6222e0 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -49,6 +49,7 @@ DatabaseCleaner.clean end + # selenium_firefox webdriver only works for Travis-CI builds. driver = ENV["DRIVER"].try(:to_sym) if driver.nil? || driver == :selenium_chrome_ Capybara.register_driver :selenium_chrome do |app| @@ -64,7 +65,6 @@ puts "Capybara using driver: #{Capybara.javascript_driver}" - Capybara::Screenshot.prune_strategy = { keep: 10 } # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures config.fixture_path = "#{::Rails.root}/spec/fixtures" From b042a35568ae267d65aacb56da8b16ca415f2684 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Tue, 22 Sep 2015 09:54:32 -1000 Subject: [PATCH 080/548] Add addtional before_script xvfb config for .travis.yml --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index b0b2aa180..e2d6c293c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,8 @@ env: - export RAILS_ENV=test before_script: - - xvfb-run -a + - export DISPLAY=:99.0 + - sh -e /etc/init.d/xvfb start script: - bundle exec rake db:schema:load - DRIVER=selenium_firefox bundle exec rake From 4af4997a0ef3719da420631750ac04cc56f79472 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Wed, 23 Sep 2015 17:58:54 -0700 Subject: [PATCH 081/548] Updated ci.rake usage of brakeman * Run brakeman like: `brakeman --exit-on-warn --quiet -A` * This makes ci fail if there's a brakeman issue. * Updated brakeman gem to current (3.1.1) * Bonus: Added pry debugging gems --- Gemfile | 11 ++++++++--- Gemfile.lock | 50 ++++++++++++++++++++++++++++++++++++++--------- lib/tasks/ci.rake | 4 ++-- 3 files changed, 51 insertions(+), 14 deletions(-) diff --git a/Gemfile b/Gemfile index ff61dc1d7..9cb85a43f 100644 --- a/Gemfile +++ b/Gemfile @@ -53,9 +53,6 @@ group :production do end group :development, :test do - # Call "debugger" anywhere in the code to stop execution and get a debugger console - gem "byebug" - # Access an IRB console on exceptions page and /console in development gem "web-console" @@ -80,6 +77,14 @@ group :development, :test do gem "bundler-audit", require: false gem "rainbow" + + # Favorite debugging gems + gem "pry" + gem "pry-doc" + gem "pry-rails" + gem "pry-stack_explorer" + gem "pry-rescue" + gem "pry-byebug" end group :test do diff --git a/Gemfile.lock b/Gemfile.lock index 7579e5a1e..13d0ac4b7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -52,15 +52,16 @@ GEM bootstrap-sass (3.3.5.1) autoprefixer-rails (>= 5.0.0.1) sass (>= 3.3.0) - brakeman (3.0.5) + brakeman (3.1.1) erubis (~> 2.6) fastercsv (~> 1.5) haml (>= 3.0, < 5.0) - highline (~> 1.6.20) + highline (~> 1.6) multi_json (~> 1.2) - ruby2ruby (~> 2.1.1) + ruby2ruby (>= 2.1.1, < 2.3.0) ruby_parser (~> 3.7.0) sass (~> 3.0) + slim (>= 1.3.6, < 4.0) terminal-table (~> 1.4) builder (3.2.2) bundler-audit (0.4.0) @@ -82,6 +83,7 @@ GEM chromedriver-helper (1.0.0) archive-zip (~> 0.7.0) nokogiri (~> 1.6) + coderay (1.1.0) coffee-rails (4.1.0) coffee-script (>= 2.2.0) railties (>= 4.0.0, < 5.0) @@ -118,12 +120,13 @@ GEM thor (~> 0.19.1) globalid (0.3.5) activesupport (>= 4.1.0) - haml (4.0.6) + haml (4.0.7) tilt - highline (1.6.21) + highline (1.7.7) http-cookie (1.0.2) domain_name (~> 0.5) i18n (0.7.0) + interception (0.5) io-like (0.3.0) jbuilder (2.3.1) activesupport (>= 3.0.0, < 5) @@ -137,6 +140,7 @@ GEM nokogiri (>= 1.5.9) mail (2.6.3) mime-types (>= 1.16, < 3) + method_source (0.8.2) mime-types (2.6.1) mini_portile (0.6.2) minitest (5.7.0) @@ -148,6 +152,24 @@ GEM ast (>= 1.1, < 3.0) pg (0.18.2) powerpack (0.1.1) + pry (0.10.1) + coderay (~> 1.1.0) + method_source (~> 0.8.1) + slop (~> 3.4) + pry-byebug (3.2.0) + byebug (~> 5.0) + pry (~> 0.10) + pry-doc (0.8.0) + pry (~> 0.9) + yard (~> 0.8) + pry-rails (0.3.4) + pry (>= 0.9.10) + pry-rescue (1.4.2) + interception (>= 0.5) + pry + pry-stack_explorer (0.4.9.2) + binding_of_caller (>= 0.7) + pry (>= 0.9.11) rack (1.6.4) rack-test (0.6.3) rack (>= 1.0) @@ -219,13 +241,13 @@ GEM parser (~> 2.2) slop (~> 3.4, >= 3.4.7) ruby-progressbar (1.7.5) - ruby2ruby (2.1.4) + ruby2ruby (2.2.0) ruby_parser (~> 3.1) sexp_processor (~> 4.0) - ruby_parser (3.7.0) + ruby_parser (3.7.1) sexp_processor (~> 4.1) rubyzip (1.1.7) - sass (3.4.16) + sass (3.4.18) sass-rails (5.0.3) railties (>= 4.0.0, < 5.0) sass (~> 3.1) @@ -249,6 +271,9 @@ GEM json (~> 1.8) simplecov-html (~> 0.10.0) simplecov-html (0.10.0) + slim (3.0.6) + temple (~> 0.7.3) + tilt (>= 1.3.3, < 2.1) slop (3.6.0) spring (1.3.6) spring-commands-rspec (1.0.4) @@ -260,6 +285,7 @@ GEM activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) sqlite3 (1.3.10) + temple (0.7.6) term-ansicolor (1.3.2) tins (~> 1.0) terminal-table (1.5.2) @@ -292,6 +318,7 @@ GEM websocket (1.2.2) xpath (2.0.0) nokogiri (~> 1.3) + yard (0.8.7.6) PLATFORMS ruby @@ -302,7 +329,6 @@ DEPENDENCIES bootstrap-sass (~> 3.3.1) brakeman bundler-audit - byebug capybara capybara-screenshot chromedriver-helper @@ -315,6 +341,12 @@ DEPENDENCIES jbuilder launchy pg + pry + pry-byebug + pry-doc + pry-rails + pry-rescue + pry-stack_explorer rails (~> 4.2) rails-html-sanitizer rails_12factor diff --git a/lib/tasks/ci.rake b/lib/tasks/ci.rake index c1e055309..931298083 100644 --- a/lib/tasks/ci.rake +++ b/lib/tasks/ci.rake @@ -8,7 +8,8 @@ if Rails.env.development? task :security_audit do puts Rainbow("Running security audit on code (brakeman)").green - Rake::Task["brakeman:run"].invoke("tmp/brakeman-report.html") + + sh "brakeman --exit-on-warn --quiet -A" end namespace :ci do @@ -29,5 +30,4 @@ if Rails.env.development? task ci: "ci:all" task(:default).clear.enhance([:ci]) - end From d148c5bfaa76a4c94e0334fb7e50d265b5ee853b Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Wed, 23 Sep 2015 18:03:13 -0700 Subject: [PATCH 082/548] Missing -z option so brakeman returns non-zero * Most important part of this fix. * Otherwise, brakeman reports errors AND there is no CI failure! --- lib/tasks/ci.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/ci.rake b/lib/tasks/ci.rake index 931298083..22c2f0796 100644 --- a/lib/tasks/ci.rake +++ b/lib/tasks/ci.rake @@ -9,7 +9,7 @@ if Rails.env.development? task :security_audit do puts Rainbow("Running security audit on code (brakeman)").green - sh "brakeman --exit-on-warn --quiet -A" + sh "brakeman --exit-on-warn --quiet -A -z" end namespace :ci do From 7dfd00aecc340ce94ac4deac572d1598fbe69b28 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Fri, 18 Sep 2015 17:51:38 +0300 Subject: [PATCH 083/548] Remove unused karma stuff --- client/karma.conf.js | 43 ----------------------------------------- client/tests.webpack.js | 2 -- 2 files changed, 45 deletions(-) delete mode 100644 client/karma.conf.js delete mode 100644 client/tests.webpack.js diff --git a/client/karma.conf.js b/client/karma.conf.js deleted file mode 100644 index 138c1d555..000000000 --- a/client/karma.conf.js +++ /dev/null @@ -1,43 +0,0 @@ -const webpack = require('webpack'); - -module.exports = function karmaMain(config) { - config.set({ - - browserNoActivityTimeout: 30000, - - browsers: [process.env.CONTINUOUS_INTEGRATION ? 'Firefox' : 'Chrome'], - - singleRun: process.env.CONTINUOUS_INTEGRATION === 'true', - - frameworks: ['mocha'], - - files: [ - 'tests.webpack.js', - ], - - preprocessors: { - 'tests.webpack.js': ['webpack', 'sourcemap'], - }, - - reporters: ['dots'], - - webpack: { - devtool: 'inline-source-map', - module: { - loaders: [ - {test: /\.js$/, loader: 'babel-loader'}, - ], - }, - plugins: [ - new webpack.DefinePlugin({ - 'process.env.NODE_ENV': JSON.stringify('test'), - }), - ], - }, - - webpackServer: { - noInfo: true, - }, - - }); -}; diff --git a/client/tests.webpack.js b/client/tests.webpack.js deleted file mode 100644 index 5e9765c01..000000000 --- a/client/tests.webpack.js +++ /dev/null @@ -1,2 +0,0 @@ -const context = require.context('./modules', true, /-test\.js$/); -context.keys().forEach(context); From de7627f11207e44c457e2ce0c307834eef6c08dc Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Fri, 18 Sep 2015 17:53:04 +0300 Subject: [PATCH 084/548] Remove unused gulp and setup npm lint scripts --- client/gulpfile.js | 13 ------------- client/package.json | 8 +++----- 2 files changed, 3 insertions(+), 18 deletions(-) delete mode 100644 client/gulpfile.js diff --git a/client/gulpfile.js b/client/gulpfile.js deleted file mode 100644 index c1e0b2442..000000000 --- a/client/gulpfile.js +++ /dev/null @@ -1,13 +0,0 @@ -const gulp = require('gulp'); -const eslint = require('eslint/lib/cli'); - -// Note: To have the process exit with an error code (1) on -// lint error, return the stream and pipe to failOnError last. -gulp.task('lint', function gulpLint(done) { - eslint.execute('--ext .js,.jsx .'); - return done(); -}); - -gulp.task('default', ['lint'], function gulpDefault() { - // This will only run if the lint task is successful... -}); diff --git a/client/package.json b/client/package.json index bd8e7a5e3..1536d61f2 100644 --- a/client/package.json +++ b/client/package.json @@ -57,8 +57,6 @@ "expose-loader": "^0.7.0", "express": "^4.13.3", "file-loader": "^0.8.4", - "gulp": "^3.9.0", - "gulp-eslint": "^1.0.0", "jscs": "^2.1.1", "node-sass": "^3.3.2", "react-hot-loader": "^1.3.0", @@ -70,8 +68,8 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js", - "gulp": "gulp", - "jscs": "jscs --verbose", - "eslint": "eslint" + "lint": "npm run eslint && npm run jscs", + "eslint": "eslint --ext .js,.jsx .", + "jscs": "jscs --verbose ." } } From ede0a5e0c8b41eb79d079e8a020112154110aa19 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Fri, 18 Sep 2015 17:58:52 +0300 Subject: [PATCH 085/548] Split generated webpack js bundle in 2: application and vendor libs --- app/assets/javascripts/application.js | 3 ++- client/index.html | 3 ++- client/webpack.common.config.js | 15 +++++++++++++-- client/webpack.hot.config.js | 21 +++++++++++++-------- client/webpack.rails.config.js | 23 +++++++++++++++++++---- client/webpack.server.config.js | 2 +- 6 files changed, 50 insertions(+), 17 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 34e53597a..e07c31489 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -14,6 +14,7 @@ //= require es5-shim/es5-shim // It is important that generated/client-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs -//= require generated/client-bundle +//= require generated/vendor +//= require generated/app //= require bootstrap-sprockets //= require turbolinks diff --git a/client/index.html b/client/index.html index c1906cd7e..5c1dfde95 100755 --- a/client/index.html +++ b/client/index.html @@ -2,7 +2,8 @@ Hello React - + +
    diff --git a/client/webpack.common.config.js b/client/webpack.common.config.js index 4c59b907b..700aa3d56 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.common.config.js @@ -1,13 +1,16 @@ // Common webpack configuration used by webpack.hot.config and webpack.rails.config. +const webpack = require('webpack'); const path = require('path'); module.exports = { // the project dir context: __dirname, - entry: [], - + entry: { + vendor: [], + app: [], + }, resolve: { root: [ path.join(__dirname, 'scripts'), @@ -15,6 +18,14 @@ module.exports = { ], extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'], }, + plugins: [ + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + chunks: ['app'], + filename: 'vendor.js', + minChunks: Infinity, + }), + ], module: { loaders: [ diff --git a/client/webpack.hot.config.js b/client/webpack.hot.config.js index 09007011c..abe0d42e6 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.hot.config.js @@ -1,28 +1,33 @@ // Run like this: // cd client && node server.js +const webpack = require('webpack'); const path = require('path'); const config = require('./webpack.common.config'); -const webpack = require('webpack'); // We're using the bootstrap-sass loader. // See: https://github.com/shakacode/bootstrap-sass-loader -config.entry.push('webpack-dev-server/client?http://localhost:3000', - 'webpack/hot/dev-server', - './scripts/webpack_only', +config.entry.vendor.push( 'jquery', 'jquery-ujs', - './assets/javascripts/clientGlobals', // custom bootstrap - 'bootstrap-sass!./bootstrap-sass.config.js'); + 'bootstrap-sass!./bootstrap-sass.config.js' +); +config.entry.app.unshift( + 'webpack-dev-server/client?http://localhost:3000', + 'webpack/hot/dev-server', + './scripts/webpack_only', + './assets/javascripts/clientGlobals' +); + config.output = { // this file is served directly by webpack - filename: 'express-bundle.js', + filename: '[name].js', path: __dirname, }; -config.plugins = [new webpack.HotModuleReplacementPlugin()]; +config.plugins.unshift(new webpack.HotModuleReplacementPlugin()); config.devtool = 'eval-source-map'; // Add the styles diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index af75a50ed..a433e0866 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -4,15 +4,23 @@ // NOTE: All style sheets handled by the asset pipeline in rails +const webpack = require('webpack'); const config = require('./webpack.common.config'); +const devBuild = process.env.NODE_ENV !== 'production'; + config.output = { - filename: 'client-bundle.js', + filename: '[name].js', path: '../app/assets/javascripts/generated', }; // You can add entry points specific to rails here -config.entry.push('./scripts/rails_only', 'jquery', 'jquery-ujs', './assets/javascripts/clientGlobals'); +config.entry.vendor.push( + './scripts/rails_only', + 'jquery', + 'jquery-ujs' +); +config.entry.app.push('./assets/javascripts/clientGlobals'); // See webpack.common.config for adding modules common to both the webpack dev server and rails @@ -21,13 +29,20 @@ config.module.loaders.push( {test: require.resolve('jquery'), loader: 'expose?jQuery'}, {test: require.resolve('jquery'), loader: 'expose?$'} ); + module.exports = config; -// Next line is Heroku specific. You'll have BUILDPACK_URL defined for your Heroku install. -const devBuild = (typeof process.env.BUILDPACK_URL) === 'undefined'; if (devBuild) { console.log('Webpack dev build for Rails'); // eslint-disable-line no-console module.exports.devtool = 'eval-source-map'; } else { + config.plugins.push( + new webpack.DefinePlugin({ + 'process.env': { + NODE_ENV: JSON.stringify('production'), + }, + }), + new webpack.optimize.DedupePlugin() + ); console.log('Webpack production build for Rails'); // eslint-disable-line no-console } diff --git a/client/webpack.server.config.js b/client/webpack.server.config.js index ec952ad06..9500dc4fb 100644 --- a/client/webpack.server.config.js +++ b/client/webpack.server.config.js @@ -8,7 +8,7 @@ config.output = { libaryTarget: 'this', }; -config.entry.push('./assets/javascripts/serverGlobals'); +config.entry.app.push('./assets/javascripts/serverGlobals'); config.module.loaders.push({ loader: 'babel-loader' }); module.exports = config; From 555453c4ae86aa3e5cbcf8ba18ab079bcb0d30da Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Fri, 18 Sep 2015 18:13:15 +0300 Subject: [PATCH 086/548] Update root package.json --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 21ffb2eb0..3451fb547 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,7 @@ }, "scripts": { "postinstall": "cd ./client && npm install", - "gulp": "cd ./client && npm run gulp", - "test": "rspec && client/bin/lint && (cd client && npm run jscs .)" + "test": "rspec && (cd client && npm run lint)" }, "repository": { "type": "git", From 95bc93e82bb87b9ef07b863d24c421a36f7c94b9 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Fri, 18 Sep 2015 18:14:26 +0300 Subject: [PATCH 087/548] Update root package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3451fb547..997f1928b 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "node": "0.12.7" }, "scripts": { - "postinstall": "cd ./client && npm install", + "postinstall": "cd client && npm install", "test": "rspec && (cd client && npm run lint)" }, "repository": { From 5be79fd952ac518b33df2ef4115a2949c8ddba6f Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Fri, 18 Sep 2015 18:23:30 +0300 Subject: [PATCH 088/548] Use npm run to run client scripts --- .travis.yml | 6 ++---- Procfile.dev | 6 +++--- README.md | 8 ++++---- client/package.json | 4 ++++ client/webpack.rails.config.js | 2 +- lib/tasks/assets.rake | 4 ++-- 6 files changed, 16 insertions(+), 14 deletions(-) diff --git a/.travis.yml b/.travis.yml index e2d6c293c..73b329d92 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,12 +5,10 @@ rvm: install: - bundle install - npm install - - cd client && NODE_ENV=production $(npm bin)/webpack --config webpack.rails.config.js - - NODE_ENV=production $(npm bin)/webpack --config webpack.server.config.js - + - cd client && npm run build:client + - npm run build:server env: - export RAILS_ENV=test - before_script: - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start diff --git a/Procfile.dev b/Procfile.dev index 03105c6e6..0d26caeb0 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,4 +1,4 @@ web: rails s -p 4000 -client: sh -c 'cd client && $(npm bin)/webpack -w --config webpack.rails.config.js' -server: sh -c 'cd client && $(npm bin)/webpack -w --config webpack.server.config.js' -hot: sh -c 'cd client && node server.js' +client: sh -c 'rm app/assets/javascripts/generated/* || true && cd client && npm run build:dev:client' +server: sh -c 'cd client && npm run build:dev:server' +hot: sh -c 'cd client && npm start' diff --git a/README.md b/README.md index 28ca1b4eb..bfe933a5d 100644 --- a/README.md +++ b/README.md @@ -102,7 +102,7 @@ the JS bundle. We've chosen to let Rails handle CSS, SCSS, images, fonts. ``` cd client -$(npm bin)/webpack -w --config webpack.rails.config.js +npm run build:dev ``` `client-bundle.js` is generated and saved to `app/assets/javascripts`. This is included in the @@ -182,7 +182,7 @@ jQuery and jQuery-ujs are not required within `app/assets/javascript/application and have been moved under`/client` and managed by npm. The modules are exposed via entry point by `webpack.common.config.js`. -In `application.js`, it's critical that any libraries that depend on jQuery come after the inclusion +In `application.js`, it's critical that any libraries that depend on jQuery come after the inclusion of the Webpack bundle, such as the twitter bootstrap javascript. Please refer to [Considerations for jQuery with Rails and Webpack](http://forum.railsonmaui.com/t/considerations-for-jquery-with-rails-and-webpack/344) for further info. @@ -260,7 +260,7 @@ Run the tests with `rspec`. ### RubyMine/Webstorm Linting Configuration * I started out trying to make RubyMine and WebStorm catch and fix linting errors. However, I find it faster to just do this with the command line. Your mileage may vary. - * Create a custom scope like this for RubyMine, named "Inspection Scope" + * Create a custom scope like this for RubyMine, named "Inspection Scope" file[react-rails-tutorial]:*/&&!file[react-rails-tutorial]:tmp//*&&!file[react-rails-tutorial]:log//*&&!file[react-rails-tutorial]:client/node_modules//*&&!file[react-rails-tutorial]:client/assets/fonts//*&&!file[react-rails-tutorial]:app/assets/fonts//*&&!file[react-rails-tutorial]:bin//*&&!file[react-rails-tutorial]:app/assets/javascripts//* @@ -289,7 +289,7 @@ WebStorm opened up to the `client` directory to focus on JSX and Sass files. # Misc Tips -## Cleanup local branches merged to master +## Cleanup local branches merged to master ``` alias git-cleanup-merged-branches='git branch --merged master | grep -v master | xargs git branch -d' ``` diff --git a/client/package.json b/client/package.json index 1536d61f2..3db886915 100644 --- a/client/package.json +++ b/client/package.json @@ -68,6 +68,10 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js", + "build:client": "NODE_ENV=production webpack --config webpack.rails.config.js", + "build:server": "NODE_ENV=production webpack --config webpack.server.config.js", + "build:dev:client": "webpack -w --config webpack.rails.config.js", + "build:dev:client": "webpack -w --config webpack.server.config.js", "lint": "npm run eslint && npm run jscs", "eslint": "eslint --ext .js,.jsx .", "jscs": "jscs --verbose ." diff --git a/client/webpack.rails.config.js b/client/webpack.rails.config.js index a433e0866..4a7c4f671 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.rails.config.js @@ -1,5 +1,5 @@ // Run like this: -// cd client && $(npm bin)/webpack -w --config webpack.rails.config.js +// cd client && npm run build:dev // 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 diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index 2c43109d4..df0694d80 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -13,8 +13,8 @@ namespace :assets do desc "Compile assets with webpack" task :webpack do - sh "cd client && $(npm bin)/webpack --config webpack.rails.config.js" - sh "cd client && $(npm bin)/webpack --config webpack.server.config.js" + sh "cd client && npm run build:client" + sh "cd client && npm run build:server" end task :clobber do From 44eeb478018d7624a1fc2e3e1b832e783c1c1e0b Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Wed, 23 Sep 2015 00:42:35 +0300 Subject: [PATCH 089/548] Fix after-rebase errors --- client/package.json | 8 ++--- client/server.js | 2 +- ...onfig.js => webpack.client.base.config.js} | 7 +++- ...config.js => webpack.client.hot.config.js} | 16 ++-------- ...nfig.js => webpack.client.rails.config.js} | 12 ++----- client/webpack.server.config.js | 14 -------- client/webpack.server.rails.config.js | 32 +++++++++++++++++++ 7 files changed, 49 insertions(+), 42 deletions(-) rename client/{webpack.common.config.js => webpack.client.base.config.js} (81%) rename client/{webpack.hot.config.js => webpack.client.hot.config.js} (81%) rename client/{webpack.rails.config.js => webpack.client.rails.config.js} (77%) delete mode 100644 client/webpack.server.config.js create mode 100644 client/webpack.server.rails.config.js diff --git a/client/package.json b/client/package.json index 3db886915..269c99839 100644 --- a/client/package.json +++ b/client/package.json @@ -68,10 +68,10 @@ "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js", - "build:client": "NODE_ENV=production webpack --config webpack.rails.config.js", - "build:server": "NODE_ENV=production webpack --config webpack.server.config.js", - "build:dev:client": "webpack -w --config webpack.rails.config.js", - "build:dev:client": "webpack -w --config webpack.server.config.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", "lint": "npm run eslint && npm run jscs", "eslint": "eslint --ext .js,.jsx .", "jscs": "jscs --verbose ." diff --git a/client/server.js b/client/server.js index b95d3e789..8a45d3559 100644 --- a/client/server.js +++ b/client/server.js @@ -2,7 +2,7 @@ var bodyParser = require('body-parser'); var webpack = require('webpack'); var WebpackDevServer = require('webpack-dev-server'); -var config = require('./webpack.hot.config'); +var config = require('./webpack.client.hot.config'); var sleep = require('sleep'); var comments = [ diff --git a/client/webpack.common.config.js b/client/webpack.client.base.config.js similarity index 81% rename from client/webpack.common.config.js rename to client/webpack.client.base.config.js index 700aa3d56..37d8e551a 100644 --- a/client/webpack.common.config.js +++ b/client/webpack.client.base.config.js @@ -8,7 +8,10 @@ module.exports = { // the project dir context: __dirname, entry: { - vendor: [], + vendor: [ + 'jquery', + 'jquery-ujs', + ], app: [], }, resolve: { @@ -31,6 +34,8 @@ module.exports = { // React is necessary for the client rendering: {test: require.resolve('react'), loader: 'expose?React'}, + {test: require.resolve('jquery'), loader: 'expose?jQuery'}, + {test: require.resolve('jquery'), loader: 'expose?$'}, ], }, }; diff --git a/client/webpack.hot.config.js b/client/webpack.client.hot.config.js similarity index 81% rename from client/webpack.hot.config.js rename to client/webpack.client.hot.config.js index abe0d42e6..5c2f9d18b 100644 --- a/client/webpack.hot.config.js +++ b/client/webpack.client.hot.config.js @@ -3,18 +3,12 @@ const webpack = require('webpack'); const path = require('path'); -const config = require('./webpack.common.config'); +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( - 'jquery', - 'jquery-ujs', - - // custom bootstrap - 'bootstrap-sass!./bootstrap-sass.config.js' -); -config.entry.app.unshift( +config.entry.vendor.push('bootstrap-sass!./bootstrap-sass.config.js'); +config.entry.app.push( 'webpack-dev-server/client?http://localhost:3000', 'webpack/hot/dev-server', './scripts/webpack_only', @@ -36,10 +30,6 @@ config.resolve.root.push(path.join(__dirname, 'assets/stylesheets')); // All the styling loaders only apply to hot-reload, not rails config.module.loaders.push( {test: /\.jsx?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/}, - - {test: require.resolve('jquery'), loader: 'expose?jQuery'}, - {test: require.resolve('jquery'), loader: 'expose?$'}, - {test: /\.css$/, loader: 'style-loader!css-loader'}, { test: /\.scss$/, diff --git a/client/webpack.rails.config.js b/client/webpack.client.rails.config.js similarity index 77% rename from client/webpack.rails.config.js rename to client/webpack.client.rails.config.js index 4a7c4f671..9742f9457 100644 --- a/client/webpack.rails.config.js +++ b/client/webpack.client.rails.config.js @@ -5,7 +5,7 @@ // NOTE: All style sheets handled by the asset pipeline in rails const webpack = require('webpack'); -const config = require('./webpack.common.config'); +const config = require('./webpack.client.base.config'); const devBuild = process.env.NODE_ENV !== 'production'; @@ -15,19 +15,13 @@ config.output = { }; // You can add entry points specific to rails here -config.entry.vendor.push( - './scripts/rails_only', - 'jquery', - 'jquery-ujs' -); +config.entry.vendor.unshift('./scripts/rails_only'); config.entry.app.push('./assets/javascripts/clientGlobals'); // See webpack.common.config for adding modules common to both the webpack dev server and rails config.module.loaders.push( - {test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel-loader'}, - {test: require.resolve('jquery'), loader: 'expose?jQuery'}, - {test: require.resolve('jquery'), loader: 'expose?$'} + {test: /\.jsx?$/, loader: 'babel-loader', exclude: /node_modules/} ); module.exports = config; diff --git a/client/webpack.server.config.js b/client/webpack.server.config.js deleted file mode 100644 index 9500dc4fb..000000000 --- a/client/webpack.server.config.js +++ /dev/null @@ -1,14 +0,0 @@ -const config = require('./webpack.common.config'); - -config.output = { - filename: 'server-bundle.js', - path: '../app/assets/javascripts/generated', - - // CRITICAL for enabling Rails to find the globally exposed variables. - libaryTarget: 'this', -}; - -config.entry.app.push('./assets/javascripts/serverGlobals'); - -config.module.loaders.push({ loader: 'babel-loader' }); -module.exports = config; diff --git a/client/webpack.server.rails.config.js b/client/webpack.server.rails.config.js new file mode 100644 index 000000000..7f1790958 --- /dev/null +++ b/client/webpack.server.rails.config.js @@ -0,0 +1,32 @@ +// Common webpack configuration used by webpack.hot.config and webpack.rails.config. + +const path = require('path'); + +module.exports = { + + // the project dir + context: __dirname, + entry: ['./assets/javascripts/serverGlobals'], + output: { + filename: 'server-bundle.js', + path: '../app/assets/javascripts/generated', + + // CRITICAL for enabling Rails to find the globally exposed variables. + libaryTarget: 'this', + }, + resolve: { + root: [ + path.join(__dirname, 'scripts'), + path.join(__dirname, 'assets/javascripts'), + ], + extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', 'config.js'], + }, + module: { + loaders: [ + {test: /\.jsx?$/, loader: 'babel-loader', exclude: /node_modules/}, + + // React is necessary for the client rendering: + {test: require.resolve('react'), loader: 'expose?React'}, + ], + }, +}; From 537c985dc82faee333d80509343ca32a3965f9dd Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Sat, 26 Sep 2015 22:21:09 +0300 Subject: [PATCH 090/548] Move js app to /client/app dir, update structure, fix linter and stylistic issues --- app/assets/javascripts/application.js | 4 +- client/.eslintrc | 2 +- client/.jscsrc | 4 +- .../actions/commentsActionCreators.js} | 16 +- client/app/components/Comment.jsx | 26 ++ .../components/CommentBox.jsx | 27 +- client/app/components/CommentForm.jsx | 244 ++++++++++++++++++ .../components/CommentList.jsx | 28 +- client/app/components/CommentScreen.jsx | 49 ++++ .../constants/commentsConstants.js} | 0 .../middlewares}/loggerMiddleware.js | 0 client/app/reducers/commentsReducer.js | 65 +++++ client/app/reducers/index.js | 10 + .../javascripts => app/startup}/ClientApp.jsx | 6 +- .../javascripts => app/startup}/ServerApp.jsx | 6 +- .../startup}/clientGlobals.jsx | 0 .../startup}/serverGlobals.jsx | 0 client/app/stores/commentsStore.js | 14 + .../utils/commentsManager.js} | 5 +- .../assets/javascripts/components/Comment.jsx | 25 -- .../javascripts/components/CommentForm.jsx | 198 -------------- .../javascripts/components/CommentScreen.jsx | 50 ---- .../javascripts/reducers/commentReducer.js | 36 --- client/assets/javascripts/reducers/index.js | 3 - .../assets/javascripts/stores/CommentStore.js | 8 - client/bin/lint | 12 - client/index.html | 4 +- client/package.json | 22 +- client/scripts/rails_only.jsx | 10 - client/scripts/webpack_only.jsx | 8 - client/webpack.client.base.config.js | 7 +- client/webpack.client.hot.config.js | 16 +- client/webpack.client.rails.config.js | 9 +- client/webpack.server.rails.config.js | 10 +- 34 files changed, 494 insertions(+), 430 deletions(-) rename client/{assets/javascripts/actions/CommentActionCreators.js => app/actions/commentsActionCreators.js} (77%) create mode 100644 client/app/components/Comment.jsx rename client/{assets/javascripts => app}/components/CommentBox.jsx (60%) create mode 100644 client/app/components/CommentForm.jsx rename client/{assets/javascripts => app}/components/CommentList.jsx (55%) create mode 100644 client/app/components/CommentScreen.jsx rename client/{assets/javascripts/constants/ActionTypes.js => app/constants/commentsConstants.js} (100%) rename client/{assets/javascripts/middleware => app/middlewares}/loggerMiddleware.js (100%) create mode 100644 client/app/reducers/commentsReducer.js create mode 100644 client/app/reducers/index.js rename client/{assets/javascripts => app/startup}/ClientApp.jsx (64%) rename client/{assets/javascripts => app/startup}/ServerApp.jsx (64%) mode change 100755 => 100644 rename client/{assets/javascripts => app/startup}/clientGlobals.jsx (100%) rename client/{assets/javascripts => app/startup}/serverGlobals.jsx (100%) create mode 100644 client/app/stores/commentsStore.js rename client/{assets/javascripts/utils/CommentsManager.js => app/utils/commentsManager.js} (90%) delete mode 100644 client/assets/javascripts/components/Comment.jsx delete mode 100644 client/assets/javascripts/components/CommentForm.jsx delete mode 100644 client/assets/javascripts/components/CommentScreen.jsx delete mode 100644 client/assets/javascripts/reducers/commentReducer.js delete mode 100644 client/assets/javascripts/reducers/index.js delete mode 100644 client/assets/javascripts/stores/CommentStore.js delete mode 100755 client/bin/lint delete mode 100644 client/scripts/rails_only.jsx delete mode 100755 client/scripts/webpack_only.jsx diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index e07c31489..8d41f23b8 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -14,7 +14,7 @@ //= require es5-shim/es5-shim // It is important that generated/client-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs -//= require generated/vendor -//= require generated/app +//= require generated/vendor-bundle +//= require generated/app-bundle //= require bootstrap-sprockets //= require turbolinks diff --git a/client/.eslintrc b/client/.eslintrc index 659178c0f..e9fe0cf1f 100644 --- a/client/.eslintrc +++ b/client/.eslintrc @@ -13,4 +13,4 @@ env: rules: indent: [1, 2, { SwitchCase: 1, VariableDeclarator: 2 }] react/sort-comp: 0 - react/jsx-quotes: 0 + react/jsx-quotes: 1 diff --git a/client/.jscsrc b/client/.jscsrc index 0be7eea16..c97c7f763 100644 --- a/client/.jscsrc +++ b/client/.jscsrc @@ -1,5 +1,7 @@ { "preset": "airbnb", "fileExtensions": [".js", ".jsx"], - "excludeFiles": ["build/**", "node_modules/**"] + "excludeFiles": ["build/**", "node_modules/**"], + + "validateQuoteMarks": null // Issue with JSX quotemarks: https://github.com/jscs-dev/babel-jscs/issues/12 } diff --git a/client/assets/javascripts/actions/CommentActionCreators.js b/client/app/actions/commentsActionCreators.js similarity index 77% rename from client/assets/javascripts/actions/CommentActionCreators.js rename to client/app/actions/commentsActionCreators.js index 5808f2b5c..58c7e4a6f 100644 --- a/client/assets/javascripts/actions/CommentActionCreators.js +++ b/client/app/actions/commentsActionCreators.js @@ -1,5 +1,5 @@ -import CommentsManager from '../utils/CommentsManager'; -import * as actionTypes from '../constants/ActionTypes'; +import commentsManager from '../utils/commentsManager'; +import * as actionTypes from '../constants/commentsConstants'; export function incrementAjaxCounter() { return { @@ -44,25 +44,23 @@ export function submitCommentFailure(error) { export function fetchComments() { return dispatch => { return ( - CommentsManager.fetchComments() + commentsManager + .fetchComments() .then(res => dispatch(fetchCommentsSuccess(res.data))) .catch(res => dispatch(fetchCommentsFailure(res.data))) ); }; } -function dispatchDecrementAjaxCounter(dispatch) { - return dispatch(decrementAjaxCounter()); -} - export function submitComment(comment) { return dispatch => { dispatch(incrementAjaxCounter()); return ( - CommentsManager.submitComment(comment) + commentsManager + .submitComment(comment) .then(res => dispatch(submitCommentSuccess(res.data))) .catch(res => dispatch(submitCommentFailure(res.data))) - .then(() => dispatchDecrementAjaxCounter(dispatch)) + .then(() => dispatch(decrementAjaxCounter())) ); }; } diff --git a/client/app/components/Comment.jsx b/client/app/components/Comment.jsx new file mode 100644 index 000000000..e3b40d1f7 --- /dev/null +++ b/client/app/components/Comment.jsx @@ -0,0 +1,26 @@ +import React, { PropTypes } from 'react'; +import marked from 'marked'; + +const Comment = React.createClass({ + displayName: 'Comment', + + propTypes: { + author: PropTypes.string.isRequired, + text: PropTypes.string.isRequired, + }, + + render() { + const { author, text } = this.props; + const rawMarkup = marked(text, { gfm: true, sanitize: true }); + return ( +
    +

    + {author} +

    + +
    + ); + }, +}); + +export default Comment; diff --git a/client/assets/javascripts/components/CommentBox.jsx b/client/app/components/CommentBox.jsx similarity index 60% rename from client/assets/javascripts/components/CommentBox.jsx rename to client/app/components/CommentBox.jsx index 33870dc87..4751708ef 100644 --- a/client/assets/javascripts/components/CommentBox.jsx +++ b/client/app/components/CommentBox.jsx @@ -1,4 +1,5 @@ -import React from 'react'; +import React, { PropTypes } from 'react'; + import CommentForm from './CommentForm'; import CommentList from './CommentList'; @@ -6,16 +7,15 @@ const CommentBox = React.createClass({ displayName: 'CommentBox', propTypes: { - pollInterval: React.PropTypes.number.isRequired, - actions: React.PropTypes.object.isRequired, - data: React.PropTypes.object.isRequired, + pollInterval: PropTypes.number.isRequired, + actions: PropTypes.object.isRequired, + data: PropTypes.object.isRequired, }, componentDidMount() { const { fetchComments } = this.props.actions; fetchComments(); - setInterval(fetchComments, - this.props.pollInterval); + setInterval(fetchComments, this.props.pollInterval); }, ajaxCounter() { @@ -30,20 +30,23 @@ const CommentBox = React.createClass({ const { actions, data } = this.props; return ( -
    +

    - Comments { this.isSendingAjax() ? `SENDING AJAX REQUEST! Ajax Counter is ${this.ajaxCounter()}` : '' } + Comments { this.isSendingAjax() && `SENDING AJAX REQUEST! Ajax Counter is ${this.ajaxCounter()}` }

    Text take Github Flavored Markdown. Comments older than 24 hours are deleted. - Name is preserved, Text is reset, between submits.

    + Name is preserved, Text is reset, between submits. +

    + actions={actions} + /> + $$comments={data.get('$$comments')} + error={data.get('fetchCommentError')} + />
    ); }, diff --git a/client/app/components/CommentForm.jsx b/client/app/components/CommentForm.jsx new file mode 100644 index 000000000..c9b3c5dff --- /dev/null +++ b/client/app/components/CommentForm.jsx @@ -0,0 +1,244 @@ +import React, { PropTypes } from 'react'; +import Input from 'react-bootstrap/lib/Input'; +import Row from 'react-bootstrap/lib/Row'; +import Col from 'react-bootstrap/lib/Col'; +import Nav from 'react-bootstrap/lib/Nav'; +import NavItem from 'react-bootstrap/lib/NavItem'; +import Alert from 'react-bootstrap/lib/Alert'; +import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup'; + +const emptyComment = { author: '', text: '' }; +const textPlaceholder = 'Say something using markdown...'; + +const CommentForm = React.createClass({ + displayName: 'CommentForm', + + propTypes: { + ajaxSending: PropTypes.bool.isRequired, + actions: PropTypes.object.isRequired, + error: PropTypes.any, + }, + + getInitialState() { + return { + formMode: 0, + comment: emptyComment, + }; + }, + + handleSelect(selectedKey) { + this.setState({ formMode: selectedKey }); + }, + + handleChange() { + let comment; + + // This could also be done using ReactLink: + // http://facebook.github.io/react/docs/two-way-binding-helpers.html + if (this.state.formMode < 2) { + comment = { + author: this.refs.author.getValue(), + text: this.refs.text.getValue(), + }; + } else { + comment = { + // This is different because the input is a native HTML element + // rather than a React element. + author: this.refs.inlineAuthor.getDOMNode().value, + text: this.refs.inlineText.getDOMNode().value, + }; + } + + this.setState({ comment }); + }, + + handleSubmit(e) { + e.preventDefault(); + const { actions } = this.props; + actions + .submitComment(this.state.comment) + .then(this.resetAndFocus); + }, + + resetAndFocus() { + // Don't reset a form that didn't submit, this results in data loss + if (this.props.error) return; + + const comment = { author: this.state.comment.author, text: '' }; + this.setState({ comment }); + + let ref; + if (this.state.formMode < 2) { + ref = this.refs.text.getInputDOMNode(); + } else { + ref = React.findDOMNode(this.refs.inlineText); + } + + ref.focus(); + }, + + formHorizontal() { + return ( +
    +
    +
    + + +
    +
    + +
    +
    +
    +
    + ); + }, + + formStacked() { + return ( +
    +
    +
    + + + +
    +
    + ); + }, + + formInline() { + return ( +
    +
    +
    + + + + + + + + + + + + + +
    +
    + ); + }, + + errorWarning() { + // If there is no error, there is nothing to add to the DOM + if (!this.props.error) return undefined; + return ( + + Your comment was not saved! + A server error prevented your comment from being saved. Please try again. + + ); + }, + + render() { + let inputForm; + switch (this.state.formMode) { + case 0: + inputForm = this.formHorizontal(); + break; + case 1: + inputForm = this.formStacked(); + break; + case 2: + inputForm = this.formInline(); + break; + default: + throw new Error(`Unknown form mode: ${this.state.formMode}.`); + } + return ( +
    + + + {this.errorWarning()} + + + + {inputForm} +
    + ); + }, +}); + +export default CommentForm; diff --git a/client/assets/javascripts/components/CommentList.jsx b/client/app/components/CommentList.jsx similarity index 55% rename from client/assets/javascripts/components/CommentList.jsx rename to client/app/components/CommentList.jsx index 48a5a92ac..0f95a4e45 100644 --- a/client/assets/javascripts/components/CommentList.jsx +++ b/client/app/components/CommentList.jsx @@ -1,42 +1,50 @@ -import React from 'react'; -import Comment from './Comment'; +import React, { PropTypes } from 'react'; +import Immutable from 'immutable'; import Alert from 'react-bootstrap/lib/Alert'; import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup'; +import Comment from './Comment'; + const CommentList = React.createClass({ displayName: 'CommentList', propTypes: { - comments: React.PropTypes.object, - error: React.PropTypes.any.isRequired, + $$comments: PropTypes.instanceOf(Immutable.List).isRequired, + error: PropTypes.any, }, errorWarning() { // If there is no error, there is nothing to add to the DOM if (!this.props.error) return undefined; return ( - - Comments could not be retrieved. A server error prevented loading comments. Please try again. + + Comments could not be retrieved. + A server error prevented loading comments. Please try again. ); }, render() { - const commentNodes = this.props.comments.reverse().map((comment, index) => { + const { $$comments } = this.props; + const commentNodes = $$comments.reverse().map(($$comment, index) => { // `key` is a React-specific concept and is not mandatory for the // purpose of this tutorial. if you're curious, see more here: // http://facebook.github.io/react/docs/multiple-components.html#dynamic-children return ( - + ); }); return (
    - + {this.errorWarning()} -
    +
    {commentNodes}
    diff --git a/client/app/components/CommentScreen.jsx b/client/app/components/CommentScreen.jsx new file mode 100644 index 000000000..40439789e --- /dev/null +++ b/client/app/components/CommentScreen.jsx @@ -0,0 +1,49 @@ +import React, { PropTypes } from 'react'; +import CommentBox from './CommentBox'; +import { connect } from 'react-redux'; +import { bindActionCreators } from 'redux'; +import * as commentsActionCreators from '../actions/commentsActionCreators'; + +function select(state) { + // Which part of the Redux global state does our component want to receive as props? + return { data: state.$$commentsStore }; +} + +const CommentScreen = React.createClass({ + displayName: 'CommentScreen', + + propTypes: { + dispatch: PropTypes.func.isRequired, + data: PropTypes.object.isRequired, + }, + + render() { + const { dispatch, data } = this.props; + const actions = bindActionCreators(commentsActionCreators, dispatch); + return ( +
    + + + ); + }, +}); + +// Don't forget to actually use connect! +export default connect(select)(CommentScreen); diff --git a/client/assets/javascripts/constants/ActionTypes.js b/client/app/constants/commentsConstants.js similarity index 100% rename from client/assets/javascripts/constants/ActionTypes.js rename to client/app/constants/commentsConstants.js diff --git a/client/assets/javascripts/middleware/loggerMiddleware.js b/client/app/middlewares/loggerMiddleware.js similarity index 100% rename from client/assets/javascripts/middleware/loggerMiddleware.js rename to client/app/middlewares/loggerMiddleware.js diff --git a/client/app/reducers/commentsReducer.js b/client/app/reducers/commentsReducer.js new file mode 100644 index 000000000..5ed231b1f --- /dev/null +++ b/client/app/reducers/commentsReducer.js @@ -0,0 +1,65 @@ +/* eslint new-cap: 0 */ + +import Immutable from 'immutable'; + +import * as actionTypes from '../constants/commentsConstants'; + +export const $$initialState = Immutable.fromJS({ + $$comments: [], + ajaxCounter: 0, + fetchCommentError: null, + submitCommentError: null, +}); + +export default function commentsReducer($$state = $$initialState, action) { + const { type, comment, comments, error } = action; + + switch (type) { + + case actionTypes.FETCH_COMMENTS_SUCCESS: { + return $$state.merge({ + $$comments: comments, + fetchCommentError: null, + }); + } + + case actionTypes.FETCH_COMMENTS_FAILURE: { + return $$state.merge({ + fetchCommentError: error, + }); + } + + case actionTypes.SUBMIT_COMMENT_SUCCESS: { + return $$state.withMutations(state => ( + state + .updateIn( + ['$$comments'], + $$comments => $$comments.push(Immutable.fromJS(comment)) + ) + .merge({ submitCommentError: null }) + )); + } + + case actionTypes.SUBMIT_COMMENT_FAILURE: { + return $$state.merge({ + submitCommentError: error, + }); + } + + case actionTypes.INCREMENT_AJAX_COUNTER: { + return $$state.merge({ + ajaxCounter: $$state.get('ajaxCounter') + 1, + }); + } + + case actionTypes.DECREMENT_AJAX_COUNTER: { + return $$state.merge({ + ajaxCounter: $$state.get('ajaxCounter') - 1, + }); + } + + default: { + return $$state; + } + } +} diff --git a/client/app/reducers/index.js b/client/app/reducers/index.js new file mode 100644 index 000000000..028795b53 --- /dev/null +++ b/client/app/reducers/index.js @@ -0,0 +1,10 @@ +import commentsReducer from './commentsReducer'; +import { $$initialState as $$commentsState } from './commentsReducer'; + +export default { + $$commentsStore: commentsReducer, +}; + +export const initalStates = { + $$commentsState, +}; diff --git a/client/assets/javascripts/ClientApp.jsx b/client/app/startup/ClientApp.jsx similarity index 64% rename from client/assets/javascripts/ClientApp.jsx rename to client/app/startup/ClientApp.jsx index fe28bb08c..2d9216194 100644 --- a/client/assets/javascripts/ClientApp.jsx +++ b/client/app/startup/ClientApp.jsx @@ -1,12 +1,12 @@ import React from 'react'; import { Provider } from 'react-redux'; -import CommentScreen from './components/CommentScreen'; -import CommentStore from './stores/CommentStore'; +import commentsStore from '../stores/commentsStore'; +import CommentScreen from '../components/CommentScreen'; const App = () => { const reactComponent = ( - + {() => } ); diff --git a/client/assets/javascripts/ServerApp.jsx b/client/app/startup/ServerApp.jsx old mode 100755 new mode 100644 similarity index 64% rename from client/assets/javascripts/ServerApp.jsx rename to client/app/startup/ServerApp.jsx index fe28bb08c..2d9216194 --- a/client/assets/javascripts/ServerApp.jsx +++ b/client/app/startup/ServerApp.jsx @@ -1,12 +1,12 @@ import React from 'react'; import { Provider } from 'react-redux'; -import CommentScreen from './components/CommentScreen'; -import CommentStore from './stores/CommentStore'; +import commentsStore from '../stores/commentsStore'; +import CommentScreen from '../components/CommentScreen'; const App = () => { const reactComponent = ( - + {() => } ); diff --git a/client/assets/javascripts/clientGlobals.jsx b/client/app/startup/clientGlobals.jsx similarity index 100% rename from client/assets/javascripts/clientGlobals.jsx rename to client/app/startup/clientGlobals.jsx diff --git a/client/assets/javascripts/serverGlobals.jsx b/client/app/startup/serverGlobals.jsx similarity index 100% rename from client/assets/javascripts/serverGlobals.jsx rename to client/app/startup/serverGlobals.jsx diff --git a/client/app/stores/commentsStore.js b/client/app/stores/commentsStore.js new file mode 100644 index 000000000..d97c84ebd --- /dev/null +++ b/client/app/stores/commentsStore.js @@ -0,0 +1,14 @@ +import { compose, createStore, applyMiddleware, combineReducers } from 'redux'; +import thunkMiddleware from 'redux-thunk'; +import loggerMiddleware from '../middlewares/loggerMiddleware'; +import reducers from '../reducers'; + +// applyMiddleware supercharges createStore with middleware: +const reducer = combineReducers(reducers); +const composedStore = compose( + applyMiddleware(thunkMiddleware, loggerMiddleware) +); +const storeCreator = composedStore(createStore); +const store = storeCreator(reducer); + +export default store; diff --git a/client/assets/javascripts/utils/CommentsManager.js b/client/app/utils/commentsManager.js similarity index 90% rename from client/assets/javascripts/utils/CommentsManager.js rename to client/app/utils/commentsManager.js index c501968f8..5b523dc79 100644 --- a/client/assets/javascripts/utils/CommentsManager.js +++ b/client/app/utils/commentsManager.js @@ -7,7 +7,7 @@ const CommentsManager = { /** * Retrieve comments from server using AJAX call. * - * @returns {Promise} - jqXHR result of ajax call. + * @returns {Promise} - result of ajax call. */ fetchComments() { return request({ @@ -21,7 +21,7 @@ const CommentsManager = { * Submit new comment to server using AJAX call. * * @param {Object} comment - Comment body to post. - * @returns {Promise} - jqXHR result of ajax call. + * @returns {Promise} - result of ajax call. */ submitComment(comment) { return request({ @@ -48,7 +48,6 @@ const CommentsManager = { return meta.getAttribute('content'); } } - return null; }, diff --git a/client/assets/javascripts/components/Comment.jsx b/client/assets/javascripts/components/Comment.jsx deleted file mode 100644 index d6d5a4e97..000000000 --- a/client/assets/javascripts/components/Comment.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import marked from 'marked'; -import React from 'react'; - -const Comment = React.createClass({ - displayName: 'Comment', - - propTypes: { - author: React.PropTypes.string.isRequired, - text: React.PropTypes.string.isRequired, - }, - - render() { - const rawMarkup = marked(this.props.text, { gfm: true, sanitize: true }); - return ( -
    -

    - {this.props.author} -

    - -
    - ); - }, -}); - -export default Comment; diff --git a/client/assets/javascripts/components/CommentForm.jsx b/client/assets/javascripts/components/CommentForm.jsx deleted file mode 100644 index 1533415b0..000000000 --- a/client/assets/javascripts/components/CommentForm.jsx +++ /dev/null @@ -1,198 +0,0 @@ -import React from 'react/addons'; -import Input from 'react-bootstrap/lib/Input'; -import Row from 'react-bootstrap/lib/Row'; -import Col from 'react-bootstrap/lib/Col'; -import Nav from 'react-bootstrap/lib/Nav'; -import NavItem from 'react-bootstrap/lib/NavItem'; -import Alert from 'react-bootstrap/lib/Alert'; -import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup'; - -const emptyComment = {author: '', text: ''}; -const textPlaceholder = 'Say something using markdown...'; - -const CommentForm = React.createClass({ - displayName: 'CommentForm', - - propTypes: { - ajaxSending: React.PropTypes.bool.isRequired, - actions: React.PropTypes.object.isRequired, - error: React.PropTypes.any.isRequired, - }, - - getInitialState() { - return { - formMode: 0, - comment: emptyComment, - }; - }, - - handleSelect(selectedKey) { - this.setState({formMode: selectedKey}); - }, - - handleChange() { - let comment; - - // This could also be done using ReactLink: - // http://facebook.github.io/react/docs/two-way-binding-helpers.html - if (this.state.formMode < 2) { - comment = { - author: this.refs.author.getValue(), - text: this.refs.text.getValue(), - }; - } else { - comment = { - // This is different because the input is a native HTML element - // rather than a React element. - author: this.refs.inlineAuthor.getDOMNode().value, - text: this.refs.inlineText.getDOMNode().value, - }; - } - - this.setState({comment}); - }, - - handleSubmit(e) { - e.preventDefault(); - this.props.actions.submitComment(this.state.comment).then( - () => this.resetAndFocus() - ); - }, - - resetAndFocus() { - // Don't reset a form that didn't submit, this results in data loss - if (this.props.error) return; - - const comment = {author: this.state.comment.author, text: ''}; - this.setState({comment}); - - let ref; - if (this.state.formMode < 2) { - ref = this.refs.text.getInputDOMNode(); - } else { - ref = React.findDOMNode(this.refs.inlineText); - } - - ref.focus(); - }, - - formHorizontal() { - return ( -
    -
    -
    - - - -
    -
    -
    -
    -
    -
    - ); - }, - - formStacked() { - return ( -
    -
    -
    - - - -
    -
    - ); - }, - - formInline() { - return ( -
    -
    -
    - - - - - - - - - - - - - -
    -
    - ); - }, - - errorWarning() { - // If there is no error, there is nothing to add to the DOM - if (!this.props.error) return undefined; - return ( - - Your comment was not saved! A server error prevented your comment from being saved. Please try - again. - - ); - }, - - render() { - let inputForm; - switch (this.state.formMode) { - case 0: - inputForm = this.formHorizontal(); - break; - case 1: - inputForm = this.formStacked(); - break; - case 2: - inputForm = this.formInline(); - break; - default: - throw new Error(`Unknown form mode: ${this.state.formMode}.`); - } - return ( -
    - - - {this.errorWarning()} - - - - {inputForm} -
    - ); - }, -}); - -export default CommentForm; diff --git a/client/assets/javascripts/components/CommentScreen.jsx b/client/assets/javascripts/components/CommentScreen.jsx deleted file mode 100644 index 843c37a53..000000000 --- a/client/assets/javascripts/components/CommentScreen.jsx +++ /dev/null @@ -1,50 +0,0 @@ -import React from 'react'; -import CommentBox from './CommentBox'; -import { connect } from 'react-redux'; -import { bindActionCreators } from 'redux'; -import { fetchComments, submitComment } from '../actions/CommentActionCreators'; - -const CommentActionsCreators = { fetchComments, submitComment }; - -function select(state) { - // Which part of the Redux global state does our component want to receive as props? - return { data: state.commentsData }; -} - -const CommentScreen = React.createClass({ - displayName: 'CommentScreen', - - propTypes: { - dispatch: React.PropTypes.func.isRequired, - data: React.PropTypes.object.isRequired, - }, - - render() { - const { dispatch, data } = this.props; - const actions = bindActionCreators(CommentActionsCreators, dispatch); - return ( -
    - - - - ); - }, -}); - -// Don't forget to actually use connect! -export default connect(select)(CommentScreen); diff --git a/client/assets/javascripts/reducers/commentReducer.js b/client/assets/javascripts/reducers/commentReducer.js deleted file mode 100644 index 0d75247f0..000000000 --- a/client/assets/javascripts/reducers/commentReducer.js +++ /dev/null @@ -1,36 +0,0 @@ -/* eslint new-cap: 0 */ - -import * as actionTypes from '../constants/ActionTypes'; - -import { Map, List } from 'immutable'; - -const initialState = Map({ - comments: List(), - ajaxCounter: 0, - fetchCommentError: '', - submitCommentError: '', -}); - -export default function commentsReducer(state = initialState, action) { - switch (action.type) { - case actionTypes.FETCH_COMMENTS_SUCCESS: - return state.merge({comments: action.comments, fetchCommentError: ''}); - case actionTypes.FETCH_COMMENTS_FAILURE: - return state.merge({fetchCommentError: action.error}); - case actionTypes.SUBMIT_COMMENT_SUCCESS: - return state.withMutations(mState => { - mState - .updateIn(['comments'], comments => comments.push(Map(action.comment))) - .merge({submitCommentError: ''}); - }); - - case actionTypes.SUBMIT_COMMENT_FAILURE: - return state.merge({submitCommentError: action.error}); - case actionTypes.INCREMENT_AJAX_COUNTER: - return state.merge({ajaxCounter: state.get('ajaxCounter') + 1}); - case actionTypes.DECREMENT_AJAX_COUNTER: - return state.merge({ajaxCounter: state.get('ajaxCounter') - 1}); - default: - return state; - } -} diff --git a/client/assets/javascripts/reducers/index.js b/client/assets/javascripts/reducers/index.js deleted file mode 100644 index 825f73ec6..000000000 --- a/client/assets/javascripts/reducers/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import commentsData from './commentReducer'; - -export default { commentsData }; diff --git a/client/assets/javascripts/stores/CommentStore.js b/client/assets/javascripts/stores/CommentStore.js deleted file mode 100644 index 052559350..000000000 --- a/client/assets/javascripts/stores/CommentStore.js +++ /dev/null @@ -1,8 +0,0 @@ -import { createStore, applyMiddleware, combineReducers } from 'redux'; -import thunk from 'redux-thunk'; -import reducers from '../reducers'; -import loggerMiddleware from '../middleware/loggerMiddleware'; - -// applyMiddleware supercharges createStore with middleware: -const createStoreWithMiddleware = applyMiddleware(thunk, loggerMiddleware)(createStore); -export default createStoreWithMiddleware(combineReducers(reducers)); diff --git a/client/bin/lint b/client/bin/lint deleted file mode 100755 index 284b920ed..000000000 --- a/client/bin/lint +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh -echo ================================================================================ -echo Warnings are OPTIONAL -echo ================================================================================ - -npm run eslint . -- --ext .jsx,.js -npm run jscs . - -echo ================================================================================ -echo Warnings are OPTIONAL -echo ================================================================================ - diff --git a/client/index.html b/client/index.html index 5c1dfde95..8be0fd5c6 100755 --- a/client/index.html +++ b/client/index.html @@ -2,8 +2,8 @@ Hello React - - + +
    diff --git a/client/package.json b/client/package.json index 269c99839..1c6b756b6 100644 --- a/client/package.json +++ b/client/package.json @@ -22,6 +22,17 @@ "url": "https://github.com/shakacode/react-webpack-rails-tutorial/issues" }, "homepage": "https://github.com/shakacode/react-webpack-rails-tutorial", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "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", + "lint": "npm run eslint && npm run jscs", + "eslint": "eslint --ext .js,.jsx .", + "jscs": "jscs --verbose ." + }, "dependencies": { "axios": "^0.5.4", "babel-core": "^5.8.23", @@ -64,16 +75,5 @@ "style-loader": "^0.12.3", "url-loader": "^0.5.6", "webpack-dev-server": "^1.10.1" - }, - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "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", - "lint": "npm run eslint && npm run jscs", - "eslint": "eslint --ext .js,.jsx .", - "jscs": "jscs --verbose ." } } diff --git a/client/scripts/rails_only.jsx b/client/scripts/rails_only.jsx deleted file mode 100644 index e56bcd414..000000000 --- a/client/scripts/rails_only.jsx +++ /dev/null @@ -1,10 +0,0 @@ -// Only used by rails - -// Example of including es5 shims for supporting older browsers -// https://facebook.github.io/react/docs/working-with-the-browser.html -require('es5-shim/es5-shim'); -require('es5-shim/es5-sham'); - -// Due to issue: https://github.com/ariya/phantomjs/issues/12401 -// Phantomjs does not like promises -require('es6-promise').polyfill(); diff --git a/client/scripts/webpack_only.jsx b/client/scripts/webpack_only.jsx deleted file mode 100755 index a0fbe11d7..000000000 --- a/client/scripts/webpack_only.jsx +++ /dev/null @@ -1,8 +0,0 @@ -// These are only loaded by the webpack dev server - -require('test-stylesheet.css'); - -// Test out Sass. -// Note that any sass in here cannot use the variables and mixins -// defined in the boostrap customizations file. -require('test-sass-stylesheet.scss'); diff --git a/client/webpack.client.base.config.js b/client/webpack.client.base.config.js index 37d8e551a..c664fa481 100644 --- a/client/webpack.client.base.config.js +++ b/client/webpack.client.base.config.js @@ -1,7 +1,6 @@ // Common webpack configuration used by webpack.hot.config and webpack.rails.config. const webpack = require('webpack'); -const path = require('path'); module.exports = { @@ -15,17 +14,13 @@ module.exports = { app: [], }, resolve: { - root: [ - path.join(__dirname, 'scripts'), - path.join(__dirname, 'assets/javascripts'), - ], extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'], }, plugins: [ new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', chunks: ['app'], - filename: 'vendor.js', + filename: 'vendor-bundle.js', minChunks: Infinity, }), ], diff --git a/client/webpack.client.hot.config.js b/client/webpack.client.hot.config.js index 5c2f9d18b..4115e7d68 100644 --- a/client/webpack.client.hot.config.js +++ b/client/webpack.client.hot.config.js @@ -9,24 +9,28 @@ const config = require('./webpack.client.base.config'); // See: https://github.com/shakacode/bootstrap-sass-loader config.entry.vendor.push('bootstrap-sass!./bootstrap-sass.config.js'); config.entry.app.push( + + // Webpack dev server 'webpack-dev-server/client?http://localhost:3000', 'webpack/hot/dev-server', - './scripts/webpack_only', - './assets/javascripts/clientGlobals' + + // Test out Css & Sass + './assets/stylesheets/test-stylesheet.css', + './assets/stylesheets/test-sass-stylesheet.scss', + + // App entry point + './app/startup/clientGlobals' ); config.output = { // this file is served directly by webpack - filename: '[name].js', + filename: '[name]-bundle.js', path: __dirname, }; config.plugins.unshift(new webpack.HotModuleReplacementPlugin()); config.devtool = 'eval-source-map'; -// Add the styles -config.resolve.root.push(path.join(__dirname, 'assets/stylesheets')); - // All the styling loaders only apply to hot-reload, not rails config.module.loaders.push( {test: /\.jsx?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/}, diff --git a/client/webpack.client.rails.config.js b/client/webpack.client.rails.config.js index 9742f9457..96db26438 100644 --- a/client/webpack.client.rails.config.js +++ b/client/webpack.client.rails.config.js @@ -10,13 +10,16 @@ const config = require('./webpack.client.base.config'); const devBuild = process.env.NODE_ENV !== 'production'; config.output = { - filename: '[name].js', + filename: '[name]-bundle.js', path: '../app/assets/javascripts/generated', }; // You can add entry points specific to rails here -config.entry.vendor.unshift('./scripts/rails_only'); -config.entry.app.push('./assets/javascripts/clientGlobals'); +config.entry.vendor.unshift( + 'es5-shim/es5-shim', + 'es5-shim/es5-sham' +); +config.entry.app.push('./app/startup/clientGlobals'); // See webpack.common.config for adding modules common to both the webpack dev server and rails diff --git a/client/webpack.server.rails.config.js b/client/webpack.server.rails.config.js index 7f1790958..ac164a4d6 100644 --- a/client/webpack.server.rails.config.js +++ b/client/webpack.server.rails.config.js @@ -1,12 +1,10 @@ -// Common webpack configuration used by webpack.hot.config and webpack.rails.config. - -const path = require('path'); +// Common webpack configuration for server bundle module.exports = { // the project dir context: __dirname, - entry: ['./assets/javascripts/serverGlobals'], + entry: ['./app/startup/serverGlobals'], output: { filename: 'server-bundle.js', path: '../app/assets/javascripts/generated', @@ -15,10 +13,6 @@ module.exports = { libaryTarget: 'this', }, resolve: { - root: [ - path.join(__dirname, 'scripts'), - path.join(__dirname, 'assets/javascripts'), - ], extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', 'config.js'], }, module: { From 76a7482a3dd25a06a054400f3fa7b38a39242e17 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Sat, 26 Sep 2015 22:22:36 +0300 Subject: [PATCH 091/548] :see_no_evil: --- app/assets/javascripts/application.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 8d41f23b8..ecd6646fe 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -13,8 +13,9 @@ // Need to be on top to allow Poltergeist test to work with React. //= require es5-shim/es5-shim -// It is important that generated/client-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs +// It is important that generated/vendor-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs //= require generated/vendor-bundle //= require generated/app-bundle + //= require bootstrap-sprockets //= require turbolinks From 06fc11e19005b5d556d57a0229a5f49c12812260 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Sun, 27 Sep 2015 00:20:35 +0300 Subject: [PATCH 092/548] Pass initial data from Rails to Redux store --- app/controllers/pages_controller.rb | 1 + app/views/pages/index.html.erb | 2 +- client/app/startup/ClientApp.jsx | 7 ++++--- client/app/startup/ServerApp.jsx | 8 ++++---- client/app/stores/commentsStore.js | 26 ++++++++++++++++++-------- client/index.html | 14 -------------- client/index.jade | 14 ++++++++++++++ client/package.json | 1 + client/server.js | 23 +++++++++++++++-------- 9 files changed, 58 insertions(+), 38 deletions(-) delete mode 100755 client/index.html create mode 100644 client/index.jade diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 39848c624..19dc5fef8 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,4 +1,5 @@ class PagesController < ApplicationController def index + @comments = Comment.all end end diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 9c514b3c9..4bffec631 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -16,4 +16,4 @@
    -<%= react_component('App', {}, generator_function: true, prerender: true) %> +<%= react_component('App', @comments, generator_function: true, prerender: true) %> diff --git a/client/app/startup/ClientApp.jsx b/client/app/startup/ClientApp.jsx index 2d9216194..dbdc2f932 100644 --- a/client/app/startup/ClientApp.jsx +++ b/client/app/startup/ClientApp.jsx @@ -1,12 +1,13 @@ import React from 'react'; import { Provider } from 'react-redux'; -import commentsStore from '../stores/commentsStore'; +import createStore from '../stores/commentsStore'; import CommentScreen from '../components/CommentScreen'; -const App = () => { +const App = props => { + const store = createStore(props); const reactComponent = ( - + {() => } ); diff --git a/client/app/startup/ServerApp.jsx b/client/app/startup/ServerApp.jsx index 2d9216194..698277229 100644 --- a/client/app/startup/ServerApp.jsx +++ b/client/app/startup/ServerApp.jsx @@ -1,17 +1,17 @@ import React from 'react'; import { Provider } from 'react-redux'; -import commentsStore from '../stores/commentsStore'; +import createStore from '../stores/commentsStore'; import CommentScreen from '../components/CommentScreen'; -const App = () => { +const App = props => { + const store = createStore(props); const reactComponent = ( - + {() => } ); return reactComponent; }; -// Export is needed for the hot reload server export default App; diff --git a/client/app/stores/commentsStore.js b/client/app/stores/commentsStore.js index d97c84ebd..0622dce70 100644 --- a/client/app/stores/commentsStore.js +++ b/client/app/stores/commentsStore.js @@ -2,13 +2,23 @@ import { compose, createStore, applyMiddleware, combineReducers } from 'redux'; import thunkMiddleware from 'redux-thunk'; import loggerMiddleware from '../middlewares/loggerMiddleware'; import reducers from '../reducers'; +import { initalStates } from '../reducers'; -// applyMiddleware supercharges createStore with middleware: -const reducer = combineReducers(reducers); -const composedStore = compose( - applyMiddleware(thunkMiddleware, loggerMiddleware) -); -const storeCreator = composedStore(createStore); -const store = storeCreator(reducer); +export default props => { + const initialComments = props; + const { $$commentsState } = initalStates; + const initialState = { + $$commentsStore: $$commentsState.merge({ + $$comments: initialComments, + }), + }; -export default store; + const reducer = combineReducers(reducers); + const composedStore = compose( + applyMiddleware(thunkMiddleware, loggerMiddleware) + ); + const storeCreator = composedStore(createStore); + const store = storeCreator(reducer, initialState); + + return store; +}; diff --git a/client/index.html b/client/index.html deleted file mode 100755 index 8be0fd5c6..000000000 --- a/client/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - Hello React - - - - -
    - - - diff --git a/client/index.jade b/client/index.jade new file mode 100644 index 000000000..859a03823 --- /dev/null +++ b/client/index.jade @@ -0,0 +1,14 @@ +doctype html +html + + head + title Hello, React + + body + + #app + + script(src="https://github.com/vendor-bundle.js") + script(src="https://github.com/app-bundle.js") + script. + React.render(App(!{props}), document.getElementById('app')); diff --git a/client/package.json b/client/package.json index 1c6b756b6..63b91a0e3 100644 --- a/client/package.json +++ b/client/package.json @@ -68,6 +68,7 @@ "expose-loader": "^0.7.0", "express": "^4.13.3", "file-loader": "^0.8.4", + "jade": "^1.11.0", "jscs": "^2.1.1", "node-sass": "^3.3.2", "react-hot-loader": "^1.3.0", diff --git a/client/server.js b/client/server.js index 8a45d3559..e4908f403 100644 --- a/client/server.js +++ b/client/server.js @@ -2,18 +2,19 @@ var bodyParser = require('body-parser'); var webpack = require('webpack'); var WebpackDevServer = require('webpack-dev-server'); -var config = require('./webpack.client.hot.config'); +var jade = require('jade'); var sleep = require('sleep'); +var config = require('./webpack.client.hot.config'); var comments = [ - {author: 'Pete Hunt', text: 'Hey there!'}, - {author: 'Justin Gordon', text: 'Aloha from @railsonmaui'}, + { author: 'Pete Hunt', text: 'Hey there!' }, + { author: 'Justin Gordon', text: 'Aloha from @railsonmaui' }, ]; var server = new WebpackDevServer(webpack(config), { publicPath: config.output.publicPath, hot: true, - noInfo: false, + historyApiFallback: true, stats: { colors: true, hash: false, @@ -41,10 +42,16 @@ server.app.post('/comments.json', function(req, res) { res.send(JSON.stringify(req.body.comment)); }); -server.listen(3000, 'localhost', function(err) { - if (err) { - console.log(err); - } +server.app.use('/', function(req, res) { + var locals = { + props: JSON.stringify(comments), + }; + var layout = process.cwd() + '/index.jade'; + var html = jade.compileFile(layout, { pretty: true })(locals); + res.send(html); +}); +server.listen(3000, 'localhost', function(err) { + if (err) console.log(err); console.log('Listening at localhost:3000...'); }); From 3d68653cdd01c2a498c744cfc15b68be3a34e3ea Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Sun, 27 Sep 2015 09:59:38 +0300 Subject: [PATCH 093/548] Fix linter error --- client/app/utils/commentsManager.js | 1 + 1 file changed, 1 insertion(+) diff --git a/client/app/utils/commentsManager.js b/client/app/utils/commentsManager.js index 5b523dc79..6698ace2e 100644 --- a/client/app/utils/commentsManager.js +++ b/client/app/utils/commentsManager.js @@ -48,6 +48,7 @@ const CommentsManager = { return meta.getAttribute('content'); } } + return null; }, From 57f3bad22ebf5713ec5fb0f200fbc8a5222abaec Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Sun, 27 Sep 2015 22:36:03 +0300 Subject: [PATCH 094/548] Update react_on_rails gem --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 9cb85a43f..3508b7fe7 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,7 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" -gem "react_on_rails", "~> 0.1.3" +gem "react_on_rails", "~> 0.1.6" gem "therubyracer" gem "autoprefixer-rails" diff --git a/Gemfile.lock b/Gemfile.lock index 13d0ac4b7..13249a8ad 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -206,7 +206,7 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - react_on_rails (0.1.3) + react_on_rails (0.1.6) execjs (~> 2.5) rails (~> 4.2) ref (2.0.0) @@ -351,7 +351,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow - react_on_rails (~> 0.1.3) + react_on_rails (~> 0.1.6) rspec-rails rubocop ruby-lint From c284074d02cee299dd42d61aac39323494e2040a Mon Sep 17 00:00:00 2001 From: Sergey Zyablitsky Date: Mon, 28 Sep 2015 13:45:56 +0900 Subject: [PATCH 095/548] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7869b5b29..c67268936 100644 --- a/README.md +++ b/README.md @@ -254,7 +254,7 @@ Run the tests with `rspec`. Add those lines to your CI scripts after `bundle install` ``` npm install -cd client && npm run build +cd client && npm run build:client && npm run build:server ``` # Linting and Code Inspection From 6edba3a423ec6b66f6b075510f95982aff17e330 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Sun, 27 Sep 2015 20:59:11 -1000 Subject: [PATCH 096/548] Update react_on_rails gem to latest version 1.0.7 Add server side default config to initializes/react_on_rails.rb --- Gemfile | 2 +- Gemfile.lock | 8 +++++--- config/initializers/react_on_rails.rb | 5 +++++ 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Gemfile b/Gemfile index 3508b7fe7..0c68fdef3 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,7 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" -gem "react_on_rails", "~> 0.1.6" +gem "react_on_rails", "~> 0.1.7" gem "therubyracer" gem "autoprefixer-rails" diff --git a/Gemfile.lock b/Gemfile.lock index 13249a8ad..da420ee94 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -92,6 +92,7 @@ GEM execjs coffee-script-source (1.9.1.1) columnize (0.9.0) + connection_pool (2.2.0) coveralls (0.8.2) json (~> 1.8) rest-client (>= 1.6.8, < 2) @@ -206,9 +207,10 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - react_on_rails (0.1.6) + react_on_rails (0.1.7) + connection_pool execjs (~> 2.5) - rails (~> 4.2) + rails (>= 4.0) ref (2.0.0) rest-client (1.8.0) http-cookie (>= 1.0.2, < 2.0) @@ -351,7 +353,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow - react_on_rails (~> 0.1.6) + react_on_rails (~> 0.1.7) rspec-rails rubocop ruby-lint diff --git a/config/initializers/react_on_rails.rb b/config/initializers/react_on_rails.rb index a83b7706f..6e929b292 100644 --- a/config/initializers/react_on_rails.rb +++ b/config/initializers/react_on_rails.rb @@ -13,4 +13,9 @@ # For server rendering. This can be set to false so that server side messages are discarded. config.replay_console = true # Default is true. Be cautious about turning this off. + config.logging_on_server = true # Default is true. Logs server rendering messags to Rails.logger.info + + # Server rendering: + config.server_renderer_pool_size = 1 # increase if you're on JRuby + config.server_renderer_timeout = 20 # seconds end From 361f4338ebb39a5d3934b00cb6d6fcf494773000 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 28 Sep 2015 22:02:23 -1000 Subject: [PATCH 097/548] update react_on_rails gem to latest 0.1.8 --- Gemfile | 2 +- Gemfile.lock | 4 ++-- app/assets/javascripts/application.js | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 0c68fdef3..767645be0 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,7 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" -gem "react_on_rails", "~> 0.1.7" +gem "react_on_rails", "~> 0.1.8" gem "therubyracer" gem "autoprefixer-rails" diff --git a/Gemfile.lock b/Gemfile.lock index da420ee94..acaf810ff 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,7 +207,7 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - react_on_rails (0.1.7) + react_on_rails (0.1.8) connection_pool execjs (~> 2.5) rails (>= 4.0) @@ -353,7 +353,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow - react_on_rails (~> 0.1.7) + react_on_rails (~> 0.1.8) rspec-rails rubocop ruby-lint diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index ecd6646fe..d309158bf 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -12,6 +12,7 @@ // Need to be on top to allow Poltergeist test to work with React. //= require es5-shim/es5-shim +//= require react_on_rails // It is important that generated/vendor-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs //= require generated/vendor-bundle From f43276d8027f51dda0b2c36d226c07873ab2f250 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 28 Sep 2015 22:20:03 -1000 Subject: [PATCH 098/548] Update scripts/lint for cd client && npm run lint --- scripts/lint | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/lint b/scripts/lint index fc77595c5..969ab3636 100755 --- a/scripts/lint +++ b/scripts/lint @@ -7,7 +7,7 @@ echo Linting with ruby-lint ruby-lint app config spec echo Linting with eslint and jscs -(cd client && bin/lint) +(cd client && npm run lint) scss-lint client/assets/stylesheets/*.scss app/assets/stylesheets/*.scss From bd599fbc3200acc95453165f9b5fb6f35644873d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20P=C3=A9rez?= Date: Tue, 29 Sep 2015 12:26:54 +0200 Subject: [PATCH 099/548] Typo on driver type --- spec/rails_helper.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 6cb6222e0..905176ee6 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -51,7 +51,7 @@ # selenium_firefox webdriver only works for Travis-CI builds. driver = ENV["DRIVER"].try(:to_sym) - if driver.nil? || driver == :selenium_chrome_ + if driver.nil? || driver == :selenium_chrome Capybara.register_driver :selenium_chrome do |app| Capybara::Selenium::Driver.new(app, browser: :chrome) end From 91d7fd14e2836a6e8d805cb84262bb24e70de075 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 4 Oct 2015 19:19:05 -0700 Subject: [PATCH 100/548] Unify use of jbuilder with server rendering * Change to use the same JSON for the server side load and the client side load of the comments. * Reuse one jbuilder template for the list and single view of comments. * Update the docs with how to do this. --- README.md | 50 +++++++++++++++++++++++ app/controllers/pages_controller.rb | 12 ++++++ app/views/comments/_comment.json.jbuilder | 1 + app/views/comments/index.json.jbuilder | 6 +-- app/views/comments/show.json.jbuilder | 2 +- app/views/pages/index.html.erb | 6 +-- 6 files changed, 69 insertions(+), 8 deletions(-) create mode 100644 app/views/comments/_comment.json.jbuilder diff --git a/README.md b/README.md index d8200493f..5d5fa71a1 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ You can see this tutorial live here: [http://reactrails.com/](http://reactrails. In no particular order: +- Example of using the [react_on_rails](https://github.com/shakacode/react_on_rails) - Example of Rails 4.2 with ReactJs/Redux with Webpack and ES7. - Enable development of a JS client independently from Rails using Webpack Hot Module Reload. You can see this by starting the app and visiting http://localhost:3000 - Easily enable use of npm modules with a Rails application. @@ -257,6 +258,55 @@ npm install cd client && npm run build:client && npm run build:server ``` +# JBuilder Notes +There's a bunch of gotchas with using [Jbuilder](https://github.com/rails/jbuilder) to create the +string version of the props to be sent to the react_on_rails_gem: + +See the notes in this the example code. The two critical things: + +1. Use `render_to_string` to create string of JSON. +2. Be sure to call `respond_to` afterwards. + +app/controllers/pages_controller.rb + +```ruby + class PagesController < ApplicationController + def index + # NOTE: this could be an alternate syntax if you wanted to pass comments as a variable to a partial + # @comments_json_string = render_to_string(partial: "/comments/comments.json.jbuilder", locals: { comments: Comment.all }, format: :json) + @comments = Comment.all + + # NOTE: @comments is used by the render_to_string call + @comments_json_string = render_to_string("/comments/index.json.jbuilder") + + # NOTE: It's CRITICAL to call respond_to after calling render_to_string, or else Rails will + # not render the HTML version of the index page properly. + respond_to do |format| + format.html + end + end + end +``` + +### comments/_comment.json.jbuilder: + +```ruby +json.extract! comment, :id, :author, :text, :created_at, :updated_at +``` + +### comments/index.json.jbuilder: + +```ruby +# Specify the partial, as well as the name of the variable used in the partial +json.array! @comments, { partial: "comments/comment", as: :comment } +``` + +### comments/show.json.jbuilder: + +```ruby +json.partial! 'comment', comment: @comment +``` + # Linting and Code Inspection ## Running Lint and CI tasks * Default rake task runs tests and linting (yes, repeating this!) (see `ci.rake`) diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 19dc5fef8..f0fc296a5 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,5 +1,17 @@ class PagesController < ApplicationController def index + # NOTE: this could be an alternate syntax if you wanted to pass comments as a variable to a partial + # @comments_json_sting = render_to_string(partial: "/comments/comments.json.jbuilder", + # locals: { comments: Comment.all }, format: :json) @comments = Comment.all + + # NOTE: @comments is used by the render_to_string call + @comments_json_string = render_to_string("/comments/index.json.jbuilder") + + # NOTE: It's CRITICAL to call respond_to after calling render_to_string, or else Rails will + # not render the HTML version of the index page properly. + respond_to do |format| + format.html + end end end diff --git a/app/views/comments/_comment.json.jbuilder b/app/views/comments/_comment.json.jbuilder new file mode 100644 index 000000000..2870cd7f7 --- /dev/null +++ b/app/views/comments/_comment.json.jbuilder @@ -0,0 +1 @@ +json.extract! comment, :id, :author, :text, :created_at, :updated_at diff --git a/app/views/comments/index.json.jbuilder b/app/views/comments/index.json.jbuilder index 79432f40f..f64379af9 100644 --- a/app/views/comments/index.json.jbuilder +++ b/app/views/comments/index.json.jbuilder @@ -1,4 +1,2 @@ -json.array!(@comments) do |comment| - json.extract! comment, :id, :author, :text - json.url comment_url(https://github.com/comment,%20format:%20:json) -end +# Specify the partial, as well as the name of the variable used in the partial +json.array! @comments, { partial: "comments/comment", as: :comment } diff --git a/app/views/comments/show.json.jbuilder b/app/views/comments/show.json.jbuilder index 971ce9e5a..09b127a63 100644 --- a/app/views/comments/show.json.jbuilder +++ b/app/views/comments/show.json.jbuilder @@ -1 +1 @@ -json.extract! @comment, :id, :author, :text, :created_at, :updated_at +json.partial! 'comment', comment: @comment diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 4bffec631..091f163e8 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -3,10 +3,10 @@
  • If this work interests you and you're a developer or designer looking for full or part-time remote work: please <%= link_to "click here", - "http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156" %> + "http://forum.shakacode.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156/3" %> and <%= link_to "here", - "http://forum.railsonmaui.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156/2" %>. + "http://forum.shakacode.com/t/railsonmaui-is-hiring-and-partnering-part-time-remote-is-ok/156/2" %>.
  • Please see the @@ -16,4 +16,4 @@

  • -<%= react_component('App', @comments, generator_function: true, prerender: true) %> +<%= react_component('App', @comments_json_string, generator_function: true, prerender: true) %> From e00b606024213a5e150161e73838333355e6a651 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 4 Oct 2015 20:01:35 -0700 Subject: [PATCH 101/548] Simple rendering of the Jbuilder by rendering Jbuilder template in the view --- README.md | 35 +++++++++++------------------ app/controllers/pages_controller.rb | 23 ++++++++++++------- app/views/pages/index.html.erb | 4 +++- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 5d5fa71a1..583eb4444 100644 --- a/README.md +++ b/README.md @@ -260,33 +260,24 @@ cd client && npm run build:client && npm run build:server # JBuilder Notes There's a bunch of gotchas with using [Jbuilder](https://github.com/rails/jbuilder) to create the -string version of the props to be sent to the react_on_rails_gem: +string version of the props to be sent to the react_on_rails_gem. The main thing is that if you +follow the example and call Jbuilder like this, you don't run into a number of issues. -See the notes in this the example code. The two critical things: +```erb +<%= react_component('App', render(template: "/comments/index.json.jbuilder"), + generator_function: true, prerender: true) %> +``` + +However, if you try to set the value of the JSON string inside of the controller, then you will +run into several issues with rendering the Jbuilder template from the controller. +See the notes in this the example code for app/controllers/pages_controller.rb. + +The two critical things: 1. Use `render_to_string` to create string of JSON. 2. Be sure to call `respond_to` afterwards. -app/controllers/pages_controller.rb - -```ruby - class PagesController < ApplicationController - def index - # NOTE: this could be an alternate syntax if you wanted to pass comments as a variable to a partial - # @comments_json_string = render_to_string(partial: "/comments/comments.json.jbuilder", locals: { comments: Comment.all }, format: :json) - @comments = Comment.all - - # NOTE: @comments is used by the render_to_string call - @comments_json_string = render_to_string("/comments/index.json.jbuilder") - - # NOTE: It's CRITICAL to call respond_to after calling render_to_string, or else Rails will - # not render the HTML version of the index page properly. - respond_to do |format| - format.html - end - end - end -``` +Here's the samples of Jbuilder that we use: ### comments/_comment.json.jbuilder: diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index f0fc296a5..6572c295c 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,17 +1,24 @@ class PagesController < ApplicationController def index + @comments = Comment.all + + # NOTE: The below notes apply if you want to set the value of the props in the controller, as + # compared to he view. However, it's more convenient to use Jbuilder from the view. See + # app/views/pages/index.html.erb:20 + # + # <%= react_component('App', render(template: "/comments/index.json.jbuilder"), + # generator_function: true, prerender: true) %> + # + # # NOTE: this could be an alternate syntax if you wanted to pass comments as a variable to a partial # @comments_json_sting = render_to_string(partial: "/comments/comments.json.jbuilder", # locals: { comments: Comment.all }, format: :json) - @comments = Comment.all - # NOTE: @comments is used by the render_to_string call - @comments_json_string = render_to_string("/comments/index.json.jbuilder") - + # @comments_json_string = render_to_string("/comments/index.json.jbuilder") # NOTE: It's CRITICAL to call respond_to after calling render_to_string, or else Rails will - # not render the HTML version of the index page properly. - respond_to do |format| - format.html - end + # not render the HTML version of the index page properly. (not a problem if you do this in the view) + # respond_to do |format| + # format.html + # end end end diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 091f163e8..17bae4329 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -16,4 +16,6 @@
    -<%= react_component('App', @comments_json_string, generator_function: true, prerender: true) %> + +<%= react_component('App', render(template: "/comments/index.json.jbuilder"), + generator_function: true, prerender: true) %> From 46b64add5b3f969acb2c3e82c46be88ddf47541a Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 4 Oct 2015 20:06:45 -0700 Subject: [PATCH 102/548] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index 583eb4444..9c8825da5 100644 --- a/README.md +++ b/README.md @@ -272,11 +272,6 @@ However, if you try to set the value of the JSON string inside of the controller run into several issues with rendering the Jbuilder template from the controller. See the notes in this the example code for app/controllers/pages_controller.rb. -The two critical things: - -1. Use `render_to_string` to create string of JSON. -2. Be sure to call `respond_to` afterwards. - Here's the samples of Jbuilder that we use: ### comments/_comment.json.jbuilder: From e5844e5fc319d0d34f8a81bb3ea83fec3cff2d1d Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Mon, 5 Oct 2015 20:45:15 +0300 Subject: [PATCH 103/548] Add NODE_ENV variable to server build --- client/webpack.server.rails.config.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/webpack.server.rails.config.js b/client/webpack.server.rails.config.js index ac164a4d6..40e3333a5 100644 --- a/client/webpack.server.rails.config.js +++ b/client/webpack.server.rails.config.js @@ -1,5 +1,7 @@ // Common webpack configuration for server bundle +const webpack = require('webpack'); + module.exports = { // the project dir @@ -8,13 +10,17 @@ module.exports = { output: { filename: 'server-bundle.js', path: '../app/assets/javascripts/generated', - - // CRITICAL for enabling Rails to find the globally exposed variables. - libaryTarget: 'this', }, resolve: { extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', 'config.js'], }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': { + 'NODE_ENV': JSON.stringify('production'), + }, + }), + ], module: { loaders: [ {test: /\.jsx?$/, loader: 'babel-loader', exclude: /node_modules/}, From 153004e4b96c0dfe496df146d41ed35b8ae187a4 Mon Sep 17 00:00:00 2001 From: Alex Fedoseev Date: Mon, 5 Oct 2015 20:45:55 +0300 Subject: [PATCH 104/548] Switch to react-transform-hmr --- client/package.json | 3 ++- client/webpack.client.hot.config.js | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/client/package.json b/client/package.json index 63b91a0e3..a1f28d61f 100644 --- a/client/package.json +++ b/client/package.json @@ -58,6 +58,7 @@ }, "devDependencies": { "babel-eslint": "^4.1.1", + "babel-plugin-react-transform": "^1.1.1", "bootstrap-sass": "^3.3.5", "bootstrap-sass-loader": "^1.0.9", "css-loader": "^0.17.0", @@ -71,7 +72,7 @@ "jade": "^1.11.0", "jscs": "^2.1.1", "node-sass": "^3.3.2", - "react-hot-loader": "^1.3.0", + "react-transform-hmr": "^1.0.1", "sass-loader": "^2.0.1", "style-loader": "^0.12.3", "url-loader": "^0.5.6", diff --git a/client/webpack.client.hot.config.js b/client/webpack.client.hot.config.js index 4115e7d68..707d19c2a 100644 --- a/client/webpack.client.hot.config.js +++ b/client/webpack.client.hot.config.js @@ -33,7 +33,25 @@ config.devtool = 'eval-source-map'; // All the styling loaders only apply to hot-reload, not rails config.module.loaders.push( - {test: /\.jsx?$/, loaders: ['react-hot', 'babel'], exclude: /node_modules/}, + { + test: /\.jsx?$/, + loader: 'babel', + exclude: /node_modules/, + query: { + plugins: ['react-transform'], + extra: { + 'react-transform': { + transforms: [ + { + transform: 'react-transform-hmr', + imports: ['react'], + locals: ['module'], + } + ], + }, + }, + }, + }, {test: /\.css$/, loader: 'style-loader!css-loader'}, { test: /\.scss$/, @@ -46,6 +64,7 @@ config.module.loaders.push( {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: /\.svg$/, loader: 'file-loader'} +); module.exports = config; From f29e0155d20549a6f6d57881bc308f34bb556fb3 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 5 Oct 2015 19:26:53 -0700 Subject: [PATCH 105/548] Update package.json --- client/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/client/package.json b/client/package.json index a1f28d61f..95ad17cc6 100644 --- a/client/package.json +++ b/client/package.json @@ -66,7 +66,6 @@ "eslint-config-airbnb": "0.0.8", "eslint-plugin-react": "^3.3.1", "esprima-fb": "^15001.1001.0-dev-harmony-fb", - "expose-loader": "^0.7.0", "express": "^4.13.3", "file-loader": "^0.8.4", "jade": "^1.11.0", From 25b759633a9f1fd3b116d0285a382b115ddc8039 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 5 Oct 2015 19:34:27 -0700 Subject: [PATCH 106/548] update shrinkwrap --- client/npm-shrinkwrap.json | 1702 +++++++++++++++++++++++++----------- 1 file changed, 1201 insertions(+), 501 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 8943c431e..7c534750c 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -4,7 +4,7 @@ "dependencies": { "axios": { "version": "0.5.4", - "from": "axios@*", + "from": "axios@>=0.5.4 <0.6.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.5.4.tgz", "dependencies": { "es6-promise": { @@ -16,231 +16,231 @@ }, "babel-core": { "version": "5.8.25", - "from": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", + "from": "babel-core@>=5.8.23 <6.0.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", "dependencies": { "babel-plugin-constant-folding": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz", + "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" }, "babel-plugin-dead-code-elimination": { "version": "1.0.2", - "from": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz", + "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" }, "babel-plugin-eval": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz", + "from": "babel-plugin-eval@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" }, "babel-plugin-inline-environment-variables": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz", + "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" }, "babel-plugin-jscript": { "version": "1.0.4", - "from": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz", + "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" }, "babel-plugin-member-expression-literals": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz", + "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" }, "babel-plugin-property-literals": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz", + "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" }, "babel-plugin-proto-to-assign": { "version": "1.0.4", - "from": "https://registry.npmjs.org/babel-plugin-proto-to-assign/-/babel-plugin-proto-to-assign-1.0.4.tgz", + "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" }, "babel-plugin-react-constant-elements": { "version": "1.0.3", - "from": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz", + "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" }, "babel-plugin-react-display-name": { "version": "1.0.3", - "from": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz", + "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" }, "babel-plugin-remove-console": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz", + "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" }, "babel-plugin-remove-debugger": { "version": "1.0.1", - "from": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz", + "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" }, "babel-plugin-runtime": { "version": "1.0.7", - "from": "https://registry.npmjs.org/babel-plugin-runtime/-/babel-plugin-runtime-1.0.7.tgz", + "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-undeclared-variables-check": { "version": "1.0.2", - "from": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", + "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", "dependencies": { "leven": { "version": "1.0.2", - "from": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz", + "from": "leven@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" } } }, "babel-plugin-undefined-to-void": { "version": "1.1.6", - "from": "https://registry.npmjs.org/babel-plugin-undefined-to-void/-/babel-plugin-undefined-to-void-1.1.6.tgz", + "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" }, "babylon": { "version": "5.8.23", - "from": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz", + "from": "babylon@>=5.8.23 <6.0.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" }, "bluebird": { - "version": "2.10.0", - "from": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.0.tgz", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.0.tgz" + "version": "2.10.2", + "from": "bluebird@>=2.9.33 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" }, "chalk": { "version": "1.1.1", - "from": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "from": "chalk@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", "dependencies": { "ansi-styles": { "version": "2.1.0", - "from": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz", + "from": "ansi-styles@>=2.1.0 <3.0.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" }, "escape-string-regexp": { "version": "1.0.3", - "from": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" }, "has-ansi": { "version": "2.0.0", - "from": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "from": "has-ansi@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "dependencies": { "ansi-regex": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "from": "ansi-regex@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "strip-ansi": { "version": "3.0.0", - "from": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "from": "strip-ansi@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", "dependencies": { "ansi-regex": { "version": "2.0.0", - "from": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz", + "from": "ansi-regex@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" } } }, "supports-color": { "version": "2.0.0", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "from": "supports-color@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" } } }, "convert-source-map": { "version": "1.1.1", - "from": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz", + "from": "convert-source-map@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" }, "core-js": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz" + "version": "1.2.1", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" }, "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@>=2.1.1 <3.0.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "from": "ms@0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" } } }, "detect-indent": { "version": "3.0.1", - "from": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", + "from": "detect-indent@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", "dependencies": { "get-stdin": { "version": "4.0.1", - "from": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "from": "get-stdin@>=4.0.1 <5.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" }, "minimist": { "version": "1.2.0", - "from": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "from": "minimist@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" } } }, "esutils": { "version": "2.0.2", - "from": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "from": "esutils@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" }, "fs-readdir-recursive": { "version": "0.1.2", - "from": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz", + "from": "fs-readdir-recursive@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" }, "globals": { "version": "6.4.1", - "from": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz", + "from": "globals@>=6.4.0 <7.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz" }, "home-or-tmp": { "version": "1.0.0", - "from": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", + "from": "home-or-tmp@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", "dependencies": { "os-tmpdir": { "version": "1.0.1", - "from": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz", + "from": "os-tmpdir@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" }, "user-home": { "version": "1.1.1", - "from": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "from": "user-home@>=1.1.1 <2.0.0", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" } } }, "is-integer": { "version": "1.0.6", - "from": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", + "from": "is-integer@>=1.0.4 <2.0.0", "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", "dependencies": { "is-finite": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "from": "is-finite@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", "dependencies": { "number-is-nan": { "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "from": "number-is-nan@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" } } @@ -249,49 +249,49 @@ }, "js-tokens": { "version": "1.0.1", - "from": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz", + "from": "js-tokens@1.0.1", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" }, "json5": { "version": "0.4.0", - "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", + "from": "json5@>=0.4.0 <0.5.0", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" }, "line-numbers": { "version": "0.2.0", - "from": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", + "from": "line-numbers@0.2.0", "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", "dependencies": { "left-pad": { "version": "0.0.3", - "from": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz", + "from": "left-pad@0.0.3", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" } } }, "lodash": { "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "from": "lodash@>=3.10.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "minimatch": { "version": "2.0.10", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "from": "minimatch@>=2.0.3 <3.0.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { "brace-expansion": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "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", "dependencies": { "balanced-match": { "version": "0.2.0", - "from": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz", + "from": "balanced-match@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" }, "concat-map": { "version": "0.0.1", - "from": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "from": "concat-map@0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" } } @@ -300,115 +300,115 @@ }, "output-file-sync": { "version": "1.1.1", - "from": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", + "from": "output-file-sync@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@>=0.5.1 <0.6.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "xtend": { "version": "4.0.0", - "from": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz", + "from": "xtend@>=4.0.0 <5.0.0", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" } } }, "path-exists": { "version": "1.0.0", - "from": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz", + "from": "path-exists@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.tgz" }, "path-is-absolute": { "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "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" }, "private": { "version": "0.1.6", - "from": "https://registry.npmjs.org/private/-/private-0.1.6.tgz", + "from": "private@>=0.1.6 <0.2.0", "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" }, "regenerator": { "version": "0.8.35", - "from": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", + "from": "regenerator@0.8.35", "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", "dependencies": { "commoner": { "version": "0.10.3", - "from": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", + "from": "commoner@>=0.10.0 <0.11.0", "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", "dependencies": { "q": { "version": "1.1.2", - "from": "https://registry.npmjs.org/q/-/q-1.1.2.tgz", + "from": "q@>=1.1.2 <1.2.0", "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" }, "commander": { "version": "2.5.1", - "from": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz", + "from": "commander@>=2.5.0 <2.6.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" }, "graceful-fs": { "version": "3.0.8", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", + "from": "graceful-fs@>=3.0.4 <3.1.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" }, "glob": { "version": "4.2.2", - "from": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", + "from": "glob@>=4.2.1 <4.3.0", "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", "dependencies": { "inflight": { "version": "1.0.4", - "from": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "from": "inflight@>=1.0.4 <2.0.0", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", "dependencies": { "wrappy": { "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "from": "wrappy@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" } } }, "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "minimatch": { "version": "1.0.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", + "from": "minimatch@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", "dependencies": { "lru-cache": { "version": "2.7.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz", + "from": "lru-cache@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "from": "sigmund@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" } } }, "once": { "version": "1.3.2", - "from": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "from": "once@>=1.3.0 <2.0.0", "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", "dependencies": { "wrappy": { "version": "1.0.1", - "from": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz", + "from": "wrappy@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" } } @@ -417,151 +417,161 @@ }, "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "install": { "version": "0.1.8", - "from": "https://registry.npmjs.org/install/-/install-0.1.8.tgz", + "from": "install@>=0.1.7 <0.2.0", "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" }, "iconv-lite": { - "version": "0.4.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" + "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" } } }, "defs": { "version": "1.1.0", - "from": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", + "from": "defs@>=1.1.0 <1.2.0", "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", "dependencies": { "alter": { "version": "0.2.0", - "from": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "from": "alter@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", "dependencies": { "stable": { "version": "0.1.5", - "from": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz", + "from": "stable@>=0.1.3 <0.2.0", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" } } }, "ast-traverse": { "version": "0.1.1", - "from": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", + "from": "ast-traverse@>=0.1.1 <0.2.0", "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" }, "breakable": { "version": "1.0.0", - "from": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", + "from": "breakable@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" }, "esprima-fb": { "version": "8001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz", + "from": "esprima-fb@>=8001.1001.0-dev-harmony-fb <8001.1002.0", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz" }, "simple-fmt": { "version": "0.1.0", - "from": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", + "from": "simple-fmt@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" }, "simple-is": { "version": "0.2.0", - "from": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", + "from": "simple-is@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" }, "stringmap": { "version": "0.2.2", - "from": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", + "from": "stringmap@>=0.2.2 <0.3.0", "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" }, "stringset": { "version": "0.2.1", - "from": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", + "from": "stringset@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz" }, "tryor": { "version": "0.1.2", - "from": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", + "from": "tryor@>=0.1.2 <0.2.0", "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" }, "yargs": { "version": "1.3.3", - "from": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz", + "from": "yargs@>=1.3.2 <1.4.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" } } }, "esprima-fb": { "version": "15001.1.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz", + "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" }, "recast": { "version": "0.10.24", - "from": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", + "from": "recast@0.10.24", "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", "dependencies": { "ast-types": { "version": "0.8.5", - "from": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz", + "from": "ast-types@0.8.5", "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" } } }, "through": { "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "from": "through@>=2.3.6 <2.4.0", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" } } }, "regexpu": { - "version": "1.2.0", - "from": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", - "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.2.0.tgz", + "version": "1.3.0", + "from": "regexpu@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", "dependencies": { + "esprima": { + "version": "2.6.0", + "from": "esprima@>=2.6.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" + }, "recast": { - "version": "0.10.32", - "from": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.32.tgz", + "version": "0.10.33", + "from": "recast@>=0.10.10 <0.11.0", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", "dependencies": { + "source-map": { + "version": "0.5.1", + "from": "source-map@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.1.tgz" + }, "ast-types": { - "version": "0.8.11", - "from": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.11.tgz" + "version": "0.8.12", + "from": "ast-types@0.8.12", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz" } } }, "regenerate": { "version": "1.2.1", - "from": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz", + "from": "regenerate@>=1.2.1 <2.0.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" }, "regjsgen": { "version": "0.2.0", - "from": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "from": "regjsgen@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" }, "regjsparser": { "version": "0.1.5", - "from": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "from": "regjsparser@>=0.1.4 <0.2.0", "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "dependencies": { "jsesc": { "version": "0.5.0", - "from": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "from": "jsesc@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" } } @@ -570,17 +580,17 @@ }, "repeating": { "version": "1.1.3", - "from": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "from": "repeating@>=1.1.2 <2.0.0", "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", "dependencies": { "is-finite": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "from": "is-finite@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", "dependencies": { "number-is-nan": { "version": "1.0.0", - "from": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz", + "from": "number-is-nan@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" } } @@ -589,44 +599,44 @@ }, "resolve": { "version": "1.1.6", - "from": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz", + "from": "resolve@>=1.1.6 <2.0.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" }, "shebang-regex": { "version": "1.0.0", - "from": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "from": "shebang-regex@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" }, "slash": { "version": "1.0.0", - "from": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "from": "slash@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" }, "source-map": { "version": "0.4.4", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "from": "source-map@>=0.4.0 <0.5.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "from": "amdefine@>=0.0.4", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, "source-map-support": { "version": "0.2.10", - "from": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "from": "source-map-support@>=0.2.10 <0.3.0", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "dependencies": { "source-map": { "version": "0.1.32", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "from": "source-map@0.1.32", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "from": "amdefine@>=0.0.4", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -635,135 +645,135 @@ }, "to-fast-properties": { "version": "1.0.1", - "from": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz", + "from": "to-fast-properties@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" }, "trim-right": { "version": "1.0.1", - "from": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "from": "trim-right@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" }, "try-resolve": { "version": "1.0.1", - "from": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz", + "from": "try-resolve@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" } } }, "babel-loader": { "version": "5.3.2", - "from": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", + "from": "babel-loader@>=5.3.2 <6.0.0", "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", "dependencies": { "object-assign": { "version": "3.0.0", - "from": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", + "from": "object-assign@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" } } }, "body-parser": { - "version": "1.14.0", - "from": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.0.tgz", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.0.tgz", + "version": "1.14.1", + "from": "body-parser@>=1.13.3 <2.0.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.1.tgz", "dependencies": { "bytes": { "version": "2.1.0", - "from": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz", + "from": "bytes@2.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" }, "content-type": { "version": "1.0.1", - "from": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz", + "from": "content-type@>=1.0.1 <1.1.0", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" }, "debug": { "version": "2.2.0", - "from": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "from": "debug@>=2.2.0 <2.3.0", "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", "dependencies": { "ms": { "version": "0.7.1", - "from": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "from": "ms@0.7.1", "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" } } }, "depd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "from": "depd@>=1.1.0 <1.2.0", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" }, "http-errors": { "version": "1.3.1", - "from": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "from": "http-errors@>=1.3.1 <1.4.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "statuses": { "version": "1.2.1", - "from": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz", + "from": "statuses@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" } } }, "iconv-lite": { - "version": "0.4.11", - "from": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.11.tgz" + "version": "0.4.12", + "from": "iconv-lite@0.4.12", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.12.tgz" }, "on-finished": { "version": "2.3.0", - "from": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "from": "on-finished@>=2.3.0 <2.4.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "dependencies": { "ee-first": { "version": "1.1.1", - "from": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "from": "ee-first@1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" } } }, "qs": { "version": "5.1.0", - "from": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", + "from": "qs@5.1.0", "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" }, "raw-body": { - "version": "2.1.3", - "from": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.3.tgz", + "version": "2.1.4", + "from": "raw-body@>=2.1.4 <2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.4.tgz", "dependencies": { "unpipe": { "version": "1.0.0", - "from": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "from": "unpipe@1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" } } }, "type-is": { - "version": "1.6.8", - "from": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.8.tgz", + "version": "1.6.9", + "from": "type-is@>=1.6.6 <1.7.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.9.tgz", "dependencies": { "media-typer": { "version": "0.3.0", - "from": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "from": "media-typer@0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" }, "mime-types": { - "version": "2.1.6", - "from": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.6.tgz", + "version": "2.1.7", + "from": "mime-types@>=2.1.7 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz", "dependencies": { "mime-db": { - "version": "1.18.0", - "from": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.18.0.tgz" + "version": "1.19.0", + "from": "mime-db@>=1.19.0 <1.20.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz" } } } @@ -772,38 +782,38 @@ } }, "es5-shim": { - "version": "4.1.13", - "from": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.13.tgz", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.13.tgz" + "version": "4.1.14", + "from": "es5-shim@>=4.1.12 <5.0.0", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.14.tgz" }, "es6-promise": { "version": "3.0.2", - "from": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "from": "es6-promise@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" }, "expose-loader": { "version": "0.7.0", - "from": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz", + "from": "expose-loader@>=0.7.0 <0.8.0", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" }, "immutable": { "version": "3.7.5", - "from": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz", + "from": "immutable@>=3.7.5 <4.0.0", "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.5.tgz" }, "imports-loader": { "version": "0.6.4", - "from": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", + "from": "imports-loader@>=0.6.4 <0.7.0", "resolved": "https://registry.npmjs.org/imports-loader/-/imports-loader-0.6.4.tgz", "dependencies": { "source-map": { "version": "0.1.43", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "from": "source-map@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "from": "amdefine@>=0.0.4", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -812,74 +822,74 @@ }, "jquery": { "version": "2.1.4", - "from": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz", + "from": "jquery@>=2.1.4 <3.0.0", "resolved": "https://registry.npmjs.org/jquery/-/jquery-2.1.4.tgz" }, "jquery-ujs": { "version": "1.1.0-1", - "from": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.1.0-1.tgz", + "from": "jquery-ujs@>=1.1.0-1 <2.0.0", "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.1.0-1.tgz" }, "loader-utils": { "version": "0.2.11", - "from": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", + "from": "loader-utils@>=0.2.11 <0.3.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", "dependencies": { "big.js": { "version": "3.1.3", - "from": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "from": "big.js@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" }, "json5": { "version": "0.4.0", - "from": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz", + "from": "json5@>=0.4.0 <0.5.0", "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" } } }, "marked": { "version": "0.3.5", - "from": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz", + "from": "marked@>=0.3.5 <0.4.0", "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" }, "react": { "version": "0.13.3", - "from": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", + "from": "react@>=0.13.3 <0.14.0", "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", "dependencies": { "envify": { "version": "3.4.0", - "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "from": "envify@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", "dependencies": { "through": { "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "from": "through@>=2.3.4 <2.4.0", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" }, "jstransform": { "version": "10.1.0", - "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", + "from": "jstransform@>=10.0.1 <11.0.0", "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { "base62": { "version": "0.1.1", - "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", + "from": "base62@0.1.1", "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" }, "esprima-fb": { "version": "13001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, "source-map": { "version": "0.1.31", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "from": "source-map@0.1.31", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "from": "amdefine@>=0.0.4", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } @@ -892,94 +902,65 @@ }, "react-bootstrap": { "version": "0.25.2", - "from": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.2.tgz", + "from": "react-bootstrap@>=0.25.1 <0.26.0", "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.2.tgz", "dependencies": { "babel-runtime": { - "version": "5.8.24", - "from": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.24.tgz", + "version": "5.8.25", + "from": "babel-runtime@>=5.8.19 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.25.tgz", "dependencies": { "core-js": { - "version": "1.1.4", - "from": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.1.4.tgz" + "version": "1.2.1", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" } } }, "classnames": { - "version": "2.1.3", - "from": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.3.tgz" + "version": "2.1.5", + "from": "classnames@>=2.1.3 <3.0.0", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.5.tgz" }, "dom-helpers": { "version": "2.4.0", - "from": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz", + "from": "dom-helpers@>=2.2.4 <3.0.0", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz" }, "keycode": { "version": "2.1.0", - "from": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz", + "from": "keycode@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz" }, "lodash": { "version": "3.10.1", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "from": "lodash@>=3.10.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" }, "react-overlays": { "version": "0.4.4", - "from": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.4.4.tgz", + "from": "react-overlays@>=0.4.4 <0.5.0", "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.4.4.tgz", "dependencies": { "react-prop-types": { "version": "0.2.2", - "from": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz", + "from": "react-prop-types@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" }, "warning": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/warning/-/warning-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.0.0.tgz", + "version": "2.1.0", + "from": "warning@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", "dependencies": { - "envify": { - "version": "3.4.0", - "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" } } } @@ -989,52 +970,23 @@ }, "uncontrollable": { "version": "3.1.2", - "from": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.2.tgz", + "from": "uncontrollable@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.2.tgz", "dependencies": { "invariant": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", + "version": "2.1.1", + "from": "invariant@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz", "dependencies": { - "envify": { - "version": "3.4.0", - "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" } } } @@ -1046,52 +998,23 @@ }, "react-redux": { "version": "2.1.2", - "from": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.2.tgz", + "from": "react-redux@>=2.1.1 <3.0.0", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.2.tgz", "dependencies": { "invariant": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.0.tgz", + "version": "2.1.1", + "from": "invariant@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz", "dependencies": { - "envify": { - "version": "3.4.0", - "from": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", "dependencies": { - "through": { - "version": "2.3.8", - "from": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" } } } @@ -1101,42 +1024,42 @@ }, "redux": { "version": "2.0.0", - "from": "https://registry.npmjs.org/redux/-/redux-2.0.0.tgz", + "from": "redux@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/redux/-/redux-2.0.0.tgz" }, "redux-promise": { "version": "0.5.0", - "from": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", + "from": "redux-promise@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", "dependencies": { "flux-standard-action": { "version": "0.6.0", - "from": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", + "from": "flux-standard-action@0.6.0", "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", "dependencies": { "lodash.isplainobject": { "version": "3.2.0", - "from": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", + "from": "lodash.isplainobject@>=3.2.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", "dependencies": { "lodash._basefor": { "version": "3.0.2", - "from": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz", + "from": "lodash._basefor@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz" }, "lodash.isarguments": { "version": "3.0.4", - "from": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz", + "from": "lodash.isarguments@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" }, "lodash.keysin": { "version": "3.0.8", - "from": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", + "from": "lodash.keysin@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", "dependencies": { "lodash.isarray": { "version": "3.0.4", - "from": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", + "from": "lodash.isarray@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" } } @@ -1149,296 +1072,296 @@ }, "redux-thunk": { "version": "0.1.0", - "from": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz", + "from": "redux-thunk@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz" }, "sleep": { "version": "3.0.0", - "from": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", + "from": "sleep@>=3.0.0 <4.0.0", "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "dependencies": { "nan": { "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", + "from": "nan@>=2.0.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" } } }, "webpack": { "version": "1.12.2", - "from": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", + "from": "webpack@>=1.12.1 <2.0.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", "dependencies": { "async": { "version": "1.4.2", - "from": "https://registry.npmjs.org/async/-/async-1.4.2.tgz", + "from": "async@>=1.3.0 <2.0.0", "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" }, "clone": { "version": "1.0.2", - "from": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "from": "clone@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" }, "enhanced-resolve": { "version": "0.9.0", - "from": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", + "from": "enhanced-resolve@>=0.9.0 <0.10.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz", "dependencies": { "graceful-fs": { "version": "3.0.8", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", + "from": "graceful-fs@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "esprima": { "version": "2.6.0", - "from": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz", + "from": "esprima@>=2.5.0 <3.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" }, "interpret": { - "version": "0.6.5", - "from": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.5.tgz" + "version": "0.6.6", + "from": "interpret@>=0.6.4 <0.7.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz" }, "memory-fs": { "version": "0.2.0", - "from": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "from": "memory-fs@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" }, "mkdirp": { "version": "0.5.1", - "from": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "from": "mkdirp@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { "version": "0.0.8", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "from": "minimist@0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" } } }, "node-libs-browser": { "version": "0.5.3", - "from": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", + "from": "node-libs-browser@>=0.4.0 <=0.6.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", "dependencies": { "assert": { "version": "1.3.0", - "from": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz", + "from": "assert@>=1.1.1 <2.0.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" }, "browserify-zlib": { "version": "0.1.4", - "from": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "from": "browserify-zlib@>=0.1.4 <0.2.0", "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", "dependencies": { "pako": { "version": "0.2.8", - "from": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz", + "from": "pako@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" } } }, "buffer": { "version": "3.5.0", - "from": "https://registry.npmjs.org/buffer/-/buffer-3.5.0.tgz", + "from": "buffer@>=3.0.3 <4.0.0", "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.0.tgz", "dependencies": { "base64-js": { "version": "0.0.8", - "from": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz", + "from": "base64-js@0.0.8", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" }, "ieee754": { "version": "1.1.6", - "from": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz", + "from": "ieee754@>=1.1.4 <2.0.0", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz" }, "is-array": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz", + "from": "is-array@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/is-array/-/is-array-1.0.1.tgz" } } }, "console-browserify": { "version": "1.1.0", - "from": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "from": "console-browserify@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "dependencies": { "date-now": { "version": "0.1.4", - "from": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "from": "date-now@>=0.1.4 <0.2.0", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" } } }, "constants-browserify": { "version": "0.0.1", - "from": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz", + "from": "constants-browserify@0.0.1", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" }, "crypto-browserify": { "version": "3.2.8", - "from": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", + "from": "crypto-browserify@>=3.2.6 <3.3.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", "dependencies": { "pbkdf2-compat": { "version": "2.0.1", - "from": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz", + "from": "pbkdf2-compat@2.0.1", "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" }, "ripemd160": { "version": "0.2.0", - "from": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz", + "from": "ripemd160@0.2.0", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" }, "sha.js": { "version": "2.2.6", - "from": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz", + "from": "sha.js@2.2.6", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" } } }, "domain-browser": { "version": "1.1.4", - "from": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz", + "from": "domain-browser@>=1.1.1 <2.0.0", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" }, "events": { - "version": "1.0.2", - "from": "https://registry.npmjs.org/events/-/events-1.0.2.tgz", - "resolved": "https://registry.npmjs.org/events/-/events-1.0.2.tgz" + "version": "1.1.0", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.0.tgz" }, "http-browserify": { "version": "1.7.0", - "from": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", + "from": "http-browserify@>=1.3.2 <2.0.0", "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", "dependencies": { "Base64": { "version": "0.2.1", - "from": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz", + "from": "Base64@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" }, "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "https-browserify": { "version": "0.0.0", - "from": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz", + "from": "https-browserify@0.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" }, "os-browserify": { "version": "0.1.2", - "from": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz", + "from": "os-browserify@>=0.1.2 <0.2.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" }, "path-browserify": { "version": "0.0.0", - "from": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "from": "path-browserify@0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" }, "process": { "version": "0.11.2", - "from": "https://registry.npmjs.org/process/-/process-0.11.2.tgz", + "from": "process@>=0.11.0 <0.12.0", "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" }, "punycode": { "version": "1.3.2", - "from": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "from": "punycode@>=1.2.4 <2.0.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" }, "querystring-es3": { "version": "0.2.1", - "from": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "from": "querystring-es3@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" }, "readable-stream": { "version": "1.1.13", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "from": "readable-stream@>=1.1.13 <2.0.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "from": "core-util-is@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "from": "isarray@0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "stream-browserify": { "version": "1.0.0", - "from": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", + "from": "stream-browserify@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@>=2.0.1 <2.1.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "from": "string_decoder@>=0.10.25 <0.11.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "timers-browserify": { "version": "1.4.1", - "from": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz", + "from": "timers-browserify@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" }, "tty-browserify": { "version": "0.0.0", - "from": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "from": "tty-browserify@0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" }, "url": { "version": "0.10.3", - "from": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "from": "url@>=0.10.1 <0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "dependencies": { "querystring": { "version": "0.2.0", - "from": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "from": "querystring@0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" } } }, "util": { "version": "0.10.3", - "from": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "from": "util@>=0.10.3 <0.11.0", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, "vm-browserify": { "version": "0.0.4", - "from": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "from": "vm-browserify@0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", "dependencies": { "indexof": { "version": "0.0.1", - "from": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "from": "indexof@0.0.1", "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" } } @@ -1447,88 +1370,88 @@ }, "optimist": { "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "from": "optimist@>=0.6.0 <0.7.0", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "from": "wordwrap@>=0.0.2 <0.1.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" }, "minimist": { "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "from": "minimist@>=0.0.1 <0.1.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" } } }, "supports-color": { "version": "3.1.1", - "from": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", + "from": "supports-color@>=3.1.0 <4.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", "dependencies": { "has-flag": { "version": "1.0.0", - "from": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "from": "has-flag@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" } } }, "tapable": { "version": "0.1.9", - "from": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz", + "from": "tapable@>=0.1.8 <0.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" }, "uglify-js": { "version": "2.4.24", - "from": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "from": "uglify-js@>=2.4.24 <2.5.0", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", "dependencies": { "async": { "version": "0.2.10", - "from": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "from": "async@>=0.2.6 <0.3.0", "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, "source-map": { "version": "0.1.34", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", + "from": "source-map@0.1.34", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "from": "amdefine@>=0.0.4", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, "uglify-to-browserify": { "version": "1.0.2", - "from": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "from": "uglify-to-browserify@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" }, "yargs": { "version": "3.5.4", - "from": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", + "from": "yargs@>=3.5.4 <3.6.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", "dependencies": { "camelcase": { "version": "1.2.1", - "from": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "from": "camelcase@>=1.0.2 <2.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" }, "decamelize": { "version": "1.0.0", - "from": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz", + "from": "decamelize@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" }, "window-size": { "version": "0.1.0", - "from": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "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": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "from": "wordwrap@0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" } } @@ -1537,84 +1460,84 @@ }, "watchpack": { "version": "0.2.8", - "from": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", + "from": "watchpack@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", "dependencies": { "async": { "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "from": "async@>=0.9.0 <0.10.0", "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" }, "chokidar": { - "version": "1.0.6", - "from": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.6.tgz", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.0.6.tgz", + "version": "1.2.0", + "from": "chokidar@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.2.0.tgz", "dependencies": { "anymatch": { "version": "1.3.0", - "from": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "from": "anymatch@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", "dependencies": { "micromatch": { "version": "2.2.0", - "from": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", + "from": "micromatch@>=2.1.5 <3.0.0", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", "dependencies": { "arr-diff": { "version": "1.1.0", - "from": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", + "from": "arr-diff@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", "dependencies": { "arr-flatten": { "version": "1.0.1", - "from": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz", + "from": "arr-flatten@>=1.0.1 <2.0.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.0.1.tgz" }, "array-slice": { "version": "0.2.3", - "from": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "from": "array-slice@>=0.2.3 <0.3.0", "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz" } } }, "array-unique": { "version": "0.2.1", - "from": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "from": "array-unique@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" }, "braces": { "version": "1.8.1", - "from": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", + "from": "braces@>=1.8.0 <2.0.0", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", "dependencies": { "expand-range": { "version": "1.8.1", - "from": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", + "from": "expand-range@>=1.8.1 <2.0.0", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", "dependencies": { "fill-range": { "version": "2.2.2", - "from": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", + "from": "fill-range@>=2.1.0 <3.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", "dependencies": { "is-number": { "version": "1.1.2", - "from": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz", + "from": "is-number@>=1.1.2 <2.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-1.1.2.tgz" }, "isobject": { "version": "1.0.2", - "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", + "from": "isobject@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" }, "randomatic": { "version": "1.1.0", - "from": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz", + "from": "randomatic@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" }, "repeat-string": { "version": "1.5.2", - "from": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz", + "from": "repeat-string@>=1.5.2 <2.0.0", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" } } @@ -1623,124 +1546,134 @@ }, "lazy-cache": { "version": "0.2.3", - "from": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz", + "from": "lazy-cache@>=0.2.3 <0.3.0", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" }, "preserve": { "version": "0.2.0", - "from": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "from": "preserve@>=0.2.0 <0.3.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" }, "repeat-element": { "version": "1.1.2", - "from": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "from": "repeat-element@>=1.1.2 <2.0.0", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" } } }, "expand-brackets": { "version": "0.1.4", - "from": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz", + "from": "expand-brackets@>=0.1.1 <0.2.0", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" }, "extglob": { "version": "0.3.1", - "from": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", + "from": "extglob@>=0.3.0 <0.4.0", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", "dependencies": { "ansi-green": { "version": "0.1.1", - "from": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", + "from": "ansi-green@>=0.1.1 <0.2.0", "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", "dependencies": { "ansi-wrap": { "version": "0.1.0", - "from": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "from": "ansi-wrap@0.1.0", "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" } } }, "is-extglob": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "from": "is-extglob@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" }, "success-symbol": { "version": "0.1.0", - "from": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz", + "from": "success-symbol@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" } } }, "filename-regex": { "version": "2.0.0", - "from": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz", + "from": "filename-regex@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" }, + "is-glob": { + "version": "1.1.3", + "from": "is-glob@>=1.1.3 <2.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" + }, "kind-of": { "version": "1.1.0", - "from": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz", + "from": "kind-of@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" }, "object.omit": { "version": "1.1.0", - "from": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", + "from": "object.omit@>=1.1.0 <2.0.0", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", "dependencies": { "for-own": { "version": "0.1.3", - "from": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", + "from": "for-own@>=0.1.3 <0.2.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", "dependencies": { "for-in": { "version": "0.1.4", - "from": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz", + "from": "for-in@>=0.1.4 <0.2.0", "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz" } } }, "isobject": { "version": "1.0.2", - "from": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz", + "from": "isobject@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" } } }, "parse-glob": { - "version": "3.0.2", - "from": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.2.tgz", + "version": "3.0.4", + "from": "parse-glob@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "dependencies": { "glob-base": { - "version": "0.2.0", - "from": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.2.0.tgz" + "version": "0.3.0", + "from": "glob-base@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" }, "is-dotfile": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz", + "from": "is-dotfile@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" }, "is-extglob": { "version": "1.0.0", - "from": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "from": "is-extglob@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" } } }, "regex-cache": { "version": "0.4.2", - "from": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", + "from": "regex-cache@>=0.4.2 <0.5.0", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", "dependencies": { "is-equal-shallow": { "version": "0.1.3", - "from": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "from": "is-equal-shallow@>=0.1.1 <0.2.0", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" }, "is-primitive": { "version": "2.0.0", - "from": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "from": "is-primitive@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" } } @@ -1751,113 +1684,880 @@ }, "arrify": { "version": "1.0.0", - "from": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz", + "from": "arrify@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" }, "async-each": { "version": "0.1.6", - "from": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", + "from": "async-each@>=0.1.5 <0.2.0", "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" }, "glob-parent": { - "version": "1.3.0", - "from": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.3.0.tgz", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-1.3.0.tgz", - "dependencies": { - "is-glob": { - "version": "2.0.0", - "from": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.0.tgz", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.0.tgz" - } - } + "version": "2.0.0", + "from": "glob-parent@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" }, "is-binary-path": { "version": "1.0.1", - "from": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "from": "is-binary-path@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", "dependencies": { "binary-extensions": { "version": "1.3.1", - "from": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz", + "from": "binary-extensions@>=1.0.0 <2.0.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" } } }, "is-glob": { - "version": "1.1.3", - "from": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + } + } + }, + "lodash.flatten": { + "version": "3.0.2", + "from": "lodash.flatten@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-3.0.2.tgz", + "dependencies": { + "lodash._baseflatten": { + "version": "3.1.4", + "from": "lodash._baseflatten@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz", + "dependencies": { + "lodash.isarguments": { + "version": "3.0.4", + "from": "lodash.isarguments@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" + }, + "lodash.isarray": { + "version": "3.0.4", + "from": "lodash.isarray@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" + } + } + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" + } + } }, "path-is-absolute": { "version": "1.0.0", - "from": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz", + "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" }, "readdirp": { - "version": "1.4.0", - "from": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-1.4.0.tgz", + "version": "2.0.0", + "from": "readdirp@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.0.0.tgz", "dependencies": { "graceful-fs": { "version": "4.1.2", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz", + "from": "graceful-fs@>=4.1.2 <5.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" }, "minimatch": { - "version": "0.2.14", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "version": "2.0.10", + "from": "minimatch@>=2.0.10 <3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", "dependencies": { - "lru-cache": { - "version": "2.7.0", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.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", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "balanced-match@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" + } + } } } }, "readable-stream": { - "version": "1.0.33", - "from": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "version": "2.0.2", + "from": "readable-stream@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", "dependencies": { "core-util-is": { "version": "1.0.1", - "from": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz", + "from": "core-util-is@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, "isarray": { "version": "0.0.1", - "from": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "from": "isarray@0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" }, + "process-nextick-args": { + "version": "1.0.3", + "from": "process-nextick-args@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" + }, "string_decoder": { "version": "0.10.31", - "from": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "from": "string_decoder@>=0.10.0 <0.11.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, - "inherits": { - "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "util-deprecate": { + "version": "1.0.1", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" } } } } }, "fsevents": { - "version": "0.3.8", - "from": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-0.3.8.tgz", + "version": "1.0.1", + "from": "fsevents@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.1.tgz", "dependencies": { "nan": { "version": "2.0.9", - "from": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz", + "from": "nan@>=2.0.2 <3.0.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + }, + "node-pre-gyp": { + "version": "0.6.11", + "from": "node-pre-gyp@0.6.11", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.11.tgz", + "dependencies": { + "nopt": { + "version": "3.0.4", + "from": "nopt@~3.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.4.tgz", + "dependencies": { + "abbrev": { + "version": "1.0.7", + "from": "abbrev@1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + } + } + }, + "npmlog": { + "version": "1.2.1", + "from": "npmlog@~1.2.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "dependencies": { + "ansi": { + "version": "0.3.0", + "from": "ansi@~0.3.0", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz" + }, + "are-we-there-yet": { + "version": "1.0.4", + "from": "are-we-there-yet@~1.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz", + "dependencies": { + "delegates": { + "version": "0.1.0", + "from": "delegates@^0.1.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "readable-stream@^1.1.13", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@~1.0.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@~0.10.x", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } + }, + "gauge": { + "version": "1.2.2", + "from": "gauge@~1.2.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.2.tgz", + "dependencies": { + "has-unicode": { + "version": "1.0.0", + "from": "has-unicode@^1.0.0", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.0.tgz" + }, + "lodash.pad": { + "version": "3.1.1", + "from": "lodash.pad@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.1.tgz", + "dependencies": { + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" + }, + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", + "dependencies": { + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" + } + } + } + } + }, + "lodash.padleft": { + "version": "3.1.1", + "from": "lodash.padleft@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz", + "dependencies": { + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" + }, + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", + "dependencies": { + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" + } + } + } + } + }, + "lodash.padright": { + "version": "3.1.1", + "from": "lodash.padright@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz", + "dependencies": { + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" + }, + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", + "dependencies": { + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" + } + } + } + } + } + } + } + } + }, + "request": { + "version": "2.63.0", + "from": "request@2.x", + "resolved": "https://registry.npmjs.org/request/-/request-2.63.0.tgz", + "dependencies": { + "bl": { + "version": "1.0.0", + "from": "bl@~1.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@~2.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@~1.0.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "process-nextick-args": { + "version": "1.0.3", + "from": "process-nextick-args@~1.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@~0.10.x", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.1", + "from": "util-deprecate@~1.0.1", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" + } + } + } + } + }, + "caseless": { + "version": "0.11.0", + "from": "caseless@~0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "extend": { + "version": "3.0.0", + "from": "extend@~3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + }, + "forever-agent": { + "version": "0.6.1", + "from": "forever-agent@~0.6.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + }, + "form-data": { + "version": "1.0.0-rc3", + "from": "form-data@~1.0.0-rc1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", + "dependencies": { + "async": { + "version": "1.4.2", + "from": "async@^1.4.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" + } + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@~5.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.1.7", + "from": "mime-types@~2.1.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz", + "dependencies": { + "mime-db": { + "version": "1.19.0", + "from": "mime-db@~1.19.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.3", + "from": "node-uuid@~1.4.0", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" + }, + "qs": { + "version": "5.1.0", + "from": "qs@~5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "tunnel-agent@~0.4.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" + }, + "tough-cookie": { + "version": "2.0.0", + "from": "tough-cookie@>=0.12.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.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", + "dependencies": { + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@^0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "asn1": { + "version": "0.1.11", + "from": "asn1@0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "ctype": { + "version": "0.5.3", + "from": "ctype@0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + } + } + }, + "oauth-sign": { + "version": "0.8.0", + "from": "oauth-sign@~0.8.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" + }, + "hawk": { + "version": "3.1.0", + "from": "hawk@~3.1.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", + "dependencies": { + "hoek": { + "version": "2.16.3", + "from": "hoek@2.x.x", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "boom": { + "version": "2.9.0", + "from": "boom@^2.8.x", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.9.0.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "cryptiles@2.x.x", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "sntp@1.x.x", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } + }, + "aws-sign2": { + "version": "0.5.0", + "from": "aws-sign2@~0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "stringstream@~0.0.4", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@~1.0.1", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@~1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, + "isstream": { + "version": "0.1.2", + "from": "isstream@~0.1.1", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "har-validator": { + "version": "1.8.0", + "from": "har-validator@^1.6.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "dependencies": { + "bluebird": { + "version": "2.10.1", + "from": "bluebird@^2.9.30", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.1.tgz" + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@^1.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@^2.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@^1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@^2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@^2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@^3.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@^2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@^2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "commander": { + "version": "2.8.1", + "from": "commander@^2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "from": "graceful-readlink@>= 1.0.0", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + } + }, + "is-my-json-valid": { + "version": "2.12.2", + "from": "is-my-json-valid@^2.12.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz", + "dependencies": { + "generate-function": { + "version": "2.0.0", + "from": "generate-function@^2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "generate-object-property@^1.1.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "dependencies": { + "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" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "from": "jsonpointer@2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "xtend": { + "version": "4.0.0", + "from": "xtend@^4.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" + } + } + } + } + } + } + }, + "semver": { + "version": "5.0.3", + "from": "semver@~5.0.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" + }, + "tar": { + "version": "2.2.1", + "from": "tar@~2.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "dependencies": { + "block-stream": { + "version": "0.0.8", + "from": "block-stream@*", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" + }, + "fstream": { + "version": "1.0.8", + "from": "fstream@^1.0.2", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@^4.1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "tar-pack": { + "version": "2.0.0", + "from": "tar-pack@~2.0.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz", + "dependencies": { + "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" + }, + "once": { + "version": "1.1.1", + "from": "once@~1.1.1", + "resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz" + }, + "debug": { + "version": "0.7.4", + "from": "debug@~0.7.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + }, + "rimraf": { + "version": "2.2.8", + "from": "rimraf@~2.2.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "fstream": { + "version": "0.1.31", + "from": "fstream@~0.1.22", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@~3.0.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "tar": { + "version": "0.1.20", + "from": "tar@~0.1.17", + "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", + "dependencies": { + "block-stream": { + "version": "0.0.8", + "from": "block-stream@*", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "fstream-ignore": { + "version": "0.0.7", + "from": "fstream-ignore@0.0.7", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz", + "dependencies": { + "minimatch": { + "version": "0.2.14", + "from": "minimatch@~0.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.0", + "from": "lru-cache@2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@~1.0.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "readable-stream": { + "version": "1.0.33", + "from": "readable-stream@~1.0.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@~1.0.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@~0.10.x", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "graceful-fs": { + "version": "1.2.3", + "from": "graceful-fs@1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + } + } + }, + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@~0.5.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "rc": { + "version": "1.1.1", + "from": "rc@~1.1.0", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.1.tgz", + "dependencies": { + "minimist": { + "version": "1.2.0", + "from": "minimist@^1.1.2", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.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" + }, + "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" + }, + "ini": { + "version": "1.3.4", + "from": "ini@~1.3.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + } + } + }, + "rimraf": { + "version": "2.4.3", + "from": "rimraf@~2.4.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", + "dependencies": { + "glob": { + "version": "5.0.14", + "from": "glob@^5.0.14", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.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": "2.0.10", + "from": "minimatch@^2.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "dependencies": { + "brace-expansion": { + "version": "1.1.0", + "from": "brace-expansion@^1.0.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "dependencies": { + "balanced-match": { + "version": "0.2.0", + "from": "balanced-match@^0.2.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" + } + } + } + } + }, + "once": { + "version": "1.3.2", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.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" + } + } + } + } + } + } } } } @@ -1865,31 +2565,31 @@ }, "graceful-fs": { "version": "3.0.8", - "from": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz", + "from": "graceful-fs@>=3.0.2 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } }, "webpack-core": { "version": "0.6.7", - "from": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz", + "from": "webpack-core@>=0.6.0 <0.7.0", "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz", "dependencies": { "source-map": { "version": "0.4.4", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "from": "source-map@>=0.4.1 <0.5.0", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "dependencies": { "amdefine": { "version": "1.0.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz", + "from": "amdefine@>=0.0.4", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } }, "source-list-map": { "version": "0.1.5", - "from": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz", + "from": "source-list-map@>=0.1.0 <0.2.0", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" } } From 43b299398c75b24de49f662bba83af9f3c22424e Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Tue, 6 Oct 2015 00:11:37 -0300 Subject: [PATCH 107/548] Update client README Fix typo --- client/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/README.md b/client/README.md index 30d0717d1..570678536 100644 --- a/client/README.md +++ b/client/README.md @@ -22,7 +22,7 @@ For now: bin/lint -Updating Node Dependenencies +Updating Node Dependencies =========================== ``` From c2419e184ec4eb13334de457710726fce134463f Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Tue, 6 Oct 2015 09:56:41 -0300 Subject: [PATCH 108/548] Update README Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c8825da5..b8523df8f 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ See package.json and Gemfile for versions 1. `npm install` 1. `rake db:setup` 1. `foreman start -f Procfile.dev` -1. Open a browser tab to http://0.0.0.0:4000 for the Rail app example. +1. Open a browser tab to http://0.0.0.0:4000 for the Rails app example. 1. Open a browser tab to http://0.0.0.0:3000 for the Hot Module Replacement Example. # Javascript development without Rails using Hot Module Replacement (HMR) From 86018b23ac110fdf7c9d474ab084a56a0f8bfe22 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Wed, 7 Oct 2015 09:49:49 -1000 Subject: [PATCH 109/548] Fix linting errors within server.rails.config and hot.config --- client/webpack.client.hot.config.js | 2 +- client/webpack.server.rails.config.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/webpack.client.hot.config.js b/client/webpack.client.hot.config.js index 707d19c2a..453987a82 100644 --- a/client/webpack.client.hot.config.js +++ b/client/webpack.client.hot.config.js @@ -46,7 +46,7 @@ config.module.loaders.push( transform: 'react-transform-hmr', imports: ['react'], locals: ['module'], - } + }, ], }, }, diff --git a/client/webpack.server.rails.config.js b/client/webpack.server.rails.config.js index 40e3333a5..5d23c808a 100644 --- a/client/webpack.server.rails.config.js +++ b/client/webpack.server.rails.config.js @@ -17,7 +17,7 @@ module.exports = { plugins: [ new webpack.DefinePlugin({ 'process.env': { - 'NODE_ENV': JSON.stringify('production'), + NODE_ENV: JSON.stringify('production'), }, }), ], From 8921fbab7d74f02166140e1225542731e1b0dfa4 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 8 Oct 2015 06:25:30 -1000 Subject: [PATCH 110/548] Upgrade react-bootstrap module to 0.26.4 and npm shrinkwrap --- client/npm-shrinkwrap.json | 112 +++++++++++++++++++++++-------------- client/package.json | 2 +- 2 files changed, 70 insertions(+), 44 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 7c534750c..6447da246 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -757,7 +757,7 @@ }, "type-is": { "version": "1.6.9", - "from": "type-is@>=1.6.6 <1.7.0", + "from": "type-is@>=1.6.9 <1.7.0", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.9.tgz", "dependencies": { "media-typer": { @@ -901,13 +901,13 @@ } }, "react-bootstrap": { - "version": "0.25.2", - "from": "react-bootstrap@>=0.25.1 <0.26.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.25.2.tgz", + "version": "0.26.4", + "from": "react-bootstrap@>=0.26.4 <0.27.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.26.4.tgz", "dependencies": { "babel-runtime": { "version": "5.8.25", - "from": "babel-runtime@>=5.8.19 <6.0.0", + "from": "babel-runtime@>=5.8.24 <6.0.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.25.tgz", "dependencies": { "core-js": { @@ -932,10 +932,10 @@ "from": "keycode@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz" }, - "lodash": { + "lodash-compat": { "version": "3.10.1", - "from": "lodash@>=3.10.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + "from": "lodash-compat@>=3.10.1 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz" }, "react-overlays": { "version": "0.4.4", @@ -968,10 +968,36 @@ } } }, + "react-prop-types": { + "version": "0.3.0", + "from": "react-prop-types@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz", + "dependencies": { + "warning": { + "version": "2.1.0", + "from": "warning@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "dependencies": { + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", + "dependencies": { + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" + } + } + } + } + } + } + }, "uncontrollable": { - "version": "3.1.2", - "from": "uncontrollable@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.2.tgz", + "version": "3.1.3", + "from": "uncontrollable@>=3.1.1 <4.0.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.3.tgz", "dependencies": { "invariant": { "version": "2.1.1", @@ -1081,9 +1107,9 @@ "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", "dependencies": { "nan": { - "version": "2.0.9", + "version": "2.1.0", "from": "nan@>=2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.1.0.tgz" } } }, @@ -1164,9 +1190,9 @@ } }, "buffer": { - "version": "3.5.0", + "version": "3.5.1", "from": "buffer@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.0.tgz", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.1.tgz", "dependencies": { "base64-js": { "version": "0.0.8", @@ -1820,28 +1846,28 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" }, "util-deprecate": { - "version": "1.0.1", + "version": "1.0.2", "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" } } } } }, "fsevents": { - "version": "1.0.1", + "version": "1.0.2", "from": "fsevents@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.1.tgz", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.2.tgz", "dependencies": { "nan": { - "version": "2.0.9", + "version": "2.1.0", "from": "nan@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.1.0.tgz" }, "node-pre-gyp": { - "version": "0.6.11", - "from": "node-pre-gyp@0.6.11", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.11.tgz", + "version": "0.6.12", + "from": "node-pre-gyp@0.6.12", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.12.tgz", "dependencies": { "nopt": { "version": "3.0.4", @@ -1897,7 +1923,7 @@ }, "inherits": { "version": "2.0.1", - "from": "inherits@2.0.1", + "from": "inherits@2", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } @@ -1991,9 +2017,9 @@ } }, "request": { - "version": "2.63.0", + "version": "2.64.0", "from": "request@2.x", - "resolved": "https://registry.npmjs.org/request/-/request-2.63.0.tgz", + "resolved": "https://registry.npmjs.org/request/-/request-2.64.0.tgz", "dependencies": { "bl": { "version": "1.0.0", @@ -2099,9 +2125,9 @@ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" }, "tough-cookie": { - "version": "2.0.0", + "version": "2.1.0", "from": "tough-cookie@>=0.12.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz" + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.1.0.tgz" }, "http-signature": { "version": "0.11.0", @@ -2190,9 +2216,9 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", "dependencies": { "bluebird": { - "version": "2.10.1", + "version": "2.10.2", "from": "bluebird@^2.9.30", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.1.tgz" + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" }, "chalk": { "version": "1.1.1", @@ -2319,7 +2345,7 @@ }, "inherits": { "version": "2.0.1", - "from": "inherits@~2.0.0", + "from": "inherits@2", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } @@ -2407,7 +2433,7 @@ }, "inherits": { "version": "2.0.1", - "from": "inherits@2", + "from": "inherits@~2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } @@ -2459,9 +2485,9 @@ } }, "rc": { - "version": "1.1.1", + "version": "1.1.2", "from": "rc@~1.1.0", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.2.tgz", "dependencies": { "minimist": { "version": "1.2.0", @@ -2491,9 +2517,9 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", "dependencies": { "glob": { - "version": "5.0.14", + "version": "5.0.15", "from": "glob@^5.0.14", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.14.tgz", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", "dependencies": { "inflight": { "version": "1.0.4", @@ -2509,18 +2535,18 @@ }, "inherits": { "version": "2.0.1", - "from": "inherits@2", + "from": "inherits@~2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "minimatch": { - "version": "2.0.10", - "from": "minimatch@^2.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", + "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.0", + "version": "1.1.1", "from": "brace-expansion@^1.0.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.1.tgz", "dependencies": { "balanced-match": { "version": "0.2.0", diff --git a/client/package.json b/client/package.json index 95ad17cc6..5ce26d67f 100644 --- a/client/package.json +++ b/client/package.json @@ -48,7 +48,7 @@ "loader-utils": "^0.2.11", "marked": "^0.3.5", "react": "^0.13.3", - "react-bootstrap": "^0.25.1", + "react-bootstrap": "^0.26.4", "react-redux": "^2.1.1", "redux": "^2.0.0", "redux-promise": "^0.5.0", From 2be3ada553ef7f76b8a26a4ed78c15b0ff47f807 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 8 Oct 2015 06:53:41 -1000 Subject: [PATCH 111/548] Add capybara-screenshoot custom driver for screenshot rendering --- spec/rails_helper.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 905176ee6..00c2407a3 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -56,11 +56,19 @@ Capybara::Selenium::Driver.new(app, browser: :chrome) end Capybara.javascript_driver = :selenium_chrome + + Capybara::Screenshot.register_driver(:selenium_chrome) do |driver, path| + driver.browser.save_screenshot(path) + end else Capybara.register_driver :selenium_firefox do |app| Capybara::Selenium::Driver.new(app, browser: :firefox) end Capybara.javascript_driver = :selenium_firefox + + Capybara::Screenshot.register_driver(:selenium_firefox) do |driver, path| + driver.browser.save_screenshot(path) + end end puts "Capybara using driver: #{Capybara.javascript_driver}" From f597629e30cc9e31132685ff7b7b92db53e299e2 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 8 Oct 2015 07:05:59 -1000 Subject: [PATCH 112/548] Add capybara default_wait_time --- spec/rails_helper.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 00c2407a3..6cfd5e360 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -71,6 +71,7 @@ end end + Capybara.default_wait_time = 15 puts "Capybara using driver: #{Capybara.javascript_driver}" Capybara::Screenshot.prune_strategy = { keep: 10 } From 47896787c9f852541a82bdbc564e0018388bb293 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 8 Oct 2015 11:10:42 -0700 Subject: [PATCH 113/548] Update all dependencies Note, had some issues with react-dom and history. Maybe these are not needed. We have a few deprecations to fix with React 0.14 --- client/npm-shrinkwrap.json | 229 ++++++++++++++++++++++++------------- client/package.json | 42 +++---- 2 files changed, 172 insertions(+), 99 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 6447da246..e1b767879 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -3,20 +3,13 @@ "version": "1.1.0", "dependencies": { "axios": { - "version": "0.5.4", - "from": "axios@>=0.5.4 <0.6.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.5.4.tgz", - "dependencies": { - "es6-promise": { - "version": "2.3.0", - "from": "es6-promise@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-2.3.0.tgz" - } - } + "version": "0.7.0", + "from": "axios@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.7.0.tgz" }, "babel-core": { "version": "5.8.25", - "from": "babel-core@>=5.8.23 <6.0.0", + "from": "babel-core@>=5.8.25 <6.0.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", "dependencies": { "babel-plugin-constant-folding": { @@ -674,7 +667,7 @@ }, "body-parser": { "version": "1.14.1", - "from": "body-parser@>=1.13.3 <2.0.0", + "from": "body-parser@>=1.14.1 <2.0.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.1.tgz", "dependencies": { "bytes": { @@ -783,7 +776,7 @@ }, "es5-shim": { "version": "4.1.14", - "from": "es5-shim@>=4.1.12 <5.0.0", + "from": "es5-shim@>=4.1.14 <5.0.0", "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.14.tgz" }, "es6-promise": { @@ -796,6 +789,61 @@ "from": "expose-loader@>=0.7.0 <0.8.0", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" }, + "history": { + "version": "1.12.3", + "from": "history@>=1.12.2 <2.0.0", + "resolved": "https://registry.npmjs.org/history/-/history-1.12.3.tgz", + "dependencies": { + "deep-equal": { + "version": "1.0.1", + "from": "deep-equal@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" + }, + "invariant": { + "version": "2.1.1", + "from": "invariant@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz", + "dependencies": { + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", + "dependencies": { + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" + } + } + } + } + }, + "qs": { + "version": "4.0.0", + "from": "qs@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" + }, + "warning": { + "version": "2.1.0", + "from": "warning@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "dependencies": { + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", + "dependencies": { + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" + } + } + } + } + } + } + }, "immutable": { "version": "3.7.5", "from": "immutable@>=3.7.5 <4.0.0", @@ -853,9 +901,9 @@ "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" }, "react": { - "version": "0.13.3", - "from": "react@>=0.13.3 <0.14.0", - "resolved": "https://registry.npmjs.org/react/-/react-0.13.3.tgz", + "version": "0.14.0", + "from": "react@>=0.14.0 <0.15.0", + "resolved": "https://registry.npmjs.org/react/-/react-0.14.0.tgz", "dependencies": { "envify": { "version": "3.4.0", @@ -897,13 +945,47 @@ } } } + }, + "fbjs": { + "version": "0.3.1", + "from": "fbjs@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.3.1.tgz", + "dependencies": { + "core-js": { + "version": "1.2.1", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" + }, + "promise": { + "version": "7.0.4", + "from": "promise@>=7.0.3 <8.0.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.0.4.tgz", + "dependencies": { + "asap": { + "version": "2.0.3", + "from": "asap@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz" + } + } + }, + "ua-parser-js": { + "version": "0.7.9", + "from": "ua-parser-js@>=0.7.9 <0.8.0", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.9.tgz" + }, + "whatwg-fetch": { + "version": "0.9.0", + "from": "whatwg-fetch@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz" + } + } } } }, "react-bootstrap": { - "version": "0.26.4", - "from": "react-bootstrap@>=0.26.4 <0.27.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.26.4.tgz", + "version": "0.27.1", + "from": "react-bootstrap@>=0.27.0 <0.28.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.27.1.tgz", "dependencies": { "babel-runtime": { "version": "5.8.25", @@ -938,59 +1020,14 @@ "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz" }, "react-overlays": { - "version": "0.4.4", - "from": "react-overlays@>=0.4.4 <0.5.0", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.4.4.tgz", + "version": "0.5.0", + "from": "react-overlays@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.5.0.tgz", "dependencies": { "react-prop-types": { "version": "0.2.2", "from": "react-prop-types@>=0.2.1 <0.3.0", "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" - }, - "warning": { - "version": "2.1.0", - "from": "warning@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } - } - } - }, - "react-prop-types": { - "version": "0.3.0", - "from": "react-prop-types@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz", - "dependencies": { - "warning": { - "version": "2.1.0", - "from": "warning@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } } } }, @@ -1019,14 +1056,48 @@ } } } + }, + "react-prop-types": { + "version": "0.3.0", + "from": "react-prop-types@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz" + }, + "warning": { + "version": "2.1.0", + "from": "warning@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", + "dependencies": { + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", + "dependencies": { + "js-tokens": { + "version": "1.0.1", + "from": "js-tokens@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" + } + } + } + } } } }, + "react-dom": { + "version": "0.14.0", + "from": "react-dom@>=0.14.0 <0.15.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.0.tgz" + }, "react-redux": { - "version": "2.1.2", - "from": "react-redux@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-2.1.2.tgz", + "version": "3.1.0", + "from": "react-redux@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-3.1.0.tgz", "dependencies": { + "hoist-non-react-statics": { + "version": "1.0.3", + "from": "hoist-non-react-statics@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.0.3.tgz" + }, "invariant": { "version": "2.1.1", "from": "invariant@>=2.0.0 <3.0.0", @@ -1049,9 +1120,9 @@ } }, "redux": { - "version": "2.0.0", - "from": "redux@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-2.0.0.tgz" + "version": "3.0.2", + "from": "redux@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.0.2.tgz" }, "redux-promise": { "version": "0.5.0", @@ -1097,9 +1168,9 @@ } }, "redux-thunk": { - "version": "0.1.0", - "from": "redux-thunk@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-0.1.0.tgz" + "version": "1.0.0", + "from": "redux-thunk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-1.0.0.tgz" }, "sleep": { "version": "3.0.0", @@ -1115,7 +1186,7 @@ }, "webpack": { "version": "1.12.2", - "from": "webpack@>=1.12.1 <2.0.0", + "from": "webpack@>=1.12.2 <2.0.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", "dependencies": { "async": { @@ -1135,7 +1206,7 @@ "dependencies": { "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <4.0.0", + "from": "graceful-fs@>=3.0.5 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } @@ -2591,7 +2662,7 @@ }, "graceful-fs": { "version": "3.0.8", - "from": "graceful-fs@>=3.0.2 <4.0.0", + "from": "graceful-fs@>=3.0.5 <4.0.0", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" } } diff --git a/client/package.json b/client/package.json index 5ce26d67f..fb0fb8fde 100644 --- a/client/package.json +++ b/client/package.json @@ -34,47 +34,49 @@ "jscs": "jscs --verbose ." }, "dependencies": { - "axios": "^0.5.4", - "babel-core": "^5.8.23", + "axios": "^0.7.0", + "babel-core": "^5.8.25", "babel-loader": "^5.3.2", - "body-parser": "^1.13.3", - "es5-shim": "^4.1.12", + "body-parser": "^1.14.1", + "es5-shim": "^4.1.14", "es6-promise": "^3.0.2", "expose-loader": "^0.7.0", + "history": "^1.12.2", "immutable": "^3.7.5", "imports-loader": "^0.6.4", "jquery": "^2.1.4", "jquery-ujs": "^1.1.0-1", "loader-utils": "^0.2.11", "marked": "^0.3.5", - "react": "^0.13.3", - "react-bootstrap": "^0.26.4", - "react-redux": "^2.1.1", - "redux": "^2.0.0", + "react": "^0.14.0", + "react-bootstrap": "^0.27.0", + "react-dom": "^0.14.0", + "react-redux": "^3.1.0", + "redux": "^3.0.2", "redux-promise": "^0.5.0", - "redux-thunk": "^0.1.0", + "redux-thunk": "^1.0.0", "sleep": "^3.0.0", - "webpack": "^1.12.1" + "webpack": "^1.12.2" }, "devDependencies": { - "babel-eslint": "^4.1.1", + "babel-eslint": "^4.1.3", "babel-plugin-react-transform": "^1.1.1", "bootstrap-sass": "^3.3.5", "bootstrap-sass-loader": "^1.0.9", - "css-loader": "^0.17.0", - "eslint": "^1.3.1", - "eslint-config-airbnb": "0.0.8", - "eslint-plugin-react": "^3.3.1", + "css-loader": "^0.19.0", + "eslint": "^1.6.0", + "eslint-config-airbnb": "0.1.0", + "eslint-plugin-react": "^3.5.1", "esprima-fb": "^15001.1001.0-dev-harmony-fb", "express": "^4.13.3", "file-loader": "^0.8.4", "jade": "^1.11.0", - "jscs": "^2.1.1", - "node-sass": "^3.3.2", + "jscs": "^2.3.0", + "node-sass": "^3.3.3", "react-transform-hmr": "^1.0.1", - "sass-loader": "^2.0.1", - "style-loader": "^0.12.3", + "sass-loader": "^3.0.0", + "style-loader": "^0.12.4", "url-loader": "^0.5.6", - "webpack-dev-server": "^1.10.1" + "webpack-dev-server": "^1.12.0" } } From 3c1374dfabb073f5274bad720bb13108ea8813b2 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 8 Oct 2015 11:24:29 -0700 Subject: [PATCH 114/548] Remove history We need to run `npm prune` before running `npm shrinkwrap` --- client/npm-shrinkwrap.json | 55 -------------------------------------- client/package.json | 1 - 2 files changed, 56 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index e1b767879..10810e909 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -789,61 +789,6 @@ "from": "expose-loader@>=0.7.0 <0.8.0", "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" }, - "history": { - "version": "1.12.3", - "from": "history@>=1.12.2 <2.0.0", - "resolved": "https://registry.npmjs.org/history/-/history-1.12.3.tgz", - "dependencies": { - "deep-equal": { - "version": "1.0.1", - "from": "deep-equal@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" - }, - "invariant": { - "version": "2.1.1", - "from": "invariant@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } - }, - "qs": { - "version": "4.0.0", - "from": "qs@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" - }, - "warning": { - "version": "2.1.0", - "from": "warning@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } - } - } - }, "immutable": { "version": "3.7.5", "from": "immutable@>=3.7.5 <4.0.0", diff --git a/client/package.json b/client/package.json index fb0fb8fde..bb53f2333 100644 --- a/client/package.json +++ b/client/package.json @@ -41,7 +41,6 @@ "es5-shim": "^4.1.14", "es6-promise": "^3.0.2", "expose-loader": "^0.7.0", - "history": "^1.12.2", "immutable": "^3.7.5", "imports-loader": "^0.6.4", "jquery": "^2.1.4", From 1ad345f4f4840a7ce021b5183a431801e52709ba Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 8 Oct 2015 08:44:50 -1000 Subject: [PATCH 115/548] Address linting offenses rails_helper.rb and utils/commentsManager.js add linting exception for eslint id-length --- client/.eslintrc | 1 + client/server.js | 2 +- spec/rails_helper.rb | 8 ++++---- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/client/.eslintrc b/client/.eslintrc index e9fe0cf1f..881f40975 100644 --- a/client/.eslintrc +++ b/client/.eslintrc @@ -14,3 +14,4 @@ rules: indent: [1, 2, { SwitchCase: 1, VariableDeclarator: 2 }] react/sort-comp: 0 react/jsx-quotes: 1 + id-length: [2, {"exceptions": ["e", "i"]}] diff --git a/client/server.js b/client/server.js index e4908f403..d768cfa11 100644 --- a/client/server.js +++ b/client/server.js @@ -7,7 +7,7 @@ var sleep = require('sleep'); var config = require('./webpack.client.hot.config'); var comments = [ - { author: 'Pete Hunt', text: 'Hey there!' }, + { author: 'Pete Hunt', text: 'Hey there!' }, { author: 'Justin Gordon', text: 'Aloha from @railsonmaui' }, ]; diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 6cfd5e360..ce8857977 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -57,8 +57,8 @@ end Capybara.javascript_driver = :selenium_chrome - Capybara::Screenshot.register_driver(:selenium_chrome) do |driver, path| - driver.browser.save_screenshot(path) + Capybara::Screenshot.register_driver(:selenium_chrome) do |js_driver, path| + js_driver.browser.save_screenshot(path) end else Capybara.register_driver :selenium_firefox do |app| @@ -66,8 +66,8 @@ end Capybara.javascript_driver = :selenium_firefox - Capybara::Screenshot.register_driver(:selenium_firefox) do |driver, path| - driver.browser.save_screenshot(path) + Capybara::Screenshot.register_driver(:selenium_firefox) do |js_driver, path| + js_driver.browser.save_screenshot(path) end end From 9344a31247cc9d64af5f46f32cf476666cc19dc2 Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Thu, 8 Oct 2015 16:41:49 -0300 Subject: [PATCH 116/548] Fix warnings of upgrading to React 0.14 --- client/app/components/CommentForm.jsx | 7 +++++-- client/app/components/CommentList.jsx | 6 +++++- client/app/startup/ClientApp.jsx | 2 +- client/app/startup/ServerApp.jsx | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/client/app/components/CommentForm.jsx b/client/app/components/CommentForm.jsx index c9b3c5dff..a0cffbd88 100644 --- a/client/app/components/CommentForm.jsx +++ b/client/app/components/CommentForm.jsx @@ -225,8 +225,11 @@ const CommentForm = React.createClass({ } return (
    - - + {this.errorWarning()} diff --git a/client/app/components/CommentList.jsx b/client/app/components/CommentList.jsx index 0f95a4e45..1d2f06ffa 100644 --- a/client/app/components/CommentList.jsx +++ b/client/app/components/CommentList.jsx @@ -41,7 +41,11 @@ const CommentList = React.createClass({ return (
    - + {this.errorWarning()}
    diff --git a/client/app/startup/ClientApp.jsx b/client/app/startup/ClientApp.jsx index dbdc2f932..b8035b7d3 100644 --- a/client/app/startup/ClientApp.jsx +++ b/client/app/startup/ClientApp.jsx @@ -8,7 +8,7 @@ const App = props => { const store = createStore(props); const reactComponent = ( - {() => } + ); return reactComponent; diff --git a/client/app/startup/ServerApp.jsx b/client/app/startup/ServerApp.jsx index 698277229..6786a0bed 100644 --- a/client/app/startup/ServerApp.jsx +++ b/client/app/startup/ServerApp.jsx @@ -8,7 +8,7 @@ const App = props => { const store = createStore(props); const reactComponent = ( - {() => } + ); return reactComponent; From bc2199c3a6f3e574d67ef3e8f748a29aaa9ac952 Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Thu, 8 Oct 2015 17:07:14 -0300 Subject: [PATCH 117/548] Render App component with ReactDOM --- client/index.jade | 2 +- client/webpack.client.base.config.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/index.jade b/client/index.jade index 859a03823..359cff589 100644 --- a/client/index.jade +++ b/client/index.jade @@ -11,4 +11,4 @@ html script(src="https://github.com/vendor-bundle.js") script(src="https://github.com/app-bundle.js") script. - React.render(App(!{props}), document.getElementById('app')); + ReactDOM.render(App(!{props}), document.getElementById('app')); diff --git a/client/webpack.client.base.config.js b/client/webpack.client.base.config.js index c664fa481..6b8adfee7 100644 --- a/client/webpack.client.base.config.js +++ b/client/webpack.client.base.config.js @@ -29,6 +29,7 @@ module.exports = { // 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'), loader: 'expose?jQuery'}, {test: require.resolve('jquery'), loader: 'expose?$'}, ], From 80854d66a3fcd7ce1d549b23590cf9897eb20c11 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 8 Oct 2015 15:42:13 -0700 Subject: [PATCH 118/548] Update README.md --- client/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/README.md b/client/README.md index 570678536..e350c8a37 100644 --- a/client/README.md +++ b/client/README.md @@ -36,6 +36,7 @@ cd client rm npm-shrinkwrap.json npm-check-updates -u npm install +npm prune npm shrinkwrap ``` @@ -43,6 +44,9 @@ Then confirm that the hot reload server and the rails server both work fine. You may have to delete `node_modules` and `npm-shrinkwrap.json` and then run `npm shrinkwrap`. +Note: `npm prune` is required before running `npm shrinkwrap` to remove dependencies that are no longer needed after doing updates. + + Adding Node Modules ===================================== Suppose you want to add a dependency to "module_name".... From 24896525f826bcd16d2b6866a1252cc9e8e93cd4 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 10 Oct 2015 16:43:53 -0700 Subject: [PATCH 119/548] Update README.md --- client/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/client/README.md b/client/README.md index e350c8a37..64dabdac6 100644 --- a/client/README.md +++ b/client/README.md @@ -1,5 +1,15 @@ Please see parent directory README.md. +Classes and React +========================= +As of October, 2015, we're still using React.createClass(), rather than extending React.Component. + +* [React.createClass Api](https://facebook.github.io/react/docs/top-level-api.html#react.createclass) +* [React ES6 Classes](https://facebook.github.io/react/docs/reusable-components.html#es6-classes) +* [How to Use Classes and Sleep at Night, Dan Abramov](https://medium.com/@dan_abramov/how-to-use-classes-and-sleep-at-night-9af8de78ccb4) + +We may change this in the near future. + ESLint ========================== The `.eslintrc` file is based on the AirBnb [eslintrc](https://github.com/airbnb/javascript/blob/master/linters/.eslintrc). From c49accdf061e084c2e7441b1f7c695342deec908 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sat, 10 Oct 2015 16:46:17 -0700 Subject: [PATCH 120/548] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b8523df8f..d17e54a88 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,8 @@ [![Build Status](https://travis-ci.org/shakacode/react-webpack-rails-tutorial.svg?branch=code_coverage-linting)](https://travis-ci.org/shakacode/react-webpack-rails-tutorial) [![Coverage Status](https://coveralls.io/repos/shakacode/react-webpack-rails-tutorial/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react-webpack-rails-tutorial?branch=master) [![Dependency Status](https://gemnasium.com/shakacode/react-webpack-rails-tutorial.svg)](https://gemnasium.com/shakacode/react-webpack-rails-tutorial) -# React, Redux, React-Bootstrap, and ES-7 on Rails via WebPack and the react_on_rails gem - -## Now with Redux and ES7! Servering Rendering ASAP (Shaka Code's react_on_rails gem)! +# React, Redux, React-Bootstrap, ES7, Webpack Rails +## Servering Rendering via the react_on_rails gem By Justin Gordon and the Shaka Code Team, http://www.railsonmaui.com From 1dd2aa42cc49d5168dbc66aec316e657456fad56 Mon Sep 17 00:00:00 2001 From: Roger Studner Date: Sat, 10 Oct 2015 19:55:44 -0400 Subject: [PATCH 121/548] We need this as well for proper 0.14 server support. --- client/webpack.server.rails.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/client/webpack.server.rails.config.js b/client/webpack.server.rails.config.js index 5d23c808a..d78856b8f 100644 --- a/client/webpack.server.rails.config.js +++ b/client/webpack.server.rails.config.js @@ -27,6 +27,7 @@ module.exports = { // React is necessary for the client rendering: {test: require.resolve('react'), loader: 'expose?React'}, + {test: require.resolve('react-dom/server'), loader: 'expose?ReactDOMServer'}, ], }, }; From 73782e32265c73a154c73c6be76aa25d5ca2f89b Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 11 Oct 2015 15:15:04 -0700 Subject: [PATCH 122/548] Update README.md --- client/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/README.md b/client/README.md index 64dabdac6..10b5460fa 100644 --- a/client/README.md +++ b/client/README.md @@ -39,9 +39,10 @@ Updating Node Dependencies npm install -g npm-check-updates ``` - +Then run this to update the dependencies (starting at the top level). + ``` -# Make sure you are in the `client` directory, then run: +# Make sure you are in the top directory, then run: cd client rm npm-shrinkwrap.json npm-check-updates -u From 162eae7c05d38dc3cb2c76f7d5d5973f37f588bb Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 12 Oct 2015 20:53:55 -1000 Subject: [PATCH 123/548] Bump react_on_rails gem to 1.0.0.pre --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 767645be0..95c2f8cb9 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,7 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" -gem "react_on_rails", "~> 0.1.8" +gem "react_on_rails", "~> 1.0.0.pre" gem "therubyracer" gem "autoprefixer-rails" diff --git a/Gemfile.lock b/Gemfile.lock index acaf810ff..1f790b1c2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,7 +207,7 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - react_on_rails (0.1.8) + react_on_rails (1.0.0.pre) connection_pool execjs (~> 2.5) rails (>= 4.0) @@ -353,7 +353,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow - react_on_rails (~> 0.1.8) + react_on_rails (~> 1.0.0.pre) rspec-rails rubocop ruby-lint From d677265c6410fb481241c9cd114bf7dfff2dcef1 Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Tue, 13 Oct 2015 23:35:15 -0300 Subject: [PATCH 124/548] Add simple React comment form example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This example shows how to create a comment form using only React, without any framework like Redux. On the top menu, a new link “Simple React” leads to “/simple” page. In this page, the react_on_rails gem renders the React component SimpleCommentScreen. This component is imported and exposed to the window object in the clientGlobals file. Simpler than CommentScreen (that uses Redux), the SimpleCommentScreen component handles all requests by itself: - fetchComments() gets data from ‘comments.json’ and passes it down to CommentList - handleCommentSubmit() posts the comment data from CommentForm and updates the state. Other components (CommentBox, CommentForm, CommentList) can be used in the same way as before. Extras: - MetaTagsManager now holds getCSRFToken() instead of CommentsManager - Active page is highlighted in the top menu. - Tests for “/simple” and “/comments” pages - Minor layout changes --- .gitignore | 3 + app/assets/javascripts/application.js | 5 + app/controllers/pages_controller.rb | 3 + app/views/comments/_form.html.erb | 6 +- app/views/comments/show.html.erb | 20 ++-- app/views/layouts/application.html.erb | 5 +- app/views/pages/index.html.erb | 2 +- app/views/pages/simple.html.erb | 9 ++ client/app/components/CommentBox.jsx | 4 +- client/app/components/CommentForm.jsx | 2 +- client/app/components/CommentList.jsx | 2 +- client/app/components/SimpleCommentScreen.jsx | 80 +++++++++++++ client/app/startup/clientGlobals.jsx | 2 + client/app/utils/commentsManager.js | 20 +--- client/app/utils/metaTagsManager.js | 21 ++++ config/routes.rb | 1 + spec/features/comments_spec.rb | 105 ++++++++++++++---- 17 files changed, 234 insertions(+), 56 deletions(-) create mode 100644 app/views/pages/simple.html.erb create mode 100644 client/app/components/SimpleCommentScreen.jsx create mode 100644 client/app/utils/metaTagsManager.js diff --git a/.gitignore b/.gitignore index f9252f3a0..f8b521013 100644 --- a/.gitignore +++ b/.gitignore @@ -28,3 +28,6 @@ vendor/ruby # Generated js bundles /app/assets/javascripts/generated/* + +# Rubymine/IntelliJ +.idea diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index d309158bf..fa8e53efe 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -20,3 +20,8 @@ //= require bootstrap-sprockets //= require turbolinks + +$(document).on('ready page:load', function () { + $('nav a').parents('li,ul').removeClass('active'); + $('nav a[href="' + this.location.pathname + '"]').parents('li,ul').addClass('active'); +}); diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 6572c295c..2d6b0e7b3 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -21,4 +21,7 @@ def index # format.html # end end + + def simple + end end diff --git a/app/views/comments/_form.html.erb b/app/views/comments/_form.html.erb index a409cc3a9..2c82f17c2 100644 --- a/app/views/comments/_form.html.erb +++ b/app/views/comments/_form.html.erb @@ -12,14 +12,14 @@ <% end %>
    - <%= f.label :author %>
    + <%= f.label :author, 'Your Name' %>
    <%= f.text_field :author %>
    - <%= f.label :text %>
    + <%= f.label :text, 'Say something using markdown...' %>
    <%= f.text_area :text %>
    - <%= f.submit %> + <%= f.submit 'Post' %>
    <% end %> diff --git a/app/views/comments/show.html.erb b/app/views/comments/show.html.erb index e3fac596c..64ddc7352 100644 --- a/app/views/comments/show.html.erb +++ b/app/views/comments/show.html.erb @@ -1,14 +1,16 @@ -

    <%= notice %>

    +
    +

    <%= notice %>

    -

    - Author: - <%= @comment.author %> -

    +

    + Author: + <%= @comment.author %> +

    -

    - Text: - <%= @comment.text %> -

    +

    + Text: + <%= @comment.text %> +

    +
    <%= link_to 'Edit', edit_comment_path(@comment) %> | <%= link_to 'Back', comments_path %> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index b47b9b949..d128d0b65 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -22,9 +22,10 @@

    Text take Github Flavored Markdown. Comments older than 24 hours are deleted. Name is preserved, Text is reset, between submits. diff --git a/client/app/components/CommentForm.jsx b/client/app/components/CommentForm.jsx index a0cffbd88..cbe5c755b 100644 --- a/client/app/components/CommentForm.jsx +++ b/client/app/components/CommentForm.jsx @@ -202,7 +202,7 @@ const CommentForm = React.createClass({ if (!this.props.error) return undefined; return ( - Your comment was not saved! + Your comment was not saved! A server error prevented your comment from being saved. Please try again. ); diff --git a/client/app/components/CommentList.jsx b/client/app/components/CommentList.jsx index 1d2f06ffa..b4321728b 100644 --- a/client/app/components/CommentList.jsx +++ b/client/app/components/CommentList.jsx @@ -18,7 +18,7 @@ const CommentList = React.createClass({ if (!this.props.error) return undefined; return ( - Comments could not be retrieved. + Comments could not be retrieved. A server error prevented loading comments. Please try again. ); diff --git a/client/app/components/SimpleCommentScreen.jsx b/client/app/components/SimpleCommentScreen.jsx new file mode 100644 index 000000000..00e902337 --- /dev/null +++ b/client/app/components/SimpleCommentScreen.jsx @@ -0,0 +1,80 @@ +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'; + +const SimpleCommentScreen = React.createClass({ + displayName: 'SimpleCommentScreen', + + getInitialState() { + return { + $$comments: Immutable.fromJS([]), + ajaxSending: false, + fetchCommentsError: null, + submitCommentError: null, + }; + }, + + 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 })); + }, + + handleCommentSubmit(comment) { + this.setState({ ajaxSending: true }); + + const requestConfig = { + responseType: 'json', + headers: { + 'X-CSRF-Token': metaTagsManager.getCSRFToken(), + }, + }; + + 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, + }); + }); + }, + + render() { + return ( +

    +

    Comments

    +

    + Text take Github Flavored Markdown. Comments older than 24 hours are deleted. + Name is preserved, Text is reset, between submits. +

    + + +
    + ); + }, +}); + +export default SimpleCommentScreen; diff --git a/client/app/startup/clientGlobals.jsx b/client/app/startup/clientGlobals.jsx index 9d20ad388..f8de20c68 100644 --- a/client/app/startup/clientGlobals.jsx +++ b/client/app/startup/clientGlobals.jsx @@ -1,3 +1,5 @@ import App from './ClientApp'; +import SimpleCommentScreen from '../components/SimpleCommentScreen'; window.App = App; +window.SimpleCommentScreen = SimpleCommentScreen; diff --git a/client/app/utils/commentsManager.js b/client/app/utils/commentsManager.js index 6698ace2e..41f7c8a1a 100644 --- a/client/app/utils/commentsManager.js +++ b/client/app/utils/commentsManager.js @@ -1,4 +1,5 @@ import request from 'axios'; +import metaTagsManager from './metaTagsManager'; const API_URL = 'comments.json'; @@ -29,29 +30,12 @@ const CommentsManager = { url: API_URL, responseType: 'json', headers: { - 'X-CSRF-Token': this.getCSRFToken(), + 'X-CSRF-Token': metaTagsManager.getCSRFToken(), }, data: { comment }, }); }, - /** - * Get CSRF Token from the DOM. - * - * @returns {String} - CSRF Token. - */ - getCSRFToken() { - const metas = document.getElementsByTagName('meta'); - for (let i = 0; i < metas.length; i++) { - const meta = metas[i]; - if (meta.getAttribute('name') === 'csrf-token') { - return meta.getAttribute('content'); - } - } - - return null; - }, - }; export default CommentsManager; diff --git a/client/app/utils/metaTagsManager.js b/client/app/utils/metaTagsManager.js new file mode 100644 index 000000000..c93f696d7 --- /dev/null +++ b/client/app/utils/metaTagsManager.js @@ -0,0 +1,21 @@ +const MetaTagsManager = { + + /** + * Get CSRF Token from the DOM. + * + * @returns {String} - CSRF Token. + */ + getCSRFToken() { + const metas = document.getElementsByTagName('meta'); + for (let i = 0; i < metas.length; i++) { + const meta = metas[i]; + if (meta.getAttribute('name') === 'csrf-token') { + return meta.getAttribute('content'); + } + } + + return null; + }, +}; + +export default MetaTagsManager; diff --git a/config/routes.rb b/config/routes.rb index 699c245f8..8079f4590 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,5 +1,6 @@ Rails.application.routes.draw do root "pages#index" + get "simple", to: "pages#simple" resources :comments end diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb index 5bad93635..c506dd553 100644 --- a/spec/features/comments_spec.rb +++ b/spec/features/comments_spec.rb @@ -18,47 +18,114 @@ include_context "Form Submitted" scenario "submits form", js: true do - expect(page).to have_css(".commentList .comment", text: name) - expect(page).to have_css(".commentList .comment", text: text) + expect(page).to have_css(".comment", text: name) + expect(page).to have_css(".comment", text: text) end end -feature "Add new comment" do +shared_context "Horizontal Form" do background do - visit root_path + click_link "Horizontal Form" end - context "Horizonal Form" do - background do - click_link "Horizontal Form" + it_behaves_like "Comments Form" + + context "iframe text" do + let(:iframe_text) { "" } + + include_context "Form Submitted", text: :iframe_text + + scenario "doesn't add an iframe", js: true do + expect(page).not_to have_css("iframe") end + end - it_behaves_like "Comments Form" + context "blank fields" do + before { @comments_count = all(".comment").size } + include_context "Form Submitted", name: "", text: "" + + scenario "doesn't add a blank comment", js: true do + expect(page).to have_selector(".comment", count: @comments_count) + end + end +end + +shared_context "Inline Form" do + background do + click_link "Inline Form" + end + + it_behaves_like "Comments Form" +end + +shared_context "Stacked Form" do + background do + click_link "Stacked Form" + end + + it_behaves_like "Comments Form" +end - context "iframe text" do - let(:iframe_text) { "" } +feature "Add new comment" do + context "from the main page" do + background do + visit root_path + end - include_context "Form Submitted", text: :iframe_text + include_context "Horizontal Form" + include_context "Inline Form" + include_context "Stacked Form" + end - scenario "doesn't add an iframe", js: true do - expect(page).not_to have_css("iframe") - end + context "from the simple page" do + background do + visit simple_path end + + include_context "Horizontal Form" + include_context "Inline Form" + include_context "Stacked Form" end - context "Inline Form" do + context "from the classic page" do background do - click_link "Inline Form" + visit comments_path + click_link "New Comment" end it_behaves_like "Comments Form" end +end + +feature "Edit a comment" do + context "from the classic page" do + let(:edited_name) { "Edited Name" } - context "Stacked Form" do background do - click_link "Stacked Form" + visit comments_path + click_link "Edit", match: :first end - it_behaves_like "Comments Form" + include_context "Form Submitted", name: :edited_name + + scenario "submits form" do + expect(page).to have_css(".comment", text: :edited_name) + end + end +end + +feature "Destroy a comment" do + context "from the classic page" do + let(:comment) { Comment.first } + + background do + visit comments_path + click_link "Destroy", href: comment_path(comment) + end + + scenario "destroys comment" do + expect(page).to_not have_css(".comment", text: comment.author) + expect(page).to_not have_css(".comment", text: comment.text) + end end end From b7bcdc90ca59c0d065b00be43dbc0f3b9f41317e Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 11 Oct 2015 15:15:04 -0700 Subject: [PATCH 125/548] Update README.md --- client/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/README.md b/client/README.md index 64dabdac6..10b5460fa 100644 --- a/client/README.md +++ b/client/README.md @@ -39,9 +39,10 @@ Updating Node Dependencies npm install -g npm-check-updates ``` - +Then run this to update the dependencies (starting at the top level). + ``` -# Make sure you are in the `client` directory, then run: +# Make sure you are in the top directory, then run: cd client rm npm-shrinkwrap.json npm-check-updates -u From fd785cdc2fa4cd7882d5ae482bfc92b1a8175730 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Mon, 12 Oct 2015 20:53:55 -1000 Subject: [PATCH 126/548] Bump react_on_rails gem to 1.0.0.pre --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 767645be0..95c2f8cb9 100644 --- a/Gemfile +++ b/Gemfile @@ -39,7 +39,7 @@ gem "rails-html-sanitizer" # Use Unicorn as the app server gem "unicorn" -gem "react_on_rails", "~> 0.1.8" +gem "react_on_rails", "~> 1.0.0.pre" gem "therubyracer" gem "autoprefixer-rails" diff --git a/Gemfile.lock b/Gemfile.lock index acaf810ff..1f790b1c2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -207,7 +207,7 @@ GEM raindrops (0.15.0) rake (10.4.2) rdoc (4.2.0) - react_on_rails (0.1.8) + react_on_rails (1.0.0.pre) connection_pool execjs (~> 2.5) rails (>= 4.0) @@ -353,7 +353,7 @@ DEPENDENCIES rails-html-sanitizer rails_12factor rainbow - react_on_rails (~> 0.1.8) + react_on_rails (~> 1.0.0.pre) rspec-rails rubocop ruby-lint From b55dd718b46ebf2f583746bdd301bdda9a1d5f40 Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Thu, 15 Oct 2015 13:14:13 -0300 Subject: [PATCH 127/548] Set comment's author and text as not null and defaults as empty string The last parameter of change_column_null only affects existing records, thus the default still needs to be set in another migration. --- .../20151015160035_set_default_for_author_and_text.rb | 11 +++++++++++ ...151015160334_change_author_and_text_to_not_null.rb | 6 ++++++ db/schema.rb | 10 +++++----- 3 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20151015160035_set_default_for_author_and_text.rb create mode 100644 db/migrate/20151015160334_change_author_and_text_to_not_null.rb diff --git a/db/migrate/20151015160035_set_default_for_author_and_text.rb b/db/migrate/20151015160035_set_default_for_author_and_text.rb new file mode 100644 index 000000000..05f9054b6 --- /dev/null +++ b/db/migrate/20151015160035_set_default_for_author_and_text.rb @@ -0,0 +1,11 @@ +class SetDefaultForAuthorAndText < ActiveRecord::Migration + def up + change_column_default(:comments, :author, "") + change_column_default(:comments, :text, "") + end + + def down + change_column_default(:comments, :author, nil) + change_column_default(:comments, :text, nil) + end +end diff --git a/db/migrate/20151015160334_change_author_and_text_to_not_null.rb b/db/migrate/20151015160334_change_author_and_text_to_not_null.rb new file mode 100644 index 000000000..8b171d6ef --- /dev/null +++ b/db/migrate/20151015160334_change_author_and_text_to_not_null.rb @@ -0,0 +1,6 @@ +class ChangeAuthorAndTextToNotNull < ActiveRecord::Migration + def change + change_column_null(:comments, :author, false, "") + change_column_null(:comments, :text, false, "") + end +end diff --git a/db/schema.rb b/db/schema.rb index d7f2834b1..86d1c6f92 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,13 +11,13 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20140823052830) do +ActiveRecord::Schema.define(version: 20151015160334) do create_table "comments", force: :cascade do |t| - t.string "author" - t.text "text" - t.datetime "created_at", null: false - t.datetime "updated_at", null: false + t.string "author", default: "", null: false + t.text "text", default: "", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false end end From 5524639f9cc7eb0da8c02bf04ee29b02090d5c5c Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Wed, 14 Oct 2015 12:58:10 -0300 Subject: [PATCH 128/548] Reverse ports of Webpack and Rails server - Change Rails server port to default (3000) - Change Webpack dev server port to 4000 - Add simple server rendering tests --- Procfile.dev | 2 +- README.md | 14 +++++++------- client/server.js | 4 ++-- client/webpack.client.hot.config.js | 2 +- spec/requests/server_render_check_spec.rb | 17 +++++++++++++++++ 5 files changed, 28 insertions(+), 11 deletions(-) create mode 100644 spec/requests/server_render_check_spec.rb diff --git a/Procfile.dev b/Procfile.dev index 0d26caeb0..6fb953b31 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,4 +1,4 @@ -web: rails s -p 4000 +web: rails s client: sh -c 'rm app/assets/javascripts/generated/* || true && cd client && npm run build:dev:client' server: sh -c 'cd client && npm run build:dev:server' hot: sh -c 'cd client && npm start' diff --git a/README.md b/README.md index d17e54a88..f75b3df09 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ In no particular order: - Example of using the [react_on_rails](https://github.com/shakacode/react_on_rails) - Example of Rails 4.2 with ReactJs/Redux with Webpack and ES7. -- Enable development of a JS client independently from Rails using Webpack Hot Module Reload. You can see this by starting the app and visiting http://localhost:3000 +- Enable development of a JS client independently from Rails using Webpack Hot Module Reload. You can see this by starting the app and visiting http://localhost:4000 - Easily enable use of npm modules with a Rails application. - Easily enable retrofitting such a JS framework into an existing Rails app. - Enable the use of the JavaScript ES7 transpiler. @@ -72,8 +72,8 @@ See package.json and Gemfile for versions 1. `npm install` 1. `rake db:setup` 1. `foreman start -f Procfile.dev` -1. Open a browser tab to http://0.0.0.0:4000 for the Rails app example. -1. Open a browser tab to http://0.0.0.0:3000 for the Hot Module Replacement Example. +1. Open a browser tab to http://0.0.0.0:3000 for the Rails app example. +1. Open a browser tab to http://0.0.0.0:4000 for the Hot Module Replacement Example. # Javascript development without Rails using Hot Module Replacement (HMR) @@ -84,7 +84,7 @@ cd client node server.js ``` -Point your browser to http://0.0.0.0:3000. +Point your browser to http://0.0.0.0:4000. Save a change to a JSX file and see it update immediately in the browser! Note, any browser state still exists, such as what you've typed in the comments box. @@ -118,10 +118,10 @@ the Rails server. ``` cd rake db:setup -rails s -p 4000 +rails s ``` -Now point your browser to http://0.0.0.0:4000. +Now point your browser to http://0.0.0.0:3000. Note that it's important to run the Rails server on a different port than the node server. @@ -267,7 +267,7 @@ follow the example and call Jbuilder like this, you don't run into a number of i generator_function: true, prerender: true) %> ``` -However, if you try to set the value of the JSON string inside of the controller, then you will +However, if you try to set the value of the JSON string inside of the controller, then you will run into several issues with rendering the Jbuilder template from the controller. See the notes in this the example code for app/controllers/pages_controller.rb. diff --git a/client/server.js b/client/server.js index d768cfa11..f2ec6e5b9 100644 --- a/client/server.js +++ b/client/server.js @@ -51,7 +51,7 @@ server.app.use('/', function(req, res) { res.send(html); }); -server.listen(3000, 'localhost', function(err) { +server.listen(4000, 'localhost', function(err) { if (err) console.log(err); - console.log('Listening at localhost:3000...'); + console.log('Listening at localhost:4000...'); }); diff --git a/client/webpack.client.hot.config.js b/client/webpack.client.hot.config.js index 453987a82..06c27f41d 100644 --- a/client/webpack.client.hot.config.js +++ b/client/webpack.client.hot.config.js @@ -11,7 +11,7 @@ config.entry.vendor.push('bootstrap-sass!./bootstrap-sass.config.js'); config.entry.app.push( // Webpack dev server - 'webpack-dev-server/client?http://localhost:3000', + 'webpack-dev-server/client?http://localhost:4000', 'webpack/hot/dev-server', // Test out Css & Sass diff --git a/spec/requests/server_render_check_spec.rb b/spec/requests/server_render_check_spec.rb new file mode 100644 index 000000000..beb447704 --- /dev/null +++ b/spec/requests/server_render_check_spec.rb @@ -0,0 +1,17 @@ +require "rails_helper" + +describe "Server Rendering" do + it "generates server rendered HTML if server rendering enabled" do + get root_path + html_nodes = Nokogiri::HTML(response.body) + expect(html_nodes.css("div#App-react-component-0").children.size).to eq(1) + expect(html_nodes.css("div#App-react-component-0 h2").text) + .to include("Comments") + end + + it "generates no server rendered HTML if server rendering not enabled" do + get simple_path + html_nodes = Nokogiri::HTML(response.body) + expect(html_nodes.css("div#SimpleCommentScreen-react-component-0").children.size).to eq(0) + end +end From f7e5e965a8b2b16323c4538aa3e3d1e9a50d777b Mon Sep 17 00:00:00 2001 From: Josias Schneider Date: Thu, 15 Oct 2015 14:58:30 -0300 Subject: [PATCH 129/548] Refactoring MetaTagsManager --- client/app/utils/metaTagsManager.js | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/client/app/utils/metaTagsManager.js b/client/app/utils/metaTagsManager.js index c93f696d7..4e343a6d8 100644 --- a/client/app/utils/metaTagsManager.js +++ b/client/app/utils/metaTagsManager.js @@ -6,15 +6,10 @@ const MetaTagsManager = { * @returns {String} - CSRF Token. */ getCSRFToken() { - const metas = document.getElementsByTagName('meta'); - for (let i = 0; i < metas.length; i++) { - const meta = metas[i]; - if (meta.getAttribute('name') === 'csrf-token') { - return meta.getAttribute('content'); - } - } + const token = Array.from(document.getElementsByTagName('meta')) + .find(tag => tag.name === 'csrf-token'); - return null; + return token ? token.content : null; }, }; From 78417dbbd06d752f74448289df881f1933aeac19 Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 15 Oct 2015 08:50:42 -1000 Subject: [PATCH 130/548] Update to node 4.2.0 Set engines node: 4.2.0 in all package.jsons' Install node_modules with npm 3.3.6 npm shrinkwrap to create new npm-shinkwrap.json --- client/npm-shrinkwrap.json | 6890 +++++++++++++++++++++++------------- client/package.json | 2 +- package.json | 2 +- 3 files changed, 4443 insertions(+), 2451 deletions(-) diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json index 10810e909..78aa8284b 100644 --- a/client/npm-shrinkwrap.json +++ b/client/npm-shrinkwrap.json @@ -2,6 +2,201 @@ "name": "react-webpack-rails-tutorial", "version": "1.1.0", "dependencies": { + "abbrev": { + "version": "1.0.7", + "from": "abbrev@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + }, + "accepts": { + "version": "1.2.13", + "from": "accepts@>=1.2.12 <1.3.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.13.tgz" + }, + "acorn": { + "version": "2.4.0", + "from": "acorn@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.4.0.tgz" + }, + "acorn-globals": { + "version": "1.0.6", + "from": "acorn-globals@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.6.tgz" + }, + "acorn-to-esprima": { + "version": "1.0.4", + "from": "acorn-to-esprima@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/acorn-to-esprima/-/acorn-to-esprima-1.0.4.tgz" + }, + "after": { + "version": "0.8.1", + "from": "after@0.8.1", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.1.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" + }, + "alphanum-sort": { + "version": "1.0.2", + "from": "alphanum-sort@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz" + }, + "alter": { + "version": "0.2.0", + "from": "alter@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz" + }, + "amdefine": { + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" + }, + "ansi": { + "version": "0.3.0", + "from": "ansi@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz" + }, + "ansi-green": { + "version": "0.1.1", + "from": "ansi-green@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz" + }, + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + }, + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "ansi-wrap": { + "version": "0.1.0", + "from": "ansi-wrap@0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" + }, + "anymatch": { + "version": "1.3.0", + "from": "anymatch@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz" + }, + "are-we-there-yet": { + "version": "1.0.4", + "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" + }, + "argparse": { + "version": "1.0.2", + "from": "argparse@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.2.tgz" + }, + "arr-diff": { + "version": "1.1.0", + "from": "arr-diff@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.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-flatten": { + "version": "1.1.1", + "from": "array-flatten@1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz" + }, + "array-index": { + "version": "0.1.1", + "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", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.1.tgz" + }, + "array-uniq": { + "version": "1.0.2", + "from": "array-uniq@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.2.tgz" + }, + "array-unique": { + "version": "0.2.1", + "from": "array-unique@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" + }, + "arraybuffer.slice": { + "version": "0.0.6", + "from": "arraybuffer.slice@0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz" + }, + "arrify": { + "version": "1.0.0", + "from": "arrify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" + }, + "asap": { + "version": "2.0.3", + "from": "asap@>=2.0.3 <2.1.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz" + }, + "asn1": { + "version": "0.1.11", + "from": "asn1@0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "assert": { + "version": "1.3.0", + "from": "assert@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" + }, + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "ast-traverse": { + "version": "0.1.1", + "from": "ast-traverse@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" + }, + "ast-types": { + "version": "0.8.5", + "from": "ast-types@0.8.5", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" + }, + "async": { + "version": "1.4.2", + "from": "async@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" + }, + "async-each": { + "version": "0.1.6", + "from": "async-each@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" + }, + "async-foreach": { + "version": "0.1.3", + "from": "async-foreach@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz" + }, + "autoprefixer": { + "version": "6.0.3", + "from": "autoprefixer@>=6.0.3 <7.0.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.0.3.tgz" + }, + "aws-sign2": { + "version": "0.6.0", + "from": "aws-sign2@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz" + }, "axios": { "version": "0.7.0", "from": "axios@>=0.7.0 <0.8.0", @@ -10,295 +205,1086 @@ "babel-core": { "version": "5.8.25", "from": "babel-core@>=5.8.25 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-5.8.25.tgz" + }, + "babel-jscs": { + "version": "2.0.4", + "from": "babel-jscs@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/babel-jscs/-/babel-jscs-2.0.4.tgz" + }, + "babel-loader": { + "version": "5.3.2", + "from": "babel-loader@>=5.3.2 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz" + }, + "babel-plugin-constant-folding": { + "version": "1.0.1", + "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" + }, + "babel-plugin-dead-code-elimination": { + "version": "1.0.2", + "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" + }, + "babel-plugin-eval": { + "version": "1.0.1", + "from": "babel-plugin-eval@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" + }, + "babel-plugin-inline-environment-variables": { + "version": "1.0.1", + "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" + }, + "babel-plugin-jscript": { + "version": "1.0.4", + "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" + }, + "babel-plugin-member-expression-literals": { + "version": "1.0.1", + "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" + }, + "babel-plugin-property-literals": { + "version": "1.0.1", + "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" + }, + "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" + }, + "babel-plugin-react-constant-elements": { + "version": "1.0.3", + "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" + }, + "babel-plugin-react-display-name": { + "version": "1.0.3", + "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" + }, + "babel-plugin-remove-console": { + "version": "1.0.1", + "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" + }, + "babel-plugin-remove-debugger": { + "version": "1.0.1", + "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" + }, + "babel-plugin-runtime": { + "version": "1.0.7", + "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-undeclared-variables-check": { + "version": "1.0.2", + "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz" + }, + "babel-plugin-undefined-to-void": { + "version": "1.1.6", + "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-runtime": { + "version": "5.8.25", + "from": "babel-runtime@>=5.8.24 <6.0.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.25.tgz" + }, + "babylon": { + "version": "5.8.23", + "from": "babylon@>=5.8.23 <6.0.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" + }, + "backo2": { + "version": "1.0.2", + "from": "backo2@1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz" + }, + "balanced-match": { + "version": "0.2.0", + "from": "balanced-match@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz" + }, + "base62": { + "version": "0.1.1", + "from": "base62@0.1.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" + }, + "Base64": { + "version": "0.2.1", + "from": "Base64@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" + }, + "base64-arraybuffer": { + "version": "0.1.2", + "from": "base64-arraybuffer@0.1.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz" + }, + "base64-js": { + "version": "0.0.8", + "from": "base64-js@0.0.8", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" + }, + "base64id": { + "version": "0.1.0", + "from": "base64id@0.1.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-0.1.0.tgz" + }, + "batch": { + "version": "0.5.2", + "from": "batch@0.5.2", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.2.tgz" + }, + "benchmark": { + "version": "1.0.0", + "from": "benchmark@1.0.0", + "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz" + }, + "better-assert": { + "version": "1.0.2", + "from": "better-assert@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + }, + "big.js": { + "version": "3.1.3", + "from": "big.js@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" + }, + "binary-extensions": { + "version": "1.3.1", + "from": "binary-extensions@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" + }, + "bindings": { + "version": "1.2.1", + "from": "bindings@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "bl": { + "version": "1.0.0", + "from": "bl@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", "dependencies": { - "babel-plugin-constant-folding": { - "version": "1.0.1", - "from": "babel-plugin-constant-folding@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-constant-folding/-/babel-plugin-constant-folding-1.0.1.tgz" - }, - "babel-plugin-dead-code-elimination": { - "version": "1.0.2", - "from": "babel-plugin-dead-code-elimination@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-dead-code-elimination/-/babel-plugin-dead-code-elimination-1.0.2.tgz" - }, - "babel-plugin-eval": { - "version": "1.0.1", - "from": "babel-plugin-eval@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-eval/-/babel-plugin-eval-1.0.1.tgz" - }, - "babel-plugin-inline-environment-variables": { - "version": "1.0.1", - "from": "babel-plugin-inline-environment-variables@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-inline-environment-variables/-/babel-plugin-inline-environment-variables-1.0.1.tgz" + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz" + } + } + }, + "blob": { + "version": "0.0.4", + "from": "blob@0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz" + }, + "block-stream": { + "version": "0.0.8", + "from": "block-stream@*", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" + }, + "bluebird": { + "version": "2.10.2", + "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.9.0", + "from": "boom@>=2.8.0 <3.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.9.0.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" + }, + "braces": { + "version": "1.8.1", + "from": "braces@>=1.8.0 <2.0.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz" + }, + "breakable": { + "version": "1.0.0", + "from": "breakable@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" + }, + "browserify-zlib": { + "version": "0.1.4", + "from": "browserify-zlib@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz" + }, + "browserslist": { + "version": "1.0.1", + "from": "browserslist@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.0.1.tgz" + }, + "buffer": { + "version": "3.5.1", + "from": "buffer@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.1.tgz" + }, + "bufferutil": { + "version": "1.2.1", + "from": "bufferutil@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.2.1.tgz" + }, + "builtin-modules": { + "version": "1.1.0", + "from": "builtin-modules@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.0.tgz" + }, + "bytes": { + "version": "2.1.0", + "from": "bytes@2.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" + }, + "callsite": { + "version": "1.0.0", + "from": "callsite@1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.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" + }, + "camelcase-keys": { + "version": "1.0.0", + "from": "camelcase-keys@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz" + }, + "caniuse-db": { + "version": "1.0.30000344", + "from": "caniuse-db@>=1.0.30000313 <2.0.0", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000344.tgz" + }, + "caseless": { + "version": "0.11.0", + "from": "caseless@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" + }, + "center-align": { + "version": "0.1.1", + "from": "center-align@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.1.tgz" + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz" + }, + "character-parser": { + "version": "1.2.1", + "from": "character-parser@1.2.1", + "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz" + }, + "chokidar": { + "version": "1.2.0", + "from": "chokidar@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.2.0.tgz" + }, + "classnames": { + "version": "2.1.5", + "from": "classnames@>=2.1.3 <3.0.0", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.5.tgz" + }, + "clean-css": { + "version": "3.4.6", + "from": "clean-css@>=3.1.9 <4.0.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.4.6.tgz", + "dependencies": { + "commander": { + "version": "2.8.1", + "from": "commander@>=2.8.0 <2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz" + } + } + }, + "cli-table": { + "version": "0.3.1", + "from": "cli-table@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz", + "dependencies": { + "colors": { + "version": "1.0.3", + "from": "colors@1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz" + } + } + }, + "cli-width": { + "version": "1.0.1", + "from": "cli-width@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.0.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" + }, + "clone": { + "version": "1.0.2", + "from": "clone@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" + }, + "coa": { + "version": "1.0.1", + "from": "coa@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.1.tgz" + }, + "colors": { + "version": "1.1.2", + "from": "colors@>=1.1.2 <1.2.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" + }, + "colr-convert": { + "version": "1.0.5", + "from": "colr-convert@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/colr-convert/-/colr-convert-1.0.5.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@>=1.0.5 <1.1.0", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz" + }, + "commander": { + "version": "2.5.1", + "from": "commander@>=2.5.0 <2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.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" + }, + "commoner": { + "version": "0.10.3", + "from": "commoner@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz" + }, + "component-bind": { + "version": "1.0.0", + "from": "component-bind@1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz" + }, + "component-emitter": { + "version": "1.1.2", + "from": "component-emitter@1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz" + }, + "component-inherit": { + "version": "0.0.3", + "from": "component-inherit@0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz" + }, + "compressible": { + "version": "2.0.6", + "from": "compressible@>=2.0.6 <2.1.0", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.6.tgz" + }, + "compression": { + "version": "1.6.0", + "from": "compression@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.6.0.tgz", + "dependencies": { + "accepts": { + "version": "1.3.0", + "from": "accepts@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.0.tgz" }, - "babel-plugin-jscript": { - "version": "1.0.4", - "from": "babel-plugin-jscript@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jscript/-/babel-plugin-jscript-1.0.4.tgz" + "negotiator": { + "version": "0.6.0", + "from": "negotiator@0.6.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.0.tgz" }, - "babel-plugin-member-expression-literals": { - "version": "1.0.1", - "from": "babel-plugin-member-expression-literals@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-member-expression-literals/-/babel-plugin-member-expression-literals-1.0.1.tgz" + "vary": { + "version": "1.1.0", + "from": "vary@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.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" + }, + "concat-stream": { + "version": "1.5.0", + "from": "concat-stream@>=1.4.6 <2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz", + "dependencies": { + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz" + } + } + }, + "config-chain": { + "version": "1.1.9", + "from": "config-chain@>=1.1.8 <1.2.0", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.9.tgz" + }, + "connect-history-api-fallback": { + "version": "1.1.0", + "from": "connect-history-api-fallback@1.1.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.1.0.tgz" + }, + "console-browserify": { + "version": "1.1.0", + "from": "console-browserify@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz" + }, + "constantinople": { + "version": "3.0.2", + "from": "constantinople@>=3.0.1 <3.1.0", + "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz" + }, + "constants-browserify": { + "version": "0.0.1", + "from": "constants-browserify@0.0.1", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" + }, + "content-disposition": { + "version": "0.5.0", + "from": "content-disposition@0.5.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.0.tgz" + }, + "content-type": { + "version": "1.0.1", + "from": "content-type@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" + }, + "convert-source-map": { + "version": "1.1.1", + "from": "convert-source-map@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" + }, + "cookie": { + "version": "0.1.3", + "from": "cookie@0.1.3", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.3.tgz" + }, + "cookie-signature": { + "version": "1.0.6", + "from": "cookie-signature@1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz" + }, + "core-js": { + "version": "1.2.1", + "from": "core-js@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" + }, + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "cross-spawn": { + "version": "2.0.0", + "from": "cross-spawn@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-2.0.0.tgz" + }, + "cross-spawn-async": { + "version": "2.0.0", + "from": "cross-spawn-async@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cross-spawn-async/-/cross-spawn-async-2.0.0.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "cryptiles@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "crypto-browserify": { + "version": "3.2.8", + "from": "crypto-browserify@>=3.2.6 <3.3.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz" + }, + "css": { + "version": "1.0.8", + "from": "css@>=1.0.8 <1.1.0", + "resolved": "https://registry.npmjs.org/css/-/css-1.0.8.tgz" + }, + "css-color-names": { + "version": "0.0.2", + "from": "css-color-names@0.0.2", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.2.tgz" + }, + "css-parse": { + "version": "1.0.4", + "from": "css-parse@1.0.4", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.0.4.tgz" + }, + "css-selector-tokenizer": { + "version": "0.5.4", + "from": "css-selector-tokenizer@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.5.4.tgz" + }, + "css-stringify": { + "version": "1.0.5", + "from": "css-stringify@1.0.5", + "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz" + }, + "cssesc": { + "version": "0.1.0", + "from": "cssesc@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz" + }, + "cssnano": { + "version": "3.3.1", + "from": "cssnano@>=2.6.1 <4.0.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.3.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" + } + } + }, + "ctype": { + "version": "0.5.3", + "from": "ctype@0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + }, + "cycle": { + "version": "1.0.3", + "from": "cycle@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz" + }, + "d": { + "version": "0.1.1", + "from": "d@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz" + }, + "date-now": { + "version": "0.1.4", + "from": "date-now@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + }, + "debug": { + "version": "2.2.0", + "from": "debug@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz" + }, + "decamelize": { + "version": "1.0.0", + "from": "decamelize@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.0.tgz" + }, + "deep-equal": { + "version": "1.0.1", + "from": "deep-equal@*", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz" + }, + "deep-is": { + "version": "0.1.3", + "from": "deep-is@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" + }, + "defined": { + "version": "1.0.0", + "from": "defined@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz" + }, + "defs": { + "version": "1.1.1", + "from": "defs@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.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" + } + } + }, + "del": { + "version": "2.0.2", + "from": "del@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-2.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" + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + }, + "delegates": { + "version": "0.1.0", + "from": "delegates@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz" + }, + "depd": { + "version": "1.1.0", + "from": "depd@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" + }, + "destroy": { + "version": "1.0.3", + "from": "destroy@1.0.3", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz" + }, + "detect-indent": { + "version": "3.0.1", + "from": "detect-indent@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz" + }, + "doctrine": { + "version": "0.7.0", + "from": "doctrine@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-0.7.0.tgz", + "dependencies": { + "esutils": { + "version": "1.1.6", + "from": "esutils@>=1.1.6 <2.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.1.6.tgz" + } + } + }, + "dom-helpers": { + "version": "2.4.0", + "from": "dom-helpers@>=2.2.4 <3.0.0", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz" + }, + "dom-serializer": { + "version": "0.1.0", + "from": "dom-serializer@>=0.0.0 <1.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "from": "domelementtype@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz" }, - "babel-plugin-property-literals": { - "version": "1.0.1", - "from": "babel-plugin-property-literals@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-property-literals/-/babel-plugin-property-literals-1.0.1.tgz" + "entities": { + "version": "1.1.1", + "from": "entities@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" + } + } + }, + "dom-walk": { + "version": "0.1.1", + "from": "dom-walk@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz" + }, + "domain-browser": { + "version": "1.1.4", + "from": "domain-browser@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" + }, + "domelementtype": { + "version": "1.3.0", + "from": "domelementtype@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + }, + "domhandler": { + "version": "2.3.0", + "from": "domhandler@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz" + }, + "domutils": { + "version": "1.5.1", + "from": "domutils@>=1.5.0 <1.6.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz" + }, + "ee-first": { + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + }, + "engine.io": { + "version": "1.5.4", + "from": "engine.io@1.5.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.5.4.tgz", + "dependencies": { + "debug": { + "version": "1.0.3", + "from": "debug@1.0.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.3.tgz" }, - "babel-plugin-proto-to-assign": { + "ms": { + "version": "0.6.2", + "from": "ms@0.6.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + } + } + }, + "engine.io-client": { + "version": "1.5.4", + "from": "engine.io-client@1.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.5.4.tgz", + "dependencies": { + "debug": { "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" + "from": "debug@1.0.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.4.tgz" }, - "babel-plugin-react-constant-elements": { - "version": "1.0.3", - "from": "babel-plugin-react-constant-elements@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-constant-elements/-/babel-plugin-react-constant-elements-1.0.3.tgz" - }, - "babel-plugin-react-display-name": { - "version": "1.0.3", - "from": "babel-plugin-react-display-name@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-react-display-name/-/babel-plugin-react-display-name-1.0.3.tgz" + "ms": { + "version": "0.6.2", + "from": "ms@0.6.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" }, - "babel-plugin-remove-console": { - "version": "1.0.1", - "from": "babel-plugin-remove-console@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-console/-/babel-plugin-remove-console-1.0.1.tgz" - }, - "babel-plugin-remove-debugger": { - "version": "1.0.1", - "from": "babel-plugin-remove-debugger@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-remove-debugger/-/babel-plugin-remove-debugger-1.0.1.tgz" - }, - "babel-plugin-runtime": { - "version": "1.0.7", - "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-undeclared-variables-check": { - "version": "1.0.2", - "from": "babel-plugin-undeclared-variables-check@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-undeclared-variables-check/-/babel-plugin-undeclared-variables-check-1.0.2.tgz", - "dependencies": { - "leven": { - "version": "1.0.2", - "from": "leven@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" - } - } - }, - "babel-plugin-undefined-to-void": { - "version": "1.1.6", - "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" - }, - "babylon": { - "version": "5.8.23", - "from": "babylon@>=5.8.23 <6.0.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.23.tgz" - }, - "bluebird": { - "version": "2.10.2", - "from": "bluebird@>=2.9.33 <3.0.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.1.0", - "from": "ansi-styles@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.3", - "from": "escape-string-regexp@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.0", - "from": "strip-ansi@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "convert-source-map": { - "version": "1.1.1", - "from": "convert-source-map@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.1.tgz" - }, - "core-js": { - "version": "1.2.1", - "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.1.1 <3.0.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "detect-indent": { - "version": "3.0.1", - "from": "detect-indent@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-3.0.1.tgz", - "dependencies": { - "get-stdin": { - "version": "4.0.1", - "from": "get-stdin@>=4.0.1 <5.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - }, - "minimist": { - "version": "1.2.0", - "from": "minimist@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" - } - } - }, - "esutils": { - "version": "2.0.2", - "from": "esutils@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" - }, - "fs-readdir-recursive": { - "version": "0.1.2", - "from": "fs-readdir-recursive@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" - }, - "globals": { - "version": "6.4.1", - "from": "globals@>=6.4.0 <7.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.tgz" - }, - "home-or-tmp": { - "version": "1.0.0", - "from": "home-or-tmp@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz", - "dependencies": { - "os-tmpdir": { - "version": "1.0.1", - "from": "os-tmpdir@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" - }, - "user-home": { - "version": "1.1.1", - "from": "user-home@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" - } - } - }, - "is-integer": { - "version": "1.0.6", - "from": "is-integer@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", - "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" - } - } - } - } + "parseuri": { + "version": "0.0.4", + "from": "parseuri@0.0.4", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.4.tgz" + } + } + }, + "engine.io-parser": { + "version": "1.2.2", + "from": "engine.io-parser@1.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.2.2.tgz" + }, + "enhanced-resolve": { + "version": "0.9.0", + "from": "enhanced-resolve@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.0.tgz" + }, + "entities": { + "version": "1.0.0", + "from": "entities@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz" + }, + "envify": { + "version": "3.4.0", + "from": "envify@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz" + }, + "error-ex": { + "version": "1.2.0", + "from": "error-ex@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.2.0.tgz" + }, + "es5-ext": { + "version": "0.10.8", + "from": "es5-ext@>=0.10.8 <0.11.0", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.8.tgz" + }, + "es5-shim": { + "version": "4.1.14", + "from": "es5-shim@>=4.1.14 <5.0.0", + "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.14.tgz" + }, + "es6-iterator": { + "version": "2.0.0", + "from": "es6-iterator@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz" + }, + "es6-map": { + "version": "0.1.2", + "from": "es6-map@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.2.tgz" + }, + "es6-promise": { + "version": "3.0.2", + "from": "es6-promise@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" + }, + "es6-set": { + "version": "0.1.2", + "from": "es6-set@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.2.tgz" + }, + "es6-symbol": { + "version": "3.0.0", + "from": "es6-symbol@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.0.0.tgz" + }, + "es6-weak-map": { + "version": "0.1.4", + "from": "es6-weak-map@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-0.1.4.tgz", + "dependencies": { + "es6-iterator": { + "version": "0.1.3", + "from": "es6-iterator@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-0.1.3.tgz" }, - "js-tokens": { + "es6-symbol": { + "version": "2.0.1", + "from": "es6-symbol@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-2.0.1.tgz" + } + } + }, + "escape-html": { + "version": "1.0.2", + "from": "escape-html@1.0.2", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.2.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "escope": { + "version": "3.2.0", + "from": "escope@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.2.0.tgz", + "dependencies": { + "estraverse": { + "version": "3.1.0", + "from": "estraverse@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz" + } + } + }, + "esrecurse": { + "version": "3.1.1", + "from": "esrecurse@>=3.1.1 <4.0.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-3.1.1.tgz", + "dependencies": { + "estraverse": { + "version": "3.1.0", + "from": "estraverse@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-3.1.0.tgz" + } + } + }, + "estraverse": { + "version": "4.1.0", + "from": "estraverse@>=4.1.0 <5.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.1.0.tgz" + }, + "estraverse-fb": { + "version": "1.3.1", + "from": "estraverse-fb@>=1.3.1 <2.0.0", + "resolved": "https://registry.npmjs.org/estraverse-fb/-/estraverse-fb-1.3.1.tgz" + }, + "esutils": { + "version": "2.0.2", + "from": "esutils@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz" + }, + "etag": { + "version": "1.7.0", + "from": "etag@>=1.7.0 <1.8.0", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.7.0.tgz" + }, + "event-emitter": { + "version": "0.3.4", + "from": "event-emitter@>=0.3.4 <0.4.0", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz" + }, + "eventemitter3": { + "version": "1.1.1", + "from": "eventemitter3@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz" + }, + "events": { + "version": "1.1.0", + "from": "events@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.0.tgz" + }, + "exit": { + "version": "0.1.2", + "from": "exit@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + }, + "expand-brackets": { + "version": "0.1.4", + "from": "expand-brackets@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" + }, + "expand-range": { + "version": "1.8.1", + "from": "expand-range@>=1.8.1 <2.0.0", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz" + }, + "expose-loader": { + "version": "0.7.0", + "from": "expose-loader@>=0.7.0 <0.8.0", + "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" + }, + "express": { + "version": "4.13.3", + "from": "express@>=4.13.3 <5.0.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.13.3.tgz", + "dependencies": { + "depd": { "version": "1.0.1", - "from": "js-tokens@1.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - }, - "json5": { - "version": "0.4.0", - "from": "json5@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" - }, - "line-numbers": { - "version": "0.2.0", - "from": "line-numbers@0.2.0", - "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz", - "dependencies": { - "left-pad": { - "version": "0.0.3", - "from": "left-pad@0.0.3", - "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" - } - } - }, - "lodash": { - "version": "3.10.1", - "from": "lodash@>=3.10.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" - }, - "minimatch": { - "version": "2.0.10", - "from": "minimatch@>=2.0.3 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "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", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "from": "balanced-match@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" - } - } - } - } + "from": "depd@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" }, - "output-file-sync": { - "version": "1.1.1", - "from": "output-file-sync@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz", + "qs": { + "version": "4.0.0", + "from": "qs@4.0.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-4.0.0.tgz" + } + } + }, + "extend": { + "version": "3.0.0", + "from": "extend@>=3.0.0 <3.1.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + }, + "extglob": { + "version": "0.3.1", + "from": "extglob@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz" + }, + "eyes": { + "version": "0.1.8", + "from": "eyes@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz" + }, + "fast-levenshtein": { + "version": "1.0.7", + "from": "fast-levenshtein@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-1.0.7.tgz" + }, + "fastparse": { + "version": "1.1.1", + "from": "fastparse@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz" + }, + "fbjs": { + "version": "0.3.2", + "from": "fbjs@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.3.2.tgz" + }, + "figures": { + "version": "1.4.0", + "from": "figures@>=1.3.5 <2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.4.0.tgz" + }, + "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", + "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" + } + } + }, + "filename-regex": { + "version": "2.0.0", + "from": "filename-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" + }, + "fill-range": { + "version": "2.2.2", + "from": "fill-range@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz" + }, + "finalhandler": { + "version": "0.4.0", + "from": "finalhandler@0.4.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.4.0.tgz" + }, + "find-up": { + "version": "1.0.0", + "from": "find-up@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.0.0.tgz", + "dependencies": { + "path-exists": { + "version": "2.0.0", + "from": "path-exists@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.0.0.tgz" + } + } + }, + "flat-cache": { + "version": "1.0.9", + "from": "flat-cache@>=1.0.9 <2.0.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.0.9.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + } + } + }, + "flatten": { + "version": "0.0.1", + "from": "flatten@0.0.1", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-0.0.1.tgz" + }, + "flux-standard-action": { + "version": "0.6.0", + "from": "flux-standard-action@0.6.0", + "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz" + }, + "for-in": { + "version": "0.1.4", + "from": "for-in@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.tgz" + }, + "for-own": { + "version": "0.1.3", + "from": "for-own@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz" + }, + "forever-agent": { + "version": "0.6.1", + "from": "forever-agent@>=0.6.1 <0.7.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + }, + "form-data": { + "version": "1.0.0-rc3", + "from": "form-data@>=1.0.0-rc3 <1.1.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz" + }, + "forwarded": { + "version": "0.1.0", + "from": "forwarded@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz" + }, + "fresh": { + "version": "0.3.0", + "from": "fresh@0.3.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.3.0.tgz" + }, + "fs-readdir-recursive": { + "version": "0.1.2", + "from": "fs-readdir-recursive@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz" + }, + "fsevents": { + "version": "1.0.2", + "from": "fsevents@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.2.tgz", + "dependencies": { + "node-pre-gyp": { + "version": "0.6.12", + "from": "node-pre-gyp@0.6.12", + "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.12.tgz", "dependencies": { "mkdirp": { "version": "0.5.1", - "from": "mkdirp@>=0.5.1 <0.6.0", + "from": "mkdirp@~0.5.0", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "dependencies": { "minimist": { @@ -308,486 +1294,975 @@ } } }, - "xtend": { - "version": "4.0.0", - "from": "xtend@>=4.0.0 <5.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" - } - } - }, - "path-exists": { - "version": "1.0.0", - "from": "path-exists@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.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" - }, - "private": { - "version": "0.1.6", - "from": "private@>=0.1.6 <0.2.0", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" - }, - "regenerator": { - "version": "0.8.35", - "from": "regenerator@0.8.35", - "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz", - "dependencies": { - "commoner": { - "version": "0.10.3", - "from": "commoner@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.3.tgz", + "nopt": { + "version": "3.0.4", + "from": "nopt@~3.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.4.tgz", "dependencies": { - "q": { - "version": "1.1.2", - "from": "q@>=1.1.2 <1.2.0", - "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" - }, - "commander": { - "version": "2.5.1", - "from": "commander@>=2.5.0 <2.6.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz" - }, - "graceful-fs": { - "version": "3.0.8", - "from": "graceful-fs@>=3.0.4 <3.1.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + "abbrev": { + "version": "1.0.7", + "from": "abbrev@1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" + } + } + }, + "npmlog": { + "version": "1.2.1", + "from": "npmlog@~1.2.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", + "dependencies": { + "ansi": { + "version": "0.3.0", + "from": "ansi@~0.3.0", + "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz" }, - "glob": { - "version": "4.2.2", - "from": "glob@>=4.2.1 <4.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", + "are-we-there-yet": { + "version": "1.0.4", + "from": "are-we-there-yet@~1.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz", "dependencies": { - "inflight": { - "version": "1.0.4", - "from": "inflight@>=1.0.4 <2.0.0", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "delegates": { + "version": "0.1.0", + "from": "delegates@^0.1.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz" + }, + "readable-stream": { + "version": "1.1.13", + "from": "readable-stream@^1.1.13", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", "dependencies": { - "wrappy": { + "core-util-is": { "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + "from": "core-util-is@~1.0.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@~0.10.x", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" } } + } + } + }, + "gauge": { + "version": "1.2.2", + "from": "gauge@~1.2.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.2.tgz", + "dependencies": { + "has-unicode": { + "version": "1.0.0", + "from": "has-unicode@^1.0.0", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.0.tgz" }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + "lodash.pad": { + "version": "3.1.1", + "from": "lodash.pad@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.1.tgz", + "dependencies": { + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" + }, + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", + "dependencies": { + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" + } + } + } + } }, - "minimatch": { - "version": "1.0.0", - "from": "minimatch@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz", + "lodash.padleft": { + "version": "3.1.1", + "from": "lodash.padleft@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz", "dependencies": { - "lru-cache": { - "version": "2.7.0", - "from": "lru-cache@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", + "dependencies": { + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.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", + "lodash.padright": { + "version": "3.1.1", + "from": "lodash.padright@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz", "dependencies": { - "wrappy": { - "version": "1.0.1", - "from": "wrappy@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" + }, + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", + "dependencies": { + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@^3.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" + } + } } } } } + } + } + }, + "rc": { + "version": "1.1.2", + "from": "rc@~1.1.0", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.2.tgz", + "dependencies": { + "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" + }, + "ini": { + "version": "1.3.4", + "from": "ini@~1.3.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "install": { - "version": "0.1.8", - "from": "install@>=0.1.7 <0.2.0", - "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" + "minimist": { + "version": "1.2.0", + "from": "minimist@^1.1.2", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.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" + "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" } } }, - "defs": { - "version": "1.1.0", - "from": "defs@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.0.tgz", + "request": { + "version": "2.64.0", + "from": "request@2.x", + "resolved": "https://registry.npmjs.org/request/-/request-2.64.0.tgz", "dependencies": { - "alter": { - "version": "0.2.0", - "from": "alter@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "aws-sign2": { + "version": "0.5.0", + "from": "aws-sign2@~0.5.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "bl": { + "version": "1.0.0", + "from": "bl@~1.0.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", "dependencies": { - "stable": { - "version": "0.1.5", - "from": "stable@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@~2.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@~1.0.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "process-nextick-args": { + "version": "1.0.3", + "from": "process-nextick-args@~1.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@~0.10.x", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "util-deprecate": { + "version": "1.0.1", + "from": "util-deprecate@~1.0.1", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" + } + } } } }, - "ast-traverse": { - "version": "0.1.1", - "from": "ast-traverse@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz" + "caseless": { + "version": "0.11.0", + "from": "caseless@~0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" }, - "breakable": { - "version": "1.0.0", - "from": "breakable@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz" + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@~1.0.1", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@~1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, + "extend": { + "version": "3.0.0", + "from": "extend@~3.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" }, - "esprima-fb": { - "version": "8001.1001.0-dev-harmony-fb", - "from": "esprima-fb@>=8001.1001.0-dev-harmony-fb <8001.1002.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-8001.1001.0-dev-harmony-fb.tgz" + "forever-agent": { + "version": "0.6.1", + "from": "forever-agent@~0.6.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" }, - "simple-fmt": { - "version": "0.1.0", - "from": "simple-fmt@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" + "form-data": { + "version": "1.0.0-rc3", + "from": "form-data@~1.0.0-rc1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", + "dependencies": { + "async": { + "version": "1.4.2", + "from": "async@^1.4.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" + } + } }, - "simple-is": { - "version": "0.2.0", - "from": "simple-is@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" + "har-validator": { + "version": "1.8.0", + "from": "har-validator@^1.6.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "dependencies": { + "bluebird": { + "version": "2.10.2", + "from": "bluebird@^2.9.30", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@^1.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@^2.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@^1.0.2", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@^2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@^2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@^3.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@^2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@^2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "commander": { + "version": "2.8.1", + "from": "commander@^2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "from": "graceful-readlink@>= 1.0.0", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + } + }, + "is-my-json-valid": { + "version": "2.12.2", + "from": "is-my-json-valid@^2.12.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz", + "dependencies": { + "generate-function": { + "version": "2.0.0", + "from": "generate-function@^2.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "generate-object-property@^1.1.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "dependencies": { + "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" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "from": "jsonpointer@2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "xtend": { + "version": "4.0.0", + "from": "xtend@^4.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" + } + } + } + } }, - "stringmap": { - "version": "0.2.2", - "from": "stringmap@>=0.2.2 <0.3.0", - "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" + "hawk": { + "version": "3.1.0", + "from": "hawk@~3.1.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", + "dependencies": { + "boom": { + "version": "2.9.0", + "from": "boom@^2.8.x", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.9.0.tgz" + }, + "cryptiles": { + "version": "2.0.5", + "from": "cryptiles@2.x.x", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" + }, + "hoek": { + "version": "2.16.3", + "from": "hoek@2.x.x", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "sntp": { + "version": "1.0.9", + "from": "sntp@1.x.x", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + } }, - "stringset": { - "version": "0.2.1", - "from": "stringset@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.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", + "dependencies": { + "asn1": { + "version": "0.1.11", + "from": "asn1@0.1.11", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" + }, + "assert-plus": { + "version": "0.1.5", + "from": "assert-plus@^0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" + }, + "ctype": { + "version": "0.5.3", + "from": "ctype@0.5.3", + "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" + } + } }, - "tryor": { + "isstream": { "version": "0.1.2", - "from": "tryor@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" + "from": "isstream@~0.1.1", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@~5.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.1.7", + "from": "mime-types@~2.1.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz", + "dependencies": { + "mime-db": { + "version": "1.19.0", + "from": "mime-db@~1.19.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz" + } + } + }, + "node-uuid": { + "version": "1.4.3", + "from": "node-uuid@~1.4.0", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" + }, + "oauth-sign": { + "version": "0.8.0", + "from": "oauth-sign@~0.8.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" + }, + "qs": { + "version": "5.1.0", + "from": "qs@~5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "stringstream@~0.0.4", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" }, - "yargs": { - "version": "1.3.3", - "from": "yargs@>=1.3.2 <1.4.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-1.3.3.tgz" + "tough-cookie": { + "version": "2.1.0", + "from": "tough-cookie@>=0.12.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.1.0.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "tunnel-agent@~0.4.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" } } }, - "esprima-fb": { - "version": "15001.1.0-dev-harmony-fb", - "from": "esprima-fb@>=15001.1.0-dev-harmony-fb <15001.2.0", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1.0-dev-harmony-fb.tgz" - }, - "recast": { - "version": "0.10.24", - "from": "recast@0.10.24", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz", + "rimraf": { + "version": "2.4.3", + "from": "rimraf@~2.4.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", "dependencies": { - "ast-types": { - "version": "0.8.5", - "from": "ast-types@0.8.5", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.5.tgz" + "glob": { + "version": "5.0.15", + "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.0.1", + "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.0", + "from": "balanced-match@^0.2.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" + } + } + } + } + }, + "once": { + "version": "1.3.2", + "from": "once@^1.3.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.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" + } + } } } }, - "through": { - "version": "2.3.8", - "from": "through@>=2.3.6 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - } - } - }, - "regexpu": { - "version": "1.3.0", - "from": "regexpu@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", - "dependencies": { - "esprima": { - "version": "2.6.0", - "from": "esprima@>=2.6.0 <3.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" + "semver": { + "version": "5.0.3", + "from": "semver@~5.0.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" }, - "recast": { - "version": "0.10.33", - "from": "recast@>=0.10.10 <0.11.0", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", + "tar": { + "version": "2.2.1", + "from": "tar@~2.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", "dependencies": { - "source-map": { - "version": "0.5.1", - "from": "source-map@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.1.tgz" + "block-stream": { + "version": "0.0.8", + "from": "block-stream@*", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" }, - "ast-types": { - "version": "0.8.12", - "from": "ast-types@0.8.12", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz" + "fstream": { + "version": "1.0.8", + "from": "fstream@^1.0.2", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@^4.1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" } } }, - "regenerate": { - "version": "1.2.1", - "from": "regenerate@>=1.2.1 <2.0.0", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" - }, - "regjsgen": { - "version": "0.2.0", - "from": "regjsgen@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" - }, - "regjsparser": { - "version": "0.1.5", - "from": "regjsparser@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "dependencies": { - "jsesc": { - "version": "0.5.0", - "from": "jsesc@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" - } - } - } - } - }, - "repeating": { - "version": "1.1.3", - "from": "repeating@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", - "dependencies": { - "is-finite": { - "version": "1.0.1", - "from": "is-finite@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz", + "tar-pack": { + "version": "2.0.0", + "from": "tar-pack@~2.0.0", + "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz", "dependencies": { - "number-is-nan": { - "version": "1.0.0", - "from": "number-is-nan@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" + "debug": { + "version": "0.7.4", + "from": "debug@~0.7.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + }, + "fstream": { + "version": "0.1.31", + "from": "fstream@~0.1.22", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "dependencies": { + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@~3.0.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + }, + "fstream-ignore": { + "version": "0.0.7", + "from": "fstream-ignore@0.0.7", + "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz", + "dependencies": { + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "minimatch": { + "version": "0.2.14", + "from": "minimatch@~0.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "dependencies": { + "lru-cache": { + "version": "2.7.0", + "from": "lru-cache@2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@~1.0.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + } + } + } + } + }, + "graceful-fs": { + "version": "1.2.3", + "from": "graceful-fs@1.2", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" + }, + "once": { + "version": "1.1.1", + "from": "once@~1.1.1", + "resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz" + }, + "readable-stream": { + "version": "1.0.33", + "from": "readable-stream@~1.0.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@~1.0.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@~2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@~0.10.x", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + } + }, + "rimraf": { + "version": "2.2.8", + "from": "rimraf@~2.2.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "tar": { + "version": "0.1.20", + "from": "tar@~0.1.17", + "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", + "dependencies": { + "block-stream": { + "version": "0.0.8", + "from": "block-stream@*", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@2", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.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" } } } } - }, - "resolve": { - "version": "1.1.6", - "from": "resolve@>=1.1.6 <2.0.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" - }, - "shebang-regex": { - "version": "1.0.0", - "from": "shebang-regex@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - }, - "slash": { - "version": "1.0.0", - "from": "slash@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - }, - "source-map": { - "version": "0.4.4", - "from": "source-map@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "source-map-support": { - "version": "0.2.10", - "from": "source-map-support@>=0.2.10 <0.3.0", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", - "dependencies": { - "source-map": { - "version": "0.1.32", - "from": "source-map@0.1.32", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - }, - "to-fast-properties": { - "version": "1.0.1", - "from": "to-fast-properties@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" - }, - "trim-right": { - "version": "1.0.1", - "from": "trim-right@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" - }, - "try-resolve": { - "version": "1.0.1", - "from": "try-resolve@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" } } }, - "babel-loader": { - "version": "5.3.2", - "from": "babel-loader@>=5.3.2 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-5.3.2.tgz", + "fstream": { + "version": "1.0.8", + "from": "fstream@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", "dependencies": { - "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" + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.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", + "gauge": { + "version": "1.2.2", + "from": "gauge@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.2.tgz" + }, + "gaze": { + "version": "0.5.2", + "from": "gaze@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz" + }, + "generate-function": { + "version": "2.0.0", + "from": "generate-function@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "generate-object-property@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz" + }, + "get-stdin": { + "version": "4.0.1", + "from": "get-stdin@>=4.0.1 <5.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + }, + "glob": { + "version": "4.2.2", + "from": "glob@>=4.2.1 <4.3.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.2.2.tgz", "dependencies": { - "bytes": { - "version": "2.1.0", - "from": "bytes@2.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.1.0.tgz" - }, - "content-type": { - "version": "1.0.1", - "from": "content-type@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz" - }, - "debug": { - "version": "2.2.0", - "from": "debug@>=2.2.0 <2.3.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", - "dependencies": { - "ms": { - "version": "0.7.1", - "from": "ms@0.7.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" - } - } - }, - "depd": { - "version": "1.1.0", - "from": "depd@>=1.1.0 <1.2.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz" - }, - "http-errors": { - "version": "1.3.1", - "from": "http-errors@>=1.3.1 <1.4.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "statuses": { - "version": "1.2.1", - "from": "statuses@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" - } - } + "minimatch": { + "version": "1.0.0", + "from": "minimatch@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz" + } + } + }, + "glob-base": { + "version": "0.3.0", + "from": "glob-base@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" + }, + "glob-parent": { + "version": "2.0.0", + "from": "glob-parent@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" + }, + "global": { + "version": "4.3.0", + "from": "global@>=4.3.0 <5.0.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.3.0.tgz", + "dependencies": { + "process": { + "version": "0.5.2", + "from": "process@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz" + } + } + }, + "globals": { + "version": "6.4.1", + "from": "globals@>=6.4.0 <7.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-6.4.1.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", + "dependencies": { + "glob": { + "version": "5.0.15", + "from": "glob@>=5.0.3 <6.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" }, - "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" + "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" + } + } + }, + "globule": { + "version": "0.1.0", + "from": "globule@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", + "dependencies": { + "glob": { + "version": "3.1.21", + "from": "glob@>=3.1.21 <3.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz" }, - "on-finished": { - "version": "2.3.0", - "from": "on-finished@>=2.3.0 <2.4.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "dependencies": { - "ee-first": { - "version": "1.1.1", - "from": "ee-first@1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" - } - } + "graceful-fs": { + "version": "1.2.3", + "from": "graceful-fs@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" }, - "qs": { - "version": "5.1.0", - "from": "qs@5.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" + "inherits": { + "version": "1.0.2", + "from": "inherits@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz" }, - "raw-body": { - "version": "2.1.4", - "from": "raw-body@>=2.1.4 <2.2.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.4.tgz", - "dependencies": { - "unpipe": { - "version": "1.0.0", - "from": "unpipe@1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - } - } + "lodash": { + "version": "1.0.2", + "from": "lodash@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz" }, - "type-is": { - "version": "1.6.9", - "from": "type-is@>=1.6.9 <1.7.0", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.9.tgz", - "dependencies": { - "media-typer": { - "version": "0.3.0", - "from": "media-typer@0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" - }, - "mime-types": { - "version": "2.1.7", - "from": "mime-types@>=2.1.7 <2.2.0", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz", - "dependencies": { - "mime-db": { - "version": "1.19.0", - "from": "mime-db@>=1.19.0 <1.20.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz" - } - } - } - } + "minimatch": { + "version": "0.2.14", + "from": "minimatch@>=0.2.11 <0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" } } }, - "es5-shim": { - "version": "4.1.14", - "from": "es5-shim@>=4.1.14 <5.0.0", - "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.1.14.tgz" + "graceful-fs": { + "version": "3.0.8", + "from": "graceful-fs@>=3.0.4 <3.1.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" }, - "es6-promise": { - "version": "3.0.2", - "from": "es6-promise@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" + "graceful-readlink": { + "version": "1.0.1", + "from": "graceful-readlink@>=1.0.0", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" }, - "expose-loader": { - "version": "0.7.0", - "from": "expose-loader@>=0.7.0 <0.8.0", - "resolved": "https://registry.npmjs.org/expose-loader/-/expose-loader-0.7.0.tgz" + "handlebars": { + "version": "4.0.3", + "from": "handlebars@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.3.tgz" + }, + "har-validator": { + "version": "2.0.2", + "from": "har-validator@>=2.0.2 <2.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.2.tgz", + "dependencies": { + "commander": { + "version": "2.9.0", + "from": "commander@>=2.8.1 <3.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz" + } + } + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + }, + "has-binary": { + "version": "0.1.6", + "from": "has-binary@0.1.6", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.6.tgz" + }, + "has-binary-data": { + "version": "0.1.3", + "from": "has-binary-data@0.1.3", + "resolved": "https://registry.npmjs.org/has-binary-data/-/has-binary-data-0.1.3.tgz" + }, + "has-color": { + "version": "0.1.7", + "from": "has-color@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/has-color/-/has-color-0.1.7.tgz" + }, + "has-cors": { + "version": "1.0.3", + "from": "has-cors@1.0.3", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.0.3.tgz", + "dependencies": { + "global": { + "version": "2.0.1", + "from": "https://github.com/component/global/archive/v2.0.1.tar.gz", + "resolved": "https://github.com/component/global/archive/v2.0.1.tar.gz" + } + } + }, + "has-flag": { + "version": "1.0.0", + "from": "has-flag@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + }, + "has-unicode": { + "version": "1.0.1", + "from": "has-unicode@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.1.tgz" + }, + "hawk": { + "version": "3.1.0", + "from": "hawk@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz" + }, + "hoek": { + "version": "2.16.3", + "from": "hoek@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + }, + "hoist-non-react-statics": { + "version": "1.0.3", + "from": "hoist-non-react-statics@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.0.3.tgz" + }, + "home-or-tmp": { + "version": "1.0.0", + "from": "home-or-tmp@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-1.0.0.tgz" + }, + "hosted-git-info": { + "version": "2.1.4", + "from": "hosted-git-info@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.1.4.tgz" + }, + "htmlparser2": { + "version": "3.8.3", + "from": "htmlparser2@3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz" + }, + "http-browserify": { + "version": "1.7.0", + "from": "http-browserify@>=1.3.2 <2.0.0", + "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz" + }, + "http-errors": { + "version": "1.3.1", + "from": "http-errors@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz" + }, + "http-proxy": { + "version": "1.11.2", + "from": "http-proxy@>=1.11.2 <2.0.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.11.2.tgz" + }, + "http-signature": { + "version": "0.11.0", + "from": "http-signature@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz" + }, + "https-browserify": { + "version": "0.0.0", + "from": "https-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" + }, + "i": { + "version": "0.3.3", + "from": "i@>=0.3.0 <0.4.0", + "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" + }, + "ieee754": { + "version": "1.1.6", + "from": "ieee754@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.tgz" }, "immutable": { "version": "3.7.5", @@ -802,17 +2277,217 @@ "source-map": { "version": "0.1.43", "from": "source-map@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" + } + } + }, + "indent-string": { + "version": "2.1.0", + "from": "indent-string@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "dependencies": { + "repeating": { + "version": "2.0.0", + "from": "repeating@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.0.tgz" } } }, + "indexes-of": { + "version": "1.0.1", + "from": "indexes-of@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz" + }, + "indexof": { + "version": "0.0.1", + "from": "indexof@0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.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" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "ini": { + "version": "1.3.4", + "from": "ini@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" + }, + "inquirer": { + "version": "0.9.0", + "from": "inquirer@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.9.0.tgz" + }, + "install": { + "version": "0.1.8", + "from": "install@>=0.1.7 <0.2.0", + "resolved": "https://registry.npmjs.org/install/-/install-0.1.8.tgz" + }, + "interpret": { + "version": "0.6.6", + "from": "interpret@>=0.6.4 <0.7.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz" + }, + "invariant": { + "version": "2.1.1", + "from": "invariant@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz" + }, + "invert-kv": { + "version": "1.0.0", + "from": "invert-kv@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + }, + "ipaddr.js": { + "version": "1.0.1", + "from": "ipaddr.js@1.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.0.1.tgz" + }, + "is-absolute": { + "version": "0.1.7", + "from": "is-absolute@>=0.1.7 <0.2.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz" + }, + "is-absolute-url": { + "version": "2.0.0", + "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-binary-path": { + "version": "1.0.1", + "from": "is-binary-path@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz" + }, + "is-buffer": { + "version": "1.1.0", + "from": "is-buffer@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.0.tgz" + }, + "is-builtin-module": { + "version": "1.0.0", + "from": "is-builtin-module@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz" + }, + "is-dotfile": { + "version": "1.0.1", + "from": "is-dotfile@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" + }, + "is-equal-shallow": { + "version": "0.1.3", + "from": "is-equal-shallow@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" + }, + "is-extglob": { + "version": "1.0.0", + "from": "is-extglob@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + }, + "is-finite": { + "version": "1.0.1", + "from": "is-finite@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.1.tgz" + }, + "is-glob": { + "version": "2.0.1", + "from": "is-glob@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + }, + "is-integer": { + "version": "1.0.6", + "from": "is-integer@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/is-integer/-/is-integer-1.0.6.tgz" + }, + "is-my-json-valid": { + "version": "2.12.2", + "from": "is-my-json-valid@>=2.10.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.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" + }, + "is-path-cwd": { + "version": "1.0.0", + "from": "is-path-cwd@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz" + }, + "is-path-in-cwd": { + "version": "1.0.0", + "from": "is-path-in-cwd@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz" + }, + "is-path-inside": { + "version": "1.0.0", + "from": "is-path-inside@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" + }, + "is-plain-obj": { + "version": "1.0.0", + "from": "is-plain-obj@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.0.0.tgz" + }, + "is-primitive": { + "version": "2.0.0", + "from": "is-primitive@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + }, + "is-promise": { + "version": "2.1.0", + "from": "is-promise@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" + }, + "is-property": { + "version": "1.0.2", + "from": "is-property@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + }, + "is-relative": { + "version": "0.1.3", + "from": "is-relative@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.1.3.tgz" + }, + "is-resolvable": { + "version": "1.0.0", + "from": "is-resolvable@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz" + }, + "is-svg": { + "version": "1.1.1", + "from": "is-svg@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-1.1.1.tgz" + }, + "is-utf8": { + "version": "0.2.0", + "from": "is-utf8@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.0.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "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" + }, + "isstream": { + "version": "0.1.2", + "from": "isstream@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, "jquery": { "version": "2.1.4", "from": "jquery@>=2.1.4 <3.0.0", @@ -823,1820 +2498,2137 @@ "from": "jquery-ujs@>=1.1.0-1 <2.0.0", "resolved": "https://registry.npmjs.org/jquery-ujs/-/jquery-ujs-1.1.0-1.tgz" }, - "loader-utils": { - "version": "0.2.11", - "from": "loader-utils@>=0.2.11 <0.3.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz", + "js-base64": { + "version": "2.1.9", + "from": "js-base64@>=2.1.9 <3.0.0", + "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" + }, + "js-yaml": { + "version": "3.3.1", + "from": "js-yaml@>=3.3.1 <3.4.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.3.1.tgz", "dependencies": { - "big.js": { - "version": "3.1.3", - "from": "big.js@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz" - }, - "json5": { - "version": "0.4.0", - "from": "json5@>=0.4.0 <0.5.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + "esprima": { + "version": "2.2.0", + "from": "esprima@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.2.0.tgz" } } }, - "marked": { - "version": "0.3.5", - "from": "marked@>=0.3.5 <0.4.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.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" }, - "react": { - "version": "0.14.0", - "from": "react@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/react/-/react-0.14.0.tgz", + "jsdoctypeparser": { + "version": "1.2.0", + "from": "jsdoctypeparser@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/jsdoctypeparser/-/jsdoctypeparser-1.2.0.tgz" + }, + "jsesc": { + "version": "0.5.0", + "from": "jsesc@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + }, + "json-stable-stringify": { + "version": "1.0.0", + "from": "json-stable-stringify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.0.tgz" + }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@>=5.0.1 <5.1.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "json3": { + "version": "3.2.6", + "from": "json3@3.2.6", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.2.6.tgz" + }, + "json5": { + "version": "0.4.0", + "from": "json5@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.4.0.tgz" + }, + "jsonify": { + "version": "0.0.0", + "from": "jsonify@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + }, + "jsonlint": { + "version": "1.6.2", + "from": "jsonlint@>=1.6.2 <1.7.0", + "resolved": "https://registry.npmjs.org/jsonlint/-/jsonlint-1.6.2.tgz" + }, + "jsonpointer": { + "version": "2.0.0", + "from": "jsonpointer@2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + }, + "jstransform": { + "version": "10.1.0", + "from": "jstransform@>=10.0.1 <11.0.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", "dependencies": { - "envify": { - "version": "3.4.0", - "from": "envify@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/envify/-/envify-3.4.0.tgz", - "dependencies": { - "through": { - "version": "2.3.8", - "from": "through@>=2.3.4 <2.4.0", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - }, - "jstransform": { - "version": "10.1.0", - "from": "jstransform@>=10.0.1 <11.0.0", - "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-10.1.0.tgz", - "dependencies": { - "base62": { - "version": "0.1.1", - "from": "base62@0.1.1", - "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz" - }, - "esprima-fb": { - "version": "13001.1001.0-dev-harmony-fb", - "from": "esprima-fb@13001.1001.0-dev-harmony-fb", - "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" - }, - "source-map": { - "version": "0.1.31", - "from": "source-map@0.1.31", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - } - } - } - } + "esprima-fb": { + "version": "13001.1001.0-dev-harmony-fb", + "from": "esprima-fb@13001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-13001.1001.0-dev-harmony-fb.tgz" }, - "fbjs": { - "version": "0.3.1", - "from": "fbjs@>=0.3.1 <0.4.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.3.1.tgz", - "dependencies": { - "core-js": { - "version": "1.2.1", - "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" - }, - "promise": { - "version": "7.0.4", - "from": "promise@>=7.0.3 <8.0.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.0.4.tgz", - "dependencies": { - "asap": { - "version": "2.0.3", - "from": "asap@>=2.0.3 <2.1.0", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.3.tgz" - } - } - }, - "ua-parser-js": { - "version": "0.7.9", - "from": "ua-parser-js@>=0.7.9 <0.8.0", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.9.tgz" - }, - "whatwg-fetch": { - "version": "0.9.0", - "from": "whatwg-fetch@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz" - } - } + "source-map": { + "version": "0.1.31", + "from": "source-map@0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz" } } }, - "react-bootstrap": { - "version": "0.27.1", - "from": "react-bootstrap@>=0.27.0 <0.28.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.27.1.tgz", + "jstransformer": { + "version": "0.0.2", + "from": "jstransformer@0.0.2", + "resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-0.0.2.tgz", "dependencies": { - "babel-runtime": { - "version": "5.8.25", - "from": "babel-runtime@>=5.8.24 <6.0.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.25.tgz", - "dependencies": { - "core-js": { - "version": "1.2.1", - "from": "core-js@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.1.tgz" - } - } - }, - "classnames": { - "version": "2.1.5", - "from": "classnames@>=2.1.3 <3.0.0", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.1.5.tgz" - }, - "dom-helpers": { - "version": "2.4.0", - "from": "dom-helpers@>=2.2.4 <3.0.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-2.4.0.tgz" - }, - "keycode": { - "version": "2.1.0", - "from": "keycode@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.1.0.tgz" - }, - "lodash-compat": { - "version": "3.10.1", - "from": "lodash-compat@>=3.10.1 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz" - }, - "react-overlays": { - "version": "0.5.0", - "from": "react-overlays@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.5.0.tgz", - "dependencies": { - "react-prop-types": { - "version": "0.2.2", - "from": "react-prop-types@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" - } - } + "asap": { + "version": "1.0.0", + "from": "asap@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz" }, - "uncontrollable": { - "version": "3.1.3", - "from": "uncontrollable@>=3.1.1 <4.0.0", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.3.tgz", - "dependencies": { - "invariant": { - "version": "2.1.1", - "from": "invariant@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } - } - } + "promise": { + "version": "6.1.0", + "from": "promise@>=6.0.1 <7.0.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz" + } + } + }, + "JSV": { + "version": "4.0.2", + "from": "JSV@>=4.0.0", + "resolved": "https://registry.npmjs.org/JSV/-/JSV-4.0.2.tgz" + }, + "keycode": { + "version": "2.1.0", + "from": "keycode@>=2.0.0 <3.0.0", + "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" + }, + "lazy-cache": { + "version": "0.2.3", + "from": "lazy-cache@>=0.2.3 <0.3.0", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" + }, + "lcid": { + "version": "1.0.0", + "from": "lcid@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + }, + "left-pad": { + "version": "0.0.3", + "from": "left-pad@0.0.3", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-0.0.3.tgz" + }, + "leven": { + "version": "1.0.2", + "from": "leven@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-1.0.2.tgz" + }, + "levn": { + "version": "0.2.5", + "from": "levn@>=0.2.5 <0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.2.5.tgz" + }, + "line-numbers": { + "version": "0.2.0", + "from": "line-numbers@0.2.0", + "resolved": "https://registry.npmjs.org/line-numbers/-/line-numbers-0.2.0.tgz" + }, + "load-json-file": { + "version": "1.0.1", + "from": "load-json-file@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.0.1.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + } + } + }, + "loader-utils": { + "version": "0.2.11", + "from": "loader-utils@>=0.2.11 <0.3.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.11.tgz" + }, + "lodash": { + "version": "3.10.1", + "from": "lodash@>=3.10.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" + }, + "lodash-compat": { + "version": "3.10.1", + "from": "lodash-compat@>=3.10.1 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash-compat/-/lodash-compat-3.10.1.tgz" + }, + "lodash._arraycopy": { + "version": "3.0.0", + "from": "lodash._arraycopy@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz" + }, + "lodash._arrayeach": { + "version": "3.0.0", + "from": "lodash._arrayeach@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz" + }, + "lodash._arraymap": { + "version": "3.0.0", + "from": "lodash._arraymap@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._arraymap/-/lodash._arraymap-3.0.0.tgz" + }, + "lodash._baseassign": { + "version": "3.2.0", + "from": "lodash._baseassign@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz" + }, + "lodash._baseclone": { + "version": "3.3.0", + "from": "lodash._baseclone@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz" + }, + "lodash._basecopy": { + "version": "3.0.1", + "from": "lodash._basecopy@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz" + }, + "lodash._basedifference": { + "version": "3.0.3", + "from": "lodash._basedifference@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._basedifference/-/lodash._basedifference-3.0.3.tgz" + }, + "lodash._baseflatten": { + "version": "3.1.4", + "from": "lodash._baseflatten@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz" + }, + "lodash._basefor": { + "version": "3.0.2", + "from": "lodash._basefor@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz" + }, + "lodash._baseindexof": { + "version": "3.1.0", + "from": "lodash._baseindexof@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._baseindexof/-/lodash._baseindexof-3.1.0.tgz" + }, + "lodash._basetostring": { + "version": "3.0.1", + "from": "lodash._basetostring@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" + }, + "lodash._bindcallback": { + "version": "3.0.1", + "from": "lodash._bindcallback@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz" + }, + "lodash._cacheindexof": { + "version": "3.0.2", + "from": "lodash._cacheindexof@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._cacheindexof/-/lodash._cacheindexof-3.0.2.tgz" + }, + "lodash._createassigner": { + "version": "3.1.1", + "from": "lodash._createassigner@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz" + }, + "lodash._createcache": { + "version": "3.1.2", + "from": "lodash._createcache@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._createcache/-/lodash._createcache-3.1.2.tgz" + }, + "lodash._createpadding": { + "version": "3.6.1", + "from": "lodash._createpadding@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz" + }, + "lodash._getnative": { + "version": "3.9.1", + "from": "lodash._getnative@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz" + }, + "lodash._isiterateecall": { + "version": "3.0.9", + "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz" + }, + "lodash._pickbyarray": { + "version": "3.0.2", + "from": "lodash._pickbyarray@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._pickbyarray/-/lodash._pickbyarray-3.0.2.tgz" + }, + "lodash._pickbycallback": { + "version": "3.0.0", + "from": "lodash._pickbycallback@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash._pickbycallback/-/lodash._pickbycallback-3.0.0.tgz" + }, + "lodash.assign": { + "version": "3.2.0", + "from": "lodash.assign@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.2.0.tgz" + }, + "lodash.clonedeep": { + "version": "3.0.2", + "from": "lodash.clonedeep@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-3.0.2.tgz" + }, + "lodash.flatten": { + "version": "3.0.2", + "from": "lodash.flatten@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-3.0.2.tgz" + }, + "lodash.isarguments": { + "version": "3.0.4", + "from": "lodash.isarguments@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" + }, + "lodash.isarray": { + "version": "3.0.4", + "from": "lodash.isarray@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" + }, + "lodash.isplainobject": { + "version": "3.2.0", + "from": "lodash.isplainobject@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz" + }, + "lodash.istypedarray": { + "version": "3.0.2", + "from": "lodash.istypedarray@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.istypedarray/-/lodash.istypedarray-3.0.2.tgz" + }, + "lodash.keys": { + "version": "3.1.2", + "from": "lodash.keys@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz" + }, + "lodash.keysin": { + "version": "3.0.8", + "from": "lodash.keysin@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz" + }, + "lodash.merge": { + "version": "3.3.2", + "from": "lodash.merge@>=3.3.2 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-3.3.2.tgz" + }, + "lodash.omit": { + "version": "3.1.0", + "from": "lodash.omit@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-3.1.0.tgz" + }, + "lodash.pad": { + "version": "3.1.1", + "from": "lodash.pad@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.1.tgz" + }, + "lodash.padleft": { + "version": "3.1.1", + "from": "lodash.padleft@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz" + }, + "lodash.padright": { + "version": "3.1.1", + "from": "lodash.padright@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz" + }, + "lodash.pick": { + "version": "3.1.0", + "from": "lodash.pick@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-3.1.0.tgz" + }, + "lodash.repeat": { + "version": "3.0.1", + "from": "lodash.repeat@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" + }, + "lodash.restparam": { + "version": "3.6.1", + "from": "lodash.restparam@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz" + }, + "lodash.toplainobject": { + "version": "3.0.0", + "from": "lodash.toplainobject@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz" + }, + "longest": { + "version": "1.0.1", + "from": "longest@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + }, + "loose-envify": { + "version": "1.0.0", + "from": "loose-envify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz" + }, + "loud-rejection": { + "version": "1.0.0", + "from": "loud-rejection@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.0.0.tgz" + }, + "lru-cache": { + "version": "2.7.0", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" + }, + "map-obj": { + "version": "1.0.1", + "from": "map-obj@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + }, + "marked": { + "version": "0.3.5", + "from": "marked@>=0.3.5 <0.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.5.tgz" + }, + "media-typer": { + "version": "0.3.0", + "from": "media-typer@0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz" + }, + "memory-fs": { + "version": "0.2.0", + "from": "memory-fs@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" + }, + "meow": { + "version": "3.4.2", + "from": "meow@>=3.3.0 <4.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.4.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" + } + } + }, + "merge-descriptors": { + "version": "1.0.0", + "from": "merge-descriptors@1.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.0.tgz" + }, + "methods": { + "version": "1.1.1", + "from": "methods@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.1.tgz" + }, + "micromatch": { + "version": "2.2.0", + "from": "micromatch@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", + "dependencies": { + "is-glob": { + "version": "1.1.3", + "from": "is-glob@>=1.1.3 <2.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" }, - "react-prop-types": { - "version": "0.3.0", - "from": "react-prop-types@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz" + "kind-of": { + "version": "1.1.0", + "from": "kind-of@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" + } + } + }, + "mime": { + "version": "1.3.4", + "from": "mime@1.3.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz" + }, + "mime-db": { + "version": "1.19.0", + "from": "mime-db@>=1.19.0 <1.20.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz" + }, + "mime-types": { + "version": "2.1.7", + "from": "mime-types@>=2.1.7 <2.2.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz" + }, + "min-document": { + "version": "2.17.0", + "from": "min-document@>=2.6.1 <3.0.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.17.0.tgz" + }, + "minimatch": { + "version": "2.0.10", + "from": "minimatch@>=2.0.3 <3.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz" + }, + "minimist": { + "version": "1.2.0", + "from": "minimist@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + }, + "mkdirp": { + "version": "0.5.1", + "from": "mkdirp@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "dependencies": { + "minimist": { + "version": "0.0.8", + "from": "minimist@0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + } + }, + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + }, + "mute-stream": { + "version": "0.0.4", + "from": "mute-stream@0.0.4", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz" + }, + "nan": { + "version": "2.1.0", + "from": "nan@>=2.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.1.0.tgz" + }, + "natural-compare": { + "version": "1.2.2", + "from": "natural-compare@>=1.2.2 <1.3.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.2.2.tgz" + }, + "ncp": { + "version": "0.4.2", + "from": "ncp@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz" + }, + "negotiator": { + "version": "0.5.3", + "from": "negotiator@0.5.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz" + }, + "node-gyp": { + "version": "3.0.3", + "from": "node-gyp@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.0.3.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" }, - "warning": { - "version": "2.1.0", - "from": "warning@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } + "minimatch": { + "version": "1.0.0", + "from": "minimatch@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz" } } }, - "react-dom": { - "version": "0.14.0", - "from": "react-dom@>=0.14.0 <0.15.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.0.tgz" + "node-libs-browser": { + "version": "0.5.3", + "from": "node-libs-browser@>=0.4.0 <=0.6.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz" }, - "react-redux": { - "version": "3.1.0", - "from": "react-redux@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-3.1.0.tgz", + "node-uuid": { + "version": "1.4.3", + "from": "node-uuid@>=1.4.2 <2.0.0", + "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" + }, + "nomnom": { + "version": "1.8.1", + "from": "nomnom@>=1.5.0", + "resolved": "https://registry.npmjs.org/nomnom/-/nomnom-1.8.1.tgz", "dependencies": { - "hoist-non-react-statics": { - "version": "1.0.3", - "from": "hoist-non-react-statics@>=1.0.3 <2.0.0", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-1.0.3.tgz" + "ansi-styles": { + "version": "1.0.0", + "from": "ansi-styles@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.0.0.tgz" }, - "invariant": { - "version": "2.1.1", - "from": "invariant@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.1.1.tgz", - "dependencies": { - "loose-envify": { - "version": "1.0.0", - "from": "loose-envify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.0.0.tgz", - "dependencies": { - "js-tokens": { - "version": "1.0.1", - "from": "js-tokens@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-1.0.1.tgz" - } - } - } - } + "chalk": { + "version": "0.4.0", + "from": "chalk@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.4.0.tgz" + }, + "strip-ansi": { + "version": "0.1.1", + "from": "strip-ansi@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.1.1.tgz" } } }, - "redux": { - "version": "3.0.2", - "from": "redux@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.0.2.tgz" + "nopt": { + "version": "3.0.4", + "from": "nopt@>=2.0.0 <3.0.0||>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.4.tgz" }, - "redux-promise": { - "version": "0.5.0", - "from": "redux-promise@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz", + "normalize-package-data": { + "version": "2.3.4", + "from": "normalize-package-data@>=2.3.4 <3.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.3.4.tgz" + }, + "normalize-url": { + "version": "1.3.1", + "from": "normalize-url@>=1.3.1 <2.0.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.3.1.tgz", "dependencies": { - "flux-standard-action": { - "version": "0.6.0", - "from": "flux-standard-action@0.6.0", - "resolved": "https://registry.npmjs.org/flux-standard-action/-/flux-standard-action-0.6.0.tgz", - "dependencies": { - "lodash.isplainobject": { - "version": "3.2.0", - "from": "lodash.isplainobject@>=3.2.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz", - "dependencies": { - "lodash._basefor": { - "version": "3.0.2", - "from": "lodash._basefor@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._basefor/-/lodash._basefor-3.0.2.tgz" - }, - "lodash.isarguments": { - "version": "3.0.4", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" - }, - "lodash.keysin": { - "version": "3.0.8", - "from": "lodash.keysin@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.keysin/-/lodash.keysin-3.0.8.tgz", - "dependencies": { - "lodash.isarray": { - "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - } - } - } - } - } - } + "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" } } }, - "redux-thunk": { + "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" + } + } + }, + "npmlog": { + "version": "1.2.1", + "from": "npmlog@>=0.0.0 <1.0.0||>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz" + }, + "num2fraction": { + "version": "1.2.2", + "from": "num2fraction@>=1.2.2 <2.0.0", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz" + }, + "number-is-nan": { "version": "1.0.0", - "from": "redux-thunk@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-1.0.0.tgz" + "from": "number-is-nan@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.0.tgz" }, - "sleep": { + "oauth-sign": { + "version": "0.8.0", + "from": "oauth-sign@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" + }, + "object-assign": { "version": "3.0.0", - "from": "sleep@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/sleep/-/sleep-3.0.0.tgz", + "from": "object-assign@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz" + }, + "object-component": { + "version": "0.0.3", + "from": "object-component@0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz" + }, + "object-keys": { + "version": "1.0.1", + "from": "object-keys@1.0.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.1.tgz" + }, + "object.omit": { + "version": "1.1.0", + "from": "object.omit@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz" + }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz" + }, + "on-headers": { + "version": "1.0.1", + "from": "on-headers@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.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" + }, + "optimist": { + "version": "0.6.1", + "from": "optimist@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "dependencies": { - "nan": { - "version": "2.1.0", - "from": "nan@>=2.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.1.0.tgz" + "minimist": { + "version": "0.0.10", + "from": "minimist@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" } } }, - "webpack": { - "version": "1.12.2", - "from": "webpack@>=1.12.2 <2.0.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", + "optionator": { + "version": "0.5.0", + "from": "optionator@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.5.0.tgz" + }, + "options": { + "version": "0.0.6", + "from": "options@>=0.0.5", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" + }, + "os-browserify": { + "version": "0.1.2", + "from": "os-browserify@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" + }, + "os-homedir": { + "version": "1.0.1", + "from": "os-homedir@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.1.tgz" + }, + "os-locale": { + "version": "1.4.0", + "from": "os-locale@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz" + }, + "os-shim": { + "version": "0.1.3", + "from": "os-shim@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" + }, + "os-tmpdir": { + "version": "1.0.1", + "from": "os-tmpdir@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.1.tgz" + }, + "osenv": { + "version": "0.1.3", + "from": "osenv@>=0.0.0 <1.0.0", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.3.tgz" + }, + "output-file-sync": { + "version": "1.1.1", + "from": "output-file-sync@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.1.tgz" + }, + "pako": { + "version": "0.2.8", + "from": "pako@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" + }, + "parse-glob": { + "version": "3.0.4", + "from": "parse-glob@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz" + }, + "parse-json": { + "version": "2.2.0", + "from": "parse-json@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + }, + "parsejson": { + "version": "0.0.1", + "from": "parsejson@0.0.1", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.1.tgz" + }, + "parseqs": { + "version": "0.0.2", + "from": "parseqs@0.0.2", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.2.tgz" + }, + "parseuri": { + "version": "0.0.2", + "from": "parseuri@0.0.2", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.2.tgz" + }, + "parseurl": { + "version": "1.3.0", + "from": "parseurl@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz" + }, + "path-array": { + "version": "1.0.0", + "from": "path-array@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-array/-/path-array-1.0.0.tgz" + }, + "path-browserify": { + "version": "0.0.0", + "from": "path-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" + }, + "path-exists": { + "version": "1.0.0", + "from": "path-exists@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-1.0.0.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" + }, + "path-is-inside": { + "version": "1.0.1", + "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", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz" + }, + "path-type": { + "version": "1.0.0", + "from": "path-type@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.0.0.tgz", "dependencies": { - "async": { - "version": "1.4.2", - "from": "async@>=1.3.0 <2.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" - }, - "clone": { - "version": "1.0.2", - "from": "clone@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz" - }, - "enhanced-resolve": { - "version": "0.9.0", - "from": "enhanced-resolve@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.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" - } - } + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + } + } + }, + "pathval": { + "version": "0.1.1", + "from": "pathval@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-0.1.1.tgz" + }, + "pbkdf2-compat": { + "version": "2.0.1", + "from": "pbkdf2-compat@2.0.1", + "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" + }, + "pify": { + "version": "2.2.0", + "from": "pify@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.2.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" + }, + "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" + }, + "pkginfo": { + "version": "0.3.0", + "from": "pkginfo@>=0.0.0 <1.0.0", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz" + }, + "postcss": { + "version": "5.0.10", + "from": "postcss@>=5.0.6 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.0.10.tgz", + "dependencies": { + "source-map": { + "version": "0.5.1", + "from": "source-map@>=0.5.1 <0.6.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.1.tgz" }, - "esprima": { - "version": "2.6.0", - "from": "esprima@>=2.5.0 <3.0.0", + "supports-color": { + "version": "3.1.2", + "from": "supports-color@>=3.1.2 <4.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.2.tgz" + } + } + }, + "postcss-calc": { + "version": "5.0.0", + "from": "postcss-calc@>=5.0.0 <6.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.0.0.tgz" + }, + "postcss-colormin": { + "version": "2.1.7", + "from": "postcss-colormin@>=2.1.5 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.1.7.tgz" + }, + "postcss-convert-values": { + "version": "2.3.4", + "from": "postcss-convert-values@>=2.3.3 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.3.4.tgz" + }, + "postcss-discard-comments": { + "version": "2.0.1", + "from": "postcss-discard-comments@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.1.tgz" + }, + "postcss-discard-duplicates": { + "version": "2.0.0", + "from": "postcss-discard-duplicates@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.0.0.tgz" + }, + "postcss-discard-empty": { + "version": "2.0.0", + "from": "postcss-discard-empty@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.0.0.tgz" + }, + "postcss-discard-unused": { + "version": "2.1.0", + "from": "postcss-discard-unused@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.1.0.tgz" + }, + "postcss-filter-plugins": { + "version": "2.0.0", + "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-merge-idents": { + "version": "2.1.1", + "from": "postcss-merge-idents@>=2.1.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.1.tgz" + }, + "postcss-merge-longhand": { + "version": "2.0.1", + "from": "postcss-merge-longhand@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.1.tgz" + }, + "postcss-merge-rules": { + "version": "2.0.0", + "from": "postcss-merge-rules@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.0.0.tgz" + }, + "postcss-message-helpers": { + "version": "2.0.0", + "from": "postcss-message-helpers@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz" + }, + "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" + } + } + }, + "postcss-minify-params": { + "version": "1.0.4", + "from": "postcss-minify-params@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.0.4.tgz" + }, + "postcss-minify-selectors": { + "version": "2.0.1", + "from": "postcss-minify-selectors@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.0.1.tgz" + }, + "postcss-modules-extract-imports": { + "version": "1.0.0-beta2", + "from": "postcss-modules-extract-imports@1.0.0-beta2", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.0-beta2.tgz" + }, + "postcss-modules-local-by-default": { + "version": "1.0.0-beta1", + "from": "postcss-modules-local-by-default@1.0.0-beta1", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.0.0-beta1.tgz" + }, + "postcss-modules-scope": { + "version": "1.0.0-beta2", + "from": "postcss-modules-scope@1.0.0-beta2", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.0.0-beta2.tgz" + }, + "postcss-normalize-charset": { + "version": "1.1.0", + "from": "postcss-normalize-charset@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.0.tgz" + }, + "postcss-normalize-url": { + "version": "3.0.3", + "from": "postcss-normalize-url@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.3.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" + } + } + }, + "postcss-ordered-values": { + "version": "2.0.2", + "from": "postcss-ordered-values@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.0.2.tgz" + }, + "postcss-reduce-idents": { + "version": "2.2.1", + "from": "postcss-reduce-idents@>=2.2.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.2.1.tgz" + }, + "postcss-reduce-transforms": { + "version": "1.0.3", + "from": "postcss-reduce-transforms@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.3.tgz" + }, + "postcss-selector-parser": { + "version": "1.3.0", + "from": "postcss-selector-parser@>=1.1.4 <2.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-1.3.0.tgz" + }, + "postcss-svgo": { + "version": "2.0.4", + "from": "postcss-svgo@>=2.0.4 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.0.4.tgz" + }, + "postcss-unique-selectors": { + "version": "2.0.1", + "from": "postcss-unique-selectors@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.1.tgz" + }, + "postcss-value-parser": { + "version": "3.0.3", + "from": "postcss-value-parser@>=3.0.3 <4.0.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.0.3.tgz" + }, + "postcss-zindex": { + "version": "2.0.0", + "from": "postcss-zindex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.0.0.tgz" + }, + "prelude-ls": { + "version": "1.1.2", + "from": "prelude-ls@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz" + }, + "prepend-http": { + "version": "1.0.3", + "from": "prepend-http@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.3.tgz" + }, + "preserve": { + "version": "0.2.0", + "from": "preserve@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" + }, + "private": { + "version": "0.1.6", + "from": "private@>=0.1.6 <0.2.0", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.6.tgz" + }, + "process": { + "version": "0.11.2", + "from": "process@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" + }, + "process-nextick-args": { + "version": "1.0.3", + "from": "process-nextick-args@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" + }, + "promise": { + "version": "7.0.4", + "from": "promise@>=7.0.3 <8.0.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.0.4.tgz" + }, + "prompt": { + "version": "0.2.14", + "from": "prompt@>=0.2.14 <0.3.0", + "resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz" + }, + "proto-list": { + "version": "1.2.4", + "from": "proto-list@>=1.2.1 <1.3.0", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" + }, + "proxy-addr": { + "version": "1.0.8", + "from": "proxy-addr@>=1.0.8 <1.1.0", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.8.tgz" + }, + "punycode": { + "version": "1.3.2", + "from": "punycode@>=1.2.4 <2.0.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + }, + "q": { + "version": "1.1.2", + "from": "q@>=1.1.2 <1.2.0", + "resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz" + }, + "qs": { + "version": "5.1.0", + "from": "qs@5.1.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" + }, + "query-string": { + "version": "2.4.2", + "from": "query-string@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-2.4.2.tgz" + }, + "querystring": { + "version": "0.2.0", + "from": "querystring@0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + }, + "querystring-es3": { + "version": "0.2.1", + "from": "querystring-es3@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + }, + "randomatic": { + "version": "1.1.0", + "from": "randomatic@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz", + "dependencies": { + "kind-of": { + "version": "1.1.0", + "from": "kind-of@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" + } + } + }, + "range-parser": { + "version": "1.0.2", + "from": "range-parser@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.0.2.tgz" + }, + "raw-body": { + "version": "2.1.4", + "from": "raw-body@>=2.1.4 <2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.4.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" + } + } + }, + "react": { + "version": "0.14.0", + "from": "react@>=0.14.0 <0.15.0", + "resolved": "https://registry.npmjs.org/react/-/react-0.14.0.tgz" + }, + "react-bootstrap": { + "version": "0.27.1", + "from": "react-bootstrap@>=0.27.0 <0.28.0", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-0.27.1.tgz" + }, + "react-deep-force-update": { + "version": "1.0.0", + "from": "react-deep-force-update@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/react-deep-force-update/-/react-deep-force-update-1.0.0.tgz" + }, + "react-dom": { + "version": "0.14.0", + "from": "react-dom@>=0.14.0 <0.15.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-0.14.0.tgz" + }, + "react-overlays": { + "version": "0.5.0", + "from": "react-overlays@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-0.5.0.tgz", + "dependencies": { + "react-prop-types": { + "version": "0.2.2", + "from": "react-prop-types@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.2.2.tgz" + } + } + }, + "react-prop-types": { + "version": "0.3.0", + "from": "react-prop-types@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/react-prop-types/-/react-prop-types-0.3.0.tgz" + }, + "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" + }, + "react-redux": { + "version": "3.1.0", + "from": "react-redux@>=3.1.0 <4.0.0", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-3.1.0.tgz" + }, + "read": { + "version": "1.0.7", + "from": "read@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz" + }, + "read-json-sync": { + "version": "1.1.0", + "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" + }, + "read-pkg": { + "version": "1.1.0", + "from": "read-pkg@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + }, + "read-pkg-up": { + "version": "1.0.1", + "from": "read-pkg-up@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + }, + "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" + }, + "readdirp": { + "version": "2.0.0", + "from": "readdirp@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.0.0.tgz", + "dependencies": { + "graceful-fs": { + "version": "4.1.2", + "from": "graceful-fs@>=4.1.2 <5.0.0", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" + }, + "readable-stream": { + "version": "2.0.2", + "from": "readable-stream@>=2.0.2 <3.0.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz" + } + } + }, + "readline2": { + "version": "0.1.1", + "from": "readline2@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-0.1.1.tgz", + "dependencies": { + "ansi-regex": { + "version": "1.1.1", + "from": "ansi-regex@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz" + }, + "strip-ansi": { + "version": "2.0.1", + "from": "strip-ansi@>=2.0.1 <3.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz" + } + } + }, + "recast": { + "version": "0.10.24", + "from": "recast@0.10.24", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.24.tgz" + }, + "redent": { + "version": "1.0.0", + "from": "redent@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" + }, + "reduce-css-calc": { + "version": "1.2.0", + "from": "reduce-css-calc@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.2.0.tgz", + "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" + } + } + }, + "reduce-function-call": { + "version": "1.0.1", + "from": "reduce-function-call@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.1.tgz", + "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" + } + } + }, + "redux": { + "version": "3.0.2", + "from": "redux@>=3.0.2 <4.0.0", + "resolved": "https://registry.npmjs.org/redux/-/redux-3.0.2.tgz" + }, + "redux-promise": { + "version": "0.5.0", + "from": "redux-promise@>=0.5.0 <0.6.0", + "resolved": "https://registry.npmjs.org/redux-promise/-/redux-promise-0.5.0.tgz" + }, + "redux-thunk": { + "version": "1.0.0", + "from": "redux-thunk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-1.0.0.tgz" + }, + "regenerate": { + "version": "1.2.1", + "from": "regenerate@>=1.2.1 <2.0.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.2.1.tgz" + }, + "regenerator": { + "version": "0.8.35", + "from": "regenerator@0.8.35", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.35.tgz" + }, + "regex-cache": { + "version": "0.4.2", + "from": "regex-cache@>=0.4.2 <0.5.0", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz" + }, + "regexpu": { + "version": "1.3.0", + "from": "regexpu@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/regexpu/-/regexpu-1.3.0.tgz", + "dependencies": { + "esprima": { + "version": "2.6.0", + "from": "esprima@>=2.6.0 <3.0.0", "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.6.0.tgz" + } + } + }, + "regjsgen": { + "version": "0.2.0", + "from": "regjsgen@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz" + }, + "regjsparser": { + "version": "0.1.5", + "from": "regjsparser@>=0.1.4 <0.2.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + }, + "repeat-element": { + "version": "1.1.2", + "from": "repeat-element@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" + }, + "repeat-string": { + "version": "1.5.2", + "from": "repeat-string@>=1.5.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" + }, + "repeating": { + "version": "1.1.3", + "from": "repeating@>=1.1.2 <2.0.0", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz" + }, + "request": { + "version": "2.65.0", + "from": "request@>=2.61.0 <3.0.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.65.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" + } + } + }, + "requires-port": { + "version": "0.0.1", + "from": "requires-port@>=0.0.0 <1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-0.0.1.tgz" + }, + "reserved-words": { + "version": "0.1.1", + "from": "reserved-words@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.1.tgz" + }, + "resolve": { + "version": "1.1.6", + "from": "resolve@>=1.1.6 <2.0.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.6.tgz" + }, + "revalidator": { + "version": "0.1.8", + "from": "revalidator@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz" + }, + "right-align": { + "version": "0.1.3", + "from": "right-align@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz" + }, + "rimraf": { + "version": "2.4.3", + "from": "rimraf@>=2.2.8 <3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.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" + } + } + }, + "ripemd160": { + "version": "0.2.0", + "from": "ripemd160@0.2.0", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" + }, + "run-async": { + "version": "0.1.0", + "from": "run-async@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz" + }, + "rx-lite": { + "version": "2.5.2", + "from": "rx-lite@>=2.5.2 <3.0.0", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-2.5.2.tgz" + }, + "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", + "dependencies": { + "glob": { + "version": "5.0.15", + "from": "glob@>=5.0.5 <6.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz" + } + } + }, + "sax": { + "version": "1.1.3", + "from": "sax@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.3.tgz" + }, + "semver": { + "version": "5.0.3", + "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.0.3.tgz" + }, + "send": { + "version": "0.13.0", + "from": "send@0.13.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.13.0.tgz", + "dependencies": { + "depd": { + "version": "1.0.1", + "from": "depd@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.0.1.tgz" + } + } + }, + "serve-index": { + "version": "1.7.2", + "from": "serve-index@>=1.7.2 <2.0.0", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.7.2.tgz" + }, + "serve-static": { + "version": "1.10.0", + "from": "serve-static@>=1.10.0 <1.11.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.10.0.tgz" + }, + "sha.js": { + "version": "2.2.6", + "from": "sha.js@2.2.6", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" + }, + "shebang-regex": { + "version": "1.0.0", + "from": "shebang-regex@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + }, + "shelljs": { + "version": "0.3.0", + "from": "shelljs@>=0.3.0 <0.4.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz" + }, + "sigmund": { + "version": "1.0.1", + "from": "sigmund@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" + }, + "simple-fmt": { + "version": "0.1.0", + "from": "simple-fmt@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz" + }, + "simple-is": { + "version": "0.2.0", + "from": "simple-is@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz" + }, + "slash": { + "version": "1.0.0", + "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", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + }, + "socket.io": { + "version": "1.3.7", + "from": "socket.io@>=1.3.6 <2.0.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.3.7.tgz", + "dependencies": { + "debug": { + "version": "2.1.0", + "from": "debug@2.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.1.0.tgz" }, - "interpret": { - "version": "0.6.6", - "from": "interpret@>=0.6.4 <0.7.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-0.6.6.tgz" + "ms": { + "version": "0.6.2", + "from": "ms@0.6.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" + } + } + }, + "socket.io-adapter": { + "version": "0.3.1", + "from": "socket.io-adapter@0.3.1", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.3.1.tgz", + "dependencies": { + "debug": { + "version": "1.0.2", + "from": "debug@1.0.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-1.0.2.tgz" }, - "memory-fs": { - "version": "0.2.0", - "from": "memory-fs@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz" + "ms": { + "version": "0.6.2", + "from": "ms@0.6.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz" }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@>=0.5.0 <0.6.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "socket.io-parser": { + "version": "2.2.2", + "from": "socket.io-parser@2.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.2.tgz", "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "node-libs-browser": { - "version": "0.5.3", - "from": "node-libs-browser@>=0.4.0 <=0.6.0", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-0.5.3.tgz", - "dependencies": { - "assert": { - "version": "1.3.0", - "from": "assert@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.3.0.tgz" - }, - "browserify-zlib": { - "version": "0.1.4", - "from": "browserify-zlib@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "dependencies": { - "pako": { - "version": "0.2.8", - "from": "pako@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.8.tgz" - } - } - }, - "buffer": { - "version": "3.5.1", - "from": "buffer@>=3.0.3 <4.0.0", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-3.5.1.tgz", - "dependencies": { - "base64-js": { - "version": "0.0.8", - "from": "base64-js@0.0.8", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-0.0.8.tgz" - }, - "ieee754": { - "version": "1.1.6", - "from": "ieee754@>=1.1.4 <2.0.0", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.6.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" - } - } - }, - "console-browserify": { - "version": "1.1.0", - "from": "console-browserify@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "dependencies": { - "date-now": { - "version": "0.1.4", - "from": "date-now@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" - } - } - }, - "constants-browserify": { - "version": "0.0.1", - "from": "constants-browserify@0.0.1", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-0.0.1.tgz" - }, - "crypto-browserify": { - "version": "3.2.8", - "from": "crypto-browserify@>=3.2.6 <3.3.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.2.8.tgz", - "dependencies": { - "pbkdf2-compat": { - "version": "2.0.1", - "from": "pbkdf2-compat@2.0.1", - "resolved": "https://registry.npmjs.org/pbkdf2-compat/-/pbkdf2-compat-2.0.1.tgz" - }, - "ripemd160": { - "version": "0.2.0", - "from": "ripemd160@0.2.0", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-0.2.0.tgz" - }, - "sha.js": { - "version": "2.2.6", - "from": "sha.js@2.2.6", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.2.6.tgz" - } - } - }, - "domain-browser": { - "version": "1.1.4", - "from": "domain-browser@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.4.tgz" - }, - "events": { - "version": "1.1.0", - "from": "events@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.0.tgz" - }, - "http-browserify": { - "version": "1.7.0", - "from": "http-browserify@>=1.3.2 <2.0.0", - "resolved": "https://registry.npmjs.org/http-browserify/-/http-browserify-1.7.0.tgz", - "dependencies": { - "Base64": { - "version": "0.2.1", - "from": "Base64@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/Base64/-/Base64-0.2.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "https-browserify": { - "version": "0.0.0", - "from": "https-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.0.tgz" - }, - "os-browserify": { - "version": "0.1.2", - "from": "os-browserify@>=0.1.2 <0.2.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.1.2.tgz" - }, - "path-browserify": { - "version": "0.0.0", - "from": "path-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz" - }, - "process": { - "version": "0.11.2", - "from": "process@>=0.11.0 <0.12.0", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz" - }, - "punycode": { - "version": "1.3.2", - "from": "punycode@>=1.2.4 <2.0.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - }, - "querystring-es3": { - "version": "0.2.1", - "from": "querystring-es3@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - }, - "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", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "stream-browserify": { - "version": "1.0.0", - "from": "stream-browserify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.25 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "timers-browserify": { - "version": "1.4.1", - "from": "timers-browserify@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" - }, - "tty-browserify": { - "version": "0.0.0", - "from": "tty-browserify@0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.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", - "dependencies": { - "querystring": { - "version": "0.2.0", - "from": "querystring@0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - } - } - }, - "util": { - "version": "0.10.3", - "from": "util@>=0.10.3 <0.11.0", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "dependencies": { - "inherits": { - "version": "2.0.1", - "from": "inherits@2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "vm-browserify": { - "version": "0.0.4", - "from": "vm-browserify@0.0.4", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", - "dependencies": { - "indexof": { - "version": "0.0.1", - "from": "indexof@0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - } - } + "debug": { + "version": "0.7.4", + "from": "debug@0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" } } + } + } + }, + "socket.io-client": { + "version": "1.3.7", + "from": "socket.io-client@>=1.3.6 <2.0.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.3.7.tgz", + "dependencies": { + "debug": { + "version": "0.7.4", + "from": "debug@0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + } + } + }, + "socket.io-parser": { + "version": "2.2.4", + "from": "socket.io-parser@2.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.2.4.tgz", + "dependencies": { + "debug": { + "version": "0.7.4", + "from": "debug@0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" + } + } + }, + "sort-keys": { + "version": "1.1.1", + "from": "sort-keys@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.1.tgz" + }, + "source-list-map": { + "version": "0.1.5", + "from": "source-list-map@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.tgz" + }, + "source-map": { + "version": "0.4.4", + "from": "source-map@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" + }, + "source-map-support": { + "version": "0.2.10", + "from": "source-map-support@>=0.2.10 <0.3.0", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "dependencies": { + "source-map": { + "version": "0.1.32", + "from": "source-map@0.1.32", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz" + } + } + }, + "spawn-sync": { + "version": "1.0.13", + "from": "spawn-sync@>=1.0.13 <2.0.0", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.13.tgz" + }, + "spdx-correct": { + "version": "1.0.1", + "from": "spdx-correct@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.1.tgz" + }, + "spdx-exceptions": { + "version": "1.0.3", + "from": "spdx-exceptions@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-1.0.3.tgz" + }, + "spdx-expression-parse": { + "version": "1.0.0", + "from": "spdx-expression-parse@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.0.tgz" + }, + "spdx-license-ids": { + "version": "1.0.2", + "from": "spdx-license-ids@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.0.2.tgz" + }, + "sprintf-js": { + "version": "1.0.3", + "from": "sprintf-js@>=1.0.2 <1.1.0", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + }, + "stable": { + "version": "0.1.5", + "from": "stable@>=0.1.3 <0.2.0", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.5.tgz" + }, + "stack-trace": { + "version": "0.0.9", + "from": "stack-trace@>=0.0.0 <0.1.0", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz" + }, + "statuses": { + "version": "1.2.1", + "from": "statuses@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz" + }, + "stream-browserify": { + "version": "1.0.0", + "from": "stream-browserify@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-1.0.0.tgz" + }, + "stream-cache": { + "version": "0.0.2", + "from": "stream-cache@>=0.0.1 <0.1.0", + "resolved": "https://registry.npmjs.org/stream-cache/-/stream-cache-0.0.2.tgz" + }, + "strict-uri-encode": { + "version": "1.0.2", + "from": "strict-uri-encode@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.0.2.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.25 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "stringmap": { + "version": "0.2.2", + "from": "stringmap@>=0.2.2 <0.3.0", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz" + }, + "stringset": { + "version": "0.2.1", + "from": "stringset@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "stringstream@>=0.0.4 <0.1.0", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz" + }, + "strip-bom": { + "version": "2.0.0", + "from": "strip-bom@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + }, + "strip-indent": { + "version": "1.0.1", + "from": "strip-indent@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + }, + "strip-json-comments": { + "version": "1.0.4", + "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" + }, + "success-symbol": { + "version": "0.1.0", + "from": "success-symbol@>=0.1.0 <0.2.0", + "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + }, + "svgo": { + "version": "0.5.6", + "from": "svgo@>=0.5.6 <0.6.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.5.6.tgz" + }, + "tapable": { + "version": "0.1.9", + "from": "tapable@>=0.1.8 <0.2.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" + }, + "tar": { + "version": "1.0.3", + "from": "tar@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-1.0.3.tgz" + }, + "text-table": { + "version": "0.2.0", + "from": "text-table@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + }, + "through": { + "version": "2.3.8", + "from": "through@>=2.3.6 <2.4.0", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + }, + "timers-browserify": { + "version": "1.4.1", + "from": "timers-browserify@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.1.tgz" + }, + "to-array": { + "version": "0.1.3", + "from": "to-array@0.1.3", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.3.tgz" + }, + "to-double-quotes": { + "version": "1.0.2", + "from": "to-double-quotes@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/to-double-quotes/-/to-double-quotes-1.0.2.tgz", + "dependencies": { + "get-stdin": { + "version": "3.0.2", + "from": "get-stdin@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz" + } + } + }, + "to-fast-properties": { + "version": "1.0.1", + "from": "to-fast-properties@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.1.tgz" + }, + "to-single-quotes": { + "version": "1.0.4", + "from": "to-single-quotes@>=1.0.3 <2.0.0", + "resolved": "https://registry.npmjs.org/to-single-quotes/-/to-single-quotes-1.0.4.tgz", + "dependencies": { + "get-stdin": { + "version": "3.0.2", + "from": "get-stdin@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz" + } + } + }, + "tough-cookie": { + "version": "2.2.0", + "from": "tough-cookie@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.0.tgz" + }, + "transformers": { + "version": "2.1.0", + "from": "transformers@2.1.0", + "resolved": "https://registry.npmjs.org/transformers/-/transformers-2.1.0.tgz", + "dependencies": { + "is-promise": { + "version": "1.0.1", + "from": "is-promise@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-1.0.1.tgz" }, "optimist": { - "version": "0.6.1", - "from": "optimist@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "from": "wordwrap@>=0.0.2 <0.1.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" - }, - "minimist": { - "version": "0.0.10", - "from": "minimist@>=0.0.1 <0.1.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" - } - } + "version": "0.3.7", + "from": "optimist@>=0.3.5 <0.4.0", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz" }, - "supports-color": { - "version": "3.1.1", - "from": "supports-color@>=3.1.0 <4.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.1.1.tgz", - "dependencies": { - "has-flag": { - "version": "1.0.0", - "from": "has-flag@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" - } - } + "promise": { + "version": "2.0.0", + "from": "promise@>=2.0.0 <2.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-2.0.0.tgz" }, - "tapable": { - "version": "0.1.9", - "from": "tapable@>=0.1.8 <0.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.9.tgz" + "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" }, "uglify-js": { - "version": "2.4.24", - "from": "uglify-js@>=2.4.24 <2.5.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", - "dependencies": { - "async": { - "version": "0.2.10", - "from": "async@>=0.2.6 <0.3.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" - }, - "source-map": { - "version": "0.1.34", - "from": "source-map@0.1.34", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "from": "uglify-to-browserify@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" - }, - "yargs": { - "version": "3.5.4", - "from": "yargs@>=3.5.4 <3.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz", - "dependencies": { - "camelcase": { - "version": "1.2.1", - "from": "camelcase@>=1.0.2 <2.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz" - }, - "decamelize": { - "version": "1.0.0", - "from": "decamelize@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.0.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" - } - } - } - } + "version": "2.2.5", + "from": "uglify-js@>=2.2.5 <2.3.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.2.5.tgz" + } + } + }, + "trim-newlines": { + "version": "1.0.0", + "from": "trim-newlines@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + }, + "trim-right": { + "version": "1.0.1", + "from": "trim-right@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + }, + "try-resolve": { + "version": "1.0.1", + "from": "try-resolve@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/try-resolve/-/try-resolve-1.0.1.tgz" + }, + "tryit": { + "version": "1.0.1", + "from": "tryit@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/tryit/-/tryit-1.0.1.tgz" + }, + "tryor": { + "version": "0.1.2", + "from": "tryor@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz" + }, + "tty-browserify": { + "version": "0.0.0", + "from": "tty-browserify@0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + }, + "tunnel-agent": { + "version": "0.4.1", + "from": "tunnel-agent@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" + }, + "type-check": { + "version": "0.3.1", + "from": "type-check@>=0.3.1 <0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.1.tgz" + }, + "type-is": { + "version": "1.6.9", + "from": "type-is@>=1.6.9 <1.7.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.9.tgz" + }, + "typedarray": { + "version": "0.0.6", + "from": "typedarray@>=0.0.5 <0.1.0", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" + }, + "ua-parser-js": { + "version": "0.7.9", + "from": "ua-parser-js@>=0.7.9 <0.8.0", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.9.tgz" + }, + "uglify-js": { + "version": "2.4.24", + "from": "uglify-js@>=2.4.24 <2.5.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.4.24.tgz", + "dependencies": { + "async": { + "version": "0.2.10", + "from": "async@>=0.2.6 <0.3.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz" }, - "watchpack": { - "version": "0.2.8", - "from": "watchpack@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", - "dependencies": { - "async": { - "version": "0.9.2", - "from": "async@>=0.9.0 <0.10.0", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" - }, - "chokidar": { - "version": "1.2.0", - "from": "chokidar@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.2.0.tgz", - "dependencies": { - "anymatch": { - "version": "1.3.0", - "from": "anymatch@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", - "dependencies": { - "micromatch": { - "version": "2.2.0", - "from": "micromatch@>=2.1.5 <3.0.0", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.2.0.tgz", - "dependencies": { - "arr-diff": { - "version": "1.1.0", - "from": "arr-diff@>=1.0.1 <2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-1.1.0.tgz", - "dependencies": { - "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-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-unique": { - "version": "0.2.1", - "from": "array-unique@>=0.2.1 <0.3.0", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz" - }, - "braces": { - "version": "1.8.1", - "from": "braces@>=1.8.0 <2.0.0", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.1.tgz", - "dependencies": { - "expand-range": { - "version": "1.8.1", - "from": "expand-range@>=1.8.1 <2.0.0", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.1.tgz", - "dependencies": { - "fill-range": { - "version": "2.2.2", - "from": "fill-range@>=2.1.0 <3.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.2.tgz", - "dependencies": { - "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" - }, - "isobject": { - "version": "1.0.2", - "from": "isobject@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-1.0.2.tgz" - }, - "randomatic": { - "version": "1.1.0", - "from": "randomatic@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.0.tgz" - }, - "repeat-string": { - "version": "1.5.2", - "from": "repeat-string@>=1.5.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.5.2.tgz" - } - } - } - } - }, - "lazy-cache": { - "version": "0.2.3", - "from": "lazy-cache@>=0.2.3 <0.3.0", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.3.tgz" - }, - "preserve": { - "version": "0.2.0", - "from": "preserve@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz" - }, - "repeat-element": { - "version": "1.1.2", - "from": "repeat-element@>=1.1.2 <2.0.0", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" - } - } - }, - "expand-brackets": { - "version": "0.1.4", - "from": "expand-brackets@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.4.tgz" - }, - "extglob": { - "version": "0.3.1", - "from": "extglob@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.1.tgz", - "dependencies": { - "ansi-green": { - "version": "0.1.1", - "from": "ansi-green@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/ansi-green/-/ansi-green-0.1.1.tgz", - "dependencies": { - "ansi-wrap": { - "version": "0.1.0", - "from": "ansi-wrap@0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz" - } - } - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "success-symbol": { - "version": "0.1.0", - "from": "success-symbol@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/success-symbol/-/success-symbol-0.1.0.tgz" - } - } - }, - "filename-regex": { - "version": "2.0.0", - "from": "filename-regex@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.0.tgz" - }, - "is-glob": { - "version": "1.1.3", - "from": "is-glob@>=1.1.3 <2.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-1.1.3.tgz" - }, - "kind-of": { - "version": "1.1.0", - "from": "kind-of@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-1.1.0.tgz" - }, - "object.omit": { - "version": "1.1.0", - "from": "object.omit@>=1.1.0 <2.0.0", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-1.1.0.tgz", - "dependencies": { - "for-own": { - "version": "0.1.3", - "from": "for-own@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.3.tgz", - "dependencies": { - "for-in": { - "version": "0.1.4", - "from": "for-in@>=0.1.4 <0.2.0", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.4.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" - } - } - }, - "parse-glob": { - "version": "3.0.4", - "from": "parse-glob@>=3.0.1 <4.0.0", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "dependencies": { - "glob-base": { - "version": "0.3.0", - "from": "glob-base@>=0.3.0 <0.4.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz" - }, - "is-dotfile": { - "version": "1.0.1", - "from": "is-dotfile@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.1.tgz" - }, - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" - } - } - }, - "regex-cache": { - "version": "0.4.2", - "from": "regex-cache@>=0.4.2 <0.5.0", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.2.tgz", - "dependencies": { - "is-equal-shallow": { - "version": "0.1.3", - "from": "is-equal-shallow@>=0.1.1 <0.2.0", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" - }, - "is-primitive": { - "version": "2.0.0", - "from": "is-primitive@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" - } - } - } - } - } - } - }, - "arrify": { - "version": "1.0.0", - "from": "arrify@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.0.tgz" - }, - "async-each": { - "version": "0.1.6", - "from": "async-each@>=0.1.5 <0.2.0", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz" - }, - "glob-parent": { - "version": "2.0.0", - "from": "glob-parent@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz" - }, - "is-binary-path": { - "version": "1.0.1", - "from": "is-binary-path@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "dependencies": { - "binary-extensions": { - "version": "1.3.1", - "from": "binary-extensions@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.3.1.tgz" - } - } - }, - "is-glob": { - "version": "2.0.1", - "from": "is-glob@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "dependencies": { - "is-extglob": { - "version": "1.0.0", - "from": "is-extglob@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" - } - } - }, - "lodash.flatten": { - "version": "3.0.2", - "from": "lodash.flatten@>=3.0.2 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-3.0.2.tgz", - "dependencies": { - "lodash._baseflatten": { - "version": "3.1.4", - "from": "lodash._baseflatten@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._baseflatten/-/lodash._baseflatten-3.1.4.tgz", - "dependencies": { - "lodash.isarguments": { - "version": "3.0.4", - "from": "lodash.isarguments@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.4.tgz" - }, - "lodash.isarray": { - "version": "3.0.4", - "from": "lodash.isarray@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" - } - } - }, - "lodash._isiterateecall": { - "version": "3.0.9", - "from": "lodash._isiterateecall@>=3.0.0 <4.0.0", - "resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.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" - }, - "readdirp": { - "version": "2.0.0", - "from": "readdirp@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.0.0.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.2", - "from": "graceful-fs@>=4.1.2 <5.0.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" - }, - "minimatch": { - "version": "2.0.10", - "from": "minimatch@>=2.0.10 <3.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", - "dependencies": { - "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", - "dependencies": { - "balanced-match": { - "version": "0.2.0", - "from": "balanced-match@>=0.2.0 <0.3.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" - } - } - } - } - }, - "readable-stream": { - "version": "2.0.2", - "from": "readable-stream@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@>=2.0.1 <2.1.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "process-nextick-args": { - "version": "1.0.3", - "from": "process-nextick-args@>=1.0.0 <1.1.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@>=0.10.0 <0.11.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.2", - "from": "util-deprecate@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - } - } - } - } - }, - "fsevents": { - "version": "1.0.2", - "from": "fsevents@>=1.0.0 <2.0.0", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.2.tgz", - "dependencies": { - "nan": { - "version": "2.1.0", - "from": "nan@>=2.0.2 <3.0.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.1.0.tgz" - }, - "node-pre-gyp": { - "version": "0.6.12", - "from": "node-pre-gyp@0.6.12", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.12.tgz", - "dependencies": { - "nopt": { - "version": "3.0.4", - "from": "nopt@~3.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.4.tgz", - "dependencies": { - "abbrev": { - "version": "1.0.7", - "from": "abbrev@1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz" - } - } - }, - "npmlog": { - "version": "1.2.1", - "from": "npmlog@~1.2.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-1.2.1.tgz", - "dependencies": { - "ansi": { - "version": "0.3.0", - "from": "ansi@~0.3.0", - "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz" - }, - "are-we-there-yet": { - "version": "1.0.4", - "from": "are-we-there-yet@~1.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.4.tgz", - "dependencies": { - "delegates": { - "version": "0.1.0", - "from": "delegates@^0.1.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz" - }, - "readable-stream": { - "version": "1.1.13", - "from": "readable-stream@^1.1.13", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.13.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - } - } - }, - "gauge": { - "version": "1.2.2", - "from": "gauge@~1.2.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.2.tgz", - "dependencies": { - "has-unicode": { - "version": "1.0.0", - "from": "has-unicode@^1.0.0", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.0.tgz" - }, - "lodash.pad": { - "version": "3.1.1", - "from": "lodash.pad@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.1.tgz", - "dependencies": { - "lodash._basetostring": { - "version": "3.0.1", - "from": "lodash._basetostring@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._createpadding": { - "version": "3.6.1", - "from": "lodash._createpadding@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", - "dependencies": { - "lodash.repeat": { - "version": "3.0.1", - "from": "lodash.repeat@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" - } - } - } - } - }, - "lodash.padleft": { - "version": "3.1.1", - "from": "lodash.padleft@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz", - "dependencies": { - "lodash._basetostring": { - "version": "3.0.1", - "from": "lodash._basetostring@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._createpadding": { - "version": "3.6.1", - "from": "lodash._createpadding@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", - "dependencies": { - "lodash.repeat": { - "version": "3.0.1", - "from": "lodash.repeat@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" - } - } - } - } - }, - "lodash.padright": { - "version": "3.1.1", - "from": "lodash.padright@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz", - "dependencies": { - "lodash._basetostring": { - "version": "3.0.1", - "from": "lodash._basetostring@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz" - }, - "lodash._createpadding": { - "version": "3.6.1", - "from": "lodash._createpadding@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz", - "dependencies": { - "lodash.repeat": { - "version": "3.0.1", - "from": "lodash.repeat@^3.0.0", - "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz" - } - } - } - } - } - } - } - } - }, - "request": { - "version": "2.64.0", - "from": "request@2.x", - "resolved": "https://registry.npmjs.org/request/-/request-2.64.0.tgz", - "dependencies": { - "bl": { - "version": "1.0.0", - "from": "bl@~1.0.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz", - "dependencies": { - "readable-stream": { - "version": "2.0.2", - "from": "readable-stream@~2.0.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.2.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@~2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "process-nextick-args": { - "version": "1.0.3", - "from": "process-nextick-args@~1.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.3.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "util-deprecate": { - "version": "1.0.1", - "from": "util-deprecate@~1.0.1", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.1.tgz" - } - } - } - } - }, - "caseless": { - "version": "0.11.0", - "from": "caseless@~0.11.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz" - }, - "extend": { - "version": "3.0.0", - "from": "extend@~3.0.0", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" - }, - "forever-agent": { - "version": "0.6.1", - "from": "forever-agent@~0.6.0", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - }, - "form-data": { - "version": "1.0.0-rc3", - "from": "form-data@~1.0.0-rc1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz", - "dependencies": { - "async": { - "version": "1.4.2", - "from": "async@^1.4.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.4.2.tgz" - } - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "json-stringify-safe@~5.0.0", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime-types": { - "version": "2.1.7", - "from": "mime-types@~2.1.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.7.tgz", - "dependencies": { - "mime-db": { - "version": "1.19.0", - "from": "mime-db@~1.19.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.19.0.tgz" - } - } - }, - "node-uuid": { - "version": "1.4.3", - "from": "node-uuid@~1.4.0", - "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.3.tgz" - }, - "qs": { - "version": "5.1.0", - "from": "qs@~5.1.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz" - }, - "tunnel-agent": { - "version": "0.4.1", - "from": "tunnel-agent@~0.4.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" - }, - "tough-cookie": { - "version": "2.1.0", - "from": "tough-cookie@>=0.12.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.1.0.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", - "dependencies": { - "assert-plus": { - "version": "0.1.5", - "from": "assert-plus@^0.1.5", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" - }, - "asn1": { - "version": "0.1.11", - "from": "asn1@0.1.11", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" - }, - "ctype": { - "version": "0.5.3", - "from": "ctype@0.5.3", - "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" - } - } - }, - "oauth-sign": { - "version": "0.8.0", - "from": "oauth-sign@~0.8.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" - }, - "hawk": { - "version": "3.1.0", - "from": "hawk@~3.1.0", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.0.tgz", - "dependencies": { - "hoek": { - "version": "2.16.3", - "from": "hoek@2.x.x", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" - }, - "boom": { - "version": "2.9.0", - "from": "boom@^2.8.x", - "resolved": "https://registry.npmjs.org/boom/-/boom-2.9.0.tgz" - }, - "cryptiles": { - "version": "2.0.5", - "from": "cryptiles@2.x.x", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" - }, - "sntp": { - "version": "1.0.9", - "from": "sntp@1.x.x", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" - } - } - }, - "aws-sign2": { - "version": "0.5.0", - "from": "aws-sign2@~0.5.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" - }, - "stringstream": { - "version": "0.0.4", - "from": "stringstream@~0.0.4", - "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" - }, - "combined-stream": { - "version": "1.0.5", - "from": "combined-stream@~1.0.1", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", - "dependencies": { - "delayed-stream": { - "version": "1.0.0", - "from": "delayed-stream@~1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - } - } - }, - "isstream": { - "version": "0.1.2", - "from": "isstream@~0.1.1", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - }, - "har-validator": { - "version": "1.8.0", - "from": "har-validator@^1.6.1", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", - "dependencies": { - "bluebird": { - "version": "2.10.2", - "from": "bluebird@^2.9.30", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" - }, - "chalk": { - "version": "1.1.1", - "from": "chalk@^1.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", - "dependencies": { - "ansi-styles": { - "version": "2.1.0", - "from": "ansi-styles@^2.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" - }, - "escape-string-regexp": { - "version": "1.0.3", - "from": "escape-string-regexp@^1.0.2", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" - }, - "has-ansi": { - "version": "2.0.0", - "from": "has-ansi@^2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@^2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "strip-ansi": { - "version": "3.0.0", - "from": "strip-ansi@^3.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", - "dependencies": { - "ansi-regex": { - "version": "2.0.0", - "from": "ansi-regex@^2.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" - } - } - }, - "supports-color": { - "version": "2.0.0", - "from": "supports-color@^2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - } - } - }, - "commander": { - "version": "2.8.1", - "from": "commander@^2.8.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", - "dependencies": { - "graceful-readlink": { - "version": "1.0.1", - "from": "graceful-readlink@>= 1.0.0", - "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - } - } - }, - "is-my-json-valid": { - "version": "2.12.2", - "from": "is-my-json-valid@^2.12.0", - "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz", - "dependencies": { - "generate-function": { - "version": "2.0.0", - "from": "generate-function@^2.0.0", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" - }, - "generate-object-property": { - "version": "1.2.0", - "from": "generate-object-property@^1.1.0", - "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", - "dependencies": { - "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" - } - } - }, - "jsonpointer": { - "version": "2.0.0", - "from": "jsonpointer@2.0.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" - }, - "xtend": { - "version": "4.0.0", - "from": "xtend@^4.0.0", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" - } - } - } - } - } - } - }, - "semver": { - "version": "5.0.3", - "from": "semver@~5.0.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" - }, - "tar": { - "version": "2.2.1", - "from": "tar@~2.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", - "dependencies": { - "block-stream": { - "version": "0.0.8", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" - }, - "fstream": { - "version": "1.0.8", - "from": "fstream@^1.0.2", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz", - "dependencies": { - "graceful-fs": { - "version": "4.1.2", - "from": "graceful-fs@^4.1.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar-pack": { - "version": "2.0.0", - "from": "tar-pack@~2.0.0", - "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz", - "dependencies": { - "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" - }, - "once": { - "version": "1.1.1", - "from": "once@~1.1.1", - "resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz" - }, - "debug": { - "version": "0.7.4", - "from": "debug@~0.7.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz" - }, - "rimraf": { - "version": "2.2.8", - "from": "rimraf@~2.2.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" - }, - "fstream": { - "version": "0.1.31", - "from": "fstream@~0.1.22", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", - "dependencies": { - "graceful-fs": { - "version": "3.0.8", - "from": "graceful-fs@~3.0.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.8.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@~2.0.0", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "tar": { - "version": "0.1.20", - "from": "tar@~0.1.17", - "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", - "dependencies": { - "block-stream": { - "version": "0.0.8", - "from": "block-stream@*", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@2", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "fstream-ignore": { - "version": "0.0.7", - "from": "fstream-ignore@0.0.7", - "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz", - "dependencies": { - "minimatch": { - "version": "0.2.14", - "from": "minimatch@~0.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", - "dependencies": { - "lru-cache": { - "version": "2.7.0", - "from": "lru-cache@2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" - }, - "sigmund": { - "version": "1.0.1", - "from": "sigmund@~1.0.0", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" - } - } - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@~2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "readable-stream": { - "version": "1.0.33", - "from": "readable-stream@~1.0.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "dependencies": { - "core-util-is": { - "version": "1.0.1", - "from": "core-util-is@~1.0.0", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" - }, - "isarray": { - "version": "0.0.1", - "from": "isarray@0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" - }, - "string_decoder": { - "version": "0.10.31", - "from": "string_decoder@~0.10.x", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" - }, - "inherits": { - "version": "2.0.1", - "from": "inherits@~2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - } - } - }, - "graceful-fs": { - "version": "1.2.3", - "from": "graceful-fs@1.2", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz" - } - } - }, - "mkdirp": { - "version": "0.5.1", - "from": "mkdirp@~0.5.0", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "dependencies": { - "minimist": { - "version": "0.0.8", - "from": "minimist@0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" - } - } - }, - "rc": { - "version": "1.1.2", - "from": "rc@~1.1.0", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.2.tgz", - "dependencies": { - "minimist": { - "version": "1.2.0", - "from": "minimist@^1.1.2", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.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" - }, - "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" - }, - "ini": { - "version": "1.3.4", - "from": "ini@~1.3.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz" - } - } - }, - "rimraf": { - "version": "2.4.3", - "from": "rimraf@~2.4.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", - "dependencies": { - "glob": { - "version": "5.0.15", - "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.0.1", - "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.0", - "from": "balanced-match@^0.2.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.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" - } - } - } - } - }, - "once": { - "version": "1.3.2", - "from": "once@^1.3.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.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" - } - } - } - } - } - } - } - } - } - } - }, - "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" - } - } + "source-map": { + "version": "0.1.34", + "from": "source-map@0.1.34", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.34.tgz" }, - "webpack-core": { - "version": "0.6.7", - "from": "webpack-core@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz", - "dependencies": { - "source-map": { - "version": "0.4.4", - "from": "source-map@>=0.4.1 <0.5.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "dependencies": { - "amdefine": { - "version": "1.0.0", - "from": "amdefine@>=0.0.4", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" - } - } - }, - "source-list-map": { - "version": "0.1.5", - "from": "source-list-map@>=0.1.0 <0.2.0", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.5.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" + }, + "yargs": { + "version": "3.5.4", + "from": "yargs@>=3.5.4 <3.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.5.4.tgz" + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "from": "uglify-to-browserify@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz" + }, + "uid-number": { + "version": "0.0.5", + "from": "uid-number@0.0.5", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.5.tgz" + }, + "ultron": { + "version": "1.0.2", + "from": "ultron@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" + }, + "uncontrollable": { + "version": "3.1.3", + "from": "uncontrollable@>=3.1.1 <4.0.0", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-3.1.3.tgz" + }, + "underscore": { + "version": "1.6.0", + "from": "underscore@>=1.6.0 <1.7.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz" + }, + "uniq": { + "version": "1.0.1", + "from": "uniq@>=1.0.1 <2.0.0", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + }, + "uniqid": { + "version": "1.0.0", + "from": "uniqid@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/uniqid/-/uniqid-1.0.0.tgz" + }, + "uniqs": { + "version": "2.0.0", + "from": "uniqs@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + }, + "unpipe": { + "version": "1.0.0", + "from": "unpipe@1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.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" + }, + "user-home": { + "version": "1.1.1", + "from": "user-home@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + }, + "utf-8-validate": { + "version": "1.2.1", + "from": "utf-8-validate@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.2.1.tgz" + }, + "utf8": { + "version": "2.1.0", + "from": "utf8@2.1.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.0.tgz" + }, + "util": { + "version": "0.10.3", + "from": "util@>=0.10.3 <0.11.0", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + }, + "util-deprecate": { + "version": "1.0.2", + "from": "util-deprecate@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + }, + "utile": { + "version": "0.2.1", + "from": "utile@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz", + "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" } } + }, + "utils-merge": { + "version": "1.0.0", + "from": "utils-merge@1.0.0", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + }, + "validate-npm-package-license": { + "version": "3.0.1", + "from": "validate-npm-package-license@>=3.0.1 <4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + }, + "vary": { + "version": "1.0.1", + "from": "vary@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.0.1.tgz" + }, + "vm-browserify": { + "version": "0.0.4", + "from": "vm-browserify@0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz" + }, + "void-elements": { + "version": "2.0.1", + "from": "void-elements@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" + }, + "vow": { + "version": "0.4.11", + "from": "vow@>=0.4.8 <0.5.0", + "resolved": "https://registry.npmjs.org/vow/-/vow-0.4.11.tgz" + }, + "vow-fs": { + "version": "0.3.4", + "from": "vow-fs@>=0.3.4 <0.4.0", + "resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.4.tgz", + "dependencies": { + "glob": { + "version": "4.5.3", + "from": "glob@>=4.3.1 <5.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz" + } + } + }, + "vow-queue": { + "version": "0.4.2", + "from": "vow-queue@>=0.4.1 <0.5.0", + "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.2.tgz" + }, + "warning": { + "version": "2.1.0", + "from": "warning@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/warning/-/warning-2.1.0.tgz" + }, + "watchpack": { + "version": "0.2.8", + "from": "watchpack@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-0.2.8.tgz", + "dependencies": { + "async": { + "version": "0.9.2", + "from": "async@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + } + } + }, + "webpack": { + "version": "1.12.2", + "from": "webpack@>=1.12.2 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-1.12.2.tgz", + "dependencies": { + "esprima": { + "version": "2.6.0", + "from": "esprima@>=2.5.0 <3.0.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" + } + } + }, + "webpack-core": { + "version": "0.6.7", + "from": "webpack-core@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.7.tgz" + }, + "webpack-dev-middleware": { + "version": "1.2.0", + "from": "webpack-dev-middleware@>=1.2.0 <2.0.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.2.0.tgz" + }, + "whatwg-fetch": { + "version": "0.9.0", + "from": "whatwg-fetch@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz" + }, + "whet.extend": { + "version": "0.9.9", + "from": "whet.extend@>=0.9.9 <0.10.0", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz" + }, + "which": { + "version": "1.2.0", + "from": "which@>=1.1.1 <2.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.0.tgz" + }, + "window-size": { + "version": "0.1.2", + "from": "window-size@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.2.tgz" + }, + "winston": { + "version": "0.8.3", + "from": "winston@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz", + "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" + }, + "colors": { + "version": "0.6.2", + "from": "colors@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz" + } + } + }, + "with": { + "version": "4.0.3", + "from": "with@>=4.0.0 <4.1.0", + "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" + }, + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + }, + "write": { + "version": "0.2.1", + "from": "write@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz" + }, + "ws": { + "version": "0.8.0", + "from": "ws@0.8.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.8.0.tgz" + }, + "xml-escape": { + "version": "1.0.0", + "from": "xml-escape@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/xml-escape/-/xml-escape-1.0.0.tgz" + }, + "xmlbuilder": { + "version": "2.6.5", + "from": "xmlbuilder@>=2.6.1 <3.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.5.tgz" + }, + "xmlhttprequest": { + "version": "1.5.0", + "from": "https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz", + "resolved": "https://github.com/rase-/node-XMLHttpRequest/archive/a6b6f2.tar.gz" + }, + "xtend": { + "version": "4.0.0", + "from": "xtend@>=4.0.0 <5.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.0.tgz" + }, + "y18n": { + "version": "3.2.0", + "from": "y18n@>=3.2.0 <4.0.0", + "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" } } } diff --git a/client/package.json b/client/package.json index bb53f2333..bedf89cda 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,7 @@ "description": "Code from the React Webpack tutorial.", "main": "server.js", "engines": { - "node": "0.12.7" + "node": "4.2.0" }, "repository": { "type": "git", diff --git a/package.json b/package.json index 997f1928b..dbf566f1e 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Code from the React Webpack tutorial.", "main": "server.js", "engines": { - "node": "0.12.7" + "node": "4.2.0" }, "scripts": { "postinstall": "cd client && npm install", From b00f3be2b8e7122139bb045bb5fd8e4b1b6dba9b Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 15 Oct 2015 10:04:33 -1000 Subject: [PATCH 131/548] Add babel-core/polyfill to webpack.client.base --- client/webpack.client.base.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/webpack.client.base.config.js b/client/webpack.client.base.config.js index 6b8adfee7..42bc6296b 100644 --- a/client/webpack.client.base.config.js +++ b/client/webpack.client.base.config.js @@ -11,7 +11,7 @@ module.exports = { 'jquery', 'jquery-ujs', ], - app: [], + app: ['babel-core/polyfill'], }, resolve: { extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'], From 3445116cc5c9bc21823dd5fbd67ff3c52994e84a Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Thu, 15 Oct 2015 10:25:25 -1000 Subject: [PATCH 132/548] Adjust travis.yml for node 4.2.0 and latest npm --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 73b329d92..734eb60ea 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,6 +4,7 @@ rvm: - 2.2.2 install: - bundle install + - npm install -g npm - npm install - cd client && npm run build:client - npm run build:server From 4de7593f02682b99a2565e642fa43315dacbf58d Mon Sep 17 00:00:00 2001 From: dylangrafmyre Date: Fri, 16 Oct 2015 12:37:52 -1000 Subject: [PATCH 133/548] Add npm: 3.3.6 to engines within package.jsons for heroku build to use npm 3.3.6 for npm install --- client/package.json | 3 ++- package.json | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/client/package.json b/client/package.json index bedf89cda..396f11faa 100644 --- a/client/package.json +++ b/client/package.json @@ -4,7 +4,8 @@ "description": "Code from the React Webpack tutorial.", "main": "server.js", "engines": { - "node": "4.2.0" + "node": "4.2.0", + "npm": "3.3.6" }, "repository": { "type": "git", diff --git a/package.json b/package.json index dbf566f1e..84f23c0c8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Code from the React Webpack tutorial.", "main": "server.js", "engines": { - "node": "4.2.0" + "node": "4.2.0", + "npm": "3.3.6" }, "scripts": { "postinstall": "cd client && npm install", From 94d92356828a56db25fccff9d50f41c525eead5b Mon Sep 17 00:00:00 2001 From: Roger Studner Date: Sun, 18 Oct 2015 15:04:45 -0400 Subject: [PATCH 134/548] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f75b3df09..ba8affebd 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ See package.json and Gemfile for versions # Basic Setup 1. Be sure that you have Node installed. I use [nvm](https://github.com/creationix/nvm), with node - version `v0.12.7`. See this article [Updating and using nvm](http://forum.railsonmaui.com/t/updating-and-using-nvm/293). + version `v4.2.1`. See this article [Updating and using nvm](http://forum.railsonmaui.com/t/updating-and-using-nvm/293). 1. `git clone git@github.com:shakacode/react-webpack-rails-tutorial.git` 1. `cd react-webpack-rails-tutorial` 1. Check that you have Ruby 2.2.2 From 32576630135c6868d039d89acdc80488951b6b01 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Tue, 20 Oct 2015 19:58:07 -0400 Subject: [PATCH 135/548] Add current Git commit hash to index view --- app/controllers/pages_controller.rb | 1 + app/models/git_commit_sha.rb | 23 +++++++++++++++++ app/views/pages/index.html.erb | 5 ++++ scripts/deploy | 39 +++++++++++++++++++++++++++++ spec/features/pages_spec.rb | 27 ++++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 app/models/git_commit_sha.rb create mode 100644 scripts/deploy create mode 100644 spec/features/pages_spec.rb diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 2d6b0e7b3..708e9a163 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,6 +1,7 @@ class PagesController < ApplicationController def index @comments = Comment.all + @git_commit_sha = GitCommitSha.current_sha # NOTE: The below notes apply if you want to set the value of the props in the controller, as # compared to he view. However, it's more convenient to use Jbuilder from the view. See diff --git a/app/models/git_commit_sha.rb b/app/models/git_commit_sha.rb new file mode 100644 index 000000000..fc64861e5 --- /dev/null +++ b/app/models/git_commit_sha.rb @@ -0,0 +1,23 @@ +class GitCommitSha + def self.current_sha + return @commit_sha unless @commit_sha.blank? + @commit_sha = (retrieve_sha_from_env_var || retrieve_sha_from_git_folder) + end + + def self.current_sha=(sha) + @commit_sha = sha + end + + def self.reset_current_sha + self.current_sha = "" + end + + def self.retrieve_sha_from_git_folder + `git rev-parse HEAD 2>/dev/null`.to_s.strip + end + + def self.retrieve_sha_from_env_var + env_var = ENV["DEPLOYMENT_SHA"] + env_var.blank? ? false : env_var + end +end diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index 309a8940b..d2e126cb7 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -1,4 +1,9 @@

    Using React + Redux + Rails Backend (using the react_on_rails gem)

    +

    current Git commit: + + <%= @git_commit_sha %> + +

    • If this work interests you and you're a developer or designer looking for full or part-time remote work: please diff --git a/scripts/deploy b/scripts/deploy new file mode 100644 index 000000000..a7b20ef9a --- /dev/null +++ b/scripts/deploy @@ -0,0 +1,39 @@ +#!/bin/bash +# Pass in app as either staging or production first -- must match what you seen in git remote -v +# Examples: +# ./deploy staging +# ./deploy staging --force +# ./deploy production + +app=$1 + +shift + +sha=`git rev-parse HEAD 2>/dev/null` +current_branch=`git symbolic-ref HEAD 2> /dev/null | sed -e 's/refs\/heads\///'` + +# echo "current_branch is $current_branch" +# echo "sha is $sha" +# echo "app is $app" + +if [ "$app" == "" ]; then + echo "You must specify a param value for the app, such as production or staging" + exit 1 +fi + +if [[ "$app" == "production" && "$current_branch" != "master" ]]; then + echo "You can only deploy master to production!" + exit 1 +fi + +echo Running: +echo git push $app $current_branch:master $@ +git push $app $current_branch:master $@ + +echo Setting heroku config DEPLOYMENT_SHA +echo heroku config:set DEPLOYMENT_SHA=$sha --remote $app +heroku config:set DEPLOYMENT_SHA=$sha --remote $app + +# Run migrations always just in case +heroku run rake db:migrate --remote $app +heroku restart --remote $app diff --git a/spec/features/pages_spec.rb b/spec/features/pages_spec.rb new file mode 100644 index 000000000..81800fd42 --- /dev/null +++ b/spec/features/pages_spec.rb @@ -0,0 +1,27 @@ +require "rails_helper" + +shared_examples "Git Commit SHA" do + # Keep existing env variable intact + let!(:old_sha) { ENV["DEPLOYMENT_SHA"] } + after { ENV["DEPLOYMENT_SHA"] = old_sha } + background { visit root_path } + it "displays the current git commit" do + expect(page).to have_css("#current-git-commit-sha", text: sha) + end +end + +feature "Git Commit SHA" do + context "when env var is not set" do + let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5x" } + before { GitCommitSha.current_sha = sha } + it_behaves_like "Git Commit SHA" + end + context "when env var is set" do + let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5y" } + before do + ENV["DEPLOYMENT_SHA"] = sha + GitCommitSha.reset_current_sha + end + it_behaves_like "Git Commit SHA" + end +end From 36a65ea914d56abe69609bdfbd20e1888b77d8aa Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Tue, 20 Oct 2015 20:49:00 -0400 Subject: [PATCH 136/548] Make improvements to GitCommitSha functionality. - refactor GitCommitSha class according to suggestions by @justin808 - access GitCommitSha directly from pages_helper instead of going through controller - display shorter version of the hash - make the hash link to the corresponding commit on GitHub --- app/controllers/pages_controller.rb | 1 - app/helpers/pages_helper.rb | 8 ++++++++ app/models/git_commit_sha.rb | 7 +++---- app/views/pages/index.html.erb | 8 ++++---- spec/features/pages_spec.rb | 4 +++- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 708e9a163..2d6b0e7b3 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -1,7 +1,6 @@ class PagesController < ApplicationController def index @comments = Comment.all - @git_commit_sha = GitCommitSha.current_sha # NOTE: The below notes apply if you want to set the value of the props in the controller, as # compared to he view. However, it's more convenient to use Jbuilder from the view. See diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index 2c057fd05..e03630a39 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -1,2 +1,10 @@ module PagesHelper + def git_commit_sha + GitCommitSha.current_sha + end + + def git_commit_sha_short + full_sha = git_commit_sha + full_sha.slice(full_sha.size - 7, full_sha.size) + end end diff --git a/app/models/git_commit_sha.rb b/app/models/git_commit_sha.rb index fc64861e5..855c85cfc 100644 --- a/app/models/git_commit_sha.rb +++ b/app/models/git_commit_sha.rb @@ -1,7 +1,6 @@ class GitCommitSha def self.current_sha - return @commit_sha unless @commit_sha.blank? - @commit_sha = (retrieve_sha_from_env_var || retrieve_sha_from_git_folder) + @commit_sha ||= retrieve_sha_from_env_var.presence || retrieve_sha_from_git_folder end def self.current_sha=(sha) @@ -9,7 +8,7 @@ def self.current_sha=(sha) end def self.reset_current_sha - self.current_sha = "" + self.current_sha = nil end def self.retrieve_sha_from_git_folder @@ -18,6 +17,6 @@ def self.retrieve_sha_from_git_folder def self.retrieve_sha_from_env_var env_var = ENV["DEPLOYMENT_SHA"] - env_var.blank? ? false : env_var + env_var.blank? ? nil : env_var end end diff --git a/app/views/pages/index.html.erb b/app/views/pages/index.html.erb index d2e126cb7..167eed830 100644 --- a/app/views/pages/index.html.erb +++ b/app/views/pages/index.html.erb @@ -1,8 +1,8 @@

      Using React + Redux + Rails Backend (using the react_on_rails gem)

      -

      current Git commit: - - <%= @git_commit_sha %> - +

      Current Commit: + <%= link_to git_commit_sha_short, + "https://github.com/shakacode/react-webpack-rails-tutorial/commit/#{git_commit_sha}", + id: "git-commit-sha" %>

      • diff --git a/spec/features/pages_spec.rb b/spec/features/pages_spec.rb index 81800fd42..5a55e9c20 100644 --- a/spec/features/pages_spec.rb +++ b/spec/features/pages_spec.rb @@ -6,18 +6,20 @@ after { ENV["DEPLOYMENT_SHA"] = old_sha } background { visit root_path } it "displays the current git commit" do - expect(page).to have_css("#current-git-commit-sha", text: sha) + expect(page).to have_css("#git-commit-sha", text: expected_text) end end feature "Git Commit SHA" do context "when env var is not set" do let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5x" } + let(:expected_text) { "5eead5x" } before { GitCommitSha.current_sha = sha } it_behaves_like "Git Commit SHA" end context "when env var is set" do let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5y" } + let(:expected_text) { "5eead5y" } before do ENV["DEPLOYMENT_SHA"] = sha GitCommitSha.reset_current_sha From dfd6d7197f7d893581daa5751baa7b9779aa8d69 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Tue, 20 Oct 2015 21:33:00 -0400 Subject: [PATCH 137/548] Additional refactoring of GitCommitSha code --- app/helpers/pages_helper.rb | 2 +- app/models/git_commit_sha.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index e03630a39..abd6cdd8e 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -5,6 +5,6 @@ def git_commit_sha def git_commit_sha_short full_sha = git_commit_sha - full_sha.slice(full_sha.size - 7, full_sha.size) + full_sha[-7..-1] end end diff --git a/app/models/git_commit_sha.rb b/app/models/git_commit_sha.rb index 855c85cfc..ac84675e9 100644 --- a/app/models/git_commit_sha.rb +++ b/app/models/git_commit_sha.rb @@ -1,6 +1,6 @@ class GitCommitSha def self.current_sha - @commit_sha ||= retrieve_sha_from_env_var.presence || retrieve_sha_from_git_folder + @commit_sha ||= retrieve_sha_from_env_var.presence || retrieve_sha_from_git end def self.current_sha=(sha) @@ -11,7 +11,7 @@ def self.reset_current_sha self.current_sha = nil end - def self.retrieve_sha_from_git_folder + def self.retrieve_sha_from_git `git rev-parse HEAD 2>/dev/null`.to_s.strip end From d6a0ac4264b1876376de4743eb671d3fe5e7a6e1 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Wed, 21 Oct 2015 00:15:59 -0400 Subject: [PATCH 138/548] Refactor feature tests --- spec/features/add_new_comment_spec.rb | 43 +++++++++ spec/features/comments_spec.rb | 131 -------------------------- spec/features/destroy_comment_spec.rb | 16 ++++ spec/features/edit_comment_spec.rb | 38 ++++++++ spec/features/shared/contexts.rb | 46 +++++++++ spec/features/shared/examples.rb | 33 +++++++ 6 files changed, 176 insertions(+), 131 deletions(-) create mode 100644 spec/features/add_new_comment_spec.rb delete mode 100644 spec/features/comments_spec.rb create mode 100644 spec/features/destroy_comment_spec.rb create mode 100644 spec/features/edit_comment_spec.rb create mode 100644 spec/features/shared/contexts.rb create mode 100644 spec/features/shared/examples.rb diff --git a/spec/features/add_new_comment_spec.rb b/spec/features/add_new_comment_spec.rb new file mode 100644 index 000000000..f12cac76c --- /dev/null +++ b/spec/features/add_new_comment_spec.rb @@ -0,0 +1,43 @@ +require "rails_helper" +require "features/shared/examples" +require "features/shared/contexts" + +feature "Add new comment" do + context "from main page", js: true do + include_context "Main Page" + context "via Horizontal Form" do + include_context "Horizontal Form" + include_examples "New Comment Submission" + end + context "via Inline Form" do + include_context "Inline Form" + include_examples "New Comment Submission" + end + context "via Stacked Form" do + include_context "Stacked Form" + include_examples "New Comment Submission" + end + end + + context "from simple page", js: true do + include_context "Simple Page" + context "via Horizontal Form" do + include_context "Horizontal Form" + include_examples "New Comment Submission" + end + context "via Inline Form" do + include_context "Inline Form" + include_examples "New Comment Submission" + end + context "via the Stacked Form" do + include_context "Stacked Form" + include_examples "New Comment Submission" + end + end + + context "from classic page" do + include_context "Classic Page" + background { click_link "New Comment" } + include_examples "New Comment Submission" + end +end diff --git a/spec/features/comments_spec.rb b/spec/features/comments_spec.rb deleted file mode 100644 index c506dd553..000000000 --- a/spec/features/comments_spec.rb +++ /dev/null @@ -1,131 +0,0 @@ -require "rails_helper" - -shared_context "Form Submitted" do |name: "Spicoli", text: "dude!"| - let(:hint_name) { "Your Name" } - let(:hint_text) { "Say something using markdown..." } - let(:name) { name } - let(:text) { text } - - background do - fill_in hint_name, with: name - fill_in hint_text, with: text - - click_button "Post" - end -end - -shared_examples "Comments Form" do - include_context "Form Submitted" - - scenario "submits form", js: true do - expect(page).to have_css(".comment", text: name) - expect(page).to have_css(".comment", text: text) - end -end - -shared_context "Horizontal Form" do - background do - click_link "Horizontal Form" - end - - it_behaves_like "Comments Form" - - context "iframe text" do - let(:iframe_text) { "" } - - include_context "Form Submitted", text: :iframe_text - - scenario "doesn't add an iframe", js: true do - expect(page).not_to have_css("iframe") - end - end - - context "blank fields" do - before { @comments_count = all(".comment").size } - include_context "Form Submitted", name: "", text: "" - - scenario "doesn't add a blank comment", js: true do - expect(page).to have_selector(".comment", count: @comments_count) - end - end -end - -shared_context "Inline Form" do - background do - click_link "Inline Form" - end - - it_behaves_like "Comments Form" -end - -shared_context "Stacked Form" do - background do - click_link "Stacked Form" - end - - it_behaves_like "Comments Form" -end - -feature "Add new comment" do - context "from the main page" do - background do - visit root_path - end - - include_context "Horizontal Form" - include_context "Inline Form" - include_context "Stacked Form" - end - - context "from the simple page" do - background do - visit simple_path - end - - include_context "Horizontal Form" - include_context "Inline Form" - include_context "Stacked Form" - end - - context "from the classic page" do - background do - visit comments_path - click_link "New Comment" - end - - it_behaves_like "Comments Form" - end -end - -feature "Edit a comment" do - context "from the classic page" do - let(:edited_name) { "Edited Name" } - - background do - visit comments_path - click_link "Edit", match: :first - end - - include_context "Form Submitted", name: :edited_name - - scenario "submits form" do - expect(page).to have_css(".comment", text: :edited_name) - end - end -end - -feature "Destroy a comment" do - context "from the classic page" do - let(:comment) { Comment.first } - - background do - visit comments_path - click_link "Destroy", href: comment_path(comment) - end - - scenario "destroys comment" do - expect(page).to_not have_css(".comment", text: comment.author) - expect(page).to_not have_css(".comment", text: comment.text) - end - end -end diff --git a/spec/features/destroy_comment_spec.rb b/spec/features/destroy_comment_spec.rb new file mode 100644 index 000000000..2bd09eab2 --- /dev/null +++ b/spec/features/destroy_comment_spec.rb @@ -0,0 +1,16 @@ +require "rails_helper" +require "features/shared/contexts" + +feature "Destroy a comment" do + include_context "Existing Comment" + context "from classic page" do + include_context "Classic Page" + let(:comment) { Comment.first } + + scenario "clicking destroy link destroys comment" do + click_link "Destroy", href: comment_path(comment) + expect(page).to_not have_css(".comment", text: comment.author) + expect(page).to_not have_css(".comment", text: comment.text) + end + end +end diff --git a/spec/features/edit_comment_spec.rb b/spec/features/edit_comment_spec.rb new file mode 100644 index 000000000..752e0f2d2 --- /dev/null +++ b/spec/features/edit_comment_spec.rb @@ -0,0 +1,38 @@ +require "rails_helper" +require "features/shared/examples" +require "features/shared/contexts" + +feature "Edit a comment" do + include_context "Existing Comment" + let(:comment) { Comment.first } + + context "from classic page" do + include_context "Classic Page" + background { click_link "Edit", match: :first } + + context "when edit is submitted" do + let(:edited_name) { "Abraham Lincoln" } + include_context "Form Submitted", name: :edited_name + + scenario "comment is updated" do + expect(page).to have_css(".comment", text: :edited_name) + expect(page).to have_success_message + end + end + + context "when edit is submitted with blank fields" do + include_context "Form Submitted with Blank Fields" + + scenario "comment is not updated" do + expect(page).not_to have_success_message + expect(page).not_to have_css(".comment", text: "") + end + end + end +end + +private + +def have_success_message # rubocop:disable Style/PredicateName + have_css("#notice", "Comment was successfully created.") +end diff --git a/spec/features/shared/contexts.rb b/spec/features/shared/contexts.rb new file mode 100644 index 000000000..880005959 --- /dev/null +++ b/spec/features/shared/contexts.rb @@ -0,0 +1,46 @@ +require "rails_helper" + +# Pages +shared_context "Main Page" do + background { visit root_path } +end +shared_context "Simple Page" do + background { visit simple_path } +end +shared_context "Classic Page" do + background { visit comments_path } +end + +# Forms +shared_context "Horizontal Form" do + background { click_link "Horizontal Form" } +end +shared_context "Inline Form" do + background { click_link "Inline Form" } +end +shared_context "Stacked Form" do + background { click_link "Stacked Form" } +end + +# Form Submission +shared_context "Form Submitted" do |name: "Spicoli", text: "dude!"| + let(:hint_name) { "Your Name" } + let(:hint_text) { "Say something using markdown..." } + let(:name) { name } + let(:text) { text } + + background do + fill_in hint_name, with: name + fill_in hint_text, with: text + click_button "Post" + end +end + +shared_context "Form Submitted with Blank Fields" do + include_context "Form Submitted", name: "", text: "" +end + +# Fixtures +shared_context "Existing Comment" do + before { Comment.create(author: "John Doe", text: "Hello there!") } +end diff --git a/spec/features/shared/examples.rb b/spec/features/shared/examples.rb new file mode 100644 index 000000000..c045b094b --- /dev/null +++ b/spec/features/shared/examples.rb @@ -0,0 +1,33 @@ +require "rails_helper" +require "features/shared/contexts" + +shared_examples "New Comment Submission" do + context "when the new comment is submitted" do + let(:name) { "John Smith" } + let(:text) { "Hello there!" } + 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) + end + end + + context "when the new comment is submmited with blank fields" do + let!(:comments_count) { all(".comment").size } + include_context "Form Submitted with Blank Fields" + + scenario "comment is not added" do + expect(page).to have_selector(".comment", count: comments_count) + end + end + + context "with iframe text" do + let(:iframe_text) { "" } + include_context "Form Submitted", text: :iframe_text + + scenario "doesn't add an iframe" do + expect(page).not_to have_css("iframe") + end + end +end From 1f40fe77073d8a06de99b9d9bc1a2b4b57c08e30 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Wed, 21 Oct 2015 00:52:54 -0400 Subject: [PATCH 139/548] add comment validations --- app/models/comment.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/models/comment.rb b/app/models/comment.rb index 45b2d38c3..c86b86c6b 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -1,2 +1,4 @@ class Comment < ActiveRecord::Base + validates_presence_of :author + validates_presence_of :text end From 7c1ce1fda0da3466df0d34a203bd5dae80bae8c2 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Wed, 21 Oct 2015 01:09:35 -0400 Subject: [PATCH 140/548] add expecation of error message for edit with blank fields --- spec/features/edit_comment_spec.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/spec/features/edit_comment_spec.rb b/spec/features/edit_comment_spec.rb index 752e0f2d2..da1005cf6 100644 --- a/spec/features/edit_comment_spec.rb +++ b/spec/features/edit_comment_spec.rb @@ -25,6 +25,7 @@ scenario "comment is not updated" do expect(page).not_to have_success_message + expect(page).to have_failure_message expect(page).not_to have_css(".comment", text: "") end end @@ -36,3 +37,7 @@ def have_success_message # rubocop:disable Style/PredicateName have_css("#notice", "Comment was successfully created.") end + +def have_failure_message # rubocop:disable Style/PredicateName + have_css("#error_explanation") +end From 80ed2417459d5d7c0ba52eedcbf7a16a8a20c912 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Wed, 21 Oct 2015 01:46:58 -0400 Subject: [PATCH 141/548] Switch to RSpec's implicit shared context via metadata --- spec/features/add_new_comment_spec.rb | 27 +++++++++------------------ spec/features/destroy_comment_spec.rb | 6 ++---- spec/features/edit_comment_spec.rb | 10 +++------- spec/features/shared/contexts.rb | 18 +++++++++--------- spec/features/shared/examples.rb | 3 +-- 5 files changed, 24 insertions(+), 40 deletions(-) diff --git a/spec/features/add_new_comment_spec.rb b/spec/features/add_new_comment_spec.rb index f12cac76c..4d22873d6 100644 --- a/spec/features/add_new_comment_spec.rb +++ b/spec/features/add_new_comment_spec.rb @@ -3,40 +3,31 @@ require "features/shared/contexts" feature "Add new comment" do - context "from main page", js: true do - include_context "Main Page" - context "via Horizontal Form" do - include_context "Horizontal Form" + context "from main page", page: :main, js: true do + context "via Horizontal Form", form: :horizontal do include_examples "New Comment Submission" end - context "via Inline Form" do - include_context "Inline Form" + context "via Inline Form", form: :inline do include_examples "New Comment Submission" end - context "via Stacked Form" do - include_context "Stacked Form" + context "via Stacked Form", form: :stacked do include_examples "New Comment Submission" end end - context "from simple page", js: true do - include_context "Simple Page" - context "via Horizontal Form" do - include_context "Horizontal Form" + context "from simple page", page: :simple, js: true do + context "via Horizontal Form", form: :horizontal do include_examples "New Comment Submission" end - context "via Inline Form" do - include_context "Inline Form" + context "via Inline Form", form: :inline do include_examples "New Comment Submission" end - context "via the Stacked Form" do - include_context "Stacked Form" + context "via the Stacked Form", form: :stacked do include_examples "New Comment Submission" end end - context "from classic page" do - include_context "Classic Page" + context "from classic page", page: :classic do background { click_link "New Comment" } include_examples "New Comment Submission" end diff --git a/spec/features/destroy_comment_spec.rb b/spec/features/destroy_comment_spec.rb index 2bd09eab2..684454201 100644 --- a/spec/features/destroy_comment_spec.rb +++ b/spec/features/destroy_comment_spec.rb @@ -1,10 +1,8 @@ require "rails_helper" require "features/shared/contexts" -feature "Destroy a comment" do - include_context "Existing Comment" - context "from classic page" do - include_context "Classic Page" +feature "Destroy a comment", existing_comment: true do + context "from classic page", page: :classic do let(:comment) { Comment.first } scenario "clicking destroy link destroys comment" do diff --git a/spec/features/edit_comment_spec.rb b/spec/features/edit_comment_spec.rb index da1005cf6..9637e70f5 100644 --- a/spec/features/edit_comment_spec.rb +++ b/spec/features/edit_comment_spec.rb @@ -2,12 +2,10 @@ require "features/shared/examples" require "features/shared/contexts" -feature "Edit a comment" do - include_context "Existing Comment" +feature "Edit a comment", existing_comment: true do let(:comment) { Comment.first } - context "from classic page" do - include_context "Classic Page" + context "from classic page", page: :classic do background { click_link "Edit", match: :first } context "when edit is submitted" do @@ -20,9 +18,7 @@ end end - context "when edit is submitted with blank fields" do - include_context "Form Submitted with Blank Fields" - + context "when edit is submitted with blank fields", blank_form_submitted: true do scenario "comment is not updated" do expect(page).not_to have_success_message expect(page).to have_failure_message diff --git a/spec/features/shared/contexts.rb b/spec/features/shared/contexts.rb index 880005959..3e0442bb9 100644 --- a/spec/features/shared/contexts.rb +++ b/spec/features/shared/contexts.rb @@ -1,29 +1,29 @@ require "rails_helper" # Pages -shared_context "Main Page" do +shared_context "Main Page", page: :main do background { visit root_path } end -shared_context "Simple Page" do +shared_context "Simple Page", page: :simple do background { visit simple_path } end -shared_context "Classic Page" do +shared_context "Classic Page", page: :classic do background { visit comments_path } end # Forms -shared_context "Horizontal Form" do +shared_context "Horizontal Form", form: :horizontal do background { click_link "Horizontal Form" } end -shared_context "Inline Form" do +shared_context "Inline Form", form: :inline do background { click_link "Inline Form" } end -shared_context "Stacked Form" do +shared_context "Stacked Form", form: :stacked do background { click_link "Stacked Form" } end # Form Submission -shared_context "Form Submitted" do |name: "Spicoli", text: "dude!"| +shared_context "Form Submitted", form_submitted: true do |name: "Spicoli", text: "dude!"| let(:hint_name) { "Your Name" } let(:hint_text) { "Say something using markdown..." } let(:name) { name } @@ -36,11 +36,11 @@ end end -shared_context "Form Submitted with Blank Fields" do +shared_context "Form Submitted with Blank Fields", blank_form_submitted: true do include_context "Form Submitted", name: "", text: "" end # Fixtures -shared_context "Existing Comment" do +shared_context "Existing Comment", existing_comment: true do before { Comment.create(author: "John Doe", text: "Hello there!") } end diff --git a/spec/features/shared/examples.rb b/spec/features/shared/examples.rb index c045b094b..73438a6be 100644 --- a/spec/features/shared/examples.rb +++ b/spec/features/shared/examples.rb @@ -13,9 +13,8 @@ end end - context "when the new comment is submmited with blank fields" do + context "when the new comment is submmited with blank fields", blank_form_submitted: true do let!(:comments_count) { all(".comment").size } - include_context "Form Submitted with Blank Fields" scenario "comment is not added" do expect(page).to have_selector(".comment", count: comments_count) From 0c60dcda8b038dba656909de88209376a659cd9d Mon Sep 17 00:00:00 2001 From: Geoff Evason Date: Wed, 21 Oct 2015 16:02:07 -0400 Subject: [PATCH 142/548] Include instructions for Bourbon in Readme --- README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/README.md b/README.md index ba8affebd..bdcfff7ad 100644 --- a/README.md +++ b/README.md @@ -169,6 +169,22 @@ this custom code has been consolidated under Webpack in search path. See config `config/application.rb`. Keep that in mind as you customize the Bootstrap Sass variables. +## Bourbon integration + +To use [bourbon](https://github.com/thoughtbot/bourbon) take the following steps: + +- Install node-bourbon `cd client && npm install --save node-bourbon` +- Update [bootstrap-sass.js](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/client/bootstrap-sass.config.js) to use the right paths: +``` +// Add this +var bourbonPaths = require('node-bourbon').includePaths; +module.exports = { + // ... + // And update this + styleLoader: 'style-loader!css-loader!sass-loader?imagePath=/assets/images&includePaths[]=' + bourbonPaths, +``` +- `@import 'https://github.com/bourbon';` Import bourbon from your [scss file](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/client/assets/stylesheets/_app-styling-post-bootstrap-loading.scss) + # Notes on Rails assets ## Rails Asset Pipeline Magic Be sure to see [assets.rake](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/lib/tasks/assets.rake) for how webpack is invoked during asset compilation. From f68d4741604cb21416da6357af64c947144fde24 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Wed, 21 Oct 2015 22:11:51 -0400 Subject: [PATCH 143/548] Change calls of ReactOnRails to Rails.application --- lib/tasks/assets.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake index df0694d80..7df4f9b59 100644 --- a/lib/tasks/assets.rake +++ b/lib/tasks/assets.rake @@ -18,7 +18,7 @@ namespace :assets do end task :clobber do - rm_rf "#{RailsReactTutorial::Application.config.root}/app/assets/javascripts/generated/client-bundle.js" - rm_rf "#{RailsReactTutorial::Application.config.root}/app/assets/javascripts/generated/server-bundle.js" + 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" end end From 44404f195c8c1eecfce838ca9d1a1b6f2c18c239 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Thu, 22 Oct 2015 01:14:32 -0400 Subject: [PATCH 144/548] Use buildpack to set git commit SHA during Heroku build Heroku does not provide access to Git via the command line, so the methods that work for the dev and test environments won't work here. Instead, we can utilize an additional buildpack in .buildpacks to write the SOURCE_VERSION environment variable to a file named .source_version in the application root. We cannot reference this environment variable directly from the app because Heroku only makes it available during the compilation phase of the build, hence the need to use a buildpack to write it to a file for later use by the app. --- .buildpacks | 1 + app/helpers/pages_helper.rb | 2 +- app/models/git_commit_sha.rb | 9 +++++---- scripts/deploy | 39 ------------------------------------ spec/features/pages_spec.rb | 7 ++++--- 5 files changed, 11 insertions(+), 47 deletions(-) delete mode 100644 scripts/deploy diff --git a/.buildpacks b/.buildpacks index 9fb124257..9296fcce3 100644 --- a/.buildpacks +++ b/.buildpacks @@ -1,2 +1,3 @@ https://github.com/heroku/heroku-buildpack-nodejs.git https://github.com/heroku/heroku-buildpack-ruby.git +https://github.com/sreid/heroku-buildpack-sourceversion.git diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index abd6cdd8e..c5ca14293 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -5,6 +5,6 @@ def git_commit_sha def git_commit_sha_short full_sha = git_commit_sha - full_sha[-7..-1] + full_sha[-8..-1] end end diff --git a/app/models/git_commit_sha.rb b/app/models/git_commit_sha.rb index ac84675e9..2e0aa4e65 100644 --- a/app/models/git_commit_sha.rb +++ b/app/models/git_commit_sha.rb @@ -1,6 +1,7 @@ +# Retrieves the current git commit SHA of the project class GitCommitSha def self.current_sha - @commit_sha ||= retrieve_sha_from_env_var.presence || retrieve_sha_from_git + @commit_sha ||= retrieve_sha_from_file.presence || retrieve_sha_from_git end def self.current_sha=(sha) @@ -15,8 +16,8 @@ def self.retrieve_sha_from_git `git rev-parse HEAD 2>/dev/null`.to_s.strip end - def self.retrieve_sha_from_env_var - env_var = ENV["DEPLOYMENT_SHA"] - env_var.blank? ? nil : env_var + def self.retrieve_sha_from_file + expected_filepath = Rails.root.join(".source_version") + File.exist?(expected_filepath) ? File.read(expected_filepath) : nil end end diff --git a/scripts/deploy b/scripts/deploy deleted file mode 100644 index a7b20ef9a..000000000 --- a/scripts/deploy +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/bash -# Pass in app as either staging or production first -- must match what you seen in git remote -v -# Examples: -# ./deploy staging -# ./deploy staging --force -# ./deploy production - -app=$1 - -shift - -sha=`git rev-parse HEAD 2>/dev/null` -current_branch=`git symbolic-ref HEAD 2> /dev/null | sed -e 's/refs\/heads\///'` - -# echo "current_branch is $current_branch" -# echo "sha is $sha" -# echo "app is $app" - -if [ "$app" == "" ]; then - echo "You must specify a param value for the app, such as production or staging" - exit 1 -fi - -if [[ "$app" == "production" && "$current_branch" != "master" ]]; then - echo "You can only deploy master to production!" - exit 1 -fi - -echo Running: -echo git push $app $current_branch:master $@ -git push $app $current_branch:master $@ - -echo Setting heroku config DEPLOYMENT_SHA -echo heroku config:set DEPLOYMENT_SHA=$sha --remote $app -heroku config:set DEPLOYMENT_SHA=$sha --remote $app - -# Run migrations always just in case -heroku run rake db:migrate --remote $app -heroku restart --remote $app diff --git a/spec/features/pages_spec.rb b/spec/features/pages_spec.rb index 5a55e9c20..ac00ad492 100644 --- a/spec/features/pages_spec.rb +++ b/spec/features/pages_spec.rb @@ -11,19 +11,20 @@ end feature "Git Commit SHA" do - context "when env var is not set" do + context "when .source_version file does not exist" do let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5x" } let(:expected_text) { "5eead5x" } before { GitCommitSha.current_sha = sha } it_behaves_like "Git Commit SHA" end - context "when env var is set" do + context "when .source_version file exists" do let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5y" } let(:expected_text) { "5eead5y" } before do - ENV["DEPLOYMENT_SHA"] = sha + `cd #{Rails.root} && echo #{sha} > .source_version` GitCommitSha.reset_current_sha end + after { `cd #{Rails.root} && rm .source_version` } it_behaves_like "Git Commit SHA" end end From 5b62b30a483eb8976f007e6618900e6019c44453 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Thu, 22 Oct 2015 13:27:57 -0400 Subject: [PATCH 145/548] Git Commit Sha - fix loose matching error and add comments --- app/helpers/pages_helper.rb | 2 +- app/models/git_commit_sha.rb | 8 +++++--- spec/features/pages_spec.rb | 22 +++++++++++++--------- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/app/helpers/pages_helper.rb b/app/helpers/pages_helper.rb index c5ca14293..abd6cdd8e 100644 --- a/app/helpers/pages_helper.rb +++ b/app/helpers/pages_helper.rb @@ -5,6 +5,6 @@ def git_commit_sha def git_commit_sha_short full_sha = git_commit_sha - full_sha[-8..-1] + full_sha[-7..-1] end end diff --git a/app/models/git_commit_sha.rb b/app/models/git_commit_sha.rb index 2e0aa4e65..c8a80fc6d 100644 --- a/app/models/git_commit_sha.rb +++ b/app/models/git_commit_sha.rb @@ -1,23 +1,25 @@ # Retrieves the current git commit SHA of the project class GitCommitSha def self.current_sha - @commit_sha ||= retrieve_sha_from_file.presence || retrieve_sha_from_git + @sha ||= retrieve_sha_from_file.presence || retrieve_sha_from_git end def self.current_sha=(sha) - @commit_sha = sha + @sha = sha end def self.reset_current_sha self.current_sha = nil end + # Assumes the git CLI is available. This is not the case in production on Heroku. def self.retrieve_sha_from_git `git rev-parse HEAD 2>/dev/null`.to_s.strip end + # Assumes a .source_version file with SHA inside. A special Heroku buildpack creates this for us in production. def self.retrieve_sha_from_file expected_filepath = Rails.root.join(".source_version") - File.exist?(expected_filepath) ? File.read(expected_filepath) : nil + File.exist?(expected_filepath) ? File.read(expected_filepath).to_s.strip : nil end end diff --git a/spec/features/pages_spec.rb b/spec/features/pages_spec.rb index ac00ad492..b47ea67c2 100644 --- a/spec/features/pages_spec.rb +++ b/spec/features/pages_spec.rb @@ -1,29 +1,33 @@ require "rails_helper" shared_examples "Git Commit SHA" do - # Keep existing env variable intact - let!(:old_sha) { ENV["DEPLOYMENT_SHA"] } - after { ENV["DEPLOYMENT_SHA"] = old_sha } background { visit root_path } it "displays the current git commit" do - expect(page).to have_css("#git-commit-sha", text: expected_text) + el = find("#git-commit-sha") + expect(el.text).to eq expected_text end end feature "Git Commit SHA" do + before do + # sha gets cached as an instance variable, so need to start fresh + GitCommitSha.reset_current_sha + end + context "when .source_version file does not exist" do let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5x" } let(:expected_text) { "5eead5x" } - before { GitCommitSha.current_sha = sha } + before do + # stub this method since we need to control what the sha actually is + allow(GitCommitSha).to receive(:retrieve_sha_from_git) { sha } + end it_behaves_like "Git Commit SHA" end + context "when .source_version file exists" do let(:sha) { "94d92356828a56db25fccff9d50f41c525eead5y" } let(:expected_text) { "5eead5y" } - before do - `cd #{Rails.root} && echo #{sha} > .source_version` - GitCommitSha.reset_current_sha - end + before { `cd #{Rails.root} && echo #{sha} > .source_version` } after { `cd #{Rails.root} && rm .source_version` } it_behaves_like "Git Commit SHA" end From a2aa175346c51448535a1fb7d0ce618ac5138849 Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Sun, 25 Oct 2015 13:37:40 -0400 Subject: [PATCH 146/548] Improve comment in webpack.client.base.config.js --- client/webpack.client.base.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/webpack.client.base.config.js b/client/webpack.client.base.config.js index 42bc6296b..186d186a6 100644 --- a/client/webpack.client.base.config.js +++ b/client/webpack.client.base.config.js @@ -1,4 +1,4 @@ -// Common webpack configuration used by webpack.hot.config and webpack.rails.config. +// Common client-side webpack configuration used by webpack.hot.config and webpack.rails.config. const webpack = require('webpack'); From a3d70dd79f179919abb48257df7277ec8227122b Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 25 Oct 2015 12:19:24 -0700 Subject: [PATCH 147/548] Update webpack.client.base.config.js --- client/webpack.client.base.config.js | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/client/webpack.client.base.config.js b/client/webpack.client.base.config.js index 186d186a6..2c3cec3ee 100644 --- a/client/webpack.client.base.config.js +++ b/client/webpack.client.base.config.js @@ -7,20 +7,35 @@ module.exports = { // the project dir context: __dirname, entry: { + + // See use of 'vendor' in the CommonsChunkPlugin inclusion below. vendor: [ + 'babel-core/polyfill', 'jquery', 'jquery-ujs', + 'react', + 'react-dom', ], - app: ['babel-core/polyfill'], + + // This will contain the app entry points defined by webpack.hot.config and webpack.rails.config + app: [], }, resolve: { extensions: ['', '.webpack.js', '.web.js', '.js', '.jsx', '.scss', '.css', 'config.js'], }, plugins: [ + + // https://webpack.github.io/docs/list-of-plugins.html#2-explicit-vendor-chunk new webpack.optimize.CommonsChunkPlugin({ + + // This name 'vendor' ties into the entry definition name: 'vendor', - chunks: ['app'], + + // We don't want the default vendor.js name filename: 'vendor-bundle.js', + + // Passing Infinity just creates the commons chunk, but moves no modules into it. + // In other words, we only put what's in the vendor entry definition in vendor-bundle.js minChunks: Infinity, }), ], From 48218b3a36492bef7cd3322d7763470ac183e28c Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Wed, 28 Oct 2015 19:25:31 -0700 Subject: [PATCH 148/548] Update application.js --- app/assets/javascripts/application.js | 3 +-- client/webpack.client.rails.config.js | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index fa8e53efe..71aae88d0 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -10,8 +10,7 @@ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details // about supported directives. -// Need to be on top to allow Poltergeist test to work with React. -//= require es5-shim/es5-shim +// Need to be on top to allow Poltergeist test to work with React: es5-shim/es5-shim. This is lincluded in app-bundle. //= require react_on_rails // It is important that generated/vendor-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs diff --git a/client/webpack.client.rails.config.js b/client/webpack.client.rails.config.js index 96db26438..a7d4b1702 100644 --- a/client/webpack.client.rails.config.js +++ b/client/webpack.client.rails.config.js @@ -24,7 +24,8 @@ config.entry.app.push('./app/startup/clientGlobals'); // 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: /\.jsx?$/, loader: 'babel-loader', exclude: /node_modules/}, + {test: require.resolve('react'), loader: 'imports?shim=es5-shim/es5-shim&sham=es5-shim/es5-sham'} ); module.exports = config; From b123008f24603ae67e5678b63350a19de8d8b37e Mon Sep 17 00:00:00 2001 From: Rob Wise Date: Thu, 29 Oct 2015 12:07:13 -0400 Subject: [PATCH 149/548] Remove es5-shim from Gemfile --- Gemfile | 1 - Gemfile.lock | 4 ---- 2 files changed, 5 deletions(-) diff --git a/Gemfile b/Gemfile index 95c2f8cb9..43e2595c4 100644 --- a/Gemfile +++ b/Gemfile @@ -28,7 +28,6 @@ gem "turbolinks" gem "jbuilder" # bundle exec rake doc:rails generates the API under doc/api. gem "sdoc", group: :doc -gem "es5-shim-rails" # Use ActiveModel has_secure_password # gem "bcrypt", "~> 3.1.7" diff --git a/Gemfile.lock b/Gemfile.lock index 1f790b1c2..b53aa641b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -106,9 +106,6 @@ GEM domain_name (0.5.24) unf (>= 0.0.5, < 1.0.0) erubis (2.7.0) - es5-shim-rails (4.0.1) - actionpack (>= 3.1) - railties (>= 3.1) execjs (2.5.2) factory_girl (4.5.0) activesupport (>= 3.0.0) @@ -337,7 +334,6 @@ DEPENDENCIES coffee-rails coveralls database_cleaner - es5-shim-rails factory_girl_rails foreman jbuilder From 7d76829243ad7b51250c06db29f9b560c9a744ce Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 29 Oct 2015 18:39:44 -0700 Subject: [PATCH 150/548] Update Gems --- Gemfile | 10 +-- Gemfile.lock | 142 ++++++++++++++++++------------------ config.ru | 2 +- config/environments/test.rb | 2 +- spec/rails_helper.rb | 2 +- 5 files changed, 79 insertions(+), 79 deletions(-) diff --git a/Gemfile b/Gemfile index 43e2595c4..9c5809aa7 100644 --- a/Gemfile +++ b/Gemfile @@ -10,9 +10,9 @@ gem "pg", group: :production # Use SCSS for stylesheets gem "sass-rails" -gem "bootstrap-sass", "~> 3.3.1" +gem "bootstrap-sass", "~> 3.3" # Use Uglifier as compressor for JavaScript assets -gem "uglifier", "~> 2.7.2" +gem "uglifier" # Use CoffeeScript for .js.coffee assets and views gem "coffee-rails" # See https://github.com/sstephenson/execjs#readme for more supported runtimes @@ -65,16 +65,14 @@ group :development, :test do gem "factory_girl_rails" + # Linters and Security gem "rubocop", require: false - gem "ruby-lint", require: false - gem "scss_lint", require: false - gem "brakeman", require: false - gem "bundler-audit", require: false + # Allow printing with colors to terminal gem "rainbow" # Favorite debugging gems diff --git a/Gemfile.lock b/Gemfile.lock index b53aa641b..16a7457cd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,36 +1,36 @@ GEM remote: https://rubygems.org/ specs: - actionmailer (4.2.3) - actionpack (= 4.2.3) - actionview (= 4.2.3) - activejob (= 4.2.3) + actionmailer (4.2.4) + actionpack (= 4.2.4) + actionview (= 4.2.4) + activejob (= 4.2.4) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 1.0, >= 1.0.5) - actionpack (4.2.3) - actionview (= 4.2.3) - activesupport (= 4.2.3) + actionpack (4.2.4) + actionview (= 4.2.4) + activesupport (= 4.2.4) rack (~> 1.6) rack-test (~> 0.6.2) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (4.2.3) - activesupport (= 4.2.3) + actionview (4.2.4) + activesupport (= 4.2.4) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 1.0, >= 1.0.5) rails-html-sanitizer (~> 1.0, >= 1.0.2) - activejob (4.2.3) - activesupport (= 4.2.3) + activejob (4.2.4) + activesupport (= 4.2.4) globalid (>= 0.3.0) - activemodel (4.2.3) - activesupport (= 4.2.3) + activemodel (4.2.4) + activesupport (= 4.2.4) builder (~> 3.1) - activerecord (4.2.3) - activemodel (= 4.2.3) - activesupport (= 4.2.3) + activerecord (4.2.4) + activemodel (= 4.2.4) + activesupport (= 4.2.4) arel (~> 6.0) - activesupport (4.2.3) + activesupport (4.2.4) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) @@ -39,11 +39,11 @@ GEM addressable (2.3.8) archive-zip (0.7.0) io-like (~> 0.3.0) - arel (6.0.2) - ast (2.0.0) + arel (6.0.3) + ast (2.1.0) astrolabe (1.3.1) parser (~> 2.2) - autoprefixer-rails (5.2.1.1) + autoprefixer-rails (6.0.3) execjs json awesome_print (1.6.1) @@ -52,7 +52,7 @@ GEM bootstrap-sass (3.3.5.1) autoprefixer-rails (>= 5.0.0.1) sass (>= 3.3.0) - brakeman (3.1.1) + brakeman (3.1.2) erubis (~> 2.6) fastercsv (~> 1.5) haml (>= 3.0, < 5.0) @@ -60,6 +60,7 @@ GEM multi_json (~> 1.2) ruby2ruby (>= 2.1.1, < 2.3.0) ruby_parser (~> 3.7.0) + safe_yaml sass (~> 3.0) slim (>= 1.3.6, < 4.0) terminal-table (~> 1.4) @@ -69,7 +70,7 @@ GEM thor (~> 0.18) byebug (5.0.0) columnize (= 0.9.0) - capybara (2.4.4) + capybara (2.5.0) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) @@ -78,7 +79,7 @@ GEM capybara-screenshot (1.0.11) capybara (>= 1.0, < 3) launchy - childprocess (0.5.6) + childprocess (0.5.7) ffi (~> 1.0, >= 1.0.11) chromedriver-helper (1.0.0) archive-zip (~> 0.7.0) @@ -93,20 +94,20 @@ GEM coffee-script-source (1.9.1.1) columnize (0.9.0) connection_pool (2.2.0) - coveralls (0.8.2) + coveralls (0.8.3) json (~> 1.8) rest-client (>= 1.6.8, < 2) simplecov (~> 0.10.0) term-ansicolor (~> 1.3) thor (~> 0.19.1) - database_cleaner (1.4.1) + database_cleaner (1.5.1) debug_inspector (0.0.2) diff-lcs (1.2.5) docile (1.1.5) - domain_name (0.5.24) + domain_name (0.5.25) unf (>= 0.0.5, < 1.0.0) erubis (2.7.0) - execjs (2.5.2) + execjs (2.6.0) factory_girl (4.5.0) activesupport (>= 3.0.0) factory_girl_rails (4.5.0) @@ -116,41 +117,41 @@ GEM ffi (1.9.10) foreman (0.78.0) thor (~> 0.19.1) - globalid (0.3.5) + globalid (0.3.6) activesupport (>= 4.1.0) haml (4.0.7) tilt - highline (1.7.7) + highline (1.7.8) http-cookie (1.0.2) domain_name (~> 0.5) i18n (0.7.0) interception (0.5) io-like (0.3.0) - jbuilder (2.3.1) + jbuilder (2.3.2) activesupport (>= 3.0.0, < 5) multi_json (~> 1.2) json (1.8.3) - kgio (2.9.3) + kgio (2.10.0) launchy (2.4.3) addressable (~> 2.3) - libv8 (3.16.14.11) - loofah (2.0.2) + libv8 (3.16.14.13) + loofah (2.0.3) nokogiri (>= 1.5.9) mail (2.6.3) mime-types (>= 1.16, < 3) method_source (0.8.2) - mime-types (2.6.1) + mime-types (2.6.2) mini_portile (0.6.2) - minitest (5.7.0) + minitest (5.8.2) multi_json (1.11.2) - netrc (0.10.3) + netrc (0.11.0) nokogiri (1.6.6.2) mini_portile (~> 0.6.0) - parser (2.2.2.6) + parser (2.2.3.0) ast (>= 1.1, < 3.0) - pg (0.18.2) + pg (0.18.3) powerpack (0.1.1) - pry (0.10.1) + pry (0.10.3) coderay (~> 1.1.0) method_source (~> 0.8.1) slop (~> 3.4) @@ -171,20 +172,20 @@ GEM rack (1.6.4) rack-test (0.6.3) rack (>= 1.0) - rails (4.2.3) - actionmailer (= 4.2.3) - actionpack (= 4.2.3) - actionview (= 4.2.3) - activejob (= 4.2.3) - activemodel (= 4.2.3) - activerecord (= 4.2.3) - activesupport (= 4.2.3) + rails (4.2.4) + actionmailer (= 4.2.4) + actionpack (= 4.2.4) + actionview (= 4.2.4) + activejob (= 4.2.4) + activemodel (= 4.2.4) + activerecord (= 4.2.4) + activesupport (= 4.2.4) bundler (>= 1.3.0, < 2.0) - railties (= 4.2.3) + railties (= 4.2.4) sprockets-rails rails-deprecated_sanitizer (1.0.3) activesupport (>= 4.2.0.alpha) - rails-dom-testing (1.0.6) + rails-dom-testing (1.0.7) activesupport (>= 4.2.0.beta, < 5.0) nokogiri (~> 1.6.0) rails-deprecated_sanitizer (>= 1.0.1) @@ -194,10 +195,10 @@ GEM rails_serve_static_assets rails_stdout_logging rails_serve_static_assets (0.0.4) - rails_stdout_logging (0.0.3) - railties (4.2.3) - actionpack (= 4.2.3) - activesupport (= 4.2.3) + rails_stdout_logging (0.0.4) + railties (4.2.4) + actionpack (= 4.2.4) + activesupport (= 4.2.4) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.0.0) @@ -230,36 +231,37 @@ GEM rspec-mocks (~> 3.3.0) rspec-support (~> 3.3.0) rspec-support (3.3.0) - rubocop (0.32.1) + rubocop (0.34.2) astrolabe (~> 1.3) parser (>= 2.2.2.5, < 3.0) powerpack (~> 0.1) rainbow (>= 1.99.1, < 3.0) ruby-progressbar (~> 1.4) - ruby-lint (2.0.4) + ruby-lint (2.0.5) parser (~> 2.2) slop (~> 3.4, >= 3.4.7) ruby-progressbar (1.7.5) ruby2ruby (2.2.0) ruby_parser (~> 3.1) sexp_processor (~> 4.0) - ruby_parser (3.7.1) + ruby_parser (3.7.2) sexp_processor (~> 4.1) rubyzip (1.1.7) - sass (3.4.18) - sass-rails (5.0.3) + safe_yaml (1.0.4) + sass (3.4.19) + sass-rails (5.0.4) railties (>= 4.0.0, < 5.0) sass (~> 3.1) sprockets (>= 2.8, < 4.0) sprockets-rails (>= 2.0, < 4.0) - tilt (~> 1.1) - scss_lint (0.40.1) + tilt (>= 1.1, < 3) + scss_lint (0.42.2) rainbow (~> 2.0) - sass (~> 3.4.1) + sass (~> 3.4.15) sdoc (0.4.1) json (~> 1.7, >= 1.7.7) rdoc (~> 4.0) - selenium-webdriver (2.47.1) + selenium-webdriver (2.48.1) childprocess (~> 0.5) multi_json (~> 1.0) rubyzip (~> 1.0) @@ -274,16 +276,16 @@ GEM temple (~> 0.7.3) tilt (>= 1.3.3, < 2.1) slop (3.6.0) - spring (1.3.6) + spring (1.4.0) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - sprockets (3.2.0) - rack (~> 1.0) - sprockets-rails (2.3.2) + sprockets (3.4.0) + rack (> 1, < 3) + sprockets-rails (2.3.3) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (>= 2.8, < 4.0) - sqlite3 (1.3.10) + sqlite3 (1.3.11) temple (0.7.6) term-ansicolor (1.3.2) tins (~> 1.0) @@ -293,7 +295,7 @@ GEM ref thor (0.19.1) thread_safe (0.3.5) - tilt (1.4.1) + tilt (2.0.1) tins (1.6.0) turbolinks (2.5.3) coffee-rails @@ -325,7 +327,7 @@ PLATFORMS DEPENDENCIES autoprefixer-rails awesome_print - bootstrap-sass (~> 3.3.1) + bootstrap-sass (~> 3.3) brakeman bundler-audit capybara @@ -362,7 +364,7 @@ DEPENDENCIES sqlite3 therubyracer turbolinks - uglifier (~> 2.7.2) + uglifier unicorn web-console diff --git a/config.ru b/config.ru index 93fb28fad..193e5fed8 100644 --- a/config.ru +++ b/config.ru @@ -1,4 +1,4 @@ # This file is used by Rack-based servers to start the application. -require ::File.expand_path("../config/environment", __FILE__) +require ::File.expand_path("../config/environment", __FILE__) run Rails.application diff --git a/config/environments/test.rb b/config/environments/test.rb index 68cadff4a..5b8ff8cea 100644 --- a/config/environments/test.rb +++ b/config/environments/test.rb @@ -13,7 +13,7 @@ config.eager_load = false # Configure static asset server for tests with Cache-Control for performance. - config.serve_static_files = true + config.serve_static_files = true config.static_cache_control = "public, max-age=3600" # Show full error reports and disable caching. diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index ce8857977..8b9e6c4eb 100644 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,7 +1,7 @@ # This file is copied to spec/ when you run "rails generate rspec:install" ENV["RAILS_ENV"] ||= "test" require "coveralls" -Coveralls.wear!("rails") # must occur before any of your application code is required +Coveralls.wear!("rails") # must occur before any of your application code is required require "spec_helper" require File.expand_path("../../config/environment", __FILE__) require "rspec/rails" From db2b1ba866a3c6f4d06810c45665ea232da1cb35 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Thu, 29 Oct 2015 23:09:16 -0700 Subject: [PATCH 151/548] updates for readability Also, add comment to database.yml --- Gemfile | 39 ++++++++++++++++++++------------------- Gemfile.lock | 1 - config/database.yml | 1 + 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Gemfile b/Gemfile index 9c5809aa7..6e6a7ff52 100644 --- a/Gemfile +++ b/Gemfile @@ -4,9 +4,15 @@ ruby "2.2.2" # # Bundle edge Rails instead: gem "rails", github: "rails/rails" gem "rails", "~>4.2" -# Use sqlite3 as the database for Active Record -gem "sqlite3", group: :development -gem "pg", group: :production + +# Note: We're using sqllite3 for development and testing +gem "sqlite3", group: [:development, :test] + +group :production do + # Pg is used for Heroku + gem "pg" + gem "rails_12factor" # Never include this for development or tests +end # Use SCSS for stylesheets gem "sass-rails" @@ -15,17 +21,13 @@ gem "bootstrap-sass", "~> 3.3" gem "uglifier" # Use CoffeeScript for .js.coffee assets and views gem "coffee-rails" -# See https://github.com/sstephenson/execjs#readme for more supported runtimes -# gem "therubyracer", platforms: :ruby - -# jquery as the JavaScript library has been moved under /client and managed by npm. -# It is critical to not include any of the jquery gems when following this pattern or -# else you might have multiple jQuery versions. # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks gem "turbolinks" + # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder gem "jbuilder" + # bundle exec rake doc:rails generates the API under doc/api. gem "sdoc", group: :doc @@ -39,42 +41,41 @@ gem "rails-html-sanitizer" gem "unicorn" gem "react_on_rails", "~> 1.0.0.pre" +# See https://github.com/sstephenson/execjs#readme for more supported runtimes gem "therubyracer" gem "autoprefixer-rails" gem "awesome_print" -# Use Capistrano for deployment -# gem "capistrano-rails", group: :development -group :production do - gem "rails_12factor" -end +# jquery as the JavaScript library has been moved under /client and managed by npm. +# It is critical to not include any of the jquery gems when following this pattern or +# else you might have multiple jQuery versions. group :development, :test do # Access an IRB console on exceptions page and /console in development gem "web-console" + ################################################################################ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring gem "spring" - gem "spring-commands-rspec" + ################################################################################ # Manage application processes gem "foreman" - gem "factory_girl_rails" + ################################################################################ # Linters and Security gem "rubocop", require: false gem "ruby-lint", require: false + # Critical that require: false be set! https://github.com/brigade/scss-lint/issues/278 gem "scss_lint", require: false gem "brakeman", require: false gem "bundler-audit", require: false - # Allow printing with colors to terminal - gem "rainbow" - + ################################################################################ # Favorite debugging gems gem "pry" gem "pry-doc" diff --git a/Gemfile.lock b/Gemfile.lock index 16a7457cd..37165adae 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -350,7 +350,6 @@ DEPENDENCIES rails (~> 4.2) rails-html-sanitizer rails_12factor - rainbow react_on_rails (~> 1.0.0.pre) rspec-rails rubocop diff --git a/config/database.yml b/config/database.yml index d9e1a414f..1db94216b 100644 --- a/config/database.yml +++ b/config/database.yml @@ -4,6 +4,7 @@ # Ensure the SQLite 3 gem is defined in your Gemfile # gem "sqlite3" # +# NOTE: Real world apps would not have a different DB for development default: &default adapter: sqlite3 pool: 5 From 1a630e200a1dd398fade94226d86b326b6b62a26 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 1 Nov 2015 12:20:35 -0800 Subject: [PATCH 152/548] Update application.js --- app/assets/javascripts/application.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 71aae88d0..d3b5fd250 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -10,16 +10,18 @@ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details // about supported directives. -// Need to be on top to allow Poltergeist test to work with React: es5-shim/es5-shim. This is lincluded in app-bundle. -//= require react_on_rails - // It is important that generated/vendor-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs //= require generated/vendor-bundle //= require generated/app-bundle +// Must go after the vendor-bundle, b/c vendor-bundle has jQuery. //= require bootstrap-sprockets + //= require turbolinks +//= require react_on_rails + +// TODO: move to this separate file. $(document).on('ready page:load', function () { $('nav a').parents('li,ul').removeClass('active'); $('nav a[href="' + this.location.pathname + '"]').parents('li,ul').addClass('active'); From 9021e8e907759b0145871619d248f2909aa21538 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 1 Nov 2015 12:25:40 -0800 Subject: [PATCH 153/548] Update application.js --- app/assets/javascripts/application.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index d3b5fd250..b918f11eb 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -10,14 +10,14 @@ // Read Sprockets README (https://github.com/sstephenson/sprockets#sprockets-directives) for details // about supported directives. -// It is important that generated/vendor-bundle must be before bootstrap since it is exposing jQuery and jQuery-ujs +// 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 -// Must go after the vendor-bundle, b/c vendor-bundle has jQuery. -//= require bootstrap-sprockets - +// Next two depend on jQuery //= require turbolinks +//= require bootstrap-sprockets //= require react_on_rails From 36167f265480154e92e1c9cdd16462cf59e9b0d6 Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Sun, 1 Nov 2015 20:13:37 -0800 Subject: [PATCH 154/548] Trying out all the assets configuration diff spot config.assets.paths << Rails.root.join("client", "assets", "stylesheets") --- config/application.rb | 3 --- config/initializers/assets.rb | 3 +++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config/application.rb b/config/application.rb index 5319ead75..4638d1ab1 100644 --- a/config/application.rb +++ b/config/application.rb @@ -22,8 +22,5 @@ class Application < Rails::Application # For not swallow errors in after_commit/after_rollback callbacks. config.active_record.raise_in_transactional_callbacks = true - - # Add client/assets/stylesheets to asset pipeline's search path. - config.assets.paths << Rails.root.join("client", "assets", "stylesheets") end end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index 78a808385..5f3f7d214 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -6,6 +6,9 @@ # 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") + # 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 ) From c2599af460d968fbad8ffdd62108ee2da773c22b Mon Sep 17 00:00:00 2001 From: Justin Gordon Date: Mon, 2 Nov 2015 11:42:09 -0800 Subject: [PATCH 155/548] Update README.md --- README.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bdcfff7ad..6e6dcbe44 100644 --- a/README.md +++ b/README.md @@ -126,11 +126,17 @@ Now point your browser to http://0.0.0.0:3000. Note that it's important to run the Rails server on a different port than the node server. # Webpack configuration -- `webpack.hot.config.js`: Used by server.js to run the demo HMR server. -- `webpack.rails.config.js`: Used to generate the Rails bundles. -- `webpack.common.config.js`: Common configuration file to minimize code duplication +## 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 Resources +- Good overview: [Pete Hunt's Webpack Howto](https://github.com/petehunt/webpack-howto) +- [Webpack Docs](http://webpack.github.io/docs/) + # Bootstrap integration Notice that Bootstrap Sass is installed as both a gem and an npm package. When running the Rails app, the bootstrap-sass gem assets are loaded directly From f5d4050e67e79590b2512e6aabcdda1b71d54eff Mon Sep 17 00:00:00 2001 From: Roger Studner Date: Fri, 30 Oct 2015 21:04:51 -0400 Subject: [PATCH 156/548] ES6 all React stuff. --- client/app/components/Comment.jsx | 13 +++-- client/app/components/CommentBox.jsx | 19 ++++--- client/app/components/CommentForm.jsx | 50 +++++++++---------- client/app/components/CommentList.jsx | 14 +++--- client/app/components/CommentScreen.jsx | 12 ++--- client/app/components/SimpleCommentScreen.jsx | 32 ++++++------ client/app/reducers/commentsReducer.js | 2 +- client/app/startup/ClientApp.jsx | 9 ++-- client/app/startup/ServerApp.jsx | 9 ++-- client/app/stores/commentsStore.js | 4 +- 10 files changed, 76 insertions(+), 88 deletions(-) diff --git a/client/app/components/Comment.jsx b/client/app/components/Comment.jsx index e3b40d1f7..a358bd80d 100644 --- a/client/app/components/Comment.jsx +++ b/client/app/components/Comment.jsx @@ -1,13 +1,12 @@ import React, { PropTypes } from 'react'; import marked from 'marked'; -const Comment = React.createClass({ - displayName: 'Comment', - - propTypes: { +class Comment extends React.Component { + static displayName = 'Comment'; + static propTypes = { author: PropTypes.string.isRequired, text: PropTypes.string.isRequired, - }, + }; render() { const { author, text } = this.props; @@ -20,7 +19,7 @@ const Comment = React.createClass({
    ); - }, -}); + } +} export default Comment; diff --git a/client/app/components/CommentBox.jsx b/client/app/components/CommentBox.jsx index 21e805a2a..9596048fe 100644 --- a/client/app/components/CommentBox.jsx +++ b/client/app/components/CommentBox.jsx @@ -3,28 +3,27 @@ import React, { PropTypes } from 'react'; import CommentForm from './CommentForm'; import CommentList from './CommentList'; -const CommentBox = React.createClass({ - displayName: 'CommentBox', - - propTypes: { +class CommentBox extends React.Component { + static displayName = 'CommentBox'; + static propTypes = { pollInterval: PropTypes.number.isRequired, actions: PropTypes.object.isRequired, data: PropTypes.object.isRequired, - }, + }; componentDidMount() { const { fetchComments } = this.props.actions; fetchComments(); setInterval(fetchComments, this.props.pollInterval); - }, + } ajaxCounter() { return this.props.data.get('ajaxCounter'); - }, + } isSendingAjax() { return this.ajaxCounter() > 0; - }, + } render() { const { actions, data } = this.props; @@ -49,7 +48,7 @@ const CommentBox = React.createClass({ />
    ); - }, -}); + } +} export default CommentBox; diff --git a/client/app/components/CommentForm.jsx b/client/app/components/CommentForm.jsx index cbe5c755b..f0c5ae152 100644 --- a/client/app/components/CommentForm.jsx +++ b/client/app/components/CommentForm.jsx @@ -10,31 +10,27 @@ import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup'; const emptyComment = { author: '', text: '' }; const textPlaceholder = 'Say something using markdown...'; -const CommentForm = React.createClass({ - displayName: 'CommentForm', +class CommentForm extends React.Component { + state = { + formMode: 0, + comment: emptyComment, + }; - propTypes: { + static displayName = 'CommentForm'; + + static propTypes = { ajaxSending: PropTypes.bool.isRequired, actions: PropTypes.object.isRequired, error: PropTypes.any, - }, - - getInitialState() { - return { - formMode: 0, - comment: emptyComment, - }; - }, + }; - handleSelect(selectedKey) { + handleSelect = (selectedKey) => { this.setState({ formMode: selectedKey }); - }, + }; - handleChange() { + handleChange = () => { let comment; - // This could also be done using ReactLink: - // http://facebook.github.io/react/docs/two-way-binding-helpers.html if (this.state.formMode < 2) { comment = { author: this.refs.author.getValue(), @@ -50,17 +46,17 @@ const CommentForm = React.createClass({ } this.setState({ comment }); - }, + }; - handleSubmit(e) { + handleSubmit = (e) => { e.preventDefault(); const { actions } = this.props; actions .submitComment(this.state.comment) .then(this.resetAndFocus); - }, + }; - resetAndFocus() { + resetAndFocus = () => { // Don't reset a form that didn't submit, this results in data loss if (this.props.error) return; @@ -75,7 +71,7 @@ const CommentForm = React.createClass({ } ref.focus(); - }, + } formHorizontal() { return ( @@ -117,7 +113,7 @@ const CommentForm = React.createClass({

    ); - }, + } formStacked() { return ( @@ -151,7 +147,7 @@ const CommentForm = React.createClass({
    ); - }, + } formInline() { return ( @@ -195,7 +191,7 @@ const CommentForm = React.createClass({
    ); - }, + } errorWarning() { // If there is no error, there is nothing to add to the DOM @@ -206,7 +202,7 @@ const CommentForm = React.createClass({ A server error prevented your comment from being saved. Please try again. ); - }, + } render() { let inputForm; @@ -241,7 +237,7 @@ const CommentForm = React.createClass({ {inputForm} ); - }, -}); + } +} export default CommentForm; diff --git a/client/app/components/CommentList.jsx b/client/app/components/CommentList.jsx index b4321728b..4b2a0d220 100644 --- a/client/app/components/CommentList.jsx +++ b/client/app/components/CommentList.jsx @@ -5,13 +5,13 @@ import ReactCSSTransitionGroup from 'react/lib/ReactCSSTransitionGroup'; import Comment from './Comment'; -const CommentList = React.createClass({ - displayName: 'CommentList', +class CommentList extends React.Component { + static displayName = 'CommentList'; - propTypes: { + static propTypes = { $$comments: PropTypes.instanceOf(Immutable.List).isRequired, error: PropTypes.any, - }, + }; errorWarning() { // If there is no error, there is nothing to add to the DOM @@ -22,7 +22,7 @@ const CommentList = React.createClass({ A server error prevented loading comments. Please try again. ); - }, + } render() { const { $$comments } = this.props; @@ -53,7 +53,7 @@ const CommentList = React.createClass({ ); - }, -}); + } +} export default CommentList; diff --git a/client/app/components/CommentScreen.jsx b/client/app/components/CommentScreen.jsx index 40439789e..923f2b7d2 100644 --- a/client/app/components/CommentScreen.jsx +++ b/client/app/components/CommentScreen.jsx @@ -9,13 +9,13 @@ function select(state) { return { data: state.$$commentsStore }; } -const CommentScreen = React.createClass({ - displayName: 'CommentScreen', +class CommentScreen extends React.Component { + static displayName = 'CommentScreen'; - propTypes: { + static propTypes = { dispatch: PropTypes.func.isRequired, data: PropTypes.object.isRequired, - }, + }; render() { const { dispatch, data } = this.props; @@ -42,8 +42,8 @@ const CommentScreen = React.createClass({ ); - }, -}); + } +} // Don't forget to actually use connect! export default connect(select)(CommentScreen); diff --git a/client/app/components/SimpleCommentScreen.jsx b/client/app/components/SimpleCommentScreen.jsx index 00e902337..e8b7713f9 100644 --- a/client/app/components/SimpleCommentScreen.jsx +++ b/client/app/components/SimpleCommentScreen.jsx @@ -5,29 +5,27 @@ import CommentForm from './CommentForm'; import CommentList from './CommentList'; import metaTagsManager from '../utils/metaTagsManager'; -const SimpleCommentScreen = React.createClass({ - displayName: 'SimpleCommentScreen', +class SimpleCommentScreen extends React.Component { + state = { + $$comments: Immutable.fromJS([]), + ajaxSending: false, + fetchCommentsError: null, + submitCommentError: null, + }; - getInitialState() { - return { - $$comments: Immutable.fromJS([]), - ajaxSending: false, - fetchCommentsError: null, - submitCommentError: null, - }; - }, + 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 })); - }, + } - handleCommentSubmit(comment) { + handleCommentSubmit = (comment) => { this.setState({ ajaxSending: true }); const requestConfig = { @@ -53,7 +51,7 @@ const SimpleCommentScreen = React.createClass({ ajaxSending: false, }); }); - }, + }; render() { return ( @@ -65,7 +63,7 @@ const SimpleCommentScreen = React.createClass({

    ); - }, -}); + } +} export default SimpleCommentScreen; diff --git a/client/app/reducers/commentsReducer.js b/client/app/reducers/commentsReducer.js index 5ed231b1f..239b024a9 100644 --- a/client/app/reducers/commentsReducer.js +++ b/client/app/reducers/commentsReducer.js @@ -11,7 +11,7 @@ export const $$initialState = Immutable.fromJS({ submitCommentError: null, }); -export default function commentsReducer($$state = $$initialState, action) { +export default function commentsReducer($$state = $$initialState, action = null) { const { type, comment, comments, error } = action; switch (type) { diff --git a/client/app/startup/ClientApp.jsx b/client/app/startup/ClientApp.jsx index b8035b7d3..9f5744ccf 100644 --- a/client/app/startup/ClientApp.jsx +++ b/client/app/startup/ClientApp.jsx @@ -6,12 +6,11 @@ import CommentScreen from '../components/CommentScreen'; const App = props => { const store = createStore(props); - const reactComponent = ( - - - + return ( + + + ); - return reactComponent; }; // Export is needed for the hot reload server diff --git a/client/app/startup/ServerApp.jsx b/client/app/startup/ServerApp.jsx index 6786a0bed..612bb0581 100644 --- a/client/app/startup/ServerApp.jsx +++ b/client/app/startup/ServerApp.jsx @@ -6,12 +6,11 @@ import CommentScreen from '../components/CommentScreen'; const App = props => { const store = createStore(props); - const reactComponent = ( - - - + return ( + + + ); - return reactComponent; }; export default App; diff --git a/client/app/stores/commentsStore.js b/client/app/stores/commentsStore.js index 0622dce70..5d1e60ac6 100644 --- a/client/app/stores/commentsStore.js +++ b/client/app/stores/commentsStore.js @@ -17,8 +17,6 @@ export default props => { const composedStore = compose( applyMiddleware(thunkMiddleware, loggerMiddleware) ); - const storeCreator = composedStore(createStore); - const store = storeCreator(reducer, initialState); - return store; + return composedStore(createStore)(reducer, initialState); }; From 84de8d1e8b48e64796964916987fbba71674f4cf Mon Sep 17 00:00:00 2001 From: Roger Studner Date: Mon, 2 Nov 2015 07:19:37 -0500 Subject: [PATCH 157/548] updated to constructor/bind syntax after talking with Alex I also renamed the "component internal non-react workflow methods" to have a leading _ per multiple best-practices guides etc. --- client/app/components/CommentBox.jsx | 18 +++-- client/app/components/CommentForm.jsx | 68 +++++++++++-------- client/app/components/CommentList.jsx | 11 ++- client/app/components/SimpleCommentScreen.jsx | 28 +++++--- 4 files changed, 77 insertions(+), 48 deletions(-) diff --git a/client/app/components/CommentBox.jsx b/client/app/components/CommentBox.jsx index 9596048fe..80da0185a 100644 --- a/client/app/components/CommentBox.jsx +++ b/client/app/components/CommentBox.jsx @@ -4,6 +4,14 @@ import CommentForm from './CommentForm'; import CommentList from './CommentList'; class CommentBox extends React.Component { + constructor(props, context) { + super(props, context); + this.state = {}; + + this._ajaxCounter = this._ajaxCounter.bind(this); + this._isSendingAjax = this._isSendingAjax.bind(this); + } + static displayName = 'CommentBox'; static propTypes = { pollInterval: PropTypes.number.isRequired, @@ -17,12 +25,12 @@ class CommentBox extends React.Component { setInterval(fetchComments, this.props.pollInterval); } - ajaxCounter() { + _ajaxCounter() { return this.props.data.get('ajaxCounter'); } - isSendingAjax() { - return this.ajaxCounter() > 0; + _isSendingAjax() { + return this._ajaxCounter() > 0; } render() { @@ -31,14 +39,14 @@ class CommentBox extends React.Component { return (

    - Comments { this.isSendingAjax() && `SENDING AJAX REQUEST! Ajax Counter is ${this.ajaxCounter()}` } + Comments { this._isSendingAjax() && `SENDING AJAX REQUEST! Ajax Counter is ${this._ajaxCounter()}` }

    Text take Github Flavored Markdown. Comments older than 24 hours are deleted. Name is preserved, Text is reset, between submits.

    diff --git a/client/app/components/CommentForm.jsx b/client/app/components/CommentForm.jsx index f0c5ae152..a3c71cce2 100644 --- a/client/app/components/CommentForm.jsx +++ b/client/app/components/CommentForm.jsx @@ -11,10 +11,18 @@ const emptyComment = { author: '', text: '' }; const textPlaceholder = 'Say something using markdown...'; class CommentForm extends React.Component { - state = { - formMode: 0, - comment: emptyComment, - }; + constructor(props, context) { + super(props, context); + this.state = { + formMode: 0, + comment: emptyComment, + }; + + this._handleSelect = this._handleSelect.bind(this); + this._handleChange = this._handleChange.bind(this); + this._handleSubmit = this._handleSubmit.bind(this); + this._resetAndFocus = this._resetAndFocus.bind(this); + } static displayName = 'CommentForm'; @@ -24,11 +32,11 @@ class CommentForm extends React.Component { error: PropTypes.any, }; - handleSelect = (selectedKey) => { + _handleSelect(selectedKey) { this.setState({ formMode: selectedKey }); - }; + } - handleChange = () => { + _handleChange() { let comment; if (this.state.formMode < 2) { @@ -46,17 +54,17 @@ class CommentForm extends React.Component { } this.setState({ comment }); - }; + } - handleSubmit = (e) => { + _handleSubmit(e) { e.preventDefault(); const { actions } = this.props; actions .submitComment(this.state.comment) - .then(this.resetAndFocus); - }; + .then(this._resetAndFocus); + } - resetAndFocus = () => { + _resetAndFocus() { // Don't reset a form that didn't submit, this results in data loss if (this.props.error) return; @@ -73,11 +81,11 @@ class CommentForm extends React.Component { ref.focus(); } - formHorizontal() { + _formHorizontal() { return (

    -
    +
    @@ -115,18 +123,18 @@ class CommentForm extends React.Component { ); } - formStacked() { + _formStacked() { return (

    - +
    - + @@ -163,7 +171,7 @@ class CommentForm extends React.Component { placeholder="Your Name" ref="inlineAuthor" value={this.state.comment.author} - onChange={this.handleChange} + onChange={this._handleChange} disabled={this.props.ajaxSending} /> @@ -174,7 +182,7 @@ class CommentForm extends React.Component { placeholder={textPlaceholder} ref="inlineText" value={this.state.comment.text} - onChange={this.handleChange} + onChange={this._handleChange} disabled={this.props.ajaxSending} /> @@ -193,7 +201,7 @@ class CommentForm extends React.Component { ); } - errorWarning() { + _errorWarning() { // If there is no error, there is nothing to add to the DOM if (!this.props.error) return undefined; return ( @@ -208,13 +216,13 @@ class CommentForm extends React.Component { let inputForm; switch (this.state.formMode) { case 0: - inputForm = this.formHorizontal(); + inputForm = this._formHorizontal(); break; case 1: - inputForm = this.formStacked(); + inputForm = this._formStacked(); break; case 2: - inputForm = this.formInline(); + inputForm = this._formInline(); break; default: throw new Error(`Unknown form mode: ${this.state.formMode}.`); @@ -226,10 +234,10 @@ class CommentForm extends React.Component { transitionEnterTimeout={300} transitionLeaveTimeout={300} > - {this.errorWarning()} + {this._errorWarning()} -