@signalk/charts-plugin 3.3.0 → 3.5.0

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/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 (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
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 = void 0;
30
- const bluebird = __importStar(require("bluebird"));
39
+ exports.findCharts = findCharts;
31
40
  const path_1 = __importDefault(require("path"));
32
- const mbtiles_1 = __importDefault(require("@mapbox/mbtiles"));
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 _ = __importStar(require("lodash"));
36
- function findCharts(chartBaseDir) {
37
- return fs_1.promises
38
- .readdir(chartBaseDir, { withFileTypes: true })
39
- .then((files) => {
40
- return bluebird.mapSeries(files, (file) => {
41
- const isMbtilesFile = file.name.match(/\.mbtiles$/i);
42
- const filePath = path_1.default.resolve(chartBaseDir, file.name);
43
- const isDirectory = file.isDirectory();
44
- if (isMbtilesFile) {
45
- return openMbtilesFile(filePath, file.name);
46
- }
47
- else if (isDirectory) {
48
- return directoryToMapInfo(filePath, file.name);
49
- }
50
- else {
51
- return Promise.resolve(null);
52
- }
53
- });
54
- })
55
- .then((result) => _.filter(result, _.identity))
56
- .then((charts) => _.reduce(charts,
57
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
- (result, chart) => {
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
- return result;
61
- }, {}))
62
- .catch((err) => {
63
- console.error(`Error reading charts directory ${chartBaseDir}:${err.message}`);
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 mbtiles_1.default(file, (err, mbtiles) => {
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 (_.isEmpty(res.metadata) || res.metadata.bounds === undefined) {
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
- (info._fileFormat = 'directory'),
153
- (info._filePath = file),
154
- (info.v1 = {
155
- tilemapUrl: `~tilePath~/${identifier}/{z}/{x}/{y}`,
156
- chartLayers: []
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 undefined;
255
+ return null;
169
256
  });
170
257
  }
171
258
  function parseTilemapResource(tilemapResource) {
172
- return (fs_1.promises
173
- .readFile(tilemapResource)
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 = _.get(result, 'Title.0');
179
- const format = _.get(result, 'TileFormat.0.$.extension');
180
- const scale = _.get(result, 'Metadata.0.$.scale');
181
- const bbox = _.get(result, 'BoundingBox.0.$');
182
- const zoomLevels = _.map(_.get(result, 'TileSets.0.TileSet') || [], (set) => parseInt(_.get(set, '$.href')));
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: !_.isEmpty(zoomLevels) ? _.min(zoomLevels) : undefined,
196
- maxzoom: !_.isEmpty(zoomLevels) ? _.max(zoomLevels) : undefined,
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 (_.isString(bounds)) {
215
- return _.map(bounds.split(','), (bound) => parseFloat(_.trim(bound)));
298
+ if (typeof bounds === 'string') {
299
+ return bounds.split(',').map((bound) => parseFloat(bound.trim()));
216
300
  }
217
- else if (_.isArray(bounds) && bounds.length === 4) {
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 _.isFinite(parsed) ? parsed : undefined;
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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"}
@@ -2,3 +2,4 @@ export declare const apiRoutePrefix: {
2
2
  1: string;
3
3
  2: string;
4
4
  };
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc;;;CAG1B,CAAA"}
@@ -5,3 +5,4 @@ exports.apiRoutePrefix = {
5
5
  1: '/signalk/v1/api/resources',
6
6
  2: '/signalk/v2/api/resources'
7
7
  };
8
+ //# sourceMappingURL=constants.js.map
@@ -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
- export {};
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"}