@signalk/charts-plugin 3.5.0 → 3.6.1
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/package.json +5 -1
- package/plugin/chartDownloader.d.ts +1 -1
- package/plugin/chartDownloader.d.ts.map +1 -1
- package/plugin/chartDownloader.js +29 -19
- package/plugin/chartDownloader.js.map +1 -1
- package/plugin/charts.d.ts.map +1 -1
- package/plugin/charts.js +54 -31
- package/plugin/charts.js.map +1 -1
- package/plugin/index.d.ts.map +1 -1
- package/plugin/index.js +65 -101
- package/plugin/index.js.map +1 -1
- package/plugin/pluginStatus.d.ts +6 -0
- package/plugin/pluginStatus.d.ts.map +1 -0
- package/plugin/pluginStatus.js +36 -0
- package/plugin/pluginStatus.js.map +1 -0
- package/plugin/projection.d.ts.map +1 -1
- package/plugin/projection.js +14 -0
- package/plugin/projection.js.map +1 -1
- package/plugin/tileServer.d.ts +29 -0
- package/plugin/tileServer.d.ts.map +1 -0
- package/plugin/tileServer.js +162 -0
- package/plugin/tileServer.js.map +1 -0
- package/plugin/types.d.ts +21 -1
- package/plugin/types.d.ts.map +1 -1
- package/public/index.js +279 -240
- package/public/logo.svg +74 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.serveTileFromCacheOrRemote = exports.isMbtilesTileMissing = exports.serveTileFromMbtiles = exports.serveTileFromFilesystem = exports.validateBBox = exports.validateMaxZoom = exports.validateTileCoords = exports.isAllowedTileFormat = exports.responseHttpOptions = exports.MIN_TILE_Z = exports.MAX_ZOOM = exports.MIN_ZOOM = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const chartDownloader_1 = require("./chartDownloader");
|
|
9
|
+
/**
|
|
10
|
+
* Tile-serving HTTP helpers for the charts plugin. Each helper terminates
|
|
11
|
+
* the Express response itself; callers only pick the branch based on the
|
|
12
|
+
* provider's storage format.
|
|
13
|
+
*/
|
|
14
|
+
// Provider-config zoom range: what we allow users to configure in the plugin
|
|
15
|
+
// settings for a chart's minzoom/maxzoom.
|
|
16
|
+
exports.MIN_ZOOM = 1;
|
|
17
|
+
exports.MAX_ZOOM = 24;
|
|
18
|
+
// Tile-coordinate range accepted on the HTTP tile route. Starts at zero
|
|
19
|
+
// because Leaflet's default minZoom is 0 — clients legitimately ask for
|
|
20
|
+
// the world tile when framing the initial view, even if no configured
|
|
21
|
+
// provider covers that level (they just get a 404 per-tile).
|
|
22
|
+
exports.MIN_TILE_Z = 0;
|
|
23
|
+
exports.responseHttpOptions = {
|
|
24
|
+
headers: {
|
|
25
|
+
'Cache-Control': 'public, max-age=7776000' // 90 days
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
// Tile file extensions recognised on the filesystem path. Add new entries
|
|
29
|
+
// here when a new raster or vector format is supported.
|
|
30
|
+
const ALLOWED_TILE_FORMATS = new Set(['png', 'jpg', 'jpeg', 'pbf']);
|
|
31
|
+
const isAllowedTileFormat = (format) => {
|
|
32
|
+
if (!format)
|
|
33
|
+
return false;
|
|
34
|
+
return ALLOWED_TILE_FORMATS.has(format.toLowerCase());
|
|
35
|
+
};
|
|
36
|
+
exports.isAllowedTileFormat = isAllowedTileFormat;
|
|
37
|
+
// Validates tile coordinates submitted by callers. Zoom is constrained to
|
|
38
|
+
// the range the plugin advertises; x/y must fit the zoom grid.
|
|
39
|
+
// Returns an error message if invalid, or undefined if OK.
|
|
40
|
+
const validateTileCoords = (z, x, y) => {
|
|
41
|
+
if (!Number.isInteger(z) || z < exports.MIN_TILE_Z || z > exports.MAX_ZOOM) {
|
|
42
|
+
return `Invalid zoom ${z} (must be an integer in [${exports.MIN_TILE_Z}, ${exports.MAX_ZOOM}])`;
|
|
43
|
+
}
|
|
44
|
+
const n = 2 ** z;
|
|
45
|
+
if (!Number.isInteger(x) || x < 0 || x >= n) {
|
|
46
|
+
return `Invalid x ${x} at zoom ${z} (must be an integer in [0, ${n}))`;
|
|
47
|
+
}
|
|
48
|
+
if (!Number.isInteger(y) || y < 0 || y >= n) {
|
|
49
|
+
return `Invalid y ${y} at zoom ${z} (must be an integer in [0, ${n}))`;
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
};
|
|
53
|
+
exports.validateTileCoords = validateTileCoords;
|
|
54
|
+
const validateMaxZoom = (maxZoom) => {
|
|
55
|
+
if (!Number.isFinite(maxZoom) || maxZoom < exports.MIN_ZOOM || maxZoom > exports.MAX_ZOOM) {
|
|
56
|
+
return `Invalid maxZoom ${maxZoom} (must be in [${exports.MIN_ZOOM}, ${exports.MAX_ZOOM}])`;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
};
|
|
60
|
+
exports.validateMaxZoom = validateMaxZoom;
|
|
61
|
+
// Validates a caller-supplied bounding box. Lat/Lon must be finite numbers in
|
|
62
|
+
// the real-world range; minLat must be below maxLat so downstream tile math
|
|
63
|
+
// doesn't silently iterate an empty or inverted span. minLon > maxLon is
|
|
64
|
+
// allowed — that's how antimeridian-crossing boxes are expressed.
|
|
65
|
+
const validateBBox = (bbox) => {
|
|
66
|
+
const { minLon, minLat, maxLon, maxLat } = bbox;
|
|
67
|
+
const finite = (v) => typeof v === 'number' && Number.isFinite(v);
|
|
68
|
+
if (!finite(minLon) ||
|
|
69
|
+
!finite(minLat) ||
|
|
70
|
+
!finite(maxLon) ||
|
|
71
|
+
!finite(maxLat)) {
|
|
72
|
+
return 'bbox must contain finite numbers for minLon, minLat, maxLon, maxLat';
|
|
73
|
+
}
|
|
74
|
+
if (minLon < -180 || minLon > 180 || maxLon < -180 || maxLon > 180) {
|
|
75
|
+
return 'bbox longitude must be in [-180, 180]';
|
|
76
|
+
}
|
|
77
|
+
if (minLat < -90 || minLat > 90 || maxLat < -90 || maxLat > 90) {
|
|
78
|
+
return 'bbox latitude must be in [-90, 90]';
|
|
79
|
+
}
|
|
80
|
+
if (minLat >= maxLat) {
|
|
81
|
+
return 'bbox minLat must be less than maxLat';
|
|
82
|
+
}
|
|
83
|
+
return undefined;
|
|
84
|
+
};
|
|
85
|
+
exports.validateBBox = validateBBox;
|
|
86
|
+
const serveTileFromFilesystem = (res, provider, z, x, y) => {
|
|
87
|
+
const { format, _flipY, _filePath } = provider;
|
|
88
|
+
const normalizedFormat = format?.toLowerCase() ?? '';
|
|
89
|
+
if (!_filePath || !ALLOWED_TILE_FORMATS.has(normalizedFormat)) {
|
|
90
|
+
res.sendStatus(404);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const flippedY = Math.pow(2, z) - 1 - y;
|
|
94
|
+
const file = path_1.default.resolve(_filePath, `${z}/${x}/${_flipY ? flippedY : y}.${normalizedFormat}`);
|
|
95
|
+
// sendFile already performs the stat and handles the error; the previous
|
|
96
|
+
// stat+access probe duplicated that work on every tile request. Its
|
|
97
|
+
// callback fires once per request with an err only when something went
|
|
98
|
+
// wrong (missing file, permission denied, header-already-sent aborts).
|
|
99
|
+
res.sendFile(file, exports.responseHttpOptions, (err) => {
|
|
100
|
+
if (!err)
|
|
101
|
+
return;
|
|
102
|
+
const code = err.code;
|
|
103
|
+
if (code === 'ENOENT' || code === 'EACCES' || code === 'EISDIR') {
|
|
104
|
+
if (!res.headersSent)
|
|
105
|
+
res.sendStatus(404);
|
|
106
|
+
}
|
|
107
|
+
else if (!res.headersSent) {
|
|
108
|
+
res.sendStatus(500);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
exports.serveTileFromFilesystem = serveTileFromFilesystem;
|
|
113
|
+
const serveTileFromMbtiles = (res, provider, z, x, y) => {
|
|
114
|
+
if (!(0, exports.isAllowedTileFormat)(provider.format)) {
|
|
115
|
+
res.sendStatus(404);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Guard against a provider whose MBTiles handle is missing: openMbtilesFile
|
|
119
|
+
// may have failed post-reconcile, or the handle was closed while a request
|
|
120
|
+
// was in flight. Without this check, .getTile throws synchronously and
|
|
121
|
+
// Express never answers the client.
|
|
122
|
+
if (!provider._mbtilesHandle) {
|
|
123
|
+
res.sendStatus(500);
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
provider._mbtilesHandle.getTile(z, x, y, (err, tile, headers) => {
|
|
127
|
+
if (err && (0, exports.isMbtilesTileMissing)(err)) {
|
|
128
|
+
res.sendStatus(404);
|
|
129
|
+
}
|
|
130
|
+
else if (err) {
|
|
131
|
+
console.error(`Error fetching tile ${provider.identifier}/${z}/${x}/${y}:`, err);
|
|
132
|
+
res.sendStatus(500);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
headers['Cache-Control'] = exports.responseHttpOptions.headers['Cache-Control'];
|
|
136
|
+
res.writeHead(200, headers);
|
|
137
|
+
res.end(tile);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
};
|
|
141
|
+
exports.serveTileFromMbtiles = serveTileFromMbtiles;
|
|
142
|
+
// @signalk/mbtiles currently throws `Error('Tile does not exist')` for a
|
|
143
|
+
// missing tile; some forks expose an ENOENT-style code instead. Centralise
|
|
144
|
+
// the check so a future library change only requires an edit here.
|
|
145
|
+
const isMbtilesTileMissing = (err) => {
|
|
146
|
+
if (err.message === 'Tile does not exist')
|
|
147
|
+
return true;
|
|
148
|
+
const code = err.code;
|
|
149
|
+
return code === 'ENOENT';
|
|
150
|
+
};
|
|
151
|
+
exports.isMbtilesTileMissing = isMbtilesTileMissing;
|
|
152
|
+
const serveTileFromCacheOrRemote = async (res, cachePath, provider, z, x, y) => {
|
|
153
|
+
const buffer = await chartDownloader_1.ChartDownloader.getTileFromCacheOrRemote(cachePath, provider, { x, y, z });
|
|
154
|
+
if (!buffer) {
|
|
155
|
+
res.sendStatus(502);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
res.set('Content-Type', `image/${provider.format}`);
|
|
159
|
+
res.send(buffer);
|
|
160
|
+
};
|
|
161
|
+
exports.serveTileFromCacheOrRemote = serveTileFromCacheOrRemote;
|
|
162
|
+
//# sourceMappingURL=tileServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tileServer.js","sourceRoot":"","sources":["../src/tileServer.ts"],"names":[],"mappings":"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"}
|
package/plugin/types.d.ts
CHANGED
|
@@ -1,8 +1,28 @@
|
|
|
1
|
+
import type { OutgoingHttpHeaders } from 'http';
|
|
1
2
|
type MapSourceType = 'tilelayer' | 'S-57' | 'WMS' | 'WMTS' | 'mapstyleJSON' | 'tileJSON';
|
|
3
|
+
export interface MBTilesHandle {
|
|
4
|
+
getTile: (z: number, x: number, y: number, callback: (err: Error | null, tile: Buffer, headers: OutgoingHttpHeaders) => void) => void;
|
|
5
|
+
getInfo: (callback: (err: Error | null, metadata: MBTilesMetadata) => void) => void;
|
|
6
|
+
close: (callback: (err: Error | null) => void) => void;
|
|
7
|
+
on: (event: 'error', listener: (err: Error) => void) => MBTilesHandle;
|
|
8
|
+
}
|
|
9
|
+
export interface MBTilesMetadata {
|
|
10
|
+
name?: string;
|
|
11
|
+
id?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
bounds?: number[] | string;
|
|
14
|
+
minzoom?: number;
|
|
15
|
+
maxzoom?: number;
|
|
16
|
+
format?: string;
|
|
17
|
+
scale?: string;
|
|
18
|
+
vector_layers?: Array<{
|
|
19
|
+
id: string;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
2
22
|
export interface ChartProvider {
|
|
3
23
|
_fileFormat?: 'mbtiles' | 'directory';
|
|
4
24
|
_filePath: string;
|
|
5
|
-
_mbtilesHandle?:
|
|
25
|
+
_mbtilesHandle?: MBTilesHandle;
|
|
6
26
|
_flipY?: boolean;
|
|
7
27
|
identifier: string;
|
|
8
28
|
name: string;
|
package/plugin/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GACd,WAAW,GACX,MAAM,GACN,KAAK,GACL,MAAM,GACN,cAAc,GACd,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AAE/C,KAAK,aAAa,GACd,WAAW,GACX,MAAM,GACN,KAAK,GACL,MAAM,GACN,cAAc,GACd,UAAU,CAAA;AAKd,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CACP,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,QAAQ,EAAE,CACR,GAAG,EAAE,KAAK,GAAG,IAAI,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,KACzB,IAAI,KACN,IAAI,CAAA;IACT,OAAO,EAAE,CACP,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,eAAe,KAAK,IAAI,KAC7D,IAAI,CAAA;IACT,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,KAAK,IAAI,CAAA;IAGtD,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,KAAK,aAAa,CAAA;CACtE;AAKD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACtC;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,aAAa,CAAA;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,aAAa,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,EAAE,CAAC,EAAE;QACH,UAAU,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KACvB,CAAA;IACD,EAAE,CAAC,EAAE;QACH,GAAG,EAAE,MAAM,CAAA;QACX,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,aAAa,CAAA;IACzB,MAAM,EAAE,KAAK,GAAG,KAAK,CAAA;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,OAAO,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB"}
|