@livequery/nestjs 2.0.20 → 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 (37) 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/LivequeryResponse.d.ts +3 -7
  14. package/build/src/LivequeryResponse.js +1 -2
  15. package/build/src/LivequeryResponse.js.map +1 -1
  16. package/build/src/LivequeryWebsocketSync.d.ts +38 -23
  17. package/build/src/LivequeryWebsocketSync.js +122 -126
  18. package/build/src/LivequeryWebsocketSync.js.map +1 -1
  19. package/build/src/RxjsUdp.d.ts +6 -2
  20. package/build/src/RxjsUdp.js +9 -3
  21. package/build/src/RxjsUdp.js.map +1 -1
  22. package/build/src/const.js +1 -1
  23. package/build/src/const.js.map +1 -1
  24. package/build/src/helpers/createDatasourceMapper.d.ts +15 -10
  25. package/build/src/helpers/createDatasourceMapper.js +13 -14
  26. package/build/src/helpers/createDatasourceMapper.js.map +1 -1
  27. package/build/src/index.d.ts +1 -1
  28. package/build/src/index.js +1 -1
  29. package/build/src/index.js.map +1 -1
  30. package/build/tests/gateway.d.ts +2 -0
  31. package/build/tests/gateway.js +19 -0
  32. package/build/tests/gateway.js.map +1 -0
  33. package/build/tests/service.d.ts +13 -0
  34. package/build/tests/service.js +65 -0
  35. package/build/tests/service.js.map +1 -0
  36. package/build/tsconfig.tsbuildinfo +1 -0
  37. package/package.json +7 -3
@@ -18,7 +18,6 @@ export type ServiceApiMetadata = {
18
18
  id: string;
19
19
  namespace: string;
20
20
  role: 'service' | 'gateway';
21
- host: string;
22
21
  name: string;
23
22
  port: number;
24
23
  paths: Array<{
@@ -26,7 +25,10 @@ export type ServiceApiMetadata = {
26
25
  path: string;
27
26
  }>;
28
27
  websocket?: string;
29
- sig: string;
28
+ auth: string;
29
+ wsauth?: string;
30
+ linked: string[];
31
+ target?: string;
30
32
  };
31
33
  export type ServiceApiStatus = {
32
34
  id: string;
@@ -44,8 +46,8 @@ export type ApiGatewayClientOptions = {
44
46
  };
45
47
  export declare class ApiGateway {
46
48
  #private;
47
- private LivequeryWebsocketSync;
48
- constructor(LivequeryWebsocketSync: LivequeryWebsocketSync);
49
+ private lws;
50
+ constructor(lws: LivequeryWebsocketSync);
49
51
  private get;
50
52
  private post;
51
53
  private patch;
@@ -4,38 +4,68 @@ import * as http from 'http';
4
4
  import { LivequeryWebsocketSync } from './LivequeryWebsocketSync.js';
5
5
  import { API_GATEWAY_NAMESPACE } from './const.js';
6
6
  import { RxjsUdp } from './RxjsUdp.js';
7
- import { mergeMap } from 'rxjs/operators';
7
+ import { mergeMap, filter, debounceTime, groupBy } from 'rxjs/operators';
8
+ import { merge, of } from 'rxjs';
9
+ import { generateKeyPairSync } from 'crypto';
10
+ import jwt from 'jsonwebtoken';
8
11
  let ApiGateway = class ApiGateway {
9
- LivequeryWebsocketSync;
12
+ lws;
10
13
  #services = new Map;
11
14
  #routing = {};
12
- #udp = new RxjsUdp();
13
- constructor(LivequeryWebsocketSync) {
14
- this.LivequeryWebsocketSync = LivequeryWebsocketSync;
15
- this.#udp = new RxjsUdp();
16
- this.#udp.pipe(mergeMap(async ({ host, port }) => {
17
- const r = await fetch(`http://${host}:${port}/api-gateway/metadata`).then(r => r.json());
18
- r.data && r.data.namespace == API_GATEWAY_NAMESPACE && this.#join({ ...r.data, host });
19
- })).subscribe();
20
- this.#udp.broadcast({
21
- namespace: API_GATEWAY_NAMESPACE,
15
+ #secret = generateKeyPairSync('ec', {
16
+ namedCurve: 'P-256',
17
+ publicKeyEncoding: { type: 'spki', format: 'pem' },
18
+ privateKeyEncoding: { type: 'pkcs8', format: 'pem' },
19
+ });
20
+ constructor(lws) {
21
+ this.lws = lws;
22
+ const udp = new RxjsUdp();
23
+ merge(udp, of({
22
24
  host: '',
23
- id: '',
24
- name: '',
25
+ namespace: API_GATEWAY_NAMESPACE,
26
+ id: udp.id,
27
+ name: 'seeding-gateway',
25
28
  paths: [],
26
29
  port: 0,
27
- role: 'gateway',
28
- sig: ''
29
- });
30
+ role: 'service',
31
+ linked: [],
32
+ auth: ''
33
+ })).pipe(filter(m => m.role == 'service'), filter(m => !this.#services.has(m.id)), groupBy(m => m.id), mergeMap($ => $.pipe(debounceTime(500), mergeMap(async ({ host, ...data }) => {
34
+ if (!data.auth) {
35
+ const auth = jwt.sign({}, this.#secret.privateKey, {
36
+ algorithm: 'ES256',
37
+ expiresIn: 3600
38
+ });
39
+ const me = {
40
+ namespace: API_GATEWAY_NAMESPACE,
41
+ id: udp.id,
42
+ name: '',
43
+ paths: [],
44
+ port: 0,
45
+ role: 'gateway',
46
+ auth,
47
+ linked: [...this.#services.keys()]
48
+ };
49
+ udp.broadcast(me, host || undefined);
50
+ return;
51
+ }
52
+ try {
53
+ jwt.verify(data.auth, this.#secret.publicKey);
54
+ await this.#join(host, data);
55
+ return;
56
+ }
57
+ catch (e) {
58
+ }
59
+ })))).subscribe();
30
60
  }
