@asenajs/asena 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/lib/ioc/Container.d.ts +7 -0
  2. package/dist/lib/ioc/Container.js +22 -3
  3. package/dist/lib/ioc/Container.js.map +1 -1
  4. package/dist/lib/ioc/CoreContainer.d.ts +1 -1
  5. package/dist/lib/ioc/CoreContainer.js +5 -1
  6. package/dist/lib/ioc/CoreContainer.js.map +1 -1
  7. package/dist/lib/ioc/component/decorators/Inject.d.ts +24 -4
  8. package/dist/lib/ioc/component/decorators/Inject.js +44 -7
  9. package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
  10. package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +1 -0
  11. package/dist/lib/ioc/types/ICoreServiceNamesType.js +2 -0
  12. package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
  13. package/dist/lib/server/AsenaServer.js +9 -9
  14. package/dist/lib/server/AsenaServer.js.map +1 -1
  15. package/dist/lib/server/AsenaServerFactory.js +8 -0
  16. package/dist/lib/server/AsenaServerFactory.js.map +1 -1
  17. package/dist/lib/server/decorators/components/Controller.js +1 -2
  18. package/dist/lib/server/decorators/components/Controller.js.map +1 -1
  19. package/dist/lib/server/decorators/components/Middleware.js +1 -2
  20. package/dist/lib/server/decorators/components/Middleware.js.map +1 -1
  21. package/dist/lib/server/decorators/components/Schedule.js +1 -2
  22. package/dist/lib/server/decorators/components/Schedule.js.map +1 -1
  23. package/dist/lib/server/decorators/components/WebSocket.js +1 -2
  24. package/dist/lib/server/decorators/components/WebSocket.js.map +1 -1
  25. package/dist/lib/server/index.d.ts +1 -0
  26. package/dist/lib/server/index.js +2 -0
  27. package/dist/lib/server/index.js.map +1 -1
  28. package/dist/lib/server/messaging/Ulak.d.ts +224 -0
  29. package/dist/lib/server/messaging/Ulak.js +351 -0
  30. package/dist/lib/server/messaging/Ulak.js.map +1 -0
  31. package/dist/lib/server/messaging/index.d.ts +8 -0
  32. package/dist/lib/server/messaging/index.js +9 -0
  33. package/dist/lib/server/messaging/index.js.map +1 -0
  34. package/dist/lib/server/messaging/types.d.ts +73 -0
  35. package/dist/lib/server/messaging/types.js +35 -0
  36. package/dist/lib/server/messaging/types.js.map +1 -0
  37. package/dist/lib/server/src/services/PrepareMiddlewareService.js +1 -2
  38. package/dist/lib/server/src/services/PrepareMiddlewareService.js.map +1 -1
  39. package/dist/lib/server/src/services/PrepareWebsocketService.d.ts +3 -2
  40. package/dist/lib/server/src/services/PrepareWebsocketService.js +10 -3
  41. package/dist/lib/server/src/services/PrepareWebsocketService.js.map +1 -1
  42. package/dist/lib/server/web/websocket/AsenaWebSocketServer.d.ts +3 -16
  43. package/dist/lib/server/web/websocket/AsenaWebSocketServer.js +3 -20
  44. package/dist/lib/server/web/websocket/AsenaWebSocketServer.js.map +1 -1
  45. package/package.json +8 -2
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Error codes for Ulak messaging system
3
+ */
4
+ export var UlakErrorCode;
5
+ (function (UlakErrorCode) {
6
+ UlakErrorCode["NAMESPACE_NOT_FOUND"] = "NAMESPACE_NOT_FOUND";
7
+ UlakErrorCode["NAMESPACE_ALREADY_EXISTS"] = "NAMESPACE_ALREADY_EXISTS";
8
+ UlakErrorCode["INVALID_NAMESPACE"] = "INVALID_NAMESPACE";
9
+ UlakErrorCode["INVALID_MESSAGE"] = "INVALID_MESSAGE";
10
+ UlakErrorCode["SEND_FAILED"] = "SEND_FAILED";
11
+ UlakErrorCode["BROADCAST_FAILED"] = "BROADCAST_FAILED";
12
+ UlakErrorCode["SOCKET_NOT_FOUND"] = "SOCKET_NOT_FOUND";
13
+ UlakErrorCode["SERVICE_NOT_INITIALIZED"] = "SERVICE_NOT_INITIALIZED";
14
+ })(UlakErrorCode || (UlakErrorCode = {}));
15
+ /**
16
+ * Custom error class for Ulak messaging system
17
+ * Provides structured error information with error codes
18
+ */
19
+ export class UlakError extends Error {
20
+ code;
21
+ namespace;
22
+ cause;
23
+ constructor(message, code, namespace, cause) {
24
+ super(message);
25
+ this.name = 'UlakError';
26
+ this.code = code;
27
+ this.namespace = namespace;
28
+ this.cause = cause;
29
+ // Maintain proper stack trace in V8 engines
30
+ if (Error.captureStackTrace) {
31
+ Error.captureStackTrace(this, UlakError);
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../lib/server/messaging/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,aASX;AATD,WAAY,aAAa;IACvB,4DAA2C,CAAA;IAC3C,sEAAqD,CAAA;IACrD,wDAAuC,CAAA;IACvC,oDAAmC,CAAA;IACnC,4CAA2B,CAAA;IAC3B,sDAAqC,CAAA;IACrC,sDAAqC,CAAA;IACrC,oEAAmD,CAAA;AACrD,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED;;;GAGG;AACH,MAAM,OAAO,SAAU,SAAQ,KAAK;IAElB,IAAI,CAAgB;IAEpB,SAAS,CAAU;IAEnB,KAAK,CAAS;IAE9B,YAAY,OAAe,EAAE,IAAmB,EAAE,SAAkB,EAAE,KAAa;QACjF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,4CAA4C;QAC5C,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CAEF"}
@@ -8,8 +8,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { getTypedMetadata } from '../../../utils/typedMetadata';
11
- import { ComponentConstants } from '../../../ioc';
12
- import { CoreService, ICoreServiceNames } from '../../../ioc';
11
+ import { ComponentConstants, CoreService, ICoreServiceNames } from '../../../ioc';
13
12
  import { Inject } from '../../../ioc/component';
14
13
  /**
15
14
  * @description Core service for preparing middleware instances
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareMiddlewareService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareMiddlewareService.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAkB,WAAW,EAAqB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;GAGG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAE5B,WAAW,GAAG,0BAA0B,CAAC;IAGxC,SAAS,CAAY;IAE7B;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,WAA8B;QACjD,MAAM,mBAAmB,GAAqB,EAAE,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE9E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAyB,IAAI,CAAC,CAAC;YAE7E,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,IAAI,QAAkB,CAAC;YACvB,IAAI,UAAmB,CAAC;YAExB,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBAC3C,QAAQ,GAAG,gBAAgB,CAAW,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAEhF,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE5D,mBAAmB,CAAC,IAAI,CAAC;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACtC,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CAEF,CAAA;AApCS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;2DACP;AALlB,wBAAwB;IADpC,WAAW,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;GAC7C,wBAAwB,CAyCpC"}
1
+ {"version":3,"file":"PrepareMiddlewareService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareMiddlewareService.ts"],"names":[],"mappings":";;;;;;;;;AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAkB,WAAW,EAAqB,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACrH,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;GAGG;AAEI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAE5B,WAAW,GAAG,0BAA0B,CAAC;IAGxC,SAAS,CAAY;IAE7B;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,WAA8B;QACjD,MAAM,mBAAmB,GAAqB,EAAE,CAAC;QAEjD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,gBAAgB,CAAS,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAE9E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAyB,IAAI,CAAC,CAAC;YAE7E,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,MAAM,mBAAmB,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC/E,IAAI,QAAkB,CAAC;YACvB,IAAI,UAAmB,CAAC;YAExB,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBAC3C,QAAQ,GAAG,gBAAgB,CAAW,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAEhF,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBAE5D,mBAAmB,CAAC,IAAI,CAAC;oBACvB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACtC,QAAQ,EAAE,UAAU;iBACrB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;CAEF,CAAA;AApCS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;2DACP;AALlB,wBAAwB;IADpC,WAAW,CAAC,iBAAiB,CAAC,0BAA0B,CAAC;GAC7C,wBAAwB,CAyCpC"}
@@ -1,11 +1,12 @@
1
- import type { AsenaWebSocketService, WebSocketData } from '../../web/websocket';
2
1
  import type { ICoreService } from '../../../ioc';
2
+ import type { AsenaWebSocketService, WebSocketData } from '../../web/websocket';
3
3
  /**
4
4
  * @description Core service for preparing WebSocket services
5
- * Handles WebSocket resolution and path registration
5
+ * Handles WebSocket resolution, path registration, and Ulak integration
6
6
  */
7
7
  export declare class PrepareWebsocketService implements ICoreService {
8
8
  serviceName: string;
9
9
  private container;
10
+ private ulak;
10
11
  prepare(): Promise<AsenaWebSocketService<WebSocketData<any>>[]>;
11
12
  }
@@ -8,16 +8,16 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  import { getOwnTypedMetadata } from '../../../utils/typedMetadata';
11
- import { ComponentConstants } from '../../../ioc';
12
- import { ComponentType, CoreService, ICoreServiceNames } from '../../../ioc';
11
+ import { ComponentConstants, ComponentType, CoreService, ICoreServiceNames } from '../../../ioc';
13
12
  import { Inject } from '../../../ioc/component';
14
13
  /**
15
14
  * @description Core service for preparing WebSocket services
16
- * Handles WebSocket resolution and path registration
15
+ * Handles WebSocket resolution, path registration, and Ulak integration
17
16
  */
18
17
  let PrepareWebsocketService = class PrepareWebsocketService {
19
18
  serviceName = 'PrepareWebsocketService';
20
19
  container;
20
+ ulak;
21
21
  async prepare() {
22
22
  const webSockets = await this.container.resolveAll(ComponentType.WEBSOCKET);
23
23
  if (!webSockets?.length) {
@@ -34,6 +34,9 @@ let PrepareWebsocketService = class PrepareWebsocketService {
34
34
  }
35
35
  registeredPaths.add(path);
36
36
  webSocket.namespace = path;
37
+ // Register with Ulak messaging system
38
+ // Note: WebSocket decorator removes leading '/', but Ulak uses it for consistency
39
+ this.ulak.registerNamespace(`/${path}`, webSocket);
37
40
  preparedWebsockets.push(webSocket);
38
41
  }
39
42
  return preparedWebsockets;
@@ -43,6 +46,10 @@ __decorate([
43
46
  Inject(ICoreServiceNames.CONTAINER),
44
47
  __metadata("design:type", Function)
45
48
  ], PrepareWebsocketService.prototype, "container", void 0);
49
+ __decorate([
50
+ Inject(ICoreServiceNames.__ULAK__),
51
+ __metadata("design:type", Function)
52
+ ], PrepareWebsocketService.prototype, "ulak", void 0);
46
53
  PrepareWebsocketService = __decorate([
47
54
  CoreService(ICoreServiceNames.PREPARE_WEBSOCKET_SERVICE)
48
55
  ], PrepareWebsocketService);
@@ -1 +1 @@
1
- {"version":3,"file":"PrepareWebsocketService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareWebsocketService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD;;;GAGG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAE3B,WAAW,GAAG,yBAAyB,CAAC;IAGvC,SAAS,CAAY;IAEtB,KAAK,CAAC,OAAO;QAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAuC,aAAa,CAAC,SAAS,CAAC,CAAC;QAElH,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,MAAM,kBAAkB,GAAgD,EAAE,CAAC;QAE3E,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAE5F,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;YAE3B,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CAEF,CAAA;AA/BS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;0DACP;AALlB,uBAAuB;IADnC,WAAW,CAAC,iBAAiB,CAAC,yBAAyB,CAAC;GAC5C,uBAAuB,CAoCnC"}
1
+ {"version":3,"file":"PrepareWebsocketService.js","sourceRoot":"","sources":["../../../../../lib/server/src/services/PrepareWebsocketService.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAEnE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjG,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAGhD;;;GAGG;AAEI,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAE3B,WAAW,GAAG,yBAAyB,CAAC;IAGvC,SAAS,CAAY;IAGrB,IAAI,CAAO;IAEZ,KAAK,CAAC,OAAO;QAClB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAuC,aAAa,CAAC,SAAS,CAAC,CAAC;QAElH,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,MAAM,kBAAkB,GAAgD,EAAE,CAAC;QAE3E,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,mBAAmB,CAAS,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAE5F,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;YAC7D,CAAC;YAED,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC;YAE3B,sCAAsC;YACtC,kFAAkF;YAClF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YAEnD,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;CAEF,CAAA;AAtCS;IADP,MAAM,CAAC,iBAAiB,CAAC,SAAS,CAAC;;0DACP;AAGrB;IADP,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC;;qDAChB;AARR,uBAAuB;IADnC,WAAW,CAAC,iBAAiB,CAAC,yBAAyB,CAAC;GAC5C,uBAAuB,CA2CnC"}
@@ -2,8 +2,8 @@ import type { Server } from 'bun';
2
2
  /**
3
3
  * AsenaWebSocketServer class handles WebSocket server operations and message broadcasting
4
4
  *
5
- * This class provides a wrapper around Bun's WebSocket Server implementation with additional
6
- * functionality for managing topics and message publishing.
5
+ * This class provides a thin wrapper around Bun's WebSocket Server implementation.
6
+ * All WebSocket services share a single instance of this wrapper for efficiency.
7
7
  */
8
8
  export declare class AsenaWebSocketServer {
9
9
  /**
@@ -11,19 +11,12 @@ export declare class AsenaWebSocketServer {
11
11
  * @private
12
12
  */
13
13
  private server;
14
- /**
15
- * The topic identifier for this WebSocket server
16
- * @private
17
- * @readonly
18
- */
19
- private readonly topic;
20
14
  /**
21
15
  * Creates a new instance of AsenaWebSocketServer
22
16
  *
23
17
  * @param server - The Bun Server instance to use
24
- * @param topic - The topic identifier for this WebSocket server
25
18
  */
26
- constructor(server: Server<any>, topic: string);
19
+ constructor(server: Server<any>);
27
20
  /**
28
21
  * Publishes data to a specific namespace
29
22
  *
@@ -39,10 +32,4 @@ export declare class AsenaWebSocketServer {
39
32
  * @param data - The data to publish
40
33
  */
41
34
  in(nameSpace: string, data?: any): void;
42
- /**
43
- * Gets the current number of WebSocket subscribers for this server's topic
44
- *
45
- * @returns The number of active WebSocket connections
46
- */
47
- get websocketCount(): number;
48
35
  }
@@ -1,9 +1,8 @@
1
- // TODO: this section needs to rework
2
1
  /**
3
2
  * AsenaWebSocketServer class handles WebSocket server operations and message broadcasting
4
3
  *
5
- * This class provides a wrapper around Bun's WebSocket Server implementation with additional
6
- * functionality for managing topics and message publishing.
4
+ * This class provides a thin wrapper around Bun's WebSocket Server implementation.
5
+ * All WebSocket services share a single instance of this wrapper for efficiency.
7
6
  */
8
7
  export class AsenaWebSocketServer {
9
8
  /**
@@ -11,21 +10,13 @@ export class AsenaWebSocketServer {
11
10
  * @private
12
11
  */
13
12
  server;
14
- /**
15
- * The topic identifier for this WebSocket server
16
- * @private
17
- * @readonly
18
- */
19
- topic;
20
13
  /**
21
14
  * Creates a new instance of AsenaWebSocketServer
22
15
  *
23
16
  * @param server - The Bun Server instance to use
24
- * @param topic - The topic identifier for this WebSocket server
25
17
  */
26
- constructor(server, topic) {
18
+ constructor(server) {
27
19
  this.server = server;
28
- this.topic = topic;
29
20
  }
30
21
  /**
31
22
  * Publishes data to a specific namespace
@@ -55,13 +46,5 @@ export class AsenaWebSocketServer {
55
46
  in(nameSpace, data) {
56
47
  this.to(nameSpace, data);
57
48
  }
58
- /**
59
- * Gets the current number of WebSocket subscribers for this server's topic
60
- *
61
- * @returns The number of active WebSocket connections
62
- */
63
- get websocketCount() {
64
- return this.server.subscriberCount(this.topic);
65
- }
66
49
  }
67
50
  //# sourceMappingURL=AsenaWebSocketServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaWebSocketServer.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaWebSocketServer.ts"],"names":[],"mappings":"AAEA,qCAAqC;AACrC;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAE/B;;;OAGG;IACK,MAAM,CAAc;IAE5B;;;;OAIG;IACc,KAAK,CAAS;IAE/B;;;;;OAKG;IACH,YAAmB,MAAmB,EAAE,KAAa;QACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACI,EAAE,CAAC,SAAiB,EAAE,IAAU;QACrC,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,iBAAiB,EAAE,CAAC;YACjG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,EAAE,CAAC,SAAiB,EAAE,IAAU;QACrC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACH,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;CAEF"}
1
+ {"version":3,"file":"AsenaWebSocketServer.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaWebSocketServer.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAO,oBAAoB;IAE/B;;;OAGG;IACK,MAAM,CAAc;IAE5B;;;;OAIG;IACH,YAAmB,MAAmB;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;;;OAMG;IACI,EAAE,CAAC,SAAiB,EAAE,IAAU;QACrC,IAAI,IAAI,YAAY,WAAW,IAAI,IAAI,YAAY,QAAQ,IAAI,IAAI,YAAY,iBAAiB,EAAE,CAAC;YACjG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACI,EAAE,CAAC,SAAiB,EAAE,IAAU;QACrC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3B,CAAC;CAEF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asenajs/asena",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "author": "LibirSoft",
5
5
  "repository": {
6
6
  "type": "git",
@@ -75,6 +75,10 @@
75
75
  "import": "./dist/lib/ioc/Container.js",
76
76
  "types": "./dist/lib/ioc/Container.d.ts"
77
77
  },
78
+ "./messaging": {
79
+ "import": "./dist/lib/server/messaging/index.js",
80
+ "types": "./dist/lib/server/messaging/index.d.ts"
81
+ },
78
82
  "./utils/patternMatcher": {
79
83
  "import": "./dist/lib/utils/patternMatcher.js",
80
84
  "types": "./dist/lib/utils/patternMatcher.d.ts"
@@ -100,7 +104,9 @@
100
104
  ],
101
105
  "license": "MIT",
102
106
  "scripts": {
103
- "test": "echo \"Error: no test specified\" && exit 1",
107
+ "test": "bun test",
108
+ "test:watch": "bun test --watch",
109
+ "test:coverage": "bun test --coverage",
104
110
  "build": "bun run clean && tsc",
105
111
  "clean": "rm -rf dist",
106
112
  "pre-release": "bun update && bun run build"