@haku-sci/utils 2.7.1 → 2.7.2

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 (42) hide show
  1. package/dist/TCP/tcp.service.js +7 -3
  2. package/dist/TCP/tcp.service.js.map +1 -1
  3. package/dist/index.d.ts +7 -0
  4. package/dist/index.js +7 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/microservice/microservice.service.d.ts +0 -1
  7. package/dist/microservice/microservice.service.js +3 -25
  8. package/dist/microservice/microservice.service.js.map +1 -1
  9. package/dist/utils.d.ts +6 -0
  10. package/dist/utils.js +32 -4
  11. package/dist/utils.js.map +1 -1
  12. package/dist/wss/bridge-registry.service.d.ts +15 -0
  13. package/dist/wss/bridge-registry.service.js +38 -0
  14. package/dist/wss/bridge-registry.service.js.map +1 -0
  15. package/dist/wss/canonical-key.d.ts +1 -0
  16. package/dist/wss/canonical-key.js +20 -0
  17. package/dist/wss/canonical-key.js.map +1 -0
  18. package/dist/wss/send-to-user.d.ts +8 -0
  19. package/dist/wss/send-to-user.js +29 -0
  20. package/dist/wss/send-to-user.js.map +1 -0
  21. package/dist/wss/ticket.controller.d.ts +3 -0
  22. package/dist/wss/ticket.controller.js +34 -0
  23. package/dist/wss/ticket.controller.js.map +1 -0
  24. package/dist/wss/ticket.module.d.ts +2 -0
  25. package/dist/wss/ticket.module.js +20 -0
  26. package/dist/wss/ticket.module.js.map +1 -0
  27. package/dist/wss/ticket.service.d.ts +11 -0
  28. package/dist/wss/ticket.service.js +39 -0
  29. package/dist/wss/ticket.service.js.map +1 -0
  30. package/dist/wss/utils.d.ts +11 -0
  31. package/dist/wss/utils.js +38 -0
  32. package/dist/wss/utils.js.map +1 -0
  33. package/dist/wss/wss-microservice.service.d.ts +26 -0
  34. package/dist/wss/wss-microservice.service.js +97 -0
  35. package/dist/wss/wss-microservice.service.js.map +1 -0
  36. package/dist/wss/wss.controller.d.ts +3 -0
  37. package/dist/wss/wss.controller.js +34 -0
  38. package/dist/wss/wss.controller.js.map +1 -0
  39. package/dist/wss/wss.module.d.ts +2 -0
  40. package/dist/wss/wss.module.js +20 -0
  41. package/dist/wss/wss.module.js.map +1 -0
  42. package/package.json +4 -2