31
- async #join(metadata) {
61
+ async #join(host, metadata) {
32
62
  if (this.#services.has(metadata.id))
33
63
  return;
34
- const hostname = `${metadata.host}:${metadata.port}`;
35
- const subscription = metadata.websocket ? this.LivequeryWebsocketSync?.connect(`ws://${hostname}${metadata.websocket}`, () => this.#disconnect(metadata.id)) : undefined;
36
- this.#services.set(metadata.id, { metadata, subscription });
37
- process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API online: ${metadata.name} at ${metadata.host}:${metadata.port}`);
38
- metadata.websocket && process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service websocket online: ${metadata.name} at ${metadata.host}:${metadata.port}${metadata.websocket}`);
64
+ const hostname = `${host}:${metadata.port}`;
65
+ const subscription = metadata.websocket && this.lws?.connect(`ws://${hostname}${metadata.websocket}`, metadata.wsauth, () => this.#disconnect(metadata.id));
66
+ this.#services.set(metadata.id, { metadata, subscription, host });
67
+ process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API online: ${metadata.name} at ${host}:${metadata.port}`);
68
+ metadata.websocket && process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service websocket online: ${metadata.name} at ${host}:${metadata.port}${metadata.websocket}`);
39
69
  for (const { method, path } of metadata.paths) {
40
70
  const refs = path.split('/').map(r => {
41
71
  if (r.includes(':')) {
@@ -79,12 +109,12 @@ let ApiGateway = class ApiGateway {
79
109
  const service = this.#services.get(id);
80
110
  if (!service)
81
111
  return;
82
- const { metadata, subscription } = service;
112
+ const { metadata, subscription, host } = service;
83
113
  subscription.unsubscribe();
84
- process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API OFFLINE: ${metadata.name} at ${metadata.host}:${metadata.port}`);
85
- process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service websocket OFFLINE: ${metadata.name} at ${metadata.host}:${metadata.port}${metadata.websocket}`);
114
+ process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service API OFFLINE: ${metadata.name} at ${host}:${metadata.port}`);
115
+ process.env.LIVEQUERY_API_GATEWAY_DEBUG && console.log(`Service websocket OFFLINE: ${metadata.name} at ${host}:${metadata.port}${metadata.websocket}`);
86
116
  this.#services.delete(id);
87
- const hostname = `${metadata.host}:${metadata.port}`;
117
+ const hostname = `${host}:${metadata.port}`;
88
118
  for (let routes = [this.#routing]; routes.length > 0; routes = routes.map(c => [...Object.values(c)].map(c => c.children).filter(c => !!c)).flat(2)) {
89
119
  for (const route of routes) {
90
120
  for (const { methods } of Object.values(route || {})) {
@@ -122,45 +152,57 @@ let ApiGateway = class ApiGateway {
122
152
  }
123
153
  #proxy(req, res) {
124
154
  if (Number(req.headers['content-length'] || 0) > 0 && !req.rawBody) {
125
- return res.json({
155
+ return res.status(500).json({
126
156
  error: {
157
+ status: 500,
127
158
  code: "MISISNG_API_GATEWAY_RAW_BODY",
128
- message: `Please enable rawBody = true in NestFactory.create(`
159
+ message: `Please enable rawBody = true in NestFactory.create()`
129
160
  }
130
161
  });
131
162
  }
132
163
  const target = this.#resolve(req.url, req.method.toUpperCase());
133
164
  if (!target) {
134
- return res.json({
165
+ const status = target === null ? 500 : 404;
166
+ return res.sendStatus(status).json({
135
167
  error: {
136
- code: target === null ? 'MICROSERVICE_OFFLINE' : 'SERVICE_NOT_FOUND'
168
+ status,
169
+ code: status == 500 ? 'MICROSERVICE_OFFLINE' : 'API_NOT_FOUND'
137
170
  }
138
171
  });
139
172
  }
140
173
  const [host, port] = target.uri.split(':');
174
+ const headers = {
175
+ ...req.headers,
176
+ ...this.lws ? {
177
+ 'x-lcid': req.headers['x-lcid'] || req.headers['socket_id'],
178
+ 'x-lgid': req.headers['x-lgid'] || this.lws.id
179
+ } : {}
180
+ };
141
181
  const options = {
142
182
  host,
143
183
  port: Number(port || 80),
144
184
  path: req.url,
145
185
  method: req.method.toUpperCase(),
146
- headers: req.headers,
147
- insecureHTTPParser: true
186
+ headers
148
187
  };
149
- const proxy_request = http.request(options, (response) => {
150
- res.status(response.statusCode);
151
- for (const [k, v] of Object.entries(response.headers)) {
152
- res.setHeader(k, v);
153
- }
154
- response.pipe(res);
155
- });
188
+ const proxy_request = http.request(options);
156
189
  proxy_request
157
190
  .on('error', (e) => {
158
191
  e.code == 'ECONNREFUSED' && this.#disconnect(target.instance_id);
159
192
  res.json({ error: { code: "SERVICE_API_OFFLINE" } });
160
193
  })
161
194
  .on('upgrade', (ireq, socket, head) => {
195
+ })
196
+ .on('response', response => {
197
+ res.status(response.statusCode);
198
+ for (const [k, v] of Object.entries(response.headers)) {
199
+ res.setHeader(k, v);
200
+ }
201
+ response.pipe(res);
202
+ });
203
+ proxy_request.write(req.rawBody || Buffer.alloc(0), e => {
204
+ proxy_request.end();
162
205
  });
163
- proxy_request.write(req.rawBody || Buffer.alloc(0));
164
206
  }
165
207
  get(req, res) {
166
208
  return this.#proxy(req, res);
@@ -1 +1 @@
1
- {"version":3,"file":"ApiGateway.js","sourceRoot":"","sources":["../../src/ApiGateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiGateway.js","sourceRoot":"","sources":["../../src/ApiGateway.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,8 @@
1
1
  import { ModulesContainer } from "@nestjs/core";
2
- import { ServiceApiMetadata } from "./ApiGateway.js";
3
2
  import { LivequeryWebsocketSync } from "./LivequeryWebsocketSync.js";
4
3
  export declare class ApiGatewayLinker {
5
- private LivequeryWebsocketSync;
6
4
  private readonly modulesContainer;
7
- private static udp;
5
+ private static $me;
8
6
  constructor(LivequeryWebsocketSync: LivequeryWebsocketSync, modulesContainer: ModulesContainer);
9
- onModuleInit(): void;
10
- static broadcast(name: string, local_api_port: number): Promise<void>;
11
- metadata(): {
12
- data: ServiceApiMetadata;
13
- };
7
+ static broadcast(name: string, port: number): Promise<void>;
14
8
  }
@@ -1,66 +1,49 @@
1
+ var ApiGatewayLinker_1;
1
2
  import { __decorate, __metadata, __param } from "tslib";
2
- import { Controller, Get, Inject, Optional } from "@nestjs/common";
3
+ import { Inject, Injectable, Optional } from "@nestjs/common";
3
4
  import { ModulesContainer } from "@nestjs/core";
4
5
  import { listPaths } from "./helpers/listPaths.js";
5
6
  import { LivequeryWebsocketSync, WEBSOCKET_PATH } from "./LivequeryWebsocketSync.js";
6
- import { BehaviorSubject, merge } from "rxjs";
7
- import { randomUUID, createHash } from "crypto";
7
+ import { merge, Subject, of, mergeMap } from "rxjs";
8
8
  import { API_GATEWAY_NAMESPACE } from "./const.js";
9
- import { filter, tap } from 'rxjs/operators';
9
+ import { filter, combineLatestWith, debounceTime, groupBy } from 'rxjs/operators';
10
10
  import { RxjsUdp } from "./RxjsUdp.js";
11
- const $METADATA = new BehaviorSubject({
12
- namespace: API_GATEWAY_NAMESPACE,
13
- role: 'service',
14
- host: '',
15
- id: randomUUID(),
16
- name: '',
17
- paths: [],
18
- port: 0,
19
- sig: ''
20
- });
21
11
  let ApiGatewayLinker = class ApiGatewayLinker {
22
- LivequeryWebsocketSync;
12
+ static { ApiGatewayLinker_1 = this; }
23
13
  modulesContainer;
24
- static udp = new RxjsUdp();
14
+ static $me = new Subject();
25
15
  constructor(LivequeryWebsocketSync, modulesContainer) {
26
- this.LivequeryWebsocketSync = LivequeryWebsocketSync;
27
16
  this.modulesContainer = modulesContainer;
28
17
  const paths = [...this.modulesContainer.values()].map(m => (listPaths([...m.controllers.keys()].map(c => c)))).flat(2);
29
- $METADATA.next({
30
- ...$METADATA.getValue(),
31
- paths,
32
- websocket: this.LivequeryWebsocketSync ? WEBSOCKET_PATH : undefined
33
- });
34
- }
35
- onModuleInit() {
36
- $METADATA.next({
37
- ...$METADATA.getValue(),
38
- sig: createHash('md5').update(API_GATEWAY_NAMESPACE).digest('base64')
39
- });
40
- }
41
- static async broadcast(name, local_api_port) {
42
- $METADATA.next({
43
- ...$METADATA.getValue(),
44
- name,
45
- port: local_api_port
46
- });
47
18
  const $udp = new RxjsUdp();
48
- merge($udp.pipe(filter(m => m.role == 'gateway')), $METADATA.pipe(filter(m => !!m.sig))).pipe(tap(() => $udp.broadcast($METADATA.getValue()))).subscribe();
49
- }
50
- metadata() {
51
- return {
52
- data: $METADATA.getValue()
19
+ const metadata = {
20
+ namespace: API_GATEWAY_NAMESPACE,
21
+ role: 'service',
22
+ id: $udp.id,
23
+ name: 'seeding-service',
24
+ paths,
25
+ port: 0,
26
+ linked: [],
27
+ auth: '',
28
+ wsauth: LivequeryWebsocketSync?.auth,
29
+ websocket: LivequeryWebsocketSync ? WEBSOCKET_PATH : undefined
53
30
  };
31
+ merge($udp, of({ ...metadata, role: 'gateway' })).pipe(filter(m => m.role == 'gateway'), filter(r => !r.linked.includes($udp.id)), combineLatestWith(ApiGatewayLinker_1.$me), groupBy(([a, b]) => a.id), mergeMap($ => $.pipe(debounceTime(500), mergeMap(async ([a, { name, port }]) => {
32
+ const me = {
33
+ ...metadata,
34
+ name,
35
+ port,
36
+ auth: a.auth
37
+ };
38
+ $udp.broadcast(me);
39
+ })))).subscribe();
40
+ }
41
+ static async broadcast(name, port) {
42
+ this.$me.next({ name, port });
54
43
  }
55
44
  };
56
- __decorate([
57
- Get('metadata'),
58
- __metadata("design:type", Function),
59
- __metadata("design:paramtypes", []),
60
- __metadata("design:returntype", void 0)
61
- ], ApiGatewayLinker.prototype, "metadata", null);
62
- ApiGatewayLinker = __decorate([
63
- Controller('/api-gateway'),
45
+ ApiGatewayLinker = ApiGatewayLinker_1 = __decorate([
46
+ Injectable(),
64
47
  __param(0, Optional()),
65
48
  __param(0, Inject()),
66
49
  __metadata("design:paramtypes", [LivequeryWebsocketSync,
@@ -1 +1 @@
1
- {"version":3,"file":"ApiGatewayLinker.js","sourceRoot":"","sources":["../../src/ApiGatewayLinker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiGatewayLinker.js","sourceRoot":"","sources":["../../src/ApiGatewayLinker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { ModulesContainer } from "@nestjs/core";
2
+ import { LivequeryWebsocketSync } from "./LivequeryWebsocketSync.js";
3
+ export declare class GatewayLinker {
4
+ private readonly modulesContainer;
5
+ private static $me;
6
+ constructor(LivequeryWebsocketSync: LivequeryWebsocketSync, modulesContainer: ModulesContainer);
7
+ static broadcast(name: string, port: number): Promise<void>;
8
+ }
@@ -0,0 +1,53 @@
1
+ var GatewayLinker_1;
2
+ import { __decorate, __metadata, __param } from "tslib";
3
+ import { Inject, Injectable, Optional } from "@nestjs/common";
4
+ import { ModulesContainer } from "@nestjs/core";
5
+ import { listPaths } from "./helpers/listPaths.js";
6
+ import { LivequeryWebsocketSync, WEBSOCKET_PATH } from "./LivequeryWebsocketSync.js";
7
+ import { merge, Subject, of, mergeMap } from "rxjs";
8
+ import { API_GATEWAY_NAMESPACE } from "./const.js";
9
+ import { filter, combineLatestWith, debounceTime, groupBy } from 'rxjs/operators';
10
+ import { RxjsUdp } from "./RxjsUdp.js";
11
+ let GatewayLinker = class GatewayLinker {
12
+ static { GatewayLinker_1 = this; }
13
+ modulesContainer;
14
+ static $me = new Subject();
15
+ constructor(LivequeryWebsocketSync, modulesContainer) {
16
+ this.modulesContainer = modulesContainer;
17
+ const paths = [...this.modulesContainer.values()].map(m => (listPaths([...m.controllers.keys()].map(c => c)))).flat(2);
18
+ const $udp = new RxjsUdp();
19
+ const metadata = {
20
+ namespace: API_GATEWAY_NAMESPACE,
21
+ role: 'service',
22
+ id: $udp.id,
23
+ name: 'seeding-service',
24
+ paths,
25
+ port: 0,
26
+ linked: [],
27
+ auth: '',
28
+ wsauth: LivequeryWebsocketSync?.auth,
29
+ websocket: LivequeryWebsocketSync ? WEBSOCKET_PATH : undefined
30
+ };
31
+ merge($udp, of({ ...metadata, role: 'gateway' })).pipe(filter(m => m.role == 'gateway'), filter(r => !r.linked.includes($udp.id)), combineLatestWith(GatewayLinker_1.$me), groupBy(([a, b]) => a.id), mergeMap($ => $.pipe(debounceTime(500), mergeMap(async ([a, { name, port }]) => {
32
+ const me = {
33
+ ...metadata,
34
+ name,
35
+ port,
36
+ auth: a.auth
37
+ };
38
+ $udp.broadcast(me);
39
+ })))).subscribe();
40
+ }
41
+ static async broadcast(name, port) {
42
+ this.$me.next({ name, port });
43
+ }
44
+ };
45
+ GatewayLinker = GatewayLinker_1 = __decorate([
46
+ Injectable(),
47
+ __param(0, Optional()),
48
+ __param(0, Inject()),
49
+ __metadata("design:paramtypes", [LivequeryWebsocketSync,
50
+ ModulesContainer])
51
+ ], GatewayLinker);
52
+ export { GatewayLinker };
53
+ //# sourceMappingURL=GatewayLinker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GatewayLinker.js","sourceRoot":"","sources":["../../src/GatewayLinker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { CallHandler, ExecutionContext, NestInterceptor } from "@nestjs/common";
2
2
  import { LivequeryWebsocketSync } from "./LivequeryWebsocketSync.js";
3
3
  export type RealtimeSubscription = {
4
- session_id: string;
4
+ client_id: string;
5
+ gateway_id: string;
5
6
  collection_ref: string;
6
7
  doc_id: string;
7
8
  };
@@ -4,7 +4,6 @@ import { map } from "rxjs/operators";
4
4
  import { PathHelper } from "./helpers/PathHelper.js";
5
5
  import { LivequeryWebsocketSync } from "./LivequeryWebsocketSync.js";
6
6
  import { InjectWebsocketPrivateKey } from "./UseWebsocketShareKeyPair.js";
7
- import JWT from 'jsonwebtoken';
8
7
  import { hidePrivateFields } from "./helpers/hidePrivateFields.js";
9
8
  let LivequeryInterceptor = class LivequeryInterceptor {
10
9
  LivequeryWebsocketSync;
@@ -29,32 +28,25 @@ let LivequeryInterceptor = class LivequeryInterceptor {
29
28
  body: req.body,
30
29
  method: req.method.toLowerCase()
31
30
  };
32
- const session_id = req.headers.session_id || req.headers.socket_id;
33
- req.method == 'GET' && session_id && this.LivequeryWebsocketSync?.listen({
34
- collection_ref,
35
- doc_id,
36
- session_id
37
- });
38
- const realtime_token = await new Promise(s => {
39
- if (!this.secret_or_private_key || req.method.toLowerCase() != 'get')
40
- return s(null);
41
- JWT.sign({ collection_ref, doc_id, session_id }, this.secret_or_private_key, {}, (error, data) => s(error ? null : data));
42
- });
31
+ const client_id = req.headers['x-lcid'] || req.headers.socket_id;
32
+ const gateway_id = req.headers['x-lgid'] || this.LivequeryWebsocketSync.id;
33
+ req.method == 'GET' && client_id && this.LivequeryWebsocketSync?.listen([{
34
+ collection_ref,
35
+ doc_id,
36
+ client_id,
37
+ gateway_id
38
+ }]);
43
39
  return next.handle().pipe(map(data => {
44
40
  if (data.item) {
45
41
  return {
46
42
  data: {
47
43
  ...data,
48
44
  item: hidePrivateFields(data.item.toJSON ? data.item.toJSON() : data.item),
49
- realtime_token
50
45
  }
51
46
  };
52
47
  }
53
48
  return {
54
- data: {
55
- ...data,
56
- realtime_token
57
- }
49
+ data
58
50
  };
59
51
  }));
60
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LivequeryInterceptor.js","sourceRoot":"","sources":["../../src/LivequeryInterceptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LivequeryInterceptor.js","sourceRoot":"","sources":["../../src/LivequeryInterceptor.ts"],"names":[],"mappings":";AACA,OAAO,EAAiC,MAAM,EAAE,UAAU,EAAmB,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC/H,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAU5D,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;IAG2B;IACH;IAFrD,YACwD,sBAA8C,EACjD,qBAA6B;QAD1B,2BAAsB,GAAtB,sBAAsB,CAAwB;QACjD,0BAAqB,GAArB,qBAAqB,CAAQ;IAElF,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAExD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAA;QAG/C,MAAM,EACF,GAAG,EACH,aAAa,EACb,cAAc,EACd,MAAM,GAET,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;QAE5D,MAAM,EACF,cAAc,EAAE,qBAAqB,EACrC,GAAG,EAAE,UAAU,EAClB,GAAG,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAGnD,GAAG,CAAC,SAAS,GAAG;YACZ,GAAG;YACH,UAAU;YACV,cAAc;YACd,qBAAqB;YACrB,aAAa;YACb,MAAM;YACN,OAAO,EAAE,GAAG,CAAC,KAAK;YAClB,IAAI,EAAE,GAAG,CAAC,MAAM;YAChB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE;SACf,CAAA;QAGrB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,CAAA;QAChE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAA;QAC1E,GAAG,CAAC,MAAM,IAAI,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;gBACrE,cAAc;gBACd,MAAM;gBACN,SAAS;gBACT,UAAU;aACb,CAAC,CAAC,CAAA;QAEH,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACrB,GAAG,CAAC,IAAI,CAAC,EAAE;YACP,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;oBACH,IAAI,EAAE;wBACF,GAAG,IAAI;wBACP,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;qBAC7E;iBACJ,CAAA;YACL,CAAC;YACD,OAAO;gBACH,IAAI;aACP,CAAA;QACL,CAAC,CAAC,CACL,CAAA;IACL,CAAC;CACJ,CAAA;AAlEY,oBAAoB;IADhC,UAAU,EAAE;IAIJ,WAAA,QAAQ,EAAE,CAAA;IAAE,WAAA,MAAM,CAAC,sBAAsB,CAAC,CAAA;IAC1C,WAAA,QAAQ,EAAE,CAAA;IAAE,WAAA,yBAAyB,EAAE,CAAA;qCADoC,sBAAsB;GAH7F,oBAAoB,CAkEhC;;AAGD,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAA"}
@@ -1,7 +1,3 @@
1
- export type LivequeryResponse<T = any> = {
2
- items: T[];
3
- page_info?: {
4
- has_more: boolean;
5
- };
6
- };
7
- export declare const LivequeryResponse: (...dataOrPipes: unknown[]) => ParameterDecorator;
1
+ import { CollectionResponse, DocumentResponse, LivequeryBaseEntity } from '@livequery/types';
2
+ export { CollectionResponse, DocumentResponse, LivequeryBaseEntity };
3
+ export type LivequeryResponse<T extends LivequeryBaseEntity> = CollectionResponse<T> | DocumentResponse<T>;
@@ -1,3 +1,2 @@
1
- import { createParamDecorator } from "@nestjs/common";
2
- export const LivequeryResponse = createParamDecorator((data, ctx) => ctx.switchToHttp().getRequest().livequery_response);
1
+ export {};
3
2
  //# sourceMappingURL=LivequeryResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LivequeryResponse.js","sourceRoot":"","sources":["../../src/LivequeryResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAoB,MAAM,gBAAgB,CAAC;AASxE,MAAM,CAAC,MAAM,iBAAiB,GAAG,oBAAoB,CACjD,CAAC,IAAa,EAAE,GAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAC/F,CAAA"}
1
+ {"version":3,"file":"LivequeryResponse.js","sourceRoot":"","sources":["../../src/LivequeryResponse.ts"],"names":[],"mappings":""}
@@ -1,38 +1,53 @@
1
- /// <reference types="node" resolution-mode="require"/>
2
1
  import { RealtimeSubscription } from "./LivequeryInterceptor.js";
3
2
  import { UpdatedData, WebsocketSyncPayload, LivequeryBaseEntity } from "@livequery/types";
4
- import { Socket } from "dgram";
3
+ import WebSocket from 'ws';
4
+ export type WebSocketHelloEvent = {
5
+ event: 'hello';
6
+ gid: string;
7
+ };
8
+ export type WebSocketUnsubscribeEvent = {
9
+ event: 'unsubscribe';
10
+ data: {
11
+ ref: string;
12
+ client_id: string;
13
+ };
14
+ };
15
+ export type WebSocketStartEvent = {
16
+ event: 'start';
17
+ data: {
18
+ id: string;
19
+ auth: string;
20
+ };
21
+ };
22
+ export type WebSocketSubscribeEvent = RealtimeSubscription & {
23
+ event: 'subscribe';
24
+ };
5
25
  export type WebSocketSyncEvent = {
6
- event: string;
7
- session_id: string;
26
+ event: 'sync';
27
+ cids: string[];
8
28
  data?: {
9
29
  changes: UpdatedData[];
10
30
  };
11
31
  };
32
+ export type WebsocketWithMetadata = WebSocket & {
33
+ gateway: boolean;
34
+ id: string;
35
+ refs: Set<string>;
36
+ };
12
37
  export declare const WEBSOCKET_PATH: string;
13
38
  export declare class LivequeryWebsocketSync {
14
39
  #private;
15
- private secret_or_public_key;
40
+ readonly id: `${string}-${string}-${string}-${string}-${string}`;
41
+ readonly auth: `${string}-${string}-${string}-${string}-${string}`;
16
42
  private readonly changes;
17
- constructor(secret_or_public_key: string);
18
- connect(url: string, ondisconect?: Function): import("rxjs").Subscription;
19
- private handleDisconnect;
20
- private handleConnection;
43
+ constructor();
44
+ connect(url: string, auth: string, ondisconect?: Function): import("rxjs").Subscription;
21
45
  broadcast<T extends LivequeryBaseEntity = LivequeryBaseEntity>(event: WebsocketSyncPayload<T>): void;
22
- start(socket: Socket, { id: session_id }: {
23
- id: string;
24
- }): void;
25
- stop(socket: Socket, { id: session_id }: {
26
- id: string;
27
- }): void;
28
- subscribe(socket: Socket & {
29
- id: string;
30
- }, { realtime_token }: {
31
- realtime_token: string;
32
- }): Promise<void>;
33
- unsubscribe(socket: Socket, { ref, id }: {
46
+ start(socket: WebsocketWithMetadata, { id, auth }: WebSocketStartEvent['data']): void;
47
+ unsubscribe(socket: WebsocketWithMetadata, { ref, client_id }: {
34
48
  ref: string;
35
- id?: string;
49
+ client_id?: string;
36
50
  }): void;
37
- listen({ collection_ref, doc_id, session_id }: RealtimeSubscription): void;
51
+ private handleDisconnect;
52
+ listen(e: RealtimeSubscription[]): void;
38
53
  }