attractor 0.5.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,15 +12,18 @@ module Attractor
12
12
  attr_accessor :values, :file_prefix
13
13
  def_delegator :@watcher, :watch
14
14
 
15
- def initialize(file_prefix: '')
15
+ def initialize(file_prefix: '', calculators:, open_browser: true)
16
16
  @file_prefix = file_prefix
17
- @calculator = Calculator.new(file_prefix: file_prefix)
18
- @values = @calculator.calculate
17
+ @calculators = calculators
18
+ @open_browser = open_browser
19
+ @values = @calculators.first.last.calculate
19
20
  @suggester = Suggester.new(values)
20
21
 
21
22
  @watcher = Watcher.new(file_prefix, lambda do
22
23
  report
23
24
  end)
25
+ rescue NoMethodError => e
26
+ raise 'There was a problem gathering churn changes'
24
27
  end
25
28
 
26
29
  def suggestions(quantile)
@@ -10,11 +10,11 @@ module Attractor
10
10
  puts "file_path#{' ' * 53}complexity churn"
11
11
  puts '-' * 80
12
12
 
13
- puts @values.map(&:to_s)
13
+ puts @values&.map(&:to_s)
14
14
 
15
15
  puts
16
16
  puts 'Suggestions for refactorings:'
17
- @suggestions.each { |sug| puts sug.file_path }
17
+ @suggestions&.each { |sug| puts sug.file_path }
18
18
  puts
19
19
  end
20
20
  end
@@ -22,7 +22,10 @@ module Attractor
22
22
  File.open('./attractor_output/index.html', 'w') { |file| file.write(render) }
23
23
  puts "Generated HTML report at #{File.expand_path './attractor_output/index.html'}"
24
24
 
25
- Launchy.open(File.expand_path('./attractor_output/index.html'))
25
+ if @open_browser
26
+ Launchy.open(File.expand_path('./attractor_output/index.html'))
27
+ puts "Opening browser window..."
28
+ end
26
29
  end
27
30
 
28
31
  def logo
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'pry'
4
3
  require 'rack/livereload'
5
4
  require 'rack'
6
5
  require 'sinatra/base'
@@ -15,6 +14,7 @@ module Attractor
15
14
 
16
15
  enable :static
17
16
  set :public_folder, File.expand_path('../../../app/assets', __dir__)
17
+ set :show_exceptions, :after_handler
18
18
 
19
19
  get '/' do
20
20
  erb File.read(File.expand_path('../../../app/views/index.html.erb', __dir__))
@@ -25,13 +25,18 @@ module Attractor
25
25
  end
26
26
 
27
27
  get '/values' do
28
- @reporter.values.to_json
28
+ type = params[:type] || 'rb'
29
+ @reporter.values(type: type).to_json
29
30
  end
30
31
 
31
32
  get '/suggestions' do
32
33
  threshold = params[:t] || 95
33
34
  @reporter.suggestions(threshold).to_json
34
35
  end
36
+
37
+ error NoMethodError do
38
+ { error: env['sinatra.error'].message }.to_json
39
+ end
35
40
  end
36
41
 
37
42
  # serving the HTML locally
@@ -42,7 +47,11 @@ module Attractor
42
47
  app = AttractorApp.new(self)
43
48
 
44
49
  puts 'Serving attractor at http://localhost:7890'
45
- Launchy.open('http://localhost:7890')
50
+
51
+ if @open_browser
52
+ Launchy.open('http://localhost:7890') if @open_browser
53
+ puts "Opening browser window..."
54
+ end
46
55
 
47
56
  Rack::Handler::WEBrick.run app, Port: 7890
48
57
  end
@@ -53,9 +62,17 @@ module Attractor
53
62
  app = AttractorApp.new(self)
54
63
 
55
64
  puts 'Serving attractor at http://localhost:7890'
56
- Launchy.open('http://localhost:7890')
65
+ if @open_browser
66
+ Launchy.open('http://localhost:7890')
67
+ puts "Opening browser window..."
68
+ end
57
69
 
58
70
  Rack::Handler::WEBrick.run Rack::LiveReload.new(app), Port: 7890
59
71
  end
72
+
73
+ def values(type: 'rb')
74
+ @values = @calculators[type].calculate
75
+ @values
76
+ end
60
77
  end
61
78
  end
@@ -1,3 +1,3 @@
1
1
  module Attractor
