@alpamayo-solutions/colca-client 0.13.2 → 0.14.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 +6 -4
- package/dist/live.d.ts +24 -4
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +148 -16
- package/dist/live.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -67,8 +67,10 @@ first. Around that the client does what a page left open all day needs:
|
|
|
67
67
|
- **A second subscriber gets the value at once.** The client keeps the last value
|
|
68
68
|
of every topic, and `latest()` and `values()` read it.
|
|
69
69
|
- **A fresh token before the old one runs out.** The node ends a session when its
|
|
70
|
-
token expires.
|
|
71
|
-
|
|
70
|
+
token expires. Shortly before, the client hands the node a new token on the
|
|
71
|
+
open connection (MQTT 5 re-authentication), so nothing is subscribed again. A
|
|
72
|
+
node that does not offer that gets a new connection with the new token and
|
|
73
|
+
every subscription sent again. Either way the client stays `online`.
|
|
72
74
|
- **Waits that grow after a drop**, jittered, each attempt with a fresh token.
|
|
73
75
|
- **A word when the subscriptions go out again.** `onResubscribe()` fires once
|
|
74
76
|
they have, on every new connection — where the node's retained delivery starts
|
|
@@ -124,8 +126,8 @@ change, and returns the function that ends that watch and no other. An alarm's
|
|
|
124
126
|
name comes from the `_SystemElement` it hangs on, and its path is where a view
|
|
125
127
|
jumps to.
|
|
126
128
|
|
|
127
|
-
When the connection comes back — after a drop, and after
|
|
128
|
-
|
|
129
|
+
When the connection comes back — after a drop, and after a token renewal that
|
|
130
|
+
had to reconnect — the node starts its retained delivery over, and an alarm that went
|
|
129
131
|
while the client was away leaves nothing behind to say so. `Alarms` therefore
|
|
130
132
|
gives the set 750 ms to arrive again (`resyncMs`) and drops what did not come
|
|
131
133
|
back: a view can be that much behind the node, but it never goes on showing an
|
package/dist/live.d.ts
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* - the last value of every topic, so a second subscriber to a topic gets it at
|
|
12
12
|
* once instead of waiting for the next change;
|
|
13
13
|
* - a fresh token before the old one runs out — the node ends a session when
|
|
14
|
-
* its token expires
|
|
14
|
+
* its token expires. A node that renews tokens in place (MQTT 5
|
|
15
|
+
* re-authentication) takes it on the open connection; with any other, the
|
|
16
|
+
* client opens a new connection and sends every subscription again;
|
|
15
17
|
* - growing, jittered waits between attempts after a drop, each with a fresh
|
|
16
18
|
* token;
|
|
17
19
|
* - commands that wait for their acknowledgement.
|
|
@@ -74,6 +76,12 @@ export declare class CommandTimeout extends Error {
|
|
|
74
76
|
readonly correlationId: string;
|
|
75
77
|
constructor(topic: string, correlationId: string);
|
|
76
78
|
}
|
|
79
|
+
/** The part of a CONNACK this module reads. */
|
|
80
|
+
export interface Connack {
|
|
81
|
+
properties?: {
|
|
82
|
+
authenticationMethod?: string;
|
|
83
|
+
};
|
|
84
|
+
}
|
|
77
85
|
/** What is handed to the MQTT client for each connection. */
|
|
78
86
|
export interface MqttConnectOptions {
|
|
79
87
|
clientId: string;
|
|
@@ -85,11 +93,17 @@ export interface MqttConnectOptions {
|
|
|
85
93
|
/** Zero: reconnecting is this module's job, because every attempt needs a fresh token. */
|
|
86
94
|
reconnectPeriod: 0;
|
|
87
95
|
connectTimeout: number;
|
|
96
|
+
/** Asks the node to renew tokens on this connection; the token itself stays the password. */
|
|
97
|
+
properties: {
|
|
98
|
+
authenticationMethod: string;
|
|
99
|
+
[property: string]: unknown;
|
|
100
|
+
};
|
|
88
101
|
[option: string]: unknown;
|
|
89
102
|
}
|
|
90
103
|
/** The part of an MQTT client this module uses; mqtt.js's client fits. */
|
|
91
104
|
export interface MqttLike {
|
|
92
|
-
on(event: "connect"
|
|
105
|
+
on(event: "connect", listener: (connack?: Connack) => void): unknown;
|
|
106
|
+
on(event: "close", listener: () => void): unknown;
|
|
93
107
|
on(event: "error", listener: (error: Error) => void): unknown;
|
|
94
108
|
on(event: "message", listener: (topic: string, payload: Uint8Array, packet: {
|
|
95
109
|
retain: boolean;
|
|
@@ -106,6 +120,12 @@ export interface MqttLike {
|
|
|
106
120
|
retain: false;
|
|
107
121
|
}, callback?: (error?: Error) => void): unknown;
|
|
108
122
|
end(force?: boolean): unknown;
|
|
123
|
+
/**
|
|
124
|
+
* Hand the node a new token on this connection (an MQTT 5 AUTH packet, reason
|
|
125
|
+
* 0x19). Resolves when the node accepted it. A node that refuses ends the
|
|
126
|
+
* connection. Without it, a renewal always reconnects.
|
|
127
|
+
*/
|
|
128
|
+
reauthenticate?(token: string): Promise<void>;
|
|
109
129
|
}
|
|
110
130
|
export interface LiveOptions {
|
|
111
131
|
/** The node's WebSocket door for people and applications, e.g. `wss://node:8885`. */
|
|
@@ -114,7 +134,7 @@ export interface LiveOptions {
|
|
|
114
134
|
token: () => string | Promise<string>;
|
|
115
135
|
/** The node requires the token's `sub` here, which is the default. Set it for a token that is not a JWT. */
|
|
116
136
|
username?: string;
|
|
117
|
-
/**
|
|
137
|
+
/** Renew the token this long before the current one expires. */
|
|
118
138
|
renewBeforeMs?: number;
|
|
119
139
|
/** The first wait after a failed attempt. It doubles up to `maxRetryMs`. */
|
|
120
140
|
retryMs?: number;
|
|
@@ -166,7 +186,7 @@ export declare class Live {
|
|
|
166
186
|
* Called once every subscription has gone out on a new connection, the first
|
|
167
187
|
* one included — where the node's retained delivery starts over. A view that
|
|
168
188
|
* has to notice what disappeared while the client was away reconciles from
|
|
169
|
-
* here; a
|
|
189
|
+
* here; a renewal that reconnects reaches it too, and says nothing about the state.
|
|
170
190
|
*/
|
|
171
191
|
onResubscribe(listener: () => void): () => void;
|
|
172
192
|
close(): void;
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
package/dist/live.js
CHANGED
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
* - the last value of every topic, so a second subscriber to a topic gets it at
|
|
12
12
|
* once instead of waiting for the next change;
|
|
13
13
|
* - a fresh token before the old one runs out — the node ends a session when
|
|
14
|
-
* its token expires
|
|
14
|
+
* its token expires. A node that renews tokens in place (MQTT 5
|
|
15
|
+
* re-authentication) takes it on the open connection; with any other, the
|
|
16
|
+
* client opens a new connection and sends every subscription again;
|
|
15
17
|
* - growing, jittered waits between attempts after a drop, each with a fresh
|
|
16
18
|
* token;
|
|
17
19
|
* - commands that wait for their acknowledgement.
|
|
@@ -56,6 +58,13 @@ export class CommandTimeout extends Error {
|
|
|
56
58
|
this.name = "CommandTimeout";
|
|
57
59
|
}
|
|
58
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* The MQTT 5 authentication method under which a Colca node renews a token on
|
|
63
|
+
* an open connection. The node names it in the CONNACK when it can.
|
|
64
|
+
*/
|
|
65
|
+
const REAUTH_METHOD = "colca-token";
|
|
66
|
+
/** How long a renewal on the open connection may take before the client reconnects instead. */
|
|
67
|
+
const REAUTH_TIMEOUT_MS = 10_000;
|
|
59
68
|
/** A token lifetime shorter than this does not make the client reconnect any faster. */
|
|
60
69
|
const MIN_RENEW_MS = 5_000;
|
|
61
70
|
export class Live {
|
|
@@ -74,10 +83,14 @@ export class Live {
|
|
|
74
83
|
#resubscribeListeners = new Set();
|
|
75
84
|
#state = "connecting";
|
|
76
85
|
#client;
|
|
86
|
+
/** The connection a renewal replaces, kept until the new one has its subscriptions. */
|
|
87
|
+
#retiring;
|
|
77
88
|
#generation = 0;
|
|
78
89
|
#attempt = 0;
|
|
79
90
|
#renewTimer;
|
|
80
91
|
#retryTimer;
|
|
92
|
+
/** The node said, in this connection's CONNACK, that it renews tokens in place. */
|
|
93
|
+
#renewsInPlace = false;
|
|
81
94
|
constructor(options) {
|
|
82
95
|
this.#options = options;
|
|
83
96
|
void this.#open();
|
|
@@ -104,7 +117,7 @@ export class Live {
|
|
|
104
117
|
this.#qos.set(filter, qos);
|
|
105
118
|
// Offline, the filter goes out with the others once the connection is up.
|
|
106
119
|
if (this.#state === "online")
|
|
107
|
-
this.#subscribe([filter]);
|
|
120
|
+
void this.#subscribe([filter]);
|
|
108
121
|
}
|
|
109
122
|
else {
|
|
110
123
|
listeners.add(own);
|
|
@@ -112,7 +125,7 @@ export class Live {
|
|
|
112
125
|
// Subscribing again replaces the node's subscription with the stronger one.
|
|
113
126
|
this.#qos.set(filter, qos);
|
|
114
127
|
if (this.#state === "online")
|
|
115
|
-
this.#subscribe([filter]);
|
|
128
|
+
void this.#subscribe([filter]);
|
|
116
129
|
}
|
|
117
130
|
// The node sends retained values once per subscription, and this filter's
|
|
118
131
|
// went to whoever subscribed first. The newcomer gets them from here.
|
|
@@ -233,7 +246,7 @@ export class Live {
|
|
|
233
246
|
* Called once every subscription has gone out on a new connection, the first
|
|
234
247
|
* one included — where the node's retained delivery starts over. A view that
|
|
235
248
|
* has to notice what disappeared while the client was away reconciles from
|
|
236
|
-
* here; a
|
|
249
|
+
* here; a renewal that reconnects reaches it too, and says nothing about the state.
|
|
237
250
|
*/
|
|
238
251
|
onResubscribe(listener) {
|
|
239
252
|
this.#resubscribeListeners.add(listener);
|
|
@@ -247,6 +260,7 @@ export class Live {
|
|
|
247
260
|
clearTimeout(this.#retryTimer);
|
|
248
261
|
this.#client?.end();
|
|
249
262
|
this.#client = undefined;
|
|
263
|
+
this.#retire();
|
|
250
264
|
this.#filters.clear();
|
|
251
265
|
this.#qos.clear();
|
|
252
266
|
this.#values.clear();
|
|
@@ -288,6 +302,10 @@ export class Live {
|
|
|
288
302
|
keepalive: 30,
|
|
289
303
|
reconnectPeriod: 0,
|
|
290
304
|
connectTimeout: 10_000,
|
|
305
|
+
properties: {
|
|
306
|
+
...this.#options.mqttOptions?.properties,
|
|
307
|
+
authenticationMethod: REAUTH_METHOD,
|
|
308
|
+
},
|
|
291
309
|
});
|
|
292
310
|
}
|
|
293
311
|
catch (error) {
|
|
@@ -307,20 +325,26 @@ export class Live {
|
|
|
307
325
|
return;
|
|
308
326
|
}
|
|
309
327
|
this.#client = client;
|
|
310
|
-
client.on("connect", () => {
|
|
328
|
+
client.on("connect", (connack) => {
|
|
311
329
|
if (!current())
|
|
312
330
|
return;
|
|
313
331
|
this.#attempt = 0;
|
|
332
|
+
this.#renewsInPlace =
|
|
333
|
+
connack?.properties?.authenticationMethod === REAUTH_METHOD && client.reauthenticate !== undefined;
|
|
314
334
|
this.#setState("online");
|
|
315
335
|
this.#retainedSent.clear();
|
|
316
336
|
this.#granted.clear();
|
|
317
|
-
this.#subscribe([...this.#filters.keys()])
|
|
337
|
+
void this.#subscribe([...this.#filters.keys()]).then(() => {
|
|
338
|
+
if (current())
|
|
339
|
+
this.#retire();
|
|
340
|
+
});
|
|
318
341
|
for (const listener of this.#resubscribeListeners)
|
|
319
342
|
listener();
|
|
320
343
|
this.#scheduleRenewal(expiresAt);
|
|
321
344
|
});
|
|
322
345
|
client.on("message", (topic, payload, packet) => {
|
|
323
|
-
|
|
346
|
+
// The connection being renewed away from goes on delivering until it is ended.
|
|
347
|
+
if (current() || client === this.#retiring)
|
|
324
348
|
this.#receive(topic, payload, packet.retain);
|
|
325
349
|
});
|
|
326
350
|
client.on("error", (error) => {
|
|
@@ -334,15 +358,27 @@ export class Live {
|
|
|
334
358
|
this.#retry();
|
|
335
359
|
});
|
|
336
360
|
}
|
|
337
|
-
/**
|
|
338
|
-
|
|
361
|
+
/**
|
|
362
|
+
* Open the next connection. A renewal keeps the one in hand until the next one
|
|
363
|
+
* has its subscriptions, so no value falls between them; anything else ends it.
|
|
364
|
+
*/
|
|
365
|
+
#replace(token, renewal = false) {
|
|
339
366
|
clearTimeout(this.#renewTimer);
|
|
340
367
|
this.#renewTimer = undefined;
|
|
341
368
|
this.#generation += 1;
|
|
342
|
-
this.#
|
|
369
|
+
this.#retire();
|
|
370
|
+
if (renewal)
|
|
371
|
+
this.#retiring = this.#client;
|
|
372
|
+
else
|
|
373
|
+
this.#client?.end(true);
|
|
343
374
|
this.#client = undefined;
|
|
344
375
|
void this.#open(token);
|
|
345
376
|
}
|
|
377
|
+
/** End a renewed connection with a DISCONNECT, so the node does not log a dropped one. */
|
|
378
|
+
#retire() {
|
|
379
|
+
this.#retiring?.end(false);
|
|
380
|
+
this.#retiring = undefined;
|
|
381
|
+
}
|
|
346
382
|
#retry() {
|
|
347
383
|
if (this.#retryTimer !== undefined)
|
|
348
384
|
return;
|
|
@@ -366,9 +402,9 @@ export class Live {
|
|
|
366
402
|
}, Math.max(MIN_RENEW_MS, due));
|
|
367
403
|
}
|
|
368
404
|
/**
|
|
369
|
-
*
|
|
370
|
-
*
|
|
371
|
-
*
|
|
405
|
+
* Renew only with a token that outlives the one in use. An identity proxy can
|
|
406
|
+
* keep handing out the token it holds until its own refresh is due, and
|
|
407
|
+
* renewing with that one gains nothing.
|
|
372
408
|
*/
|
|
373
409
|
async #renew(expiresAt) {
|
|
374
410
|
const generation = this.#generation;
|
|
@@ -384,7 +420,10 @@ export class Live {
|
|
|
384
420
|
return;
|
|
385
421
|
const exp = token === undefined ? undefined : readClaims(token)?.exp;
|
|
386
422
|
if (token !== undefined && (exp === undefined || exp * 1000 > expiresAt)) {
|
|
387
|
-
this.#
|
|
423
|
+
if (this.#renewsInPlace)
|
|
424
|
+
await this.#renewInPlace(token, exp);
|
|
425
|
+
else
|
|
426
|
+
this.#replace(token, true);
|
|
388
427
|
return;
|
|
389
428
|
}
|
|
390
429
|
// Ask again shortly; once the token has run out, the node ends the session and
|
|
@@ -396,13 +435,59 @@ export class Live {
|
|
|
396
435
|
void this.#renew(expiresAt);
|
|
397
436
|
}, MIN_RENEW_MS);
|
|
398
437
|
}
|
|
438
|
+
/**
|
|
439
|
+
* Hand the new token to the node on the open connection, so nothing is
|
|
440
|
+
* subscribed again and no value is missed. When the node does not answer in
|
|
441
|
+
* time the client reconnects with the token instead; when it refuses, it ends
|
|
442
|
+
* the connection and the retry takes over.
|
|
443
|
+
*/
|
|
444
|
+
async #renewInPlace(token, exp) {
|
|
445
|
+
const generation = this.#generation;
|
|
446
|
+
const client = this.#client;
|
|
447
|
+
if (client?.reauthenticate === undefined) {
|
|
448
|
+
this.#replace(token, true);
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
let timer;
|
|
452
|
+
try {
|
|
453
|
+
await Promise.race([
|
|
454
|
+
client.reauthenticate(token),
|
|
455
|
+
new Promise((_, reject) => {
|
|
456
|
+
timer = setTimeout(() => {
|
|
457
|
+
reject(new Error("the node did not answer the token renewal"));
|
|
458
|
+
}, REAUTH_TIMEOUT_MS);
|
|
459
|
+
}),
|
|
460
|
+
]);
|
|
461
|
+
}
|
|
462
|
+
catch (error) {
|
|
463
|
+
if (generation !== this.#generation || this.#state !== "online")
|
|
464
|
+
return;
|
|
465
|
+
this.#report(error);
|
|
466
|
+
this.#replace(token, true);
|
|
467
|
+
return;
|
|
468
|
+
}
|
|
469
|
+
finally {
|
|
470
|
+
clearTimeout(timer);
|
|
471
|
+
}
|
|
472
|
+
if (generation !== this.#generation || this.#state === "closed")
|
|
473
|
+
return;
|
|
474
|
+
this.#scheduleRenewal(exp === undefined ? undefined : exp * 1000);
|
|
475
|
+
}
|
|
476
|
+
/** Settles once the node has answered every subscription, granted or not. */
|
|
399
477
|
#subscribe(filters) {
|
|
400
478
|
const generation = this.#generation;
|
|
479
|
+
const answers = [];
|
|
401
480
|
for (const qos of [0, 1]) {
|
|
402
481
|
const group = filters.filter((filter) => (this.#qos.get(filter) ?? 0) === qos);
|
|
403
482
|
if (group.length === 0)
|
|
404
483
|
continue;
|
|
405
|
-
this.#client
|
|
484
|
+
const client = this.#client;
|
|
485
|
+
if (client === undefined)
|
|
486
|
+
continue;
|
|
487
|
+
let answered;
|
|
488
|
+
answers.push(new Promise((resolve) => (answered = resolve)));
|
|
489
|
+
client.subscribe(group, { qos }, (error, granted) => {
|
|
490
|
+
answered();
|
|
406
491
|
if (generation !== this.#generation)
|
|
407
492
|
return;
|
|
408
493
|
if (error) {
|
|
@@ -422,6 +507,7 @@ export class Live {
|
|
|
422
507
|
}
|
|
423
508
|
});
|
|
424
509
|
}
|
|
510
|
+
return Promise.all(answers).then(() => undefined);
|
|
425
511
|
}
|
|
426
512
|
#whenGranted(filter) {
|
|
427
513
|
if (this.#granted.has(filter))
|
|
@@ -533,7 +619,53 @@ async function connectWithMqttJs(url, options) {
|
|
|
533
619
|
const connect = mqtt.connect ?? mqtt.default?.connect;
|
|
534
620
|
if (connect === undefined)
|
|
535
621
|
throw new MissingMqtt("the mqtt package in use has no connect()");
|
|
536
|
-
return connect(url, options);
|
|
622
|
+
return withReauthentication(connect(url, options));
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* Give an mqtt.js client `reauthenticate`. mqtt.js reads AUTH packets from the
|
|
626
|
+
* broker but has no call to send one, so this uses its packet writer, and it
|
|
627
|
+
* leaves the client as it is when that writer is missing.
|
|
628
|
+
*/
|
|
629
|
+
function withReauthentication(client) {
|
|
630
|
+
const internals = client;
|
|
631
|
+
const send = internals._sendPacket;
|
|
632
|
+
const handleAuth = internals.handleAuth;
|
|
633
|
+
if (typeof send !== "function" || typeof handleAuth !== "function")
|
|
634
|
+
return client;
|
|
635
|
+
let waiting;
|
|
636
|
+
const settle = (error) => {
|
|
637
|
+
const current = waiting;
|
|
638
|
+
waiting = undefined;
|
|
639
|
+
if (error)
|
|
640
|
+
current?.reject(error);
|
|
641
|
+
else
|
|
642
|
+
current?.resolve();
|
|
643
|
+
};
|
|
644
|
+
internals.handleAuth = (packet, callback) => {
|
|
645
|
+
// Reason 0: the node accepted the token. It never asks to continue.
|
|
646
|
+
if (packet.reasonCode === 0)
|
|
647
|
+
settle();
|
|
648
|
+
handleAuth.call(client, packet, callback);
|
|
649
|
+
};
|
|
650
|
+
client.on("close", () => {
|
|
651
|
+
settle(new Error("the connection closed during the token renewal"));
|
|
652
|
+
});
|
|
653
|
+
internals.reauthenticate = (token) => new Promise((resolve, reject) => {
|
|
654
|
+
if (waiting !== undefined) {
|
|
655
|
+
reject(new Error("a token renewal is already under way"));
|
|
656
|
+
return;
|
|
657
|
+
}
|
|
658
|
+
waiting = { resolve, reject };
|
|
659
|
+
send.call(client, {
|
|
660
|
+
cmd: "auth",
|
|
661
|
+
reasonCode: 0x19,
|
|
662
|
+
properties: { authenticationMethod: REAUTH_METHOD, authenticationData: token },
|
|
663
|
+
}, (error) => {
|
|
664
|
+
if (error)
|
|
665
|
+
settle(error);
|
|
666
|
+
});
|
|
667
|
+
});
|
|
668
|
+
return client;
|
|
537
669
|
}
|
|
538
670
|
/** `sub` and `exp` from a JWT, without checking it — the node does that. */
|
|
539
671
|
function readClaims(token) {
|
package/dist/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|