@livequery/nestjs 2.0.21 → 2.0.22

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.
Files changed (34) hide show
  1. package/build/src/ApiGateway.d.ts +6 -4
  2. package/build/src/ApiGateway.js +83 -41
  3. package/build/src/ApiGateway.js.map +1 -1
  4. package/build/src/ApiGatewayLinker.d.ts +2 -8
  5. package/build/src/ApiGatewayLinker.js +31 -48
  6. package/build/src/ApiGatewayLinker.js.map +1 -1
  7. package/build/src/GatewayLinker.d.ts +8 -0
  8. package/build/src/GatewayLinker.js +53 -0
  9. package/build/src/GatewayLinker.js.map +1 -0
  10. package/build/src/LivequeryInterceptor.d.ts +2 -1
  11. package/build/src/LivequeryInterceptor.js +9 -17
  12. package/build/src/LivequeryInterceptor.js.map +1 -1
  13. package/build/src/LivequeryWebsocketSync.d.ts +38 -22
  14. package/build/src/LivequeryWebsocketSync.js +114 -118
  15. package/build/src/LivequeryWebsocketSync.js.map +1 -1
  16. package/build/src/RxjsUdp.d.ts +6 -2
  17. package/build/src/RxjsUdp.js +9 -3
  18. package/build/src/RxjsUdp.js.map +1 -1
  19. package/build/src/const.js +1 -1
  20. package/build/src/const.js.map +1 -1
  21. package/build/src/helpers/createDatasourceMapper.d.ts +15 -10
  22. package/build/src/helpers/createDatasourceMapper.js +13 -14
  23. package/build/src/helpers/createDatasourceMapper.js.map +1 -1
  24. package/build/src/index.d.ts +1 -1
  25. package/build/src/index.js +1 -1
  26. package/build/src/index.js.map +1 -1
  27. package/build/tests/gateway.d.ts +2 -0
  28. package/build/tests/gateway.js +19 -0
  29. package/build/tests/gateway.js.map +1 -0
  30. package/build/tests/service.d.ts +13 -0
  31. package/build/tests/service.js +65 -0
  32. package/build/tests/service.js.map +1 -0
  33. package/build/tsconfig.tsbuildinfo +1 -0
  34. package/package.json +7 -3
@@ -1,32 +1,35 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
2
  import { ConnectedSocket, MessageBody, SubscribeMessage, WebSocketGateway } from "@nestjs/websockets";
3
3
  import { Subject, tap, switchMap } from "rxjs";
4
- import { Optional } from "@nestjs/common";
5
- import { InjectWebsocketPublicKey } from "./UseWebsocketShareKeyPair.js";
6
- import JWT from 'jsonwebtoken';
7
- import { Socket } from "dgram";
8
4
  import WebSocket from 'ws';
9
- import { of, retry, fromEvent, map, finalize, merge, catchError, EMPTY } from 'rxjs';
5
+ import { of, fromEvent, map, finalize, merge, catchError, EMPTY, filter, mergeAll } from 'rxjs';
10
6
  import { hidePrivateFields } from "./helpers/hidePrivateFields.js";
7
+ import { randomUUID } from "crypto";
11
8
  export const WEBSOCKET_PATH = process.env.REALTIME_UPDATE_SOCKET_PATH || '/livequery/realtime-updates';
