@signalk/charts-plugin 3.3.0 → 3.5.0-beta
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/.mocharc.cjs +5 -0
- package/.prettierignore +7 -0
- package/README.md +45 -16
- package/package.json +27 -24
- package/plugin/chartDownloader.d.ts +4 -7
- package/plugin/chartDownloader.d.ts.map +1 -0
- package/plugin/chartDownloader.js +88 -51
- package/plugin/chartDownloader.js.map +1 -0
- package/plugin/charts.d.ts +5 -1
- package/plugin/charts.d.ts.map +1 -0
- package/plugin/charts.js +152 -67
- package/plugin/charts.js.map +1 -0
- package/plugin/constants.d.ts +1 -0
- package/plugin/constants.d.ts.map +1 -0
- package/plugin/constants.js +1 -0
- package/plugin/constants.js.map +1 -0
- package/plugin/index.d.ts +13 -1
- package/plugin/index.d.ts.map +1 -0
- package/plugin/index.js +375 -102
- package/plugin/index.js.map +1 -0
- package/plugin/projection.d.ts +7 -0
- package/plugin/projection.d.ts.map +1 -0
- package/plugin/projection.js +42 -0
- package/plugin/projection.js.map +1 -0
- package/plugin/types.d.ts +1 -0
- package/plugin/types.d.ts.map +1 -0
- package/plugin/types.js +1 -0
- package/plugin/types.js.map +1 -0
- package/public/index.html +106 -83
- package/public/index.js +274 -267
- package/public/style.css +65 -63
- package/stryker.conf.json +26 -0
- package/tsconfig.build.json +17 -0
package/plugin/charts.js
CHANGED
|
@@ -15,59 +15,144 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
37
|
};
|
|
28
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.findCharts =
|
|
30
|
-
const bluebird = __importStar(require("bluebird"));
|
|
39
|
+
exports.findCharts = findCharts;
|
|
31
40
|
const path_1 = __importDefault(require("path"));
|
|
32
|
-
const
|
|
33
|
-
const xml2js = __importStar(require("xml2js"));
|
|
41
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
34
42
|
const fs_1 = require("fs");
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
//
|
|
58
|
-
|
|
43
|
+
const p_limit_1 = __importDefault(require("p-limit"));
|
|
44
|
+
// Parses tilemapresource.xml into a plain object. ignoreAttributes=false and
|
|
45
|
+
// attributeNamePrefix='' drop the default '@_' prefix so XML attributes show
|
|
46
|
+
// up as normal keys. isArray forces TileSet to always be an array even when
|
|
47
|
+
// the XML contains only one, so the zoom-level extraction below doesn't have
|
|
48
|
+
// to special-case the single-element shape.
|
|
49
|
+
// Input (simplified): <TileMap><Title>Foo</Title>
|
|
50
|
+
// <TileFormat extension="png"/>
|
|
51
|
+
// <BoundingBox minx="0" miny="0" maxx="1" maxy="1"/>
|
|
52
|
+
// <TileSets><TileSet href="4"/><TileSet href="5"/></TileSets>
|
|
53
|
+
// </TileMap>
|
|
54
|
+
// Parsed: { TileMap: {
|
|
55
|
+
// Title: 'Foo',
|
|
56
|
+
// TileFormat: { extension: 'png' },
|
|
57
|
+
// BoundingBox: { minx: '0', miny: '0', maxx: '1', maxy: '1' },
|
|
58
|
+
// TileSets: { TileSet: [ { href: '4' }, { href: '5' } ] }
|
|
59
|
+
// } }
|
|
60
|
+
const xmlParser = new fast_xml_parser_1.XMLParser({
|
|
61
|
+
ignoreAttributes: false,
|
|
62
|
+
attributeNamePrefix: '',
|
|
63
|
+
isArray: (name) => name === 'TileSet',
|
|
64
|
+
// Keep tag text as strings (e.g. "1234" stays "1234", not 1234) so
|
|
65
|
+
// ChartProvider fields like name/format/scale have stable types regardless
|
|
66
|
+
// of content.
|
|
67
|
+
parseTagValue: false,
|
|
68
|
+
parseAttributeValue: false
|
|
69
|
+
});
|
|
70
|
+
// Dynamically load MBTiles to prevent module load failure
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
let MBTiles = null;
|
|
73
|
+
let mbtilesLoadError = null;
|
|
74
|
+
async function loadMBTiles() {
|
|
75
|
+
if (MBTiles === null && mbtilesLoadError === null) {
|
|
76
|
+
try {
|
|
77
|
+
const module = await Promise.resolve().then(() => __importStar(require('@signalk/mbtiles')));
|
|
78
|
+
MBTiles = module.default || module;
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
mbtilesLoadError = err;
|
|
82
|
+
console.error('Failed to load @signalk/mbtiles module:', err.message);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Recursively scans chartBaseDir and any non-chart subdirectories. A directory
|
|
87
|
+
// is treated as a chart if it has tilemapresource.xml or metadata.json; anything
|
|
88
|
+
// else is descended into so layouts like charts/<region>/<chart> work without
|
|
89
|
+
// having to list every subdir in the plugin config. Symlinks are skipped and
|
|
90
|
+
// the depth is bounded so a misplaced config entry can't send the scan into
|
|
91
|
+
// node_modules or a symlink loop. File parsing (openMbtilesFile /
|
|
92
|
+
// directoryToMapInfo) runs concurrently under a global limiter — 500 MBTiles
|
|
93
|
+
// opened serially on a Pi SD card was a 5-30s startup stall.
|
|
94
|
+
const MAX_SCAN_DEPTH = 8;
|
|
95
|
+
const PARSE_CONCURRENCY = 12;
|
|
96
|
+
async function findCharts(chartBaseDir) {
|
|
97
|
+
await loadMBTiles();
|
|
98
|
+
const charts = [];
|
|
99
|
+
const limit = (0, p_limit_1.default)(PARSE_CONCURRENCY);
|
|
100
|
+
await scanDir(chartBaseDir, charts, 0, limit);
|
|
101
|
+
const result = {};
|
|
102
|
+
for (const chart of charts) {
|
|
59
103
|
result[chart.identifier] = chart;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
async function scanDir(dir, out, depth, limit) {
|
|
108
|
+
if (depth > MAX_SCAN_DEPTH)
|
|
109
|
+
return;
|
|
110
|
+
let entries;
|
|
111
|
+
try {
|
|
112
|
+
entries = await fs_1.promises.readdir(dir, { withFileTypes: true });
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
console.error(`Error reading charts directory ${dir}:${err.message}`);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
// Directory recursion runs outside the limiter to avoid deadlock: a parent
|
|
119
|
+
// holding a slot while waiting for children to take their own slots would
|
|
120
|
+
// starve when the limit is reached. Only the leaf file-parsing work
|
|
121
|
+
// (openMbtilesFile / directoryToMapInfo) is rate-limited.
|
|
122
|
+
const tasks = [];
|
|
123
|
+
for (const entry of entries) {
|
|
124
|
+
if (entry.isSymbolicLink())
|
|
125
|
+
continue;
|
|
126
|
+
const entryPath = path_1.default.resolve(dir, entry.name);
|
|
127
|
+
if (entry.name.match(/\.mbtiles$/i)) {
|
|
128
|
+
if (mbtilesLoadError) {
|
|
129
|
+
console.warn(`Skipping mbtiles file ${entry.name}: MBTiles module not available`);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
tasks.push((async () => {
|
|
133
|
+
const chart = await limit(() => openMbtilesFile(entryPath, entry.name));
|
|
134
|
+
if (chart)
|
|
135
|
+
out.push(chart);
|
|
136
|
+
})());
|
|
137
|
+
}
|
|
138
|
+
else if (entry.isDirectory()) {
|
|
139
|
+
tasks.push((async () => {
|
|
140
|
+
const chart = await limit(() => directoryToMapInfo(entryPath, entry.name));
|
|
141
|
+
if (chart) {
|
|
142
|
+
out.push(chart);
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
await scanDir(entryPath, out, depth + 1, limit);
|
|
146
|
+
}
|
|
147
|
+
})());
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
await Promise.all(tasks);
|
|
65
151
|
}
|
|
66
|
-
exports.findCharts = findCharts;
|
|
67
152
|
function openMbtilesFile(file, filename) {
|
|
68
153
|
return (new Promise((resolve, reject) => {
|
|
69
154
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
-
new
|
|
155
|
+
new MBTiles(file, (err, mbtiles) => {
|
|
71
156
|
if (err) {
|
|
72
157
|
return reject(err);
|
|
73
158
|
}
|
|
@@ -82,7 +167,9 @@ function openMbtilesFile(file, filename) {
|
|
|
82
167
|
})
|
|
83
168
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
84
169
|
.then((res) => {
|
|
85
|
-
if (
|
|
170
|
+
if (!res.metadata ||
|
|
171
|
+
Object.keys(res.metadata).length === 0 ||
|
|
172
|
+
res.metadata.bounds === undefined) {
|
|
86
173
|
return null;
|
|
87
174
|
}
|
|
88
175
|
const identifier = filename.replace(/\.mbtiles$/i, '');
|
|
@@ -149,12 +236,12 @@ function directoryToMapInfo(file, identifier) {
|
|
|
149
236
|
return null;
|
|
150
237
|
}
|
|
151
238
|
info.identifier = identifier;
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
239
|
+
info._fileFormat = 'directory';
|
|
240
|
+
info._filePath = file;
|
|
241
|
+
info.v1 = {
|
|
242
|
+
tilemapUrl: `~tilePath~/${identifier}/{z}/{x}/{y}`,
|
|
243
|
+
chartLayers: []
|
|
244
|
+
};
|
|
158
245
|
info.v2 = {
|
|
159
246
|
url: `~tilePath~/${identifier}/{z}/{x}/{y}`,
|
|
160
247
|
layers: []
|
|
@@ -165,21 +252,18 @@ function directoryToMapInfo(file, identifier) {
|
|
|
165
252
|
})
|
|
166
253
|
.catch((e) => {
|
|
167
254
|
console.error(`Error getting charts from ${file}`, e.message);
|
|
168
|
-
return
|
|
255
|
+
return null;
|
|
169
256
|
});
|
|
170
257
|
}
|
|
171
258
|
function parseTilemapResource(tilemapResource) {
|
|
172
|
-
return
|
|
173
|
-
.
|
|
174
|
-
.then(bluebird.promisify(xml2js.parseString))
|
|
175
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
176
|
-
.then((parsed) => {
|
|
259
|
+
return fs_1.promises.readFile(tilemapResource, 'utf8').then((data) => {
|
|
260
|
+
const parsed = xmlParser.parse(data);
|
|
177
261
|
const result = parsed.TileMap;
|
|
178
|
-
const name =
|
|
179
|
-
const format =
|
|
180
|
-
const scale =
|
|
181
|
-
const bbox =
|
|
182
|
-
const zoomLevels =
|
|
262
|
+
const name = result?.Title;
|
|
263
|
+
const format = result?.TileFormat?.extension;
|
|
264
|
+
const scale = result?.Metadata?.scale;
|
|
265
|
+
const bbox = result?.BoundingBox;
|
|
266
|
+
const zoomLevels = (result?.TileSets?.TileSet || []).map((set) => parseInt(set?.href ?? ''));
|
|
183
267
|
const res = {
|
|
184
268
|
_flipY: true,
|
|
185
269
|
name,
|
|
@@ -192,8 +276,8 @@ function parseTilemapResource(tilemapResource) {
|
|
|
192
276
|
parseFloat(bbox.maxy)
|
|
193
277
|
]
|
|
194
278
|
: undefined,
|
|
195
|
-
minzoom:
|
|
196
|
-
maxzoom:
|
|
279
|
+
minzoom: zoomLevels.length ? Math.min(...zoomLevels) : undefined,
|
|
280
|
+
maxzoom: zoomLevels.length ? Math.max(...zoomLevels) : undefined,
|
|
197
281
|
format,
|
|
198
282
|
type: 'tilelayer',
|
|
199
283
|
scale: parseInt(scale) || 250000,
|
|
@@ -201,7 +285,7 @@ function parseTilemapResource(tilemapResource) {
|
|
|
201
285
|
_filePath: ''
|
|
202
286
|
};
|
|
203
287
|
return res;
|
|
204
|
-
})
|
|
288
|
+
});
|
|
205
289
|
}
|
|
206
290
|
function parseMetadataJson(metadataJson) {
|
|
207
291
|
return fs_1.promises
|
|
@@ -211,10 +295,10 @@ function parseMetadataJson(metadataJson) {
|
|
|
211
295
|
})
|
|
212
296
|
.then((metadata) => {
|
|
213
297
|
function parseBounds(bounds) {
|
|
214
|
-
if (
|
|
215
|
-
return
|
|
298
|
+
if (typeof bounds === 'string') {
|
|
299
|
+
return bounds.split(',').map((bound) => parseFloat(bound.trim()));
|
|
216
300
|
}
|
|
217
|
-
else if (
|
|
301
|
+
else if (Array.isArray(bounds) && bounds.length === 4) {
|
|
218
302
|
return bounds;
|
|
219
303
|
}
|
|
220
304
|
else {
|
|
@@ -239,5 +323,6 @@ function parseMetadataJson(metadataJson) {
|
|
|
239
323
|
}
|
|
240
324
|
function parseIntIfNotUndefined(val) {
|
|
241
325
|
const parsed = parseInt(val);
|
|
242
|
-
return
|
|
326
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
243
327
|
}
|
|
328
|
+
//# sourceMappingURL=charts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"charts.js","sourceRoot":"","sources":["../src/charts.ts"],"names":[],"mappings":"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"}
|
package/plugin/constants.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;CAG1B,CAAA"}
|
package/plugin/constants.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG;IAC5B,CAAC,EAAE,2BAA2B;IAC9B,CAAC,EAAE,2BAA2B;CAC/B,CAAA"}
|
package/plugin/index.d.ts
CHANGED
|
@@ -1 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
import { Application } from 'express';
|
|
2
|
+
import { Plugin, ServerAPI, ResourceProviderRegistry } from '@signalk/server-api';
|
|
3
|
+
interface ChartProviderApp extends ServerAPI, ResourceProviderRegistry, Application {
|
|
4
|
+
config: {
|
|
5
|
+
ssl: boolean;
|
|
6
|
+
configPath: string;
|
|
7
|
+
version: string;
|
|
8
|
+
getExternalPort: () => number;
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
declare const createPlugin: (app: ChartProviderApp) => Plugin;
|
|
12
|
+
export = createPlugin;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAqB,WAAW,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,EACL,MAAM,EACN,SAAS,EACT,wBAAwB,EACzB,MAAM,qBAAqB,CAAA;AAQ5B,UAAU,gBACR,SAAQ,SAAS,EAAE,wBAAwB,EAAE,WAAW;IACxD,MAAM,EAAE;QACN,GAAG,EAAE,OAAO,CAAA;QACZ,UAAU,EAAE,MAAM,CAAA;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,MAAM,CAAA;KAC9B,CAAA;CACF;AAaD,QAAA,MAAM,YAAY,GAAI,KAAK,gBAAgB,KAAG,MAsoB7C,CAAA;AAED,SAAS,YAAY,CAAA"}
|