signalk-charts-provider-simple 2.6.0 → 2.7.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 +60 -7
- package/dist/charts-loader.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -6
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/container-manager.d.ts.map +1 -1
- package/dist/utils/container-manager.js +3 -1
- package/dist/utils/container-manager.js.map +1 -1
- package/dist/utils/download-manager.js +1 -1
- package/dist/utils/download-manager.js.map +1 -1
- package/dist/utils/mbtiles-reader.d.ts.map +1 -1
- package/dist/utils/mbtiles-reader.js +14 -1
- package/dist/utils/mbtiles-reader.js.map +1 -1
- package/dist/utils/noaa-enc-footprints.d.ts.map +1 -1
- package/dist/utils/noaa-enc-footprints.js +1 -1
- package/dist/utils/noaa-enc-footprints.js.map +1 -1
- package/dist/utils/path-marker.js +1 -1
- package/dist/utils/path-marker.js.map +1 -1
- package/dist/utils/quarantine.js +1 -1
- package/dist/utils/quarantine.js.map +1 -1
- package/dist/utils/rnc-converter.d.ts.map +1 -1
- package/dist/utils/rnc-converter.js +1 -1
- package/dist/utils/rnc-converter.js.map +1 -1
- package/dist/utils/s57-converter.d.ts.map +1 -1
- package/dist/utils/s57-converter.js +2 -2
- 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 +7 -7
- package/public/js/chart-catalog.js +2 -2
- package/public/js/chart-catalog.ts +2 -2
- package/public/js/manage-charts-enhanced.js +1 -1
- package/public/js/manage-charts-enhanced.ts +1 -1
- package/public/js/noaa-chart-selector.js +6 -0
- package/public/js/noaa-chart-selector.ts +6 -0
|
@@ -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;AAsCpB,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,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,CA4C7F;AAyPD;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAU3F"}
|
package/dist/charts-loader.js
CHANGED
|
@@ -31,20 +31,56 @@ function resolveChartType(metadataType, format, layerIds = []) {
|
|
|
31
31
|
return 'tilelayer';
|
|
32
32
|
}
|
|
33
33
|
export async function findCharts(chartBaseDir) {
|
|
34
|
+
// A directory-read failure must reject so callers can tell a failed scan
|
|
35
|
+
// apart from an empty-but-readable directory — swallowing it here used to
|
|
36
|
+
// make an unreadable charts directory look like "zero charts, success".
|
|
37
|
+
// Individual chart files that fail to open are still skipped
|
|
38
|
+
// (openMbtilesFile returns null), so one corrupt .mbtiles cannot fail
|
|
39
|
+
// the walk.
|
|
40
|
+
//
|
|
41
|
+
// The walk opens a sqlite handle per chart as it goes, and an unreadable
|
|
42
|
+
// SUBdirectory throws after earlier charts already have theirs. Those
|
|
43
|
+
// handles never reach a caller, so nothing else can close them — and on
|
|
44
|
+
// Windows each one locks its .mbtiles. Release them here before
|
|
45
|
+
// rethrowing; the rejection itself is the contract and must survive.
|
|
46
|
+
const opened = [];
|
|
34
47
|
try {
|
|
35
|
-
const results = await findChartsRecursive(chartBaseDir);
|
|
48
|
+
const results = await findChartsRecursive(chartBaseDir, opened);
|
|
36
49
|
const filtered = results.filter((c) => c !== null);
|
|
37
50
|
return filtered.reduce((result, chart) => {
|
|
51
|
+
// Two folders can hold the same .mbtiles basename, which yields the same
|
|
52
|
+
// identifier (zip extraction disambiguates on import, but a directory
|
|
53
|
+
// assembled by hand need not). The loser of that collision drops out of
|
|
54
|
+
// the returned map, so close its handle here — nothing downstream can
|
|
55
|
+
// reach it, and on Windows it would lock that file for good.
|
|
56
|
+
const displaced = result[chart.identifier];
|
|
57
|
+
if (displaced && displaced !== chart) {
|
|
58
|
+
try {
|
|
59
|
+
displaced._mbtilesHandle?.close();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Already closed — nothing to release.
|
|
63
|
+
}
|
|
64
|
+
}
|
|
38
65
|
result[chart.identifier] = chart;
|
|
39
66
|
return result;
|
|
40
67
|
}, {});
|
|
41
68
|
}
|
|
42
69
|
catch (err) {
|
|
43
|
-
|
|
44
|
-
|
|
70
|
+
for (const chart of opened) {
|
|
71
|
+
try {
|
|
72
|
+
chart._mbtilesHandle?.close();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
// Already closed — nothing to release.
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
throw err;
|
|
45
79
|
}
|
|
46
80
|
}
|
|
47
|
-
async function findChartsRecursive(currentDir
|
|
81
|
+
async function findChartsRecursive(currentDir,
|
|
82
|
+
/** Every provider opened so far, so a throw mid-walk can still close them. */
|
|
83
|
+
opened) {
|
|
48
84
|
const files = await fs.readdir(currentDir, { withFileTypes: true });
|
|
49
85
|
const results = [];
|
|
50
86
|
for (const file of files) {
|
|
@@ -53,6 +89,9 @@ async function findChartsRecursive(currentDir) {
|
|
|
53
89
|
const isDirectory = file.isDirectory();
|
|
54
90
|
if (isMbtilesFile) {
|
|
55
91
|
const chart = await openMbtilesFile(filePath, file.name);
|
|
92
|
+
if (chart) {
|
|
93
|
+
opened.push(chart);
|
|
94
|
+
}
|
|
56
95
|
results.push([chart]);
|
|
57
96
|
}
|
|
58
97
|
else if (isDirectory) {
|
|
@@ -65,7 +104,7 @@ async function findChartsRecursive(currentDir) {
|
|
|
65
104
|
results.push([chartInfo]);
|
|
66
105
|
}
|
|
67
106
|
else {
|
|
68
|
-
const subResults = await findChartsRecursive(filePath);
|
|
107
|
+
const subResults = await findChartsRecursive(filePath, opened);
|
|
69
108
|
results.push(subResults);
|
|
70
109
|
}
|
|
71
110
|
}
|
|
@@ -76,8 +115,16 @@ async function findChartsRecursive(currentDir) {
|
|
|
76
115
|
return results.flat();
|
|
77
116
|
}
|
|
78
117
|
async function openMbtilesFile(file, filename) {
|
|
118
|
+
// Held outside the try so the catch can close it if anything after
|
|
119
|
+
// openMbtiles resolves throws — tile-size probing, or building the provider
|
|
120
|
+
// from the metadata. Defensive: openMbtiles already validates the file (and
|
|
121
|
+
// closes its own reader when that probe rejects), and getInfo() below is
|
|
122
|
+
// memoized from that probe, so no input is known to reach this catch with a
|
|
123
|
+
// reader open. Cheap insurance on a path that returns null either way,
|
|
124
|
+
// because an unclosed handle locks the .mbtiles on Windows.
|
|
125
|
+
let reader;
|
|
79
126
|
try {
|
|
80
|
-
|
|
127
|
+
reader = await openMbtiles(file);
|
|
81
128
|
const metadata = reader.getInfo();
|
|
82
129
|
if (!metadata || Object.keys(metadata).length === 0 || metadata.bounds === undefined) {
|
|
83
130
|
reader.close();
|
|
@@ -119,6 +166,12 @@ async function openMbtilesFile(file, filename) {
|
|
|
119
166
|
}
|
|
120
167
|
catch (e) {
|
|
121
168
|
console.error(`Error loading chart ${file}`, e instanceof Error ? e.message : String(e));
|
|
169
|
+
try {
|
|
170
|
+
reader?.close();
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Already closed, or never opened — nothing to release.
|
|
174
|
+
}
|
|
122
175
|
return null;
|
|
123
176
|
}
|
|
124
177
|
}
|
|
@@ -126,7 +179,7 @@ function parseVectorLayers(layers) {
|
|
|
126
179
|
return layers.map((l) => l.id);
|
|
127
180
|
}
|
|
128
181
|
async function directoryToMapInfo(file, identifier) {
|
|
129
|
-
let info
|
|
182
|
+
let info;
|
|
130
183
|
const tilemapResource = path.join(file, 'tilemapresource.xml');
|
|
131
184
|
const metadataJson = path.join(file, 'metadata.json');
|
|
132
185
|
try {
|
|
@@ -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;AA8HxD,OAAO,KAAK,EACV,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA8HxD,OAAO,KAAK,EACV,aAAa,EAGb,iBAAiB,EAIjB,QAAQ,EAET,MAAM,YAAY,CAAC;AAwBpB,QAAA,MAAM,iBAAiB,GAAI,KAAK,iBAAiB,KAAG,MA4pInD,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
|
@@ -148,6 +148,8 @@ const pluginConstructor = (app) => {
|
|
|
148
148
|
clearInterval(catalogUpdateInterval);
|
|
149
149
|
catalogUpdateInterval = null;
|
|
150
150
|
}
|
|
151
|
+
// Withdraw the peer-plugin refresh hook (see doStartup).
|
|
152
|
+
delete globalThis.__signalk_chartsProviderRefresh;
|
|
151
153
|
// Release sqlite handles: on Windows an open handle keeps the
|
|
152
154
|
// .mbtiles file locked, and Signal K restarts the plugin on every
|
|
153
155
|
// config save, which would otherwise leak the whole map each time.
|
|
@@ -203,6 +205,27 @@ const pluginConstructor = (app) => {
|
|
|
203
205
|
return router;
|
|
204
206
|
}
|
|
205
207
|
};
|
|
208
|
+
// Message surfaced when chart conversion is needed but the
|
|
209
|
+
// signalk-container plugin (which owns the container runtime layer from
|
|
210
|
+
// 2.0 onward) isn't available. Shared by the startup path and the
|
|
211
|
+
// conversion REST guards so the wording stays identical everywhere.
|
|
212
|
+
const containerRequiredMessage = 'signalk-container plugin required for chart conversion. Install it from the App Store and restart Signal K. Chart display continues to work without it.';
|
|
213
|
+
// True when something actually needs the container runtime: a conversion
|
|
214
|
+
// still in flight from a previous plugin lifecycle (a config save restarts
|
|
215
|
+
// the plugin, but module-level converter state survives it),
|
|
216
|
+
// catalog-installed charts (their updates are download+convert), or saved
|
|
217
|
+
// chart sets (the NOAA tab is conversion-fed by definition). Pure display
|
|
218
|
+
// setups — serving existing .mbtiles/tilemaps — never need the runtime.
|
|
219
|
+
const hasContainerDependentCharts = () => getConvertingCount() > 0 ||
|
|
220
|
+
Object.keys(getInstalledCatalogCharts()).length > 0 ||
|
|
221
|
+
listCustomCatalogs().length > 0;
|
|
222
|
+
// The user just tried to start an operation that needs the container
|
|
223
|
+
// runtime and it isn't there. The 503 response explains the problem
|
|
224
|
+
// inside the tab, but the dashboard status line should carry it too —
|
|
225
|
+
// that's where plugin health is expected to show up.
|
|
226
|
+
const reportContainerRuntimeMissing = () => {
|
|
227
|
+
app.setPluginError(containerRequiredMessage);
|
|
228
|
+
};
|
|
206
229
|
const doStartup = async (config) => {
|
|
207
230
|
app.debug(`** loaded config: ${JSON.stringify(config)}`);
|
|
208
231
|
props = { ...config };
|
|
@@ -307,18 +330,38 @@ const pluginConstructor = (app) => {
|
|
|
307
330
|
}
|
|
308
331
|
// Report Started for the display path. Don't clobber a load error
|
|
309
332
|
// (loadChartProviders sets one) — a later setPluginError from the
|
|
310
|
-
// signalk-container discovery below
|
|
311
|
-
//
|
|
333
|
+
// signalk-container discovery below (only raised when conversion work
|
|
334
|
+
// actually needs it) is allowed to win over this status.
|
|
312
335
|
if (loadOk) {
|
|
313
336
|
app.setPluginStatus('Started');
|
|
314
337
|
}
|
|
338
|
+
// Publish the in-process refresh hook for peer plugins (same pattern
|
|
339
|
+
// as signalk-container's `__signalk_containerManager` global): chart
|
|
340
|
+
// PRODUCERS that drop .mbtiles into the charts directory while the
|
|
341
|
+
// server runs (e.g. signalk-corridor-tile-downloader) need a rescan
|
|
342
|
+
// to get their files registered — findCharts has no file watcher.
|
|
343
|
+
// The global is an in-process hand-off: no HTTP round-trip, so it
|
|
344
|
+
// also works on servers with security enabled. Published as soon as
|
|
345
|
+
// the display path is live (before the container-manager wait) and
|
|
346
|
+
// withdrawn in stop().
|
|
347
|
+
globalThis.__signalk_chartsProviderRefresh =
|
|
348
|
+
async () => {
|
|
349
|
+
// Reject (rather than resolve with the stale count) when the rescan
|
|
350
|
+
// failed, so peer plugins can tell a failed refresh from a successful
|
|
351
|
+
// one.
|
|
352
|
+
if (!(await refreshChartProviders())) {
|
|
353
|
+
throw new Error('Chart providers refresh failed');
|
|
354
|
+
}
|
|
355
|
+
return Object.keys(chartProviders).length;
|
|
356
|
+
};
|
|
315
357
|
// Discover the signalk-container plugin's manager API. Chart conversion
|
|
316
358
|
// (S-57, BSB raster, Pilot, basemaps) goes through it from 2.0 onward;
|
|
317
359
|
// the App Store's `signalk.recommends` declaration in our package.json
|
|
318
360
|
// ensures users are prompted to install signalk-container, but plugin
|
|
319
361
|
// load order is not deterministic, so we wait up to 30 s before giving
|
|
320
|
-
// up. A missing manager surfaces as setPluginError
|
|
321
|
-
//
|
|
362
|
+
// up. A missing manager only surfaces as setPluginError when something
|
|
363
|
+
// actually needs the runtime (see hasContainerDependentCharts) and never
|
|
364
|
+
// aborts startup — chart *display* (serving tiles for already-converted
|
|
322
365
|
// .mbtiles) doesn't need the runtime layer and remains functional.
|
|
323
366
|
// Wipe any quarantine subdirs left behind by a previous server
|
|
324
367
|
// lifecycle. Conversions write into <dataDir>/in-progress/<chartNumber>/
|
|
@@ -347,7 +390,17 @@ const pluginConstructor = (app) => {
|
|
|
347
390
|
}
|
|
348
391
|
});
|
|
349
392
|
if (!containerManager) {
|
|
350
|
-
|
|
393
|
+
// Only raise the missing runtime to an ERROR when something actually
|
|
394
|
+
// needs it (see hasContainerDependentCharts). A pure display setup
|
|
395
|
+
// never touches the container layer, and a standing error there just
|
|
396
|
+
// makes a healthy plugin look broken — the Convert tab already
|
|
397
|
+
// explains the situation inside the UI when the runtime is missing.
|
|
398
|
+
if (hasContainerDependentCharts()) {
|
|
399
|
+
reportContainerRuntimeMissing();
|
|
400
|
+
}
|
|
401
|
+
else {
|
|
402
|
+
console.log('[charts-provider] signalk-container not available — chart conversion disabled (chart display unaffected)');
|
|
403
|
+
}
|
|
351
404
|
}
|
|
352
405
|
else {
|
|
353
406
|
const runtime = containerManager.getRuntime();
|
|
@@ -507,8 +560,15 @@ const pluginConstructor = (app) => {
|
|
|
507
560
|
}
|
|
508
561
|
};
|
|
509
562
|
const cleanupChartDirectory = async (chartPath) => {
|
|
563
|
+
// findCharts opens a sqlite handle per chart. This rescan's handles are
|
|
564
|
+
// never stored in chartProviders, so stop() cannot reach them and they
|
|
565
|
+
// leak — on Windows keeping every .mbtiles locked, which fails the very
|
|
566
|
+
// unlink this function performs and any later attempt to delete the
|
|
567
|
+
// directory. Closed in the finally below, on every path.
|
|
568
|
+
let scanned = [];
|
|
510
569
|
try {
|
|
511
570
|
const charts = await findCharts(chartPath);
|
|
571
|
+
scanned = Object.values(charts);
|
|
512
572
|
const allFiles = await scanChartsRecursively(chartPath);
|
|
513
573
|
const validPaths = new Set(Object.values(charts)
|
|
514
574
|
.map((c) => c._filePath)
|
|
@@ -559,6 +619,11 @@ const pluginConstructor = (app) => {
|
|
|
559
619
|
catch (e) {
|
|
560
620
|
app.debug(`Error cleaning chart directory: ${e instanceof Error ? e.message : String(e)}`);
|
|
561
621
|
}
|
|
622
|
+
finally {
|
|
623
|
+
// Also on the error path: a scan that failed partway still opened
|
|
624
|
+
// handles for the charts it did reach.
|
|
625
|
+
closeProviderHandles(scanned);
|
|
626
|
+
}
|
|
562
627
|
};
|
|
563
628
|
const finalizeUploadedFiles = async (uploadedFiles, targetFolder, basePath) => {
|
|
564
629
|
for (const filename of uploadedFiles) {
|
|
@@ -2097,6 +2162,24 @@ const pluginConstructor = (app) => {
|
|
|
2097
2162
|
}
|
|
2098
2163
|
});
|
|
2099
2164
|
// ---- Chart Catalog API routes ----
|
|
2165
|
+
// External rescan trigger for chart producers and tooling: rescans
|
|
2166
|
+
// the charts directory and re-registers the resource providers, so a
|
|
2167
|
+
// .mbtiles written after startup (no file watcher exists) becomes
|
|
2168
|
+
// visible to clients. The in-process `__signalk_chartsProviderRefresh`
|
|
2169
|
+
// global does the same without an HTTP round-trip for peer plugins.
|
|
2170
|
+
router.post('/refresh', async (_req, res) => {
|
|
2171
|
+
// refreshChartProviders never rejects; false means the scan failed
|
|
2172
|
+
// (details already logged) and must surface as 500, not as a
|
|
2173
|
+
// success response with a stale chart count.
|
|
2174
|
+
if (!(await refreshChartProviders())) {
|
|
2175
|
+
res.status(500).json({ error: 'Chart refresh failed' });
|
|
2176
|
+
return;
|
|
2177
|
+
}
|
|
2178
|
+
res.json({
|
|
2179
|
+
status: 'ok',
|
|
2180
|
+
charts: Object.keys(chartProviders).length
|
|
2181
|
+
});
|
|
2182
|
+
});
|
|
2100
2183
|
router.get('/catalog-registry', (_req, res) => {
|
|
2101
2184
|
try {
|
|
2102
2185
|
const registry = getCatalogRegistry();
|
|
@@ -2268,6 +2351,7 @@ const pluginConstructor = (app) => {
|
|
|
2268
2351
|
void (async () => {
|
|
2269
2352
|
const cm = getContainerManager();
|
|
2270
2353
|
if (!cm?.getRuntime()) {
|
|
2354
|
+
reportContainerRuntimeMissing();
|
|
2271
2355
|
cleanupDir(tmpDir);
|
|
2272
2356
|
res.status(503).json({
|
|
2273
2357
|
success: false,
|
|
@@ -2409,6 +2493,7 @@ const pluginConstructor = (app) => {
|
|
|
2409
2493
|
if (needsRuntime) {
|
|
2410
2494
|
const cm = getContainerManager();
|
|
2411
2495
|
if (!cm?.getRuntime()) {
|
|
2496
|
+
reportContainerRuntimeMissing();
|
|
2412
2497
|
res.status(503).json({
|
|
2413
2498
|
success: false,
|
|
2414
2499
|
error: 'signalk-container plugin not available. Install it from the App Store and restart Signal K.'
|
|
@@ -2677,6 +2762,7 @@ const pluginConstructor = (app) => {
|
|
|
2677
2762
|
}
|
|
2678
2763
|
const cm = getContainerManager();
|
|
2679
2764
|
if (!cm?.getRuntime()) {
|
|
2765
|
+
reportContainerRuntimeMissing();
|
|
2680
2766
|
res.status(503).json({
|
|
2681
2767
|
success: false,
|
|
2682
2768
|
error: 'signalk-container plugin not available. Install it from the App Store and restart Signal K.'
|
|
@@ -3417,9 +3503,17 @@ const pluginConstructor = (app) => {
|
|
|
3417
3503
|
app.debug('Failed Provider Registration!');
|
|
3418
3504
|
}
|
|
3419
3505
|
};
|
|
3506
|
+
// Rescans the charts directory and swaps in the new provider map.
|
|
3507
|
+
// Returns true on success; on a failed scan (findCharts rejects) the
|
|
3508
|
+
// existing chartProviders map is left untouched — an unreadable charts
|
|
3509
|
+
// directory must not drop every served chart — and false is returned so
|
|
3510
|
+
// the refresh hook / POST /refresh can report the failure. Never rejects:
|
|
3511
|
+
// fire-and-forget callers (download completion) rely on that.
|
|
3420
3512
|
const refreshChartProviders = async () => {
|
|
3421
3513
|
try {
|
|
3422
|
-
|
|
3514
|
+
// getDefaultChartsPath() (not the raw field) so a refresh requested
|
|
3515
|
+
// before start() has run still resolves the computed default path.
|
|
3516
|
+
const chartPath = props.chartPath || getDefaultChartsPath();
|
|
3423
3517
|
const charts = await findCharts(chartPath);
|
|
3424
3518
|
// Close the handles of the map being replaced — findCharts reopened
|
|
3425
3519
|
// every chart, so the old provider objects would otherwise leak.
|
|
@@ -3427,9 +3521,11 @@ const pluginConstructor = (app) => {
|
|
|
3427
3521
|
chartProviders = partitionVisibleCharts(chartPath, charts);
|
|
3428
3522
|
closeProviderHandles(Object.values(previous));
|
|
3429
3523
|
app.debug(`Chart providers refreshed: ${Object.keys(chartProviders).length} enabled charts`);
|
|
3524
|
+
return true;
|
|
3430
3525
|
}
|
|
3431
3526
|
catch (error) {
|
|
3432
3527
|
app.error(`Failed to refresh chart providers: ${error instanceof Error ? error.message : String(error)}`);
|
|
3528
|
+
return false;
|
|
3433
3529
|
}
|
|
3434
3530
|
};
|
|
3435
3531
|
const startCatalogUpdateChecker = () => {
|