signalk-wakelogger 0.2.0-beta.4 → 0.2.0-beta.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/CHANGELOG.md +19 -1
- package/README.md +6 -4
- package/dist/index.js +242 -48
- package/dist/index.js.map +1 -1
- package/dist/outbox/file-outbox.d.ts +1 -0
- package/dist/outbox/file-outbox.js +45 -33
- package/dist/outbox/file-outbox.js.map +1 -1
- package/dist/telemetry/types.d.ts +2 -0
- package/dist/tracking/history.d.ts +23 -0
- package/dist/tracking/history.js +96 -0
- package/dist/tracking/history.js.map +1 -0
- package/dist/transport/mqtt-client.d.ts +2 -1
- package/dist/transport/mqtt-client.js +25 -4
- package/dist/transport/mqtt-client.js.map +1 -1
- package/dist/trips/recording-store.js +25 -6
- package/dist/trips/recording-store.js.map +1 -1
- package/docs/course-sync.md +5 -2
- package/package.json +5 -5
- package/public/app.mjs +113 -5
- package/public/fonts/ALDRICH-LICENSE +93 -0
- package/public/fonts/aldrich-latin-400-normal.woff2 +0 -0
- package/public/index.html +10 -10
- package/public/style.css +13 -1
- package/public/tracking-controls.mjs +22 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,25 @@
|
|
|
2
2
|
|
|
3
3
|
Updates for boat owners and crew: what's new, what's improved, and anything you need to do.
|
|
4
4
|
|
|
5
|
-
## [
|
|
5
|
+
## [0.2.0-beta.5] - 2026-09-16
|
|
6
|
+
|
|
7
|
+
### Live tracking when you want it
|
|
8
|
+
|
|
9
|
+
- Turn live tracking on or off directly from the onboard map. When it's off, your trip still records on board and uploads later; turn it back on to resume live updates.
|
|
10
|
+
- The setting is remembered across restarts, and changing it does not split a trip.
|
|
11
|
+
|
|
12
|
+
### A clearer map and upload status
|
|
13
|
+
|
|
14
|
+
- The onboard map now matches Wake Logger's live instrument view, with layouts for phones and tablets and a full-screen option.
|
|
15
|
+
- Historical uploads show percentage progress and an estimated time remaining once upload speed can be measured. A coloured live-tracking indicator makes connection status easier to see.
|
|
16
|
+
- Expandable recording details keep the main upload view compact, and only real trips are created from your recordings.
|
|
17
|
+
|
|
18
|
+
### Crew can use their own Signal K accounts
|
|
19
|
+
|
|
20
|
+
- The onboard map no longer requires the Signal K administrator login. Any crew member with a Signal K account can sign in and view the map.
|
|
21
|
+
- Changing live tracking or activating a course needs an account with read/write access — ask your Signal K administrator to set this for your account. Unpairing the vessel still requires an administrator.
|
|
22
|
+
- If your crew don't have Signal K accounts yet, an administrator can add them in Signal K's **Security** settings.
|
|
23
|
+
|
|
6
24
|
|
|
7
25
|
## [0.2.0-beta.4] - 2026-09-14
|
|
8
26
|
|
package/README.md
CHANGED
|
@@ -39,9 +39,11 @@ Recording and uploading are separate. Keep Signal K and the Wake Logger plugin r
|
|
|
39
39
|
|
|
40
40
|
**For normal use:** Leave **Upload mode** set to **Automatic upload**. If internet access drops, the plugin stores readings onboard and uploads them when the connection returns.
|
|
41
41
|
|
|
42
|
-
**To deliberately defer uploading:** Pair first, then
|
|
42
|
+
**To deliberately defer uploading:** Pair first, then turn **Live tracking** off on the onboard Wake Logger map. The plugin keeps recording locally, up to your storage and age limits. Turn it on when you are ready to send your live position and upload stored history. Changing the switch does not end a trip or restart recording, and the setting survives restarts.
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
You can also choose **Record locally** or **Automatic upload** in the plugin's **Upload mode** setting. These controls change the same setting.
|
|
45
|
+
|
|
46
|
+
On reconnecting, the latest position is sent promptly while stored history uploads in the background. With the supporting Wake Logger service update, your vessel view shows the percentage of stored history uploaded and an estimated time remaining once there is enough upload progress to measure. Estimates pause when the connection is lost. Detailed recording updates are available under **Upload details**. Wake Logger uses the recorded movement and times to identify trips; switching live tracking does not itself create a new trip. Missing or rejected readings are flagged rather than presented as a complete trip.
|
|
45
47
|
|
|
46
48
|
**Before a long outing:** Check available storage and your queue limits. The default limits are seven days or 250 MB, whichever is reached first. If a limit is reached, the oldest queued readings are discarded; plugin status reports the dropped count. Recording locally controls this plugin's Wake Logger connections only—it does not switch off other apps or your boat's internet access.
|
|
47
49
|
|
|
@@ -49,9 +51,9 @@ On reconnecting, the latest position is sent promptly while stored history uploa
|
|
|
49
51
|
|
|
50
52
|
Select a saved race course for your vessel in Wake Logger while internet access is available. Check that the course has synchronised before departure. The downloaded course stays on the Signal K server and remains available offline.
|
|
51
53
|
|
|
52
|
-
Open the **Wake Logger webapp** from Signal K's Web Apps list, using a phone, tablet or computer connected to the boat's network. Sign in to Signal K if prompted.
|
|
54
|
+
Open the **Wake Logger webapp** from Signal K's Web Apps list, using a phone, tablet or computer connected to the boat's network. Sign in to Signal K if prompted. Any Signal K user account can view the onboard map; changing live tracking or activating a course requires an account with read/write access.
|
|
53
55
|
|
|
54
|
-
The onboard view shows the complete course, your boat, the next mark and current leg. Distance, bearing, cross-track error, VMG and arrival estimates appear when Signal K can calculate them; unavailable readings are left clearly marked.
|
|
56
|
+
The onboard map uses the same instrument styling as Wake Logger's live view, adapts to phone and tablet screens, and includes a full-screen view. It shows the complete course, your boat, the next mark and current leg. Distance, bearing, cross-track error, VMG and arrival estimates appear when Signal K can calculate them; unavailable readings are left clearly marked.
|
|
55
57
|
|
|
56
58
|
Use **Advance point** to move to the next course point, or select a point and choose **Set point** to correct your progress. Progression is manual in this release: it does not automatically judge start-line crossings, mark roundings, gates or finishes.
|
|
57
59
|
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
7
7
|
const course_store_1 = require("./courses/course-store");
|
|
8
8
|
const protocol_1 = require("./courses/protocol");
|
|
9
9
|
const native_course_1 = require("./courses/native-course");
|
|
10
|
+
const history_1 = require("./tracking/history");
|
|
10
11
|
const schema_1 = require("./config/schema");
|
|
11
12
|
const defaults_1 = require("./config/defaults");
|
|
12
13
|
const factory_1 = require("./outbox/factory");
|
|
@@ -21,18 +22,29 @@ const sampler_1 = require("./telemetry/sampler");
|
|
|
21
22
|
const mqtt_client_1 = require("./transport/mqtt-client");
|
|
22
23
|
const recording_store_1 = require("./trips/recording-store");
|
|
23
24
|
const constructor = (app) => {
|
|
24
|
-
const pluginVersion =
|
|
25
|
+
const pluginVersion = JSON.parse((0, node_fs_1.readFileSync)(node_path_1.default.join(__dirname, '..', 'package.json'), 'utf8')).version;
|
|
25
26
|
let generation = 0;
|
|
26
27
|
let stopSubscription;
|
|
27
28
|
let sampleTimer;
|
|
28
29
|
let statusTimer;
|
|
29
30
|
let outbox;
|
|
31
|
+
let cachedQueueStats;
|
|
32
|
+
let queueStatsAt;
|
|
30
33
|
let transport;
|
|
31
34
|
let courses;
|
|
32
35
|
let courseInitializationError;
|
|
33
36
|
let courseFailureAcknowledgement;
|
|
34
37
|
let tripState;
|
|
35
38
|
let activeUploadMode = 'automatic';
|
|
39
|
+
let persistedUploadMode = 'automatic';
|
|
40
|
+
let persistenceError;
|
|
41
|
+
let rawConfiguration = {};
|
|
42
|
+
let trackingOperation = Promise.resolve();
|
|
43
|
+
let trackingRevision = 0;
|
|
44
|
+
let ready = false;
|
|
45
|
+
let currentSampler;
|
|
46
|
+
let connectTransport;
|
|
47
|
+
let history;
|
|
36
48
|
let sampleOperation = Promise.resolve();
|
|
37
49
|
let connectionState = 'unpaired';
|
|
38
50
|
let activeProfile;
|
|
@@ -47,6 +59,9 @@ const constructor = (app) => {
|
|
|
47
59
|
description: 'Live vessel tracking and resilient Signal K telemetry for Wake Logger',
|
|
48
60
|
schema: schema_1.configSchema,
|
|
49
61
|
start(configuration) {
|
|
62
|
+
ready = false;
|
|
63
|
+
trackingRevision += 1;
|
|
64
|
+
rawConfiguration = structuredClone(configuration);
|
|
50
65
|
pairingAbortController?.abort();
|
|
51
66
|
associationAbortController?.abort();
|
|
52
67
|
// Stop all transmission immediately when a saved configuration restarts us.
|
|
@@ -57,8 +72,10 @@ const constructor = (app) => {
|
|
|
57
72
|
await stopping;
|
|
58
73
|
await previous?.catch(() => undefined);
|
|
59
74
|
await cleanupResources();
|
|
60
|
-
if (thisGeneration === generation)
|
|
75
|
+
if (thisGeneration === generation) {
|
|
61
76
|
await initialise((0, defaults_1.parseConfig)(configuration), thisGeneration);
|
|
77
|
+
ready = thisGeneration === generation;
|
|
78
|
+
}
|
|
62
79
|
})().catch((error) => {
|
|
63
80
|
if (thisGeneration !== generation)
|
|
64
81
|
return;
|
|
@@ -68,6 +85,8 @@ const constructor = (app) => {
|
|
|
68
85
|
});
|
|
69
86
|
},
|
|
70
87
|
async stop() {
|
|
88
|
+
ready = false;
|
|
89
|
+
trackingRevision += 1;
|
|
71
90
|
const running = initialization;
|
|
72
91
|
generation += 1;
|
|
73
92
|
pairingAbortController?.abort();
|
|
@@ -78,21 +97,86 @@ const constructor = (app) => {
|
|
|
78
97
|
app.setPluginStatus('Wake Logger: Stopped');
|
|
79
98
|
},
|
|
80
99
|
registerWithRouter(router) {
|
|
81
|
-
|
|
82
|
-
//
|
|
83
|
-
|
|
84
|
-
|
|
100
|
+
const pluginRouter = router;
|
|
101
|
+
// The onboard app serves ordinary crew accounts: status reads accept any
|
|
102
|
+
// signed-in user and control actions require readwrite (or admin).
|
|
103
|
+
// Unpairing stays administrator-only because routes registered directly
|
|
104
|
+
// on the plugin router keep Signal K's administrator default. Older
|
|
105
|
+
// Signal K servers without access() fall back to that default for all
|
|
106
|
+
// routes.
|
|
107
|
+
const readRouter = pluginRouter.access?.('readonly') ?? pluginRouter;
|
|
108
|
+
const writeRouter = pluginRouter.access?.('readwrite') ?? pluginRouter;
|
|
109
|
+
readRouter.get?.('/tracking', async (_request, response, next) => {
|
|
110
|
+
try {
|
|
111
|
+
response.status(200).json(await trackingStatus());
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
next(error);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
writeRouter.post('/tracking', async (request, response, next) => {
|
|
118
|
+
const mode = request.body?.uploadMode;
|
|
119
|
+
if (mode !== 'automatic' && mode !== 'local_only') {
|
|
120
|
+
response.status(400).json({ error: 'invalid_upload_mode' });
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (!ready || !outbox || !transport || connectionState === 'device_revoked') {
|
|
124
|
+
response.status(409).json({ error: 'tracking_unavailable', ...await trackingStatus() });
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const revision = ++trackingRevision;
|
|
128
|
+
const thisGeneration = generation;
|
|
129
|
+
// Off wins immediately, even while an earlier options save is pending.
|
|
130
|
+
const stopping = mode === 'local_only' ? pauseTransmission() : undefined;
|
|
131
|
+
const pauseGuard = mode === 'local_only'
|
|
132
|
+
? (0, history_1.durableJson)(node_path_1.default.join(app.getDataDirPath(), 'tracking-pause.json'), { paused: true, at: Date.now() }).catch((error) => { app.error(`Unable to persist immediate tracking pause: ${safeError(error)}`); })
|
|
133
|
+
: undefined;
|
|
134
|
+
const operation = trackingOperation.then(async () => {
|
|
135
|
+
await stopping;
|
|
136
|
+
await pauseGuard;
|
|
137
|
+
if (generation !== thisGeneration || !ready)
|
|
138
|
+
throw new Error('tracking_restarted');
|
|
139
|
+
if (revision !== trackingRevision)
|
|
140
|
+
return;
|
|
141
|
+
const wasAutomatic = activeUploadMode === 'automatic';
|
|
142
|
+
await persistTrackingMode(mode, revision, thisGeneration);
|
|
143
|
+
if (revision === trackingRevision && generation === thisGeneration) {
|
|
144
|
+
activeUploadMode = mode;
|
|
145
|
+
if (mode === 'automatic' && !wasAutomatic) {
|
|
146
|
+
if (outbox)
|
|
147
|
+
await updateHistory(await outbox.stats(), true);
|
|
148
|
+
await transport?.stop(false);
|
|
149
|
+
connectTransport?.();
|
|
150
|
+
}
|
|
151
|
+
await updateStatus();
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
trackingOperation = operation.catch(() => undefined);
|
|
155
|
+
try {
|
|
156
|
+
await operation;
|
|
157
|
+
response.status(200).json(await trackingStatus());
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (persistenceError)
|
|
161
|
+
response.status(503).json({ error: 'tracking_persistence_failed', ...await trackingStatus() });
|
|
162
|
+
else if (error instanceof Error && error.message === 'tracking_restarted')
|
|
163
|
+
response.status(409).json({ error: 'tracking_restarted', ...await trackingStatus() });
|
|
164
|
+
else
|
|
165
|
+
next(error);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
readRouter.get?.('/course', async (_request, response, next) => {
|
|
85
169
|
try {
|
|
86
170
|
response.status(200).json({
|
|
87
171
|
...(await courses?.status() ?? { desired: null, cachedCourse: null, acknowledgement: null, routePoints: [], native: { available: false, course: null, ownedRouteId: null, activeMatchesDesired: false, conflict: false } }),
|
|
88
|
-
uploadMode: activeUploadMode, connectionState, courseError: courseInitializationError
|
|
172
|
+
uploadMode: activeUploadMode, connectionState, courseError: courseInitializationError ?? transport?.transportMetrics().courseSyncError
|
|
89
173
|
});
|
|
90
174
|
}
|
|
91
175
|
catch (error) {
|
|
92
176
|
next(error);
|
|
93
177
|
}
|
|
94
178
|
});
|
|
95
|
-
|
|
179
|
+
writeRouter.post('/course/activate', async (_request, response, next) => {
|
|
96
180
|
try {
|
|
97
181
|
if (!courses)
|
|
98
182
|
throw new protocol_1.CourseError('no_selected_course');
|
|
@@ -107,7 +191,7 @@ const constructor = (app) => {
|
|
|
107
191
|
next(error);
|
|
108
192
|
}
|
|
109
193
|
});
|
|
110
|
-
|
|
194
|
+
writeRouter.post('/course/map-readiness', async (request, response, next) => {
|
|
111
195
|
try {
|
|
112
196
|
if (!courses)
|
|
113
197
|
throw new protocol_1.CourseError('no_selected_course');
|
|
@@ -123,8 +207,11 @@ const constructor = (app) => {
|
|
|
123
207
|
next(error);
|
|
124
208
|
}
|
|
125
209
|
});
|
|
126
|
-
|
|
210
|
+
// Registered directly: unpairing keeps Signal K's admin-only default.
|
|
211
|
+
pluginRouter.post('/forget-credentials', async (_request, response, next) => {
|
|
127
212
|
try {
|
|
213
|
+
ready = false;
|
|
214
|
+
trackingRevision += 1;
|
|
128
215
|
generation += 1;
|
|
129
216
|
pairingAbortController?.abort();
|
|
130
217
|
associationAbortController?.abort();
|
|
@@ -151,6 +238,7 @@ const constructor = (app) => {
|
|
|
151
238
|
openapi: '3.0.3',
|
|
152
239
|
info: { title: 'Wake Logger Signal K plugin', version: pluginVersion },
|
|
153
240
|
paths: {
|
|
241
|
+
'/tracking': { get: { summary: 'Read live upload mode and the local queue', responses: { '200': { description: 'Tracking status' } } }, post: { summary: 'Persist and apply live upload mode without restarting recording', responses: { '200': { description: 'Tracking mode saved' }, '400': { description: 'Invalid mode' }, '409': { description: 'Tracking unavailable' }, '503': { description: 'Persistence failed; see actual mode in response' } } } },
|
|
154
242
|
'/course': { get: { summary: 'Read cached and native course state', responses: { '200': { description: 'Course state' } } } },
|
|
155
243
|
'/course/map-readiness': { post: { summary: 'Report locally verified chart readiness for a course revision', responses: { '200': { description: 'Readiness saved' }, '409': { description: 'Invalid or stale revision' } } } },
|
|
156
244
|
'/course/activate': { post: { summary: 'Explicitly activate the selected cached course', responses: { '200': { description: 'Course active' }, '409': { description: 'No selected course or native course unavailable' } } } },
|
|
@@ -173,6 +261,11 @@ const constructor = (app) => {
|
|
|
173
261
|
sampleTimer = undefined;
|
|
174
262
|
statusTimer = undefined;
|
|
175
263
|
await transport?.stop();
|
|
264
|
+
await trackingOperation;
|
|
265
|
+
await history?.close();
|
|
266
|
+
history = undefined;
|
|
267
|
+
currentSampler = undefined;
|
|
268
|
+
connectTransport = undefined;
|
|
176
269
|
await sampleOperation;
|
|
177
270
|
await courses?.close();
|
|
178
271
|
courses = undefined;
|
|
@@ -181,13 +274,29 @@ const constructor = (app) => {
|
|
|
181
274
|
transport = undefined;
|
|
182
275
|
await outbox?.close();
|
|
183
276
|
outbox = undefined;
|
|
277
|
+
cachedQueueStats = undefined;
|
|
278
|
+
queueStatsAt = undefined;
|
|
184
279
|
tripState = undefined;
|
|
185
280
|
pairingAbortController = undefined;
|
|
186
281
|
associationAbortController = undefined;
|
|
187
282
|
associationCheck = undefined;
|
|
188
283
|
}
|
|
189
284
|
async function initialise(config, thisGeneration) {
|
|
285
|
+
persistedUploadMode = config.uploadMode;
|
|
286
|
+
persistenceError = undefined;
|
|
190
287
|
activeUploadMode = config.uploadMode;
|
|
288
|
+
try {
|
|
289
|
+
await node_fs_1.promises.access(node_path_1.default.join(app.getDataDirPath(), 'tracking-pause.json'));
|
|
290
|
+
activeUploadMode = 'local_only';
|
|
291
|
+
persistenceError = 'A previous save failed; uploads remain paused until this setting is saved successfully.';
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
if (error.code !== 'ENOENT') {
|
|
295
|
+
activeUploadMode = 'local_only';
|
|
296
|
+
persistenceError = 'Unable to read the upload safety state; uploads remain paused.';
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
config.uploadMode = activeUploadMode;
|
|
191
300
|
const dataDirectory = app.getDataDirPath();
|
|
192
301
|
const credentialStore = new credentials_1.CredentialStore(node_path_1.default.join(dataDirectory, 'identity'));
|
|
193
302
|
let credentials = await credentialStore.load();
|
|
@@ -265,7 +374,8 @@ const constructor = (app) => {
|
|
|
265
374
|
const legacy = credentials.telemetryProfile;
|
|
266
375
|
const profile = await profileStore.load() ?? credentialProfile ?? (0, profile_1.legacyProfile)(legacy?.sample_period_ms ?? config.samplePeriodMs, legacy?.batch_size);
|
|
267
376
|
activeProfile = profile;
|
|
268
|
-
const sampler = new sampler_1.PathSampler(profile,
|
|
377
|
+
const sampler = new sampler_1.PathSampler(profile, activeUploadMode === 'local_only' ? 'NORMAL' : 'OFFLINE');
|
|
378
|
+
currentSampler = sampler;
|
|
269
379
|
const selected = await (0, factory_1.createOutbox)(app, dataDirectory, credentials.deviceId, {
|
|
270
380
|
maxBytes: config.maxOutboxMb * 1024 * 1024,
|
|
271
381
|
maxAgeMs: config.maxOutboxDays * 24 * 60 * 60 * 1000,
|
|
@@ -273,6 +383,16 @@ const constructor = (app) => {
|
|
|
273
383
|
}, credentials.outboxBinding?.backend);
|
|
274
384
|
outbox = selected.store;
|
|
275
385
|
storageBackend = selected.backend;
|
|
386
|
+
history = new history_1.UploadHistory(node_path_1.default.join(dataDirectory, 'uploads', credentials.deviceId, 'state.json'));
|
|
387
|
+
try {
|
|
388
|
+
await history.open();
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
app.error(`Wake Logger upload progress unavailable: ${safeError(error)}`);
|
|
392
|
+
history = undefined;
|
|
393
|
+
}
|
|
394
|
+
if (history)
|
|
395
|
+
await updateHistory(await outbox.stats(), activeUploadMode === 'automatic');
|
|
276
396
|
let nextSequence = (await outbox.stats()).currentSequence + 1;
|
|
277
397
|
if (!credentials.outboxBinding) {
|
|
278
398
|
credentials.outboxBinding = { version: 1, backend: selected.backend, initializedAt: Date.now() };
|
|
@@ -280,40 +400,49 @@ const constructor = (app) => {
|
|
|
280
400
|
}
|
|
281
401
|
if (generation !== thisGeneration)
|
|
282
402
|
return;
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
403
|
+
connectTransport = () => {
|
|
404
|
+
const instance = new mqtt_client_1.WakeLoggerTransport(credentials, selected.store, {
|
|
405
|
+
profile: activeProfile ?? profile,
|
|
406
|
+
onState: (state, detail) => {
|
|
407
|
+
if (transport !== instance || activeUploadMode !== 'automatic' || connectionState === 'device_revoked')
|
|
408
|
+
return;
|
|
409
|
+
connectionState = state;
|
|
410
|
+
void updateStatus(detail, state === 'online');
|
|
411
|
+
if (state === 'authentication_failed')
|
|
412
|
+
void confirmAssociation(credentials, thisGeneration);
|
|
413
|
+
},
|
|
414
|
+
onCourse: async (payload) => {
|
|
415
|
+
if (courses)
|
|
416
|
+
return courses.receive(payload);
|
|
417
|
+
let revision = 0;
|
|
418
|
+
try {
|
|
419
|
+
revision = (0, protocol_1.parseCourse)(payload).revision;
|
|
420
|
+
}
|
|
421
|
+
catch { /* Report unavailable storage without accepting a new course. */ }
|
|
422
|
+
courseFailureAcknowledgement = { v: 1, revision, status: 'rejected', errorCode: 'course_storage_unavailable' };
|
|
423
|
+
return courseFailureAcknowledgement;
|
|
424
|
+
},
|
|
425
|
+
getCourseAcknowledgement: () => courses?.acknowledgement() ?? courseFailureAcknowledgement,
|
|
426
|
+
onRecordingAcks: async (acks) => {
|
|
427
|
+
sampleOperation = sampleOperation.then(() => trip.acknowledge(acks));
|
|
428
|
+
await sampleOperation;
|
|
429
|
+
},
|
|
430
|
+
onMode: (mode) => { if (transport === instance)
|
|
431
|
+
sampler.updateMode(activeUploadMode === 'local_only' ? 'NORMAL' : mode); },
|
|
432
|
+
onProfile: async (replacement) => {
|
|
433
|
+
await profileStore.save(replacement);
|
|
434
|
+
activeProfile = replacement;
|
|
435
|
+
sampler.updateProfile(replacement);
|
|
436
|
+
},
|
|
437
|
+
debug: config.debugTelemetry ? (message) => app.debug(message) : undefined
|
|
438
|
+
});
|
|
439
|
+
transport = instance;
|
|
440
|
+
instance.start();
|
|
441
|
+
};
|
|
442
|
+
// Keep an inert transport in local-only mode for local status/ACK methods.
|
|
443
|
+
if (activeUploadMode === 'local_only') {
|
|
444
|
+
transport = new mqtt_client_1.WakeLoggerTransport(credentials, selected.store, { profile, onState: () => undefined });
|
|
445
|
+
}
|
|
317
446
|
stopSubscription = (0, subscriber_1.subscribeToTelemetry)(app, (delta) => normaliser.ingest(delta));
|
|
318
447
|
const sample = async () => {
|
|
319
448
|
if (generation !== thisGeneration)
|
|
@@ -347,18 +476,21 @@ const constructor = (app) => {
|
|
|
347
476
|
};
|
|
348
477
|
scheduleSample();
|
|
349
478
|
statusTimer = setInterval(() => void updateStatus(), 10_000);
|
|
350
|
-
if (
|
|
351
|
-
|
|
479
|
+
if (activeUploadMode === 'automatic')
|
|
480
|
+
connectTransport();
|
|
352
481
|
else
|
|
353
482
|
connectionState = 'recording_locally';
|
|
354
483
|
await updateStatus();
|
|
355
484
|
}
|
|
356
|
-
async function updateStatus(detail) {
|
|
485
|
+
async function updateStatus(detail, beginHistory = false) {
|
|
357
486
|
if (connectionState === 'unpaired' || !outbox) {
|
|
358
487
|
app.setPluginStatus('Wake Logger: Not paired');
|
|
359
488
|
return;
|
|
360
489
|
}
|
|
361
490
|
const stats = await outbox.stats();
|
|
491
|
+
cachedQueueStats = stats;
|
|
492
|
+
queueStatsAt = Date.now();
|
|
493
|
+
await updateHistory(stats, beginHistory);
|
|
362
494
|
const queue = `${stats.messageCount} queued, ${(stats.diskBytes / 1024 / 1024).toFixed(1)} MB`;
|
|
363
495
|
const dropped = stats.droppedCount ? `, ${stats.droppedCount} dropped` : '';
|
|
364
496
|
const sequence = `, seq ${stats.acknowledgedSequence}/${stats.currentSequence}`;
|
|
@@ -366,6 +498,7 @@ const constructor = (app) => {
|
|
|
366
498
|
const extra = detail ? ` — ${detail}` : '';
|
|
367
499
|
transport?.updateStatus({
|
|
368
500
|
pluginVersion,
|
|
501
|
+
historicalUpload: history?.current(),
|
|
369
502
|
uploadMode: activeUploadMode,
|
|
370
503
|
recordings: tripState?.statusManifests(),
|
|
371
504
|
connectionState,
|
|
@@ -388,6 +521,67 @@ const constructor = (app) => {
|
|
|
388
521
|
app.setPluginStatus(`Wake Logger: ${connectionState} — ${queue}${dropped}${sequence}${trip}${extra}`);
|
|
389
522
|
void transport?.publishCourseAcknowledgement().catch((error) => app.error(`Unable to report Wake Logger course: ${safeError(error)}`));
|
|
390
523
|
}
|
|
524
|
+
async function updateHistory(stats, begin = false) {
|
|
525
|
+
try {
|
|
526
|
+
await history?.update(stats, begin);
|
|
527
|
+
}
|
|
528
|
+
catch (error) {
|
|
529
|
+
app.error(`Wake Logger upload progress unavailable: ${safeError(error)}`);
|
|
530
|
+
history = undefined;
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
async function trackingStatus() {
|
|
534
|
+
// File outbox stats scan the durable queue; browser polls reuse the
|
|
535
|
+
// normal status refresh instead of taking the outbox lock every request.
|
|
536
|
+
const stats = cachedQueueStats;
|
|
537
|
+
return {
|
|
538
|
+
uploadMode: activeUploadMode, liveTrackingEnabled: activeUploadMode === 'automatic',
|
|
539
|
+
persistedUploadMode, persistenceError: persistenceError ?? null,
|
|
540
|
+
paired: !!outbox, recording: !!stopSubscription && !!sampleTimer,
|
|
541
|
+
available: ready && !!outbox && connectionState !== 'device_revoked',
|
|
542
|
+
connectionState, historicalUpload: history?.current() ?? null,
|
|
543
|
+
queue: stats ? { messageCount: stats.messageCount, diskBytes: stats.diskBytes,
|
|
544
|
+
oldestCapturedAt: stats.oldestCapturedAt ?? null, acknowledgedSequence: stats.acknowledgedSequence,
|
|
545
|
+
currentSequence: stats.currentSequence, droppedCount: stats.droppedCount } : null,
|
|
546
|
+
queueStatsAt: queueStatsAt ?? null, at: Date.now()
|
|
547
|
+
};
|
|
548
|
+
}
|
|
549
|
+
function pauseTransmission() {
|
|
550
|
+
activeUploadMode = 'local_only';
|
|
551
|
+
pairingAbortController?.abort();
|
|
552
|
+
associationAbortController?.abort();
|
|
553
|
+
const stopping = transport?.stop(false);
|
|
554
|
+
currentSampler?.updateMode('NORMAL');
|
|
555
|
+
connectionState = 'recording_locally';
|
|
556
|
+
return stopping;
|
|
557
|
+
}
|
|
558
|
+
async function persistTrackingMode(mode, revision, thisGeneration) {
|
|
559
|
+
const guard = node_path_1.default.join(app.getDataDirPath(), 'tracking-pause.json');
|
|
560
|
+
try {
|
|
561
|
+
const options = app.readPluginOptions?.();
|
|
562
|
+
const configuration = { ...(options?.configuration ?? rawConfiguration), uploadMode: mode };
|
|
563
|
+
await new Promise((resolve, reject) => {
|
|
564
|
+
app.savePluginOptions(configuration, (error) => error ? reject(error) : resolve());
|
|
565
|
+
});
|
|
566
|
+
rawConfiguration = configuration;
|
|
567
|
+
persistedUploadMode = mode;
|
|
568
|
+
if (revision === trackingRevision && generation === thisGeneration)
|
|
569
|
+
await node_fs_1.promises.unlink(guard).catch((error) => { if (error.code !== 'ENOENT')
|
|
570
|
+
throw error; });
|
|
571
|
+
persistenceError = undefined;
|
|
572
|
+
}
|
|
573
|
+
catch (error) {
|
|
574
|
+
persistenceError = safeError(error);
|
|
575
|
+
await pauseTransmission();
|
|
576
|
+
try {
|
|
577
|
+
await (0, history_1.durableJson)(guard, { paused: true, at: Date.now() });
|
|
578
|
+
}
|
|
579
|
+
catch {
|
|
580
|
+
persistenceError += '; unable to persist the safety pause — restart persistence is not confirmed';
|
|
581
|
+
}
|
|
582
|
+
throw error;
|
|
583
|
+
}
|
|
584
|
+
}
|
|
391
585
|
function confirmAssociation(credentials, thisGeneration) {
|
|
392
586
|
if (associationCheck)
|
|
393
587
|
return associationCheck;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AACA,qCAAwC;AACxC,0DAA4B;AAC5B,yDAAoD;AACpD,iDAAyF;AACzF,2DAAmF;AACnF,4CAA8C;AAC9C,gDAA4E;AAC5E,8CAA+C;AAE/C,qEAAqE;AACrE,uDAAkI;AAClI,6DAA4E;AAC5E,qDAA0D;AAC1D,qDAA2D;AAC3D,iDAAiG;AACjG,6DAAiE;AACjE,iDAAiD;AACjD,yDAAmF;AAEnF,6DAAwD;AAExD,MAAM,WAAW,GAAsB,CAAC,GAAc,EAAU,EAAE;IAChE,MAAM,aAAa,GAAG,cAAc,CAAA;IACpC,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,gBAA0C,CAAA;IAC9C,IAAI,WAAuC,CAAA;IAC3C,IAAI,WAAuC,CAAA;IAC3C,IAAI,MAA+B,CAAA;IACnC,IAAI,SAA0C,CAAA;IAC9C,IAAI,OAAgC,CAAA;IACpC,IAAI,yBAA6C,CAAA;IACjD,IAAI,4BAA+D,CAAA;IACnE,IAAI,SAAqC,CAAA;IACzC,IAAI,gBAAgB,GAA+B,WAAW,CAAA;IAC9D,IAAI,eAAe,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAA;IACtD,IAAI,eAAe,GAA0E,UAAU,CAAA;IACvG,IAAI,aAA2C,CAAA;IAC/C,IAAI,cAAc,GAAwB,MAAM,CAAA;IAChD,IAAI,cAAyC,CAAA;IAC7C,IAAI,sBAAmD,CAAA;IACvD,IAAI,0BAAuD,CAAA;IAC3D,IAAI,gBAA2C,CAAA;IAE/C,MAAM,MAAM,GAAW;QACrB,EAAE,EAAE,oBAAoB;QACxB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,uEAAuE;QACpF,MAAM,EAAE,qBAAY;QACpB,KAAK,CAAC,aAAqB;YACzB,sBAAsB,EAAE,KAAK,EAAE,CAAA;YAC/B,0BAA0B,EAAE,KAAK,EAAE,CAAA;YACnC,4EAA4E;YAC5E,MAAM,QAAQ,GAAG,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;YACvC,MAAM,QAAQ,GAAG,cAAc,CAAA;YAC/B,MAAM,cAAc,GAAG,EAAE,UAAU,CAAA;YACnC,cAAc,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC3B,MAAM,QAAQ,CAAA;gBACd,MAAM,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;gBACtC,MAAM,gBAAgB,EAAE,CAAA;gBACxB,IAAI,cAAc,KAAK,UAAU;oBAAE,MAAM,UAAU,CAAC,IAAA,sBAAW,EAAC,aAAa,CAAC,EAAE,cAAc,CAAC,CAAA;YACjG,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC5B,IAAI,cAAc,KAAK,UAAU;oBAAE,OAAM;gBACzC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;gBAChC,GAAG,CAAC,cAAc,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAA;gBACnE,GAAG,CAAC,KAAK,CAAC,sCAAsC,OAAO,EAAE,CAAC,CAAA;YAC5D,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,CAAC,IAAI;YACR,MAAM,OAAO,GAAG,cAAc,CAAA;YAC9B,UAAU,IAAI,CAAC,CAAA;YACf,sBAAsB,EAAE,KAAK,EAAE,CAAA;YAC/B,0BAA0B,EAAE,KAAK,EAAE,CAAA;YACnC,MAAM,OAAO,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,gBAAgB,EAAE,CAAA;YACxB,cAAc,GAAG,SAAS,CAAA;YAC1B,GAAG,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAA;QAC7C,CAAC;QACD,kBAAkB,CAAC,MAAM;YACvB,yEAAyE;YACzE,2EAA2E;YAC3E,MAAM,WAAW,GAAG,MAOnB,CAAA;YACD,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC9D,IAAI,CAAC;oBACH,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACxB,GAAG,CAAC,MAAM,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC;wBAC3N,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,yBAAyB;qBACtF,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAAC,CAAC;YACjC,CAAC,CAAC,CAAA;YACF,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBACtE,IAAI,CAAC;oBACH,IAAI,CAAC,OAAO;wBAAE,MAAM,IAAI,sBAAW,CAAC,oBAAoB,CAAC,CAAA;oBACzD,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAA;oBACxB,KAAK,SAAS,EAAE,4BAA4B,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;oBAClI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC,CAAA;gBACzG,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,sBAAW;wBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;;wBAC7E,IAAI,CAAC,KAAK,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CAAA;YACF,WAAW,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBAC1E,IAAI,CAAC;oBACH,IAAI,CAAC,OAAO;wBAAE,MAAM,IAAI,sBAAW,CAAC,oBAAoB,CAAC,CAAA;oBACzD,MAAM,IAAI,GAAI,OAA+D,CAAC,IAAI,CAAA;oBAClF,MAAM,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;oBAC3D,KAAK,SAAS,EAAE,4BAA4B,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,oCAAoC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;oBAClI,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;gBACnD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,KAAK,YAAY,sBAAW;wBAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;;wBAC7E,IAAI,CAAC,KAAK,CAAC,CAAA;gBAClB,CAAC;YACH,CAAC,CAAC,CAAA;YACF,WAAW,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBACzE,IAAI,CAAC;oBACH,UAAU,IAAI,CAAC,CAAA;oBACf,sBAAsB,EAAE,KAAK,EAAE,CAAA;oBAC/B,0BAA0B,EAAE,KAAK,EAAE,CAAA;oBACnC,MAAM,cAAc,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;oBAC5C,MAAM,gBAAgB,EAAE,CAAA;oBACxB,MAAM,KAAK,GAAG,IAAI,6BAAe,CAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;oBAC9E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE,CAAA;oBACnC,cAAc,GAAG,SAAS,CAAA;oBAC1B,eAAe,GAAG,UAAU,CAAA;oBAC5B,GAAG,CAAC,eAAe,CAAC,6EAA6E,CAAC,CAAA;oBAClG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACxB,SAAS,EAAE,MAAM,CAAC,SAAS;wBAC3B,eAAe,EAAE,MAAM,CAAC,QAAQ;wBAChC,iBAAiB,EAAE,IAAI;wBACvB,IAAI,EAAE,kDAAkD;qBACzD,CAAC,CAAA;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBAAC,CAAC;YACjC,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;YACjB,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,OAAO,EAAE,aAAa,EAAE;YACtE,KAAK,EAAE;gBACL,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,qCAAqC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE;gBAC7H,uBAAuB,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,+DAA+D,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,2BAA2B,EAAE,EAAE,EAAE,EAAE;gBAC9N,kBAAkB,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,gDAAgD,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,iDAAiD,EAAE,EAAE,EAAE,EAAE;gBAC9N,qBAAqB,EAAE;oBACrB,IAAI,EAAE;wBACJ,OAAO,EAAE,qEAAqE;wBAC9E,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE,EAAE;qBACjF;iBACF;aACF;SACF,CAAC;KACH,CAAA;IAED,KAAK,UAAU,gBAAgB;QAC7B,gBAAgB,EAAE,EAAE,CAAA;QACpB,gBAAgB,GAAG,SAAS,CAAA;QAC5B,IAAI,WAAW;YAAE,YAAY,CAAC,WAAW,CAAC,CAAA;QAC1C,IAAI,WAAW;YAAE,aAAa,CAAC,WAAW,CAAC,CAAA;QAC3C,WAAW,GAAG,SAAS,CAAA;QACvB,WAAW,GAAG,SAAS,CAAA;QACvB,MAAM,SAAS,EAAE,IAAI,EAAE,CAAA;QACvB,MAAM,eAAe,CAAA;QACrB,MAAM,OAAO,EAAE,KAAK,EAAE,CAAA;QACtB,OAAO,GAAG,SAAS,CAAA;QACnB,yBAAyB,GAAG,SAAS,CAAA;QACrC,4BAA4B,GAAG,SAAS,CAAA;QACxC,SAAS,GAAG,SAAS,CAAA;QACrB,MAAM,MAAM,EAAE,KAAK,EAAE,CAAA;QACrB,MAAM,GAAG,SAAS,CAAA;QAClB,SAAS,GAAG,SAAS,CAAA;QACrB,sBAAsB,GAAG,SAAS,CAAA;QAClC,0BAA0B,GAAG,SAAS,CAAA;QACtC,gBAAgB,GAAG,SAAS,CAAA;IAC9B,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,MAAoB,EAAE,cAAsB;QACpE,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAA;QACpC,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,EAAE,CAAA;QAC1C,MAAM,eAAe,GAAG,IAAI,6BAAe,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAA;QACjF,IAAI,WAAW,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,CAAA;QAC9C,MAAM,0BAA0B,GAAG,MAAM,eAAe,CAAC,0BAA0B,EAAE,CAAA;QACrF,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW,IAAI,IAAA,uCAAyB,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,0BAA0B,CAAC,EAAE,CAAC;YAChI,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,sBAAsB,GAAG,UAAU,CAAA;YACnC,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,IAAA,oCAAmB,EAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,eAAe,CAAC,cAAc,EAAE,EAAE;oBAC9H,MAAM,EAAE,UAAU,CAAC,MAAM;oBACzB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;wBAC9B,IAAI,UAAU,KAAK,cAAc;4BAAE,GAAG,CAAC,eAAe,CAAC,gCAAgC,OAAO,IAAI,OAAO,EAAE,CAAC,CAAA;oBAC9G,CAAC;oBACD,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;wBACrC,IAAI,UAAU,KAAK,cAAc;4BAAE,GAAG,CAAC,eAAe,CAAC,8BAA8B,OAAO,IAAI,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAA;oBACpJ,CAAC;iBACF,CAAC,CAAA;gBACF,IAAI,UAAU,KAAK,cAAc;oBAAE,OAAM;gBACzC,WAAW,CAAC,sBAAsB,GAAG,IAAA,oCAAsB,EAAC,MAAM,CAAC,WAAW,CAAC,CAAA;gBAC/E,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBACvC,WAAW,GAAG,WAAW,CAAA;YAC3B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,UAAU,KAAK,cAAc,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAM;gBACtE,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,eAAe,GAAG,UAAU,CAAA;oBAC5B,MAAM,OAAO,GAAG,KAAK,YAAY,6BAAY,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAA;oBACrE,MAAM,cAAc,GAAG,KAAK,YAAY,6BAAY,IAAI,KAAK,CAAC,SAAS,CAAA;oBACvE,GAAG,CAAC,eAAe,CACjB,OAAO;wBACL,CAAC,CAAC,yEAAyE;wBAC3E,CAAC,CAAC,cAAc;4BACd,CAAC,CAAC,uGAAuG;4BACzG,CAAC,CAAC,mCAAmC,SAAS,CAAC,KAAK,CAAC,4BAA4B,CACtF,CAAA;oBACD,OAAM;gBACR,CAAC;gBACD,GAAG,CAAC,KAAK,CAAC,gFAAgF,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YAC/G,CAAC;oBAAS,CAAC;gBACT,IAAI,sBAAsB,KAAK,UAAU;oBAAE,sBAAsB,GAAG,SAAS,CAAA;YAC/E,CAAC;QACH,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,eAAe,GAAG,UAAU,CAAA;YAC5B,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAA;YACvK,OAAM;QACR,CAAC;QACD,IAAI,UAAU,KAAK,cAAc;YAAE,OAAM;QACzC,MAAM,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC,CAAA;IAC3F,CAAC;IAED,KAAK,UAAU,cAAc,CAAC,MAAoB,EAAE,WAA8B,EAAE,eAAgC,EAAE,aAAqB,EAAE,cAAsB;QACjK,OAAO,GAAG,IAAI,0BAAW,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,IAAI,mCAAmB,CAAC,GAAiC,CAAC,CAAC,CAAA;QAC9J,IAAI,CAAC;YAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;QAAC,CAAC;QAC5B,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,GAAG,SAAS,CAAA;YACnB,yBAAyB,GAAG,SAAS,CAAC,KAAK,CAAC,CAAA;YAC5C,GAAG,CAAC,KAAK,CAAC,wEAAwE,yBAAyB,EAAE,CAAC,CAAA;QAChH,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,gCAAmB,EAAE,CAAA;QAC5C,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAA;QAC5D,MAAM,IAAI,GAAG,IAAI,gCAAc,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;QAC3G,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;QACjD,SAAS,GAAG,IAAI,CAAA;QAChB,4EAA4E;QAC5E,+EAA+E;QAC/E,MAAM,YAAY,GAAG,IAAI,qCAAqB,CAAC,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAA;QAC1G,MAAM,iBAAiB,GAAG,IAAA,+BAAqB,EAAC,WAAW,CAAC,gBAAgB,CAAC,CAAA;QAC7E,MAAM,MAAM,GAAG,WAAW,CAAC,gBAAkF,CAAA;QAC7G,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,iBAAiB,IAAI,IAAA,uBAAa,EAAC,MAAM,EAAE,gBAAgB,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;QACtJ,aAAa,GAAG,OAAO,CAAA;QACvB,MAAM,OAAO,GAAG,IAAI,qBAAW,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACnG,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAY,EAAC,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC5E,QAAQ,EAAE,MAAM,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI;YAC1C,QAAQ,EAAE,MAAM,CAAC,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YACpD,YAAY,EAAE,mBAAQ,CAAC,YAAY;SACpC,EAAE,WAAW,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QACtC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAA;QACvB,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAA;QACjC,IAAI,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe,GAAG,CAAC,CAAA;QAC7D,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YAC/B,WAAW,CAAC,aAAa,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;YAChG,MAAM,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACzC,CAAC;QACD,IAAI,UAAU,KAAK,cAAc;YAAE,OAAM;QACzC,SAAS,GAAG,IAAI,iCAAmB,CAAC,WAAW,EAAE,MAAM,EAAE;YACvD,OAAO;YACP,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBACzB,IAAI,eAAe,KAAK,gBAAgB;oBAAE,OAAM;gBAChD,eAAe,GAAG,KAAK,CAAA;gBACvB,KAAK,YAAY,CAAC,MAAM,CAAC,CAAA;gBACzB,IAAI,KAAK,KAAK,uBAAuB;oBAAE,KAAK,kBAAkB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAA;YAC7F,CAAC;YACD,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC1B,IAAI,OAAO;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;gBAC5C,IAAI,QAAQ,GAAG,CAAC,CAAA;gBAChB,IAAI,CAAC;oBAAC,QAAQ,GAAG,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC,QAAQ,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,gEAAgE,CAAC,CAAC;gBAC3H,4BAA4B,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAA;gBAC9G,OAAO,4BAA4B,CAAA;YACrC,CAAC;YACD,wBAAwB,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,4BAA4B;YAC1F,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC9B,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAA;gBACpE,MAAM,eAAe,CAAA;YACvB,CAAC;YACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;YAC1C,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE;gBAC/B,MAAM,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;gBACpC,aAAa,GAAG,WAAW,CAAA;gBAC3B,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;YACpC,CAAC;YACD,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;SAC3E,CAAC,CAAA;QACF,gBAAgB,GAAG,IAAA,iCAAoB,EAAC,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjF,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE;YACxB,IAAI,UAAU,KAAK,cAAc;gBAAE,OAAM;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACtB,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;YAChE,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM;gBAAE,OAAM;YAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAA;YACvC,IAAI,MAAM,CAAA;YACV,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;gBACzD,YAAY,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,sEAAsE;gBACtE,uEAAuE;gBACvE,YAAY,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,eAAe,GAAG,CAAC,CAAA;gBACzD,MAAM,KAAK,CAAA;YACb,CAAC;YACD,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;YAChC,IAAI,MAAM,CAAC,cAAc;gBAAE,GAAG,CAAC,KAAK,CAAC,+BAA+B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QACxF,CAAC,CAAA;QACD,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,IAAI,UAAU,KAAK,cAAc;gBAAE,OAAM;YACzC,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,eAAe,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,0CAA0C,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;YAC/J,CAAC,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAA;QAC9B,CAAC,CAAA;QACD,cAAc,EAAE,CAAA;QAChB,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,KAAK,YAAY,EAAE,EAAE,MAAM,CAAC,CAAA;QAC5D,IAAI,MAAM,CAAC,UAAU,KAAK,WAAW;YAAE,SAAS,CAAC,KAAK,EAAE,CAAA;;YACnD,eAAe,GAAG,mBAAmB,CAAA;QAC1C,MAAM,YAAY,EAAE,CAAA;IACtB,CAAC;IAED,KAAK,UAAU,YAAY,CAAC,MAAe;QACzC,IAAI,eAAe,KAAK,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9C,GAAG,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAA;YAC9C,OAAM;QACR,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;QAClC,MAAM,KAAK,GAAG,GAAG,KAAK,CAAC,YAAY,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAA;QAC9F,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,YAAY,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;QAC3E,MAAM,QAAQ,GAAG,SAAS,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,eAAe,EAAE,CAAA;QAC/E,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1C,SAAS,EAAE,YAAY,CAAC;YACtB,aAAa;YACb,UAAU,EAAE,gBAAgB;YAC5B,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE;YACxC,eAAe;YACf,iBAAiB,EAAE,KAAK,CAAC,YAAY;YACrC,cAAc,EAAE,KAAK,CAAC,SAAS;YAC/B,qBAAqB,EAAE,KAAK,CAAC,gBAAgB;YAC7C,iBAAiB,EAAE,KAAK,CAAC,YAAY;YACrC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,KAAK;YAC9C,cAAc;YACd,SAAS,EAAE,aAAa,EAAE,SAAS;YACnC,eAAe,EAAE,aAAa,EAAE,QAAQ;YACxC,GAAG,SAAS,EAAE,gBAAgB,EAAE;SACjC,CAAC,CAAA;QACF,IAAI,eAAe,KAAK,gBAAgB,EAAE,CAAC;YACzC,GAAG,CAAC,eAAe,CAAC,2DAA2D,KAAK,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC,CAAA;YAC5G,OAAM;QACR,CAAC;QACD,GAAG,CAAC,eAAe,CAAC,gBAAgB,eAAe,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAA;QACrG,KAAK,SAAS,EAAE,4BAA4B,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,wCAAwC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IACxI,CAAC;IAED,SAAS,kBAAkB,CAAC,WAA8B,EAAE,cAAsB;QAChF,IAAI,gBAAgB;YAAE,OAAO,gBAAgB,CAAA;QAC7C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,0BAA0B,GAAG,UAAU,CAAA;QACvC,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAA,2CAAsB,EAAC,WAAW,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;YAC3E,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,KAAK,cAAc,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAM;YAC9F,eAAe,GAAG,gBAAgB,CAAA;YAClC,gBAAgB,EAAE,EAAE,CAAA;YACpB,gBAAgB,GAAG,SAAS,CAAA;YAC5B,IAAI,WAAW;gBAAE,YAAY,CAAC,WAAW,CAAC,CAAA;YAC1C,WAAW,GAAG,SAAS,CAAA;YACvB,MAAM,SAAS,EAAE,IAAI,EAAE,CAAA;YACvB,MAAM,YAAY,EAAE,CAAA;QACtB,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YAChB,IAAI,0BAA0B,KAAK,UAAU;gBAAE,0BAA0B,GAAG,SAAS,CAAA;YACrF,gBAAgB,GAAG,SAAS,CAAA;QAC9B,CAAC,CAAC,CAAA;QACF,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,kBAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAiB,CAAA;IAAC,CAAC;IAC5E,OAAO,KAAK,EAAE,CAAC;QACb,IAAK,KAA+B,EAAE,IAAI,KAAK,QAAQ,IAAI,KAAK,YAAY,WAAW;YAAE,OAAO,SAAS,CAAA;QACzG,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,+BAA+B,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AACzI,CAAC;AAED,iBAAS,WAAW,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|