From 7fa0c5e522febd5f402ae04d5030e29f5b305fd9 Mon Sep 17 00:00:00 2001 From: Xaver Maierhofer Date: Mon, 25 Dec 2017 16:12:44 +0100 Subject: [PATCH] [TASK] Zoom in visible area --- lib/forcegraph.js | 2 +- lib/gui.js | 2 +- lib/map.js | 27 +++- lib/map/activearea.js | 291 ++++++++++++++++++++++++++++++++++++++++++ lib/sidebar.js | 5 +- package.json | 4 +- yarn.lock | 196 ++++++++-------------------- 7 files changed, 379 insertions(+), 148 deletions(-) create mode 100644 lib/map/activearea.js diff --git a/lib/forcegraph.js b/lib/forcegraph.js index 7c1174b..c49ba58 100644 --- a/lib/forcegraph.js +++ b/lib/forcegraph.js @@ -55,7 +55,7 @@ define(['d3-selection', 'd3-force', 'd3-zoom', 'd3-drag', 'd3-timer', 'd3-ease', var k = result[2]; var end = { k: k }; - end.x = (canvas.width + sidebar()) / 2 - x * k; + end.x = (canvas.width + sidebar.getWidth()) / 2 - x * k; end.y = canvas.height / 2 - y * k; var start = { x: transform.x, y: transform.y, k: transform.k }; diff --git a/lib/gui.js b/lib/gui.js index 84583c5..19c2a2c 100644 --- a/lib/gui.js +++ b/lib/gui.js @@ -38,7 +38,7 @@ function (d3Interpolate, Map, Sidebar, Tabs, Container, Legend, Linklist, function addContent(K) { removeContent(); - content = new K(linkScale, sidebar.getWidth, buttons); + content = new K(linkScale, sidebar, buttons); content.render(contentDiv); fanout.add(content); diff --git a/lib/map.js b/lib/map.js index d0f6f89..6d43efc 100644 --- a/lib/map.js +++ b/lib/map.js @@ -1,4 +1,4 @@ -define(['map/clientlayer', 'map/labellayer', 'map/button', 'leaflet'], +define(['map/clientlayer', 'map/labellayer', 'map/button', 'leaflet', 'map/activearea'], function (ClientLayer, LabelLayer, Button, L) { 'use strict'; @@ -27,10 +27,30 @@ define(['map/clientlayer', 'map/labellayer', 'map/button', 'leaflet'], document.querySelector('.leaflet-control-layers').classList.add('leaflet-control-layers-expanded'); } + function setActiveArea() { + setTimeout(function () { + map.setActiveArea({ + position: 'absolute', + left: sidebar.getWidth() + 'px', + right: 0, + top: 0, + bottom: 0 + }); + }, 300); + } + var el = document.createElement('div'); el.classList.add('map'); map = L.map(el, options); + map.setActiveArea({ + position: 'absolute', + left: sidebar.getWidth() + 'px', + right: 0, + top: 0, + bottom: 0 + }); + var now = new Date(); config.mapLayers.forEach(function (item, i) { if ((typeof item.config.start === 'number' && item.config.start <= now.getHours()) || (typeof item.config.end === 'number' && item.config.end > now.getHours())) { @@ -79,6 +99,8 @@ define(['map/clientlayer', 'map/labellayer', 'map/button', 'leaflet'], labelLayer.addTo(map); labelLayer.setZIndex(6); + sidebar.button.addEventListener('visibility', setActiveArea); + map.on('zoom', function () { clientLayer.redraw(); labelLayer.redraw(); @@ -128,7 +150,7 @@ define(['map/clientlayer', 'map/labellayer', 'map/button', 'leaflet'], } function setView(bounds, zoom) { - map.fitBounds(bounds, { paddingTopLeft: [sidebar(), 0], maxZoom: (zoom ? zoom : config.nodeZoom) }); + map.fitBounds(bounds, { maxZoom: (zoom ? zoom : config.nodeZoom) }); } function goto(m) { @@ -205,6 +227,7 @@ define(['map/clientlayer', 'map/labellayer', 'map/button', 'leaflet'], self.destroy = function destroy() { button.clearButtons(); + sidebar.button.removeEventListener('visibility', setActiveArea); map.remove(); if (el.parentNode) { diff --git a/lib/map/activearea.js b/lib/map/activearea.js new file mode 100644 index 0000000..736a0ef --- /dev/null +++ b/lib/map/activearea.js @@ -0,0 +1,291 @@ +define(function () { + /** + * https://github.com/Mappy/Leaflet-active-area + * Apache 2.0 license https://www.apache.org/licenses/LICENSE-2.0 + */ + + var previousMethods = { + getCenter: L.Map.prototype.getCenter, + setView: L.Map.prototype.setView, + setZoomAround: L.Map.prototype.setZoomAround, + getBoundsZoom: L.Map.prototype.getBoundsZoom, + RendererUpdate: L.Renderer.prototype._update + }; + + L.Map.include({ + getBounds: function () { + if (this._viewport) { + return this.getViewportLatLngBounds(); + } + var bounds = this.getPixelBounds(); + var sw = this.unproject(bounds.getBottomLeft()); + var ne = this.unproject(bounds.getTopRight()); + + return new L.LatLngBounds(sw, ne); + }, + + getViewport: function () { + return this._viewport; + }, + + getViewportBounds: function () { + var vp = this._viewport; + var topleft = L.point(vp.offsetLeft, vp.offsetTop); + var vpsize = L.point(vp.clientWidth, vp.clientHeight); + + if (vpsize.x === 0 || vpsize.y === 0) { + // Our own viewport has no good size - so we fallback to the container size: + vp = this.getContainer(); + if (vp) { + topleft = L.point(0, 0); + vpsize = L.point(vp.clientWidth, vp.clientHeight); + } + } + + return L.bounds(topleft, topleft.add(vpsize)); + }, + + getViewportLatLngBounds: function () { + var bounds = this.getViewportBounds(); + return L.latLngBounds(this.containerPointToLatLng(bounds.min), this.containerPointToLatLng(bounds.max)); + }, + + getOffset: function () { + var mCenter = this.getSize().divideBy(2); + var vCenter = this.getViewportBounds().getCenter(); + + return mCenter.subtract(vCenter); + }, + + getCenter: function (withoutViewport) { + var center = previousMethods.getCenter.call(this); + + if (this.getViewport() && !withoutViewport) { + var zoom = this.getZoom(); + var point = this.project(center, zoom); + point = point.subtract(this.getOffset()); + + center = this.unproject(point, zoom); + } + + return center; + }, + + setView: function (center, zoom, options) { + center = L.latLng(center); + zoom = zoom === undefined ? this._zoom : this._limitZoom(zoom); + + if (this.getViewport()) { + var point = this.project(center, this._limitZoom(zoom)); + point = point.add(this.getOffset()); + center = this.unproject(point, this._limitZoom(zoom)); + } + + return previousMethods.setView.call(this, center, zoom, options); + }, + + setZoomAround: function (latlng, zoom, options) { + var vp = this.getViewport(); + + if (vp) { + var scale = this.getZoomScale(zoom); + var viewHalf = this.getViewportBounds().getCenter(); + var containerPoint = latlng instanceof L.Point ? latlng : this.latLngToContainerPoint(latlng); + + var centerOffset = containerPoint.subtract(viewHalf).multiplyBy(1 - 1 / scale); + var newCenter = this.containerPointToLatLng(viewHalf.add(centerOffset)); + + return this.setView(newCenter, zoom, { zoom: options }); + } + return previousMethods.setZoomAround.call(this, latlng, zoom, options); + }, + + getBoundsZoom: function (bounds, inside, padding) { // (LatLngBounds[, Boolean, Point]) -> Number + bounds = L.latLngBounds(bounds); + padding = L.point(padding || [0, 0]); + + var zoom = this.getZoom() || 0; + var min = this.getMinZoom(); + var max = this.getMaxZoom(); + var nw = bounds.getNorthWest(); + var se = bounds.getSouthEast(); + var vp = this.getViewport(); + var size = (vp ? L.point(vp.clientWidth, vp.clientHeight) : this.getSize()).subtract(padding); + var boundsSize = this.project(se, zoom).subtract(this.project(nw, zoom)); + var snap = L.Browser.any3d ? this.options.zoomSnap : 1; + + var scale = Math.min(size.x / boundsSize.x, size.y / boundsSize.y); + + zoom = this.getScaleZoom(scale, zoom); + + if (snap) { + zoom = Math.round(zoom / (snap / 100)) * (snap / 100); // don't jump if within 1% of a snap level + zoom = inside ? Math.ceil(zoom / snap) * snap : Math.floor(zoom / snap) * snap; + } + + return Math.max(min, Math.min(max, zoom)); + } + }); + + L.Map.include({ + setActiveArea: function (css, keepCenter, animate) { + var center; + if (keepCenter && this._zoom) { + // save center if map is already initialized + // and keepCenter is passed + center = this.getCenter(); + } + + if (!this._viewport) { + // Make viewport if not already made + var container = this.getContainer(); + this._viewport = L.DomUtil.create('div', ''); + container.insertBefore(this._viewport, container.firstChild); + } + + if (typeof css === 'string') { + this._viewport.className = css; + } else { + L.extend(this._viewport.style, css); + } + + if (center) { + this.setView(center, this.getZoom(), { animate: !!animate }); + } + return this; + } + }); + + L.Renderer.include({ + _onZoom: function () { + this._updateTransform(this._map.getCenter(true), this._map.getZoom()); + }, + + _update: function () { + previousMethods.RendererUpdate.call(this); + this._center = this._map.getCenter(true); + } + }); + + L.GridLayer.include({ + _updateLevels: function () { + var zoom = this._tileZoom; + var maxZoom = this.options.maxZoom; + + if (zoom === undefined) { + return undefined; + } + + for (var z in this._levels) { + if (this._levels[z].el.children.length || z === zoom) { + this._levels[z].el.style.zIndex = maxZoom - Math.abs(zoom - z); + } else { + L.DomUtil.remove(this._levels[z].el); + this._removeTilesAtZoom(z); + delete this._levels[z]; + } + } + + var level = this._levels[zoom]; + var map = this._map; + + if (!level) { + level = this._levels[zoom] = {}; + + level.el = L.DomUtil.create('div', 'leaflet-tile-container leaflet-zoom-animated', this._container); + level.el.style.zIndex = maxZoom; + + level.origin = map.project(map.unproject(map.getPixelOrigin()), zoom).round(); + level.zoom = zoom; + + this._setZoomTransform(level, map.getCenter(true), map.getZoom()); + + // force the browser to consider the newly added element for transition + L.Util.falseFn(level.el.offsetWidth); + } + + this._level = level; + + return level; + }, + + _resetView: function (e) { + var animating = e && (e.pinch || e.flyTo); + this._setView(this._map.getCenter(true), this._map.getZoom(), animating, animating); + }, + + _update: function (center) { + var map = this._map; + if (!map) { + return; + } + var zoom = map.getZoom(); + + if (center === undefined) { + center = map.getCenter(this); + } + if (this._tileZoom === undefined) { + return; + } // if out of minzoom/maxzoom + + var pixelBounds = this._getTiledPixelBounds(center); + var tileRange = this._pxBoundsToTileRange(pixelBounds); + var tileCenter = tileRange.getCenter(); + var queue = []; + + for (var key in this._tiles) { + this._tiles[key].current = false; + } + + // _update just loads more tiles. If the tile zoom level differs too much + // from the map's, let _setView reset levels and prune old tiles. + if (Math.abs(zoom - this._tileZoom) > 1) { + this._setView(center, zoom); + return; + } + + // create a queue of coordinates to load tiles from + for (var j = tileRange.min.y; j <= tileRange.max.y; j++) { + for (var i = tileRange.min.x; i <= tileRange.max.x; i++) { + var coords = new L.Point(i, j); + coords.z = this._tileZoom; + + if (!this._isValidTile(coords)) { + continue; + } + + var tile = this._tiles[this._tileCoordsToKey(coords)]; + if (tile) { + tile.current = true; + } else { + queue.push(coords); + } + } + } + + // sort tile queue to load tiles in order of their distance to center + queue.sort(function (a, b) { + return a.distanceTo(tileCenter) - b.distanceTo(tileCenter); + }); + + if (queue.length !== 0) { + // if its the first batch of tiles to load + if (!this._loading) { + this._loading = true; + // @event loading: Event + // Fired when the grid layer starts loading tiles + this.fire('loading'); + } + + // create DOM fragment to append tiles in one batch + var fragment = document.createDocumentFragment(); + + for (i = 0; i < queue.length; i++) { + this._addTile(queue[i], fragment); + } + + this._level.el.appendChild(fragment); + } + } + }); +}); diff --git a/lib/sidebar.js b/lib/sidebar.js index 9e52726..c042c88 100644 --- a/lib/sidebar.js +++ b/lib/sidebar.js @@ -15,11 +15,13 @@ define(function () { el.appendChild(sidebar); var button = document.createElement('button'); + var visibility = new Event('visibility'); sidebar.appendChild(button); button.classList.add('sidebarhandle'); button.setAttribute('aria-label', _.t('sidebar.toggle')); button.onclick = function onclick() { + button.dispatchEvent(visibility); sidebar.classList.toggle('hidden'); }; @@ -28,7 +30,7 @@ define(function () { sidebar.appendChild(container); self.getWidth = function getWidth() { - if (gridBreakpoints.lg[0] > window.innerWidth) { + if (gridBreakpoints.lg[0] > window.innerWidth || sidebar.classList.contains('hidden')) { return 0; } else if (gridBreakpoints.xl[0] > window.innerWidth) { return gridBreakpoints.lg[1]; @@ -55,6 +57,7 @@ define(function () { }; self.container = sidebar; + self.button = button; return self; }; diff --git a/package.json b/package.json index 2120282..7607c7f 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ "url": "https://github.com/ffrgb/meshviewer/issues" }, "devDependencies": { - "babel-eslint": "^8.1.0", - "browser-sync": "^2.21.0", + "babel-eslint": "^8.1.1", + "browser-sync": "^2.19.0", "eslint": "^4.14.0", "eslint-config-airbnb-es5": "^1.2.0", "eslint-config-defaults": "^9.0.0", diff --git a/yarn.lock b/yarn.lock index 349dd98..35f4cfe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -108,10 +108,6 @@ after@0.8.1: version "0.8.1" resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" -after@0.8.2: - version "0.8.2" - resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" - ajv-keywords@^1.0.0: version "1.5.1" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-1.5.1.tgz#314dd0a4b3368fad3dfcdc54ede6171b886daf3c" @@ -386,10 +382,6 @@ async-foreach@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/async-foreach/-/async-foreach-0.1.3.tgz#36121f845c0578172de419a97dbeb1d16ec34542" -async-limiter@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.0.tgz#78faed8c3d074ab81f22b4e985d79e8738f720f8" - async-settle@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" @@ -449,9 +441,9 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-eslint@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.1.0.tgz#b6f32d598559f96127fa608bd19574626325d5b7" +babel-eslint@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-8.1.1.tgz#a0637faf5ba160ae9e445b360f4d5be295edf1ed" dependencies: "@babel/code-frame" "7.0.0-beta.31" "@babel/traverse" "7.0.0-beta.31" @@ -490,9 +482,9 @@ base64-arraybuffer@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" -base64id@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" +base64id@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" base@^0.11.1: version "0.11.2" @@ -600,22 +592,29 @@ braces@^2.3.0: split-string "^3.0.2" to-regex "^3.0.1" -browser-sync-ui@v1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz#9740527b26d1d7ace259acc0c79e5b5e37d0fdf2" +browser-sync-client@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.5.1.tgz#ec1ad69a49c2e2d4b645b18b1c06c29b3d9af8eb" + dependencies: + etag "^1.7.0" + fresh "^0.3.0" + +browser-sync-ui@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-1.0.0.tgz#80c6cb5214e04218f1f2a3c8e2b1b830420f0b9f" dependencies: async-each-series "0.1.1" connect-history-api-fallback "^1.1.0" immutable "^3.7.6" server-destroy "1.0.1" - socket.io-client "2.0.4" stream-throttle "^0.1.3" -browser-sync@^2.21.0: - version "2.21.0" - resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.21.0.tgz#91cde3a8452f22f355ebe717ca1b3c1dbf9ca096" +browser-sync@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.19.0.tgz#8727742a87b6f6320fb293238a6ec8db57e4939a" dependencies: - browser-sync-ui v1.0.1 + browser-sync-client "2.5.1" + browser-sync-ui "1.0.0" bs-recipes "1.3.4" chokidar "1.7.0" connect "3.5.0" @@ -623,8 +622,6 @@ browser-sync@^2.21.0: easy-extender "2.3.2" eazy-logger "3.0.2" emitter-steward "^1.0.0" - etag "^1.8.1" - fresh "^0.5.2" fs-extra "3.0.1" http-proxy "1.15.2" immutable "3.8.1" @@ -638,7 +635,7 @@ browser-sync@^2.21.0: serve-index "1.8.0" serve-static "1.12.2" server-destroy "1.0.1" - socket.io "2.0.4" + socket.io "1.6.0" socket.io-client "1.6.0" ua-parser-js "0.7.12" yargs "6.4.0" @@ -1241,7 +1238,7 @@ debug@3.X, debug@^3.0.1, debug@^3.1.0: dependencies: ms "2.0.0" -debug@^2.1.1, debug@^2.2.0, debug@^2.3.3, debug@~2.6.4, debug@~2.6.6, debug@~2.6.9: +debug@^2.1.1, debug@^2.2.0, debug@^2.3.3: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: @@ -1497,22 +1494,6 @@ engine.io-client@1.8.0: xmlhttprequest-ssl "1.5.3" yeast "0.1.2" -engine.io-client@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.1.4.tgz#4fcf1370b47163bd2ce9be2733972430350d4ea1" - dependencies: - component-emitter "1.2.1" - component-inherit "0.0.3" - debug "~2.6.9" - engine.io-parser "~2.1.1" - has-cors "1.1.0" - indexof "0.0.1" - parseqs "0.0.5" - parseuri "0.0.5" - ws "~3.3.1" - xmlhttprequest-ssl "~1.5.4" - yeast "0.1.2" - engine.io-parser@1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.1.tgz#9554f1ae33107d6fbd170ca5466d2f833f6a07cf" @@ -1524,28 +1505,16 @@ engine.io-parser@1.3.1: has-binary "0.1.6" wtf-8 "1.0.0" -engine.io-parser@~2.1.0, engine.io-parser@~2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-2.1.1.tgz#e0fb3f0e0462f7f58bb77c1a52e9f5a7e26e4668" - dependencies: - after "0.8.2" - arraybuffer.slice "0.0.6" - base64-arraybuffer "0.1.5" - blob "0.0.4" - has-binary2 "~1.0.2" - -engine.io@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-3.1.4.tgz#3d0211b70a552ce841ffc7da8627b301a9a4162e" +engine.io@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.0.tgz#3eeb5f264cb75dbbec1baaea26d61f5a4eace2aa" dependencies: accepts "1.3.3" - base64id "1.0.0" + base64id "0.1.0" cookie "0.3.1" - debug "~2.6.9" - engine.io-parser "~2.1.0" - ws "~3.3.1" - optionalDependencies: - uws "~0.14.4" + debug "2.3.3" + engine.io-parser "1.3.1" + ws "1.1.1" entities@1.0: version "1.0.0" @@ -1794,7 +1763,7 @@ esutils@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" -etag@^1.8.1, etag@~1.8.0: +etag@^1.7.0, etag@~1.8.0: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -2129,9 +2098,9 @@ fresh@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" -fresh@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" +fresh@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" from@~0: version "0.1.7" @@ -2736,12 +2705,6 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" -has-binary2@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-binary2/-/has-binary2-1.0.2.tgz#e83dba49f0b9be4d026d27365350d9f03f54be98" - dependencies: - isarray "2.0.1" - has-binary@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" @@ -3294,10 +3257,6 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" -isarray@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e" - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -4164,6 +4123,10 @@ oauth-sign@~0.8.1, oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" +object-assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" + object-assign@4.1.x, object-assign@4.X, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -5154,9 +5117,12 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" +socket.io-adapter@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" + dependencies: + debug "2.3.3" + socket.io-parser "2.3.1" socket.io-client@1.6.0: version "1.6.0" @@ -5174,24 +5140,6 @@ socket.io-client@1.6.0: socket.io-parser "2.3.1" to-array "0.1.4" -socket.io-client@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-2.0.4.tgz#0918a552406dc5e540b380dcd97afc4a64332f8e" - dependencies: - backo2 "1.0.2" - base64-arraybuffer "0.1.5" - component-bind "1.0.0" - component-emitter "1.2.1" - debug "~2.6.4" - engine.io-client "~3.1.0" - has-cors "1.1.0" - indexof "0.0.1" - object-component "0.0.3" - parseqs "0.0.5" - parseuri "0.0.5" - socket.io-parser "~3.1.1" - to-array "0.1.4" - socket.io-parser@2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" @@ -5201,24 +5149,17 @@ socket.io-parser@2.3.1: isarray "0.0.1" json3 "3.3.2" -socket.io-parser@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-3.1.2.tgz#dbc2282151fc4faebbe40aeedc0772eba619f7f2" +socket.io@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.6.0.tgz#3e40d932637e6bd923981b25caf7c53e83b6e2e1" dependencies: - component-emitter "1.2.1" - debug "~2.6.4" - has-binary2 "~1.0.2" - isarray "2.0.1" - -socket.io@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-2.0.4.tgz#c1a4590ceff87ecf13c72652f046f716b29e6014" - dependencies: - debug "~2.6.6" - engine.io "~3.1.0" - socket.io-adapter "~1.1.0" - socket.io-client "2.0.4" - socket.io-parser "~3.1.1" + debug "2.3.3" + engine.io "1.8.0" + has-binary "0.1.7" + object-assign "4.1.0" + socket.io-adapter "0.5.0" + socket.io-client "1.6.0" + socket.io-parser "2.3.1" source-map-resolve@^0.3.0: version "0.3.1" @@ -5717,20 +5658,13 @@ uglify-js@3.1.x: commander "~2.11.0" source-map "~0.6.1" -uglify-js@3.2.x: +uglify-js@3.2.x, uglify-js@^3.0.5: version "3.2.2" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.2.2.tgz#870e4b34ed733d179284f9998efd3293f7fd73f6" dependencies: commander "~2.12.1" source-map "~0.6.1" -uglify-js@^3.0.5: - version "3.3.0" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.3.0.tgz#5d36460ccdb144a7aedb13f0dcdb7a76909e6682" - dependencies: - commander "~2.12.1" - source-map "~0.6.1" - uid-number@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" @@ -5739,10 +5673,6 @@ ultron@1.0.x: version "1.0.2" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - unc-path-regex@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" @@ -5868,10 +5798,6 @@ uuid@^3.0.0, uuid@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" -uws@~0.14.4: - version "0.14.5" - resolved "https://registry.yarnpkg.com/uws/-/uws-0.14.5.tgz#67aaf33c46b2a587a5f6666d00f7691328f149dc" - v8flags@^2.0.9: version "2.1.1" resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" @@ -6020,14 +5946,6 @@ ws@1.1.1: options ">=0.0.5" ultron "1.0.x" -ws@~3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - wtf-8@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" @@ -6051,10 +5969,6 @@ xmlhttprequest-ssl@1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" -xmlhttprequest-ssl@~1.5.4: - version "1.5.4" - resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.4.tgz#04f560915724b389088715cc0ed7813e9677bf57" - "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"