signalk-charts-provider-simple 2.3.3 → 2.4.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.
Files changed (46) hide show
  1. package/dist/charts-loader.d.ts.map +1 -1
  2. package/dist/charts-loader.js +23 -2
  3. package/dist/charts-loader.js.map +1 -1
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +90 -10
  6. package/dist/index.js.map +1 -1
  7. package/dist/types.d.ts.map +1 -1
  8. package/dist/utils/catalog-manager.d.ts.map +1 -1
  9. package/dist/utils/catalog-manager.js.map +1 -1
  10. package/dist/utils/container-fs.d.ts +24 -0
  11. package/dist/utils/container-fs.d.ts.map +1 -1
  12. package/dist/utils/container-fs.js +33 -0
  13. package/dist/utils/container-fs.js.map +1 -1
  14. package/dist/utils/conversion-log.d.ts +18 -0
  15. package/dist/utils/conversion-log.d.ts.map +1 -0
  16. package/dist/utils/conversion-log.js +21 -0
  17. package/dist/utils/conversion-log.js.map +1 -0
  18. package/dist/utils/conversion-progress.d.ts +3 -0
  19. package/dist/utils/conversion-progress.d.ts.map +1 -0
  20. package/dist/utils/conversion-progress.js +21 -0
  21. package/dist/utils/conversion-progress.js.map +1 -0
  22. package/dist/utils/custom-catalog-manager.d.ts +1 -0
  23. package/dist/utils/custom-catalog-manager.d.ts.map +1 -1
  24. package/dist/utils/custom-catalog-manager.js +2 -1
  25. package/dist/utils/custom-catalog-manager.js.map +1 -1
  26. package/dist/utils/file-scanner.d.ts.map +1 -1
  27. package/dist/utils/file-scanner.js.map +1 -1
  28. package/dist/utils/mbtiles-metadata.d.ts.map +1 -1
  29. package/dist/utils/mbtiles-metadata.js.map +1 -1
  30. package/dist/utils/mbtiles-reader.d.ts.map +1 -1
  31. package/dist/utils/mbtiles-reader.js.map +1 -1
  32. package/dist/utils/path-safety.d.ts +75 -0
  33. package/dist/utils/path-safety.d.ts.map +1 -1
  34. package/dist/utils/path-safety.js +76 -0
  35. package/dist/utils/path-safety.js.map +1 -1
  36. package/dist/utils/rnc-converter.d.ts +1 -0
  37. package/dist/utils/rnc-converter.d.ts.map +1 -1
  38. package/dist/utils/rnc-converter.js +41 -40
  39. package/dist/utils/rnc-converter.js.map +1 -1
  40. package/dist/utils/s57-converter.d.ts +30 -0
  41. package/dist/utils/s57-converter.d.ts.map +1 -1
  42. package/dist/utils/s57-converter.js +124 -46
  43. package/dist/utils/s57-converter.js.map +1 -1
  44. package/dist/utils/tile-overzoom.js +2 -2
  45. package/dist/utils/tile-overzoom.js.map +1 -1
  46. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"charts-loader.d.ts","sourceRoot":"","sources":["../src/charts-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAIhB,MAAM,YAAY,CAAC;AAWpB,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAc7F;AAqOD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAU3F"}
