From d9193d7fe44c7d0ecb4b033488d8f5f539892e75 Mon Sep 17 00:00:00 2001 From: f0x Date: Thu, 23 May 2019 19:52:26 +0200 Subject: [PATCH] more robust media (thumbnail) handling, with tests --- components/events/image.js | 50 ++--- package.json | 8 +- shrinkwrap.yaml | 437 ++++++++++++++++++++++++++++++++++--- 3 files changed, 430 insertions(+), 65 deletions(-) diff --git a/components/events/image.js b/components/events/image.js index d0e5690..ee3c976 100644 --- a/components/events/image.js +++ b/components/events/image.js @@ -5,58 +5,36 @@ const create = require('create-react-class') const Promise = require('bluebird') const defaultValue = require('default-value') +const mediaLib = require('../../lib/media.js') + const Text = require('./text.js') let Event = create({ displayName: "m.image", getInitialState: function() { - let client = this.props.client - let hs = this.props.client.baseUrl let event = this.props.event if (event.content.url == undefined) { - return {url: {media: null, thumb: null}} + return null } - console.log(event) - - let h = 1000 - let w = 1000 - try { - if (event.content.info.h < h) { - h = event.content.info.h - } - - if (event.content.info.w < w) { - w = event.content.info.w - } - - if (event.content.info.thumbnail_info < h) { - h = event.content.info.thumbnail_info.h - } + return mediaLib.parseEvent(this.props.client, event, 1000, 1000) + }, - if (event.content.info.thumbnail_info < w) { - w = event.content.info.thumbnail_info.w - } - } catch(error) { - - } + updateSize: function(e) { + console.log("image was loaded") + }, - let media_url = client.mxcUrlToHttp(event.content.url) - let thumb_url = client.mxcUrlToHttp(event.content.url, w, h, "scale", false) + render: function() { + let event = this.props.event - return { - url: { - media: media_url, - thumb: thumb_url - } + if (this.state == null) { + return "malformed image event: " + event.content.body } - }, - render: function() { return (
- - + +
diff --git a/package.json b/package.json index c601f0a..80ec664 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "", "main": "app.js", "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" + "test": "mocha tests --recursive" }, "author": "f0x", "license": "AGPL-3.0", @@ -35,7 +35,6 @@ "gulp-sourcemaps": "^2.6.4", "gulp-util": "^3.0.8", "jdenticon": "^2.1.1", - "livereactload": "^4.0.0-beta.2", "matrix-js-sdk": "^1.0.2", "react": "^16.6.3", "react-dom": "^16.6.3", @@ -46,6 +45,9 @@ "webpack": "^4.27.1" }, "devDependencies": { - "gulp-watch": "^5.0.1" + "gulp-watch": "^5.0.1", + "mocha-reporter-remote": "^1.7.1", + "livereactload": "^4.0.0-beta.2", + "mocha": "^6.1.4" } } diff --git a/shrinkwrap.yaml b/shrinkwrap.yaml index 5a64e01..413d0ae 100644 --- a/shrinkwrap.yaml +++ b/shrinkwrap.yaml @@ -21,12 +21,14 @@ dependencies: gulp-copy: 4.0.1 gulp-if: 2.0.2 gulp-imagemin: 5.0.3 + gulp-mocha: 6.0.0 gulp-sass: 4.0.2 gulp-sourcemaps: 2.6.4 gulp-util: 3.0.8 jdenticon: 2.1.1 livereactload: 4.0.0-beta.2 matrix-js-sdk: 1.0.2 + mocha: 6.1.4 react: 16.6.3 react-dom: 16.6.3 sanitize-html: 1.20.0 @@ -36,6 +38,7 @@ dependencies: webpack: 4.27.1 devDependencies: gulp-watch: 5.0.1 + mocha-reporter-remote: 1.7.1 packages: /@babel/code-frame/7.0.0: dependencies: @@ -1027,6 +1030,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + /ansi-colors/3.2.3: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== /ansi-cyan/0.1.1: dependencies: ansi-wrap: 0.1.0 @@ -1068,6 +1077,12 @@ packages: node: '>=4' resolution: integrity: sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + /ansi-regex/4.1.0: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== /ansi-styles/1.1.0: dev: false engines: @@ -1152,7 +1167,6 @@ packages: dependencies: sprintf-js: 1.0.3 dev: false - optional: true resolution: integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== /arr-diff/1.1.0: @@ -1558,6 +1572,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg== + /binary-split/1.0.5: + dependencies: + through2: 2.0.5 + dev: true + resolution: + integrity: sha512-AQ5fcBrUU5hoIafkEvNKqxT+2xbqlSqAXef6IdCQr5wpHu9E7NGM6rTAlYJYbtxvAvjfx8nJkBy6rNlbPPI+Pw== /bl/1.2.2: dependencies: readable-stream: 2.3.6 @@ -1673,6 +1693,10 @@ packages: dev: false resolution: integrity: sha1-Wa54IKgpVezTL1+3xGisIcRyOAY= + /browser-stdout/1.3.1: + dev: false + resolution: + integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== /browserify-aes/1.2.0: dependencies: buffer-xor: 1.0.3 @@ -2080,6 +2104,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + /camelcase/5.3.1: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== /caniuse-lite/1.0.30000921: dev: false resolution: @@ -2233,6 +2263,14 @@ packages: dev: false resolution: integrity: sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + /cliui/4.1.0: + dependencies: + string-width: 2.1.1 + strip-ansi: 4.0.0 + wrap-ansi: 2.1.0 + dev: false + resolution: + integrity: sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== /clone-buffer/1.0.0: engines: node: '>= 0.10' @@ -2361,6 +2399,10 @@ packages: node: '>= 0.8' resolution: integrity: sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== + /commander/2.15.1: + dev: false + resolution: + integrity: sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== /commander/2.17.1: dev: false resolution: @@ -2583,7 +2625,7 @@ packages: dependencies: nice-try: 1.0.5 path-key: 2.0.1 - semver: 5.6.0 + semver: 5.7.0 shebang-command: 1.2.0 which: 1.3.1 dev: false @@ -2702,6 +2744,12 @@ packages: dev: false resolution: integrity: sha1-dUu1v+VUUdpppYuU1F9MWwRi1Y8= + /dargs/5.1.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk= /dashdash/1.14.1: dependencies: assert-plus: 1.0.0 @@ -2743,6 +2791,12 @@ packages: ms: 2.0.0 resolution: integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + /debug/3.1.0: + dependencies: + ms: 2.0.0 + dev: false + resolution: + integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== /debug/3.2.6: dependencies: ms: 2.1.1 @@ -2873,7 +2927,7 @@ packages: integrity: sha1-jG9SpaEZP+eP3J+G63HRbJdXyDo= /define-properties/1.1.3: dependencies: - object-keys: 1.0.12 + object-keys: 1.1.1 dev: false engines: node: '>= 0.4' @@ -3006,6 +3060,12 @@ packages: hasBin: true resolution: integrity: sha512-TFHMqfOvxlgrfVzTEkNBSh9SvSNX/HfF4OFI2QFGCyPm02EsyILqnUeb5P6q7JZ3SFNTBL5t2sePRgrN4epUWQ== + /diff/3.5.0: + dev: false + engines: + node: '>=0.3.1' + resolution: + integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== /diffie-hellman/5.0.3: dependencies: bn.js: 4.11.8 @@ -3164,6 +3224,10 @@ packages: dev: false resolution: integrity: sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== + /emoji-regex/7.0.3: + dev: false + resolution: + integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== /emojis-list/2.1.0: dev: false engines: @@ -3222,11 +3286,10 @@ packages: has: 1.0.3 is-callable: 1.1.4 is-regex: 1.0.4 - object-keys: 1.0.12 + object-keys: 1.1.1 dev: false engines: node: '>= 0.4' - optional: true resolution: integrity: sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== /es-to-primitive/1.2.0: @@ -3237,7 +3300,6 @@ packages: dev: false engines: node: '>= 0.4' - optional: true resolution: integrity: sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== /es5-ext/0.10.47: @@ -3364,7 +3426,6 @@ packages: engines: node: '>=4' hasBin: true - optional: true resolution: integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== /esrecurse/4.2.1: @@ -3508,7 +3569,6 @@ packages: dev: false engines: node: '>=6' - optional: true resolution: integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== /executable/4.1.1: @@ -3869,6 +3929,13 @@ packages: node: '>= 0.10' resolution: integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + /flat/4.1.0: + dependencies: + is-buffer: 2.0.3 + dev: false + hasBin: true + resolution: + integrity: sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== /flush-write-stream/1.0.3: dependencies: inherits: 2.0.3 @@ -4050,6 +4117,12 @@ packages: dev: false resolution: integrity: sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + /get-caller-file/2.0.5: + dev: false + engines: + node: 6.* || 8.* || >= 10.* + resolution: + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== /get-ports/1.0.3: dependencies: map-limit: 0.0.1 @@ -4093,7 +4166,6 @@ packages: dev: false engines: node: '>=6' - optional: true resolution: integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== /get-value/2.0.6: @@ -4181,6 +4253,17 @@ packages: dev: false resolution: integrity: sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0= + /glob/7.1.2: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.3 + minimatch: 3.0.4 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + resolution: + integrity: sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== /glob/7.1.3: dependencies: fs.realpath: 1.0.0 @@ -4319,6 +4402,12 @@ packages: optional: true resolution: integrity: sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + /growl/1.10.5: + dev: false + engines: + node: '>=4.x' + resolution: + integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== /gulp-babel/8.0.0: dependencies: plugin-error: 1.0.1 @@ -4440,6 +4529,20 @@ packages: node: '>= 0.10.0' resolution: integrity: sha1-kcfA1/Kb7NZgbVfYCn+Hdqh6uo4= + /gulp-mocha/6.0.0: + dependencies: + dargs: 5.1.0 + execa: 0.10.0 + mocha: 5.2.0 + npm-run-path: 2.0.2 + plugin-error: 1.0.1 + supports-color: 5.5.0 + through2: 2.0.5 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-FfBldW5ttnDpKf4Sg6/BLOOKCCbr5mbixDGK1t02/8oSrTCwNhgN/mdszG3cuQuYNzuouUdw4EH/mlYtgUscPg== /gulp-sass/4.0.2: dependencies: chalk: 2.4.1 @@ -4675,6 +4778,16 @@ packages: dev: false resolution: integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + /he/1.1.1: + dev: false + hasBin: true + resolution: + integrity: sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + /he/1.2.0: + dev: false + hasBin: true + resolution: + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== /hmac-drbg/1.0.1: dependencies: hash.js: 1.1.7 @@ -4970,6 +5083,12 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + /invert-kv/2.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== /ip-regex/2.1.0: dev: false engines: @@ -5025,6 +5144,12 @@ packages: /is-buffer/1.1.6: resolution: integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + /is-buffer/2.0.3: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== /is-builtin-module/1.0.0: dependencies: builtin-modules: 1.1.1 @@ -5037,7 +5162,6 @@ packages: dev: false engines: node: '>= 0.4' - optional: true resolution: integrity: sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== /is-data-descriptor/0.1.4: @@ -5058,7 +5182,6 @@ packages: dev: false engines: node: '>= 0.4' - optional: true resolution: integrity: sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= /is-descriptor/0.1.6: @@ -5270,7 +5393,6 @@ packages: dev: false engines: node: '>= 0.4' - optional: true resolution: integrity: sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= /is-relative/1.0.0: @@ -5309,7 +5431,6 @@ packages: dev: false engines: node: '>= 0.4' - optional: true resolution: integrity: sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== /is-typedarray/1.0.0: @@ -5428,6 +5549,14 @@ packages: optional: true resolution: integrity: sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== + /js-yaml/3.13.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + dev: false + hasBin: true + resolution: + integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== /jsbn/0.1.1: dev: false resolution: @@ -5592,6 +5721,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + /lcid/2.0.0: + dependencies: + invert-kv: 2.0.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== /lead/1.0.0: dependencies: flush-write-stream: 1.0.3 @@ -5891,6 +6028,14 @@ packages: dev: false resolution: integrity: sha1-eCA6TRwyiuHYbcpkYONptX9AVa4= + /log-symbols/2.2.0: + dependencies: + chalk: 2.4.2 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== /logalot/2.1.0: dependencies: figures: 1.7.0 @@ -5990,6 +6135,14 @@ packages: node: '>=0.10.0' resolution: integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + /map-age-cleaner/0.1.3: + dependencies: + p-defer: 1.0.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== /map-cache/0.2.2: engines: node: '>=0.10.0' @@ -6065,6 +6218,16 @@ packages: optional: true resolution: integrity: sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA== + /mem/4.3.0: + dependencies: + map-age-cleaner: 0.1.3 + mimic-fn: 2.1.0 + p-is-promise: 2.1.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== /memoizee/0.3.10: dependencies: d: 0.1.1 @@ -6198,6 +6361,12 @@ packages: hasBin: true resolution: integrity: sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + /mimic-fn/2.1.0: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== /mimic-response/1.0.1: dev: false engines: @@ -6275,6 +6444,68 @@ packages: hasBin: true resolution: integrity: sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + /mocha-reporter-remote/1.7.1: + bundledDependencies: + - '@atom-ide/utils' + dependencies: + remote-event-emitter: 1.2.0 + dev: true + engines: + node: ^10 + peerDependencies: + mocha: ^5 || ^6 + resolution: + integrity: sha512-sMv9ZYfvQG6gSeEWbOggqun9tBGWTrBZLGlWV7zDA6x4OFlIFmDI0jXciQpbFb6zpn6B5bJY+f8Ogmd9+9g3oQ== + /mocha/5.2.0: + dependencies: + browser-stdout: 1.3.1 + commander: 2.15.1 + debug: 3.1.0 + diff: 3.5.0 + escape-string-regexp: 1.0.5 + glob: 7.1.2 + growl: 1.10.5 + he: 1.1.1 + minimatch: 3.0.4 + mkdirp: 0.5.1 + supports-color: 5.4.0 + dev: false + engines: + node: '>= 4.0.0' + hasBin: true + resolution: + integrity: sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + /mocha/6.1.4: + dependencies: + ansi-colors: 3.2.3 + browser-stdout: 1.3.1 + debug: 3.2.6 + diff: 3.5.0 + escape-string-regexp: 1.0.5 + find-up: 3.0.0 + glob: 7.1.3 + growl: 1.10.5 + he: 1.2.0 + js-yaml: 3.13.1 + log-symbols: 2.2.0 + minimatch: 3.0.4 + mkdirp: 0.5.1 + ms: 2.1.1 + node-environment-flags: 1.0.5 + object.assign: 4.1.0 + strip-json-comments: 2.0.1 + supports-color: 6.0.0 + which: 1.3.1 + wide-align: 1.1.3 + yargs: 13.2.2 + yargs-parser: 13.0.0 + yargs-unparser: 1.5.0 + dev: false + engines: + node: '>= 6.0.0' + hasBin: true + resolution: + integrity: sha512-PN8CIy4RXsIoxoFJzS4QNnCH4psUCPWc4/rPrst/ecSJJbLBkubMiyGCP2Kj/9YnWbotFqAoeXyXMucj7gwCFg== /module-deps/2.0.6: dependencies: JSONStream: 0.7.4 @@ -6384,6 +6615,13 @@ packages: dev: false resolution: integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + /node-environment-flags/1.0.5: + dependencies: + object.getownpropertydescriptors: 2.0.3 + semver: 5.7.0 + dev: false + resolution: + integrity: sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ== /node-fetch/1.7.3: dependencies: encoding: 0.1.12 @@ -6583,12 +6821,12 @@ packages: dev: false resolution: integrity: sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= - /object-keys/1.0.12: + /object-keys/1.1.1: dev: false engines: node: '>= 0.4' resolution: - integrity: sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag== + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== /object-visit/1.0.1: dependencies: isobject: 3.0.1 @@ -6601,7 +6839,7 @@ packages: define-properties: 1.1.3 function-bind: 1.1.1 has-symbols: 1.0.0 - object-keys: 1.0.12 + object-keys: 1.1.1 dev: false engines: node: '>= 0.4' @@ -6625,7 +6863,6 @@ packages: dev: false engines: node: '>= 0.8' - optional: true resolution: integrity: sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY= /object.map/1.0.1: @@ -6777,6 +7014,16 @@ packages: node: '>=0.10.0' resolution: integrity: sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + /os-locale/3.1.0: + dependencies: + execa: 1.0.0 + lcid: 2.0.0 + mem: 4.3.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== /os-tmpdir/1.0.2: dev: false engines: @@ -6811,6 +7058,12 @@ packages: optional: true resolution: integrity: sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + /p-defer/1.0.0: + dev: false + engines: + node: '>=4' + resolution: + integrity: sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= /p-event/1.3.0: dependencies: p-timeout: 1.2.1 @@ -6842,17 +7095,23 @@ packages: optional: true resolution: integrity: sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= - /p-limit/2.0.0: + /p-is-promise/2.1.0: + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + /p-limit/2.2.0: dependencies: - p-try: 2.0.0 + p-try: 2.2.0 dev: false engines: node: '>=6' resolution: - integrity: sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A== + integrity: sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== /p-locate/3.0.0: dependencies: - p-limit: 2.0.0 + p-limit: 2.2.0 dev: false engines: node: '>=6' @@ -6904,12 +7163,12 @@ packages: optional: true resolution: integrity: sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== - /p-try/2.0.0: + /p-try/2.2.0: dev: false engines: node: '>=6' resolution: - integrity: sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ== + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== /pad-left/2.1.0: dependencies: repeat-string: 1.6.1 @@ -7684,6 +7943,15 @@ packages: dev: false resolution: integrity: sha1-avsRFi4jFP7M2tbcX96CH9cxgzE= + /remote-event-emitter/1.2.0: + dependencies: + binary-split: 1.0.5 + dev: true + engines: + node: ^10.0.0 + npm: ^6.0.0 + resolution: + integrity: sha512-VYADzXfQ6RRKsTbFNB6G9ujWCOuo3NcugHHmBiXeDQR0bge/hqD4N7AmSlmOb3pUdu9fbsipnhpr2t2UMmnGBw== /remove-bom-buffer/3.0.0: dependencies: is-buffer: 1.1.6 @@ -7781,6 +8049,10 @@ packages: dev: false resolution: integrity: sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + /require-main-filename/2.0.0: + dev: false + resolution: + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== /resolve-dir/1.0.1: dependencies: expand-tilde: 2.0.2 @@ -8009,6 +8281,11 @@ packages: hasBin: true resolution: integrity: sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg== + /semver/5.7.0: + dev: false + hasBin: true + resolution: + integrity: sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== /send/0.16.2: dependencies: debug: 2.6.9 @@ -8320,7 +8597,6 @@ packages: tarball: 'http://registry.npmjs.org/split2/-/split2-0.2.1.tgz' /sprintf-js/1.0.3: dev: false - optional: true resolution: integrity: sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= /squeak/1.3.0: @@ -8496,6 +8772,16 @@ packages: node: '>=4' resolution: integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + /string-width/3.1.0: + dependencies: + emoji-regex: 7.0.3 + is-fullwidth-code-point: 2.0.0 + strip-ansi: 5.2.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== /string_decoder/0.0.1: dev: false resolution: @@ -8540,6 +8826,14 @@ packages: node: '>=4' resolution: integrity: sha1-qEeQIusaw2iocTibY1JixQXuNo8= + /strip-ansi/5.2.0: + dependencies: + ansi-regex: 4.1.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== /strip-bom-stream/2.0.0: dependencies: first-chunk-stream: 2.0.0 @@ -8584,6 +8878,12 @@ packages: hasBin: true resolution: integrity: sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + /strip-json-comments/2.0.1: + dev: false + engines: + node: '>=0.10.0' + resolution: + integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo= /strip-outer/1.0.1: dependencies: escape-string-regexp: 1.0.5 @@ -8625,6 +8925,14 @@ packages: node: '>=0.8.0' resolution: integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + /supports-color/5.4.0: + dependencies: + has-flag: 3.0.0 + dev: false + engines: + node: '>=4' + resolution: + integrity: sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== /supports-color/5.5.0: dependencies: has-flag: 3.0.0 @@ -8633,6 +8941,14 @@ packages: node: '>=4' resolution: integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + /supports-color/6.0.0: + dependencies: + has-flag: 3.0.0 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== /supports-color/6.1.0: dependencies: has-flag: 3.0.0 @@ -8830,7 +9146,6 @@ packages: dependencies: readable-stream: 2.3.6 xtend: 4.0.1 - dev: false resolution: integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== /through2/3.0.0: @@ -9497,6 +9812,10 @@ packages: dev: false resolution: integrity: sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + /which-module/2.0.0: + dev: false + resolution: + integrity: sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= /which/1.3.1: dependencies: isexe: 2.0.0 @@ -9576,7 +9895,6 @@ packages: resolution: integrity: sha1-XM50B7r2Qsunvs2laBEcST9ZZlo= /xtend/4.0.1: - dev: false engines: node: '>=0.4' resolution: @@ -9593,12 +9911,76 @@ packages: dev: false resolution: integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + /yargs-parser/11.1.1: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + resolution: + integrity: sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ== + /yargs-parser/13.0.0: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + resolution: + integrity: sha512-w2LXjoL8oRdRQN+hOyppuXs+V/fVAYtpcrRxZuF7Kt/Oc+Jr2uAcVntaUTNT6w5ihoWfFDpNY8CPx1QskxZ/pw== + /yargs-parser/13.1.0: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + dev: false + resolution: + integrity: sha512-Yq+32PrijHRri0vVKQEm+ys8mbqWjLiwQkMFNXEENutzLPP0bE4Lcd4iA3OQY5HF+GD3xXxf0MEHb8E4/SA3AA== /yargs-parser/5.0.0: dependencies: camelcase: 3.0.0 dev: false resolution: integrity: sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= + /yargs-unparser/1.5.0: + dependencies: + flat: 4.1.0 + lodash: 4.17.11 + yargs: 12.0.5 + dev: false + engines: + node: '>=6' + resolution: + integrity: sha512-HK25qidFTCVuj/D1VfNiEndpLIeJN78aqgR23nL3y4N0U/91cOAzqfHlF8n2BvoNDcZmJKin3ddNSvOxSr8flw== + /yargs/12.0.5: + dependencies: + cliui: 4.1.0 + decamelize: 1.2.0 + find-up: 3.0.0 + get-caller-file: 1.0.3 + os-locale: 3.1.0 + require-directory: 2.1.1 + require-main-filename: 1.0.1 + set-blocking: 2.0.0 + string-width: 2.1.1 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 11.1.1 + dev: false + resolution: + integrity: sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw== + /yargs/13.2.2: + dependencies: + cliui: 4.1.0 + find-up: 3.0.0 + get-caller-file: 2.0.5 + os-locale: 3.1.0 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 3.1.0 + which-module: 2.0.0 + y18n: 4.0.0 + yargs-parser: 13.1.0 + dev: false + resolution: + integrity: sha512-WyEoxgyTD3w5XRpAQNYUB9ycVH/PQrToaTXdYXRdOXvEy1l19br+VJsc0vcO8PTGg5ro/l/GY7F/JMEBmI0BxA== /yargs/3.5.4: dependencies: camelcase: 1.2.1 @@ -9660,6 +10042,7 @@ specifiers: gulp-copy: ^4.0.1 gulp-if: ^2.0.2 gulp-imagemin: ^5.0.3 + gulp-mocha: ^6.0.0 gulp-sass: ^4.0.2 gulp-sourcemaps: ^2.6.4 gulp-util: ^3.0.8 @@ -9667,6 +10050,8 @@ specifiers: jdenticon: ^2.1.1 livereactload: ^4.0.0-beta.2 matrix-js-sdk: ^1.0.2 + mocha: ^6.1.4 + mocha-reporter-remote: ^1.7.1 react: ^16.6.3 react-dom: ^16.6.3 sanitize-html: ^1.20.0