2
- VERSION = "0.5.1"
2
+ VERSION = "1.0.2"
3
3
  end
data/package-lock.json CHANGED
@@ -949,6 +949,54 @@
949
949
  "prop-types": "^15.5.10"
950
950
  }
951
951
  },
952
+ "@tanem/react-nprogress": {
953
+ "version": "3.0.6",
954
+ "resolved": "https://registry.npmjs.org/@tanem/react-nprogress/-/react-nprogress-3.0.6.tgz",
955
+ "integrity": "sha512-XqWCMhIg5P8hc/ThXuAcSbrg7SI8E+Ly1ijWR3ozGlHWjCU0DE4mTNCJJT6TJJz+AhB2pyfZByB80MHyR1A5lw==",
956
+ "dev": true,
957
+ "requires": {
958
+ "@babel/runtime": "^7.6.3",
959
+ "hoist-non-react-statics": "^3.3.0",
960
+ "prop-types": "^15.7.2",
961
+ "react-use": "^12.4.0"
962
+ },
963
+ "dependencies": {
964
+ "@babel/runtime": {
965
+ "version": "7.6.3",
966
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.6.3.tgz",
967
+ "integrity": "sha512-kq6anf9JGjW8Nt5rYfEuGRaEAaH1mkv3Bbu6rYvLOpPh/RusSJXuKPEAoZ7L7gybZkchE8+NV5g9vKF4AGAtsA==",
968
+ "dev": true,
969
+ "requires": {
970
+ "regenerator-runtime": "^0.13.2"
971
+ }
972
+ }
973
+ }
974
+ },
975
+ "@types/prop-types": {
976
+ "version": "15.7.3",
977
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
978
+ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==",
979
+ "dev": true
980
+ },
981
+ "@types/react": {
982
+ "version": "16.9.11",
983
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.11.tgz",
984
+ "integrity": "sha512-UBT4GZ3PokTXSWmdgC/GeCGEJXE5ofWyibCcecRLUVN2ZBpXQGVgQGtG2foS7CrTKFKlQVVswLvf7Js6XA/CVQ==",
985
+ "dev": true,
986
+ "requires": {
987
+ "@types/prop-types": "*",
988
+ "csstype": "^2.2.0"
989
+ }
990
+ },
991
+ "@types/react-wait": {
992
+ "version": "0.3.0",
993
+ "resolved": "https://registry.npmjs.org/@types/react-wait/-/react-wait-0.3.0.tgz",
994
+ "integrity": "sha512-5jIfDcHRjqeE7QfZG7kCqOpfrPSvOM1E3/nlKuJ/NZrG/WrhLo/AFr0i72jhTWzyNRo4ex0pshBaiCHksZXH3A==",
995
+ "dev": true,
996
+ "requires": {
997
+ "@types/react": "*"
998
+ }
999
+ },
952
1000
  "@webassemblyjs/ast": {
953
1001
  "version": "1.8.5",
954
1002
  "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz",
@@ -1438,6 +1486,12 @@
1438
1486
  "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
1439
1487
  "dev": true
1440
1488
  },
1489
+ "bowser": {
1490
+ "version": "1.9.4",
1491
+ "resolved": "https://registry.npmjs.org/bowser/-/bowser-1.9.4.tgz",
1492
+ "integrity": "sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==",
1493
+ "dev": true
1494
+ },
1441
1495
  "brace-expansion": {
1442
1496
  "version": "1.1.11",
1443
1497
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -1879,6 +1933,15 @@
1879
1933
  "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
1880
1934
  "dev": true
1881
1935
  },
1936
+ "copy-to-clipboard": {
1937
+ "version": "3.2.0",
1938
+ "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.2.0.tgz",
1939
+ "integrity": "sha512-eOZERzvCmxS8HWzugj4Uxl8OJxa7T2k1Gi0X5qavwydHIfuSHq2dTD09LOg/XyGq4Zpb5IsR/2OJ5lbOegz78w==",
1940
+ "dev": true,
1941
+ "requires": {
1942
+ "toggle-selection": "^1.0.6"
1943
+ }
1944
+ },
1882
1945
  "core-js-compat": {
1883
1946
  "version": "3.2.1",
1884
1947
  "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz",
@@ -1972,6 +2035,40 @@
1972
2035
  "randomfill": "^1.0.3"
1973
2036
  }