1
+ {"version":3,"file":"charts-loader.d.ts","sourceRoot":"","sources":["../src/charts-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,aAAa,EACb,eAAe,EAIhB,MAAM,YAAY,CAAC;AAsCpB,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAc7F;AAqOD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAU3F"}
@@ -3,10 +3,31 @@ import { promises as fs } from 'fs';
3
3
  import { parseStringPromise } from 'xml2js';
4
4
  import { open as openMbtiles } from './utils/mbtiles-reader.js';
5
5
  const KNOWN_CHART_TYPES = new Set(['tilelayer', 's-57', 'mapstylejson', 'tilejson', 'wms', 'wmts']);
6
- function resolveChartType(metadataType) {
6
+ // S-57 object-class layer names that only ever appear in ENC-derived vector
7
+ // tiles. Freeboard only applies its land/depth S-57 style when the served
8
+ // chart type is `S-57`; a chart whose `type=S-57` metadata row failed to get
9
+ // written (e.g. the post-conversion patch couldn't open the file read-write
10
+ // under Docker/rootful-podman — issue #157) still carries these layers, so we
11
+ // can recognize it as S-57 from the tile schema and style it correctly instead
12
+ // of serving it as a generic, unstyled vector tilelayer (freeboard-sk #436).
13
+ const S57_LAYER_MARKERS = ['LNDARE', 'DEPARE', 'DEPCNT', 'COALNE', 'SOUNDG'];
14
+ function looksLikeS57(format, layerIds) {
15
+ if ((format ?? '').toLowerCase() !== 'pbf') {
16
+ return false;
17
+ }
18
+ return layerIds.some((id) => S57_LAYER_MARKERS.includes(id));
19
+ }
20
+ function resolveChartType(metadataType, format, layerIds = []) {
7
21
  if (metadataType && KNOWN_CHART_TYPES.has(metadataType.toLowerCase())) {
8
22
  return metadataType;
9
23
  }
24
+ // The metadata `type` is missing or unrecognized (tippecanoe's default
25
+ // `overlay`, or an un-patched file). Recover the S-57 type from the tile
26
+ // schema so the chart still gets its proper style; otherwise fall back to a
27
+ // plain tilelayer.
28
+ if (looksLikeS57(format, layerIds)) {
29
+ return 'S-57';
30
+ }
10
31
  return 'tilelayer';
11
32
  }
12
33
  export async function findCharts(chartBaseDir) {
@@ -81,7 +102,7 @@ async function openMbtilesFile(file, filename) {
81
102
  minzoom: metadata.minzoom,
82
103
  maxzoom: metadata.maxzoom,
83
104
  format: metadata.format ?? 'png',
84
- type: resolveChartType(metadata.type),
105
+ type: resolveChartType(metadata.type, metadata.format, vectorLayers),
85
106
  scale: parseInt(metadata.scale ?? '', 10) || 250000,
86
107
  ...(tileSize !== undefined ? { tileSize } : {}),
87
108
  v1: {
@@ -1 +1 @@
1
- {"version":3,"file":"charts-loader.js","sourceRoot":"","sources":["../src/charts-loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"charts-loader.js","sourceRoot":"","sources":["../src/charts-loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA2GxD,OAAO,KAAK,EACV,aAAa,EAEb,iBAAiB,EAIjB,QAAQ,EAET,MAAM,YAAY,CAAC;AAepB,QAAA,MAAM,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,MAi2GnD,CAAC;AAyFF,eAAO,MAAM,oBAAoB,GAC/B,KAAK,QAAQ,EACb,UAAU,aAAa,EACvB,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,IAiDF,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAqHxD,OAAO,KAAK,EACV,aAAa,EAEb,iBAAiB,EAIjB,QAAQ,EAET,MAAM,YAAY,CAAC;AAepB,QAAA,MAAM,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,MAs6GnD,CAAC;AA4GF,eAAO,MAAM,oBAAoB,GAC/B,KAAK,QAAQ,EACb,UAAU,aAAa,EACvB,GAAG,MAAM,EACT,GAAG,MAAM,EACT,GAAG,MAAM,KACR,IAiDF,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -12,20 +12,21 @@ import { initChartState, isChartEnabled, setChartEnabled } from './utils/chart-s
12
12
  import { getCpuBudget, setCpuBudget } from './utils/concurrency.js';
13
13
  import { PLUGIN_OWNER_ID } from './utils/container-jobs.js';
14
14
  import { getContainerManager, waitForContainerManager } from './utils/container-manager.js';
15
+ import { MAX_CONVERSION_LOG_LINES, resolveLogTail } from './utils/conversion-log.js';
15
16
  import { downloadManager } from './utils/download-manager.js';
16
17
  import { scanAllFolders, scanChartsRecursively } from './utils/file-scanner.js';
17
18
  import { repairMbtilesMetadata, setMbtilesDisplayName } from './utils/mbtiles-metadata.js';
18
19
  import { open as openMbtilesReader } from './utils/mbtiles-reader.js';
19
20
  import { writeChartPathMarker } from './utils/path-marker.js';
20
21
  import { getBlankTileReplacement, getOverzoomedTile } from './utils/tile-overzoom.js';
21
- import { arePairWithinBase, isWithinBase, validateChartName } from './utils/path-safety.js';
22
+ import { arePairWithinBase, classifyChartDirAccess, hasHostChartsMountEnv, isHostMountPath, isWithinBase, resolveDefaultChartsPath, validateChartName } from './utils/path-safety.js';
22
23
  import { parsePluginConfig } from './utils/plugin-config-schema.js';
23
24
  import { cleanupQuarantineDir, makeQuarantineDir, promoteQuarantine, sweepStaleQuarantineDirs } from './utils/quarantine.js';
24
25
  import { parseBody, parseShape } from './utils/rest-validation.js';
25
26
  import { getAllConversionProgress as getAllRncProgress, getConversionProgress as getRncProgress, initRncConverter, processPilotTar, processRncZip, setConversionFailed as setRncFailed } from './utils/rnc-converter.js';
26
27
  import { getAllConversionProgress as getAllS57Progress, getConversionProgress as getS57Progress, initS57Converter, processGshhg, processS57Directory, processS57Zip, processShpBasemap, setConversionFailed as setS57Failed } from './utils/s57-converter.js';
27
28
  import { band4MapEntries, computeInclusion, coverageByBox, getFootprintIndex, initNoaaEncFootprints, peekFootprintIndex } from './utils/noaa-enc-footprints.js';
28
- import { appendCatalogLog, boxStatesForCatalog, clearCatalogCancel, clearCatalogProgress, createCustomCatalog, deleteCustomCatalog, evaluateFreshness, getCatalogDetail, getCatalogProgress, getCustomCatalog, initCustomCatalogManager, isCatalogBusy, isCatalogCancelRequested, isValidCatalogId, listCustomCatalogs, registerCatalogAbort, requestCatalogCancel, saveCustomCatalog, setCatalogBusy, setCatalogDetail, setCatalogFailed, setCatalogProgress } from './utils/custom-catalog-manager.js';
29
+ import { appendCatalogLog, boxStatesForCatalog, clearCatalogCancel, clearCatalogProgress, createCustomCatalog, deleteCustomCatalog, evaluateFreshness, getCatalogDetail, getCatalogProgress, getCustomCatalog, initCustomCatalogManager, isCatalogBusy, isCatalogCancelRequested, isValidCatalogId, listCustomCatalogs, MAX_CATALOG_MANAGER_LOG_LINES, registerCatalogAbort, requestCatalogCancel, saveCustomCatalog, setCatalogBusy, setCatalogDetail, setCatalogFailed, setCatalogProgress } from './utils/custom-catalog-manager.js';
29
30
  import { downloadAndExtractEncs } from './utils/custom-catalog-download.js';
30
31
  // JSON import with type attribute (NodeNext ESM). package.json's `version`
31
32
  // is what the marker file records so users can confirm the running build.
@@ -51,12 +52,21 @@ const pluginConstructor = (app) => {
51
52
  let pluginDataDir = '';
52
53
  let defaultChartsPath = '';
53
54
  let serverMajorVersion = 1;
55
+ // The effective default chart directory. When Signal K runs in a container
56
+ // (signalk-universal-installer), the installer can mount a host folder the
57
+ // user shares with other chart apps (OpenCPN/qtVlm/...) and inject its
58
+ // in-container path via SIGNALK_CHARTS_HOST_PATH. When that env is present we
59
+ // default to it instead of the in-data-volume `charts-simple` dir, so a
60
+ // container user gets the shared host folder out of the box with no config —
61
+ // and so the chartPath field is never the free-text foot-gun that pointed at
62
+ // an unmounted host path. A user can still override via the chartPath setting.
54
63
  function getDefaultChartsPath() {
55
64
  if (!defaultChartsPath) {
56
65
  pluginDataDir = app.getDataDirPath();
57
- const configBasePath = path.dirname(path.dirname(pluginDataDir));
58
- defaultChartsPath = path.join(configBasePath, 'charts-simple');
59
66
  serverMajorVersion = app.config?.version ? parseInt(app.config.version.split('.')[0], 10) : 1;
67
+ const configBasePath = path.dirname(path.dirname(pluginDataDir));
68
+ const inDataVolumeDefault = path.join(configBasePath, 'charts-simple');
69
+ defaultChartsPath = resolveDefaultChartsPath(process.env.SIGNALK_CHARTS_HOST_PATH, inDataVolumeDefault);
60
70
  }
61
71
  return defaultChartsPath;
62
72
  }
@@ -70,7 +80,11 @@ const pluginConstructor = (app) => {
70
80
  chartPath: {
71
81
  type: 'string',
72
82
  title: 'Chart path',
73
- description: `Main directory for chart files. Defaults to "${getDefaultChartsPath()}". Subfolders will be scanned recursively.`,
83
+ description: (hasHostChartsMountEnv(process.env.SIGNALK_CHARTS_HOST_PATH)
84
+ ? `Main directory for chart files. Defaults to the shared host charts folder mounted by the installer. ` +
85
+ `Leave this blank to use it; only change it if you know the path is reachable inside the container. `
86
+ : `Main directory for chart files. Defaults to "${getDefaultChartsPath()}". `) +
87
+ `Subfolders will be scanned recursively.`,
74
88
  default: getDefaultChartsPath()
75
89
  },
76
90
  cpuBudget: {
@@ -179,10 +193,53 @@ const pluginConstructor = (app) => {
179
193
  props = { ...config };
180
194
  setCpuBudget(props.cpuBudget);
181
195
  getDefaultChartsPath(); // ensure lazy init
182
- ensureDirectoryExists(defaultChartsPath);
183
196
  const chartPath = props.chartPath || defaultChartsPath;
184
- if (!ensureDirectoryExists(chartPath)) {
185
- app.setPluginError(`Chart directory is not writable: ${chartPath}`);
197
+ // Is the effective path the host folder the installer bind-mounted (via
198
+ // SIGNALK_CHARTS_HOST_PATH)? If so we must NOT create it on demand: that
199
+ // folder is supposed to already exist (the installer made it and mounted
200
+ // it), so a missing dir means a missing mount — and `mkdir`-ing it would
201
+ // silently shadow the absent mount with an ephemeral in-container dir whose
202
+ // charts vanish on container recreate. isHostMountPath normalizes both
203
+ // sides so a trailing slash / `.`/`..` can't divert the mount into the
204
+ // mkdir branch.
205
+ const isHostMount = isHostMountPath(chartPath, process.env.SIGNALK_CHARTS_HOST_PATH);
206
+ let exists;
207
+ let createdOrWritable;
208
+ if (isHostMount) {
209
+ // Probe, never create.
210
+ exists = fs.existsSync(chartPath);
211
+ createdOrWritable = exists && isDirWritable(chartPath);
212
+ }
213
+ else {
214
+ // In-data-volume default or a user-typed path: create-on-demand, then
215
+ // verify it is an actually-writable directory. ensureDirectoryExists
216
+ // returns true for any path that already exists, so without the
217
+ // isDirWritable probe an existing read-only dir (or a regular file at
218
+ // that path) would slip through as usable and only fail on first write.
219
+ createdOrWritable = ensureDirectoryExists(chartPath) && isDirWritable(chartPath);
220
+ exists = fs.existsSync(chartPath);
221
+ }
222
+ const access = classifyChartDirAccess(isHostMount, exists, createdOrWritable);
223
+ if (!access.ok) {
224
+ if (access.reason === 'mount-missing') {
225
+ // NB: clearing the Chart path setting does NOT help here — with
226
+ // SIGNALK_CHARTS_HOST_PATH still set, the default resolves right back to
227
+ // this same (missing) mount. The real fixes are restoring the mount or
228
+ // removing the installer env / pointing at a reachable in-container dir.
229
+ app.setPluginError(`Shared charts folder is not mounted into the container at ${chartPath}. ` +
230
+ `Charts live in a host folder the installer shares with the container; that ` +
231
+ `mount appears to be missing. Re-run the installer to restore it, remove the ` +
232
+ `installer-provided SIGNALK_CHARTS_HOST_PATH setting, or set Chart path to a ` +
233
+ `directory that is reachable inside the container.`);
234
+ }
235
+ else if (access.reason === 'exists-unwritable') {
236
+ app.setPluginError(`Chart directory exists but is not writable by Signal K: ${chartPath}. ` +
237
+ `In a container this is usually a folder-ownership mismatch — make sure the ` +
238
+ `host folder is owned by the user that runs Signal K.`);
239
+ }
240
+ else {
241
+ app.setPluginError(`Chart directory is not writable: ${chartPath}`);
242
+ }
186
243
  app.setPluginStatus('Started (no chart directory)');
187
244
  return;
188
245
  }
@@ -1546,7 +1603,7 @@ const pluginConstructor = (app) => {
1546
1603
  res.json({ log: [], status: null });
1547
1604
  return;
1548
1605
  }
1549
- const tail = parseInt(req.query.tail) || 100;
1606
+ const tail = resolveLogTail(req.query.tail, MAX_CONVERSION_LOG_LINES);
1550
1607
  const log = progress.log || [];
1551
1608
  res.json({
1552
1609
  log: log.slice(-tail),
@@ -2098,7 +2155,11 @@ const pluginConstructor = (app) => {
2098
2155
  res.status(400).json({ log: [], status: null });
2099
2156
  return;
2100
2157
  }
2101
- const tail = parseInt(req.query.tail) || 200;
2158
+ // Default returns the whole log: the concatenated manager + s57 log can
2159
+ // be at most the sum of the two per-source caps, so this fallback never
2160
+ // truncates by default (at the cost of a larger payload on each poll —
2161
+ // callers that want less should pass an explicit ?tail=).
2162
+ const tail = resolveLogTail(req.query.tail, MAX_CATALOG_MANAGER_LOG_LINES + MAX_CONVERSION_LOG_LINES);
2102
2163
  const managerProgress = getCatalogProgress(id);
2103
2164
  const s57 = getS57Progress(id);
2104
2165
  // Manager progress carries the download phase; the S-57 converter carries
@@ -2895,6 +2956,25 @@ const ensureDirectoryExists = (dirPath) => {
2895
2956
  return false;
2896
2957
  }
2897
2958
  };
2959
+ // Probe whether an EXISTING directory is usable as a chart root, without
2960
+ // creating it. Used for the injected host charts mount: we must NOT mkdir a
2961
+ // missing mount (that silently shadows it with an ephemeral in-container dir),
2962
+ // so we check existence + usability separately instead of create-on-demand.
2963
+ // Requires an actual directory (W_OK alone would accept a writable regular
2964
+ // file) with both write AND execute/search permission (X_OK — needed to
2965
+ // traverse into it to read/write chart files).
2966
+ const isDirWritable = (dirPath) => {
2967
+ try {
2968
+ if (!fs.statSync(dirPath).isDirectory()) {
2969
+ return false;
2970
+ }
2971
+ fs.accessSync(dirPath, fs.constants.W_OK | fs.constants.X_OK);
2972
+ return true;
2973
+ }
2974
+ catch {
2975
+ return false;
2976
+ }
2977
+ };
2898
2978
  const cleanupEmptyParents = (deletedPath, stopAt) => {
2899
2979
  try {
2900
2980
  let parent = path.dirname(deletedPath);