From 247122f684fff3a936b79ad69c38de2f9ca46f83 Mon Sep 17 00:00:00 2001 From: Christian Paul Date: Wed, 9 Sep 2020 00:36:37 +0200 Subject: [PATCH] Remove bluebird (#94) --- README.md | 1 - package-lock.json | 5 ----- package.json | 1 - src/Renderer.js | 37 ++++++++++++++++--------------------- 4 files changed, 16 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index a78d6c6..eb777cf 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,6 @@ If your terminal supports mouse events you can drag the map and use your scroll * [`simplify-js`](https://github.com/mourner/simplify-js) for polyline simplifications #### Handling the flow -* [`bluebird`](https://github.com/petkaantonov/bluebird) for all the asynchronous [Promise](https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Promise) magic * [`node-fetch`](https://github.com/bitinn/node-fetch) for HTTP requests * [`env-paths`](https://github.com/sindresorhus/env-paths) to determine where to persist downloaded tiles diff --git a/package-lock.json b/package-lock.json index 990e9ac..cb490aa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1107,11 +1107,6 @@ "tweetnacl": "^0.14.3" } }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", diff --git a/package.json b/package.json index 08855d2..1b81311 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,6 @@ "license": "MIT", "dependencies": { "@mapbox/vector-tile": "^1.3.1", - "bluebird": "^3.7.2", "bresenham": "0.0.4", "earcut": "^2.2.2", "env-paths": "^2.2.0", diff --git a/src/Renderer.js b/src/Renderer.js index 2747bef..1d8d1c9 100644 --- a/src/Renderer.js +++ b/src/Renderer.js @@ -5,7 +5,6 @@ The Console Vector Tile renderer - bäm! */ 'use strict'; -const Promise = require('bluebird'); const x256 = require('x256'); const simplify = require('simplify-js'); @@ -30,7 +29,7 @@ class Renderer { this.canvas = new Canvas(width, height); } - draw(center, zoom) { + async draw(center, zoom) { if (this.isDrawing) return Promise.reject(); this.isDrawing = true; @@ -49,21 +48,20 @@ class Renderer { this.canvas.clear(); - return Promise.resolve(this._visibleTiles(center, zoom)).map((tile) => { - return this._getTile(tile); - }).map((tile) => { - return this._getTileFeatures(tile, zoom); - }).then((tiles) => { - this._renderTiles(tiles); - }).then(() => { + try { + let tiles = this._visibleTiles(center, zoom); + await Promise.all(tiles.map(async(tile) => { + await this._getTile(tile); + this._getTileFeatures(tile, zoom); + })); + await this._renderTiles(tiles); return this._getFrame(); - }).catch((e) => { - return console.log(e); - }).finally((frame) => { + } catch(e) { + console.error(e); + } finally { this.isDrawing = false; this.lastDrawAt = Date.now(); - return frame; - }); + } } _visibleTiles(center, zoom) { @@ -104,13 +102,9 @@ class Renderer { return tiles; } - _getTile(tile) { - return this.tileSource - .getTile(tile.xyz.z, tile.xyz.x, tile.xyz.y) - .then((data) => { - tile.data = data; - return tile; - }); + async _getTile(tile) { + tile.data = await this.tileSource.getTile(tile.xyz.z, tile.xyz.x, tile.xyz.y); + return tile; } _getTileFeatures(tile, zoom) { @@ -140,6 +134,7 @@ class Renderer { _renderTiles(tiles) { const labels = []; + if (tiles.length === 0) return; const drawOrder = this._generateDrawOrder(tiles[0].xyz.z); for (const layerId of drawOrder) {