react_on_rails 2.3.0 → 3.0.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/generators/USAGE CHANGED
@@ -106,10 +106,10 @@ Then you may run
106
106
 
107
107
  And you will see several useful commands:
108
108
 
109
- node-server-hot
110
- echo 'visit http://localhost:4000' && cd client && npm start
111
- rails-server
112
- echo 'visit http://localhost:3000/hello_world' && foreman start -f Procfile.dev
109
+ express-server
110
+ echo 'visit http://localhost:4000' && cd client && npm start
111
+ rails-server
112
+ echo 'visit http://localhost:3000/hello_world' && foreman start -f Procfile.dev
113
113
 
114
114
  More Details:
115
115
 
@@ -72,7 +72,7 @@ module ReactOnRails
72
72
  GeneratorMessages.messages.each { |message| puts message }
73
73
  end
74
74
 
75
- def invoke_generators # rubocop:disable Metrics/CyclomaticComplexity
75
+ def invoke_generators
76
76
  invoke "react_on_rails:base"
77
77
  invoke "react_on_rails:react_no_redux" unless options.redux?
78
78
  invoke "react_on_rails:react_with_redux" if options.redux?
@@ -6,12 +6,11 @@ require "react_on_rails/configuration"
6
6
  require "react_on_rails/server_rendering_pool"
7
7
  require "react_on_rails/engine"
8
8
  require "react_on_rails/version_syntax_converter"
9
- require "react_on_rails/ensure_assets_compiled"
9
+ require "react_on_rails/test_helper"
10
10
  require "react_on_rails/git_utils"
11
11
  require "react_on_rails/utils"
12
-
13
- module ReactOnRails
14
- def self.configure_rspec_to_compile_assets(config, metatag = :js)
15
- config.before(:example, metatag) { ReactOnRails::EnsureAssetsCompiled.check_built_assets }
16
- end
17
- end
12
+ require "react_on_rails/test_helper"
13
+ require "react_on_rails/test_helper/webpack_assets_compiler"
14
+ require "react_on_rails/test_helper/webpack_assets_status_checker"
15
+ require "react_on_rails/test_helper/webpack_process_checker"
16
+ require "react_on_rails/test_helper/ensure_assets_compiled"
@@ -1,12 +1,17 @@
1
-
2
1
  module ReactOnRails
3
2
  def self.configure
4
3
  yield(configuration)
5
4
  end
6
5
 
6
+ DEFAULT_GENERATED_ASSETS_DIRS = [
7
+ %w(app assets javascripts generated),
8
+ %w(app assets javascripts stylesheets generated)
9
+ ].map { |dirs| File.join(*dirs) }.freeze
10
+
7
11
  def self.configuration
8
12
  @configuration ||= Configuration.new(
9
- server_bundle_js_file: "app/assets/javascripts/generated/server.js",
13
+ generated_assets_dirs: DEFAULT_GENERATED_ASSETS_DIRS,
14
+ server_bundle_js_file: File.join(*%w(app assets javascripts generated server.js)),
10
15
  prerender: false,
11
16
  replay_console: true,
12
17
  logging_on_server: true,
@@ -23,17 +28,18 @@ module ReactOnRails
23
28
  :trace, :development_mode,
24
29
  :logging_on_server, :server_renderer_pool_size,
25
30
  :server_renderer_timeout, :raise_on_prerender_error,
26
- :skip_display_none
31
+ :skip_display_none, :generated_assets_dirs
27
32
 
28
33
  def initialize(server_bundle_js_file: nil, prerender: nil, replay_console: nil,
29
34
  trace: nil, development_mode: nil,
30
35
  logging_on_server: nil, server_renderer_pool_size: nil,
31
36
  server_renderer_timeout: nil, raise_on_prerender_error: nil,
32
- skip_display_none: nil)
37
+ skip_display_none: nil, generated_assets_dirs: DEFAULT_GENERATED_ASSETS_DIRS)
33
38
  self.server_bundle_js_file = if File.exist?(server_bundle_js_file)
34
39
  server_bundle_js_file
35
40
  end
36
41
 
42
+ self.generated_assets_dirs = generated_assets_dirs
37
43
  self.prerender = prerender
38
44
  self.replay_console = replay_console
39
45
  self.logging_on_server = logging_on_server
