@livequery/rest 2.0.91 → 2.0.96
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 +418 -43
- package/dist/RestTransporter.js +158 -0
- package/dist/RestTransporter.js.map +1 -0
- package/dist/Socket.js +77 -0
- package/dist/Socket.js.map +1 -0
- package/dist/helpers/parseJson.js +9 -0
- package/dist/helpers/parseJson.js.map +1 -0
- package/dist/index.js +3 -2551
- package/dist/index.js.map +1 -93
- package/package.json +21 -8
package/dist/Socket.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { fromEvent, Observable, Subject, BehaviorSubject, merge, ReplaySubject, Subscription, of, interval, EMPTY } from "rxjs";
|
|
2
|
+
import { catchError, finalize, ignoreElements, map, mergeMap, retry, switchMap, takeUntil, tap } from "rxjs/operators";
|
|
3
|
+
import { v7 as uuidv7 } from 'uuid';
|
|
4
|
+
export class Socket extends BehaviorSubject {
|
|
5
|
+
endpoint;
|
|
6
|
+
client_id = uuidv7();
|
|
7
|
+
$gateway = new ReplaySubject(1);
|
|
8
|
+
$connected = new BehaviorSubject(false);
|
|
9
|
+
#topics = new Map();
|
|
10
|
+
#$input = new ReplaySubject(1000);
|
|
11
|
+
#running;
|
|
12
|
+
constructor(endpoint) {
|
|
13
|
+
super({
|
|
14
|
+
client_id: uuidv7(),
|
|
15
|
+
connected: false,
|
|
16
|
+
session: 0
|
|
17
|
+
});
|
|
18
|
+
this.endpoint = endpoint;
|
|
19
|
+
this.#init();
|
|
20
|
+
}
|
|
21
|
+
#init() {
|
|
22
|
+
if (typeof WebSocket == 'undefined')
|
|
23
|
+
return;
|
|
24
|
+
if (this.#running)
|
|
25
|
+
return;
|
|
26
|
+
this.#running = of(1).pipe(takeUntil(this.pipe(ignoreElements())), mergeMap(async () => new WebSocket(this.endpoint)), switchMap(ws => merge(fromEvent(ws, 'closed').pipe(map(e => { throw e; })), fromEvent(ws, 'close').pipe(map(e => { throw e; })), fromEvent(ws, 'error').pipe(map(e => { throw e; })), fromEvent(ws, 'open').pipe(switchMap(() => interval(60000)), tap(() => ws.send(JSON.stringify({ event: 'ping' })))), fromEvent(ws, 'open').pipe(tap(() => {
|
|
27
|
+
this.next({
|
|
28
|
+
...this.value,
|
|
29
|
+
connected: true,
|
|
30
|
+
session: this.value.session + 1
|
|
31
|
+
});
|
|
32
|
+
console.log(this.value.session == 1 ? 'Websocket connected' : `Websocket re-connected (${this.value.session})`);
|
|
33
|
+
ws.send(JSON.stringify({ event: 'start', data: { id: this.client_id } }));
|
|
34
|
+
}), mergeMap(() => this.#$input), tap(data => ws.send(JSON.stringify(data)))), fromEvent(ws, 'message').pipe(tap((evt) => {
|
|
35
|
+
const e = JSON.parse(evt.data);
|
|
36
|
+
const fn = this[`$${e.event}`];
|
|
37
|
+
typeof fn == 'function' && fn.call(this, e);
|
|
38
|
+
}))).pipe(finalize(() => ws.close()))), catchError(e => {
|
|
39
|
+
this.$connected.next(false);
|
|
40
|
+
throw e;
|
|
41
|
+
}), retry({ delay: 1000 })).subscribe();
|
|
42
|
+
}
|
|
43
|
+
stop() {
|
|
44
|
+
this.complete();
|
|
45
|
+
}
|
|
46
|
+
$sync(e) {
|
|
47
|
+
for (const change of e.data.changes) {
|
|
48
|
+
change.collection_ref = change.ref;
|
|
49
|
+
this.#topics.get(change.ref)?.stream.next(change);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
$hello(e) {
|
|
53
|
+
this.$gateway.next(e.gid);
|
|
54
|
+
}
|
|
55
|
+
subscribeWith(realtime_token) {
|
|
56
|
+
this.#$input.next({ event: 'subscribe', data: { realtime_token } });
|
|
57
|
+
}
|
|
58
|
+
listen(ref) {
|
|
59
|
+
if (!this.#topics.has(ref)) {
|
|
60
|
+
const stream = new Subject();
|
|
61
|
+
this.#topics.set(ref, { stream, listen_count: 0 });
|
|
62
|
+
}
|
|
63
|
+
const topic = this.#topics.get(ref);
|
|
64
|
+
if (!topic)
|
|
65
|
+
return EMPTY;
|
|
66
|
+
topic.listen_count++;
|
|
67
|
+
return topic.stream.pipe(finalize(() => {
|
|
68
|
+
topic.listen_count--;
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
if (topic.listen_count == 0) {
|
|
71
|
+
this.#$input.next({ event: 'unsubscribe', data: { ref } });
|
|
72
|
+
}
|
|
73
|
+
}, 2000);
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=Socket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Socket.js","sourceRoot":"","sources":["../src/Socket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseJson.js","sourceRoot":"","sources":["../../src/helpers/parseJson.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE;IACrC,IAAI,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC1B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,OAAO,IAAI,CAAA;IACf,CAAC;AACL,CAAC,CAAA"}
|