chiitiler 1.21.1 → 1.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/render/pool.js +9 -35
- package/dist/source/http.js +5 -0
- package/package.json +1 -1
package/dist/render/pool.js
CHANGED
|
@@ -1,28 +1,10 @@
|
|
|
1
|
-
import * as path from 'path';
|
|
2
1
|
import mbgl from '@maplibre/maplibre-gl-native';
|
|
3
2
|
import { Pool } from 'lightning-pool';
|
|
4
3
|
import { LRUCache } from 'lru-cache';
|
|
5
4
|
import { getSource } from '../source/index.js';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
png: Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGP4//8/AwAI/AL+p5qgoAAAAABJRU5ErkJggg==', 'base64'),
|
|
10
|
-
webp: Buffer.from('UklGRkAAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAIAAAAAAFZQOCAYAAAAMAEAnQEqAQABAAFAJiWkAANwAP789AAA', 'base64'),
|
|
11
|
-
jpeg: Buffer.from('/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAABAAEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iiigD//2Q=='),
|
|
12
|
-
};
|
|
13
|
-
function handleFileExt(uri) {
|
|
14
|
-
if (uri.startsWith('cog://'))
|
|
15
|
-
return 'png'; // cog:// always returns as png
|
|
16
|
-
// extract extension only, take into account query string or hash
|
|
17
|
-
const basename = path.basename(uri).split(/[?#]/)[0];
|
|
18
|
-
const ext = basename.split('.').pop();
|
|
19
|
-
if (ext === undefined)
|
|
20
|
-
return null;
|
|
21
|
-
const l = ext.toLowerCase();
|
|
22
|
-
if (l === 'jpeg')
|
|
23
|
-
return 'jpg';
|
|
24
|
-
return l;
|
|
25
|
-
}
|
|
5
|
+
// mbglはdataプロパティが無いレスポンスを「データなしタイル」として正常に扱う。
|
|
6
|
+
// 型定義はdataを必須としているが、空タイルを表現するには渡さないのが正解。
|
|
7
|
+
const EMPTY_RESPONSE = {};
|
|
26
8
|
const mapPoolCache = new LRUCache({
|
|
27
9
|
max: 10,
|
|
28
10
|
dispose: (pool, key) => {
|
|
@@ -38,26 +20,18 @@ async function getRenderPool(style, cache, mode) {
|
|
|
38
20
|
create: () => {
|
|
39
21
|
const map = new mbgl.Map({
|
|
40
22
|
request: function (req, callback) {
|
|
41
|
-
const ext = handleFileExt(req.url);
|
|
42
23
|
getSource(req.url, cache)
|
|
43
24
|
.then((buf) => {
|
|
44
|
-
if (buf) {
|
|
25
|
+
if (buf !== null && buf.length > 0) {
|
|
45
26
|
callback(undefined, { data: buf });
|
|
46
27
|
}
|
|
47
|
-
else
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
else
|
|
52
|
-
callback(undefined, { data: EMPTY_BUFFER });
|
|
28
|
+
else {
|
|
29
|
+
// 204/空ボディ/404: 空タイルとして扱わせる
|
|
30
|
+
callback(undefined, EMPTY_RESPONSE);
|
|
31
|
+
}
|
|
53
32
|
})
|
|
54
33
|
.catch(() => {
|
|
55
|
-
|
|
56
|
-
callback(undefined, {
|
|
57
|
-
data: TRANSPARENT_BUFFER[ext],
|
|
58
|
-
});
|
|
59
|
-
else
|
|
60
|
-
callback(undefined, { data: EMPTY_BUFFER });
|
|
34
|
+
callback(undefined, EMPTY_RESPONSE);
|
|
61
35
|
});
|
|
62
36
|
},
|
|
63
37
|
ratio: 1,
|
package/dist/source/http.js
CHANGED
|
@@ -13,7 +13,12 @@ async function getHttpSource(uri, cache = noneCache()) {
|
|
|
13
13
|
console.log(`failed to fetch ${uri}`);
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
|
+
// 204/空ボディはキャッシュ汚染を避けるため書き込まずnullを返す
|
|
17
|
+
if (res.status === 204)
|
|
18
|
+
return null;
|
|
16
19
|
const buf = Buffer.from(await res.arrayBuffer());
|
|
20
|
+
if (buf.length === 0)
|
|
21
|
+
return null;
|
|
17
22
|
cache.set(uri, buf);
|
|
18
23
|
return buf;
|
|
19
24
|
}
|