1974
2037
  },
2038
+ "css-in-js-utils": {
2039
+ "version": "2.0.1",
2040
+ "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.1.tgz",
2041
+ "integrity": "sha512-PJF0SpJT+WdbVVt0AOYp9C8GnuruRlL/UFW7932nLWmFLQTaWEzTBQEx7/hn4BuV+WON75iAViSUJLiU3PKbpA==",
2042
+ "dev": true,
2043
+ "requires": {
2044
+ "hyphenate-style-name": "^1.0.2",
2045
+ "isobject": "^3.0.1"
2046
+ }
2047
+ },
2048
+ "css-tree": {
2049
+ "version": "1.0.0-alpha.37",
2050
+ "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz",
2051
+ "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==",
2052
+ "dev": true,
2053
+ "requires": {
2054
+ "mdn-data": "2.0.4",
2055
+ "source-map": "^0.6.1"
2056
+ },
2057
+ "dependencies": {
2058
+ "source-map": {
2059
+ "version": "0.6.1",
2060
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
2061
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
2062
+ "dev": true
2063
+ }
2064
+ }
2065
+ },
2066
+ "csstype": {
2067
+ "version": "2.6.7",
2068
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.7.tgz",
2069
+ "integrity": "sha512-9Mcn9sFbGBAdmimWb2gLVDtFJzeKtDGIr76TUqmjZrw9LFXBMSU70lcs+C0/7fyCd6iBDqmksUcCOUIkisPHsQ==",
2070
+ "dev": true
2071
+ },
1975
2072
  "cyclist": {
1976
2073
  "version": "1.0.1",
1977
2074
  "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz",
@@ -2015,12 +2112,20 @@
2015
2112
  "d3-transition": "1",
2016
2113
  "d3-voronoi": "1",
2017
2114
  "d3-zoom": "1"
2115
+ },
2116
+ "dependencies": {
2117
+ "d3-array": {
2118
+ "version": "1.2.4",
2119
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
2120
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
2121
+ "dev": true
2122
+ }
2018
2123
  }
2019
2124
  },
2020
2125
  "d3-array": {
2021
- "version": "1.2.4",
2022
- "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
2023
- "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
2126
+ "version": "2.3.2",
2127
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.3.2.tgz",
2128
+ "integrity": "sha512-cg73UOh7D7e72FQQER4l5aXnEwlizah8TIggMn8qtEO/7APe5s6bAZhlDlVw0BRml6Qi4bd44WJ5HGuiK7fRyw==",
2024
2129
  "dev": true
2025
2130
  },
2026
2131
  "d3-axis": {
@@ -2050,6 +2155,14 @@
2050
2155
  "requires": {
2051
2156
  "d3-array": "1",
2052
2157
  "d3-path": "1"
2158
+ },
2159
+ "dependencies": {
2160
+ "d3-array": {
2161
+ "version": "1.2.4",
2162
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
2163
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
2164
+ "dev": true
2165
+ }
2053
2166
  }
2054
2167
  },
2055
2168
  "d3-collection": {
@@ -2071,6 +2184,14 @@
2071
2184
  "dev": true,
2072
2185
  "requires": {
2073
2186
  "d3-array": "^1.1.1"
2187
+ },
2188
+ "dependencies": {
2189
+ "d3-array": {
2190
+ "version": "1.2.4",
2191
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
2192
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
2193
+ "dev": true
2194
+ }
2074
2195
  }
2075
2196
  },
2076
2197
  "d3-dispatch": {
@@ -2140,6 +2261,14 @@
2140
2261
  "dev": true,
2141
2262
  "requires": {
2142
2263
  "d3-array": "1"
2264
+ },
2265
+ "dependencies": {
2266
+ "d3-array": {
2267
+ "version": "1.2.4",
2268
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
2269
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
2270
+ "dev": true
2271
+ }
2143
2272
  }
2144
2273
  },
2145
2274
  "d3-hierarchy": {
@@ -2199,6 +2328,14 @@
2199
2328
  "d3-interpolate": "1",
2200
2329
  "d3-time": "1",
2201
2330
  "d3-time-format": "2"
2331
+ },
2332
+ "dependencies": {
2333
+ "d3-array": {
2334
+ "version": "1.2.4",
2335
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
2336
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
2337
+ "dev": true
2338
+ }
2202
2339
  }
