@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 +35 -6
- package/package.json +3 -3
- package/plugin/index.js +238 -167
- package/plugin/index.js.map +1 -1
- package/plugin/radar-provider.js.map +1 -1
- package/plugin/types.d.ts +94 -13
- package/plugin/types.d.ts.map +1 -1
- package/public/540.js +1 -1
- package/public/805.js +1 -1
- package/public/assets/mayara_logo.png +0 -0
- package/public/main.js +1 -1
- package/public/remoteEntry.js +1 -1
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
|
-
- **
|
|
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** —
|
|
63
|
-
- **Update** — pulls
|
|
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
|
-
- **
|
|
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.
|
|
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.
|
|
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.
|
|
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:
|
|
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(
|
|
59
|
+
app.radarApi.unRegister(PLUGIN_ID);
|
|
37
60
|
}
|
|
38
61
|
catch (err) {
|
|
39
|
-
app.debug(`Error unregistering: ${
|
|
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 (
|
|
103
|
+
router.get('/status', async (_req, res) => {
|
|
104
|
+
const containers = getContainerManager();
|
|
63
105
|
let containerState = 'unknown';
|
|
64
106
|
let containerImage = '';
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
containerState = await containers.getState('mayara-server');
|
|
107
|
+
if (containers) {
|
|
108
|
+
try {
|
|
109
|
+
containerState = await containers.getState(CONTAINER_NAME);
|
|
69
110
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
|
|
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
|
|
107
|
-
|
|
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:
|
|
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
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
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
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
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
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
tag
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
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
|
-
|
|
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', (
|
|
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
|
-
|
|
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(
|
|
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: ${
|
|
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: ${
|
|
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
|
-
|
|
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: ${
|
|
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
|
package/plugin/index.js.map
CHANGED
|
@@ -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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
package/plugin/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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.
|
|
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)})();
|
package/public/remoteEntry.js
CHANGED
|
@@ -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.
|
|
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})();
|