signalk-backup 0.6.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/package.json +1 -9
- package/plugin/config/image-tag.d.ts +1 -1
- package/plugin/config/image-tag.js +1 -1
- package/plugin/config/schema.d.ts +10 -27
- package/plugin/config/schema.d.ts.map +1 -1
- package/plugin/config/schema.js +9 -34
- package/plugin/config/schema.js.map +1 -1
- package/plugin/index.d.ts.map +1 -1
- package/plugin/index.js +24 -12
- package/plugin/index.js.map +1 -1
- package/plugin/signalk-deltas.d.ts +50 -0
- package/plugin/signalk-deltas.d.ts.map +1 -0
- package/plugin/signalk-deltas.js +347 -0
- package/plugin/signalk-deltas.js.map +1 -0
- package/plugin/types.d.ts +4 -0
- package/plugin/types.d.ts.map +1 -1
- package/public/assets/{index-BQ7OBjdz.js → index-t6Jtw_Oz.js} +2 -2
- package/public/assets/{index-BQ7OBjdz.js.map → index-t6Jtw_Oz.js.map} +1 -1
- package/public/assets/{main-BJWA9MBT.js → main-CjcLMWrn.js} +2 -2
- package/public/assets/{main-BJWA9MBT.js.map → main-CjcLMWrn.js.map} +1 -1
- package/public/index.html +1 -1
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
// WHY: translate backup-server SSE events into SignalK deltas (issue #33); scheduled runs only.
|
|
2
|
+
const METRIC_BASE = 'server.backup';
|
|
3
|
+
const NOTIF_BASE = 'notifications.server.backup';
|
|
4
|
+
// Hysteresis band so a disk hovering at the boundary doesn't flap warn/normal repeatedly.
|
|
5
|
+
// Threshold values are documented in README.md "SignalK paths published" — keep in sync.
|
|
6
|
+
const STORAGE_LOW_WARN = 0.1; // <10% free → warn
|
|
7
|
+
const STORAGE_LOW_ALERT = 0.05; // <5% free → alert
|
|
8
|
+
const STORAGE_LOW_CLEAR = 0.12; // ≥12% free → clear
|
|
9
|
+
const TIER_INTERVAL_MS = {
|
|
10
|
+
hourly: 60 * 60 * 1000,
|
|
11
|
+
daily: 24 * 60 * 60 * 1000,
|
|
12
|
+
weekly: 7 * 24 * 60 * 60 * 1000,
|
|
13
|
+
startup: 0 // never overdue: triggers only on server start
|
|
14
|
+
};
|
|
15
|
+
// Documented in README.md "SignalK paths published" — keep in sync.
|
|
16
|
+
const OVERDUE_MULTIPLIER = 2;
|
|
17
|
+
// WHY this indirection: eslint's no-unnecessary-condition narrows literal-typed
|
|
18
|
+
// fields to a constant within a function scope. The `stopped` flag is mutated
|
|
19
|
+
// from outside (stopSignalKEmitter), so reading it through a function call
|
|
20
|
+
// blocks the narrowing without disabling the rule project-wide.
|
|
21
|
+
function isStopped(s) {
|
|
22
|
+
return s.stopped;
|
|
23
|
+
}
|
|
24
|
+
// WHY duck-type rather than rely on the static type: SSE input is untrusted
|
|
25
|
+
// JSON; a server-side rev that adds a new event type shouldn't crash the plugin.
|
|
26
|
+
function isBackupCompleted(e) {
|
|
27
|
+
return e.type === 'backup-completed';
|
|
28
|
+
}
|
|
29
|
+
let state = null;
|
|
30
|
+
// WHY idempotent + reconnect: container restart / image update during run shouldn't lose deltas.
|
|
31
|
+
export function startSignalKEmitter(app, baseUrl, config) {
|
|
32
|
+
if (state) {
|
|
33
|
+
app.debug('[signalk-deltas] start called while already running — ignoring');
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (!config.emitSignalKDeltas) {
|
|
37
|
+
app.debug('[signalk-deltas] emitSignalKDeltas=false — not starting subscriber');
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
state = {
|
|
41
|
+
app,
|
|
42
|
+
baseUrl,
|
|
43
|
+
config,
|
|
44
|
+
abortController: new AbortController(),
|
|
45
|
+
metaEmitted: false,
|
|
46
|
+
lastSuccessByTier: new Map(),
|
|
47
|
+
activeNotifications: new Set(),
|
|
48
|
+
reconnectTimer: null,
|
|
49
|
+
reconnectDelayMs: 1_000,
|
|
50
|
+
stopped: false
|
|
51
|
+
};
|
|
52
|
+
app.debug(`[signalk-deltas] starting SSE subscriber → ${baseUrl}/api/backups/events/stream`);
|
|
53
|
+
void connect(state);
|
|
54
|
+
}
|
|
55
|
+
export function stopSignalKEmitter() {
|
|
56
|
+
if (!state)
|
|
57
|
+
return;
|
|
58
|
+
state.stopped = true;
|
|
59
|
+
state.abortController.abort();
|
|
60
|
+
if (state.reconnectTimer) {
|
|
61
|
+
clearTimeout(state.reconnectTimer);
|
|
62
|
+
state.reconnectTimer = null;
|
|
63
|
+
}
|
|
64
|
+
state.app.debug('[signalk-deltas] stopped');
|
|
65
|
+
state = null;
|
|
66
|
+
}
|
|
67
|
+
async function connect(s) {
|
|
68
|
+
if (isStopped(s))
|
|
69
|
+
return;
|
|
70
|
+
try {
|
|
71
|
+
const res = await fetch(`${s.baseUrl}/api/backups/events/stream`, {
|
|
72
|
+
signal: s.abortController.signal,
|
|
73
|
+
headers: { Accept: 'text/event-stream' }
|
|
74
|
+
});
|
|
75
|
+
if (!res.ok || !res.body) {
|
|
76
|
+
throw new Error(`SSE connect failed: HTTP ${res.status}`);
|
|
77
|
+
}
|
|
78
|
+
s.app.debug('[signalk-deltas] SSE connected');
|
|
79
|
+
s.reconnectDelayMs = 1_000; // reset backoff on a clean connect
|
|
80
|
+
const reader = res.body.getReader();
|
|
81
|
+
const decoder = new TextDecoder();
|
|
82
|
+
let buffer = '';
|
|
83
|
+
// SSE frames are separated by a blank line. Each frame may have multiple
|
|
84
|
+
// `data:` lines (concatenated), interspersed with `:` keepalives we ignore.
|
|
85
|
+
while (!isStopped(s)) {
|
|
86
|
+
const { value, done } = await reader.read();
|
|
87
|
+
if (done)
|
|
88
|
+
throw new Error('SSE stream ended');
|
|
89
|
+
buffer += decoder.decode(value, { stream: true });
|
|
90
|
+
let sep;
|
|
91
|
+
while ((sep = buffer.indexOf('\n\n')) !== -1) {
|
|
92
|
+
const frame = buffer.slice(0, sep);
|
|
93
|
+
buffer = buffer.slice(sep + 2);
|
|
94
|
+
const dataLines = frame
|
|
95
|
+
.split('\n')
|
|
96
|
+
.filter((l) => l.startsWith('data:'))
|
|
97
|
+
.map((l) => l.slice(5).trimStart());
|
|
98
|
+
if (dataLines.length === 0)
|
|
99
|
+
continue;
|
|
100
|
+
try {
|
|
101
|
+
const event = JSON.parse(dataLines.join('\n'));
|
|
102
|
+
handleEvent(s, event);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
s.app.debug(`[signalk-deltas] failed to parse SSE frame: ${err.message}`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
if (isStopped(s))
|
|
112
|
+
return;
|
|
113
|
+
s.app.debug(`[signalk-deltas] SSE disconnect: ${err.message}`);
|
|
114
|
+
scheduleReconnect(s);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function scheduleReconnect(s) {
|
|
118
|
+
if (isStopped(s))
|
|
119
|
+
return;
|
|
120
|
+
const delay = s.reconnectDelayMs;
|
|
121
|
+
s.reconnectDelayMs = Math.min(s.reconnectDelayMs * 2, 30_000);
|
|
122
|
+
s.reconnectTimer = setTimeout(() => {
|
|
123
|
+
s.reconnectTimer = null;
|
|
124
|
+
s.abortController = new AbortController();
|
|
125
|
+
void connect(s);
|
|
126
|
+
}, delay);
|
|
127
|
+
}
|
|
128
|
+
export function handleEvent(s, event) {
|
|
129
|
+
// Defensive: untrusted SSE input may carry a future event type the plugin doesn't know.
|
|
130
|
+
if (!isBackupCompleted(event))
|
|
131
|
+
return;
|
|
132
|
+
emitMetrics(s, event);
|
|
133
|
+
if (event.localResult === 'success' && event.cloudResult !== 'failure') {
|
|
134
|
+
s.lastSuccessByTier.set(event.tier, Date.parse(event.timestamp));
|
|
135
|
+
clearNotification(s, 'failed');
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
raiseFailedNotification(s, event);
|
|
139
|
+
}
|
|
140
|
+
evaluateOverdue(s, event);
|
|
141
|
+
evaluateStorageLow(s, event);
|
|
142
|
+
}
|
|
143
|
+
function emitMetrics(s, event) {
|
|
144
|
+
const lastStatus = event.localResult === 'success' && event.cloudResult !== 'failure' ? 'success' : 'failure';
|
|
145
|
+
// The four metric paths the issue lists, plus a tier label so dashboards can split
|
|
146
|
+
// by tier without parsing the message.
|
|
147
|
+
const values = [
|
|
148
|
+
{ path: `${METRIC_BASE}.lastRunTimestamp`, value: event.timestamp },
|
|
149
|
+
{ path: `${METRIC_BASE}.lastStatus`, value: lastStatus },
|
|
150
|
+
{ path: `${METRIC_BASE}.lastRunTier`, value: event.tier },
|
|
151
|
+
{ path: `${METRIC_BASE}.nextScheduledTimestamp`, value: minTimestamp(event.nextScheduled) }
|
|
152
|
+
];
|
|
153
|
+
// Emit 0 on failure so dashboards always have a value; explicit omit on unknown-size
|
|
154
|
+
// is handled by the server (event.localBytes undefined).
|
|
155
|
+
values.push({ path: `${METRIC_BASE}.lastRunBytes`, value: event.localBytes ?? 0 });
|
|
156
|
+
const updates = [
|
|
157
|
+
{
|
|
158
|
+
timestamp: event.timestamp,
|
|
159
|
+
values
|
|
160
|
+
}
|
|
161
|
+
];
|
|
162
|
+
// Emit `meta` only once per process — first event seeds units + displayName for clients.
|
|
163
|
+
if (!s.metaEmitted) {
|
|
164
|
+
updates.push({ meta: metaSeed() });
|
|
165
|
+
s.metaEmitted = true;
|
|
166
|
+
}
|
|
167
|
+
s.app.handleMessage('signalk-backup', {
|
|
168
|
+
context: `vessels.${s.app.selfId}`,
|
|
169
|
+
updates: updates
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
function metaSeed() {
|
|
173
|
+
return [
|
|
174
|
+
{
|
|
175
|
+
path: `${METRIC_BASE}.lastRunBytes`,
|
|
176
|
+
value: {
|
|
177
|
+
units: 'B',
|
|
178
|
+
description: 'Size of the most recent scheduled backup',
|
|
179
|
+
displayName: 'Last backup size'
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
path: `${METRIC_BASE}.lastRunTimestamp`,
|
|
184
|
+
value: {
|
|
185
|
+
description: 'When the most recent scheduled backup ran',
|
|
186
|
+
displayName: 'Last backup'
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
path: `${METRIC_BASE}.lastStatus`,
|
|
191
|
+
value: {
|
|
192
|
+
description: 'Outcome of the most recent scheduled backup run',
|
|
193
|
+
displayName: 'Backup status'
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
path: `${METRIC_BASE}.lastRunTier`,
|
|
198
|
+
value: {
|
|
199
|
+
description: 'Scheduler tier that produced the most recent run',
|
|
200
|
+
displayName: 'Last backup tier'
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
path: `${METRIC_BASE}.nextScheduledTimestamp`,
|
|
205
|
+
value: {
|
|
206
|
+
description: 'When the next scheduled backup is due (earliest of all tiers)',
|
|
207
|
+
displayName: 'Next backup'
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
];
|
|
211
|
+
}
|
|
212
|
+
function raiseFailedNotification(s, event) {
|
|
213
|
+
const failedParts = [];
|
|
214
|
+
if (event.localResult === 'failure') {
|
|
215
|
+
failedParts.push(`Local Kopia: ${event.localError ?? 'unknown error'}`);
|
|
216
|
+
}
|
|
217
|
+
if (event.cloudResult === 'failure') {
|
|
218
|
+
const target = event.cloudTarget ?? 'cloud';
|
|
219
|
+
failedParts.push(`${target}: ${event.cloudError ?? 'unknown error'}`);
|
|
220
|
+
}
|
|
221
|
+
const message = failedParts.length > 0
|
|
222
|
+
? `Backup failed — ${failedParts.join('; ')}`
|
|
223
|
+
: 'Backup failed (no detail)';
|
|
224
|
+
emitNotification(s, 'failed', 'alert', message, event.timestamp);
|
|
225
|
+
}
|
|
226
|
+
function evaluateOverdue(s, event) {
|
|
227
|
+
const now = Date.parse(event.timestamp);
|
|
228
|
+
let overdue = null;
|
|
229
|
+
for (const tier of ['hourly', 'daily', 'weekly']) {
|
|
230
|
+
const interval = TIER_INTERVAL_MS[tier];
|
|
231
|
+
if (interval === 0)
|
|
232
|
+
continue;
|
|
233
|
+
const lastSuccess = s.lastSuccessByTier.get(tier);
|
|
234
|
+
if (lastSuccess === undefined)
|
|
235
|
+
continue; // no baseline yet, give it one cycle
|
|
236
|
+
if (now - lastSuccess > OVERDUE_MULTIPLIER * interval) {
|
|
237
|
+
overdue = tier;
|
|
238
|
+
break;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (overdue) {
|
|
242
|
+
const msg = `Scheduled ${overdue} backup is overdue (last success >${(OVERDUE_MULTIPLIER * TIER_INTERVAL_MS[overdue]) / 3_600_000}h ago)`;
|
|
243
|
+
emitNotification(s, 'overdue', 'warn', msg, event.timestamp);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
clearNotification(s, 'overdue');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
function evaluateStorageLow(s, event) {
|
|
250
|
+
if (event.totalBytes <= 0) {
|
|
251
|
+
// Server couldn't statfs — skip rather than raise a misleading alarm.
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
const freeRatio = event.freeBytes / event.totalBytes;
|
|
255
|
+
const active = s.activeNotifications.has('storageLow');
|
|
256
|
+
let raisedState = null;
|
|
257
|
+
if (freeRatio < STORAGE_LOW_ALERT)
|
|
258
|
+
raisedState = 'alert';
|
|
259
|
+
else if (freeRatio < STORAGE_LOW_WARN)
|
|
260
|
+
raisedState = 'warn';
|
|
261
|
+
if (raisedState) {
|
|
262
|
+
const pct = (freeRatio * 100).toFixed(1);
|
|
263
|
+
emitNotification(s, 'storageLow', raisedState, `Backup storage low: ${pct}% free`, event.timestamp);
|
|
264
|
+
}
|
|
265
|
+
else if (active && freeRatio >= STORAGE_LOW_CLEAR) {
|
|
266
|
+
clearNotification(s, 'storageLow');
|
|
267
|
+
}
|
|
268
|
+
// freeRatio between WARN and CLEAR with no prior alarm → no-op (hysteresis dead-band).
|
|
269
|
+
}
|
|
270
|
+
function emitNotification(s, key, state, message, timestamp) {
|
|
271
|
+
const path = `${NOTIF_BASE}.${key}`;
|
|
272
|
+
s.app.handleMessage('signalk-backup', {
|
|
273
|
+
context: `vessels.${s.app.selfId}`,
|
|
274
|
+
updates: [
|
|
275
|
+
{
|
|
276
|
+
timestamp: timestamp,
|
|
277
|
+
values: [
|
|
278
|
+
{
|
|
279
|
+
path: path,
|
|
280
|
+
value: {
|
|
281
|
+
state,
|
|
282
|
+
method: ['visual'],
|
|
283
|
+
message,
|
|
284
|
+
timestamp
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
});
|
|
291
|
+
s.activeNotifications.add(key);
|
|
292
|
+
}
|
|
293
|
+
function clearNotification(s, key) {
|
|
294
|
+
if (!s.activeNotifications.has(key))
|
|
295
|
+
return;
|
|
296
|
+
const path = `${NOTIF_BASE}.${key}`;
|
|
297
|
+
s.app.handleMessage('signalk-backup', {
|
|
298
|
+
context: `vessels.${s.app.selfId}`,
|
|
299
|
+
updates: [
|
|
300
|
+
{
|
|
301
|
+
timestamp: new Date().toISOString(),
|
|
302
|
+
values: [
|
|
303
|
+
{
|
|
304
|
+
path: path,
|
|
305
|
+
value: {
|
|
306
|
+
state: 'normal',
|
|
307
|
+
method: [],
|
|
308
|
+
message: 'OK',
|
|
309
|
+
timestamp: new Date().toISOString()
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
]
|
|
313
|
+
}
|
|
314
|
+
]
|
|
315
|
+
});
|
|
316
|
+
s.activeNotifications.delete(key);
|
|
317
|
+
}
|
|
318
|
+
function minTimestamp(next) {
|
|
319
|
+
const candidates = [next.hourly, next.daily, next.weekly].filter((t) => !!t);
|
|
320
|
+
if (candidates.length === 0)
|
|
321
|
+
return new Date().toISOString();
|
|
322
|
+
candidates.sort((a, b) => Date.parse(a) - Date.parse(b));
|
|
323
|
+
return candidates[0] ?? new Date().toISOString();
|
|
324
|
+
}
|
|
325
|
+
// Test-only helpers exposed so the vitest suite can drive the translator without an SSE server.
|
|
326
|
+
export const __test_only__ = {
|
|
327
|
+
/** Inject a fresh state for tests; returns the test handle. */
|
|
328
|
+
bootstrap(app) {
|
|
329
|
+
return {
|
|
330
|
+
app,
|
|
331
|
+
baseUrl: 'http://test',
|
|
332
|
+
config: { emitSignalKDeltas: true },
|
|
333
|
+
abortController: new AbortController(),
|
|
334
|
+
metaEmitted: false,
|
|
335
|
+
lastSuccessByTier: new Map(),
|
|
336
|
+
activeNotifications: new Set(),
|
|
337
|
+
reconnectTimer: null,
|
|
338
|
+
reconnectDelayMs: 1_000,
|
|
339
|
+
stopped: false
|
|
340
|
+
};
|
|
341
|
+
},
|
|
342
|
+
handleEvent,
|
|
343
|
+
STORAGE_LOW_WARN,
|
|
344
|
+
STORAGE_LOW_ALERT,
|
|
345
|
+
STORAGE_LOW_CLEAR
|
|
346
|
+
};
|
|
347
|
+
//# sourceMappingURL=signalk-deltas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signalk-deltas.js","sourceRoot":"","sources":["../src/signalk-deltas.ts"],"names":[],"mappings":"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"}
|
package/plugin/types.d.ts
CHANGED
|
@@ -154,6 +154,10 @@ export interface ContainerManagerApi {
|
|
|
154
154
|
updateResources: (name: string, limits: ContainerResourceLimits) => Promise<UpdateResourcesResult>;
|
|
155
155
|
getResources: (name: string) => ContainerResourceLimits;
|
|
156
156
|
resolveContainerAddress: (name: string, port: number) => Promise<string | null>;
|
|
157
|
+
resolveHostPath?: (absPath: string) => Promise<{
|
|
158
|
+
source: string;
|
|
159
|
+
subPath: string;
|
|
160
|
+
} | null>;
|
|
157
161
|
updates: UpdateServiceApi;
|
|
158
162
|
}
|
|
159
163
|
declare global {
|
package/plugin/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,MAAM,eAAe,GAAG,SAAS,CAAA;AAevC,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,YAAY,CAAA;AAE7E,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAA;IACd;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;CACxC;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,CAAA;IAC3C,MAAM,EAAE,MAAM,CAAA;CACf;AAED,iFAAiF;AACjF,MAAM,WAAW,oBAAoB;IACnC,iEAAiE;IACjE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7D;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC,CAAA;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,OAAO,CAAC,EAAE,IAAI,GAAG,gBAAgB,GAAG,QAAQ,CAAA;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,uBAAuB,CAAA;IACnC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,cAAc,CAAA;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,GAAG,WAAW,CAAA;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,MAAM,MAAM,YAAY,GACpB,eAAe,GACf,cAAc,GACd,mBAAmB,GACnB,YAAY,GACZ,SAAS,GACT,SAAS,GACT,OAAO,CAAA;AAEX,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAA;AAE7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,aAAa,CAAA;IACtB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAA;IACpC,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAChD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,MAAM,CAAA;IACxB,aAAa,EAAE,aAAa,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC7C,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,CAAC,GAAG,EAAE,kBAAkB,KAAK,IAAI,CAAA;IAC3C,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAA;IAC1D,QAAQ,EAAE,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAA;IAC5C,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,iBAAiB,GAAG,IAAI,CAAA;IAC7D,OAAO,EAAE;QACP,cAAc,EAAE,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;YAAE,eAAe,CAAC,EAAE,OAAO,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,KACxD,aAAa,CAAA;QAClB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;SAAE,KAAK,aAAa,CAAA;KACjG,CAAA;CACF;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,oBAAoB,GAAG,IAAI,CAAA;IAC7C,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,CAAC,gBAAgB,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpE,aAAa,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,oBAAoB,KAC3B,OAAO,CAAC,IAAI,CAAC,CAAA;IAClB,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtC,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,cAAc,CAAC,CAAA;IACnD,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAA;IAC9C,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAClG,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,uBAAuB,CAAA;IACvD,uBAAuB,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAE/E,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAC1F,OAAO,EAAE,gBAAgB,CAAA;CAC1B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,0BAA0B,EAAE,mBAAmB,GAAG,SAAS,CAAA;CAChE"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`modulepreload`,t=function(e){return`/signalk-backup/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};async function i(){let e=await fetch(`/admin/.vite/manifest.json`);if(!e.ok)return;let t=await e.json(),n=new Set;for(let e of Object.values(t))if(e){for(let t of e.css??[])n.add(t);typeof e.file==`string`&&e.file.endsWith(`.css`)&&n.add(e.file)}await Promise.all([...n].map(e=>new Promise(t=>{let n=document.createElement(`link`);n.rel=`stylesheet`,n.href=`/admin/`+e,n.onload=t,n.onerror=t,document.head.appendChild(n)})))}try{await i()}catch(e){console.warn(`signalk-backup: admin CSS not available`,e)}finally{await r(()=>import(`./main-
|
|
2
|
-
//# sourceMappingURL=index-
|
|
1
|
+
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=`modulepreload`,t=function(e){return`/signalk-backup/`+e},n={},r=function(r,i,a){let o=Promise.resolve();if(i&&i.length>0){let r=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}o=l(i.map(i=>{if(i=t(i,a),i in n)return;n[i]=!0;let o=i.endsWith(`.css`),s=o?`[rel="stylesheet"]`:``;if(a)for(let e=r.length-1;e>=0;e--){let t=r[e];if(t.href===i&&(!o||t.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${i}"]${s}`))return;let l=document.createElement(`link`);if(l.rel=o?`stylesheet`:e,o||(l.as=`script`),l.crossOrigin=``,l.href=i,c&&l.setAttribute(`nonce`,c),document.head.appendChild(l),o)return new Promise((e,t)=>{l.addEventListener(`load`,e),l.addEventListener(`error`,()=>t(Error(`Unable to preload CSS for ${i}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(e=>{for(let t of e||[])t.status===`rejected`&&s(t.reason);return r().catch(s)})};async function i(){let e=await fetch(`/admin/.vite/manifest.json`);if(!e.ok)return;let t=await e.json(),n=new Set;for(let e of Object.values(t))if(e){for(let t of e.css??[])n.add(t);typeof e.file==`string`&&e.file.endsWith(`.css`)&&n.add(e.file)}await Promise.all([...n].map(e=>new Promise(t=>{let n=document.createElement(`link`);n.rel=`stylesheet`,n.href=`/admin/`+e,n.onload=t,n.onerror=t,document.head.appendChild(n)})))}try{await i()}catch(e){console.warn(`signalk-backup: admin CSS not available`,e)}finally{await r(()=>import(`./main-CjcLMWrn.js`),[])}
|
|
2
|
+
//# sourceMappingURL=index-t6Jtw_Oz.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"mappings":"m2DACM,eAAe,GAAiB,CAC9B,IAAM,EAAM,MAAM,MAAM,4BAA4B,EACpD,GAAI,CAAC,EAAI,GAAI,OACb,IAAM,EAAW,MAAM,EAAI,KAAK,EAC1B,EAAW,IAAI,IAMrB,IAAK,IAAM,KAAS,OAAO,OAAO,CAAQ,EACnC,KACL,KAAK,IAAM,KAAO,EAAM,KAAO,CAAC,EAAG,EAAS,IAAI,CAAG,EAC/C,OAAO,EAAM,MAAS,UAAY,EAAM,KAAK,SAAS,MAAM,GAC9D,EAAS,IAAI,EAAM,IAAI,CAF0B,CAKrD,MAAM,QAAQ,IACZ,CAAC,GAAG,CAAQ,EAAE,IACX,GACC,IAAI,QAAS,GAAY,CACvB,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,IAAM,aACX,EAAK,KAAO,UAAY,EACxB,EAAK,OAAS,EACd,EAAK,QAAU,EACf,SAAS,KAAK,YAAY,CAAI,CAChC,CAAC,CACL,CACF,CACF,CAEA,GAAI,CACF,MAAM,EAAe,CACvB,OAAS,EAAK,CACZ,QAAQ,KAAK,0CAA2C,CAAG,CAC7D,QAAU,CACR,YAAM,OAAO,yBACf","names":[],"ignoreList":[],"sources":["../../webapp/index.html?html-proxy&index=0.js"],"sourcesContent":["\n async function injectAdminCss() {\n const res = await fetch('/admin/.vite/manifest.json')\n if (!res.ok) return\n const manifest = await res.json()\n const cssFiles = new Set()\n // Two shapes are common: an entry whose `css` array lists its\n // stylesheet imports, OR a top-level entry whose `file` itself\n // ends in `.css` (when Vite extracts a global stylesheet). The\n // current SignalK admin uses the second shape; older builds and\n // the docs example use the first. Cover both.\n for (const entry of Object.values(manifest)) {\n if (!entry) continue\n for (const css of entry.css ?? []) cssFiles.add(css)\n if (typeof entry.file === 'string' && entry.file.endsWith('.css')) {\n cssFiles.add(entry.file)\n }\n }\n await Promise.all(\n [...cssFiles].map(\n (css) =>\n new Promise((resolve) => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/admin/' + css\n link.onload = resolve\n link.onerror = resolve\n document.head.appendChild(link)\n })\n )\n )\n }\n\n try {\n await injectAdminCss()\n } catch (err) {\n console.warn('signalk-backup: admin CSS not available', err)\n } finally {\n await import('./src/main.tsx')\n }\n "],"file":"index-
|
|
1
|
+
{"version":3,"mappings":"m2DACM,eAAe,GAAiB,CAC9B,IAAM,EAAM,MAAM,MAAM,4BAA4B,EACpD,GAAI,CAAC,EAAI,GAAI,OACb,IAAM,EAAW,MAAM,EAAI,KAAK,EAC1B,EAAW,IAAI,IAMrB,IAAK,IAAM,KAAS,OAAO,OAAO,CAAQ,EACnC,KACL,KAAK,IAAM,KAAO,EAAM,KAAO,CAAC,EAAG,EAAS,IAAI,CAAG,EAC/C,OAAO,EAAM,MAAS,UAAY,EAAM,KAAK,SAAS,MAAM,GAC9D,EAAS,IAAI,EAAM,IAAI,CAF0B,CAKrD,MAAM,QAAQ,IACZ,CAAC,GAAG,CAAQ,EAAE,IACX,GACC,IAAI,QAAS,GAAY,CACvB,IAAM,EAAO,SAAS,cAAc,MAAM,EAC1C,EAAK,IAAM,aACX,EAAK,KAAO,UAAY,EACxB,EAAK,OAAS,EACd,EAAK,QAAU,EACf,SAAS,KAAK,YAAY,CAAI,CAChC,CAAC,CACL,CACF,CACF,CAEA,GAAI,CACF,MAAM,EAAe,CACvB,OAAS,EAAK,CACZ,QAAQ,KAAK,0CAA2C,CAAG,CAC7D,QAAU,CACR,YAAM,OAAO,yBACf","names":[],"ignoreList":[],"sources":["../../webapp/index.html?html-proxy&index=0.js"],"sourcesContent":["\n async function injectAdminCss() {\n const res = await fetch('/admin/.vite/manifest.json')\n if (!res.ok) return\n const manifest = await res.json()\n const cssFiles = new Set()\n // Two shapes are common: an entry whose `css` array lists its\n // stylesheet imports, OR a top-level entry whose `file` itself\n // ends in `.css` (when Vite extracts a global stylesheet). The\n // current SignalK admin uses the second shape; older builds and\n // the docs example use the first. Cover both.\n for (const entry of Object.values(manifest)) {\n if (!entry) continue\n for (const css of entry.css ?? []) cssFiles.add(css)\n if (typeof entry.file === 'string' && entry.file.endsWith('.css')) {\n cssFiles.add(entry.file)\n }\n }\n await Promise.all(\n [...cssFiles].map(\n (css) =>\n new Promise((resolve) => {\n const link = document.createElement('link')\n link.rel = 'stylesheet'\n link.href = '/admin/' + css\n link.onload = resolve\n link.onerror = resolve\n document.head.appendChild(link)\n })\n )\n )\n }\n\n try {\n await injectAdminCss()\n } catch (err) {\n console.warn('signalk-backup: admin CSS not available', err)\n } finally {\n await import('./src/main.tsx')\n }\n "],"file":"index-t6Jtw_Oz.js"}
|