@@ -0,0 +1,67 @@
1
+ module ReactOnRails
2
+ module TestHelper
3
+ # Because you will probably want to run RSpec tests that rely on compiled webpack assets
4
+ # (typically, your integration/feature specs where `js: true`), you will want to ensure you
5
+ # don't accidentally run tests on missing or stale webpack assets. If you did use stale
6
+ # Webpack assets, you will get invalid test results as your tests do not use the very latest
7
+ # JavaScript code.
8
+ #
9
+ # Call this method from inside of the `RSpec.configure` block in your `spec/rails_helper.rb`
10
+ # file, passing the config as an argument. You can customize this to your particular needs by
11
+ # replacing any of the default components.
12
+ #
13
+ # RSpec.configure do |config|
14
+ # ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
15
+ #
16
+ # You can pass an RSpec metatag as an optional second parameter to this helper method
17
+ # if you want this helper to run on examples other than where `js: true` (default). The helper
18
+ # will compile webpack files at most once per test run.
19
+ #
20
+ # If you do not want to be slowed down by re-compiling webpack assets from scratch every test
21
+ # run, you can call `npm run build:client` (and `npm run build:server` if doing server
22
+ # rendering) to have webpack recompile these files in the background, which will be *much*
23
+ # faster. The helper looks for these processes and will abort recompiling if it finds them
24
+ # to be running.
25
+ #
26
+ # See docs/additional_reading/rspec_configuration.md for more info
27
+ def self.configure_rspec_to_compile_assets(config, metatag = :js)
28
+ config.before(:example, metatag) { ReactOnRails::TestHelper.ensure_assets_compiled }
29
+ end
30
+
31
+ # Main entry point to ensuring assets are compiled. See `configure_rspec_to_compile_assets` for
32
+ # an example of usage.
33
+ #
34
+ # Typical usage passes all params as nil defaults.
35
+ # webpack_assets_status_checker: provide: `up_to_date?`, `whats_not_up_to_date`, `client_dir`
36
+ # defaults to ReactOnRails::TestHelper::WebpackAssetsStatusChecker
37
+ # webpack_process_checker: provide one method: `def running?`
38
+ # defaults to ReactOnRails::TestHelper::WebpackProcessChecker
39
+ # webpack_assets_compiler: provide one method: `def compile`
40
+ # defaults to ReactOnRails::TestHelper::WebpackAssetsCompiler
41
+ # client_dir and compiled_dirs are passed into the default webpack_assets_status_checker if you
42
+ # don't provide one.
43
+ def self.ensure_assets_compiled(webpack_assets_status_checker: nil,
44
+ webpack_assets_compiler: nil,
45
+ webpack_process_checker: nil,
46
+ client_dir: nil,
47
+ compiled_dirs: nil)
48
+
49
+ if webpack_assets_status_checker.nil?
50
+ client_dir ||= Rails.root.join("client")
51
+ compiled_dirs ||= ReactOnRails.configuration.generated_assets_dirs
52
+ webpack_assets_status_checker ||=
53
+ WebpackAssetsStatusChecker.new(client_dir: client_dir,
54
+ compiled_dirs: compiled_dirs)
55
+ end
56
+
57
+ webpack_assets_compiler ||= WebpackAssetsCompiler.new
58
+ webpack_process_checker ||= WebpackProcessChecker.new
59
+
60
+ ReactOnRails::TestHelper::EnsureAssetsCompiled.new(
61
+ webpack_assets_status_checker: webpack_assets_status_checker,
62
+ webpack_assets_compiler: webpack_assets_compiler,
63
+ webpack_process_checker: webpack_process_checker
64
+ ).call
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,73 @@
1
+ module ReactOnRails
2
+ module TestHelper
3
+ class EnsureAssetsCompiled
4
+ class << self
5
+ attr_accessor :has_been_run
6
+ @has_been_run = false
7
+ end
8
+
9
+ attr_reader :webpack_assets_status_checker,
10
+ :webpack_assets_compiler,
11
+ :webpack_process_checker
12
+
13
+ MAX_TIME_TO_WAIT = 5
14
+
15
+ def initialize(webpack_assets_status_checker: nil,
16
+ webpack_assets_compiler: nil,
17
+ webpack_process_checker: nil)
18
+ @webpack_assets_status_checker = webpack_assets_status_checker
19
+ @webpack_assets_compiler = webpack_assets_compiler
20
+ @webpack_process_checker = webpack_process_checker
21
+ end
22
+
23
+ def call
24
+ return if self.class.has_been_run
25
+
26
+ loop_count = 0
27
+ loop do
28
+ break if webpack_assets_status_checker.up_to_date?
29
+
30
+ puts_first_iteration_message(loop_count)
31
+
32
+ if webpack_process_checker.running? && loop_count < MAX_TIME_TO_WAIT
33
+ loop_count += 1
34
+ sleep 1
35
+ else
36
+ puts_max_iterations_message(loop_count)
37
+
38
+ webpack_assets_compiler.compile
39
+ puts
40
+ break
41
+ end
42
+ end
43
+
44
+ self.class.has_been_run = true
45
+ end
46
+
47
+ def puts_first_iteration_message(loop_count)
48
+ return unless loop_count == 0
49
+
50
+ puts "\n\nReact on Rails is ensuring your JavaScript generated files are up to date!"
51
+ end
52
+
53
+ def puts_max_iterations_message(loop_count)
54
+ if loop_count == MAX_TIME_TO_WAIT
55
+ stale_files = webpack_assets_status_checker.whats_not_up_to_date.join("\n")
56
+
57
+ puts <<-MSG
58
+
59
+ Even though we detected the webpack watch processes are running, we found files modified that are
60
+ not causing a rebuild of your generated files:
61
+
62
+ #{stale_files}
63
+
64
+ One possibility is that you modified a file in your directory that is not a dependency of
65
+ your webpack files: #{webpack_assets_status_checker.client_dir}
66
+
67
+ To be sure, we will now rebuild your generated files.
68
+ MSG
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,33 @@
1
+ # You can replace this implementation with your own for use by the
2
+ # ReactOnRails::TestHelper.ensure_assets_compiled helper
3
+ module ReactOnRails
4
+ module TestHelper
5
+ class WebpackAssetsCompiler
6
+ def compile
7
+ compile_type(:client)
8
+ compile_type(:server) if Utils.server_rendering_is_enabled?
9
+ end
10
+
11
+ private
12
+
13
+ def compile_type(type)
14
+ unless @printed_msg
15
+ puts <<-MSG
16
+ If you are frequently running tests, you can run webpack in watch mode to speed up this process.
17
+ See the official documentation:
18
+ https://github.com/shakacode/react_on_rails/blob/master/docs/additional_reading/rspec_configuration.md
19
+ MSG
20
+ @printed_msg = true
21
+ end
22
+
23
+ puts "\nBuilding Webpack #{type}-rendering assets..."
24
+
25
+ build_output = `cd client && npm run build:#{type}`
26
+
27
+ fail "Error in building assets!\n#{build_output}" unless Utils.last_process_completed_successfully?
28
+
29
+ puts "Completed building Webpack #{type}-rendering assets."
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,76 @@
1
+ require "rake"
2
+ require "fileutils"
3
+
4
+ # You can replace this implementation with your own for use by the
5
+ # ReactOnRails::TestHelper.ensure_assets_compiled helper
6
+ module ReactOnRails
7
+ module TestHelper
8
+ class WebpackAssetsStatusChecker
9
+ attr_reader :client_dir, :compiled_dirs
10
+
11
+ def initialize(args = {})
12
+ @compiled_dirs = args.fetch(:compiled_dirs)
13
+ @client_dir = args.fetch(:client_dir)
14
+ @last_stale_files = ""
15
+ end
16
+
17
+ def up_to_date?
18
+ # binding.pry
19
+ return false unless assets_exist?
20
+ all_compiled_assets.all? do |asset|
21
+ FileUtils.uptodate?(asset, client_files)
22
+ end
23
+ end
24
+
25
+ def whats_not_up_to_date
26
+ return [] unless assets_exist?
27
+ result = []
28
+ all_compiled_assets.all? do |asset|
29
+ result += whats_not_up_to_date_worker(asset, client_files)
30
+ end
31
+ result.uniq
32
+ end
33
+
34
+ private
35
+
36
+ def whats_not_up_to_date_worker(new, old_list)
37
+ # derived from lib/ruby/2.2.0/fileutils.rb:147
38
+ not_up_to_date = []
39
+ new_time = File.mtime(new)
40
+ old_list.each do |old|
41
+ if File.exist?(old)
42
+ not_up_to_date << old unless new_time > File.mtime(old)
43
+ end
44
+ end
45
+ not_up_to_date
46
+ end
47
+
48
+ def all_compiled_assets
49
+ make_file_list(make_globs(compiled_dirs)).to_ary
50
+ end
51
+
52
+ def client_files
53
+ @client_files ||= make_file_list(make_globs(client_dir)).to_ary
54
+ end
55
+
56
+ def make_globs(dirs)
57
+ Array(dirs).map { |dir| File.join(dir, "**", "*") }
58
+ end
59
+
60
+ def assets_exist?
61
+ all_compiled_assets.to_ary.size > 0
62
+ end
63
+
64
+ def make_file_list(glob)
65
+ FileList.new(glob) do |fl|
66
+ fl.exclude(%r{/node_modules/})
67
+ fl.exclude(".DS_Store")
68
+ fl.exclude(".keep")
69
+ fl.exclude("thumbs.db")
70
+ fl.exclude(".")
71
+ fl.exclude("..")
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,50 @@
1
+ # You can replace this implementation with your own for use by the
2
+ # ReactOnRails::TestHelper.ensure_assets_compiled helper
3
+ module ReactOnRails
4
+ module TestHelper
5
+ class WebpackProcessChecker
6
+ def initialize
7
+ @printed_once = {}
8
+ end
9
+
10
+ def running?
11
+ client_running = check_running_for_type("client")
12
+ return client_running unless Utils.server_rendering_is_enabled?
13
+
14
+ server_running = check_running_for_type("server")
15
+ fail_if_only_running_for_one_type(client_running, server_running)
16
+
17
+ client_running && server_running
18
+ end
19
+
20
+ private
21
+
22
+ # We only want to do this if server rendering is enabled.
23
+ def fail_if_only_running_for_one_type(client_running, server_running)
24
+ return unless client_running ^ server_running
25
+ fail "\n\nError: detected webpack is not running for both types of assets:\n"\
26
+ "***Webpack Client Process Running?: #{client_running}\n"\
27
+ "***Webpack Server Process Running?: #{server_running}"
28
+ end
29
+
30
+ def check_running_for_type(type)
31
+ type = type.to_sym
32
+
33
+ response = `pgrep -fl 'bin/webpack\s(\\-w|\\-\\-watch)\s\\-\\-config\s.*#{type}.*\\.js'`
34
+ is_running = Utils.last_process_completed_successfully?
35
+
36
+ if is_running
37
+ if @printed_once.empty?
38
+ puts "\nDetected Webpack processes running to rebuild your generated files:"
39
+ end
40
+ unless @printed_once[type]
41
+ puts "#{type}: #{response}"
42
+ @printed_once[type] = true
43
+ end
44
+ end
45
+
46
+ is_running
47
+ end
48
+ end
49
+ end
50
+ end
@@ -1,7 +1,17 @@
1
+ require "English"
2
+
1
3
  module ReactOnRails