12
9
  let LivequeryWebsocketSync = class LivequeryWebsocketSync {
13
- secret_or_public_key;
14
- #sessions = new Map();
15
- #refs = new Map();
16
- #sockets = new Map();
10
+ #connections = new Map();
11
+ #subscriptions = new Map();
12
+ id = randomUUID();
13
+ auth = randomUUID();
17
14
  changes = new Subject();
18
- #targets = new Set();
19
- constructor(secret_or_public_key) {
20
- this.secret_or_public_key = secret_or_public_key;
15
+ constructor() {
16
+ this.changes.pipe();
21
17
  this.changes.subscribe(({ ref, data, type }) => {
22
- const links = new Set([
23
- ...this.#refs.get(ref)?.entries() || [],
24
- ...this.#refs.get(`${ref}/${data.id}`)?.entries() || []
25
- ]);
26
- for (const [session_id, socket] of links) {
18
+ const targets = [
19
+ ...this.#subscriptions.get(ref) || new Map(),
20
+ ...this.#subscriptions.get(`${ref}/${data.id}`) || new Map()
21
+ ].reduce((p, [client_id, gateway_id]) => {
22
+ const connection_id = gateway_id == this.id ? client_id : gateway_id;
23
+ const old = p.get(connection_id);
24
+ const socket = old ? old.socket : this.#connections.get(connection_id);
25
+ const cids = [...old ? old.cids : [], client_id];
26
+ p.set(connection_id, { cids, socket });
27
+ return p;
28
+ }, new Map());
29
+ for (const [_, { cids, socket }] of targets) {
27
30
  const event = {
28
31
  event: 'sync',
29
- session_id,
32
+ cids,
30
33
  data: { changes: [{ ref, data, type }] }
31
34
  };
32
35
  const payload = JSON.stringify(event);
@@ -34,40 +37,41 @@ let LivequeryWebsocketSync = class LivequeryWebsocketSync {
34
37
  }
35
38
  });
36
39
  }
37
- connect(url, ondisconect) {
38
- return of(0).pipe(map(() => new WebSocket(url)), switchMap(ws => {
39
- return merge(fromEvent(ws, 'open').pipe(tap(() => this.#targets.add(ws))), fromEvent(ws, 'close').pipe(map(e => { throw e; })), fromEvent(ws, 'error').pipe(map(e => { throw e; })), fromEvent(ws, 'message').pipe(map((event) => {
40
+ connect(url, auth, ondisconect) {
41
+ return of(0).pipe(map(() => new WebSocket(url)), switchMap((ws) => {
42
+ return merge(fromEvent(ws, 'open').pipe(tap(() => {
43
+ const payload = { event: 'start', data: { id: this.id, auth } };
44
+ ws.send(JSON.stringify(payload));
45
+ })), fromEvent(ws, 'close').pipe(map(() => { throw 'CLOSED'; })), fromEvent(ws, 'error').pipe(map(e => { throw e; })), fromEvent(ws, 'message').pipe(map((event) => {
40
46
  const data = event.data;
41
47
  try {
42
48
  const parsed = JSON.parse(data.toString());
43
- parsed.session_id && this.#sessions.get(parsed.session_id)?.socket.send(data.toString());
49
+ if (parsed.event == 'hello') {
50
+ ws.id = parsed.gid;
51
+ this.#connections.set(parsed.gid, ws);
52
+ return;
53
+ }
54
+ if (parsed.event == 'subscribe') {
55
+ this.listen([parsed]);
56
+ return;
57
+ }
58
+ return parsed;
44
59
  }
45
60
  catch (e) {
46
61
  console.error(e);
47
62
  }
48
- }))).pipe(finalize(() => this.#targets.delete(ws)));
49
- }), retry({ count: 10, delay: 500, resetOnSuccess: true }), catchError(() => EMPTY), finalize(() => {
63
+ }), filter(Boolean), map(({ event, cids, data }) => cids.map(client_id => ({ event, data, client_id }))), mergeAll(), tap(({ client_id, ...event }) => {
64
+ const socket = this.#connections.get(client_id);
65
+ socket && socket.send(JSON.stringify(event));
66
+ }))).pipe(finalize(() => {
67
+ this.#connections.delete(ws.id);
68
+ }));
69
+ }), catchError(() => {
70
+ return EMPTY;
71
+ }), finalize(() => {
50
72
  ondisconect?.();
51
73
  })).subscribe();
52
74
  }
53
- handleDisconnect(socket) {
54
- const sessions = this.#sockets.get(socket);
55
- if (!sessions)
56
- return;
57
- this.#sockets.delete(socket);
58
- for (const session_id of sessions) {
59
- const session = this.#sessions.get(session_id);
60
- if (!session)
61
- continue;
62
- this.#sessions.delete(session_id);
63
- for (const ref of session.refs) {
64
- this.#refs.get(ref)?.delete(session_id);
65
- }
66
- }
67
- }
68
- handleConnection(socket) {
69
- this.#sockets.set(socket, new Set());
70
- }
71
75
  broadcast(event) {
72
76
  const id = event.old_data?.id || event.new_data?.id;
73
77
  if (!id)
@@ -118,110 +122,102 @@ let LivequeryWebsocketSync = class LivequeryWebsocketSync {
118
122
  return;
119
123
  }
120
124
  }
121
- start(socket, { id: session_id }) {
122
- const id = Date.now();
123
- if (session_id && session_id.length > 36)
124
- return;
125
- this.#sockets.get(socket)?.add(session_id);
126
- this.#sessions.set(session_id, {
127
- refs: new Set(),
128
- socket
125
+ start(socket, { id, auth }) {
126
+ process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log({
127
+ new_node: id,
128
+ gateway: auth == this.auth
129
129
  });
130
- [...this.#targets].forEach(s => s.send(JSON.stringify({
131
- event: 'start',
132
- data: { id: session_id }
133
- })));
130
+ if (socket.id)
131
+ return;
132
+ if (this.#connections.has(id)) {
133
+ socket.close();
134
+ return;
135
+ }
136
+ socket.id = id;
137
+ socket.gateway = auth == this.auth;
138
+ socket.refs = new Set();
139
+ this.#connections.set(id, socket);
140
+ const payload = { event: 'hello', gid: this.id };
141
+ socket.send(JSON.stringify(payload));
134
142
  }
135
- stop(socket, { id: session_id }) {
136
- [...this.#targets].forEach(s => s.send(JSON.stringify({
137
- event: 'stop',
138
- id: session_id
139
- })));
140
- this.#sockets.get(socket)?.delete(session_id);
141
- const session = this.#sessions.get(session_id);
142
- if (!session)
143
+ unsubscribe(socket, { ref, client_id = socket.id }) {
144
+ const subscriptions = this.#subscriptions.get(ref);
145
+ if (!subscriptions)
143
146
  return;
144
- this.#sessions.delete(session_id);
145
- for (const ref of session.refs) {
146
- this.#refs.get(ref)?.delete(session_id);
147
+ const gateway_id = subscriptions.get(client_id);
148
+ subscriptions.delete(client_id);
149
+ if (gateway_id == this.id) {
150
+ const socket = this.#connections.get(client_id);
151
+ socket.refs.delete(ref);
152
+ }
153
+ else {
154
+ const gateway = this.#connections.get(gateway_id);
155
+ const payload = { event: 'unsubscribe', data: { ref, client_id } };
156
+ gateway && gateway.send(JSON.stringify(payload));
147
157
  }
148
158
  }
149
- async subscribe(socket, { realtime_token }) {
150
- [...this.#targets].forEach(s => s.send(JSON.stringify({
151
- event: 'subscribe',
152
- realtime_token
153
- })));
154
- if (realtime_token && this.secret_or_public_key) {
155
- const options = await new Promise(s => JWT.verify(realtime_token, this.secret_or_public_key, {}, (error, data) => s(error ? null : data)));
156
- if (options) {
157
- this.listen(options);
159
+ handleDisconnect(socket) {
160
+ process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log({ disconnected: socket.id });
161
+ this.#connections.delete(socket.id);
162
+ if (socket.gateway) {
163
+ for (const [ref, map] of this.#subscriptions) {
164
+ for (const [client_id, gateway_id] of map) {
165
+ gateway_id == socket.id && map.delete(client_id);
166
+ }
167
+ map.size == 0 && this.#subscriptions.delete(ref);
168
+ }
169
+ }
170
+ else {
171
+ for (const ref of socket.refs) {
172
+ const subscriptions = this.#subscriptions.get(ref);
173
+ if (subscriptions) {
174
+ subscriptions.delete(ref);
175
+ subscriptions.size == 9 && this.#subscriptions.delete(ref);
176
+ }
158
177
  }
159
178
  }
160
179
  }
161
- unsubscribe(socket, { ref, id }) {
162
- const session_ids = id ? [id] : (this.#sockets.get(socket) || []);
163
- for (const session_id of session_ids) {
164
- [...this.#targets].forEach(s => s.send(JSON.stringify({
165
- event: 'unsubscribe',
166
- ref,
167
- id: session_id
168
- })));
169
- this.#refs.get(ref)?.delete(session_id);
170
- this.#sockets.get(socket)?.delete(session_id);
171
- const session = this.#sessions.get(session_id);
172
- if (!session)
180
+ listen(e) {
181
+ for (const { collection_ref, doc_id, client_id, gateway_id } of e) {
182
+ if (client_id == gateway_id)
183
+ continue;
184
+ const ref = `${collection_ref}${doc_id ? `/${doc_id}` : ''}`;
185
+ const subscriptions = this.#subscriptions.get(ref) || new Map();
186
+ if (subscriptions.get(client_id) == gateway_id)
173
187
  continue;
174
- session.refs.delete(ref);
188
+ subscriptions.set(client_id, gateway_id);
189
+ this.#subscriptions.set(ref, subscriptions);
190
+ if (gateway_id == this.id) {
191
+ const socket = this.#connections.get(client_id);
192
+ socket && socket.refs.add(ref);
193
+ }
194
+ else {
195
+ const gateway = this.#connections.get(gateway_id);
196
+ const payload = { client_id, event: 'subscribe', gateway_id, collection_ref, doc_id };
197
+ gateway && gateway.send(JSON.stringify(payload));
198
+ }
175
199
  }
176
200
  }
177
- listen({ collection_ref, doc_id, session_id }) {
178
- const session = this.#sessions.get(session_id);
179
- if (!session)
180
- return;
181
- const ref = `${collection_ref}${doc_id ? `/${doc_id}` : ''}`;
182
- const { socket, refs } = session;
183
- refs.add(ref);
184
- !this.#refs.has(ref) && this.#refs.set(ref, new Map());
185
- !this.#refs.get(ref).has(session_id) && this.#refs.get(ref).set(session_id, socket);
186
- }
187
201
  };
188
202
  __decorate([
189
203
  SubscribeMessage('start'),
190
204
  __param(0, ConnectedSocket()),
191
205
  __param(1, MessageBody()),
192
206
  __metadata("design:type", Function),
193
- __metadata("design:paramtypes", [Socket, Object]),
207
+ __metadata("design:paramtypes", [Object, Object]),
194
208
  __metadata("design:returntype", void 0)
195
209
  ], LivequeryWebsocketSync.prototype, "start", null);
196
- __decorate([
197
- SubscribeMessage('stop'),
198
- __param(0, ConnectedSocket()),
199
- __param(1, MessageBody()),
200
- __metadata("design:type", Function),
201
- __metadata("design:paramtypes", [Socket, Object]),
202
- __metadata("design:returntype", void 0)
203
- ], LivequeryWebsocketSync.prototype, "stop", null);
204
- __decorate([
205
- SubscribeMessage('subscribe'),
206
- __param(0, ConnectedSocket()),
207
- __param(1, MessageBody()),
208
- __metadata("design:type", Function),
209
- __metadata("design:paramtypes", [Object, Object]),
210
- __metadata("design:returntype", Promise)
211
- ], LivequeryWebsocketSync.prototype, "subscribe", null);
212
210
  __decorate([
213
211
  SubscribeMessage('unsubscribe'),
214
212
  __param(0, ConnectedSocket()),
215
213
  __param(1, MessageBody()),
216
214
  __metadata("design:type", Function),
217
- __metadata("design:paramtypes", [Socket, Object]),
215
+ __metadata("design:paramtypes", [Object, Object]),
218
216
  __metadata("design:returntype", void 0)
219
217
  ], LivequeryWebsocketSync.prototype, "unsubscribe", null);
220
218
  LivequeryWebsocketSync = __decorate([
221
219
  WebSocketGateway({ path: WEBSOCKET_PATH }),
222
- __param(0, Optional()),
223
- __param(0, InjectWebsocketPublicKey()),
224
- __metadata("design:paramtypes", [String])
220
+ __metadata("design:paramtypes", [])
225
221
  ], LivequeryWebsocketSync);
226
222
  export { LivequeryWebsocketSync };
227
223
  //# sourceMappingURL=LivequeryWebsocketSync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LivequeryWebsocketSync.js","sourceRoot":"","sources":["../../src/LivequeryWebsocketSync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LivequeryWebsocketSync.js","sourceRoot":"","sources":["../../src/LivequeryWebsocketSync.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,12 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { ServiceApiMetadata } from "./ApiGateway.js";
3
- export declare class RxjsUdp extends Observable<ServiceApiMetadata> {
3
+ export declare class RxjsUdp extends Observable<ServiceApiMetadata & {
4
+ host: string;
5
+ }> {
4
6
  #private;
7
+ private static isGateway;
5
8
  readonly id: `${string}-${string}-${string}-${string}-${string}`;
6
9
  constructor();
7
- broadcast(metadata: ServiceApiMetadata): Promise<void>;
10
+ broadcast(metadata: ServiceApiMetadata, ip?: string): Promise<void>;
11
+ forService(): void;
8
12
  }
@@ -4,12 +4,13 @@ import { networkInterfaces } from 'os';
4
4
  import { API_GATEWAY_NAMESPACE, API_GATEWAY_UDP_ADDRESS, API_GATEWAY_UDP_PORT } from "./const.js";
5
5
  import { randomUUID } from "crypto";
6
6
  export class RxjsUdp extends Observable {
7
+ static isGateway = false;
7
8
  id = randomUUID();
8
9
  #udp = createSocket({
9
10
  type: 'udp4',
10
11
  reuseAddr: true
11
12
  });
12
- #broadcast_ips = ['localhost', '255.255.255.255'];
13
+ #broadcast_ips = ['localhost'];
13
14
  constructor() {
14
15
  super(o => {
15
16
  this.#udp.bind({
@@ -40,10 +41,15 @@ export class RxjsUdp extends Observable {
40
41
  }
41
42
  });
42
43
  }
43
- async broadcast(metadata) {
44
- for (const host of this.#broadcast_ips) {
44
+ async broadcast(metadata, ip) {
45
+ for (const host of [
46
+ ...this.#broadcast_ips,
47
+ ...ip ? [ip] : []
48
+ ]) {
45
49
  await this.#udp.send(JSON.stringify({ ...metadata, id: this.id }), API_GATEWAY_UDP_PORT, host);
46
50
  }
47
51
  }
52
+ forService() {
53
+ }
48
54
  }
49
55
  //# sourceMappingURL=RxjsUdp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RxjsUdp.js","sourceRoot":"","sources":["../../src/RxjsUdp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RxjsUdp.js","sourceRoot":"","sources":["../../src/RxjsUdp.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  export const LIVEQUERY_MAGIC_KEY = `${process.env.LIVEQUERY_MAGIC_KEY || 'livequery'}/`;
2
2
  export const API_GATEWAY_NAMESPACE = process.env.API_GATEWAY_NAMESPACE || 'default';
3
3
  export const API_GATEWAY_UDP_PORT = Number(process.env.API_GATEWAY_UDP_PORT || 13579);
4
- export const API_GATEWAY_UDP_ADDRESS = process.env.API_GATEWAY_UDP_ADDRESS || '';
4
+ export const API_GATEWAY_UDP_ADDRESS = process.env.API_GATEWAY_UDP_ADDRESS || '0.0.0.0';
5
5
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,WACrE,GAAG,CAAA;AAEP,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS,CAAA;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,WACrE,GAAG,CAAA;AAEP,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,SAAS,CAAA;AACnF,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,KAAK,CAAC,CAAA;AACrF,MAAM,CAAC,MAAM,uBAAuB,GAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,SAAS,CAAA"}
@@ -3,15 +3,20 @@ import { LivequeryRequest, WebsocketSyncPayload } from "@livequery/types";
3
3
  export type LivequeryDatasourceOptions<T> = Array<T & {
4
4
  refs: string[];
5
5
  }>;
6
- export type LivequeryDatasource<Options = {}, StreamPayload = {}, Connection = any> = {
7
- init(routes: LivequeryDatasourceOptions<Options>, connections: {
8
- [name: string]: Connection;
9
- }): Promise<void>;
6
+ export type LivequeryDatasourceProps<OptionsType = {}, RawDataChangeType = {}, InjectType = any> = {
7
+ routes: LivequeryDatasourceOptions<OptionsType>;
8
+ deps: {
9
+ [name: string]: InjectType;
10
+ };
11
+ rawChanges: Observable<RawDataChangeType>;
12
+ };
13
+ export type LivequeryDatasource<OptionsType = {}, RawDataChangeType = {}, InjectType = any> = {
14
+ init(props: LivequeryDatasourceProps<OptionsType, RawDataChangeType, InjectType>): any;
10
15
  query(query: LivequeryRequest): any;
11
- enable_realtime?: (stream: Observable<StreamPayload>) => Observable<WebsocketSyncPayload>;
16
+ $: Observable<WebsocketSyncPayload>;
12
17
  };
13
- export declare const createDatasourceMapper: <Options, StreamPayload, Connection>(factory: {
14
- new (): LivequeryDatasource<Options, StreamPayload, Connection>;
15
- }, inject_tokens: {
16
- [connection_name: string]: any;
17
- }, ...observables: Array<Observable<StreamPayload>>) => [(options: Options) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void, import("@nestjs/common").FactoryProvider<any>];
18
+ export declare const createDatasourceMapper: <OptionsType = {}, RawDataChangeType = {}, InjectType = any>(factory: {
19
+ new (): LivequeryDatasource<OptionsType, RawDataChangeType, InjectType>;
20
+ }, injectTokens: {
21
+ [name: string]: any;
22
+ }, rawChanges: Observable<RawDataChangeType>) => [(options: OptionsType) => <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void, import("@nestjs/common").FactoryProvider<any>];
@@ -2,28 +2,27 @@ import { applyDecorators, UseInterceptors } from "@nestjs/common";
2
2
  import { LivequeryDatasourceInterceptors, $__datasource_factory_token } from "../LivequeryDatasourceInterceptors.js";
3
3
  import { UseLivequeryInterceptor } from "../LivequeryInterceptor.js";
4
4
  import { PathHelper } from "./PathHelper.js";
5
- import { merge } from "rxjs";
6
5
  import { LivequeryWebsocketSync } from "../LivequeryWebsocketSync.js";
7
- export const createDatasourceMapper = (factory, inject_tokens, ...observables) => {
8
- const observable = merge(...observables);
6
+ export const createDatasourceMapper = (factory, injectTokens, rawChanges) => {
9
7
  const RouteConfigList = [];
10
- const decorator = (options) => applyDecorators((target, method) => RouteConfigList.push({ target, method, options }), UseLivequeryInterceptor(), UseInterceptors(LivequeryDatasourceInterceptors), (_target, _method, descriptor) => {
8
+ const decorator = (options) => applyDecorators((target, method) => RouteConfigList.push({
9
+ ...(options || {}),
10
+ refs: PathHelper.join(Reflect.getMetadata('path', target.constructor), Reflect.getMetadata('path', target[method])).map(PathHelper.trimLivequeryHotkey)
11
+ }), UseLivequeryInterceptor(), UseInterceptors(LivequeryDatasourceInterceptors), (_target, _method, descriptor) => {
11
12
  Reflect.defineMetadata($__datasource_factory_token, factory, descriptor.value);
12
13
  });
13
- const getDatasourceMetadatas = () => RouteConfigList.map(config => {
14
- return {
15
- ...(config.options || {}),
16
- refs: PathHelper.join(Reflect.getMetadata('path', config.target.constructor), Reflect.getMetadata('path', config.target[config.method])).map(PathHelper.trimLivequeryHotkey)
17
- };
18
- });
19
14
  const provider = {
20
15
  provide: factory,
21
- inject: [{ token: LivequeryWebsocketSync, optional: true }, ...Object.values(inject_tokens)],
16
+ inject: [{ token: LivequeryWebsocketSync, optional: true }, ...Object.values(injectTokens)],
22
17
  useFactory: async (ws, ...injects) => {
18
+ const deps = Object.keys(injectTokens).reduce((acc, key, i) => ({ ...acc, [key]: injects[i] }), {});
23
19
  const ds = new factory();
24
- const map = Object.keys(inject_tokens).reduce((acc, key, i) => ({ ...acc, [key]: injects[i] }), {});
25
- await ds.init(getDatasourceMetadatas(), map);
26
- ws && ds.enable_realtime?.(observable).subscribe(change => ws.broadcast(change));
20
+ await ds.init({
21
+ deps,
22
+ rawChanges,
23
+ routes: RouteConfigList
24
+ });
25
+ ds.$.subscribe(d => ws.broadcast(d));
27
26
  return ds;
28
27
  }
29
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"createDatasourceMapper.js","sourceRoot":"","sources":["../../../src/helpers/createDatasourceMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAY,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACrH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAc,MAAM,MAAM,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AActE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAA2E,EAC3E,aAAiD,EACjD,GAAG,WAA6C,EAClD,EAAE;IAEA,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,CAAA;IAExC,MAAM,eAAe,GAA6D,EAAE,CAAC;IAErF,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,EAAE,CAAC,eAAe,CACnD,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EACrE,uBAAuB,EAAE,EACzB,eAAe,CAAC,+BAA+B,CAAC,EAChD,CAAC,OAAO,EAAE,OAAO,EAAE,UAA8B,EAAE,EAAE;QACjD,OAAO,CAAC,cAAc,CAAC,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAClF,CAAC,CACJ,CAAA;IAID,MAAM,sBAAsB,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC9D,OAAO;YACH,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAY;YACpC,IAAI,EAAE,UAAU,CAAC,IAAI,CACjB,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EACtD,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;SACxC,CAAA;IACL,CAAC,CAAC,CAAA;IAEF,MAAM,QAAQ,GAAa;QACvB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC5F,UAAU,EAAE,KAAK,EAAE,EAA0B,EAAE,GAAI,OAAO,EAAE,EAAE;YAC1D,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAA;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACnG,MAAM,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,GAAG,CAAC,CAAA;YAC5C,EAAE,IAAI,EAAE,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,CAAC,SAAS,CAC5C,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CACjC,CAAA;YACD,OAAO,EAAE,CAAA;QACb,CAAC;KACJ,CAAA;IAGD,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAwC,CAAA;AACvE,CAAC,CAAA"}
1
+ {"version":3,"file":"createDatasourceMapper.js","sourceRoot":"","sources":["../../../src/helpers/createDatasourceMapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAY,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAC;AACrH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAgBtE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,OAAmF,EACnF,YAAqC,EACrC,UAAyC,EAC3C,EAAE;IAGA,MAAM,eAAe,GAEhB,EAAE,CAAC;IAER,MAAM,SAAS,GAAG,CAAC,OAAoB,EAAE,EAAE,CAAC,eAAe,CACvD,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACrC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAgB;QACjC,IAAI,EAAE,UAAU,CAAC,IAAI,CACjB,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,EAC/C,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAC9C,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;KACxC,CAAC,EACF,uBAAuB,EAAE,EACzB,eAAe,CAAC,+BAA+B,CAAC,EAChD,CAAC,OAAO,EAAE,OAAO,EAAE,UAA8B,EAAE,EAAE;QACjD,OAAO,CAAC,cAAc,CAAC,2BAA2B,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAClF,CAAC,CACJ,CAAA;IAED,MAAM,QAAQ,GAAa;QACvB,OAAO,EAAE,OAAO;QAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3F,UAAU,EAAE,KAAK,EAAE,EAA0B,EAAE,GAAG,OAAO,EAAE,EAAE;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;YACnG,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAA;YACxB,MAAM,EAAE,CAAC,IAAI,CAAC;gBACV,IAAI;gBACJ,UAAU;gBACV,MAAM,EAAE,eAAe;aAC1B,CAAC,CAAA;YACF,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,OAAO,EAAE,CAAA;QACb,CAAC;KACJ,CAAA;IAGD,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAwC,CAAA;AACvE,CAAC,CAAA"}
@@ -1,3 +1,4 @@
1
+ export { ApiGatewayLinker } from './ApiGatewayLinker.js';
1
2
  export { listPaths } from './helpers/listPaths.js';
2
3
  export { LivequeryRequest } from './LivequeryRequest.js';
3
4
  export { LivequeryInterceptor, RealtimeSubscription, UseLivequeryInterceptor } from './LivequeryInterceptor.js';
@@ -6,4 +7,3 @@ export { createDatasourceMapper, LivequeryDatasourceOptions, LivequeryDatasource
6
7
  export { LivequeryDatasourceInterceptors, LivequeryItemMapper } from './LivequeryDatasourceInterceptors.js';
7
8
  export { UseWebsocketPublicKey, UseWebsocketPrivateKey } from './UseWebsocketShareKeyPair.js';
8
9
  export { ApiGateway } from './ApiGateway.js';
9
- export { ApiGatewayLinker } from './ApiGatewayLinker.js';
@@ -1,3 +1,4 @@
1
+ export { ApiGatewayLinker } from './ApiGatewayLinker.js';
1
2
  export { listPaths } from './helpers/listPaths.js';
2
3
  export { LivequeryRequest } from './LivequeryRequest.js';
3
4
  export { LivequeryInterceptor, UseLivequeryInterceptor } from './LivequeryInterceptor.js';
@@ -6,5 +7,4 @@ export { createDatasourceMapper } from './helpers/createDatasourceMapper.js';
6
7
  export { LivequeryDatasourceInterceptors, LivequeryItemMapper } from './LivequeryDatasourceInterceptors.js';
7
8
  export { UseWebsocketPublicKey, UseWebsocketPrivateKey } from './UseWebsocketShareKeyPair.js';
8
9
  export { ApiGateway } from './ApiGateway.js';
9
- export { ApiGatewayLinker } from './ApiGatewayLinker.js';
10
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAwB,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAmD,MAAM,qCAAqC,CAAA;AAC7H,OAAO,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC3G,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,oBAAoB,EAAwB,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAC/G,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAmD,MAAM,qCAAqC,CAAA;AAC7H,OAAO,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAA;AAC3G,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare class AppModule {
2
+ }
@@ -0,0 +1,19 @@
1
+ import { __decorate } from "tslib";
2
+ import { Module } from "@nestjs/common";
3
+ import { ApiGateway } from "../src/ApiGateway.js";
4
+ import { NestFactory } from "@nestjs/core";
5
+ import { LivequeryWebsocketSync } from "../src/LivequeryWebsocketSync.js";
6
+ import { WsAdapter } from '@nestjs/platform-ws';
7
+ let AppModule = class AppModule {
8
+ };
9
+ AppModule = __decorate([
10
+ Module({
11
+ controllers: [ApiGateway],
12
+ providers: [LivequeryWebsocketSync]
13
+ })
14
+ ], AppModule);
15
+ export { AppModule };
16
+ const app = await NestFactory.create(AppModule, { rawBody: true });
17
+ app.useWebSocketAdapter(new WsAdapter(app));
18
+ await app.listen(8081);
19
+ //# sourceMappingURL=gateway.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../tests/gateway.ts"],"names":[],"mappings":";AAAA,OAAO,EAAmB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAA;AAMtC,IAAM,SAAS,GAAf,MAAM,SAAS;CAAI,CAAA;AAAb,SAAS;IAJrB,MAAM,CAAC;QACJ,WAAW,EAAE,CAAC,UAAU,CAAC;QACzB,SAAS,EAAE,CAAC,sBAAsB,CAAC;KACtC,CAAC;GACW,SAAS,CAAI;;AAG1B,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;AAClE,GAAG,CAAC,mBAAmB,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAC3C,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { LivequeryWebsocketSync } from "../src/LivequeryWebsocketSync.js";
2
+ export declare class PetCollection {
3
+ private ws;
4
+ constructor(ws: LivequeryWebsocketSync);
5
+ list(): {
6
+ items: {
7
+ id: string;
8
+ legnth: number;
9
+ }[];
10
+ };
11
+ }
12
+ export declare class AppModule {
13
+ }