mirror of
https://github.com/maptiler/tileserver-gl.git
synced 2024-09-11 12:05:41 +03:00
fix: listFonts was broken, missing fonts could not fallback (#1076)
Promise code never worked: listFonts did not wait for fs.stat() to resolve(). This was not evident because late results were still used. A recent PR made it worse: late results are now ignored. This manifested for styles with missing fonts, no fallback could be used. Signed-off-by: Martin d'Allens <martin.dallens@liberty-rider.com>
This commit is contained in:
parent
b25a6420dd
commit
c9aa26a6de
25
src/utils.js
25
src/utils.js
@ -1,7 +1,8 @@
|
||||
'use strict';
|
||||
|
||||
import path from 'path';
|
||||
import fs from 'node:fs';
|
||||
import fsPromises from 'fs/promises';
|
||||
import fs, { existsSync } from 'node:fs';
|
||||
import clone from 'clone';
|
||||
import glyphCompose from '@mapbox/glyph-pbf-composite';
|
||||
|
||||
@ -165,30 +166,18 @@ export const getFontsPbf = (
|
||||
|
||||
export const listFonts = async (fontPath) => {
|
||||
const existingFonts = {};
|
||||
const fontListingPromise = new Promise((resolve, reject) => {
|
||||
fs.readdir(fontPath, (err, files) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
|
||||
const files = await fsPromises.readdir(fontPath);
|
||||
for (const file of files) {
|
||||
fs.stat(path.join(fontPath, file), (err, stats) => {
|
||||
if (err) {
|
||||
reject(err);
|
||||
return;
|
||||
}
|
||||
const stats = await fsPromises.stat(path.join(fontPath, file));
|
||||
if (
|
||||
stats.isDirectory() &&
|
||||
fs.existsSync(path.join(fontPath, file, '0-255.pbf'))
|
||||
existsSync(path.join(fontPath, file, '0-255.pbf'))
|
||||
) {
|
||||
existingFonts[path.basename(file)] = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
await fontListingPromise;
|
||||
|
||||
return existingFonts;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user