2
4
  module Utils
3
5
  def self.object_to_boolean(value)
4
6
  [true, "true", "yes", 1, "1", "t"].include?(value.class == String ? value.downcase : value)
5
7
  end
8
+
9
+ def self.server_rendering_is_enabled?
10
+ ReactOnRails.configuration.server_bundle_js_file.present?
11
+ end
12
+
13
+ def self.last_process_completed_successfully?
14
+ $CHILD_STATUS.exitstatus == 0
15
+ end
6
16
  end
7
17
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module ReactOnRails
3
- VERSION = "2.3.0".freeze
3
+ VERSION = "3.0.0.beta.1".freeze
4
4
  end
data/npm-shrinkwrap.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-on-rails",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "dependencies": {
5
5
  "abab": {
6
6
  "version": "1.0.3",
@@ -1960,6 +1960,678 @@
1960
1960
  "from": "fs-readdir-recursive@>=0.1.0 <0.2.0",
1961
1961
  "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-0.1.2.tgz"
1962
1962
  },
1963
+ "fsevents": {
1964
+ "version": "1.0.7",
1965
+ "from": "fsevents@>=1.0.0 <2.0.0",
1966
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.0.7.tgz",
1967
+ "dependencies": {
1968
+ "ansi": {
1969
+ "version": "0.3.0",
1970
+ "from": "ansi@~0.3.0",
1971
+ "resolved": "https://registry.npmjs.org/ansi/-/ansi-0.3.0.tgz"
1972
+ },
1973
+ "ansi-regex": {
1974
+ "version": "2.0.0",
1975
+ "from": "ansi-regex@^2.0.0",
1976
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
1977
+ },
1978
+ "ansi-styles": {
1979
+ "version": "2.1.0",
1980
+ "from": "ansi-styles@^2.1.0",
1981
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz"
1982
+ },
1983
+ "are-we-there-yet": {
1984
+ "version": "1.0.5",
1985
+ "from": "are-we-there-yet@~1.0.0",
1986
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.0.5.tgz"
1987
+ },
1988
+ "asn1": {
1989
+ "version": "0.2.3",
1990
+ "from": "asn1@>=0.2.3 <0.3.0",
1991
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz"
1992
+ },
1993
+ "assert-plus": {
1994
+ "version": "0.1.5",
1995
+ "from": "assert-plus@^0.1.5",
1996
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
1997
+ },
1998
+ "async": {
1999
+ "version": "1.5.1",
2000
+ "from": "async@^1.4.0",
2001
+ "resolved": "https://registry.npmjs.org/async/-/async-1.5.1.tgz"
2002
+ },
2003
+ "aws-sign2": {
2004
+ "version": "0.6.0",
2005
+ "from": "aws-sign2@~0.6.0",
2006
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz"
2007
+ },
2008
+ "bl": {
2009
+ "version": "1.0.0",
2010
+ "from": "bl@~1.0.0",
2011
+ "resolved": "https://registry.npmjs.org/bl/-/bl-1.0.0.tgz"
2012
+ },
2013
+ "block-stream": {
2014
+ "version": "0.0.8",
2015
+ "from": "block-stream@*",
2016
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.8.tgz"
2017
+ },
2018
+ "boom": {
2019
+ "version": "2.10.1",
2020
+ "from": "boom@2.x.x",
2021
+ "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz"
2022
+ },
2023
+ "caseless": {
2024
+ "version": "0.11.0",
2025
+ "from": "caseless@~0.11.0",
2026
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz"
2027
+ },
2028
+ "chalk": {
2029
+ "version": "1.1.1",
2030
+ "from": "chalk@^1.1.1",
2031
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz"
2032
+ },
2033
+ "combined-stream": {
2034
+ "version": "1.0.5",
2035
+ "from": "combined-stream@~1.0.5",
2036
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz"
2037
+ },
2038
+ "commander": {
2039
+ "version": "2.9.0",
2040
+ "from": "commander@^2.9.0",
2041
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz"
2042
+ },
2043
+ "core-util-is": {
2044
+ "version": "1.0.2",
2045
+ "from": "core-util-is@~1.0.0",
2046
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz"
2047
+ },
2048
+ "cryptiles": {
2049
+ "version": "2.0.5",
2050
+ "from": "cryptiles@2.x.x",
2051
+ "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz"
2052
+ },
2053
+ "dashdash": {
2054
+ "version": "1.11.0",
2055
+ "from": "dashdash@>=1.10.1 <2.0.0",
2056
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.11.0.tgz"
2057
+ },
2058
+ "debug": {
2059
+ "version": "0.7.4",
2060
+ "from": "debug@~0.7.2",
2061
+ "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz"
2062
+ },
2063
+ "deep-extend": {
2064
+ "version": "0.4.0",
2065
+ "from": "deep-extend@~0.4.0",
2066
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.0.tgz"
2067
+ },
2068
+ "delayed-stream": {
2069
+ "version": "1.0.0",
2070
+ "from": "delayed-stream@~1.0.0",
2071
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
2072
+ },
2073
+ "delegates": {
2074
+ "version": "0.1.0",
2075
+ "from": "delegates@^0.1.0",
2076
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-0.1.0.tgz"
2077
+ },
2078
+ "ecc-jsbn": {
2079
+ "version": "0.1.1",
2080
+ "from": "ecc-jsbn@>=0.0.1 <1.0.0",
2081
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz"
2082
+ },
2083
+ "escape-string-regexp": {
2084
+ "version": "1.0.4",
2085
+ "from": "escape-string-regexp@^1.0.2",
2086
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.4.tgz"
2087
+ },
2088
+ "extend": {
2089
+ "version": "3.0.0",
2090
+ "from": "extend@~3.0.0",
2091
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz"
2092
+ },
2093
+ "extsprintf": {
2094
+ "version": "1.0.2",
2095
+ "from": "extsprintf@1.0.2",
2096
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz"
2097
+ },
2098
+ "forever-agent": {
2099
+ "version": "0.6.1",
2100
+ "from": "forever-agent@~0.6.1",
2101
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz"
2102
+ },
2103
+ "form-data": {
2104
+ "version": "1.0.0-rc3",
2105
+ "from": "form-data@~1.0.0-rc3",
2106
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.0-rc3.tgz"
2107
+ },
2108
+ "fstream": {
2109
+ "version": "1.0.8",
2110
+ "from": "fstream@^1.0.2",
2111
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.8.tgz"
2112
+ },
2113
+ "fstream-ignore": {
2114
+ "version": "1.0.3",
2115
+ "from": "fstream-ignore@~1.0.3",
2116
+ "resolved": "https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-1.0.3.tgz",
2117
+ "dependencies": {
2118
+ "minimatch": {
2119
+ "version": "3.0.0",
2120
+ "from": "minimatch@^3.0.0",
2121
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
2122
+ "dependencies": {
2123
+ "brace-expansion": {
2124
+ "version": "1.1.2",
2125
+ "from": "brace-expansion@^1.0.0",
2126
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz",
2127
+ "dependencies": {
2128
+ "balanced-match": {
2129
+ "version": "0.3.0",
2130
+ "from": "balanced-match@^0.3.0",
2131
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
2132
+ },
2133
+ "concat-map": {
2134
+ "version": "0.0.1",
2135
+ "from": "concat-map@0.0.1",
2136
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
2137
+ }
2138
+ }
2139
+ }
2140
+ }
2141
+ }
2142
+ }
2143
+ },
2144
+ "gauge": {
2145
+ "version": "1.2.2",
2146
+ "from": "gauge@~1.2.0",
2147
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-1.2.2.tgz"
2148
+ },
2149
+ "generate-function": {
2150
+ "version": "2.0.0",
2151
+ "from": "generate-function@^2.0.0",
2152
+ "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"
2153
+ },
2154
+ "generate-object-property": {
2155
+ "version": "1.2.0",
2156
+ "from": "generate-object-property@^1.1.0",
2157
+ "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz"
2158
+ },
2159
+ "graceful-fs": {
2160
+ "version": "4.1.2",
2161
+ "from": "graceful-fs@^4.1.2",
2162
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.2.tgz"
2163
+ },
2164
+ "graceful-readlink": {
2165
+ "version": "1.0.1",
2166
+ "from": "graceful-readlink@>= 1.0.0",
2167
+ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz"
2168
+ },
2169
+ "har-validator": {
2170
+ "version": "2.0.3",
2171
+ "from": "har-validator@~2.0.2",
2172
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.3.tgz"
2173
+ },
2174
+ "has-ansi": {
2175
+ "version": "2.0.0",
2176
+ "from": "has-ansi@^2.0.0",
2177
+ "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz"
2178
+ },
2179
+ "has-unicode": {
2180
+ "version": "1.0.1",
2181
+ "from": "has-unicode@^1.0.0",
2182
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-1.0.1.tgz"
2183
+ },
2184
+ "hawk": {
2185
+ "version": "3.1.2",
2186
+ "from": "hawk@~3.1.0",
2187
+ "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.2.tgz"
2188
+ },
2189
+ "hoek": {
2190
+ "version": "2.16.3",
2191
+ "from": "hoek@2.x.x",
2192
+ "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz"
2193
+ },
2194
+ "http-signature": {
2195
+ "version": "1.1.0",
2196
+ "from": "http-signature@~1.1.0",
2197
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.0.tgz"
2198
+ },
2199
+ "inherits": {
2200
+ "version": "2.0.1",
2201
+ "from": "inherits@*",
2202
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
2203
+ },
2204
+ "ini": {
2205
+ "version": "1.3.4",
2206
+ "from": "ini@~1.3.0",
2207
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz"
2208
+ },
2209
+ "is-my-json-valid": {
2210
+ "version": "2.12.3",
2211
+ "from": "is-my-json-valid@^2.12.3",
2212
+ "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.3.tgz"
2213
+ },
2214
+ "is-property": {
2215
+ "version": "1.0.2",
2216
+ "from": "is-property@^1.0.0",
2217
+ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz"
2218
+ },
2219
+ "is-typedarray": {
2220
+ "version": "1.0.0",
2221
+ "from": "is-typedarray@~1.0.0",
2222
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz"
2223
+ },
2224
+ "isarray": {
2225
+ "version": "0.0.1",
2226
+ "from": "isarray@0.0.1",
2227
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
2228
+ },
2229
+ "isstream": {
2230
+ "version": "0.1.2",
2231
+ "from": "isstream@~0.1.2",
2232
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz"
2233
+ },
2234
+ "jodid25519": {
2235
+ "version": "1.0.2",
2236
+ "from": "jodid25519@>=1.0.0 <2.0.0",
2237
+ "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz"
2238
+ },
2239
+ "jsbn": {
2240
+ "version": "0.1.0",
2241
+ "from": "jsbn@>=0.1.0 <0.2.0",
2242
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.0.tgz"
2243
+ },
2244
+ "json-schema": {
2245
+ "version": "0.2.2",
2246
+ "from": "json-schema@0.2.2",
2247
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz"
2248
+ },
2249
+ "json-stringify-safe": {
2250
+ "version": "5.0.1",
2251
+ "from": "json-stringify-safe@~5.0.1",
2252
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz"
2253
+ },
2254
+ "jsonpointer": {
2255
+ "version": "2.0.0",
2256
+ "from": "jsonpointer@2.0.0",
2257
+ "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz"
2258
+ },
2259
+ "jsprim": {
2260
+ "version": "1.2.2",
2261
+ "from": "jsprim@^1.2.2",
2262
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.2.2.tgz"
2263
+ },
2264
+ "lodash._basetostring": {
2265
+ "version": "3.0.1",
2266
+ "from": "lodash._basetostring@^3.0.0",
2267
+ "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz"
2268
+ },
2269
+ "lodash._createpadding": {
2270
+ "version": "3.6.1",
2271
+ "from": "lodash._createpadding@^3.0.0",
2272
+ "resolved": "https://registry.npmjs.org/lodash._createpadding/-/lodash._createpadding-3.6.1.tgz"
2273
+ },
2274
+ "lodash.pad": {
2275
+ "version": "3.1.1",
2276
+ "from": "lodash.pad@^3.0.0",
2277
+ "resolved": "https://registry.npmjs.org/lodash.pad/-/lodash.pad-3.1.1.tgz"
2278
+ },
2279
+ "lodash.padleft": {
2280
+ "version": "3.1.1",
2281
+ "from": "lodash.padleft@^3.0.0",
2282
+ "resolved": "https://registry.npmjs.org/lodash.padleft/-/lodash.padleft-3.1.1.tgz"
2283
+ },
2284
+ "lodash.padright": {
2285
+ "version": "3.1.1",
2286
+ "from": "lodash.padright@^3.0.0",
2287
+ "resolved": "https://registry.npmjs.org/lodash.padright/-/lodash.padright-3.1.1.tgz"
2288
+ },
2289
+ "lodash.repeat": {
2290
+ "version": "3.0.1",
2291
+ "from": "lodash.repeat@^3.0.0",
2292
+ "resolved": "https://registry.npmjs.org/lodash.repeat/-/lodash.repeat-3.0.1.tgz"
2293
+ },
2294
+ "mime-db": {
2295
+ "version": "1.21.0",
2296
+ "from": "mime-db@~1.21.0",
2297
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.21.0.tgz"
2298
+ },
2299
+ "mime-types": {
2300
+ "version": "2.1.9",
2301
+ "from": "mime-types@~2.1.7",
2302
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.9.tgz"
2303
+ },
2304
+ "minimist": {
2305
+ "version": "0.0.8",
2306
+ "from": "minimist@0.0.8",
2307
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
2308
+ },
2309
+ "mkdirp": {
2310
+ "version": "0.5.1",
2311
+ "from": "mkdirp@>=0.3.0 <0.4.0||>=0.4.0 <0.5.0||>=0.5.0 <0.6.0",
2312
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz"
2313
+ },
2314
+ "node-pre-gyp": {
2315
+ "version": "0.6.19",
2316
+ "from": "node-pre-gyp@>=0.6.17 <0.7.0",
2317
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.6.19.tgz",
2318
+ "dependencies": {
2319
+ "nopt": {
2320
+ "version": "3.0.6",
2321
+ "from": "nopt@~3.0.1",
2322
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
2323
+ "dependencies": {
2324
+ "abbrev": {
2325
+ "version": "1.0.7",
2326
+ "from": "abbrev@1",
2327
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.7.tgz"
2328
+ }
2329
+ }
2330
+ }
2331
+ }
2332
+ },
2333
+ "node-uuid": {
2334
+ "version": "1.4.7",
2335
+ "from": "node-uuid@~1.4.7",
2336
+ "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.7.tgz"
2337
+ },
2338
+ "npmlog": {
2339
+ "version": "2.0.0",
2340
+ "from": "npmlog@~2.0.0",
2341
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-2.0.0.tgz"
2342
+ },
2343
+ "oauth-sign": {
2344
+ "version": "0.8.0",
2345
+ "from": "oauth-sign@~0.8.0",
2346
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz"
2347
+ },
2348
+ "once": {
2349
+ "version": "1.1.1",
2350
+ "from": "once@~1.1.1",
2351
+ "resolved": "https://registry.npmjs.org/once/-/once-1.1.1.tgz"
2352
+ },
2353
+ "pinkie": {
2354
+ "version": "2.0.1",
2355
+ "from": "pinkie@^2.0.0",
2356
+ "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.1.tgz"
2357
+ },
2358
+ "pinkie-promise": {
2359
+ "version": "2.0.0",
2360
+ "from": "pinkie-promise@^2.0.0",
2361
+ "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.0.tgz"
2362
+ },
2363
+ "process-nextick-args": {
2364
+ "version": "1.0.6",
2365
+ "from": "process-nextick-args@~1.0.6",
2366
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.6.tgz"
2367
+ },
2368
+ "qs": {
2369
+ "version": "5.2.0",
2370
+ "from": "qs@~5.2.0",
2371
+ "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz"
2372
+ },
2373
+ "rc": {
2374
+ "version": "1.1.6",
2375
+ "from": "rc@~1.1.0",
2376
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.1.6.tgz",
2377
+ "dependencies": {
2378
+ "minimist": {
2379
+ "version": "1.2.0",
2380
+ "from": "minimist@^1.2.0",
2381
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz"
2382
+ }
2383
+ }
2384
+ },
2385
+ "readable-stream": {
2386
+ "version": "2.0.5",
2387
+ "from": "readable-stream@^2.0.0 || ^1.1.13",
2388
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.5.tgz"
2389
+ },
2390
+ "request": {
2391
+ "version": "2.67.0",
2392
+ "from": "request@2.x",
2393
+ "resolved": "https://registry.npmjs.org/request/-/request-2.67.0.tgz"
2394
+ },
2395
+ "rimraf": {
2396
+ "version": "2.5.0",
2397
+ "from": "rimraf@~2.5.0",
2398
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.0.tgz",
2399
+ "dependencies": {
2400
+ "glob": {
2401
+ "version": "6.0.3",
2402
+ "from": "glob@^6.0.1",
2403
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.3.tgz",
2404
+ "dependencies": {
2405
+ "inflight": {
2406
+ "version": "1.0.4",
2407
+ "from": "inflight@^1.0.4",
2408
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
2409
+ "dependencies": {
2410
+ "wrappy": {
2411
+ "version": "1.0.1",
2412
+ "from": "wrappy@1",
2413
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
2414
+ }
2415
+ }
2416
+ },
2417
+ "inherits": {
2418
+ "version": "2.0.1",
2419
+ "from": "inherits@~2.0.0",
2420
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
2421
+ },
2422
+ "minimatch": {
2423
+ "version": "3.0.0",
2424
+ "from": "minimatch@2 || 3",
2425
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
2426
+ "dependencies": {
2427
+ "brace-expansion": {
2428
+ "version": "1.1.2",
2429
+ "from": "brace-expansion@^1.0.0",
2430
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz",
2431
+ "dependencies": {
2432
+ "balanced-match": {
2433
+ "version": "0.3.0",
2434
+ "from": "balanced-match@^0.3.0",
2435
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
2436
+ },
2437
+ "concat-map": {
2438
+ "version": "0.0.1",
2439
+ "from": "concat-map@0.0.1",
2440
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
2441
+ }
2442
+ }
2443
+ }
2444
+ }
2445
+ },
2446
+ "once": {
2447
+ "version": "1.3.3",
2448
+ "from": "once@^1.3.0",
2449
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
2450
+ "dependencies": {
2451
+ "wrappy": {
2452
+ "version": "1.0.1",
2453
+ "from": "wrappy@1",
2454
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
2455
+ }
2456
+ }
2457
+ },
2458
+ "path-is-absolute": {
2459
+ "version": "1.0.0",
2460
+ "from": "path-is-absolute@^1.0.0",
2461
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
2462
+ }
2463
+ }
2464
+ }
2465
+ }
2466
+ },
2467
+ "semver": {
2468
+ "version": "5.1.0",
2469
+ "from": "semver@~5.1.0",
2470
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.1.0.tgz"
2471
+ },
2472
+ "sntp": {
2473
+ "version": "1.0.9",
2474
+ "from": "sntp@1.x.x",
2475
+ "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
2476
+ },
2477
+ "sshpk": {
2478
+ "version": "1.7.2",
2479
+ "from": "sshpk@^1.7.0",
2480
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.7.2.tgz",
2481
+ "dependencies": {
2482
+ "assert-plus": {
2483
+ "version": "0.2.0",
2484
+ "from": "assert-plus@>=0.2.0 <0.3.0",
2485
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz"
2486
+ }
2487
+ }
2488
+ },
2489
+ "string_decoder": {
2490
+ "version": "0.10.31",
2491
+ "from": "string_decoder@~0.10.x",
2492
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
2493
+ },
2494
+ "stringstream": {
2495
+ "version": "0.0.5",
2496
+ "from": "stringstream@~0.0.4",
2497
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz"
2498
+ },
2499
+ "strip-ansi": {
2500
+ "version": "3.0.0",
2501
+ "from": "strip-ansi@^3.0.0",
2502
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz"
2503
+ },
2504
+ "strip-json-comments": {
2505
+ "version": "1.0.4",
2506
+ "from": "strip-json-comments@~1.0.4",
2507
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz"
2508
+ },
2509
+ "supports-color": {
2510
+ "version": "2.0.0",
2511
+ "from": "supports-color@^2.0.0",
2512
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz"
2513
+ },
2514
+ "tar": {
2515
+ "version": "2.2.1",
2516
+ "from": "tar@~2.2.0",
2517
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz"
2518
+ },
2519
+ "tar-pack": {
2520
+ "version": "3.1.2",
2521
+ "from": "tar-pack@~3.1.0",
2522
+ "resolved": "https://registry.npmjs.org/tar-pack/-/tar-pack-3.1.2.tgz",
2523
+ "dependencies": {
2524
+ "rimraf": {
2525
+ "version": "2.4.5",
2526
+ "from": "rimraf@~2.4.4",
2527
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz",
2528
+ "dependencies": {
2529
+ "glob": {
2530
+ "version": "6.0.3",
2531
+ "from": "glob@^6.0.1",
2532
+ "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.3.tgz",
2533
+ "dependencies": {
2534
+ "inflight": {
2535
+ "version": "1.0.4",
2536
+ "from": "inflight@^1.0.4",
2537
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
2538
+ "dependencies": {
2539
+ "wrappy": {
2540
+ "version": "1.0.1",
2541
+ "from": "wrappy@1",
2542
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
2543
+ }
2544
+ }
2545
+ },
2546
+ "inherits": {
2547
+ "version": "2.0.1",
2548
+ "from": "inherits@2",
2549
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
2550
+ },
2551
+ "minimatch": {
2552
+ "version": "3.0.0",
2553
+ "from": "minimatch@2 || 3",
2554
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
2555
+ "dependencies": {
2556
+ "brace-expansion": {
2557
+ "version": "1.1.2",
2558
+ "from": "brace-expansion@^1.0.0",
2559
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz",
2560
+ "dependencies": {
2561
+ "balanced-match": {
2562
+ "version": "0.3.0",
2563
+ "from": "balanced-match@^0.3.0",
2564
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
2565
+ },
2566
+ "concat-map": {
2567
+ "version": "0.0.1",
2568
+ "from": "concat-map@0.0.1",
2569
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
2570
+ }
2571
+ }
2572
+ }
2573
+ }
2574
+ },
2575
+ "once": {
2576
+ "version": "1.3.3",
2577
+ "from": "once@^1.3.0",
2578
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
2579
+ "dependencies": {
2580
+ "wrappy": {
2581
+ "version": "1.0.1",
2582
+ "from": "wrappy@1",
2583
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
2584
+ }
2585
+ }
2586
+ },
2587
+ "path-is-absolute": {
2588
+ "version": "1.0.0",
2589
+ "from": "path-is-absolute@^1.0.0",
2590
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
2591
+ }
2592
+ }
2593
+ }
2594
+ }
2595
+ }
2596
+ }
2597
+ },
2598
+ "tough-cookie": {
2599
+ "version": "2.2.1",
2600
+ "from": "tough-cookie@~2.2.0",
2601
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.1.tgz"
2602
+ },
2603
+ "tunnel-agent": {
2604
+ "version": "0.4.2",
2605
+ "from": "tunnel-agent@~0.4.1",
2606
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.2.tgz"
2607
+ },
2608
+ "tweetnacl": {
2609
+ "version": "0.13.2",
2610
+ "from": "tweetnacl@>=0.13.0 <1.0.0",
2611
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.2.tgz"
2612
+ },
2613
+ "uid-number": {
2614
+ "version": "0.0.3",
2615
+ "from": "uid-number@0.0.3",
2616
+ "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz"
2617
+ },
2618
+ "util-deprecate": {
2619
+ "version": "1.0.2",
2620
+ "from": "util-deprecate@~1.0.1",
2621
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
2622
+ },
2623
+ "verror": {
2624
+ "version": "1.3.6",
2625
+ "from": "verror@1.3.6",
2626
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz"
2627
+ },
2628
+ "xtend": {
2629
+ "version": "4.0.1",
2630
+ "from": "xtend@^4.0.0",
2631
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz"
2632
+ }
2633
+ }
2634
+ },
1963
2635
  "function-bind": {
1964
2636
  "version": "1.0.2",
1965
2637
  "from": "function-bind@>=1.0.2 <1.1.0",
@@ -2477,6 +3149,11 @@
2477
3149
  "from": "lodash@>=3.2.0 <4.0.0",
2478
3150
  "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz"
2479
3151
  },
