Browse Source

more robust media (thumbnail) handling, with tests

master
f0x 4 months ago
parent
commit
d9193d7fe4
3 changed files with 430 additions and 65 deletions
  1. 14
    36
      components/events/image.js
  2. 5
    3
      package.json
  3. 411
    26
      shrinkwrap.yaml

+ 14
- 36
components/events/image.js View File

@@ -5,58 +5,36 @@ const create = require('create-react-class')
5 5
 const Promise = require('bluebird')
6 6
 const defaultValue = require('default-value')
7 7
 
8
+const mediaLib = require('../../lib/media.js')
9
+
8 10
 const Text = require('./text.js')
9 11
 
10 12
 let Event = create({
11 13
   displayName: "m.image",
12 14
 
13 15
   getInitialState: function() {
14
-    let client = this.props.client
15
-    let hs = this.props.client.baseUrl
16 16
     let event = this.props.event
17 17
     if (event.content.url == undefined) {
18
-      return {url: {media: null, thumb: null}}
18
+      return null
19 19
     }
20
-    console.log(event)
21
-
22
-    let h = 1000
23
-    let w = 1000
24
-    try {
25
-      if (event.content.info.h < h) {
26
-        h = event.content.info.h
27
-      }
28
-
29
-      if (event.content.info.w < w) {
30
-        w = event.content.info.w
31
-      }
32
-
33
-      if (event.content.info.thumbnail_info < h) {
34
-        h = event.content.info.thumbnail_info.h
35
-      }
20
+    return mediaLib.parseEvent(this.props.client, event, 1000, 1000)
21
+  },
36 22
 
37
-      if (event.content.info.thumbnail_info < w) {
38
-        w = event.content.info.thumbnail_info.w
39
-      }
40
-    } catch(error) {
41
-      
42
-    }
23
+  updateSize: function(e) {
24
+    console.log("image was loaded")
25
+  },
43 26
 
44
-    let media_url = client.mxcUrlToHttp(event.content.url)
45
-    let thumb_url = client.mxcUrlToHttp(event.content.url, w, h, "scale", false)
27
+  render: function() {
28
+    let event = this.props.event
46 29
 
47
-    return {
48
-      url: {
49
-        media: media_url,
50
-        thumb: thumb_url
51
-      }
30
+    if (this.state == null) {
31
+      return "malformed image event: " + event.content.body
52 32
     }
53
-  },
54 33
 
55
-  render: function() {
56 34
     return (
57 35
       <div className="body">
58
-        <a href={this.state.url.media} target="_blank">
59
-          <img src={this.state.url.thumb}/>
36
+        <a href={this.state.full} target="_blank">
37
+          <img src={this.state.thumb} style={{height: this.state.size.h, width: this.state.size.w}}/>
60 38
         </a>
61 39
         <Text event={this.props.event} nested={true}/>
62 40
       </div>

+ 5
- 3
package.json View File

@@ -4,7 +4,7 @@
4 4
   "description": "",
5 5
   "main": "app.js",
6 6
   "scripts": {
7
-    "test": "echo \"Error: no test specified\" && exit 1"
7
+    "test": "mocha tests --recursive"
8 8
   },
9 9
   "author": "f0x",
10 10
   "license": "AGPL-3.0",
@@ -35,7 +35,6 @@
35 35
     "gulp-sourcemaps": "^2.6.4",
36 36
     "gulp-util": "^3.0.8",
37 37
     "jdenticon": "^2.1.1",
38
-    "livereactload": "^4.0.0-beta.2",
39 38
     "matrix-js-sdk": "^1.0.2",
40 39
     "react": "^16.6.3",
41 40
     "react-dom": "^16.6.3",
@@ -46,6 +45,9 @@
46 45
     "webpack": "^4.27.1"
47 46
   },
48 47
   "devDependencies": {
49
-    "gulp-watch": "^5.0.1"
48
+    "gulp-watch": "^5.0.1",
49
+    "mocha-reporter-remote": "^1.7.1",
50
+    "livereactload": "^4.0.0-beta.2",
51
+    "mocha": "^6.1.4"
50 52
   }
51 53
 }

+ 411
- 26
shrinkwrap.yaml View File

@@ -21,12 +21,14 @@ dependencies:
21 21
   gulp-copy: 4.0.1
22 22
   gulp-if: 2.0.2
23 23
   gulp-imagemin: 5.0.3
24
+  gulp-mocha: 6.0.0
24 25
   gulp-sass: 4.0.2
25 26
   gulp-sourcemaps: 2.6.4
26 27
   gulp-util: 3.0.8
27 28
   jdenticon: 2.1.1
28 29
   livereactload: 4.0.0-beta.2
29 30
   matrix-js-sdk: 1.0.2
31
+  mocha: 6.1.4
30 32
   react: 16.6.3
31 33
   react-dom: 16.6.3
32 34
   sanitize-html: 1.20.0
@@ -36,6 +38,7 @@ dependencies:
36 38
   webpack: 4.27.1
37 39
 devDependencies:
38 40
   gulp-watch: 5.0.1
41
+  mocha-reporter-remote: 1.7.1
39 42
 packages:
40 43
   /@babel/code-frame/7.0.0:
41 44
     dependencies:
@@ -1027,6 +1030,12 @@ packages:
1027 1030
       node: '>=0.10.0'
1028 1031
     resolution:
1029 1032
       integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==
1033
+  /ansi-colors/3.2.3:
1034
+    dev: false
1035
+    engines:
1036
+      node: '>=6'
1037
+    resolution:
1038
+      integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==
1030 1039
   /ansi-cyan/0.1.1:
1031 1040
     dependencies:
1032 1041
       ansi-wrap: 0.1.0
@@ -1068,6 +1077,12 @@ packages:
1068 1077
       node: '>=4'
1069 1078
     resolution:
1070 1079
       integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=
1080
+  /ansi-regex/4.1.0:
1081
+    dev: false
1082
+    engines:
1083
+      node: '>=6'
1084
+    resolution:
1085
+      integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==
1071 1086
   /ansi-styles/1.1.0:
1072 1087
     dev: false
1073 1088
     engines:
@@ -1152,7 +1167,6 @@ packages:
1152 1167
     dependencies:
1153 1168
       sprintf-js: 1.0.3
1154 1169
     dev: false
1155
-    optional: true
1156 1170
     resolution:
1157 1171
       integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
1158 1172
   /arr-diff/1.1.0:
@@ -1558,6 +1572,12 @@ packages:
1558 1572
       node: '>=0.10.0'
1559 1573
     resolution:
1560 1574
       integrity: sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==
1575
+  /binary-split/1.0.5:
1576
+    dependencies:
1577
+      through2: 2.0.5
1578
+    dev: true
1579
+    resolution:
1580
+      integrity: sha512-AQ5fcBrUU5hoIafkEvNKqxT+2xbqlSqAXef6IdCQr5wpHu9E7NGM6rTAlYJYbtxvAvjfx8nJkBy6rNlbPPI+Pw==
1561 1581
   /bl/1.2.2:
1562 1582
     dependencies:
1563 1583
       readable-stream: 2.3.6
@@ -1673,6 +1693,10 @@ packages:
1673 1693
     dev: false
1674 1694
     resolution:
1675 1695
       integrity: sha1-Wa54IKgpVezTL1+3xGisIcRyOAY=
1696
+  /browser-stdout/1.3.1:
1697
+    dev: false
1698
+    resolution:
1699
+      integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
1676 1700
   /browserify-aes/1.2.0:
1677 1701
     dependencies:
1678 1702
       buffer-xor: 1.0.3
@@ -2080,6 +2104,12 @@ packages:
2080 2104
       node: '>=0.10.0'
2081 2105
     resolution:
2082 2106
       integrity: sha1-MvxLn82vhF/N9+c7uXysImHwqwo=
2107
+  /camelcase/5.3.1:
2108
+    dev: false
2109
+    engines:
2110
+      node: '>=6'
2111
+    resolution:
2112
+      integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
2083 2113
   /caniuse-lite/1.0.30000921:
2084 2114
     dev: false
2085 2115
     resolution:
@@ -2233,6 +2263,14 @@ packages:
2233 2263
     dev: false
2234 2264
     resolution:
2235 2265
       integrity: sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=
2266
+  /cliui/4.1.0:
2267
+    dependencies:
2268
+      string-width: 2.1.1
2269
+      strip-ansi: 4.0.0
2270
+      wrap-ansi: 2.1.0
2271
+    dev: false
2272
+    resolution:
2273
+      integrity: sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==
2236 2274
   /clone-buffer/1.0.0:
2237 2275
     engines:
2238 2276
       node: '>= 0.10'
@@ -2361,6 +2399,10 @@ packages:
2361 2399
       node: '>= 0.8'
2362 2400
     resolution:
2363 2401
       integrity: sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==
2402
+  /commander/2.15.1:
2403
+    dev: false
2404
+    resolution:
2405
+      integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
2364 2406
   /commander/2.17.1:
2365 2407
     dev: false
2366 2408
     resolution:
@@ -2583,7 +2625,7 @@ packages:
2583 2625
     dependencies:
2584 2626
       nice-try: 1.0.5
2585 2627
       path-key: 2.0.1
2586
-      semver: 5.6.0
2628
+      semver: 5.7.0
2587 2629
       shebang-command: 1.2.0
2588 2630
       which: 1.3.1
2589 2631
     dev: false
@@ -2702,6 +2744,12 @@ packages:
2702 2744
     dev: false
2703 2745
     resolution:
2704 2746
       integrity: sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8=
2747
+  /dargs/5.1.0:
2748
+    dev: false
2749
+    engines:
2750
+      node: '>=4'
2751
+    resolution:
2752
+      integrity: sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk=
2705 2753
   /dashdash/1.14.1:
2706 2754
     dependencies:
2707 2755
       assert-plus: 1.0.0
@@ -2743,6 +2791,12 @@ packages:
2743 2791
       ms: 2.0.0
2744 2792
     resolution:
2745 2793
       integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
2794
+  /debug/3.1.0:
2795
+    dependencies:
2796
+      ms: 2.0.0
2797
+    dev: false
2798
+    resolution:
2799
+      integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
2746 2800
   /debug/3.2.6:
2747 2801
     dependencies:
2748 2802
       ms: 2.1.1
@@ -2873,7 +2927,7 @@ packages:
2873 2927
       integrity: sha1-jG9SpaEZP+eP3J+G63HRbJdXyDo=
2874 2928
   /define-properties/1.1.3:
2875 2929
     dependencies:
2876
-      object-keys: 1.0.12
2930
+      object-keys: 1.1.1
2877 2931
     dev: false
2878 2932
     engines:
2879 2933
       node: '>= 0.4'
@@ -3006,6 +3060,12 @@ packages:
3006 3060
     hasBin: true
3007 3061
     resolution:
3008 3062
       integrity: sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ==
3063
+  /diff/3.5.0:
3064
+    dev: false
3065
+    engines:
3066
+      node: '>=0.3.1'
3067
+    resolution:
3068
+      integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
3009 3069
   /diffie-hellman/5.0.3:
3010 3070
     dependencies:
3011 3071
       bn.js: 4.11.8
@@ -3164,6 +3224,10 @@ packages:
3164 3224
     dev: false
3165 3225
     resolution:
3166 3226
       integrity: sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==
3227
+  /emoji-regex/7.0.3:
3228
+    dev: false
3229
+    resolution:
3230
+      integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
3167 3231
   /emojis-list/2.1.0:
3168 3232
     dev: false
3169 3233
     engines:
@@ -3222,11 +3286,10 @@ packages:
3222 3286
       has: 1.0.3
3223 3287
       is-callable: 1.1.4
3224 3288
       is-regex: 1.0.4
3225
-      object-keys: 1.0.12
3289
+      object-keys: 1.1.1
3226 3290
     dev: false
3227 3291
     engines:
3228 3292
       node: '>= 0.4'
3229
-    optional: true
3230 3293
     resolution:
3231 3294
       integrity: sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==
3232 3295
   /es-to-primitive/1.2.0:
@@ -3237,7 +3300,6 @@ packages:
3237 3300
     dev: false
3238 3301
     engines:
3239 3302
       node: '>= 0.4'
3240
-    optional: true
3241 3303
     resolution:
3242 3304
       integrity: sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==
3243 3305
   /es5-ext/0.10.47:
@@ -3364,7 +3426,6 @@ packages:
3364 3426
     engines:
3365 3427
       node: '>=4'
3366 3428
     hasBin: true
3367
-    optional: true
3368 3429
     resolution:
3369 3430
       integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
3370 3431
   /esrecurse/4.2.1:
@@ -3508,7 +3569,6 @@ packages:
3508 3569
     dev: false
3509 3570
     engines:
3510 3571
       node: '>=6'
3511
-    optional: true
3512 3572
     resolution:
3513 3573
       integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
3514 3574
   /executable/4.1.1:
@@ -3869,6 +3929,13 @@ packages:
3869 3929
       node: '>= 0.10'
3870 3930
     resolution:
3871 3931
       integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==
3932
+  /flat/4.1.0:
3933
+    dependencies:
3934
+      is-buffer: 2.0.3
3935
+    dev: false
3936
+    hasBin: true
3937
+    resolution:
3938
+      integrity: sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==
3872 3939
   /flush-write-stream/1.0.3:
3873 3940
     dependencies:
3874 3941
       inherits: 2.0.3
@@ -4050,6 +4117,12 @@ packages:
4050 4117
     dev: false
4051 4118
     resolution:
4052 4119
       integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==
4120
+  /get-caller-file/2.0.5:
4121
+    dev: false
4122
+    engines:
4123
+      node: 6.* || 8.* || >= 10.*
4124
+    resolution:
4125
+      integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
4053 4126
   /get-ports/1.0.3:
4054 4127
     dependencies:
4055 4128
       map-limit: 0.0.1
@@ -4093,7 +4166,6 @@ packages:
4093 4166
     dev: false
4094 4167
     engines:
4095 4168
       node: '>=6'
4096
-    optional: true
4097 4169
     resolution:
4098 4170
       integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
4099 4171
   /get-value/2.0.6:
@@ -4181,6 +4253,17 @@ packages:
4181 4253
     dev: false
4182 4254
     resolution:
4183 4255
       integrity: sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=
4256
+  /glob/7.1.2:
4257
+    dependencies:
4258
+      fs.realpath: 1.0.0
4259
+      inflight: 1.0.6
4260
+      inherits: 2.0.3
4261
+      minimatch: 3.0.4
4262
+      once: 1.4.0
4263
+      path-is-absolute: 1.0.1
4264
+    dev: false
4265
+    resolution:
4266
+      integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
4184 4267
   /glob/7.1.3:
4185 4268
     dependencies:
4186 4269
       fs.realpath: 1.0.0
@@ -4319,6 +4402,12 @@ packages:
4319 4402
     optional: true
4320 4403
     resolution:
4321 4404
       integrity: sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=
4405
+  /growl/1.10.5:
4406
+    dev: false
4407
+    engines:
4408
+      node: '>=4.x'
4409
+    resolution:
4410
+      integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
4322 4411
   /gulp-babel/8.0.0:
4323 4412
     dependencies:
4324 4413
       plugin-error: 1.0.1
@@ -4440,6 +4529,20 @@ packages:
4440 4529
       node: '>= 0.10.0'
4441 4530
     resolution:
4442 4531
       integrity: sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4=
4532
+  /gulp-mocha/6.0.0:
4533
+    dependencies:
4534
+      dargs: 5.1.0
4535
+      execa: 0.10.0
4536
+      mocha: 5.2.0
4537
+      npm-run-path: 2.0.2
4538
+      plugin-error: 1.0.1
4539
+      supports-color: 5.5.0
4540
+      through2: 2.0.5
4541
+    dev: false
4542
+    engines:
4543
+      node: '>=6'
4544
+    resolution:
4545
+      integrity: sha512-FfBldW5ttnDpKf4Sg6/BLOOKCCbr5mbixDGK1t02/8oSrTCwNhgN/mdszG3cuQuYNzuouUdw4EH/mlYtgUscPg==
4443 4546
   /gulp-sass/4.0.2:
4444 4547
     dependencies:
4445 4548
       chalk: 2.4.1
@@ -4675,6 +4778,16 @@ packages:
4675 4778
     dev: false
4676 4779
     resolution:
4677 4780
       integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
4781
+  /he/1.1.1:
4782
+    dev: false
4783
+    hasBin: true
4784
+    resolution:
4785
+      integrity: sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
4786
+  /he/1.2.0:
4787
+    dev: false
4788
+    hasBin: true
4789
+    resolution:
4790
+      integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
4678 4791
   /hmac-drbg/1.0.1:
4679 4792
     dependencies:
4680 4793
       hash.js: 1.1.7
@@ -4970,6 +5083,12 @@ packages:
4970 5083
       node: '>=0.10.0'
4971 5084
     resolution:
4972 5085
       integrity: sha1-EEqOSqym09jNFXqO+L+rLXo//bY=
5086
+  /invert-kv/2.0.0:
5087
+    dev: false
5088
+    engines:
5089
+      node: '>=4'
5090
+    resolution:
5091
+      integrity: sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==
4973 5092
   /ip-regex/2.1.0:
4974 5093
     dev: false
4975 5094
     engines:
@@ -5025,6 +5144,12 @@ packages:
5025 5144
   /is-buffer/1.1.6:
5026 5145
     resolution:
5027 5146
       integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
5147
+  /is-buffer/2.0.3:
5148
+    dev: false
5149
+    engines:
5150
+      node: '>=4'
5151
+    resolution:
5152
+      integrity: sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==
5028 5153
   /is-builtin-module/1.0.0:
5029 5154
     dependencies:
5030 5155
       builtin-modules: 1.1.1
@@ -5037,7 +5162,6 @@ packages:
5037 5162
     dev: false
5038 5163
     engines:
5039 5164
       node: '>= 0.4'
5040
-    optional: true
5041 5165
     resolution:
5042 5166
       integrity: sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==
5043 5167
   /is-data-descriptor/0.1.4:
@@ -5058,7 +5182,6 @@ packages:
5058 5182
     dev: false
5059 5183
     engines:
5060 5184
       node: '>= 0.4'
5061
-    optional: true
5062 5185
     resolution:
5063 5186
       integrity: sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=
5064 5187
   /is-descriptor/0.1.6:
@@ -5270,7 +5393,6 @@ packages:
5270 5393
     dev: false
5271 5394
     engines:
5272 5395
       node: '>= 0.4'
5273
-    optional: true
5274 5396
     resolution:
5275 5397
       integrity: sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=
5276 5398
   /is-relative/1.0.0:
@@ -5309,7 +5431,6 @@ packages:
5309 5431
     dev: false
5310 5432
     engines:
5311 5433
       node: '>= 0.4'
5312
-    optional: true
5313 5434
     resolution:
5314 5435
       integrity: sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==
5315 5436
   /is-typedarray/1.0.0:
@@ -5428,6 +5549,14 @@ packages:
5428 5549
     optional: true
5429 5550
     resolution:
5430 5551
       integrity: sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA==
5552
+  /js-yaml/3.13.1:
5553
+    dependencies:
5554
+      argparse: 1.0.10
5555
+      esprima: 4.0.1
5556
+    dev: false
5557
+    hasBin: true
5558
+    resolution:
5559
+      integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
5431 5560
   /jsbn/0.1.1:
5432 5561
     dev: false
5433 5562
     resolution:
@@ -5592,6 +5721,14 @@ packages:
5592 5721
       node: '>=0.10.0'
5593 5722
     resolution:
5594 5723
       integrity: sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=
5724
+  /lcid/2.0.0:
5725
+    dependencies:
5726
+      invert-kv: 2.0.0
5727
+    dev: false
5728
+    engines:
5729
+      node: '>=6'
5730
+    resolution:
5731
+      integrity: sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==
5595 5732
   /lead/1.0.0:
5596 5733
     dependencies:
5597 5734
       flush-write-stream: 1.0.3
@@ -5891,6 +6028,14 @@ packages:
5891 6028
     dev: false
5892 6029
     resolution:
5893 6030
       integrity: sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=
6031
+  /log-symbols/2.2.0:
6032
+    dependencies:
6033
+      chalk: 2.4.2
6034
+    dev: false
6035
+    engines:
6036
+      node: '>=4'
6037
+    resolution:
6038
+      integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==
5894 6039
   /logalot/2.1.0:
5895 6040
     dependencies:
5896 6041
       figures: 1.7.0
@@ -5990,6 +6135,14 @@ packages:
5990 6135
       node: '>=0.10.0'
5991 6136
     resolution:
5992 6137
       integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==
6138
+  /map-age-cleaner/0.1.3:
6139
+    dependencies:
6140
+      p-defer: 1.0.0
6141
+    dev: false
6142
+    engines:
6143
+      node: '>=6'
6144
+    resolution:
6145
+      integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==
5993 6146
   /map-cache/0.2.2:
5994 6147
     engines:
5995 6148
       node: '>=0.10.0'
@@ -6065,6 +6218,16 @@ packages:
6065 6218
     optional: true
6066 6219
     resolution:
6067 6220
       integrity: sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==
6221
+  /mem/4.3.0:
6222
+    dependencies:
6223
+      map-age-cleaner: 0.1.3
6224
+      mimic-fn: 2.1.0
6225
+      p-is-promise: 2.1.0
6226
+    dev: false
6227
+    engines:
6228
+      node: '>=6'
6229
+    resolution:
6230
+      integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==
6068 6231
   /memoizee/0.3.10:
6069 6232
     dependencies:
6070 6233
       d: 0.1.1
@@ -6198,6 +6361,12 @@ packages:
6198 6361
     hasBin: true
6199 6362
     resolution:
6200 6363
       integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==
6364
+  /mimic-fn/2.1.0:
6365
+    dev: false
6366
+    engines:
6367
+      node: '>=6'
6368
+    resolution:
6369
+      integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
6201 6370
   /mimic-response/1.0.1:
6202 6371
     dev: false
6203 6372
     engines:
@@ -6275,6 +6444,68 @@ packages:
6275 6444
     hasBin: true
6276 6445
     resolution:
6277 6446
       integrity: sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
6447
+  /mocha-reporter-remote/1.7.1:
6448
+    bundledDependencies:
6449
+      - '@atom-ide/utils'
6450
+    dependencies:
6451
+      remote-event-emitter: 1.2.0
6452
+    dev: true
6453
+    engines:
6454
+      node: ^10
6455
+    peerDependencies:
6456
+      mocha: ^5 || ^6
6457
+    resolution:
6458
+      integrity: sha512-sMv9ZYfvQG6gSeEWbOggqun9tBGWTrBZLGlWV7zDA6x4OFlIFmDI0jXciQpbFb6zpn6B5bJY+f8Ogmd9+9g3oQ==
6459
+  /mocha/5.2.0:
6460
+    dependencies:
6461
+      browser-stdout: 1.3.1
6462
+      commander: 2.15.1
6463
+      debug: 3.1.0
6464
+      diff: 3.5.0
6465
+      escape-string-regexp: 1.0.5
6466
+      glob: 7.1.2
6467
+      growl: 1.10.5
6468
+      he: 1.1.1
6469
+      minimatch: 3.0.4
6470
+      mkdirp: 0.5.1
6471
+      supports-color: 5.4.0
6472
+    dev: false
6473
+    engines:
6474
+      node: '>= 4.0.0'
6475
+    hasBin: true
6476
+    resolution:
6477
+      integrity: sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==
6478
+  /mocha/6.1.4:
6479
+    dependencies:
6480
+      ansi-colors: 3.2.3
6481
+      browser-stdout: 1.3.1
6482
+      debug: 3.2.6
6483
+      diff: 3.5.0
6484
+      escape-string-regexp: 1.0.5
6485
+      find-up: 3.0.0
6486
+      glob: 7.1.3
6487
+      growl: 1.10.5
6488
+      he: 1.2.0
6489
+      js-yaml: 3.13.1
6490
+      log-symbols: 2.2.0
6491
+      minimatch: 3.0.4
6492
+      mkdirp: 0.5.1
6493
+      ms: 2.1.1
6494
+      node-environment-flags: 1.0.5
6495
+      object.assign: 4.1.0
6496
+      strip-json-comments: 2.0.1
6497
+      supports-color: 6.0.0
6498
+      which: 1.3.1
6499
+      wide-align: 1.1.3
6500
+      yargs: 13.2.2
6501
+      yargs-parser: 13.0.0
6502
+      yargs-unparser: 1.5.0
6503
+    dev: false
6504
+    engines:
6505
+      node: '>= 6.0.0'
6506
+    hasBin: true
6507
+    resolution:
6508
+      integrity: sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg==
6278 6509
   /module-deps/2.0.6:
6279 6510
     dependencies:
6280 6511
       JSONStream: 0.7.4
@@ -6384,6 +6615,13 @@ packages:
6384 6615
     dev: false
6385 6616
     resolution:
6386 6617
       integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
6618
+  /node-environment-flags/1.0.5:
6619
+    dependencies:
6620
+      object.getownpropertydescriptors: 2.0.3
6621
+      semver: 5.7.0
6622
+    dev: false
6623
+    resolution:
6624
+      integrity: sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==
6387 6625
   /node-fetch/1.7.3:
6388 6626
     dependencies:
6389 6627
       encoding: 0.1.12
@@ -6583,12 +6821,12 @@ packages:
6583 6821
     dev: false
6584 6822
     resolution:
6585 6823
       integrity: sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=
6586
-  /object-keys/1.0.12:
6824
+  /object-keys/1.1.1:
6587 6825
     dev: false
6588 6826
     engines:
6589 6827
       node: '>= 0.4'
6590 6828
     resolution:
6591
-      integrity: sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==
6829
+      integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
6592 6830
   /object-visit/1.0.1:
6593 6831
     dependencies:
6594 6832
       isobject: 3.0.1
@@ -6601,7 +6839,7 @@ packages:
6601 6839
       define-properties: 1.1.3
6602 6840
       function-bind: 1.1.1
6603 6841
       has-symbols: 1.0.0
6604
-      object-keys: 1.0.12
6842
+      object-keys: 1.1.1
6605 6843
     dev: false
6606 6844
     engines:
6607 6845
       node: '>= 0.4'
@@ -6625,7 +6863,6 @@ packages:
6625 6863
     dev: false
6626 6864
     engines:
6627 6865
       node: '>= 0.8'
6628
-    optional: true
6629 6866
     resolution:
6630 6867
       integrity: sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=
6631 6868
   /object.map/1.0.1:
@@ -6777,6 +7014,16 @@ packages:
6777 7014
       node: '>=0.10.0'
6778 7015
     resolution:
6779 7016
       integrity: sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=
7017
+  /os-locale/3.1.0:
7018
+    dependencies:
7019
+      execa: 1.0.0
7020
+      lcid: 2.0.0
7021
+      mem: 4.3.0
7022
+    dev: false
7023
+    engines:
7024
+      node: '>=6'
7025
+    resolution:
7026
+      integrity: sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==
6780 7027
   /os-tmpdir/1.0.2:
6781 7028
     dev: false
6782 7029
     engines:
@@ -6811,6 +7058,12 @@ packages:
6811 7058
     optional: true
6812 7059
     resolution:
6813 7060
       integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==
7061
+  /p-defer/1.0.0:
7062
+    dev: false
7063
+    engines:
7064
+      node: '>=4'
7065
+    resolution:
7066
+      integrity: sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=
6814 7067
   /p-event/1.3.0:
6815 7068
     dependencies:
6816 7069
       p-timeout: 1.2.1
@@ -6842,17 +7095,23 @@ packages:
6842 7095
     optional: true
6843 7096
     resolution:
6844 7097
       integrity: sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=
6845
-  /p-limit/2.0.0:
7098
+  /p-is-promise/2.1.0:
7099
+    dev: false
7100
+    engines:
7101
+      node: '>=6'
7102
+    resolution:
7103
+      integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==
7104
+  /p-limit/2.2.0:
6846 7105
     dependencies:
6847
-      p-try: 2.0.0
7106
+      p-try: 2.2.0
6848 7107
     dev: false
6849 7108
     engines:
6850 7109
       node: '>=6'
6851 7110
     resolution:
6852
-      integrity: sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==
7111
+      integrity: sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==
6853 7112
   /p-locate/3.0.0:
6854 7113
     dependencies:
6855
-      p-limit: 2.0.0
7114
+      p-limit: 2.2.0
6856 7115
     dev: false
6857 7116
     engines:
6858 7117
       node: '>=6'
@@ -6904,12 +7163,12 @@ packages:
6904 7163
     optional: true
6905 7164
     resolution:
6906 7165
       integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==
6907
-  /p-try/2.0.0:
7166
+  /p-try/2.2.0:
6908 7167
     dev: false
6909 7168
     engines:
6910 7169
       node: '>=6'
6911 7170
     resolution:
6912
-      integrity: sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==
7171
+      integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
6913 7172
   /pad-left/2.1.0:
6914 7173
     dependencies:
6915 7174
       repeat-string: 1.6.1
@@ -7684,6 +7943,15 @@ packages:
7684 7943
     dev: false
7685 7944
     resolution:
7686 7945
       integrity: sha1-avsRFi4jFP7M2tbcX96CH9cxgzE=
7946
+  /remote-event-emitter/1.2.0:
7947
+    dependencies:
7948
+      binary-split: 1.0.5
7949
+    dev: true
7950
+    engines:
7951
+      node: ^10.0.0
7952
+      npm: ^6.0.0
7953
+    resolution:
7954
+      integrity: sha512-VYADzXfQ6RRKsTbFNB6G9ujWCOuo3NcugHHmBiXeDQR0bge/hqD4N7AmSlmOb3pUdu9fbsipnhpr2t2UMmnGBw==
7687 7955
   /remove-bom-buffer/3.0.0:
7688 7956
     dependencies:
7689 7957
       is-buffer: 1.1.6
@@ -7781,6 +8049,10 @@ packages:
7781 8049
     dev: false
7782 8050
     resolution:
7783 8051
       integrity: sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=
8052
+  /require-main-filename/2.0.0:
8053
+    dev: false
8054
+    resolution:
8055
+      integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
7784 8056
   /resolve-dir/1.0.1:
7785 8057
     dependencies:
7786 8058
       expand-tilde: 2.0.2
@@ -8009,6 +8281,11 @@ packages:
8009 8281
     hasBin: true
8010 8282
     resolution:
8011 8283
       integrity: sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==
8284
+  /semver/5.7.0:
8285
+    dev: false
8286
+    hasBin: true
8287
+    resolution:
8288
+      integrity: sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==
8012 8289
   /send/0.16.2:
8013 8290
     dependencies:
8014 8291
       debug: 2.6.9
@@ -8320,7 +8597,6 @@ packages:
8320 8597
       tarball: 'http://registry.npmjs.org/split2/-/split2-0.2.1.tgz'
8321 8598
   /sprintf-js/1.0.3:
8322 8599
     dev: false
8323
-    optional: true
8324 8600
     resolution:
8325 8601
       integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
8326 8602
   /squeak/1.3.0:
@@ -8496,6 +8772,16 @@ packages:
8496 8772
       node: '>=4'
8497 8773
     resolution:
8498 8774
       integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==
8775
+  /string-width/3.1.0:
8776
+    dependencies:
8777
+      emoji-regex: 7.0.3
8778
+      is-fullwidth-code-point: 2.0.0
8779
+      strip-ansi: 5.2.0
8780
+    dev: false
8781
+    engines:
8782
+      node: '>=6'
8783
+    resolution:
8784
+      integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==
8499 8785
   /string_decoder/0.0.1:
8500 8786
     dev: false
8501 8787
     resolution:
@@ -8540,6 +8826,14 @@ packages:
8540 8826
       node: '>=4'
8541 8827
     resolution:
8542 8828
       integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8=
8829
+  /strip-ansi/5.2.0:
8830
+    dependencies:
8831
+      ansi-regex: 4.1.0
8832
+    dev: false
8833
+    engines:
8834
+      node: '>=6'
8835
+    resolution:
8836
+      integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==
8543 8837
   /strip-bom-stream/2.0.0:
8544 8838
     dependencies:
8545 8839
       first-chunk-stream: 2.0.0
@@ -8584,6 +8878,12 @@ packages:
8584 8878
     hasBin: true
8585 8879
     resolution:
8586 8880
       integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=
8881
+  /strip-json-comments/2.0.1:
8882
+    dev: false
8883
+    engines:
8884
+      node: '>=0.10.0'
8885
+    resolution:
8886
+      integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=
8587 8887
   /strip-outer/1.0.1:
8588 8888
     dependencies:
8589 8889
       escape-string-regexp: 1.0.5
@@ -8625,6 +8925,14 @@ packages:
8625 8925
       node: '>=0.8.0'
8626 8926
     resolution:
8627 8927
       integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=
8928
+  /supports-color/5.4.0:
8929
+    dependencies:
8930
+      has-flag: 3.0.0
8931
+    dev: false
8932
+    engines:
8933
+      node: '>=4'
8934
+    resolution:
8935
+      integrity: sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==
8628 8936
   /supports-color/5.5.0:
8629 8937
     dependencies:
8630 8938
       has-flag: 3.0.0
@@ -8633,6 +8941,14 @@ packages:
8633 8941
       node: '>=4'
8634 8942
     resolution:
8635 8943
       integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
8944
+  /supports-color/6.0.0:
8945
+    dependencies:
8946
+      has-flag: 3.0.0
8947
+    dev: false
8948
+    engines:
8949
+      node: '>=6'
8950
+    resolution:
8951
+      integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==
8636 8952
   /supports-color/6.1.0:
8637 8953
     dependencies:
8638 8954
       has-flag: 3.0.0
@@ -8830,7 +9146,6 @@ packages:
8830 9146
     dependencies:
8831 9147
       readable-stream: 2.3.6
8832 9148
       xtend: 4.0.1
8833
-    dev: false
8834 9149
     resolution:
8835 9150
       integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
8836 9151
   /through2/3.0.0:
@@ -9497,6 +9812,10 @@ packages:
9497 9812
     dev: false
9498 9813
     resolution:
9499 9814
       integrity: sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=
9815
+  /which-module/2.0.0:
9816
+    dev: false
9817
+    resolution:
9818
+      integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=
9500 9819
   /which/1.3.1:
9501 9820
     dependencies:
9502 9821
       isexe: 2.0.0
@@ -9576,7 +9895,6 @@ packages:
9576 9895
     resolution:
9577 9896
       integrity: sha1-XM50B7r2Qsunvs2laBEcST9ZZlo=
9578 9897
   /xtend/4.0.1:
9579
-    dev: false
9580 9898
     engines:
9581 9899
       node: '>=0.4'
9582 9900
     resolution:
@@ -9593,12 +9911,76 @@ packages:
9593 9911
     dev: false
9594 9912
     resolution:
9595 9913
       integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=
9914
+  /yargs-parser/11.1.1:
9915
+    dependencies:
9916
+      camelcase: 5.3.1
9917
+      decamelize: 1.2.0
9918
+    dev: false
9919
+    resolution:
9920
+      integrity: sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==
9921
+  /yargs-parser/13.0.0:
9922
+    dependencies:
9923
+      camelcase: 5.3.1
9924
+      decamelize: 1.2.0
9925
+    dev: false
9926
+    resolution:
9927
+      integrity: sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw==
9928
+  /yargs-parser/13.1.0:
9929
+    dependencies:
9930
+      camelcase: 5.3.1
9931
+      decamelize: 1.2.0
9932
+    dev: false
9933
+    resolution:
9934
+      integrity: sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA==
9596 9935
   /yargs-parser/5.0.0:
9597 9936
     dependencies:
9598 9937
       camelcase: 3.0.0
9599 9938
     dev: false
9600 9939
     resolution:
9601 9940
       integrity: sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=
9941
+  /yargs-unparser/1.5.0:
9942
+    dependencies:
9943
+      flat: 4.1.0
9944
+      lodash: 4.17.11
9945
+      yargs: 12.0.5
9946
+    dev: false
9947
+    engines:
9948
+      node: '>=6'
9949
+    resolution:
9950
+      integrity: sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw==
9951
+  /yargs/12.0.5:
9952
+    dependencies:
9953
+      cliui: 4.1.0
9954
+      decamelize: 1.2.0
9955
+      find-up: 3.0.0
9956
+      get-caller-file: 1.0.3
9957
+      os-locale: 3.1.0
9958
+      require-directory: 2.1.1
9959
+      require-main-filename: 1.0.1
9960
+      set-blocking: 2.0.0
9961
+      string-width: 2.1.1
9962
+      which-module: 2.0.0
9963
+      y18n: 4.0.0
9964
+      yargs-parser: 11.1.1
9965
+    dev: false
9966
+    resolution:
9967
+      integrity: sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==
9968
+  /yargs/13.2.2:
9969
+    dependencies:
9970
+      cliui: 4.1.0
9971
+      find-up: 3.0.0
9972
+      get-caller-file: 2.0.5
9973
+      os-locale: 3.1.0
9974
+      require-directory: 2.1.1
9975
+      require-main-filename: 2.0.0
9976
+      set-blocking: 2.0.0
9977
+      string-width: 3.1.0
9978
+      which-module: 2.0.0
9979
+      y18n: 4.0.0
9980
+      yargs-parser: 13.1.0
9981
+    dev: false
9982
+    resolution:
9983
+      integrity: sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA==
9602 9984
   /yargs/3.5.4:
9603 9985
     dependencies:
9604 9986
       camelcase: 1.2.1
@@ -9660,6 +10042,7 @@ specifiers:
9660 10042
   gulp-copy: ^4.0.1
9661 10043
   gulp-if: ^2.0.2
9662 10044
   gulp-imagemin: ^5.0.3
10045
+  gulp-mocha: ^6.0.0
9663 10046
   gulp-sass: ^4.0.2
9664 10047
   gulp-sourcemaps: ^2.6.4
9665 10048
   gulp-util: ^3.0.8
@@ -9667,6 +10050,8 @@ specifiers:
9667 10050
   jdenticon: ^2.1.1
9668 10051
   livereactload: ^4.0.0-beta.2
9669 10052
   matrix-js-sdk: ^1.0.2
10053
+  mocha: ^6.1.4
10054
+  mocha-reporter-remote: ^1.7.1
9670 10055
   react: ^16.6.3
9671 10056
   react-dom: ^16.6.3
9672 10057
   sanitize-html: ^1.20.0

Loading…
Cancel
Save