signalk-charts-provider-simple 2.3.4 → 2.4.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/dist/charts-loader.d.ts.map +1 -1
- package/dist/charts-loader.js +23 -2
- package/dist/charts-loader.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +93 -24
- package/dist/index.js.map +1 -1
- package/dist/utils/container-fs.d.ts +24 -0
- package/dist/utils/container-fs.d.ts.map +1 -1
- package/dist/utils/container-fs.js +33 -0
- package/dist/utils/container-fs.js.map +1 -1
- package/dist/utils/conversion-log.d.ts +18 -0
- package/dist/utils/conversion-log.d.ts.map +1 -0
- package/dist/utils/conversion-log.js +21 -0
- package/dist/utils/conversion-log.js.map +1 -0
- package/dist/utils/conversion-progress.d.ts +3 -0
- package/dist/utils/conversion-progress.d.ts.map +1 -0
- package/dist/utils/conversion-progress.js +21 -0
- package/dist/utils/conversion-progress.js.map +1 -0
- package/dist/utils/custom-catalog-manager.d.ts +1 -0
- package/dist/utils/custom-catalog-manager.d.ts.map +1 -1
- package/dist/utils/custom-catalog-manager.js +2 -1
- package/dist/utils/custom-catalog-manager.js.map +1 -1
- package/dist/utils/download-manager.d.ts.map +1 -1
- package/dist/utils/download-manager.js +32 -1
- package/dist/utils/download-manager.js.map +1 -1
- package/dist/utils/quarantine.d.ts +20 -5
- package/dist/utils/quarantine.d.ts.map +1 -1
- package/dist/utils/quarantine.js +53 -6
- package/dist/utils/quarantine.js.map +1 -1
- package/dist/utils/rnc-converter.d.ts +1 -0
- package/dist/utils/rnc-converter.d.ts.map +1 -1
- package/dist/utils/rnc-converter.js +41 -40
- package/dist/utils/rnc-converter.js.map +1 -1
- package/dist/utils/s57-converter.d.ts +3 -0
- package/dist/utils/s57-converter.d.ts.map +1 -1
- package/dist/utils/s57-converter.js +36 -38
- package/dist/utils/s57-converter.js.map +1 -1
- package/dist/utils/tile-overzoom.js +2 -2
- package/dist/utils/tile-overzoom.js.map +1 -1
- package/package.json +5 -5
|
@@ -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;
|
|
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"}
|
package/dist/charts-loader.js
CHANGED
|
@@ -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
|
-
|
|
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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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAsHxD,OAAO,KAAK,EACV,aAAa,EAEb,iBAAiB,EAIjB,QAAQ,EAET,MAAM,YAAY,CAAC;AAwBpB,QAAA,MAAM,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,MA49GnD,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,6 +12,7 @@ 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';
|
|
@@ -20,17 +21,25 @@ import { writeChartPathMarker } from './utils/path-marker.js';
|
|
|
20
21
|
import { getBlankTileReplacement, getOverzoomedTile } from './utils/tile-overzoom.js';
|
|
21
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
|
-
import { cleanupQuarantineDir, makeQuarantineDir, promoteQuarantine, sweepStaleQuarantineDirs } from './utils/quarantine.js';
|
|
24
|
+
import { cleanupQuarantineDir, makeQuarantineDir, makeUniqueQuarantineDir, 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.
|
|
32
33
|
import packageJson from '../package.json' with { type: 'json' };
|
|
33
34
|
const pluginVersion = packageJson.version;
|
|
35
|
+
// The startup-global 'job-completed' handler is re-registered on every
|
|
36
|
+
// start() because its closure captures the current chartPath. Track the
|
|
37
|
+
// previous instance (module scope, like downloadManager itself) so
|
|
38
|
+
// re-registration removes exactly that handler — a blanket
|
|
39
|
+
// removeAllListeners('job-completed') would also strip the per-job
|
|
40
|
+
// promotion/cleanup listeners of downloads still running from a prior
|
|
41
|
+
// plugin lifecycle, stranding their files in the quarantine.
|
|
42
|
+
let globalJobCompletedListener = null;
|
|
34
43
|
// Single source of truth lives in container-jobs.ts as PLUGIN_OWNER_ID
|
|
35
44
|
// (used as the `ownerPluginId` label on every runJob call). The plugin
|
|
36
45
|
// id Signal K uses must match exactly so `cleanupOrphanedJobs` reaps
|
|
@@ -402,8 +411,10 @@ const pluginConstructor = (app) => {
|
|
|
402
411
|
}
|
|
403
412
|
}
|
|
404
413
|
startCatalogUpdateChecker();
|
|
405
|
-
|
|
406
|
-
|
|
414
|
+
if (globalJobCompletedListener) {
|
|
415
|
+
downloadManager.removeListener('job-completed', globalJobCompletedListener);
|
|
416
|
+
}
|
|
417
|
+
globalJobCompletedListener = (job) => {
|
|
407
418
|
app.debug(`Download job completed: ${job.id}, extracted files: ${job.extractedFiles.join(', ')}`);
|
|
408
419
|
for (const fileName of job.extractedFiles) {
|
|
409
420
|
const relativePath = path.relative(chartPath, path.join(job.targetDir, fileName));
|
|
@@ -420,7 +431,8 @@ const pluginConstructor = (app) => {
|
|
|
420
431
|
}
|
|
421
432
|
}
|
|
422
433
|
});
|
|
423
|
-
}
|
|
434
|
+
};
|
|
435
|
+
downloadManager.on('job-completed', globalJobCompletedListener);
|
|
424
436
|
// Filesystem housekeeping (removing invalid .mbtiles and orphaned
|
|
425
437
|
// journal/WAL files) runs independently of the display path so it can
|
|
426
438
|
// never delay chart listing. It rescans the chart directory itself
|
|
@@ -615,6 +627,13 @@ const pluginConstructor = (app) => {
|
|
|
615
627
|
.json({ success: false, error: `Invalid chart name: ${chartNameCheck.reason}` });
|
|
616
628
|
return;
|
|
617
629
|
}
|
|
630
|
+
// Setup-failure cleanup state: if anything throws after the
|
|
631
|
+
// quarantine dir exists but before the job owns it, the catch
|
|
632
|
+
// below removes the orphan. Once createJob has returned, the
|
|
633
|
+
// job's completion/failure listeners own the dir — the catch
|
|
634
|
+
// must NOT touch it then.
|
|
635
|
+
let stagedDir = null;
|
|
636
|
+
let createdJobId = null;
|
|
618
637
|
try {
|
|
619
638
|
console.log(`Creating download job for: ${downloadUrl}`);
|
|
620
639
|
console.log(`Target folder: ${targetFolder}`);
|
|
@@ -627,11 +646,16 @@ const pluginConstructor = (app) => {
|
|
|
627
646
|
if (!fs.existsSync(targetDir)) {
|
|
628
647
|
fs.mkdirSync(targetDir, { recursive: true });
|
|
629
648
|
}
|
|
630
|
-
// Stage the download in
|
|
649
|
+
// Stage the download in a per-job quarantine dir; promote on
|
|
631
650
|
// job-completed so a crash mid-fetch never leaves a partial
|
|
632
|
-
// .mbtiles in the live chart library.
|
|
633
|
-
|
|
651
|
+
// .mbtiles in the live chart library. Per-job (unique) because
|
|
652
|
+
// download jobs run concurrently: two downloads with the same
|
|
653
|
+
// chart name must not share a dir, or the first to finish wipes
|
|
654
|
+
// the workspace out from under the other mid-extraction.
|
|
655
|
+
const quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartName);
|
|
656
|
+
stagedDir = quarantineDir;
|
|
634
657
|
const jobId = downloadManager.createJob(downloadUrl, quarantineDir, chartName);
|
|
658
|
+
createdJobId = jobId;
|
|
635
659
|
const promoteListener = (job) => {
|
|
636
660
|
if (job.id !== jobId) {
|
|
637
661
|
return;
|
|
@@ -687,6 +711,9 @@ const pluginConstructor = (app) => {
|
|
|
687
711
|
});
|
|
688
712
|
}
|
|
689
713
|
catch (error) {
|
|
714
|
+
if (stagedDir !== null && createdJobId === null) {
|
|
715
|
+
cleanupQuarantineDir(stagedDir);
|
|
716
|
+
}
|
|
690
717
|
console.error('Error creating download job:', error);
|
|
691
718
|
res.status(500).json({
|
|
692
719
|
success: false,
|
|
@@ -1325,7 +1352,7 @@ const pluginConstructor = (app) => {
|
|
|
1325
1352
|
// streamed here first, then atomically promoted on `finish`.
|
|
1326
1353
|
// A crashed/aborted request leaves the partial files in the
|
|
1327
1354
|
// quarantine for the startup sweep to wipe, never in basePath.
|
|
1328
|
-
const quarantineDir =
|
|
1355
|
+
const quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), 'upload');
|
|
1329
1356
|
const uploadedFiles = [];
|
|
1330
1357
|
const writePromises = [];
|
|
1331
1358
|
const fields = {};
|
|
@@ -1370,6 +1397,11 @@ const pluginConstructor = (app) => {
|
|
|
1370
1397
|
reject(err);
|
|
1371
1398
|
});
|
|
1372
1399
|
});
|
|
1400
|
+
// Observe the rejection now: Promise.all only attaches in the
|
|
1401
|
+
// 'finish' handler, which never fires on an aborted request —
|
|
1402
|
+
// a staging failure there would otherwise surface as a
|
|
1403
|
+
// process-level unhandled rejection.
|
|
1404
|
+
writePromise.catch(() => undefined);
|
|
1373
1405
|
writePromises.push(writePromise);
|
|
1374
1406
|
});
|
|
1375
1407
|
bb.on('finish', () => {
|
|
@@ -1432,6 +1464,23 @@ const pluginConstructor = (app) => {
|
|
|
1432
1464
|
}
|
|
1433
1465
|
})();
|
|
1434
1466
|
});
|
|
1467
|
+
// An aborted request or a Busboy parse error never reaches
|
|
1468
|
+
// 'finish', which owns the normal cleanup — without these the
|
|
1469
|
+
// staged files stay on disk and the dir stays registered as
|
|
1470
|
+
// active (so the startup sweep skips it) until a full server
|
|
1471
|
+
// restart. cleanupQuarantineDir is idempotent, so a late abort
|
|
1472
|
+
// racing the finish path is harmless.
|
|
1473
|
+
bb.on('error', (err) => {
|
|
1474
|
+
app.error('Upload stream error: ' + (err instanceof Error ? err.message : String(err)));
|
|
1475
|
+
cleanupQuarantineDir(quarantineDir);
|
|
1476
|
+
if (!res.headersSent) {
|
|
1477
|
+
res.status(400).send('Malformed upload');
|
|
1478
|
+
}
|
|
1479
|
+
});
|
|
1480
|
+
req.on('aborted', () => {
|
|
1481
|
+
app.debug('Upload request aborted by client');
|
|
1482
|
+
cleanupQuarantineDir(quarantineDir);
|
|
1483
|
+
});
|
|
1435
1484
|
req.pipe(bb);
|
|
1436
1485
|
}
|
|
1437
1486
|
catch (error) {
|
|
@@ -1602,7 +1651,7 @@ const pluginConstructor = (app) => {
|
|
|
1602
1651
|
res.json({ log: [], status: null });
|
|
1603
1652
|
return;
|
|
1604
1653
|
}
|
|
1605
|
-
const tail =
|
|
1654
|
+
const tail = resolveLogTail(req.query.tail, MAX_CONVERSION_LOG_LINES);
|
|
1606
1655
|
const log = progress.log || [];
|
|
1607
1656
|
res.json({
|
|
1608
1657
|
log: log.slice(-tail),
|
|
@@ -1727,7 +1776,7 @@ const pluginConstructor = (app) => {
|
|
|
1727
1776
|
// the UI stuck waiting for status it would never get.
|
|
1728
1777
|
let quarantineDir;
|
|
1729
1778
|
try {
|
|
1730
|
-
quarantineDir =
|
|
1779
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
1731
1780
|
}
|
|
1732
1781
|
catch (err) {
|
|
1733
1782
|
res.status(500).json({
|
|
@@ -1819,6 +1868,11 @@ const pluginConstructor = (app) => {
|
|
|
1819
1868
|
});
|
|
1820
1869
|
return;
|
|
1821
1870
|
}
|
|
1871
|
+
// Setup-failure cleanup state for the direct-.mbtiles branch: see
|
|
1872
|
+
// the download-chart-locker route. Once createJob has returned,
|
|
1873
|
+
// the job's listeners own the dir and the catch must leave it be.
|
|
1874
|
+
let stagedDir = null;
|
|
1875
|
+
let createdJobId = null;
|
|
1822
1876
|
try {
|
|
1823
1877
|
const chartPath = props.chartPath || defaultChartsPath;
|
|
1824
1878
|
const targetDir = !targetFolder || targetFolder === '/' ? chartPath : path.join(chartPath, targetFolder);
|
|
@@ -1875,13 +1929,16 @@ const pluginConstructor = (app) => {
|
|
|
1875
1929
|
handleGshhgDownload(res, app, chartNumber, catalogFile, zipfileDatetime, url, targetDir, chartPath);
|
|
1876
1930
|
}
|
|
1877
1931
|
else {
|
|
1878
|
-
// Direct .mbtiles download (or ZIP-of-.mbtiles): stage into
|
|
1879
|
-
// quarantine dir so a crash mid-download/extract never
|
|
1880
|
-
// half-built file in the live chart library
|
|
1881
|
-
//
|
|
1882
|
-
|
|
1932
|
+
// Direct .mbtiles download (or ZIP-of-.mbtiles): stage into a
|
|
1933
|
+
// per-job quarantine dir so a crash mid-download/extract never
|
|
1934
|
+
// leaves a half-built file in the live chart library, and so a
|
|
1935
|
+
// re-download of the same chartNumber can't share (and wipe)
|
|
1936
|
+
// a still-running job's dir. Promotion runs on job-completed;
|
|
1937
|
+
// failure / no-files paths drop the quarantine.
|
|
1938
|
+
const quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
1939
|
+
stagedDir = quarantineDir;
|
|
1883
1940
|
const jobId = downloadManager.createJob(url, quarantineDir, chartNumber);
|
|
1884
|
-
|
|
1941
|
+
createdJobId = jobId;
|
|
1885
1942
|
const cleanupListener = (job) => {
|
|
1886
1943
|
if (job.id !== jobId) {
|
|
1887
1944
|
return;
|
|
@@ -1950,6 +2007,11 @@ const pluginConstructor = (app) => {
|
|
|
1950
2007
|
};
|
|
1951
2008
|
downloadManager.on('job-failed', cleanupListener);
|
|
1952
2009
|
downloadManager.on('job-completed', cleanupListener);
|
|
2010
|
+
// Only after the listeners own the job/quarantine lifecycle:
|
|
2011
|
+
// if this throws, the catch below must NOT touch the dir (the
|
|
2012
|
+
// listeners will promote or clean it), and nothing before the
|
|
2013
|
+
// registration above can throw once createJob has returned.
|
|
2014
|
+
trackInstall(chartNumber, catalogFile, zipfileDatetime ?? '', url);
|
|
1953
2015
|
app.debug(`Catalog download started: ${chartNumber} from ${catalogFile}, job: ${jobId}`);
|
|
1954
2016
|
res.json({
|
|
1955
2017
|
success: true,
|
|
@@ -1959,6 +2021,9 @@ const pluginConstructor = (app) => {
|
|
|
1959
2021
|
}
|
|
1960
2022
|
}
|
|
1961
2023
|
catch (error) {
|
|
2024
|
+
if (stagedDir !== null && createdJobId === null) {
|
|
2025
|
+
cleanupQuarantineDir(stagedDir);
|
|
2026
|
+
}
|
|
1962
2027
|
console.error('Error creating catalog download job:', error);
|
|
1963
2028
|
res.status(500).json({
|
|
1964
2029
|
success: false,
|
|
@@ -2154,7 +2219,11 @@ const pluginConstructor = (app) => {
|
|
|
2154
2219
|
res.status(400).json({ log: [], status: null });
|
|
2155
2220
|
return;
|
|
2156
2221
|
}
|
|
2157
|
-
|
|
2222
|
+
// Default returns the whole log: the concatenated manager + s57 log can
|
|
2223
|
+
// be at most the sum of the two per-source caps, so this fallback never
|
|
2224
|
+
// truncates by default (at the cost of a larger payload on each poll —
|
|
2225
|
+
// callers that want less should pass an explicit ?tail=).
|
|
2226
|
+
const tail = resolveLogTail(req.query.tail, MAX_CATALOG_MANAGER_LOG_LINES + MAX_CONVERSION_LOG_LINES);
|
|
2158
2227
|
const managerProgress = getCatalogProgress(id);
|
|
2159
2228
|
const s57 = getS57Progress(id);
|
|
2160
2229
|
// Manager progress carries the download phase; the S-57 converter carries
|
|
@@ -2200,7 +2269,7 @@ const pluginConstructor = (app) => {
|
|
|
2200
2269
|
// the same cleanup as a conversion failure.
|
|
2201
2270
|
let quarantineDir = null;
|
|
2202
2271
|
try {
|
|
2203
|
-
quarantineDir =
|
|
2272
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
2204
2273
|
const displayName = chartTitle ? cleanCatalogTitle(chartTitle) : undefined;
|
|
2205
2274
|
const result = await processS57Zip(zipPath, quarantineDir, chartNumber, (status, message) => {
|
|
2206
2275
|
app.debug(`S-57 [${chartNumber}] ${status}: ${message}`);
|
|
@@ -2283,7 +2352,7 @@ const pluginConstructor = (app) => {
|
|
|
2283
2352
|
app.debug(`Starting RNC conversion for ${chartNumber}: ${zipPath}`);
|
|
2284
2353
|
let quarantineDir = null;
|
|
2285
2354
|
try {
|
|
2286
|
-
quarantineDir =
|
|
2355
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
2287
2356
|
const result = await processRncZip(zipPath, quarantineDir, chartNumber, (status, message) => {
|
|
2288
2357
|
app.debug(`RNC [${chartNumber}] ${status}: ${message}`);
|
|
2289
2358
|
});
|
|
@@ -2364,7 +2433,7 @@ const pluginConstructor = (app) => {
|
|
|
2364
2433
|
setConvertingState(chartNumber, true);
|
|
2365
2434
|
let quarantineDir = null;
|
|
2366
2435
|
try {
|
|
2367
|
-
quarantineDir =
|
|
2436
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
2368
2437
|
const result = await processPilotTar(dlPath, quarantineDir, chartNumber, (status, message) => {
|
|
2369
2438
|
app.debug(`Pilot [${chartNumber}] ${status}: ${message}`);
|
|
2370
2439
|
});
|
|
@@ -2435,7 +2504,7 @@ const pluginConstructor = (app) => {
|
|
|
2435
2504
|
setConvertingState(chartNumber, true);
|
|
2436
2505
|
let quarantineDir = null;
|
|
2437
2506
|
try {
|
|
2438
|
-
quarantineDir =
|
|
2507
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
2439
2508
|
const result = await processShpBasemap(dlPath, quarantineDir, chartNumber, (status, message) => {
|
|
2440
2509
|
app.debug(`ShpBasemap [${chartNumber}] ${status}: ${message}`);
|
|
2441
2510
|
});
|
|
@@ -2486,7 +2555,7 @@ const pluginConstructor = (app) => {
|
|
|
2486
2555
|
void (async () => {
|
|
2487
2556
|
let quarantineDir = null;
|
|
2488
2557
|
try {
|
|
2489
|
-
quarantineDir =
|
|
2558
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), chartNumber);
|
|
2490
2559
|
const result = await processGshhg(tmpDir, quarantineDir, resolution, chartNumber, (status, message) => {
|
|
2491
2560
|
app.debug(`GSHHG [${chartNumber}] ${status}: ${message}`);
|
|
2492
2561
|
});
|
|
@@ -2668,7 +2737,7 @@ const pluginConstructor = (app) => {
|
|
|
2668
2737
|
}
|
|
2669
2738
|
setConvertingState(id, true);
|
|
2670
2739
|
convertingFlagged = true;
|
|
2671
|
-
quarantineDir =
|
|
2740
|
+
quarantineDir = makeUniqueQuarantineDir(app.getDataDirPath(), id);
|
|
2672
2741
|
const conv = await processS57Directory(encDir, quarantineDir, id, (status, message) => setCatalogProgress(id, status, message), {
|
|
2673
2742
|
displayName: catalog.name,
|
|
2674
2743
|
displayDescription: `Custom catalog: ${catalog.name}`,
|