2203
2340
  },
2204
2341
  "d3-scale-chromatic": {
@@ -2226,6 +2363,12 @@
2226
2363
  "d3-path": "1"
2227
2364
  }
2228
2365
  },
2366
+ "d3-tile": {
2367
+ "version": "1.0.0",
2368
+ "resolved": "https://registry.npmjs.org/d3-tile/-/d3-tile-1.0.0.tgz",
2369
+ "integrity": "sha512-79fnTKpPMPDS5xQ0xuS9ir0165NEwwkFpe/DSOmc2Gl9ldYzKKRDWogmTTE8wAJ8NA7PMapNfEcyKhI9Lxdu5Q==",
2370
+ "dev": true
2371
+ },
2229
2372
  "d3-time": {
2230
2373
  "version": "1.1.0",
2231
2374
  "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
@@ -2479,6 +2622,15 @@
2479
2622
  "prr": "~1.0.1"
2480
2623
  }
2481
2624
  },
2625
+ "error-stack-parser": {
2626
+ "version": "2.0.4",
2627
+ "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz",
2628
+ "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==",
2629
+ "dev": true,
2630
+ "requires": {
2631
+ "stackframe": "^1.1.0"
2632
+ }
2633
+ },
2482
2634
  "es-abstract": {
2483
2635
  "version": "1.14.2",
2484
2636
  "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.14.2.tgz",
@@ -2923,6 +3075,12 @@
2923
3075
  "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
2924
3076
  "dev": true
2925
3077
  },