@@ -27,10 +27,14 @@ let TCPService = TCPService_1 = class TCPService {
27
27
  try {
28
28
  payload["sender"] = await utils.microServiceName();
29
29
  let response$ = await client.send([resource, action].join("/"), payload).pipe((0, rxjs_1.catchError)(err => {
30
- err = err.error || err;
31
- const status = err?.status || common_1.HttpStatus.BAD_REQUEST;
30
+ const inner = err?.error ?? err;
31
+ const status = inner?.status || inner?.statusCode || err?.status || common_1.HttpStatus.BAD_REQUEST;
32
+ const message = (typeof inner === 'object' ? inner?.message : inner) ||
33
+ err?.message ||
34
+ 'Unknown error';
32
35
  const payload = {
33
- ...(typeof err === 'object' ? err : { message: err }),
36
+ ...(typeof inner === 'object' ? inner : {}),
37
+ message,
34
38
  service,
35
39
  };
36
40
  return (0, rxjs_1.throwError)(() => new common_1.HttpException(payload, status));
@@ -1 +1 @@
1
- {"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/TCP/tcp.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/TCP/tcp.service.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,4 +6,11 @@ export * from './TCP/tcp-param.decorator';
6
6
  export * from './TCP/restrict-sender.interceptor';
7
7
  export * from './rabbit-mq/rabbit-mq.module';
8
8
  export * from './rabbit-mq/rabbit-mq.service';
9
+ export * from './wss/canonical-key';
10
+ export * from './wss/ticket.service';
11
+ export * from './wss/wss.controller';
12
+ export * from './wss/wss.module';
13
+ export * from './wss/bridge-registry.service';
14
+ export * from './wss/utils';
15
+ export * from './wss/wss-microservice.service';
9
16
  export * from './utils';
package/dist/index.js CHANGED
@@ -22,5 +22,12 @@ __exportStar(require("./TCP/tcp-param.decorator"), exports);
22
22
  __exportStar(require("./TCP/restrict-sender.interceptor"), exports);
23
23
  __exportStar(require("./rabbit-mq/rabbit-mq.module"), exports);
24
24
  __exportStar(require("./rabbit-mq/rabbit-mq.service"), exports);
25
+ __exportStar(require("./wss/canonical-key"), exports);
26
+ __exportStar(require("./wss/ticket.service"), exports);
27
+ __exportStar(require("./wss/wss.controller"), exports);
28
+ __exportStar(require("./wss/wss.module"), exports);
29
+ __exportStar(require("./wss/bridge-registry.service"), exports);
30
+ __exportStar(require("./wss/utils"), exports);
31
+ __exportStar(require("./wss/wss-microservice.service"), exports);
25
32
  __exportStar(require("./utils"), exports);
26
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,oDAAkC;AAClC,mDAAiC;AACjC,kEAAgD;AAChD,4DAA0C;AAC1C,oEAAkD;AAClD,+DAA6C;AAC7C,gEAA8C;AAC9C,0CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,oDAAkC;AAClC,mDAAiC;AACjC,kEAAgD;AAChD,4DAA0C;AAC1C,oEAAkD;AAClD,+DAA6C;AAC7C,gEAA8C;AAC9C,sDAAoC;AACpC,uDAAqC;AACrC,uDAAqC;AACrC,mDAAiC;AACjC,gEAA8C;AAC9C,8CAA4B;AAC5B,iEAA+C;AAC/C,0CAAwB"}
@@ -3,7 +3,6 @@ export declare class Microservice {
3
3
  private static serverAddress;
4
4
  static logger: Logger;
5
5
  static bootstrapMicroservice(appModule: any): Promise<void>;
6
- private static isPortFree;
7
6
  private static setServerAddress;
8
7
  private static startTCPMicroService;
9
8
  static get host(): string;
@@ -4,10 +4,8 @@ exports.Microservice = void 0;
4
4
  const common_1 = require("@nestjs/common");
5
5
  const core_1 = require("@nestjs/core");
6
6
  const microservices_1 = require("@nestjs/microservices");
7
- const net = require("net");
8
7
  const utils = require("../utils");
9
8
  const exceptionFilter_1 = require("./exceptionFilter");
10
- const os = require("os");
11
9
  const consul_1 = require("./consul");
12
10
  const tcp_service_1 = require("../TCP/tcp.service");
13
11
  class Microservice {
@@ -22,30 +20,10 @@ class Microservice {
22
20
  await tcp_service_1.TCPService.registerHakuSciMessageHandlers(app, this.logger);
23
21
  consul_1.Consul.registerService(this.serverAddress, this.logger);
24
22
  }
25
- static isPortFree(port) {
26
- return new Promise((resolve) => {
27
- const server = net.createServer();
28
- server.once('error', (err) => {
29
- resolve(false);
30
- });
31
- server.once('listening', () => {
32
- server.close(() => resolve(true));
33
- });
34
- server.listen(port, this.serverAddress.address);
35
- });
36
- }
37
23
  static async setServerAddress() {
38
- this.serverAddress.address = process.env.ADDRESS || process.env.DEBUG && "127.0.0.1" || Object.values(os.networkInterfaces())
39
- .flatMap((iface) => iface ?? [])
40
- .find((addr) => addr.family === 'IPv4' && !addr.internal)
41
- .address;
42
- if (parseInt(process.env.TCP_PORT))
43
- this.serverAddress.port = parseInt(process.env.TCP_PORT);
44
- else
45
- while (!await this.isPortFree(this.serverAddress.port))
46
- this.serverAddress.port++;
47
- this.logger.log("address to be listened to: " + this.serverAddress.address);
48
- this.logger.log("port to be listened to: " + this.serverAddress.port);
24
+ const { address, port } = await utils.resolveServerAddress(this.serverAddress.port, 'TCP_PORT', this.logger);
25
+ this.serverAddress.address = address;
26
+ this.serverAddress.port = port;
49
27
  }
50
28
  static async startTCPMicroService(appModule) {
51
29
  const app = await core_1.NestFactory.createMicroservice(appModule, {
@@ -1 +1 @@
1
- {"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":";;;AAAA,2CAA2D;AAC3D,uCAA2C;AAC3C,yDAAuE;AAEvE,kCAAiC;AAEjC,uDAAwD;AACxD,qCAAkC;AAClC,oDAAgD;AAEhD,MAAa,YAAY;IAIvB,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,SAAS;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAA;QACxD,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACtD,eAAe,CAAC,yBAAyB,EAAE,CAAA;QAC7C,CAAC;QAGD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;QAGvD,MAAM,wBAAU,CAAC,8BAA8B,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAGlE,eAAM,CAAC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,gBAAgB;QACnC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7G,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;IACjC,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,SAAS;QACjD,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,kBAAkB,CAAsB,SAAS,EAC7E;YACE,SAAS,EAAE,yBAAS,CAAC,GAAG;YACxB,OAAO,EAAE;gBACP,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI;gBAC7B,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO;aACjC;SACF,CAEF,CAAC;QACF,GAAG,CAAC,gBAAgB,CAAC,IAAI,qCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,KAAK,IAAI;QACb,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAA;IACnE,CAAC;;AA/CH,oCAgDC;AA/CgB,0BAAa,GAAoB,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC"}
package/dist/utils.d.ts CHANGED
@@ -1,7 +1,13 @@
1
+ import { Logger } from '@nestjs/common';
1
2
  export declare const HAKU_SCI_RESOURCE = "haku:resource";
2
3
  export declare const HAKU_SCI_ACTION = "haku:action";
3
4
  export declare function executeFunction<F extends (...args: any[]) => any>(parent: any, funcName: string, params: Record<string, any>): ReturnType<F>;
4
5
  export declare function getSortedParameters(func: Function, params: Record<string, any>): string[];
5
6
  export declare function microServiceName(): Promise<string>;
6
7
  export declare function getHttpRequestMaxSize(requestMaxSize?: string): number;
8
+ export interface ServerAddress {
9
+ address: string;
10
+ port: number;
11
+ }
12
+ export declare function resolveServerAddress(defaultPort: number, portEnvVar: string, logger?: Logger): Promise<ServerAddress>;
7
13
  export declare function withWatchdog<T>(promise: Promise<T>, timeoutMs: number): Promise<T>;
package/dist/utils.js CHANGED
@@ -5,10 +5,13 @@ exports.executeFunction = executeFunction;
5
5
  exports.getSortedParameters = getSortedParameters;
6
6
  exports.microServiceName = microServiceName;
7
7
  exports.getHttpRequestMaxSize = getHttpRequestMaxSize;
8
+ exports.resolveServerAddress = resolveServerAddress;
8
9
  exports.withWatchdog = withWatchdog;
9
10
  const promises_1 = require("fs/promises");
10
11
  const path = require("path");
11
12
  const common_1 = require("@nestjs/common");
13
+ const net = require("net");
14
+ const os = require("os");
12
15
  exports.HAKU_SCI_RESOURCE = 'haku:resource';
13
16
  exports.HAKU_SCI_ACTION = 'haku:action';
14
17
  function executeFunction(parent, funcName, params) {
@@ -31,17 +34,42 @@ function getFunctionParameterNames(func) {
31
34
  .map(param => param.trim())
32
35
  .filter(param => param);
33
36
  }
37
+ let _msName;
34
38
  async function microServiceName() {
35
- if (!this.msName) {
36
- var data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
39
+ if (!_msName) {
40
+ const data = await (0, promises_1.readFile)(path.join(process.cwd(), 'package.json'));
37
41
  const { name } = JSON.parse(data.toString());
38
- this.msName = name;
42
+ _msName = name;
39
43
  }
40
- return this.msName;
44
+ return _msName;
41
45
  }
42
46
  function getHttpRequestMaxSize(requestMaxSize) {
43
47
  return (parseInt(requestMaxSize ?? process.env.REQUEST_MAX_SIZE ?? '100', 10) - 10) * 1024;
44
48
  }
49
+ function isPortFree(port, address) {
50
+ return new Promise((resolve) => {
51
+ const server = net.createServer();
52
+ server.once('error', () => resolve(false));
53
+ server.once('listening', () => server.close(() => resolve(true)));
54
+ server.listen(port, address);
55
+ });
56
+ }
57
+ async function resolveServerAddress(defaultPort, portEnvVar, logger) {
58
+ const address = process.env.ADDRESS || (process.env.DEBUG && "127.0.0.1") || Object.values(os.networkInterfaces())
59
+ .flatMap((iface) => iface ?? [])
60
+ .find((addr) => addr.family === 'IPv4' && !addr.internal)
61
+ .address;
62
+ let port = defaultPort;
63
+ const envPort = parseInt(process.env[portEnvVar]);
64
+ if (!isNaN(envPort))
65
+ port = envPort;
66
+ else
67
+ while (!await isPortFree(port, address))
68
+ port++;
69
+ logger?.log("address to be listened to: " + address);
70
+ logger?.log("port to be listened to: " + port);
71
+ return { address, port };
72
+ }
45
73
  function withWatchdog(promise, timeoutMs) {
46
74
  return new Promise((resolve, reject) => {
47
75
  const timer = setTimeout(() => {
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AAMA,0CAUC;AAED,kDAGC;AAeD,4CAYC;AAED,sDAEC;AAED,oCAgBC;AAtED,0CAAuC;AACvC,6BAA6B;AAC7B,2CAA2D;AAC9C,QAAA,iBAAiB,GAAG,eAAe,CAAC;AACpC,QAAA,eAAe,GAAG,aAAa,CAAC;AAE7C,SAAgB,eAAe,CAC7B,MAAW,EACX,QAAgB,EAChB,MAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAGpC,OAAO,SAAS,CAAC,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACzD,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAc,EAAE,MAA2B;IAC7E,MAAM,UAAU,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAc;IAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,UAAU,CAAC,CAAC,CAAC;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAEM,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,MAAM,IAAA,mBAAQ,EACvB,IAAI,CAAC,IAAI,CACP,OAAO,CAAC,GAAG,EAAE,EACb,cAAc,CACf,CACF,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAgB,qBAAqB,CAAC,cAAuB;IAC3D,OAAO,CAAC,QAAQ,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,KAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;AAC7F,CAAC;AAED,SAAgB,YAAY,CAAI,OAAmB,EAAE,SAAiB;IACpE,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CAAC,IAAI,sBAAa,CAAC,iBAAiB,EAAE,mBAAU,CAAC,eAAe,CAAC,CAAC,CAAC;QAC3E,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { WebSocket } from 'ws';
2
+ export interface BridgeContext {
3
+ id: any;
4
+ properties: Record<string, any>;
5
+ ws: WebSocket;
6
+ }
7
+ export declare class BridgeRegistry {
8
+ private static byId;
9
+ private static byWs;
10
+ static register(id: any, properties: Record<string, any>, ws: WebSocket): BridgeContext;
11
+ static unregister(ws: WebSocket): void;
12
+ static getByWs(ws: WebSocket): BridgeContext | undefined;
13
+ static getById(id: any): BridgeContext | undefined;
14
+ static get size(): number;
15
+ }
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BridgeRegistry = void 0;
4
+ const canonical_key_1 = require("./canonical-key");
5
+ class BridgeRegistry {
6
+ static register(id, properties, ws) {
7
+ const key = (0, canonical_key_1.canonicalKey)(id);
8
+ const stale = this.byId.get(key);
9
+ if (stale)
10
+ this.unregister(stale.ws);
11
+ const context = { id, properties, ws };
12
+ this.byId.set(key, context);
13
+ this.byWs.set(ws, context);
14
+ return context;
15
+ }
16
+ static unregister(ws) {
17
+ const context = this.byWs.get(ws);
18
+ if (!context)
19
+ return;
20
+ this.byWs.delete(ws);
21
+ const key = (0, canonical_key_1.canonicalKey)(context.id);
22
+ if (this.byId.get(key) === context)
23
+ this.byId.delete(key);
24
+ }
25
+ static getByWs(ws) {
26
+ return this.byWs.get(ws);
27
+ }
28
+ static getById(id) {
29
+ return this.byId.get((0, canonical_key_1.canonicalKey)(id));
30
+ }
31
+ static get size() {
32
+ return this.byId.size;
33
+ }
34
+ }
35
+ exports.BridgeRegistry = BridgeRegistry;
36
+ BridgeRegistry.byId = new Map();
37
+ BridgeRegistry.byWs = new Map();
38
+ //# sourceMappingURL=bridge-registry.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-registry.service.js","sourceRoot":"","sources":["../../src/wss/bridge-registry.service.ts"],"names":[],"mappings":";;;AACA,mDAA+C;AAQ/C,MAAa,cAAc;IAIzB,MAAM,CAAC,QAAQ,CAAC,EAAO,EAAE,UAA+B,EAAE,EAAa;QACrE,MAAM,GAAG,GAAG,IAAA,4BAAY,EAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK;YAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAErC,MAAM,OAAO,GAAkB,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,EAAa;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,EAAa;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,EAAO;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAA,4BAAY,EAAC,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,IAAI;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;;AAjCH,wCAkCC;AAjCgB,mBAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;AACxC,mBAAI,GAAG,IAAI,GAAG,EAA4B,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function canonicalKey(id: any): string;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.canonicalKey = canonicalKey;
4
+ function canonicalKey(id) {
5
+ return typeof id === 'string' ? id : JSON.stringify(sortKeysDeep(id));
6
+ }
7
+ function sortKeysDeep(value) {
8
+ if (Array.isArray(value))
9
+ return value.map(sortKeysDeep);
10
+ if (value && typeof value === 'object') {
11
+ return Object.keys(value)
12
+ .sort()
13
+ .reduce((acc, key) => {
14
+ acc[key] = sortKeysDeep(value[key]);
15
+ return acc;
16
+ }, {});
17
+ }
18
+ return value;
19
+ }
20
+ //# sourceMappingURL=canonical-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-key.js","sourceRoot":"","sources":["../../src/wss/canonical-key.ts"],"names":[],"mappings":";;AAAA,oCAEC;AAFD,SAAgB,YAAY,CAAC,EAAO;IAClC,OAAO,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,KAAU;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;aACtB,IAAI,EAAE;aACN,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnB,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAyB,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type SendToUserResult = {
2
+ ok: true;
3
+ } | {
4
+ ok: false;
5
+ reason: 'not_connected' | 'timeout' | 'send_failed';
6
+ error?: Error;
7
+ };
8
+ export declare function sendToUser(id: any, message: any, timeoutMs?: number): Promise<SendToUserResult>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendToUser = sendToUser;
4
+ const ws_1 = require("ws");
5
+ const bridge_registry_service_1 = require("./bridge-registry.service");
6
+ const DEFAULT_SEND_TIMEOUT_MS = 5000;
7
+ function sendToUser(id, message, timeoutMs = DEFAULT_SEND_TIMEOUT_MS) {
8
+ const context = bridge_registry_service_1.BridgeRegistry.getById(id);
9
+ if (!context || context.ws.readyState !== ws_1.WebSocket.OPEN) {
10
+ return Promise.resolve({ ok: false, reason: 'not_connected' });
11
+ }
12
+ return new Promise((resolve) => {
13
+ let settled = false;
14
+ const timer = setTimeout(() => {
15
+ if (settled)
16
+ return;
17
+ settled = true;
18
+ resolve({ ok: false, reason: 'timeout' });
19
+ }, timeoutMs);
20
+ context.ws.send(JSON.stringify(message), (error) => {
21
+ if (settled)
22
+ return;
23
+ settled = true;
24
+ clearTimeout(timer);
25
+ resolve(error ? { ok: false, reason: 'send_failed', error } : { ok: true });
26
+ });
27
+ });
28
+ }
29
+ //# sourceMappingURL=send-to-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"send-to-user.js","sourceRoot":"","sources":["../../src/wss/send-to-user.ts"],"names":[],"mappings":";;AASA,gCAsBC;AA/BD,2BAA+B;AAC/B,uEAA2D;AAM3D,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,SAAgB,UAAU,CAAC,EAAO,EAAE,OAAY,EAAE,SAAS,GAAG,uBAAuB;IACnF,MAAM,OAAO,GAAG,wCAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5C,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YACjD,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare class TicketController {
2
+ get(data: Record<string, any>): Promise<string>;
3
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TicketController = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const microservices_1 = require("@nestjs/microservices");
15
+ const ticket_service_1 = require("./ticket.service");
16
+ const wss_microservice_service_1 = require("./wss-microservice.service");
17
+ let TicketController = class TicketController {
18
+ async get(data) {
19
+ const { id, properties } = data;
20
+ const ticket = ticket_service_1.TicketService.create(id, properties);
21
+ return `${wss_microservice_service_1.WssMicroservice.url}?ticket=${ticket}`;
22
+ }
23
+ };
24
+ exports.TicketController = TicketController;
25
+ __decorate([
26
+ (0, microservices_1.MessagePattern)('get'),
27
+ __metadata("design:type", Function),
28
+ __metadata("design:paramtypes", [Object]),
29
+ __metadata("design:returntype", Promise)
30
+ ], TicketController.prototype, "get", null);
31
+ exports.TicketController = TicketController = __decorate([
32
+ (0, common_1.Controller)('ticket')
33
+ ], TicketController);
34
+ //# sourceMappingURL=ticket.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.controller.js","sourceRoot":"","sources":["../../src/wss/ticket.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAuD;AACvD,qDAAiD;AACjD,yEAA6D;AAGtD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAErB,AAAN,KAAK,CAAC,GAAG,CAAC,IAAyB;QACjC,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAChC,MAAM,MAAM,GAAG,8BAAa,CAAC,MAAM,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;QACpD,OAAO,GAAG,0CAAe,CAAC,GAAG,WAAW,MAAM,EAAE,CAAC;IACnD,CAAC;CACF,CAAA;AAPY,4CAAgB;AAErB;IADL,IAAA,8BAAc,EAAC,KAAK,CAAC;;;;2CAKrB;2BANU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,QAAQ,CAAC;GACR,gBAAgB,CAO5B"}
@@ -0,0 +1,2 @@
1
+ export declare class TicketModule {
2
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.TicketModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const ticket_controller_1 = require("./ticket.controller");
12
+ let TicketModule = class TicketModule {
13
+ };
14
+ exports.TicketModule = TicketModule;
15
+ exports.TicketModule = TicketModule = __decorate([
16
+ (0, common_1.Module)({
17
+ controllers: [ticket_controller_1.TicketController],
18
+ })
19
+ ], TicketModule);
20
+ //# sourceMappingURL=ticket.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.module.js","sourceRoot":"","sources":["../../src/wss/ticket.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,2DAAuD;AAKhD,IAAM,YAAY,GAAlB,MAAM,YAAY;CAAG,CAAA;AAAf,oCAAY;uBAAZ,YAAY;IAHxB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,oCAAgB,CAAC;KAChC,CAAC;GACW,YAAY,CAAG"}
@@ -0,0 +1,11 @@
1
+ export interface TicketData {
2
+ id: any;
3
+ properties: Record<string, any>;
4
+ }
5
+ export declare class TicketService {
6
+ private static tickets;
7
+ private static sweepInterval;
8
+ static create(id: any, properties?: Record<string, any>): string;
9
+ static consume(ticket: string): TicketData | null;
10
+ private static ensureSweep;
11
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TicketService = void 0;
4
+ const crypto = require("crypto");
5
+ const DEFAULT_TTL_MS = 5000;
6
+ const SWEEP_INTERVAL_MS = 1000;
7
+ class TicketService {
8
+ static create(id, properties = {}) {
9
+ this.ensureSweep();
10
+ const ticket = crypto.randomBytes(32).toString('hex');
11
+ this.tickets.set(ticket, { id, properties, expiresAt: Date.now() + DEFAULT_TTL_MS });
12
+ return ticket;
13
+ }
14
+ static consume(ticket) {
15
+ const entry = this.tickets.get(ticket);
16
+ if (!entry)
17
+ return null;
18
+ this.tickets.delete(ticket);
19
+ if (entry.expiresAt < Date.now())
20
+ return null;
21
+ return { id: entry.id, properties: entry.properties };
22
+ }
23
+ static ensureSweep() {
24
+ if (this.sweepInterval)
25
+ return;
26
+ this.sweepInterval = setInterval(() => {
27
+ const now = Date.now();
28
+ for (const [ticket, entry] of this.tickets) {
29
+ if (entry.expiresAt < now)
30
+ this.tickets.delete(ticket);
31
+ }
32
+ }, SWEEP_INTERVAL_MS);
33
+ this.sweepInterval.unref?.();
34
+ }
35
+ }
36
+ exports.TicketService = TicketService;
37
+ TicketService.tickets = new Map();
38
+ TicketService.sweepInterval = null;
39
+ //# sourceMappingURL=ticket.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ticket.service.js","sourceRoot":"","sources":["../../src/wss/ticket.service.ts"],"names":[],"mappings":";;;AAAA,iCAAiC;AAWjC,MAAM,cAAc,GAAG,IAAI,CAAC;AAC5B,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,MAAa,aAAa;IAIxB,MAAM,CAAC,MAAM,CAAC,EAAO,EAAE,aAAkC,EAAE;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,EAAE,CAAC,CAAC;QACrF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,MAAc;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,WAAW;QACxB,IAAI,IAAI,CAAC,aAAa;YAAE,OAAO;QAC/B,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACvB,KAAK,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC3C,IAAI,KAAK,CAAC,SAAS,GAAG,GAAG;oBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzD,CAAC;QACH,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC;IAC/B,CAAC;;AA5BH,sCA6BC;AA5BgB,qBAAO,GAAG,IAAI,GAAG,EAAuB,CAAC;AACzC,2BAAa,GAA0B,IAAI,CAAC"}
@@ -0,0 +1,11 @@
1
+ export type SendToUserResult = {
2
+ ok: true;
3
+ } | {
4
+ ok: false;
5
+ reason: 'not_connected' | 'timeout' | 'send_failed';
6
+ error?: Error;
7
+ };
8
+ export type MessageHandler = (id: any, properties: Record<string, any>, message: any) => void;
9
+ export declare function onMessage(handler: MessageHandler): void;
10
+ export declare function dispatchMessage(id: any, properties: Record<string, any>, message: any): void;
11
+ export declare function sendToUser(id: any, message: any, timeoutMs?: number): Promise<SendToUserResult>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.onMessage = onMessage;
4
+ exports.dispatchMessage = dispatchMessage;
5
+ exports.sendToUser = sendToUser;
6
+ const ws_1 = require("ws");
7
+ const bridge_registry_service_1 = require("./bridge-registry.service");
8
+ const DEFAULT_SEND_TIMEOUT_MS = 5000;
9
+ let messageHandler = null;
10
+ function onMessage(handler) {
11
+ messageHandler = handler;
12
+ }
13
+ function dispatchMessage(id, properties, message) {
14
+ messageHandler?.(id, properties, message);
15
+ }
16
+ function sendToUser(id, message, timeoutMs = DEFAULT_SEND_TIMEOUT_MS) {
17
+ const context = bridge_registry_service_1.BridgeRegistry.getById(id);
18
+ if (!context || context.ws.readyState !== ws_1.WebSocket.OPEN) {
19
+ return Promise.resolve({ ok: false, reason: 'not_connected' });
20
+ }
21
+ return new Promise((resolve) => {
22
+ let settled = false;
23
+ const timer = setTimeout(() => {
24
+ if (settled)
25
+ return;
26
+ settled = true;
27
+ resolve({ ok: false, reason: 'timeout' });
28
+ }, timeoutMs);
29
+ context.ws.send(JSON.stringify(message), (error) => {
30
+ if (settled)
31
+ return;
32
+ settled = true;
33
+ clearTimeout(timer);
34
+ resolve(error ? { ok: false, reason: 'send_failed', error } : { ok: true });
35
+ });
36
+ });
37
+ }
38
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/wss/utils.ts"],"names":[],"mappings":";;AAaA,8BAEC;AAED,0CAEC;AAED,gCAsBC;AA3CD,2BAA+B;AAC/B,uEAA2D;AAQ3D,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,IAAI,cAAc,GAA0B,IAAI,CAAC;AAEjD,SAAgB,SAAS,CAAC,OAAuB;IAC/C,cAAc,GAAG,OAAO,CAAC;AAC3B,CAAC;AAED,SAAgB,eAAe,CAAC,EAAO,EAAE,UAA+B,EAAE,OAAY;IACpF,cAAc,EAAE,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,UAAU,CAAC,EAAO,EAAE,OAAY,EAAE,SAAS,GAAG,uBAAuB;IACnF,MAAM,OAAO,GAAG,wCAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,KAAK,cAAS,CAAC,IAAI,EAAE,CAAC;QACzD,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5C,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YACjD,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { WebSocketServer } from 'ws';
2
+ import * as http from 'http';
3
+ import * as https from 'https';
4
+ import { BridgeContext } from './bridge-registry.service';
5
+ export interface WssSslOptions {
6
+ key: Buffer | string;
7
+ cert: Buffer | string;
8
+ }
9
+ export interface WssBootstrapOptions {
10
+ server?: http.Server | https.Server;
11
+ port?: number;
12
+ ssl?: WssSslOptions;
13
+ onDisconnect?: (context: BridgeContext) => void;
14
+ }
15
+ export declare class WssMicroservice {
16
+ private static logger;
17
+ private static wss;
18
+ private static publicHost;
19
+ private static publicPort;
20
+ private static ssl;
21
+ static bootstrap(options?: WssBootstrapOptions): Promise<WebSocketServer>;
22
+ static get url(): string;
23
+ private static resolveSsl;
24
+ private static handleHttpRequest;
25
+ private static handleConnection;
26
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WssMicroservice = void 0;
4
+ const ws_1 = require("ws");
5
+ const http = require("http");
6
+ const https = require("https");
7
+ const fs_1 = require("fs");
8
+ const common_1 = require("@nestjs/common");
9
+ const utils = require("../utils");
10
+ const ticket_service_1 = require("./ticket.service");
11
+ const bridge_registry_service_1 = require("./bridge-registry.service");
12
+ const utils_1 = require("./utils");
13
+ class WssMicroservice {
14
+ static async bootstrap(options = {}) {
15
+ let server = options.server;
16
+ if (!server) {
17
+ const address = process.env.ADDRESS || '0.0.0.0';
18
+ const port = Number(process.env.WSS_PORT) || options.port || 3001;
19
+ const ssl = options.ssl ?? await this.resolveSsl();
20
+ server = ssl ? https.createServer(ssl) : http.createServer();
21
+ server.on('request', (req, res) => this.handleHttpRequest(req, res));
22
+ server.listen(port, address);
23
+ this.logger.log(`address to be listened to: ${address}`);
24
+ this.logger.log(`port to be listened to: ${port}`);
25
+ this.logger.log(`ssl: ${ssl ? 'enabled' : 'disabled'}`);
26
+ this.publicHost = process.env.WSS_URL || address;
27
+ this.publicPort = Number(process.env.WSS_PUBLIC_PORT) || port;
28
+ this.ssl = !!ssl;
29
+ }
30
+ else {
31
+ this.publicHost = process.env.WSS_URL;
32
+ this.publicPort = Number(process.env.WSS_PUBLIC_PORT) || options.port;
33
+ this.ssl = !!options.ssl || server instanceof https.Server;
34
+ }
35
+ this.wss = new ws_1.WebSocketServer({ server });
36
+ this.wss.on('connection', (ws, req) => this.handleConnection(ws, req, options));
37
+ this.logger.log('WSS microservice started');
38
+ return this.wss;
39
+ }
40
+ static get url() {
41
+ if (!this.publicHost) {
42
+ throw new Error('WssMicroservice.url requested before bootstrap() (or WSS_URL is not set)');
43
+ }
44
+ return `${this.ssl ? 'wss' : 'ws'}://${this.publicHost}:${this.publicPort}`;
45
+ }
46
+ static async resolveSsl() {
47
+ const keyPath = process.env.WSS_SSL_KEY_PATH;
48
+ const certPath = process.env.WSS_SSL_CERT_PATH;
49
+ if (keyPath && certPath) {
50
+ return { key: (0, fs_1.readFileSync)(keyPath), cert: (0, fs_1.readFileSync)(certPath) };
51
+ }
52
+ if (process.env.DEBUG !== 'true')
53
+ return null;
54
+ const domain = `${await utils.microServiceName()}.haku-test.com`;
55
+ return {
56
+ key: (0, fs_1.readFileSync)(`./certificates/${domain}-key.pem`),
57
+ cert: (0, fs_1.readFileSync)(`./certificates/${domain}.pem`),
58
+ };
59
+ }
60
+ static handleHttpRequest(req, res) {
61
+ const url = new URL(req.url ?? '', 'http://localhost');
62
+ if (url.pathname !== '/health') {
63
+ res.writeHead(404).end();
64
+ return;
65
+ }
66
+ res.writeHead(200, { 'Content-Type': 'application/json' });
67
+ res.end(JSON.stringify({ status: 'ok', connections: bridge_registry_service_1.BridgeRegistry.size }));
68
+ }
69
+ static handleConnection(ws, req, options) {
70
+ const url = new URL(req.url ?? '', 'http://localhost');
71
+ const ticket = url.searchParams.get('ticket');
72
+ const ticketData = ticket ? ticket_service_1.TicketService.consume(ticket) : null;
73
+ if (!ticketData) {
74
+ ws.close(4001, 'invalid or expired ticket');
75
+ return;
76
+ }
77
+ const context = bridge_registry_service_1.BridgeRegistry.register(ticketData.id, ticketData.properties, ws);
78
+ ws.on('message', (raw) => {
79
+ (0, utils_1.dispatchMessage)(context.id, context.properties, parseMessage(raw.toString()));
80
+ });
81
+ ws.on('close', () => {
82
+ bridge_registry_service_1.BridgeRegistry.unregister(ws);
83
+ options.onDisconnect?.(context);
84
+ });
85
+ }
86
+ }
87
+ exports.WssMicroservice = WssMicroservice;
88
+ WssMicroservice.logger = new common_1.Logger('WssMicroservice');
89
+ function parseMessage(raw) {
90
+ try {
91
+ return JSON.parse(raw);
92
+ }
93
+ catch {
94
+ return raw;
95
+ }
96
+ }
97
+ //# sourceMappingURL=wss-microservice.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wss-microservice.service.js","sourceRoot":"","sources":["../../src/wss/wss-microservice.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare class WssController {
2
+ get(data: Record<string, any>): Promise<string>;
3
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WssController = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const microservices_1 = require("@nestjs/microservices");
15
+ const ticket_service_1 = require("./ticket.service");
16
+ const wss_microservice_service_1 = require("./wss-microservice.service");
17
+ let WssController = class WssController {
18
+ async get(data) {
19
+ const { userId, properties } = data;
20
+ const ticket = ticket_service_1.TicketService.create(userId, properties);
21
+ return `${wss_microservice_service_1.WssMicroservice.url}?ticket=${ticket}`;
22
+ }
23
+ };
24
+ exports.WssController = WssController;
25
+ __decorate([
26
+ (0, microservices_1.MessagePattern)('get'),
27
+ __metadata("design:type", Function),
28
+ __metadata("design:paramtypes", [Object]),
29
+ __metadata("design:returntype", Promise)
30
+ ], WssController.prototype, "get", null);
31
+ exports.WssController = WssController = __decorate([
32
+ (0, common_1.Controller)('wss')
33
+ ], WssController);
34
+ //# sourceMappingURL=wss.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wss.controller.js","sourceRoot":"","sources":["../../src/wss/wss.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,yDAAuD;AACvD,qDAAiD;AACjD,yEAA6D;AAGtD,IAAM,aAAa,GAAnB,MAAM,aAAa;IAElB,AAAN,KAAK,CAAC,GAAG,CAAC,IAAyB;QACjC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACpC,MAAM,MAAM,GAAG,8BAAa,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACxD,OAAO,GAAG,0CAAe,CAAC,GAAG,WAAW,MAAM,EAAE,CAAC;IACnD,CAAC;CACF,CAAA;AAPY,sCAAa;AAElB;IADL,IAAA,8BAAc,EAAC,KAAK,CAAC;;;;wCAKrB;wBANU,aAAa;IADzB,IAAA,mBAAU,EAAC,KAAK,CAAC;GACL,aAAa,CAOzB"}
@@ -0,0 +1,2 @@
1
+ export declare class WssModule {
2
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.WssModule = void 0;
10
+ const common_1 = require("@nestjs/common");
11
+ const wss_controller_1 = require("./wss.controller");
12
+ let WssModule = class WssModule {
13
+ };
14
+ exports.WssModule = WssModule;
15
+ exports.WssModule = WssModule = __decorate([
16
+ (0, common_1.Module)({
17
+ controllers: [wss_controller_1.WssController],
18
+ })
19
+ ], WssModule);
20
+ //# sourceMappingURL=wss.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wss.module.js","sourceRoot":"","sources":["../../src/wss/wss.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,qDAAiD;AAK1C,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAHrB,IAAA,eAAM,EAAC;QACN,WAAW,EAAE,CAAC,8BAAa,CAAC;KAC7B,CAAC;GACW,SAAS,CAAG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haku-sci/utils",
3
- "version": "2.7.1",
3
+ "version": "2.7.2",
4
4
  "description": "utils from haku-sci. Library only",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,12 +20,14 @@
20
20
  "amqp-connection-manager": "^4.1.14",
21
21
  "amqplib": "^0.10.8",
22
22
  "axios": "^1.9.0",
23
- "rxjs": "7.8.2"
23
+ "rxjs": "7.8.2",
24
+ "ws": "^8.21.2"
24
25
  },
25
26
  "devDependencies": {
26
27
  "@nestjs/testing": "^11.0.6",
27
28
  "@types/jest": "^29.5.12",
28
29
  "@types/pg": "^8.20.0",
30
+ "@types/ws": "^8.18.1",
29
31
  "rimraf": "^6.0.1",
30
32
  "typescript": "^5.7.3"
31
33
  },