@marineyachtradar/signalk-plugin 0.5.2 → 0.5.5

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/README.md CHANGED
@@ -4,8 +4,9 @@ A SignalK plugin that connects to [mayara-server](https://github.com/MarineYacht
4
4
 
5
5
  ## Prerequisites
6
6
 
7
- - **SignalK Server** with the Radar API — **PR [SignalK/signalk-server#2357](https://github.com/SignalK/signalk-server/pull/2357)**
8
- - **[signalk-container](https://github.com/dirkwa/signalk-container)** plugin (for managed container mode, optional)
7
+ - **SignalK Server ≥ 2.24.0** with the Radar API — **PR [SignalK/signalk-server#2357](https://github.com/SignalK/signalk-server/pull/2357)**
8
+ - **Node.js ≥ 20** (matches signalk-server 2.24.0 baseline; tested on Node 22 and 24, also works on Cerbo GX with Node 20)
9
+ - **[signalk-container](https://github.com/dirkwa/signalk-container) ≥ 0.1.6** (for managed container mode, optional)
9
10
  - **Podman** or **Docker** runtime (for managed container mode)
10
11
 
11
12
  ## How It Works
@@ -59,12 +60,39 @@ The plugin provides a custom configuration panel in the SignalK Admin UI.
59
60
  With **signalk-container** installed, the plugin automatically pulls and manages the `ghcr.io/marineyachtradar/mayara-server` container image using host networking for radar multicast discovery.
60
61
 
61
62
  - **Image version** — select `latest`, `main`, or a specific release tag
62
- - **Check** — pulls the selected tag and compares against the running container
63
- - **Update** — pulls, stops, removes, and recreates the container with the new image
63
+ - **Check** — queries signalk-container's centralized update detection service. Auto-detects whether the running tag is semver (compare via GitHub releases) or floating like `latest`/`main` (compare local digest to remote). Offline-tolerant: if the boat is at sea, returns the last cached result rather than failing.
64
+ - **Update** — pulls the selected version, recreates the container, and reapplies the resource limits (see below).
64
65
  - **Arguments** (advanced) — optional CLI args like `--brand furuno --interface eth0`
65
66
 
66
67
  Without arguments, mayara-server auto-discovers all radar brands on all network interfaces.
67
68
 
69
+ ### Resource Limits
70
+
71
+ The plugin sets sensible default resource caps so a runaway container can't take down Signal K:
72
+
73
+ | Setting | Default | Why |
74
+ | -------------- | ------- | ---------------------------------------------------- |
75
+ | `cpus` | `1.5` | Mayara processing peaks ≈ 1 core; 50% headroom |
76
+ | `memory` | `512m` | Hard memory cap, OOM-killed if exceeded |
77
+ | `memorySwap` | `512m` | = memory → swap disabled (recommended on Pi/eMMC) |
78
+ | `pidsLimit` | `200` | Bounds runaway thread leaks |
79
+
80
+ Tested on a Pi 5 8GB with a Garmin xHD2 at 24 NM range. If your setup needs different limits (e.g. multiple radars, larger range, weaker hardware), override per-field via signalk-container's plugin config under **Per-container resource overrides**:
81
+
82
+ ```json
83
+ {
84
+ "mayara-server": {
85
+ "cpus": 2.0,
86
+ "memory": "1g",
87
+ "memorySwap": "1g"
88
+ }
89
+ }
90
+ ```
91
+
92
+ The override is field-level merged on top of the plugin defaults — you don't have to know what the plugin set, just specify what you want different. Use `null` to remove a specific limit set by the plugin (e.g. `{"memory": null}` for unlimited memory).
93
+
94
+ See [signalk-container's developer guide](https://github.com/dirkwa/signalk-container/blob/master/doc/plugin-developer-guide.md#resource-limits) for the full reference.
95
+
68
96
  ### External Mode
69
97
 
70
98
  Set **Managed container** to off to connect to a mayara-server instance running elsewhere:
@@ -78,12 +106,13 @@ The webapp redirects to mayara-server's built-in GUI at `http://<host>:6502/gui/
78
106
 
79
107
  ## Features
80
108
 
81
- - **Container management**: Pull, update, and run mayara-server via signalk-container
109
+ - **Container management**: Pull, update, and run mayara-server via signalk-container with sensible default resource limits
82
110
  - **Multi-radar support**: Auto-discovers all radars connected to mayara-server
83
111
  - **Full Radar API**: Power, range, gain, sea/rain clutter, ARPA targets
84
112
  - **Binary spoke streaming**: Forwards protobuf spoke data via SignalK's binaryStreamManager
85
113
  - **Auto-reconnection**: Handles disconnections with configurable retry
86
- - **Update detection**: Compare running container image against registry
114
+ - **Centralized update detection**: Delegated to signalk-container's update service. Auto-detects semver vs floating tags, offline-tolerant with persistent cache, no direct shellouts.
115
+ - **User-configurable resource limits**: Default caps on CPU, memory, and PIDs; per-field overrides via signalk-container's config.
87
116
 
88
117
  ## Development
89
118
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marineyachtradar/signalk-plugin",
3
- "version": "0.5.2",
3
+ "version": "0.5.5",
4
4
  "description": "MaYaRa Radar - Connect SignalK to mayara-server",
5
5
  "main": "plugin/index.js",
6
6
  "scripts": {
@@ -36,14 +36,14 @@
36
36
  ],
37
37
  "engines": {
38
38
  "node": ">=20",
39
- "signalk": ">=2.0.0"
39
+ "signalk": ">=2.24.0"
40
40
  },
41
41
  "dependencies": {
42
42
  "@sinclair/typebox": "^0.34.0",
43
43
  "ws": "^8.14.0"
44
44
  },
45
45
  "peerDependencies": {
46
- "signalk-container": ">=0.1.0"
46
+ "signalk-container": ">=0.1.6"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "signalk-container": {
package/plugin/index.js CHANGED
@@ -1,15 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const child_process_1 = require("child_process");
4
- const fs_1 = require("fs");
5
- const util_1 = require("util");
6
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
7
3
  const mayara_client_1 = require("./mayara-client");
8
4
  const radar_provider_1 = require("./radar-provider");
9
5
  const spoke_forwarder_1 = require("./spoke-forwarder");
10
6
  const schema_1 = require("./config/schema");
11
7
  const MAYARA_IMAGE = 'ghcr.io/marineyachtradar/mayara-server';
8
+ const CONTAINER_NAME = 'mayara-server';
9
+ const PLUGIN_ID = 'mayara-server-signalk-plugin';
12
10
  const SAFE_TAG = /^[a-zA-Z0-9._-]+$/;
11
+ /**
12
+ * Sensible default resource limits for the mayara-server container.
13
+ * Tested on a Pi 5 8GB with a Garmin xHD2 radar at 24 NM range.
14
+ *
15
+ * Users can override any field via signalk-container's plugin config
16
+ * under "Per-container resource overrides", keyed by the unprefixed
17
+ * container name `mayara-server`. Field-level merge — set a field to
18
+ * `null` to remove a limit set here. See:
19
+ *
20
+ * signalk-container/doc/plugin-developer-guide.md §"Resource Limits"
21
+ */
22
+ const DEFAULT_RESOURCES = {
23
+ cpus: 1.5,
24
+ memory: '512m',
25
+ memorySwap: '512m', // = memory → swap disabled (recommended on Pi/eMMC)
26
+ pidsLimit: 200
27
+ };
28
+ /**
29
+ * Typed accessor for the cross-plugin container manager API. Returns
30
+ * undefined if signalk-container has not finished start() yet, or if
31
+ * the user has it disabled. Callers should always handle undefined.
32
+ */
33
+ function getContainerManager() {
34
+ return globalThis.__signalk_containerManager;
35
+ }
13
36
  module.exports = function (app) {
14
37
  let client = null;
15
38
  let currentSettings = null;
@@ -19,7 +42,7 @@ module.exports = function (app) {
19
42
  let isConnected = false;
20
43
  const knownRadars = new Set();
21
44
  const plugin = {
22
- id: 'mayara-server-signalk-plugin',
45
+ id: PLUGIN_ID,
23
46
  name: 'MaYaRa Radar (Server)',
24
47
  description: 'Connect SignalK to mayara-server for multi-brand marine radar integration',
25
48
  schema: schema_1.ConfigSchema,
@@ -30,13 +53,13 @@ module.exports = function (app) {
30
53
  app.setPluginError(`Startup failed: ${err instanceof Error ? err.message : String(err)}`);
31
54
  });
32
55
  },
33
- stop() {
56
+ async stop() {
34
57
  app.debug('Stopping mayara-server-signalk-plugin');
35
58
  try {
36
- app.radarApi.unRegister(plugin.id);
59
+ app.radarApi.unRegister(PLUGIN_ID);
37
60
  }
38
61
  catch (err) {
39
- app.debug(`Error unregistering: ${err instanceof Error ? err.message : String(err)}`);
62
+ app.debug(`Error unregistering radar provider: ${errMsg(err)}`);
40
63
  }
41
64
  if (discoveryInterval) {
42
65
  clearInterval(discoveryInterval);
@@ -55,35 +78,51 @@ module.exports = function (app) {
55
78
  client.close();
56
79
  client = null;
57
80
  }
81
+ // Clean up the managed container and the update registration so
82
+ // we don't leave orphans behind when the user disables the plugin.
83
+ // Requires Signal K ≥ 2.24.0 (where Plugin.stop() may be async).
84
+ const containers = getContainerManager();
85
+ if (containers && currentSettings?.managedContainer !== false) {
86
+ try {
87
+ containers.updates.unregister(PLUGIN_ID);
88
+ }
89
+ catch (err) {
90
+ app.debug(`Error unregistering update tracker: ${errMsg(err)}`);
91
+ }
92
+ try {
93
+ await containers.stop(CONTAINER_NAME);
94
+ }
95
+ catch (err) {
96
+ app.debug(`Error stopping mayara-server container: ${errMsg(err)}`);
97
+ }
98
+ }
58
99
  isConnected = false;
59
100
  app.setPluginStatus('Stopped');
60
101
  },
61
102
  registerWithRouter(router) {
62
- router.get('/status', async (req, res) => {
103
+ router.get('/status', async (_req, res) => {
104
+ const containers = getContainerManager();
63
105
  let containerState = 'unknown';
64
106
  let containerImage = '';
65
- try {
66
- const containers = globalThis.__signalk_containerManager;
67
- if (containers) {
68
- containerState = await containers.getState('mayara-server');
107
+ if (containers) {
108
+ try {
109
+ containerState = await containers.getState(CONTAINER_NAME);
69
110
  }
70
- }
71
- catch {
72
- // ignore
73
- }
74
- try {
75
- const containers = globalThis.__signalk_containerManager;
76
- if (containers?.getRuntime()) {
77
- const list = await containers.listContainers();
78
- const mayara = list.find((c) => c.name === 'sk-mayara-server');
79
- if (mayara) {
80
- containerImage = mayara.image;
111
+ catch (err) {
112
+ app.debug(`status: getState failed: ${errMsg(err)}`);
113
+ }
114
+ if (containers.getRuntime()) {
115
+ try {
116
+ const list = await containers.listContainers();
117
+ const found = list.find((c) => c.name === `sk-${CONTAINER_NAME}`);
118
+ if (found)
119
+ containerImage = found.image;
120
+ }
121
+ catch (err) {
122
+ app.debug(`status: listContainers failed: ${errMsg(err)}`);
81
123
  }
82
124
  }
83
125
  }
84
- catch {
85
- // ignore
86
- }
87
126
  if (!containerImage) {
88
127
  containerImage = `${MAYARA_IMAGE}:${currentSettings?.mayaraVersion ?? 'latest'}`;
89
128
  }
@@ -101,103 +140,105 @@ module.exports = function (app) {
101
140
  }
102
141
  });
103
142
  });
104
- router.post('/api/check-update', async (req, res) => {
143
+ // Update detection: delegated to signalk-container's centralized
144
+ // update service. Mayara no longer fetches GitHub releases or shells
145
+ // out to `podman inspect` itself — the container manager handles all
146
+ // of that, with offline tolerance, persistent caching, and per-tag
147
+ // strategy auto-detection (semver vs floating-tag digest drift).
148
+ router.get('/api/update/check', async (_req, res) => {
149
+ const containers = getContainerManager();
150
+ if (!containers) {
151
+ res.status(503).json({ error: 'signalk-container not available' });
152
+ return;
153
+ }
105
154
  try {
106
- const containers = globalThis.__signalk_containerManager;
107
- if (!containers) {
108
- res.status(400).json({ error: 'signalk-container not available' });
109
- return;
110
- }
111
- const runtime = containers.getRuntime();
112
- if (!runtime) {
113
- res.status(400).json({ error: 'No container runtime detected' });
114
- return;
115
- }
116
- const rt = runtime.runtime;
117
- const tag = req.body.tag ??
118
- currentSettings?.mayaraVersion ??
119
- 'latest';
120
- if (!SAFE_TAG.test(tag)) {
121
- res.status(400).json({ error: 'Invalid tag format' });
122
- return;
123
- }
124
- const image = `${MAYARA_IMAGE}:${tag}`;
125
- // Get image ID of running container
126
- let runningImageId = '';
127
- try {
128
- const { stdout } = await execAsync(`${rt} inspect sk-mayara-server --format '{{.Image}}'`);
129
- runningImageId = stdout.trim();
130
- }
131
- catch {
132
- // container not running
133
- }
134
- // Pull latest
135
- app.debug(`Checking for update: pulling ${image}`);
136
- await containers.pullImage(image);
137
- // Get image ID of pulled image
138
- let pulledImageId = '';
139
- try {
140
- const { stdout } = await execAsync(`${rt} image inspect ${image} --format '{{.Id}}'`);
141
- pulledImageId = stdout.trim();
142
- }
143
- catch {
144
- // image inspect failed
145
- }
146
- if (!runningImageId) {
147
- res.json({ updateAvailable: false, message: 'Container not running' });
148
- }
149
- else if (runningImageId === pulledImageId) {
150
- res.json({ updateAvailable: false, message: `Up to date (${tag})` });
151
- }
152
- else {
153
- res.json({ updateAvailable: true, message: `Update available for ${tag}` });
154
- }
155
+ const result = await containers.updates.checkOne(PLUGIN_ID);
156
+ res.json(result);
155
157
  }
156
158
  catch (err) {
157
- res.status(500).json({ error: err instanceof Error ? err.message : String(err) });
159
+ res.status(500).json({ error: errMsg(err) });
158
160
  }
159
161
  });
160
- router.post('/api/update', async (req, res) => {
162
+ router.post('/api/update/apply', async (req, res) => {
163
+ const containers = getContainerManager();
164
+ if (!containers) {
165
+ res.status(503).json({ error: 'signalk-container not available' });
166
+ return;
167
+ }
168
+ // Tag override from the request body, fallback to current setting,
169
+ // fallback to "latest". The body is optional — POSTing with no body
170
+ // applies whatever the user has selected in the config panel.
171
+ const body = (req.body ?? {});
172
+ const tag = (typeof body.tag === 'string' ? body.tag : undefined) ??
173
+ currentSettings?.mayaraVersion ??
174
+ 'latest';
175
+ if (!SAFE_TAG.test(tag)) {
176
+ res.status(400).json({ error: 'Invalid tag format' });
177
+ return;
178
+ }
161
179
  try {
162
- const containers = globalThis.__signalk_containerManager;
163
- if (!containers) {
164
- res.status(400).json({ error: 'signalk-container not available' });
165
- return;
180
+ app.setPluginStatus(`Pulling mayara-server:${tag}...`);
181
+ await containers.pullImage(`${MAYARA_IMAGE}:${tag}`);
182
+ app.setPluginStatus('Recreating mayara-server container...');
183
+ await containers.remove(CONTAINER_NAME);
184
+ // After remove(), the container is gone. If ensureRunning() fails
185
+ // (image pull race, port conflict, podman daemon hiccup), we have
186
+ // no way to roll back to the previous state — the old container's
187
+ // ID and config are gone. Surface a clear error so the user knows
188
+ // they need to retry the apply rather than seeing a generic 500.
189
+ try {
190
+ await containers.ensureRunning(CONTAINER_NAME, buildContainerConfig(tag));
166
191
  }
167
- const tag = req.body.tag ??
168
- currentSettings?.mayaraVersion ??
169
- 'latest';
170
- if (!SAFE_TAG.test(tag)) {
171
- res.status(400).json({ error: 'Invalid tag format' });
192
+ catch (recreateErr) {
193
+ const msg = `Container removed but recreation failed: ${errMsg(recreateErr)}. Click Update again to retry.`;
194
+ app.setPluginError(msg);
195
+ res.status(500).json({ error: msg });
172
196
  return;
173
197
  }
174
- const image = `${MAYARA_IMAGE}:${tag}`;
175
- app.setPluginStatus(`Updating mayara-server to ${image}...`);
176
- await containers.pullImage(image);
177
- await containers.stop('mayara-server');
178
- await containers.remove('mayara-server');
179
- const args = currentSettings?.mayaraArgs ?? [];
180
- await containers.ensureRunning('mayara-server', {
181
- image: MAYARA_IMAGE,
182
- tag,
183
- networkMode: 'host',
184
- command: args.length > 0 ? ['mayara-server', ...args] : undefined,
185
- restart: 'unless-stopped'
186
- });
198
+ // Persist the new tag to disk so a plugin restart doesn't roll
199
+ // back to the previous version. We update the in-memory copy
200
+ // first (for immediate consistency with /api/update/check) and
201
+ // then call app.savePluginOptions() to write through to
202
+ // ${dataDir}/plugin-config-data/mayara-server-signalk-plugin.json.
203
+ // signalk-container's update service picks up the new
204
+ // currentTag() value on the next scheduled check.
205
+ if (currentSettings) {
206
+ currentSettings.mayaraVersion = tag;
207
+ await new Promise((resolve) => {
208
+ app.savePluginOptions({ ...currentSettings }, (err) => {
209
+ if (err) {
210
+ // Non-fatal: the container is up with the new tag.
211
+ // Worst case, a plugin restart reverts to the old
212
+ // tag from the config file and the user has to
213
+ // click Update again. Log it and continue.
214
+ app.error(`Failed to persist new tag to plugin config: ${errMsg(err)}. ` +
215
+ `Container is running with mayara-server:${tag} but a plugin ` +
216
+ `restart will revert to the previous configured tag.`);
217
+ }
218
+ resolve();
219
+ });
220
+ });
221
+ }
222
+ app.setPluginStatus(`Updated to mayara-server:${tag}`);
187
223
  res.json({ success: true, tag });
188
- app.setPluginStatus(`Updated to ${tag} and running.`);
189
224
  }
190
225
  catch (err) {
191
- res.status(500).json({ error: err instanceof Error ? err.message : String(err) });
226
+ app.setPluginError(`Update failed: ${errMsg(err)}`);
227
+ res.status(500).json({ error: errMsg(err) });
192
228
  }
193
229
  });
194
- router.get('/api/gui-url', (req, res) => {
230
+ router.get('/api/gui-url', (_req, res) => {
195
231
  const host = currentSettings?.host ?? 'localhost';
196
232
  const port = currentSettings?.port ?? 6502;
197
233
  const proto = currentSettings?.secure ? 'https' : 'http';
198
234
  res.json({ url: `${proto}://${host}:${port}/gui/` });
199
235
  });
200
- router.get('/api/versions', async (req, res) => {
236
+ // Lists available release tags for the version dropdown in the
237
+ // config panel. signalk-container's update service exposes "what
238
+ // is the latest" but not "list all" — the latter belongs in the
239
+ // plugin (it knows which repo to ask). This is the only place
240
+ // mayara still talks to GitHub directly.
241
+ router.get('/api/versions', async (_req, res) => {
201
242
  try {
202
243
  const ghRes = await fetch('https://api.github.com/repos/MarineYachtRadar/mayara-server/releases?per_page=10', {
203
244
  headers: { Accept: 'application/vnd.github+json' },
@@ -209,17 +250,96 @@ module.exports = function (app) {
209
250
  }
210
251
  const releases = (await ghRes.json());
211
252
  res.json(releases
212
- .filter((r) => !r.draft)
253
+ .filter((r) => !r.draft && SAFE_TAG.test(r.tag_name))
213
254
  .map((r) => ({ tag: r.tag_name, prerelease: r.prerelease })));
214
255
  }
215
256
  catch (err) {
216
- res.status(500).json({
217
- error: err instanceof Error ? err.message : 'Unknown error'
218
- });
257
+ res.status(500).json({ error: errMsg(err) });
219
258
  }
220
259
  });
221
260
  }
222
261
  };
262
+ // ==========================================================================
263
+ // Container management
264
+ // ==========================================================================
265
+ /**
266
+ * Build a ContainerConfig for the mayara-server container with the
267
+ * given tag. Used both at startup and when applying updates so the
268
+ * two paths can never drift on ports/volumes/env/resources.
269
+ */
270
+ function buildContainerConfig(tag) {
271
+ const userArgs = currentSettings?.mayaraArgs ?? [];
272
+ const tcpPort = Number(process.env.TCPSTREAMPORT) || 8375;
273
+ const navArg = userArgs.some((a) => a === '-n' || a === '--navigation-address')
274
+ ? []
275
+ : ['-n', `tcp:127.0.0.1:${tcpPort}`];
276
+ const command = ['mayara-server', ...navArg, ...userArgs];
277
+ return {
278
+ image: MAYARA_IMAGE,
279
+ tag,
280
+ networkMode: 'host',
281
+ command,
282
+ restart: 'unless-stopped',
283
+ resources: DEFAULT_RESOURCES
284
+ };
285
+ }
286
+ /**
287
+ * Wait up to 30 seconds for signalk-container to finish runtime
288
+ * detection. Returns the container manager handle, or undefined
289
+ * if it never became ready (in which case the caller should set
290
+ * a plugin error).
291
+ */
292
+ async function waitForContainerManager(timeoutMs = 30000) {
293
+ const deadline = Date.now() + timeoutMs;
294
+ while (Date.now() < deadline) {
295
+ const containers = getContainerManager();
296
+ if (containers?.getRuntime())
297
+ return containers;
298
+ app.setPluginStatus('Waiting for container runtime detection...');
299
+ await new Promise((resolve) => setTimeout(resolve, 1000));
300
+ }
301
+ return undefined;
302
+ }
303
+ async function startManagedContainer(settings) {
304
+ const containers = await waitForContainerManager();
305
+ if (!containers) {
306
+ app.setPluginError('signalk-container plugin required for managed mode. Install it or set managedContainer=false.');
307
+ throw new Error('Container manager not available');
308
+ }
309
+ app.debug('Container runtime ready, starting mayara-server');
310
+ app.setPluginStatus('Starting mayara-server container...');
311
+ const tag = settings.mayaraVersion ?? 'latest';
312
+ const config = buildContainerConfig(tag);
313
+ // signalk-container handles its own config-change detection: when
314
+ // ensureRunning sees a config that differs from what it created the
315
+ // container with, it recreates. We no longer maintain a local hash
316
+ // file. Tag changes specifically are handled by the update service.
317
+ await containers.ensureRunning(CONTAINER_NAME, config);
318
+ // Register with the centralized update service. The service auto-
319
+ // detects whether `tag` is a semver pin (compare via GitHub releases)
320
+ // or a floating tag like `latest`/`main` (digest drift detection).
321
+ // Re-registers every plugin start, which is the supported pattern.
322
+ try {
323
+ containers.updates.register({
324
+ pluginId: PLUGIN_ID,
325
+ containerName: CONTAINER_NAME,
326
+ image: MAYARA_IMAGE,
327
+ // Function, not value: picks up live edits to the version
328
+ // setting without requiring a re-register.
329
+ currentTag: () => currentSettings?.mayaraVersion ?? 'latest',
330
+ versionSource: containers.updates.sources.githubReleases('MarineYachtRadar/mayara-server')
331
+ });
332
+ app.debug('Registered with signalk-container update service');
333
+ }
334
+ catch (err) {
335
+ // Non-fatal: the container is up, only the update checker is missing.
336
+ app.debug(`Failed to register update tracker: ${errMsg(err)}`);
337
+ }
338
+ app.debug('mayara-server container ready');
339
+ }
340
+ // ==========================================================================
341
+ // Plugin lifecycle
342
+ // ==========================================================================
223
343
  async function asyncStart(settings) {
224
344
  if (settings.managedContainer) {
225
345
  await startManagedContainer(settings);
@@ -232,14 +352,14 @@ module.exports = function (app) {
232
352
  });
233
353
  const provider = (0, radar_provider_1.createRadarProvider)(client, app);
234
354
  try {
235
- app.radarApi.register(plugin.id, {
355
+ app.radarApi.register(PLUGIN_ID, {
236
356
  name: plugin.name,
237
357
  methods: provider
238
358
  });
239
359
  app.debug('Registered as radar provider');
240
360
  }
241
361
  catch (err) {
242
- app.setPluginError(`Failed to register radar provider: ${err instanceof Error ? err.message : String(err)}`);
362
+ app.setPluginError(`Failed to register radar provider: ${errMsg(err)}`);
243
363
  return;
244
364
  }
245
365
  if (settings.managedContainer) {
@@ -257,58 +377,6 @@ module.exports = function (app) {
257
377
  }
258
378
  await connectAndDiscover(settings);
259
379
  }
260
- async function startManagedContainer(settings) {
261
- let containers;
262
- const waitDeadline = Date.now() + 30000;
263
- while (Date.now() < waitDeadline) {
264
- containers = globalThis.__signalk_containerManager;
265
- if (containers?.getRuntime())
266
- break;
267
- app.setPluginStatus('Waiting for container runtime detection...');
268
- await new Promise((resolve) => setTimeout(resolve, 1000));
269
- }
270
- if (!containers) {
271
- app.setPluginError('signalk-container plugin required for managed mode. Install it or set managedContainer=false.');
272
- throw new Error('Container manager not available');
273
- }
274
- if (!containers.getRuntime()) {
275
- app.setPluginError('No container runtime detected. Check signalk-container plugin.');
276
- throw new Error('Container runtime not detected');
277
- }
278
- app.debug('Container runtime ready, starting mayara-server');
279
- app.setPluginStatus('Starting mayara-server container...');
280
- const userArgs = settings.mayaraArgs ?? [];
281
- const tcpPort = Number(process.env.TCPSTREAMPORT) || 8375;
282
- const navArg = userArgs.some((a) => a === '-n' || a === '--navigation-address')
283
- ? []
284
- : ['-n', `tcp:127.0.0.1:${tcpPort}`];
285
- const command = ['mayara-server', ...navArg, ...userArgs];
286
- const tag = settings.mayaraVersion ?? 'latest';
287
- const configHash = JSON.stringify({ tag, command });
288
- const hashFile = `${app.getDataDirPath()}.container-hash`;
289
- let lastHash = '';
290
- try {
291
- lastHash = (0, fs_1.readFileSync)(hashFile, 'utf8');
292
- }
293
- catch {
294
- // first run
295
- }
296
- const state = await containers.getState('mayara-server');
297
- if (state !== 'missing' && configHash !== lastHash) {
298
- app.setPluginStatus('Recreating mayara-server container (config changed)...');
299
- await containers.remove('mayara-server');
300
- }
301
- app.setPluginStatus('Starting mayara-server container...');
302
- await containers.ensureRunning('mayara-server', {
303
- image: MAYARA_IMAGE,
304
- tag,
305
- networkMode: 'host',
306
- command,
307
- restart: 'unless-stopped'
308
- });
309
- (0, fs_1.writeFileSync)(hashFile, configHash);
310
- app.debug('mayara-server container ready');
311
- }
312
380
  async function connectAndDiscover(settings) {
313
381
  if (!client)
314
382
  return;
@@ -325,7 +393,7 @@ module.exports = function (app) {
325
393
  }
326
394
  catch (err) {
327
395
  isConnected = false;
328
- app.setPluginError(`Cannot connect to mayara-server: ${err instanceof Error ? err.message : String(err)}`);
396
+ app.setPluginError(`Cannot connect to mayara-server: ${errMsg(err)}`);
329
397
  const reconnectMs = (settings.reconnectInterval || 5) * 1000;
330
398
  reconnectInterval = setInterval(() => {
331
399
  void attemptReconnect(settings);
@@ -353,8 +421,8 @@ module.exports = function (app) {
353
421
  void pollForRadarChanges(settings);
354
422
  }, pollMs);
355
423
  }
356
- catch {
357
- // Still disconnected, keep trying
424
+ catch (err) {
425
+ app.debug(`Reconnect attempt failed: ${errMsg(err)}`);
358
426
  }
359
427
  }
360
428
  function updateRadars(radarIds, settings) {
@@ -404,7 +472,7 @@ module.exports = function (app) {
404
472
  }
405
473
  catch (err) {
406
474
  isConnected = false;
407
- app.setPluginError(`Lost connection: ${err instanceof Error ? err.message : String(err)}`);
475
+ app.setPluginError(`Lost connection: ${errMsg(err)}`);
408
476
  if (discoveryInterval) {
409
477
  clearInterval(discoveryInterval);
410
478
  discoveryInterval = null;
@@ -417,4 +485,7 @@ module.exports = function (app) {
417
485
  }
418
486
  return plugin;
419
487
  };
488
+ function errMsg(err) {
489
+ return err instanceof Error ? err.message : String(err);
490
+ }
420
491
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"radar-provider.js","sourceRoot":"","sources":["../src/radar-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"radar-provider.js","sourceRoot":"","sources":["../src/radar-provider.ts"],"names":[],"mappings":"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"}
package/plugin/types.d.ts CHANGED
@@ -5,22 +5,103 @@ interface BinaryStreamManager {
5
5
  export interface MayaraServerAPI extends ServerAPI {
6
6
  binaryStreamManager?: BinaryStreamManager;
7
7
  }
8
+ export type ContainerState = 'running' | 'stopped' | 'missing' | 'no-runtime';
9
+ export interface ContainerRuntimeInfo {
10
+ runtime: 'podman' | 'docker';
11
+ version: string;
12
+ isPodmanDockerShim: boolean;
13
+ }
14
+ export interface ContainerResourceLimits {
15
+ cpus?: number | null;
16
+ cpuShares?: number | null;
17
+ cpusetCpus?: string | null;
18
+ memory?: string | null;
19
+ memorySwap?: string | null;
20
+ memoryReservation?: string | null;
21
+ pidsLimit?: number | null;
22
+ oomScoreAdj?: number | null;
23
+ }
24
+ export interface ContainerConfig {
25
+ image: string;
26
+ tag: string;
27
+ ports?: Record<string, string>;
28
+ volumes?: Record<string, string>;
29
+ env?: Record<string, string>;
30
+ restart?: 'no' | 'unless-stopped' | 'always';
31
+ command?: string[];
32
+ networkMode?: string;
33
+ resources?: ContainerResourceLimits;
34
+ }
35
+ export interface ContainerInfo {
36
+ name: string;
37
+ image: string;
38
+ state: ContainerState;
39
+ }
40
+ export interface UpdateResourcesResult {
41
+ method: 'live' | 'recreated';
42
+ warnings?: string[];
43
+ }
44
+ export type UpdateReason = 'newer-version' | 'digest-drift' | 'older-than-pinned' | 'up-to-date' | 'offline' | 'unknown' | 'error';
45
+ export type UpdateTagKind = 'semver' | 'floating' | 'unknown';
46
+ export interface UpdateCheckResult {
47
+ pluginId: string;
48
+ containerName: string;
49
+ runningTag: string;
50
+ tagKind: UpdateTagKind;
51
+ currentVersion: string | null;
52
+ latestVersion: string | null;
53
+ updateAvailable: boolean;
54
+ reason: UpdateReason;
55
+ error?: string;
56
+ checkedAt: string;
57
+ lastSuccessfulCheckAt: string | null;
58
+ fromCache: boolean;
59
+ }
60
+ export interface VersionSource {
61
+ fetch: (...args: unknown[]) => Promise<unknown>;
62
+ }
63
+ export interface UpdateRegistration {
64
+ pluginId: string;
65
+ containerName: string;
66
+ image: string;
67
+ currentTag: () => string;
68
+ versionSource: VersionSource;
69
+ currentVersion?: () => Promise<string | null>;
70
+ checkInterval?: string;
71
+ }
72
+ export interface UpdateServiceApi {
73
+ register: (reg: UpdateRegistration) => void;
74
+ unregister: (pluginId: string) => void;
75
+ checkOne: (pluginId: string) => Promise<UpdateCheckResult>;
76
+ checkAll: () => Promise<UpdateCheckResult[]>;
77
+ getLastResult: (pluginId: string) => UpdateCheckResult | null;
78
+ sources: {
79
+ githubReleases: (repo: string, options?: {
80
+ allowPrerelease?: boolean;
81
+ tagPrefix?: string;
82
+ }) => VersionSource;
83
+ dockerHubTags: (image: string, options?: {
84
+ filter?: (tag: string) => boolean;
85
+ }) => VersionSource;
86
+ };
87
+ }
8
88
  export interface ContainerManagerApi {
9
- getRuntime: () => {
10
- runtime: string;
11
- version: string;
12
- } | null;
13
- ensureRunning: (name: string, config: unknown) => Promise<void>;
14
- stop: (name: string) => Promise<void>;
15
- remove: (name: string) => Promise<void>;
16
- getState: (name: string) => Promise<'running' | 'stopped' | 'missing' | 'no-runtime'>;
89
+ getRuntime: () => ContainerRuntimeInfo | null;
17
90
  pullImage: (image: string, onProgress?: (msg: string) => void) => Promise<void>;
18
91
  imageExists: (image: string) => Promise<boolean>;
19
- listContainers: () => Promise<{
20
- name: string;
21
- image: string;
22
- state: string;
23
- }[]>;
92
+ getImageDigest: (imageOrContainer: string) => Promise<string | null>;
93
+ ensureRunning: (name: string, config: ContainerConfig) => Promise<void>;
94
+ start: (name: string) => Promise<void>;
95
+ stop: (name: string) => Promise<void>;
96
+ remove: (name: string) => Promise<void>;
97
+ getState: (name: string) => Promise<ContainerState>;
98
+ listContainers: () => Promise<ContainerInfo[]>;
99
+ updateResources: (name: string, limits: ContainerResourceLimits) => Promise<UpdateResourcesResult>;
100
+ getResources: (name: string) => ContainerResourceLimits;
101
+ updates: UpdateServiceApi;
102
+ }
103
+ declare global {
104
+ var __signalk_containerManager: ContainerManagerApi | undefined;
24
105
  }
25
106
  export {};
26
107
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,UAAU,mBAAmB;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/C;AAED,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;CAC1C;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IAC7D,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/D,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAA;IACrF,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/E,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAChD,cAAc,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC,CAAA;CAChF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/public/540.js CHANGED
@@ -1,2 +1,2 @@
1
1
  /*! For license information please see 540.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[]).push([[540],{869(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),c=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),l=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),d=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,m={};function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function S(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=b.prototype;var E=S.prototype=new v;E.constructor=S,_(E,b.prototype),E.isPureReactComponent=!0;var g=Array.isArray;function w(){}var k={H:null,A:null,T:null,S:null},H=Object.prototype.hasOwnProperty;function j(e,t,r){var o=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==o?o:null,props:r}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var R=/\/+/g;function $(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function T(e,t,o,u,a){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var c,s,f=!1;if(null===e)f=!0;else switch(i){case"bigint":case"string":case"number":f=!0;break;case"object":switch(e.$$typeof){case n:case r:f=!0;break;case p:return T((f=e._init)(e._payload),t,o,u,a)}}if(f)return a=a(e),f=""===u?"."+$(e,0):u,g(a)?(o="",null!=f&&(o=f.replace(R,"$&/")+"/"),T(a,t,o,"",function(e){return e})):null!=a&&(C(a)&&(c=a,s=o+(null==a.key||e&&e.key===a.key?"":(""+a.key).replace(R,"$&/")+"/")+f,a=j(c.type,s,c.props)),t.push(a)),1;f=0;var l,y=""===u?".":u+":";if(g(e))for(var h=0;h<e.length;h++)f+=T(u=e[h],t,o,i=y+$(u,h),a);else if("function"==typeof(h=null===(l=e)||"object"!=typeof l?null:"function"==typeof(l=d&&l[d]||l["@@iterator"])?l:null))for(e=h.call(e),h=0;!(u=e.next()).done;)f+=T(u=u.value,t,o,i=y+$(u,h++),a);else if("object"===i){if("function"==typeof e.then)return T(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(w,w):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,o,u,a);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return f}function x(e,t,n){if(null==e)return e;var r=[],o=0;return T(e,r,"","",function(e){return t.call(n,e,o++)}),r}function A(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var O="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},I={map:x,forEach:function(e,t,n){x(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return x(e,function(){t++}),t},toArray:function(e){return x(e,function(e){return e})||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=y,t.Children=I,t.Component=b,t.Fragment=o,t.Profiler=a,t.PureComponent=S,t.StrictMode=u,t.Suspense=f,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=k,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return k.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=_({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)!H.call(t,u)||"key"===u||"__self"===u||"__source"===u||"ref"===u&&void 0===t.ref||(r[u]=t[u]);var u=arguments.length-2;if(1===u)r.children=n;else if(1<u){for(var a=Array(u),i=0;i<u;i++)a[i]=arguments[i+2];r.children=a}return j(e.type,o,r)},t.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:i,_context:e},e},t.createElement=function(e,t,n){var r,o={},u=null;if(null!=t)for(r in void 0!==t.key&&(u=""+t.key),t)H.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(o[r]=t[r]);var a=arguments.length-2;if(1===a)o.children=n;else if(1<a){for(var i=Array(a),c=0;c<a;c++)i[c]=arguments[c+2];o.children=i}if(e&&e.defaultProps)for(r in a=e.defaultProps)void 0===o[r]&&(o[r]=a[r]);return j(e,u,o)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:A}},t.memo=function(e,t){return{$$typeof:l,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=k.T,n={};k.T=n;try{var r=e(),o=k.S;null!==o&&o(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(w,O)}catch(e){O(e)}finally{null!==t&&null!==n.types&&(t.types=n.types),k.T=t}},t.unstable_useCacheRefresh=function(){return k.H.useCacheRefresh()},t.use=function(e){return k.H.use(e)},t.useActionState=function(e,t,n){return k.H.useActionState(e,t,n)},t.useCallback=function(e,t){return k.H.useCallback(e,t)},t.useContext=function(e){return k.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return k.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return k.H.useEffect(e,t)},t.useEffectEvent=function(e){return k.H.useEffectEvent(e)},t.useId=function(){return k.H.useId()},t.useImperativeHandle=function(e,t,n){return k.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return k.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return k.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return k.H.useMemo(e,t)},t.useOptimistic=function(e,t){return k.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return k.H.useReducer(e,t,n)},t.useRef=function(e){return k.H.useRef(e)},t.useState=function(e){return k.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return k.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return k.H.useTransition()},t.version="19.2.4"},540(e,t,n){e.exports=n(869)}}]);
2
+ "use strict";(self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[]).push([[540],{869(e,t){var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),u=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),i=Symbol.for("react.consumer"),c=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),f=Symbol.for("react.suspense"),l=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),y=Symbol.for("react.activity"),d=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},_=Object.assign,m={};function b(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}function v(){}function S(e,t,n){this.props=e,this.context=t,this.refs=m,this.updater=n||h}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=b.prototype;var E=S.prototype=new v;E.constructor=S,_(E,b.prototype),E.isPureReactComponent=!0;var g=Array.isArray;function w(){}var k={H:null,A:null,T:null,S:null},H=Object.prototype.hasOwnProperty;function j(e,t,r){var o=r.ref;return{$$typeof:n,type:e,key:t,ref:void 0!==o?o:null,props:r}}function C(e){return"object"==typeof e&&null!==e&&e.$$typeof===n}var R=/\/+/g;function $(e,t){return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36);var n,r}function T(e,t,o,u,a){var i=typeof e;"undefined"!==i&&"boolean"!==i||(e=null);var c,s,f=!1;if(null===e)f=!0;else switch(i){case"bigint":case"string":case"number":f=!0;break;case"object":switch(e.$$typeof){case n:case r:f=!0;break;case p:return T((f=e._init)(e._payload),t,o,u,a)}}if(f)return a=a(e),f=""===u?"."+$(e,0):u,g(a)?(o="",null!=f&&(o=f.replace(R,"$&/")+"/"),T(a,t,o,"",function(e){return e})):null!=a&&(C(a)&&(c=a,s=o+(null==a.key||e&&e.key===a.key?"":(""+a.key).replace(R,"$&/")+"/")+f,a=j(c.type,s,c.props)),t.push(a)),1;f=0;var l,y=""===u?".":u+":";if(g(e))for(var h=0;h<e.length;h++)f+=T(u=e[h],t,o,i=y+$(u,h),a);else if("function"==typeof(h=null===(l=e)||"object"!=typeof l?null:"function"==typeof(l=d&&l[d]||l["@@iterator"])?l:null))for(e=h.call(e),h=0;!(u=e.next()).done;)f+=T(u=u.value,t,o,i=y+$(u,h++),a);else if("object"===i){if("function"==typeof e.then)return T(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(w,w):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(e),t,o,u,a);throw t=String(e),Error("Objects are not valid as a React child (found: "+("[object Object]"===t?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return f}function x(e,t,n){if(null==e)return e;var r=[],o=0;return T(e,r,"","",function(e){return t.call(n,e,o++)}),r}function A(e){if(-1===e._status){var t=e._result;(t=t()).then(function(t){0!==e._status&&-1!==e._status||(e._status=1,e._result=t)},function(t){0!==e._status&&-1!==e._status||(e._status=2,e._result=t)}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var O="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof process&&"function"==typeof process.emit)return void process.emit("uncaughtException",e);console.error(e)},I={map:x,forEach:function(e,t,n){x(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return x(e,function(){t++}),t},toArray:function(e){return x(e,function(e){return e})||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};t.Activity=y,t.Children=I,t.Component=b,t.Fragment=o,t.Profiler=a,t.PureComponent=S,t.StrictMode=u,t.Suspense=f,t.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=k,t.__COMPILER_RUNTIME={__proto__:null,c:function(e){return k.H.useMemoCache(e)}},t.cache=function(e){return function(){return e.apply(null,arguments)}},t.cacheSignal=function(){return null},t.cloneElement=function(e,t,n){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var r=_({},e.props),o=e.key;if(null!=t)for(u in void 0!==t.key&&(o=""+t.key),t)!H.call(t,u)||"key"===u||"__self"===u||"__source"===u||"ref"===u&&void 0===t.ref||(r[u]=t[u]);var u=arguments.length-2;if(1===u)r.children=n;else if(1<u){for(var a=Array(u),i=0;i<u;i++)a[i]=arguments[i+2];r.children=a}return j(e.type,o,r)},t.createContext=function(e){return(e={$$typeof:c,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:i,_context:e},e},t.createElement=function(e,t,n){var r,o={},u=null;if(null!=t)for(r in void 0!==t.key&&(u=""+t.key),t)H.call(t,r)&&"key"!==r&&"__self"!==r&&"__source"!==r&&(o[r]=t[r]);var a=arguments.length-2;if(1===a)o.children=n;else if(1<a){for(var i=Array(a),c=0;c<a;c++)i[c]=arguments[c+2];o.children=i}if(e&&e.defaultProps)for(r in a=e.defaultProps)void 0===o[r]&&(o[r]=a[r]);return j(e,u,o)},t.createRef=function(){return{current:null}},t.forwardRef=function(e){return{$$typeof:s,render:e}},t.isValidElement=C,t.lazy=function(e){return{$$typeof:p,_payload:{_status:-1,_result:e},_init:A}},t.memo=function(e,t){return{$$typeof:l,type:e,compare:void 0===t?null:t}},t.startTransition=function(e){var t=k.T,n={};k.T=n;try{var r=e(),o=k.S;null!==o&&o(n,r),"object"==typeof r&&null!==r&&"function"==typeof r.then&&r.then(w,O)}catch(e){O(e)}finally{null!==t&&null!==n.types&&(t.types=n.types),k.T=t}},t.unstable_useCacheRefresh=function(){return k.H.useCacheRefresh()},t.use=function(e){return k.H.use(e)},t.useActionState=function(e,t,n){return k.H.useActionState(e,t,n)},t.useCallback=function(e,t){return k.H.useCallback(e,t)},t.useContext=function(e){return k.H.useContext(e)},t.useDebugValue=function(){},t.useDeferredValue=function(e,t){return k.H.useDeferredValue(e,t)},t.useEffect=function(e,t){return k.H.useEffect(e,t)},t.useEffectEvent=function(e){return k.H.useEffectEvent(e)},t.useId=function(){return k.H.useId()},t.useImperativeHandle=function(e,t,n){return k.H.useImperativeHandle(e,t,n)},t.useInsertionEffect=function(e,t){return k.H.useInsertionEffect(e,t)},t.useLayoutEffect=function(e,t){return k.H.useLayoutEffect(e,t)},t.useMemo=function(e,t){return k.H.useMemo(e,t)},t.useOptimistic=function(e,t){return k.H.useOptimistic(e,t)},t.useReducer=function(e,t,n){return k.H.useReducer(e,t,n)},t.useRef=function(e){return k.H.useRef(e)},t.useState=function(e){return k.H.useState(e)},t.useSyncExternalStore=function(e,t,n){return k.H.useSyncExternalStore(e,t,n)},t.useTransition=function(){return k.H.useTransition()},t.version="19.2.5"},540(e,t,n){e.exports=n(869)}}]);
package/public/805.js CHANGED
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[]).push([[805],{805(e,t,a){a.r(t),a.d(t,{default:()=>i});var n=a(231);const r={root:{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',color:"#333",padding:"16px 0"},sectionTitle:{fontSize:13,fontWeight:600,color:"#888",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:10,marginTop:24},btn:{display:"inline-flex",alignItems:"center",gap:8,padding:"8px 16px",border:"none",borderRadius:6,fontSize:13,fontWeight:600,cursor:"pointer"},btnPrimary:{background:"#3b82f6",color:"#fff"},btnDisabled:{opacity:.5,cursor:"not-allowed"},status:{marginTop:8,fontSize:12,minHeight:18},card:{display:"flex",alignItems:"center",gap:14,padding:"14px 18px",background:"#f8f9fa",border:"1px solid #e0e0e0",borderRadius:10,marginBottom:12},cardIcon:{width:44,height:44,borderRadius:10,display:"flex",alignItems:"center",justifyContent:"center",fontSize:20,fontWeight:700,flexShrink:0},cardInfo:{flex:1},cardTitle:{fontSize:15,fontWeight:600,color:"#333"},cardMeta:{fontSize:12,color:"#888"},stateIndicator:{width:10,height:10,borderRadius:"50%",flexShrink:0},fieldRow:{display:"flex",alignItems:"center",gap:12,marginBottom:10},label:{fontSize:13,fontWeight:500,color:"#555",width:180,flexShrink:0},select:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",minWidth:200},input:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",width:200},inputSmall:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",width:80},checkbox:{width:16,height:16,accentColor:"#3b82f6"},hint:{fontSize:11,color:"#aaa",marginLeft:8},empty:{textAlign:"center",padding:"30px 16px",color:"#999",fontSize:13},tag:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:10,fontWeight:600,marginLeft:8},tagPre:{background:"#fef3c7",color:"#92400e"},tagLatest:{background:"#dcfce7",color:"#166534"},statsGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:10,marginBottom:12},statCard:{padding:"12px 16px",background:"#f8f9fa",border:"1px solid #e0e0e0",borderRadius:10,textAlign:"center"},statValue:{fontSize:22,fontWeight:700,color:"#333"},statLabel:{fontSize:11,color:"#888",marginTop:2}};function l({title:e,children:t}){const[a,l]=(0,n.useState)(!1);return n.createElement("div",null,n.createElement("div",{style:{...r.sectionTitle,cursor:"pointer",userSelect:"none",display:"flex",alignItems:"center",gap:6},onClick:()=>l(!a)},n.createElement("span",{style:{fontSize:10,transition:"transform 0.15s",transform:a?"rotate(90deg)":"rotate(0deg)"}},"▶"),e),a&&n.createElement("div",{style:{marginBottom:16}},t))}function i({configuration:e,save:t}){const a=e||{},[i,o]=(0,n.useState)(!1!==a.managedContainer),[c,s]=(0,n.useState)(a.mayaraVersion||"latest"),[d,m]=(0,n.useState)((a.mayaraArgs||[]).join(" ")),[p,g]=(0,n.useState)(a.host||"localhost"),[u,f]=(0,n.useState)(a.port||6502),[y,b]=(0,n.useState)(a.secure||!1),[h,v]=(0,n.useState)(a.discoveryPollInterval||10),[E,k]=(0,n.useState)(a.reconnectInterval||5),[S,x]=(0,n.useState)([]),[C,w]=(0,n.useState)(!1),[I,R]=(0,n.useState)(null),[T,z]=(0,n.useState)(!0),[P,j]=(0,n.useState)(""),[W,A]=(0,n.useState)(!1),[U,B]=(0,n.useState)(!1),[F,N]=(0,n.useState)(!1),_=(0,n.useCallback)(async()=>{w(!0);try{const e=await fetch("/plugins/mayara-server-signalk-plugin/api/versions");e.ok&&x(await e.json())}catch{}w(!1)},[]),L=(0,n.useCallback)(async()=>{try{const e=await fetch("/plugins/mayara-server-signalk-plugin/status");e.ok?R(await e.json()):R({connected:!1,radars:[]})}catch{R({connected:!1,radars:[]})}z(!1)},[]);(0,n.useEffect)(()=>{_(),L();const e=setInterval(L,5e3);return()=>clearInterval(e)},[_,L]);const[M,D]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!M&&I?.container?.image){const e=I.container.image.split(":")[1];e&&(s(e),D(!0))}},[I,M]);const O=I&&I.connected,V=I?I.radars.length:0,H=I?.container?.state,G=(I?.container?.image||"").split(":")[1]||"unknown",J=(!(S.length>0&&"latest"===c)&&S.length>0&&S.some(e=>e.tag===c),S.filter(e=>!e.prerelease).slice(0,5)),$=S.filter(e=>e.prerelease).slice(0,3);return n.createElement("div",{style:r.root},n.createElement("div",{style:r.sectionTitle},"mayara-server Status"),T?n.createElement("div",{style:r.empty},"Checking connection..."):O?n.createElement(n.Fragment,null,n.createElement("div",{style:r.card},n.createElement("div",{style:{...r.cardIcon,background:"#1e40af",color:"#fff"}},"R"),n.createElement("div",{style:r.cardInfo},n.createElement("div",{style:r.cardTitle},"mayara-server"),n.createElement("div",{style:r.cardMeta},p,":",u," · ",V," radar",1!==V?"s":""," · ",G)),n.createElement("div",{style:{...r.stateIndicator,background:"#10b981"},title:"Connected"})),V>0&&n.createElement("div",{style:r.statsGrid},I.radars.map(e=>{const t=(I.spokeForwarders||[]).find(t=>t.radarId===e);return n.createElement("div",{key:e,style:r.statCard},n.createElement("div",{style:r.statValue},n.createElement("div",{style:{...r.stateIndicator,background:t&&t.connected?"#10b981":"#f59e0b",display:"inline-block",marginRight:6}})),n.createElement("div",{style:r.statLabel},e))}))):n.createElement("div",{style:r.card},n.createElement("div",{style:{...r.cardIcon,background:"#fef2f2",color:"#ef4444"}},"R"),n.createElement("div",{style:r.cardInfo},n.createElement("div",{style:r.cardTitle},"mayara-server"),n.createElement("div",{style:r.cardMeta},"Not connected",i?" — waiting for container":` — check ${p}:${u}`)),n.createElement("div",{style:{...r.stateIndicator,background:"#ef4444"}})),n.createElement("div",{style:r.sectionTitle},"Container"),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Managed container"),n.createElement("input",{type:"checkbox",style:r.checkbox,checked:i,onChange:e=>o(e.target.checked)}),n.createElement("span",{style:r.hint},i?"signalk-container manages mayara-server":"Connect to external instance")),i&&n.createElement(n.Fragment,null,n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Image version"),n.createElement("select",{style:r.select,value:c,onChange:e=>s(e.target.value)},n.createElement("option",{value:"latest"},"latest (recommended)"),n.createElement("option",{value:"main"},"main (development)"),$.map(e=>n.createElement("option",{key:e.tag,value:e.tag},e.tag," (pre-release)")),J.map((e,t)=>n.createElement("option",{key:e.tag,value:e.tag},e.tag,0===t?" (current stable)":""))),C&&n.createElement("span",{style:r.hint},"loading..."),n.createElement("button",{style:{...r.btn,...r.btnPrimary,padding:"4px 10px",fontSize:11},onClick:_,title:"Refresh available versions"},"↻"),i&&n.createElement(n.Fragment,null,n.createElement("button",{style:{...r.btn,background:"#6b7280",color:"#fff",padding:"4px 12px",fontSize:11,...F?r.btnDisabled:{}},onClick:async()=>{N(!0),j("Pulling latest image to check for updates..."),A(!1);try{const e=await fetch("/plugins/mayara-server-signalk-plugin/api/check-update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tag:c})}),t=await e.json();e.ok?(j(t.updateAvailable?"⚠️ "+t.message:"✅ "+t.message),A(!1)):(j("Check failed: "+(t.error||e.statusText)),A(!0))}catch(e){j("Check failed: "+e.message),A(!0)}N(!1)},disabled:F||U,title:"Pull latest image to check for updates"},F?"Checking...":"Check"),"running"===H&&n.createElement("button",{style:{...r.btn,background:"#f59e0b",color:"#fff",padding:"4px 12px",fontSize:11,...U?r.btnDisabled:{}},onClick:async()=>{B(!0),j("Pulling image, stopping and recreating container..."),A(!1);try{const e=await fetch("/plugins/mayara-server-signalk-plugin/api/update",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tag:c})});if(e.ok){const t=await e.json();t.tag&&s(t.tag),j("Updated! Save config to apply.")}else{const t=await e.json();j("Update failed: "+(t.error||e.statusText)),A(!0)}}catch(e){j("Update failed: "+e.message),A(!0)}B(!1)},disabled:U||F,title:"Pull selected version, stop and recreate container"},U?"Updating...":"Update"))),n.createElement(l,{title:"Advanced"},n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Arguments"),n.createElement("input",{style:{...r.input,width:300},placeholder:"--brand furuno --interface eth0",value:d,onChange:e=>m(e.target.value)}),n.createElement("span",{style:r.hint},"limit brand/interface, --emulator, etc.")))),n.createElement(l,{title:"Connection"},n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Host"),n.createElement("input",{style:{...r.input,...i?{opacity:.5}:{}},value:i?"127.0.0.1":p,onChange:e=>g(e.target.value),disabled:i}),i&&n.createElement("span",{style:r.hint},"auto (container runs locally)")),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Port"),n.createElement("input",{style:r.inputSmall,type:"number",value:u,onChange:e=>f(Number(e.target.value))})),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Use HTTPS/WSS"),n.createElement("input",{type:"checkbox",style:r.checkbox,checked:y,onChange:e=>b(e.target.checked)})),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Discovery interval (s)"),n.createElement("input",{style:r.inputSmall,type:"number",value:h,onChange:e=>v(Number(e.target.value))})),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Reconnect interval (s)"),n.createElement("input",{style:r.inputSmall,type:"number",value:E,onChange:e=>k(Number(e.target.value))}))),P&&n.createElement("div",{style:{...r.status,color:W?"#ef4444":"#10b981",marginTop:16}},P),n.createElement("div",{style:{marginTop:24}},n.createElement("button",{style:{...r.btn,...r.btnPrimary},onClick:()=>{const e=d.trim()?d.trim().split(/\s+/):[];t({managedContainer:i,mayaraVersion:c,mayaraArgs:e,host:i?"127.0.0.1":p,port:u,secure:y,discoveryPollInterval:h,reconnectInterval:E}),j("Saved! Plugin will restart."),A(!1)}},"Save Configuration")))}}}]);
1
+ "use strict";(self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[]).push([[805],{805(e,t,a){a.r(t),a.d(t,{default:()=>i});var n=a(231);const r={root:{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',color:"#333",padding:"16px 0"},sectionTitle:{fontSize:13,fontWeight:600,color:"#888",textTransform:"uppercase",letterSpacing:"0.05em",marginBottom:10,marginTop:24},btn:{display:"inline-flex",alignItems:"center",gap:8,padding:"8px 16px",border:"none",borderRadius:6,fontSize:13,fontWeight:600,cursor:"pointer"},btnPrimary:{background:"#3b82f6",color:"#fff"},btnDisabled:{opacity:.5,cursor:"not-allowed"},status:{marginTop:8,fontSize:12,minHeight:18},card:{display:"flex",alignItems:"center",gap:14,padding:"14px 18px",background:"#f8f9fa",border:"1px solid #e0e0e0",borderRadius:10,marginBottom:12},cardIcon:{width:44,height:44,borderRadius:10,display:"flex",alignItems:"center",justifyContent:"center",fontSize:20,fontWeight:700,flexShrink:0},cardInfo:{flex:1},cardTitle:{fontSize:15,fontWeight:600,color:"#333"},cardMeta:{fontSize:12,color:"#888"},stateIndicator:{width:10,height:10,borderRadius:"50%",flexShrink:0},fieldRow:{display:"flex",alignItems:"center",gap:12,marginBottom:10},label:{fontSize:13,fontWeight:500,color:"#555",width:180,flexShrink:0},select:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",minWidth:200},input:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",width:200},inputSmall:{padding:"6px 10px",borderRadius:6,border:"1px solid #ccc",fontSize:13,background:"#fff",color:"#333",width:80},checkbox:{width:16,height:16,accentColor:"#3b82f6"},hint:{fontSize:11,color:"#aaa",marginLeft:8},empty:{textAlign:"center",padding:"30px 16px",color:"#999",fontSize:13},tag:{display:"inline-block",padding:"2px 8px",borderRadius:4,fontSize:10,fontWeight:600,marginLeft:8},tagPre:{background:"#fef3c7",color:"#92400e"},tagLatest:{background:"#dcfce7",color:"#166534"},statsGrid:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(140px, 1fr))",gap:10,marginBottom:12},statCard:{padding:"12px 16px",background:"#f8f9fa",border:"1px solid #e0e0e0",borderRadius:10,textAlign:"center"},statValue:{fontSize:22,fontWeight:700,color:"#333"},statLabel:{fontSize:11,color:"#888",marginTop:2}};function l({title:e,children:t}){const[a,l]=(0,n.useState)(!1);return n.createElement("div",null,n.createElement("div",{style:{...r.sectionTitle,cursor:"pointer",userSelect:"none",display:"flex",alignItems:"center",gap:6},onClick:()=>l(!a)},n.createElement("span",{style:{fontSize:10,transition:"transform 0.15s",transform:a?"rotate(90deg)":"rotate(0deg)"}},"▶"),e),a&&n.createElement("div",{style:{marginBottom:16}},t))}function i({configuration:e,save:t}){const a=e||{},[i,o]=(0,n.useState)(!1!==a.managedContainer),[s,c]=(0,n.useState)(a.mayaraVersion||"latest"),[d,u]=(0,n.useState)((a.mayaraArgs||[]).join(" ")),[m,p]=(0,n.useState)(a.host||"localhost"),[g,f]=(0,n.useState)(a.port||6502),[y,b]=(0,n.useState)(a.secure||!1),[h,v]=(0,n.useState)(a.discoveryPollInterval||10),[k,E]=(0,n.useState)(a.reconnectInterval||5),[S,x]=(0,n.useState)([]),[w,C]=(0,n.useState)(!1),[I,R]=(0,n.useState)(null),[T,$]=(0,n.useState)(!0),[z,P]=(0,n.useState)(""),[M,U]=(0,n.useState)(!1),[j,A]=(0,n.useState)(!1),[W,B]=(0,n.useState)(!1),D=(0,n.useCallback)(async()=>{C(!0);try{const e=await fetch("/plugins/mayara-server-signalk-plugin/api/versions");e.ok&&x(await e.json())}catch{}C(!1)},[]),F=(0,n.useCallback)(async()=>{try{const e=await fetch("/plugins/mayara-server-signalk-plugin/status");e.ok?R(await e.json()):R({connected:!1,radars:[]})}catch{R({connected:!1,radars:[]})}$(!1)},[]);(0,n.useEffect)(()=>{D(),F();const e=setInterval(F,5e3);return()=>clearInterval(e)},[D,F]);const[V,_]=(0,n.useState)(!1);(0,n.useEffect)(()=>{if(!V&&I?.container?.image){const e=I.container.image.split(":")[1];e&&(c(e),_(!0))}},[I,V]);const L=I&&I.connected,N=I?I.radars.length:0,O=I?.container?.state,H=(I?.container?.image||"").split(":")[1]||"unknown",G=(!(S.length>0&&"latest"===s)&&S.length>0&&S.some(e=>e.tag===s),S.filter(e=>!e.prerelease).slice(0,5)),J=S.filter(e=>e.prerelease).slice(0,3);return n.createElement("div",{style:r.root},n.createElement("div",{style:r.sectionTitle},"mayara-server Status"),T?n.createElement("div",{style:r.empty},"Checking connection..."):L?n.createElement(n.Fragment,null,n.createElement("div",{style:r.card},n.createElement("div",{style:{...r.cardIcon,background:"#1e40af",color:"#fff"}},"R"),n.createElement("div",{style:r.cardInfo},n.createElement("div",{style:r.cardTitle},"mayara-server"),n.createElement("div",{style:r.cardMeta},m,":",g," · ",N," radar",1!==N?"s":""," · ",H)),n.createElement("div",{style:{...r.stateIndicator,background:"#10b981"},title:"Connected"})),N>0&&n.createElement("div",{style:r.statsGrid},I.radars.map(e=>{const t=(I.spokeForwarders||[]).find(t=>t.radarId===e);return n.createElement("div",{key:e,style:r.statCard},n.createElement("div",{style:r.statValue},n.createElement("div",{style:{...r.stateIndicator,background:t&&t.connected?"#10b981":"#f59e0b",display:"inline-block",marginRight:6}})),n.createElement("div",{style:r.statLabel},e))}))):n.createElement("div",{style:r.card},n.createElement("div",{style:{...r.cardIcon,background:"#fef2f2",color:"#ef4444"}},"R"),n.createElement("div",{style:r.cardInfo},n.createElement("div",{style:r.cardTitle},"mayara-server"),n.createElement("div",{style:r.cardMeta},"Not connected",i?" — waiting for container":` — check ${m}:${g}`)),n.createElement("div",{style:{...r.stateIndicator,background:"#ef4444"}})),n.createElement("div",{style:r.sectionTitle},"Container"),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Managed container"),n.createElement("input",{type:"checkbox",style:r.checkbox,checked:i,onChange:e=>o(e.target.checked)}),n.createElement("span",{style:r.hint},i?"signalk-container manages mayara-server":"Connect to external instance")),i&&n.createElement(n.Fragment,null,n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Image version"),n.createElement("select",{style:r.select,value:s,onChange:e=>c(e.target.value)},n.createElement("option",{value:"latest"},"latest (recommended)"),n.createElement("option",{value:"main"},"main (development)"),J.map(e=>n.createElement("option",{key:e.tag,value:e.tag},e.tag," (pre-release)")),G.map((e,t)=>n.createElement("option",{key:e.tag,value:e.tag},e.tag,0===t?" (current stable)":""))),w&&n.createElement("span",{style:r.hint},"loading..."),n.createElement("button",{style:{...r.btn,...r.btnPrimary,padding:"4px 10px",fontSize:11},onClick:D,title:"Refresh available versions"},"↻"),i&&n.createElement(n.Fragment,null,n.createElement("button",{style:{...r.btn,background:"#6b7280",color:"#fff",padding:"4px 12px",fontSize:11,...W?r.btnDisabled:{}},onClick:async()=>{B(!0),P("Checking for updates..."),U(!1);try{const e=await fetch("/plugins/mayara-server-signalk-plugin/api/update/check"),t=await e.json();if(e.ok){const e=function(e){const{runningTag:t,tagKind:a,currentVersion:n,latestVersion:r,updateAvailable:l,reason:i,fromCache:o,lastSuccessfulCheckAt:s}=e||{};return"offline"===i?o&&s?`Offline — last checked ${function(e){try{const t=new Date(e).getTime(),a=Math.max(0,Math.floor((Date.now()-t)/1e3));if(a<5)return"just now";if(a<60)return`${a}s ago`;const n=Math.floor(a/60);if(n<60)return`${n}m ago`;const r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}catch{return e}}(s)}: ${l?"update available":"up to date"}`:"Offline — never checked yet":"newer-version"===i?`Update available: ${n} → ${r}`:"digest-drift"===i?`Image rebuild available for :${t}${r?` (latest stable: ${r})`:""}`:"up-to-date"===i?"floating"===a&&r?`Up to date with :${t} (latest stable: ${r})`:`Up to date (${n||t})`:"older-than-pinned"===i?`Pinned to ${n}; latest stable is ${r}`:"error"===i?`Check error: ${e.error||"unknown"}`:`State: ${i||"unknown"}`}(t);"offline"===t.reason?(P("📡 "+e),U(!1)):t.updateAvailable?(P("⚠️ "+e),U(!1)):(P("✅ "+e),U(!1))}else P("Check failed: "+(t.error||e.statusText)),U(!0)}catch(e){P("Check failed: "+e.message),U(!0)}B(!1)},disabled:W||j,title:"Pull latest image to check for updates"},W?"Checking...":"Check"),"running"===O&&n.createElement("button",{style:{...r.btn,background:"#f59e0b",color:"#fff",padding:"4px 12px",fontSize:11,...j?r.btnDisabled:{}},onClick:async()=>{A(!0),P("Pulling image, stopping and recreating container..."),U(!1);try{const e=await fetch("/plugins/mayara-server-signalk-plugin/api/update/apply",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tag:s})});if(e.ok){const t=await e.json();t.tag&&c(t.tag),P("Updated! Save config to apply.")}else{const t=await e.json();P("Update failed: "+(t.error||e.statusText)),U(!0)}}catch(e){P("Update failed: "+e.message),U(!0)}A(!1)},disabled:j||W,title:"Pull selected version, stop and recreate container"},j?"Updating...":"Update"))),n.createElement(l,{title:"Advanced"},n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Arguments"),n.createElement("input",{style:{...r.input,width:300},placeholder:"--brand furuno --interface eth0",value:d,onChange:e=>u(e.target.value)}),n.createElement("span",{style:r.hint},"limit brand/interface, --emulator, etc.")))),n.createElement(l,{title:"Connection"},n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Host"),n.createElement("input",{style:{...r.input,...i?{opacity:.5}:{}},value:i?"127.0.0.1":m,onChange:e=>p(e.target.value),disabled:i}),i&&n.createElement("span",{style:r.hint},"auto (container runs locally)")),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Port"),n.createElement("input",{style:r.inputSmall,type:"number",value:g,onChange:e=>f(Number(e.target.value))})),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Use HTTPS/WSS"),n.createElement("input",{type:"checkbox",style:r.checkbox,checked:y,onChange:e=>b(e.target.checked)})),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Discovery interval (s)"),n.createElement("input",{style:r.inputSmall,type:"number",value:h,onChange:e=>v(Number(e.target.value))})),n.createElement("div",{style:r.fieldRow},n.createElement("span",{style:r.label},"Reconnect interval (s)"),n.createElement("input",{style:r.inputSmall,type:"number",value:k,onChange:e=>E(Number(e.target.value))}))),z&&n.createElement("div",{style:{...r.status,color:M?"#ef4444":"#10b981",marginTop:16}},z),n.createElement("div",{style:{marginTop:24}},n.createElement("button",{style:{...r.btn,...r.btnPrimary},onClick:()=>{const e=d.trim()?d.trim().split(/\s+/):[];t({managedContainer:i,mayaraVersion:s,mayaraArgs:e,host:i?"127.0.0.1":m,port:g,secure:y,discoveryPollInterval:h,reconnectInterval:k}),P("Saved! Plugin will restart."),U(!1)}},"Save Configuration")))}}}]);
Binary file
package/public/main.js CHANGED
@@ -1 +1 @@
1
- (()=>{var e,r,t={316(){}},a={};function n(e){var r=a[e];if(void 0!==r)return r.exports;var o=a[e]={exports:{}};return t[e](o,o.exports,n),o.exports}n.m=t,n.c=a,n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((r,t)=>(n.f[t](e,r),r),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@marineyachtradar/signalk-plugin:",n.l=(t,a,o,i)=>{if(e[t])e[t].push(a);else{var l,c;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var p=s[u];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==r+o){l=p;break}}l||(c=!0,(l=document.createElement("script")).charset="utf-8",n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",r+o),l.src=t),e[t]=[a];var d=(r,a)=>{l.onerror=l.onload=null,clearTimeout(f);var n=e[t];if(delete e[t],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach(e=>e(a)),r)return r(a)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=d.bind(null,l.onerror),l.onload=d.bind(null,l.onload),c&&document.head.appendChild(l)}},(()=>{n.S={};var e={},r={};n.I=(t,a)=>{a||(a=[]);var o=r[t];if(o||(o=r[t]={}),!(a.indexOf(o)>=0)){if(a.push(o),e[t])return e[t];n.o(n.S,t)||(n.S[t]={});var i=n.S[t],l="@marineyachtradar/signalk-plugin",c=[];return"default"===t&&((e,r,t,a)=>{var o=i[e]=i[e]||{},c=o[r];(!c||!c.loaded&&(1!=!c.eager?a:l>c.from))&&(o[r]={get:()=>n.e(540).then(()=>()=>n(540)),from:l,eager:!1})})("react","19.2.4"),e[t]=c.length?Promise.all(c).then(()=>e[t]=1):1}}})(),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={792:0};n.f.j=(r,t)=>{var a=n.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else{var o=new Promise((t,n)=>a=e[r]=[t,n]);t.push(a[2]=o);var i=n.p+n.u(r),l=new Error;n.l(i,t=>{if(n.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,a[1](l)}},"chunk-"+r,r)}};var r=(r,t)=>{var a,o,[i,l,c]=t,s=0;if(i.some(r=>0!==e[r])){for(a in l)n.o(l,a)&&(n.m[a]=l[a]);c&&c(n)}for(r&&r(t);s<i.length;s++)o=i[s],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),n(316)})();
1
+ (()=>{var e,r,t={316(){}},a={};function n(e){var r=a[e];if(void 0!==r)return r.exports;var o=a[e]={exports:{}};return t[e](o,o.exports,n),o.exports}n.m=t,n.c=a,n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((r,t)=>(n.f[t](e,r),r),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@marineyachtradar/signalk-plugin:",n.l=(t,a,o,i)=>{if(e[t])e[t].push(a);else{var l,c;if(void 0!==o)for(var s=document.getElementsByTagName("script"),u=0;u<s.length;u++){var p=s[u];if(p.getAttribute("src")==t||p.getAttribute("data-webpack")==r+o){l=p;break}}l||(c=!0,(l=document.createElement("script")).charset="utf-8",n.nc&&l.setAttribute("nonce",n.nc),l.setAttribute("data-webpack",r+o),l.src=t),e[t]=[a];var d=(r,a)=>{l.onerror=l.onload=null,clearTimeout(f);var n=e[t];if(delete e[t],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach(e=>e(a)),r)return r(a)},f=setTimeout(d.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=d.bind(null,l.onerror),l.onload=d.bind(null,l.onload),c&&document.head.appendChild(l)}},(()=>{n.S={};var e={},r={};n.I=(t,a)=>{a||(a=[]);var o=r[t];if(o||(o=r[t]={}),!(a.indexOf(o)>=0)){if(a.push(o),e[t])return e[t];n.o(n.S,t)||(n.S[t]={});var i=n.S[t],l="@marineyachtradar/signalk-plugin",c=[];return"default"===t&&((e,r,t,a)=>{var o=i[e]=i[e]||{},c=o[r];(!c||!c.loaded&&(1!=!c.eager?a:l>c.from))&&(o[r]={get:()=>n.e(540).then(()=>()=>n(540)),from:l,eager:!1})})("react","19.2.5"),e[t]=c.length?Promise.all(c).then(()=>e[t]=1):1}}})(),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={792:0};n.f.j=(r,t)=>{var a=n.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else{var o=new Promise((t,n)=>a=e[r]=[t,n]);t.push(a[2]=o);var i=n.p+n.u(r),l=new Error;n.l(i,t=>{if(n.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var o=t&&("load"===t.type?"missing":t.type),i=t&&t.target&&t.target.src;l.message="Loading chunk "+r+" failed.\n("+o+": "+i+")",l.name="ChunkLoadError",l.type=o,l.request=i,a[1](l)}},"chunk-"+r,r)}};var r=(r,t)=>{var a,o,[i,l,c]=t,s=0;if(i.some(r=>0!==e[r])){for(a in l)n.o(l,a)&&(n.m[a]=l[a]);c&&c(n)}for(r&&r(t);s<i.length;s++)o=i[s],n.o(e,o)&&e[o]&&e[o][0](),e[o]=0},t=self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),n(316)})();
@@ -1 +1 @@
1
- var _marineyachtradar_signalk_plugin;(()=>{"use strict";var e,r,t,n,a,o,i,u,l,s,f,p,c,d,h,g,v,m,y,b={623(e,r,t){var n={"./PluginConfigurationPanel":()=>t.e(805).then(()=>()=>t(805))},a=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),o=(e,r)=>{if(t.S){var n="default",a=t.S[n];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>a,init:()=>o})}},w={};function S(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={exports:{}};return b[e](t,t.exports,S),t.exports}S.m=b,S.c=w,S.d=(e,r)=>{for(var t in r)S.o(r,t)&&!S.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},S.f={},S.e=e=>Promise.all(Object.keys(S.f).reduce((r,t)=>(S.f[t](e,r),r),[])),S.u=e=>e+".js",S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@marineyachtradar/signalk-plugin:",S.l=(t,n,a,o)=>{if(e[t])e[t].push(n);else{var i,u;if(void 0!==a)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==r+a){i=f;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",S.nc&&i.setAttribute("nonce",S.nc),i.setAttribute("data-webpack",r+a),i.src=t),e[t]=[n];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var a=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach(e=>e(n)),r)return r(n)},c=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}},S.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{S.S={};var e={},r={};S.I=(t,n)=>{n||(n=[]);var a=r[t];if(a||(a=r[t]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[t])return e[t];S.o(S.S,t)||(S.S[t]={});var o=S.S[t],i="@marineyachtradar/signalk-plugin",u=[];return"default"===t&&((e,r,t,n)=>{var a=o[e]=o[e]||{},u=a[r];(!u||!u.loaded&&(1!=!u.eager?n:i>u.from))&&(a[r]={get:()=>S.e(540).then(()=>()=>S(540)),from:i,eager:!1})})("react","19.2.4"),e[t]=u.length?Promise.all(u).then(()=>e[t]=1):1}}})(),(()=>{var e;S.g.importScripts&&(e=S.g.location+"");var r=S.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),S.p=e})(),t=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var a=e[n],o=(typeof a)[0];if(n>=r.length)return"u"==o;var i=r[n],u=(typeof i)[0];if(o!=u)return"o"==o&&"n"==u||"s"==u||"u"==o;if("o"!=o&&"u"!=o&&a!=i)return a<i;n++}},a=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(u=e[o]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var i=[];for(o=1;o<e.length;o++){var u=e[o];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():a(u))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,r)=>{if(0 in e){r=t(r);var n=e[0],a=n<0;a&&(n=-n-1);for(var i=0,u=1,l=!0;;u++,i++){var s,f,p=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(f=(typeof(s=r[i]))[0]))return!l||("u"==p?u>n&&!a:""==p!=a);if("u"==f){if(!l||"u"!=p)return!1}else if(l)if(p==f)if(u<=n){if(s!=e[u])return!1}else{if(a?s>e[u]:s<e[u])return!1;s!=e[u]&&(l=!1)}else if("s"!=p&&"n"!=p){if(a||u<=n)return!1;l=!1,u--}else{if(u<=n||f<p!=a)return!1;l=!1}else"s"!=p&&"n"!=p&&(l=!1,u--)}}var c=[],d=c.pop.bind(c);for(i=1;i<e.length;i++){var h=e[i];c.push(1==h?d()|d():2==h?d()&d():h?o(h,r):!d())}return!!d()},i=(e,r)=>e&&S.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),s=(e,r,t)=>{var a=t?l(e[r]):e[r];return Object.keys(a).reduce((e,r)=>!e||!a[e].loaded&&n(e,r)?r:e,0)},f=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(n)+")",p=e=>{throw new Error(e)},c=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,a,o){var i=S.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,S.S[r],t,!1,a,o)):e(r,S.S[r],t,n,a,o)})((e,r,t,n,a,l)=>{if(!i(r,t))return d(e,t,l);var p=s(r,t,n);return o(a,p)||c(f(r,t,p,a)),u(r[t][p])}),g={},v={231:()=>h("default","react",!1,[1,19],()=>S.e(540).then(()=>()=>S(540)))},m={805:[231]},y={},S.f.consumes=(e,r)=>{S.o(m,e)&&m[e].forEach(e=>{if(S.o(g,e))return r.push(g[e]);if(!y[e]){var t=r=>{g[e]=0,S.m[e]=t=>{delete S.c[e],t.exports=r()}};y[e]=!0;var n=r=>{delete g[e],S.m[e]=t=>{throw delete S.c[e],r}};try{var a=v[e]();a.then?r.push(g[e]=a.then(t).catch(n)):t(a)}catch(e){n(e)}}})},(()=>{var e={717:0};S.f.j=(r,t)=>{var n=S.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise((t,a)=>n=e[r]=[t,a]);t.push(n[2]=a);var o=S.p+S.u(r),i=new Error;S.l(o,t=>{if(S.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+a+": "+o+")",i.name="ChunkLoadError",i.type=a,i.request=o,n[1](i)}},"chunk-"+r,r)}};var r=(r,t)=>{var n,a,[o,i,u]=t,l=0;if(o.some(r=>0!==e[r])){for(n in i)S.o(i,n)&&(S.m[n]=i[n]);u&&u(S)}for(r&&r(t);l<o.length;l++)a=o[l],S.o(e,a)&&e[a]&&e[a][0](),e[a]=0},t=self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})();var k=S(623);_marineyachtradar_signalk_plugin=k})();
1
+ var _marineyachtradar_signalk_plugin;(()=>{"use strict";var e,r,t,n,a,o,i,u,l,s,f,p,c,d,h,g,v,m,y,b={623(e,r,t){var n={"./PluginConfigurationPanel":()=>t.e(805).then(()=>()=>t(805))},a=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),o=(e,r)=>{if(t.S){var n="default",a=t.S[n];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>a,init:()=>o})}},w={};function S(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={exports:{}};return b[e](t,t.exports,S),t.exports}S.m=b,S.c=w,S.d=(e,r)=>{for(var t in r)S.o(r,t)&&!S.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},S.f={},S.e=e=>Promise.all(Object.keys(S.f).reduce((r,t)=>(S.f[t](e,r),r),[])),S.u=e=>e+".js",S.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),S.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="@marineyachtradar/signalk-plugin:",S.l=(t,n,a,o)=>{if(e[t])e[t].push(n);else{var i,u;if(void 0!==a)for(var l=document.getElementsByTagName("script"),s=0;s<l.length;s++){var f=l[s];if(f.getAttribute("src")==t||f.getAttribute("data-webpack")==r+a){i=f;break}}i||(u=!0,(i=document.createElement("script")).charset="utf-8",S.nc&&i.setAttribute("nonce",S.nc),i.setAttribute("data-webpack",r+a),i.src=t),e[t]=[n];var p=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var a=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach(e=>e(n)),r)return r(n)},c=setTimeout(p.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=p.bind(null,i.onerror),i.onload=p.bind(null,i.onload),u&&document.head.appendChild(i)}},S.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{S.S={};var e={},r={};S.I=(t,n)=>{n||(n=[]);var a=r[t];if(a||(a=r[t]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[t])return e[t];S.o(S.S,t)||(S.S[t]={});var o=S.S[t],i="@marineyachtradar/signalk-plugin",u=[];return"default"===t&&((e,r,t,n)=>{var a=o[e]=o[e]||{},u=a[r];(!u||!u.loaded&&(1!=!u.eager?n:i>u.from))&&(a[r]={get:()=>S.e(540).then(()=>()=>S(540)),from:i,eager:!1})})("react","19.2.5"),e[t]=u.length?Promise.all(u).then(()=>e[t]=1):1}}})(),(()=>{var e;S.g.importScripts&&(e=S.g.location+"");var r=S.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),S.p=e})(),t=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var a=e[n],o=(typeof a)[0];if(n>=r.length)return"u"==o;var i=r[n],u=(typeof i)[0];if(o!=u)return"o"==o&&"n"==u||"s"==u||"u"==o;if("o"!=o&&"u"!=o&&a!=i)return a<i;n++}},a=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(u=e[o]))[0]?"-":(n>0?".":"")+(n=2,u);return t}var i=[];for(o=1;o<e.length;o++){var u=e[o];i.push(0===u?"not("+l()+")":1===u?"("+l()+" || "+l()+")":2===u?i.pop()+" "+i.pop():a(u))}return l();function l(){return i.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,r)=>{if(0 in e){r=t(r);var n=e[0],a=n<0;a&&(n=-n-1);for(var i=0,u=1,l=!0;;u++,i++){var s,f,p=u<e.length?(typeof e[u])[0]:"";if(i>=r.length||"o"==(f=(typeof(s=r[i]))[0]))return!l||("u"==p?u>n&&!a:""==p!=a);if("u"==f){if(!l||"u"!=p)return!1}else if(l)if(p==f)if(u<=n){if(s!=e[u])return!1}else{if(a?s>e[u]:s<e[u])return!1;s!=e[u]&&(l=!1)}else if("s"!=p&&"n"!=p){if(a||u<=n)return!1;l=!1,u--}else{if(u<=n||f<p!=a)return!1;l=!1}else"s"!=p&&"n"!=p&&(l=!1,u--)}}var c=[],d=c.pop.bind(c);for(i=1;i<e.length;i++){var h=e[i];c.push(1==h?d()|d():2==h?d()&d():h?o(h,r):!d())}return!!d()},i=(e,r)=>e&&S.o(e,r),u=e=>(e.loaded=1,e.get()),l=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),s=(e,r,t)=>{var a=t?l(e[r]):e[r];return Object.keys(a).reduce((e,r)=>!e||!a[e].loaded&&n(e,r)?r:e,0)},f=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(n)+")",p=e=>{throw new Error(e)},c=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=(e,r,t)=>t?t():((e,r)=>p("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,a,o){var i=S.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,S.S[r],t,!1,a,o)):e(r,S.S[r],t,n,a,o)})((e,r,t,n,a,l)=>{if(!i(r,t))return d(e,t,l);var p=s(r,t,n);return o(a,p)||c(f(r,t,p,a)),u(r[t][p])}),g={},v={231:()=>h("default","react",!1,[1,19],()=>S.e(540).then(()=>()=>S(540)))},m={805:[231]},y={},S.f.consumes=(e,r)=>{S.o(m,e)&&m[e].forEach(e=>{if(S.o(g,e))return r.push(g[e]);if(!y[e]){var t=r=>{g[e]=0,S.m[e]=t=>{delete S.c[e],t.exports=r()}};y[e]=!0;var n=r=>{delete g[e],S.m[e]=t=>{throw delete S.c[e],r}};try{var a=v[e]();a.then?r.push(g[e]=a.then(t).catch(n)):t(a)}catch(e){n(e)}}})},(()=>{var e={717:0};S.f.j=(r,t)=>{var n=S.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else{var a=new Promise((t,a)=>n=e[r]=[t,a]);t.push(n[2]=a);var o=S.p+S.u(r),i=new Error;S.l(o,t=>{if(S.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+a+": "+o+")",i.name="ChunkLoadError",i.type=a,i.request=o,n[1](i)}},"chunk-"+r,r)}};var r=(r,t)=>{var n,a,[o,i,u]=t,l=0;if(o.some(r=>0!==e[r])){for(n in i)S.o(i,n)&&(S.m[n]=i[n]);u&&u(S)}for(r&&r(t);l<o.length;l++)a=o[l],S.o(e,a)&&e[a]&&e[a][0](),e[a]=0},t=self.webpackChunk_marineyachtradar_signalk_plugin=self.webpackChunk_marineyachtradar_signalk_plugin||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})();var k=S(623);_marineyachtradar_signalk_plugin=k})();