3078
+ "fastest-stable-stringify": {
3079
+ "version": "1.0.1",
3080
+ "resolved": "https://registry.npmjs.org/fastest-stable-stringify/-/fastest-stable-stringify-1.0.1.tgz",
3081
+ "integrity": "sha1-kSLUBtTJ2YvqZEpraFPVh0uHsCg=",
3082
+ "dev": true
3083
+ },
2926
3084
  "figgy-pudding": {
2927
3085
  "version": "3.5.1",
2928
3086
  "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
@@ -3103,7 +3261,8 @@
3103
3261
  "ansi-regex": {
3104
3262
  "version": "2.1.1",
3105
3263
  "bundled": true,
3106
- "dev": true
3264
+ "dev": true,
3265
+ "optional": true
3107
3266
  },
3108
3267
  "aproba": {
3109
3268
  "version": "1.2.0",
@@ -3124,12 +3283,14 @@
3124
3283
  "balanced-match": {
3125
3284
  "version": "1.0.0",
3126
3285
  "bundled": true,
3127
- "dev": true
3286
+ "dev": true,
3287
+ "optional": true
3128
3288
  },
3129
3289
  "brace-expansion": {
3130
3290
  "version": "1.1.11",
3131
3291
  "bundled": true,
3132
3292
  "dev": true,
3293
+ "optional": true,
3133
3294
  "requires": {
3134
3295
  "balanced-match": "^1.0.0",
3135
3296
  "concat-map": "0.0.1"
@@ -3144,17 +3305,20 @@
3144
3305
  "code-point-at": {
3145
3306
  "version": "1.1.0",
3146
3307
  "bundled": true,
3147
- "dev": true
3308
+ "dev": true,
3309
+ "optional": true
3148
3310
  },
3149
3311
  "concat-map": {
3150
3312
  "version": "0.0.1",
3151
3313
  "bundled": true,
3152
- "dev": true
3314
+ "dev": true,
3315
+ "optional": true
3153
3316
  },
3154
3317
  "console-control-strings": {
3155
3318
  "version": "1.1.0",
3156
3319
  "bundled": true,
3157
- "dev": true
3320
+ "dev": true,
3321
+ "optional": true
3158
3322
  },
3159
3323
  "core-util-is": {
3160
3324
  "version": "1.0.2",
@@ -3271,7 +3435,8 @@
3271
3435
  "inherits": {
3272
3436
  "version": "2.0.3",
3273
3437
  "bundled": true,
3274
- "dev": true
3438
+ "dev": true,
3439
+ "optional": true
3275
3440
  },
3276
3441
  "ini": {
3277
3442
  "version": "1.3.5",
@@ -3283,6 +3448,7 @@
3283
3448
  "version": "1.0.0",
3284
3449
  "bundled": true,
3285
3450
  "dev": true,
3451
+ "optional": true,
3286
3452
  "requires": {
3287
3453
  "number-is-nan": "^1.0.0"
3288
3454
  }
@@ -3297,6 +3463,7 @@
3297
3463
  "version": "3.0.4",
3298
3464
  "bundled": true,
3299
3465
  "dev": true,
3466
+ "optional": true,
3300
3467
  "requires": {
3301
3468
  "brace-expansion": "^1.1.7"
3302
3469
  }
@@ -3304,12 +3471,14 @@
3304
3471
  "minimist": {
3305
3472
  "version": "0.0.8",
3306
3473
  "bundled": true,
3307
- "dev": true
3474
+ "dev": true,
3475
+ "optional": true
3308
3476
  },
3309
3477
  "minipass": {
3310
3478
  "version": "2.3.5",
3311
3479
  "bundled": true,
3312
3480
  "dev": true,
3481
+ "optional": true,
3313
3482
  "requires": {
3314
3483
  "safe-buffer": "^5.1.2",
3315
3484
  "yallist": "^3.0.0"
@@ -3328,6 +3497,7 @@
3328
3497
  "version": "0.5.1",
3329
3498
  "bundled": true,
3330
3499
  "dev": true,
3500
+ "optional": true,
3331
3501
  "requires": {
3332
3502
  "minimist": "0.0.8"
3333
3503
  }
@@ -3408,7 +3578,8 @@
3408
3578
  "number-is-nan": {
3409
3579
  "version": "1.0.1",
3410
3580
  "bundled": true,
3411
- "dev": true
3581
+ "dev": true,
3582
+ "optional": true
3412
3583
  },
3413
3584
  "object-assign": {
3414
3585
  "version": "4.1.1",
@@ -3420,6 +3591,7 @@
3420
3591
  "version": "1.4.0",
3421
3592
  "bundled": true,
3422
3593
  "dev": true,
3594
+ "optional": true,
3423
3595
  "requires": {
3424
3596
  "wrappy": "1"
3425
3597
  }
@@ -3505,7 +3677,8 @@
3505
3677
  "safe-buffer": {
3506
3678
  "version": "5.1.2",
3507
3679
  "bundled": true,
3508
- "dev": true
3680
+ "dev": true,
3681
+ "optional": true
3509
3682
  },
3510
3683
  "safer-buffer": {
3511
3684
  "version": "2.1.2",
@@ -3541,6 +3714,7 @@
3541
3714
  "version": "1.0.2",
3542
3715
  "bundled": true,
3543
3716
  "dev": true,
3717
+ "optional": true,
3544
3718
  "requires": {
3545
3719
  "code-point-at": "^1.0.0",
3546
3720
  "is-fullwidth-code-point": "^1.0.0",
@@ -3560,6 +3734,7 @@
3560
3734
  "version": "3.0.1",
3561
3735
  "bundled": true,
3562
3736
  "dev": true,
3737
+ "optional": true,
3563
3738
  "requires": {
3564
3739
  "ansi-regex": "^2.0.0"
3565
3740
  }
@@ -3603,12 +3778,14 @@
3603
3778
  "wrappy": {
3604
3779
  "version": "1.0.2",
3605
3780
  "bundled": true,
3606
- "dev": true
3781
+ "dev": true,
3782
+ "optional": true
3607
3783
  },
3608
3784
  "yallist": {
3609
3785
  "version": "3.0.3",
3610
3786
  "bundled": true,
3611
- "dev": true
3787
+ "dev": true,
3788
+ "optional": true
3612
3789
  }
3613
3790
  }
3614
3791
  },
@@ -3817,6 +3994,15 @@
3817
3994
  "minimalistic-crypto-utils": "^1.0.1"
3818
3995
  }
3819
3996
  },
3997
+ "hoist-non-react-statics": {
3998
+ "version": "3.3.0",
3999
+ "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz",
4000
+ "integrity": "sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==",
4001
+ "dev": true,
4002
+ "requires": {
4003
+ "react-is": "^16.7.0"
4004
+ }
4005
+ },
3820
4006
  "homedir-polyfill": {
3821
4007
  "version": "1.0.3",
3822
4008
  "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
@@ -3832,6 +4018,12 @@
3832
4018
  "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
3833
4019
  "dev": true
3834
4020
  },
4021
+ "hyphenate-style-name": {
4022
+ "version": "1.0.3",
4023
+ "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz",
4024
+ "integrity": "sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ==",
4025
+ "dev": true
4026
+ },
3835
4027
  "iconv-lite": {
3836
4028
  "version": "0.4.24",
3837
4029
  "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -3921,6 +4113,16 @@
3921
4113
  "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
3922
4114
  "dev": true
3923
4115
  },
4116
+ "inline-style-prefixer": {
4117
+ "version": "4.0.2",
4118
+ "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-4.0.2.tgz",
4119
+ "integrity": "sha512-N8nVhwfYga9MiV9jWlwfdj1UDIaZlBFu4cJSJkIr7tZX7sHpHhGR5su1qdpW+7KPL8ISTvCIkcaFi/JdBknvPg==",
4120
+ "dev": true,
4121
+ "requires": {
4122
+ "bowser": "^1.7.3",
4123
+ "css-in-js-utils": "^2.0.0"
4124
+ }
4125
+ },
3924
4126
  "inquirer": {
3925
4127
  "version": "6.5.2",
3926
4128
  "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
@@ -4394,6 +4596,12 @@
4394
4596
  "safe-buffer": "^5.1.2"
4395
4597
  }
4396
4598
  },
4599
+ "mdn-data": {
4600
+ "version": "2.0.4",
4601
+ "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
4602
+ "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
4603
+ "dev": true
4604
+ },
4397
4605
  "mem": {
4398
4606
  "version": "4.3.0",
4399
4607
  "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
@@ -4574,6 +4782,22 @@
4574
4782
  "dev": true,
4575
4783
  "optional": true
4576
4784
  },
4785
+ "nano-css": {
4786
+ "version": "5.2.0",
4787
+ "resolved": "https://registry.npmjs.org/nano-css/-/nano-css-5.2.0.tgz",
4788
+ "integrity": "sha512-DrkBUciWkEvrWZUIyhjQkyqiF1x2bnB4FWZZ9FCYSz1Okcq5fUs6P2e46UaHYcdljaUkQbK0aS0h1I2zObCTBg==",
4789
+ "dev": true,
4790
+ "requires": {
4791
+ "css-tree": "^1.0.0-alpha.28",
4792
+ "csstype": "^2.5.5",
4793
+ "fastest-stable-stringify": "^1.0.1",
4794
+ "inline-style-prefixer": "^4.0.0",
4795
+ "rtl-css-js": "^1.9.0",
4796
+ "sourcemap-codec": "^1.4.1",
4797
+ "stacktrace-js": "^2.0.0",
4798
+ "stylis": "3.5.0"
4799
+ }
4800
+ },
4577
4801
  "nanomatch": {
4578
4802
  "version": "1.2.13",
4579
4803
  "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -5189,11 +5413,42 @@
5189
5413
  "scheduler": "^0.16.0"
5190
5414
  }
5191
5415
  },
5416
+ "react-fast-compare": {
5417
+ "version": "2.0.4",
5418
+ "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz",
5419
+ "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==",
5420
+ "dev": true
5421
+ },
5192
5422
  "react-is": {
5193
5423
  "version": "16.10.0",
5194
5424
  "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.10.0.tgz",
5195
5425
  "integrity": "sha512-WRki2sBb7MTpYp7FtDEmSeGKX2vamYyq3rc9o7fKUG+/DHVyJu69NnvJsiSwwhh2Tt8XN40MQHkDBEXwyfxncQ=="
5196
5426
  },
5427
+ "react-use": {
5428
+ "version": "12.9.1",
5429
+ "resolved": "https://registry.npmjs.org/react-use/-/react-use-12.9.1.tgz",
5430
+ "integrity": "sha512-BTOifl9wUMKtCdWRe5IKQP7kIwj7XXWLRqpmG03GPK+lG86vTLYehMVeL/F+NJ/XoxwI229jJhCwKbFSot1hNQ==",
5431
+ "dev": true,
5432
+ "requires": {
5433
+ "@types/react-wait": "^0.3.0",
5434
+ "copy-to-clipboard": "^3.1.0",
5435
+ "nano-css": "^5.1.0",
5436
+ "react-fast-compare": "^2.0.4",
5437
+ "react-wait": "^0.3.0",
5438
+ "resize-observer-polyfill": "^1.5.1",
5439
+ "screenfull": "^5.0.0",
5440
+ "set-harmonic-interval": "^1.0.1",
5441
+ "throttle-debounce": "^2.0.1",
5442
+ "ts-easing": "^0.2.0",
5443
+ "tslib": "^1.10.0"
5444
+ }
5445
+ },
5446
+ "react-wait": {
5447
+ "version": "0.3.0",
5448
+ "resolved": "https://registry.npmjs.org/react-wait/-/react-wait-0.3.0.tgz",
5449
+ "integrity": "sha512-kB5x/kMKWcn0uVr9gBdNz21/oGbQwEQnF3P9p6E9yLfJ9DRcKS0fagbgYMFI0YFOoyKDj+2q6Rwax0kTYJF37g==",
5450
+ "dev": true
5451
+ },
5197
5452
  "readable-stream": {
5198
5453
  "version": "2.3.6",
5199
5454
  "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
@@ -5332,6 +5587,12 @@
5332
5587
  "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
5333
5588
  "dev": true
5334
5589
  },
5590
+ "resize-observer-polyfill": {
5591
+ "version": "1.5.1",
5592
+ "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
5593
+ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
5594
+ "dev": true
5595
+ },
5335
5596
  "resolve": {
5336
5597
  "version": "1.12.0",
5337
5598
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
@@ -5420,6 +5681,15 @@
5420
5681
  "inherits": "^2.0.1"
5421
5682
  }
5422
5683
  },
5684
+ "rtl-css-js": {
5685
+ "version": "1.13.1",
5686
+ "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.13.1.tgz",
5687
+ "integrity": "sha512-jgkIDj6Xi25kAEm5oYM3ZMFiOQhpLEcXi2LY/6bVr91cVz73hciHKneL5AMVPxOcks/JuizSaaNsvNRkeAWe3w==",
5688
+ "dev": true,
5689
+ "requires": {
5690
+ "@babel/runtime": "^7.1.2"
5691
+ }
5692
+ },
5423
5693
  "run-async": {
5424
5694
  "version": "2.3.0",
5425
5695
  "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
@@ -5495,6 +5765,12 @@
5495
5765
  "ajv-keywords": "^3.1.0"
5496
5766
  }
5497
5767
  },
5768
+ "screenfull": {
5769
+ "version": "5.0.0",
5770
+ "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.0.0.tgz",
5771
+ "integrity": "sha512-yShzhaIoE9OtOhWVyBBffA6V98CDCoyHTsp8228blmqYy1Z5bddzE/4FPiJKlr8DVR4VBiiUyfPzIQPIYDkeMA==",
5772
+ "dev": true
5773
+ },
5498
5774
  "semver": {
5499
5775
  "version": "5.7.1",
5500
5776
  "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -5513,6 +5789,12 @@
5513
5789
  "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
5514
5790
  "dev": true
5515
5791
  },
5792
+ "set-harmonic-interval": {
5793
+ "version": "1.0.1",
5794
+ "resolved": "https://registry.npmjs.org/set-harmonic-interval/-/set-harmonic-interval-1.0.1.tgz",
5795
+ "integrity": "sha512-AhICkFV84tBP1aWqPwLZqFvAwqEoVA9kxNMniGEUvzOlm4vLmOFLiTT3UZ6bziJTy4bOVpzWGTfSCbmaayGx8g==",
5796
+ "dev": true
5797
+ },
5516
5798
  "set-value": {
5517
5799
  "version": "2.0.1",
5518
5800
  "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
@@ -5740,6 +6022,12 @@
5740
6022
  "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
5741
6023
  "dev": true
5742
6024
  },
6025
+ "sourcemap-codec": {
6026
+ "version": "1.4.6",
6027
+ "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.6.tgz",
6028
+ "integrity": "sha512-1ZooVLYFxC448piVLBbtOxFcXwnymH9oUF8nRd3CuYDVvkRBxRl6pB4Mtas5a4drtL+E8LDgFkQNcgIw6tc8Hg==",
6029
+ "dev": true
6030
+ },
5743
6031
  "split-string": {
5744
6032
  "version": "3.1.0",
5745
6033
  "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
@@ -5764,6 +6052,50 @@
5764
6052
  "figgy-pudding": "^3.5.1"
5765
6053
  }
5766
6054
  },
6055
+ "stack-generator": {
6056
+ "version": "2.0.4",
6057
+ "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.4.tgz",
6058
+ "integrity": "sha512-ha1gosTNcgxwzo9uKTQ8zZ49aUp5FIUW58YHFxCqaAHtE0XqBg0chGFYA1MfmW//x1KWq3F4G7Ug7bJh4RiRtg==",
6059
+ "dev": true,
6060
+ "requires": {
6061
+ "stackframe": "^1.1.0"
6062
+ }
6063
+ },
6064
+ "stackframe": {
6065
+ "version": "1.1.0",
6066
+ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz",
6067
+ "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==",
6068
+ "dev": true
6069
+ },
6070
+ "stacktrace-gps": {
6071
+ "version": "3.0.3",
6072
+ "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.0.3.tgz",
6073
+ "integrity": "sha512-51Rr7dXkyFUKNmhY/vqZWK+EvdsfFSRiQVtgHTFlAdNIYaDD7bVh21yBHXaNWAvTD+w+QSjxHg7/v6Tz4veExA==",
6074
+ "dev": true,
6075
+ "requires": {
6076
+ "source-map": "0.5.6",
6077
+ "stackframe": "^1.1.0"
6078
+ },
6079
+ "dependencies": {
6080
+ "source-map": {
6081
+ "version": "0.5.6",
6082
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz",
6083
+ "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=",
6084
+ "dev": true
6085
+ }
6086
+ }
6087
+ },
6088
+ "stacktrace-js": {
6089
+ "version": "2.0.1",
6090
+ "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.1.tgz",
6091
+ "integrity": "sha512-13oDNgBSeWtdGa4/2BycNyKqe+VktCoJ8VLx4pDoJkwGGJVtiHdfMOAj3aW9xTi8oR2v34z9IcvfCvT6XNdNAw==",
6092
+ "dev": true,
6093
+ "requires": {
6094
+ "error-stack-parser": "^2.0.4",
6095
+ "stack-generator": "^2.0.4",
6096
+ "stacktrace-gps": "^3.0.3"
6097
+ }
6098
+ },
5767
6099
  "static-extend": {
5768
6100
  "version": "0.1.2",
5769
6101
  "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
@@ -5885,6 +6217,12 @@
5885
6217
  "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
5886
6218
  "dev": true
5887
6219
  },
6220
+ "stylis": {
6221
+ "version": "3.5.0",
6222
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.0.tgz",
6223
+ "integrity": "sha512-pP7yXN6dwMzAR29Q0mBrabPCe0/mNO1MSr93bhay+hcZondvMMTpeGyd8nbhYJdyperNT2DRxONQuUGcJr5iPw==",
6224
+ "dev": true
6225
+ },
5888
6226
  "supports-color": {
5889
6227
  "version": "6.1.0",
5890
6228
  "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
@@ -6040,6 +6378,12 @@
6040
6378
  "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
6041
6379
  "dev": true
6042
6380
  },
6381
+ "throttle-debounce": {
6382
+ "version": "2.1.0",
6383
+ "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.1.0.tgz",
6384
+ "integrity": "sha512-AOvyNahXQuU7NN+VVvOOX+uW6FPaWdAOdRP5HfwYxAfCzXTFKRMoIMk+n+po318+ktcChx+F1Dd91G3YHeMKyg==",
6385
+ "dev": true
6386
+ },
6043
6387
  "through": {
6044
6388
  "version": "2.3.8",
6045
6389
  "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
@@ -6128,6 +6472,18 @@
6128
6472
  "repeat-string": "^1.6.1"
6129
6473
  }
6130
6474
  },
6475
+ "toggle-selection": {
6476
+ "version": "1.0.6",
6477
+ "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz",
6478
+ "integrity": "sha1-bkWxJj8gF/oKzH2J14sVuL932jI=",
6479
+ "dev": true
6480
+ },
6481
+ "ts-easing": {
6482
+ "version": "0.2.0",
6483
+ "resolved": "https://registry.npmjs.org/ts-easing/-/ts-easing-0.2.0.tgz",
6484
+ "integrity": "sha512-Z86EW+fFFh/IFB1fqQ3/+7Zpf9t2ebOAxNI/V6Wo7r5gqiqtxmgTlQ1qbqQcjLKYeSHPTsEmvlJUDg/EuL0uHQ==",
6485
+ "dev": true
6486
+ },
6131
6487
  "tslib": {
6132
6488
  "version": "1.10.0",
6133
6489
  "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",