nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 442f1b26edabbd44bce11ff187fedaffa4236841
parent a824c31cc7192386e1f22b2ef8e96493aab7da51
Author: Sergey Orlov <wladimirych@gmail.com>
Date:   Sat,  8 Aug 2020 20:31:46 +0200

Fix order of geodata lists loaded from nakarte urls. Fixes #501.

Diffstat:
Mpackage.json | 1+
Msrc/lib/leaflet.control.track-list/lib/services/nakarte/index.js | 9+++++----
Atest/test_track_load_from_nakarte_urls.js | 39+++++++++++++++++++++++++++++++++++++++
Mwebpack/webpack.config.js | 1+
Myarn.lock | 5+++++
5 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/package.json b/package.json @@ -26,6 +26,7 @@ "@babel/preset-env": "^7.11.0", "babel-eslint": "^10.1.0", "babel-loader": "^8.1.0", + "babel-plugin-rewire": "^1.2.0", "chai": "^4.2.0", "chalk": "^4.1.0", "child_process": "^1.0.2", diff --git a/src/lib/leaflet.control.track-list/lib/services/nakarte/index.js b/src/lib/leaflet.control.track-list/lib/services/nakarte/index.js @@ -7,10 +7,11 @@ import loadTracksFromJson from './loadTracksFromJson'; import {fetch} from '~/lib/xhr-promise'; function flattenArray(ar) { - return ar.reduce((cur, acc) => { - acc.push(...cur); - return acc; - }, []); + const res = []; + for (const it of ar) { + res.push(...it); + } + return res; } function parsePointFromHashValues(values) { diff --git a/test/test_track_load_from_nakarte_urls.js b/test/test_track_load_from_nakarte_urls.js @@ -0,0 +1,39 @@ +import serviceNakarte from '~/lib/leaflet.control.track-list/lib/services/nakarte/index.js'; + +suite('flattenArray'); + +const flattenArray = serviceNakarte.__get__('flattenArray'); +[ + [[], []], + [[[], []], []], + [[[1]], [1]], + [[[1, 2, 3]], [1, 2, 3]], + [ + [[], [1, 2, 3]], + [1, 2, 3], + ], + [ + [[1], [2]], + [1, 2], + ], + [ + [ + [1, 2, 3], + [4, 5, 6], + ], + [1, 2, 3, 4, 5, 6], + ], + [ + [ + [1, 2], + [3, 4], + [5, 6], + ], + [1, 2, 3, 4, 5, 6], + ], +].forEach(function([inp, exp]) { + test(JSON.stringify(inp), function() { + const res = flattenArray(inp); + assert.deepEqual(res, exp); + }); +}); diff --git a/webpack/webpack.config.js b/webpack/webpack.config.js @@ -58,6 +58,7 @@ const babelConfig = { '@babel/plugin-proposal-class-properties', '@babel/plugin-proposal-optional-chaining', '@babel/plugin-proposal-nullish-coalescing-operator', + ...(isTesting ? ['babel-plugin-rewire'] : []), ], }; diff --git a/yarn.lock b/yarn.lock @@ -1723,6 +1723,11 @@ babel-plugin-dynamic-import-node@^2.3.3: dependencies: object.assign "^4.1.0" +babel-plugin-rewire@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/babel-plugin-rewire/-/babel-plugin-rewire-1.2.0.tgz#822562d72ed2c84e47c0f95ee232c920853e9d89" + integrity sha512-JBZxczHw3tScS+djy6JPLMjblchGhLI89ep15H3SyjujIzlxo5nr6Yjo7AXotdeVczeBmWs0tF8PgJWDdgzAkQ== + backo2@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"