3152
+ "lodash-es": {
3153
+ "version": "4.2.1",
3154
+ "from": "lodash-es@>=4.2.1 <5.0.0",
3155
+ "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.2.1.tgz"
3156
+ },
2480
3157
  "lodash._arraycopy": {
2481
3158
  "version": "3.0.0",
2482
3159
  "from": "lodash._arraycopy@>=3.0.0 <4.0.0",
@@ -2719,6 +3396,11 @@
2719
3396
  "from": "mute-stream@0.0.5",
2720
3397
  "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz"
2721
3398
  },
3399
+ "nan": {
3400
+ "version": "2.2.0",
3401
+ "from": "nan@>=2.1.0 <3.0.0",
3402
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.2.0.tgz"
3403
+ },
2722
3404
  "natural-compare": {
2723
3405
  "version": "1.2.2",
2724
3406
  "from": "natural-compare@>=1.2.2 <1.3.0",
@@ -3097,6 +3779,18 @@
3097
3779
  "from": "redent@>=1.0.0 <2.0.0",
3098
3780
  "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz"
3099
3781
  },
3782
+ "redux": {
3783
+ "version": "3.3.1",
3784
+ "from": "redux@*",
3785
+ "resolved": "https://registry.npmjs.org/redux/-/redux-3.3.1.tgz",
3786
+ "dependencies": {
3787
+ "lodash": {
3788
+ "version": "4.2.1",
3789
+ "from": "lodash@>=4.2.1 <5.0.0",
3790
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.2.1.tgz"
3791
+ }
3792
+ }
3793
+ },
3100
3794
  "regenerate": {
3101
3795
  "version": "1.2.1",
3102
3796
  "from": "regenerate@>=1.2.1 <2.0.0",