@asenajs/asena 0.1.16 → 0.1.17

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 (35) hide show
  1. package/README.md +159 -5
  2. package/dist/lib/adapter/AsenaAdapter.d.ts +6 -0
  3. package/dist/lib/adapter/AsenaAdapter.js +10 -0
  4. package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
  5. package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +39 -5
  6. package/dist/lib/adapter/AsenaWebsocketAdapter.js +54 -2
  7. package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
  8. package/dist/lib/adapter/defaultAdapter/DefaultAdapter.d.ts +4 -2
  9. package/dist/lib/adapter/defaultAdapter/DefaultAdapter.js +25 -32
  10. package/dist/lib/adapter/defaultAdapter/DefaultAdapter.js.map +1 -1
  11. package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.d.ts +4 -5
  12. package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.js +23 -22
  13. package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.js.map +1 -1
  14. package/dist/lib/adapter/types/WebSocketRegistry.d.ts +7 -0
  15. package/dist/lib/adapter/types/WebSocketRegistry.js +2 -0
  16. package/dist/lib/adapter/types/WebSocketRegistry.js.map +1 -0
  17. package/dist/lib/adapter/types/WebsocketAdapterParams.d.ts +11 -0
  18. package/dist/lib/adapter/types/WebsocketAdapterParams.js +2 -0
  19. package/dist/lib/adapter/types/WebsocketAdapterParams.js.map +1 -0
  20. package/dist/lib/adapter/types/index.d.ts +2 -0
  21. package/dist/lib/adapter/types/index.js +2 -0
  22. package/dist/lib/adapter/types/index.js.map +1 -1
  23. package/dist/lib/server/AsenaServer.d.ts +1 -1
  24. package/dist/lib/server/AsenaServer.js +14 -9
  25. package/dist/lib/server/AsenaServer.js.map +1 -1
  26. package/dist/lib/server/web/websocket/AsenaSocket.d.ts +1 -0
  27. package/dist/lib/server/web/websocket/AsenaSocket.js +6 -3
  28. package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
  29. package/dist/lib/server/web/websocket/AsenaWebSocketService.js +1 -0
  30. package/dist/lib/server/web/websocket/AsenaWebSocketService.js.map +1 -1
  31. package/dist/lib/services/logger/DefaultLogger.d.ts +1 -0
  32. package/dist/lib/services/logger/DefaultLogger.js +3 -0
  33. package/dist/lib/services/logger/DefaultLogger.js.map +1 -1
  34. package/dist/lib/services/types/Logger.d.ts +5 -0
  35. package/package.json +3 -3
package/README.md CHANGED
@@ -1,13 +1,167 @@
1
1
  # Asena
2
2
 
3
- To use asena in your project add required packages for asena
3
+ Asena is a NestJS-like IoC web framework built on top of Hono and Bun. It combines the power of dependency injection
4
+ with the performance of Bun runtime and the flexibility of Hono web framework.
5
+
6
+ ## Key Features
7
+
8
+ - **Dependency Injection**: Built-in IoC container for managing dependencies
9
+ - **Decorator-based Development**: Similar to NestJS, using TypeScript decorators for routing and DI
10
+ - **High Performance**: Leverages Bun runtime for optimal performance
11
+ - **WebSocket Support**: Built-in WebSocket handling capabilities
12
+ - **Middleware System**: Flexible middleware architecture
13
+ - **HTTP Adapters**: Extensible adapter system with Hono as default
14
+
15
+ ## Quick Start
16
+
17
+ First, install the required packages:
18
+
19
+ ```bash
20
+
21
+ bun add @asenajs/asena @asenajs/asena-cli hono winston
22
+ ```
23
+
24
+ Then, create a new project using the CLI:
25
+
26
+ ```bash
27
+
28
+ ## Creates a .asenarc.json file with default values (requires manual updates). Source folder is 'src'.
29
+ asena-cli init
30
+ ```
31
+
32
+ Create index.ts file under your src folder:
33
+
34
+ ```typescript
35
+ import {AsenaServer} from '@asenajs/asena';
36
+ import {DefaultLogger} from '@asenajs/asena/lib/services';
37
+
38
+ const server = new AsenaServer().logger(new DefaultLogger()).port(3000);
39
+
40
+ await server.start();
41
+ ```
42
+
43
+ Finally, run the project:
44
+
45
+ ```bash
46
+
47
+ asena-cli dev start
48
+
49
+ ## or you can simply build then run your bundled project
50
+
51
+ asena-cli build
52
+
53
+ ## theb go to dist folder and run the project
54
+
55
+ bun index.asena.js
56
+ ```
57
+
58
+ `Note`: Built options directly copy of bun options, you can check bun documentation for more
59
+ options. [Bun Documentation](https://bun.sh/docs/bundler#reference)
60
+
61
+ ## Example
62
+
63
+ Here is a simple example of a controller:
64
+
65
+ ```typescript
66
+ // src/controllers/TestController.ts
67
+ import {type Context, Controller, Get} from '@asenajs/asena';
68
+
69
+ @Controller()
70
+ export class TestController {
71
+ @Get('/')
72
+ public async testerTest(context: Context) {
73
+ return context.send('Hello world!');
74
+ }
75
+ }
76
+ ```
77
+
78
+ ```typescript
79
+ // src/index.ts
80
+ import {AsenaServer, DefaultLogger} from '@asenajs/asena';
81
+
82
+ new AsenaServer().logger(new DefaultLogger()).port(3000).start();
83
+ ```
84
+
85
+ then run
4
86
 
5
87
  ```bash
6
88
 
7
- bun add asena hono winston
89
+ asena-cli dev start
90
+
91
+ ## logs
92
+ 2024-11-16 15:29:44 [info]:
93
+ ___ _____ ______ _ __ ___
94
+ / | / ___/ / ____// | / // |
95
+ / /| | \__ \ / __/ / |/ // /| |
96
+ / ___ | ___/ // /___ / /| // ___ |
97
+ /_/ |_|/____//_____//_/ |_//_/ |_|
98
+
99
+ 2024-11-16 15:29:44 [info]: IoC initialized
100
+ 2024-11-16 15:29:44 [info]: No server services found
101
+ 2024-11-16 15:29:44 [info]: Controller: TestController found
102
+ 2024-11-16 15:29:44 [info]: METHOD: GET, PATH: /, READY
103
+ 2024-11-16 15:29:44 [info]: No websockets found
104
+ 2024-11-16 15:29:44 [info]: Server started on port 3000
8
105
  ```
9
106
 
10
- for example, you can check this project [Example](https://github.com/LibirSoft/AsenaExample).
107
+ and you see the result on your browser [http://localhost:3000](http://localhost:3000) with "Hello world!" message.
108
+
109
+ `Note`: For more example, you can check this project [Example](https://github.com/LibirSoft/AsenaExample).
110
+
111
+ ## Core Concepts
112
+
113
+ - **Controllers**: Handle incoming requests using decorators
114
+ - **Services**: Business logic containers that can be injected
115
+ - **ServerSrvices**: Server-wide services that can be injected (e.g. Database)
116
+ - **Middleware**: Request/Response interceptors
117
+ - **Adapters**: Framework adapters (default: Hono)
118
+ - **WebSocket**: Real-time communication support
119
+ - **Validators**: Request validation system
120
+
121
+ ## Architecture
122
+
123
+ Asena follows a modular architecture with:
124
+
125
+ - IoC Container for dependency management
126
+ - Adapter pattern for framework integration
127
+ - Decorator-based routing system
128
+ - Middleware pipeline
129
+ - WebSocket integration
130
+ - Context management
131
+
132
+ ## Performance
133
+
134
+ Built on Bun runtime and Hono, Asena provides:
135
+
136
+ - Fast startup time
137
+ - Low memory footprint
138
+ - Quick request processing
139
+ - Efficient WebSocket handling
140
+
141
+ and here is the benchmark result of Asena with Hono adapter(Basic hello world example) in every test we used bun to run
142
+ the project:
143
+
144
+ ### Performance Comparison (Fastest to Slowest)
145
+
146
+ | Framework | Requests/sec | Latency (avg) | Transfer/sec |
147
+ |--------------------------------------|--------------|---------------|--------------|
148
+ | Hono | 147,031.08 | 2.69ms | 18.09MB |
149
+ | Asena | 137,148.80 | 2.89ms | 16.74MB |
150
+ | NestJS (Bun + Fastify) | 81,652.05 | 6.01ms | 13.78MB |
151
+ | NestJS (Bun) | 64,435.83 | 6.14ms | 11.80MB |
152
+ | NestJS (Bun + kiyasov/platform-hono) | 45,082.27 | 8.79ms | 5.55MB |
153
+ | NestJS (Node) | 17,649.89 | 24.43ms | 4.02MB |
154
+
155
+ > Benchmark conditions:
156
+ >
157
+ > - 12 threads
158
+ > - 400 connections
159
+ > - 120 seconds duration
160
+ > - Simple "Hello World" endpoint
161
+ > - Running on same hardware
162
+
163
+ _Note: Lower latency and higher requests/sec indicate better performance_
164
+
165
+ ## Documentation
11
166
 
12
- ## Note
13
- Asena still under development. Documents will be added soon...
167
+ For detailed documentation, please visit [not ready yet](https://asena.sh).
@@ -3,6 +3,7 @@ import type { BaseMiddleware } from '../server/web/types';
3
3
  import type { ValidatorClass } from '../server/types';
4
4
  import type { Server } from 'bun';
5
5
  import type { AsenaWebsocketAdapter } from './AsenaWebsocketAdapter';
6
+ import type { ServerLogger } from '../services';
6
7
  /**
7
8
  * Abstract class representing an adapter for the Asena framework.
8
9
  *
@@ -27,6 +28,11 @@ export declare abstract class AsenaAdapter<A = unknown, H = unknown, AM = unknow
27
28
  * The port number.
28
29
  */
29
30
  protected port: number;
31
+ /**
32
+ * The logger instance.
33
+ */
34
+ protected logger: ServerLogger;
35
+ protected constructor(websocketAdapter: WSA, logger?: ServerLogger);
30
36
  /**
31
37
  * Sets the port number.
32
38
  *
@@ -22,5 +22,15 @@ export class AsenaAdapter {
22
22
  * The port number.
23
23
  */
24
24
  port;
25
+ /**
26
+ * The logger instance.
27
+ */
28
+ logger = console;
29
+ constructor(websocketAdapter, logger) {
30
+ this.websocketAdapter = websocketAdapter;
31
+ if (logger) {
32
+ this.logger = logger;
33
+ }
34
+ }
25
35
  }
26
36
  //# sourceMappingURL=AsenaAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaAdapter.js","sourceRoot":"","sources":["../../../lib/adapter/AsenaAdapter.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,YAAY;IAUhC;;OAEG;IACI,GAAG,CAAI;IAEd;;OAEG;IACI,gBAAgB,CAAM;IAE7B;;OAEG;IACO,IAAI,CAAS;CA8DxB"}
1
+ {"version":3,"file":"AsenaAdapter.js","sourceRoot":"","sources":["../../../lib/adapter/AsenaAdapter.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,YAAY;IAUhC;;OAEG;IACI,GAAG,CAAI;IAEd;;OAEG;IACI,gBAAgB,CAAM;IAE7B;;OAEG;IACO,IAAI,CAAS;IAEvB;;OAEG;IACO,MAAM,GAAiB,OAAO,CAAC;IAEzC,YAAsB,gBAAqB,EAAE,MAAqB;QAChE,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,CAAC;IACH,CAAC;CA8DF"}
@@ -1,4 +1,8 @@
1
1
  import type { AsenaWebSocketService, WSOptions } from '../server/web/websocket';
2
+ import type { WebSocketHandler } from 'bun';
3
+ import type { ServerLogger } from '../services';
4
+ import type { WebsocketAdapterParams } from './types';
5
+ import type { WebSocketRegistry } from './types';
2
6
  /**
3
7
  * Abstract class representing a WebSocket adapter.
4
8
  *
@@ -6,11 +10,33 @@ import type { AsenaWebSocketService, WSOptions } from '../server/web/websocket';
6
10
  * @template AM - The type of the message.
7
11
  */
8
12
  export declare abstract class AsenaWebsocketAdapter<A, MH> {
9
- app: A;
10
- protected websockets: {
11
- socket: AsenaWebSocketService<any>;
12
- middlewares: MH[];
13
- }[];
13
+ /**
14
+ * The WebSocket services.
15
+ * @ string - The namespace of the WebSocket.
16
+ * @ AsenaWebSocketService<any> - The WebSocket service.
17
+ * @ MH[] - The middlewares to use.
18
+ * @protected
19
+ */
20
+ protected _websockets: WebSocketRegistry;
21
+ /**
22
+ * The application instance.
23
+ * @private
24
+ */
25
+ private _app;
26
+ /**
27
+ * The WebSocket handler.
28
+ * @private
29
+ */
30
+ private _websocket;
31
+ /**
32
+ * The logger instance.
33
+ */
34
+ private _logger;
35
+ /**
36
+ * Constructor for the AsenaWebSocketAdapter class.
37
+ * @param params - The parameters for the constructor.
38
+ */
39
+ protected constructor(params?: WebsocketAdapterParams<A>);
14
40
  /**
15
41
  * Registers a WebSocket handler.
16
42
  *
@@ -34,4 +60,12 @@ export declare abstract class AsenaWebsocketAdapter<A, MH> {
34
60
  * @param {Server} server - The server to start.
35
61
  */
36
62
  abstract startWebsocket(server: any): void;
63
+ get app(): A;
64
+ set app(value: A);
65
+ protected get websockets(): WebSocketRegistry;
66
+ protected set websockets(value: WebSocketRegistry);
67
+ get websocket(): WebSocketHandler;
68
+ set websocket(value: WebSocketHandler);
69
+ get logger(): ServerLogger;
70
+ set logger(value: ServerLogger);
37
71
  }
@@ -5,7 +5,59 @@
5
5
  * @template AM - The type of the message.
6
6
  */
7
7
  export class AsenaWebsocketAdapter {
8
- app;
9
- websockets;
8
+ /**
9
+ * The WebSocket services.
10
+ * @ string - The namespace of the WebSocket.
11
+ * @ AsenaWebSocketService<any> - The WebSocket service.
12
+ * @ MH[] - The middlewares to use.
13
+ * @protected
14
+ */
15
+ _websockets;
16
+ /**
17
+ * The application instance.
18
+ * @private
19
+ */
20
+ _app;
21
+ /**
22
+ * The WebSocket handler.
23
+ * @private
24
+ */
25
+ _websocket;
26
+ /**
27
+ * The logger instance.
28
+ */
29
+ _logger = console;
30
+ /**
31
+ * Constructor for the AsenaWebSocketAdapter class.
32
+ * @param params - The parameters for the constructor.
33
+ */
34
+ constructor(params) {
35
+ this._app = params?.app;
36
+ this._logger = params?.logger;
37
+ }
38
+ get app() {
39
+ return this._app;
40
+ }
41
+ set app(value) {
42
+ this._app = value;
43
+ }
44
+ get websockets() {
45
+ return this._websockets;
46
+ }
47
+ set websockets(value) {
48
+ this._websockets = value;
49
+ }
50
+ get websocket() {
51
+ return this._websocket;
52
+ }
53
+ set websocket(value) {
54
+ this._websocket = value;
55
+ }
56
+ get logger() {
57
+ return this._logger;
58
+ }
59
+ set logger(value) {
60
+ this._logger = value;
61
+ }
10
62
  }
11
63
  //# sourceMappingURL=AsenaWebsocketAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaWebsocketAdapter.js","sourceRoot":"","sources":["../../../lib/adapter/AsenaWebsocketAdapter.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,OAAgB,qBAAqB;IAElC,GAAG,CAAI;IAEJ,UAAU,CAA8D;CA6BnF"}
1
+ {"version":3,"file":"AsenaWebsocketAdapter.js","sourceRoot":"","sources":["../../../lib/adapter/AsenaWebsocketAdapter.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,OAAgB,qBAAqB;IAEzC;;;;;;OAMG;IACO,WAAW,CAAoB;IAEzC;;;OAGG;IACK,IAAI,CAAI;IAEhB;;;OAGG;IACK,UAAU,CAAmB;IAErC;;OAEG;IACK,OAAO,GAAiB,OAAO,CAAC;IAExC;;;OAGG;IACH,YAAsB,MAAkC;QACtD,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC;IAChC,CAAC;IA6BD,IAAW,GAAG;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAW,GAAG,CAAC,KAAQ;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;IACpB,CAAC;IAED,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAc,UAAU,CAAC,KAAwB;QAC/C,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,SAAS,CAAC,KAAuB;QAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAW,MAAM,CAAC,KAAmB;QACnC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CAEF"}
@@ -6,12 +6,14 @@ import type { H } from 'hono/types';
6
6
  import type { BaseMiddleware } from '../../server/web/types';
7
7
  import type { ErrorHandler, Handler } from './types';
8
8
  import type { ValidatorClass } from '../../server/types';
9
- import { DefaultWebsocketAdapter } from './DefaultWebsocketAdapter';
9
+ import { type ServerLogger } from '../../services';
10
+ import type { AsenaWebsocketAdapter } from '../AsenaWebsocketAdapter';
10
11
  export declare class DefaultAdapter extends AsenaAdapter<Hono, Handler, MiddlewareHandler, H> {
11
12
  private static readonly VALIDATOR_METHODS;
12
13
  app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
13
- websocketAdapter: DefaultWebsocketAdapter;
14
14
  private server;
15
+ private readonly methodMap;
16
+ constructor(websocketAdapter: AsenaWebsocketAdapter<any, any>, logger?: ServerLogger);
15
17
  use(middleware: BaseMiddleware<HonoRequest, Response>, path?: string): void;
16
18
  registerRoute({ method, path, middleware, handler, staticServe, validator, }: RouteParams<MiddlewareHandler, H>): void;
17
19
  start(): Promise<Server>;
@@ -4,12 +4,30 @@ import * as bun from 'bun';
4
4
  import { createFactory } from 'hono/factory';
5
5
  import { DefaultContextWrapper } from './DefaultContextWrapper';
6
6
  import { HttpMethod } from '../../server/web/http';
7
- import { DefaultWebsocketAdapter } from './DefaultWebsocketAdapter';
7
+ import { green, yellow } from '../../services';
8
8
  export class DefaultAdapter extends AsenaAdapter {
9
9
  static VALIDATOR_METHODS = ['json', 'query', 'form', 'param', 'header'];
10
10
  app = new Hono();
11
- websocketAdapter = new DefaultWebsocketAdapter(this.app);
12
11
  server;
12
+ methodMap = {
13
+ [HttpMethod.GET]: (path, ...handlers) => this.app.get(path, ...handlers),
14
+ [HttpMethod.POST]: (path, ...handlers) => this.app.post(path, ...handlers),
15
+ [HttpMethod.PUT]: (path, ...handlers) => this.app.put(path, ...handlers),
16
+ [HttpMethod.DELETE]: (path, ...handlers) => this.app.delete(path, ...handlers),
17
+ [HttpMethod.PATCH]: (path, ...handlers) => this.app.patch(path, ...handlers),
18
+ [HttpMethod.OPTIONS]: (path, ...handlers) => this.app.options(path, ...handlers),
19
+ [HttpMethod.CONNECT]: (path, ...handlers) => this.app.on(HttpMethod.CONNECT.toUpperCase(), path, ...handlers),
20
+ [HttpMethod.HEAD]: (path, ...handlers) => this.app.on(HttpMethod.HEAD.toUpperCase(), path, ...handlers),
21
+ [HttpMethod.TRACE]: (path, ...handlers) => this.app.on(HttpMethod.TRACE.toUpperCase(), path, ...handlers),
22
+ };
23
+ constructor(websocketAdapter, logger) {
24
+ super(websocketAdapter, logger);
25
+ this.websocketAdapter.app = this.app;
26
+ // to ensure that the logger is set
27
+ if (!this.websocketAdapter.logger && logger) {
28
+ this.websocketAdapter.logger = this.logger;
29
+ }
30
+ }
13
31
  use(middleware, path) {
14
32
  const normalizedPath = path ? this.normalizePath(path) : undefined;
15
33
  const preparedMiddlewares = this.prepareMiddlewares(middleware);
@@ -22,37 +40,12 @@ export class DefaultAdapter extends AsenaAdapter {
22
40
  registerRoute({ method, path, middleware, handler, staticServe, validator, }) {
23
41
  const middlewares = validator ? [...validator, ...middleware] : middleware;
24
42
  const routeHandler = staticServe ? middleware : [...middlewares, handler];
25
- switch (method) {
26
- case HttpMethod.GET:
27
- this.app.get(path, ...routeHandler);
28
- break;
29
- case HttpMethod.POST:
30
- this.app.post(path, ...routeHandler);
31
- break;
32
- case HttpMethod.PUT:
33
- this.app.put(path, ...routeHandler);
34
- break;
35
- case HttpMethod.DELETE:
36
- this.app.delete(path, ...routeHandler);
37
- break;
38
- case HttpMethod.PATCH:
39
- this.app.patch(path, ...routeHandler);
40
- break;
41
- case HttpMethod.OPTIONS:
42
- this.app.options(path, ...routeHandler);
43
- break;
44
- case HttpMethod.CONNECT:
45
- this.app.on(HttpMethod.CONNECT.toUpperCase(), path, ...routeHandler);
46
- break;
47
- case HttpMethod.HEAD:
48
- this.app.on(HttpMethod.HEAD.toUpperCase(), path, ...routeHandler);
49
- break;
50
- case HttpMethod.TRACE:
51
- this.app.on(HttpMethod.TRACE.toUpperCase(), path, ...routeHandler);
52
- break;
53
- default:
54
- throw new Error('Invalid method');
43
+ const methodHandler = this.methodMap[method];
44
+ if (!methodHandler) {
45
+ throw new Error('Invalid method');
55
46
  }
47
+ methodHandler(path, ...routeHandler);
48
+ this.logger.info(`${green('Successfully')} registered ${yellow(method.toUpperCase())} route for PATH: ${green(`/${path}`)}`);
56
49
  }
57
50
  async start() {
58
51
  this.websocketAdapter.buildWebsocket();
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/defaultAdapter/DefaultAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DefaultAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/defaultAdapter/DefaultAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,15 @@
1
1
  import { type AsenaWebSocketService, type WSOptions } from '../../server/web/websocket';
2
2
  import { AsenaWebsocketAdapter } from '../AsenaWebsocketAdapter';
3
3
  import type { Hono, MiddlewareHandler } from 'hono';
4
- import type { Server, WebSocketHandler } from 'bun';
4
+ import type { Server } from 'bun';
5
+ import type { WebsocketAdapterParams } from '../types';
5
6
  export declare class DefaultWebsocketAdapter extends AsenaWebsocketAdapter<Hono, MiddlewareHandler> {
6
- private _websocket;
7
7
  private _server;
8
- constructor(app: Hono);
9
- registerWebSocket(websocketHandlers: AsenaWebSocketService<any>, middlewares: MiddlewareHandler[]): void;
8
+ constructor(params?: WebsocketAdapterParams<Hono>);
9
+ registerWebSocket(webSocketService: AsenaWebSocketService<any>, middlewares: MiddlewareHandler[]): void;
10
10
  prepareWebSocket(options?: WSOptions): void;
11
11
  buildWebsocket(): void;
12
12
  startWebsocket(server: Server): void;
13
13
  private upgradeWebSocket;
14
14
  private createHandler;
15
- get websocket(): WebSocketHandler;
16
15
  }
@@ -1,25 +1,32 @@
1
1
  import { AsenaSocket, } from '../../server/web/websocket';
2
2
  import { AsenaWebsocketAdapter } from '../AsenaWebsocketAdapter';
3
- import * as crypto from 'node:crypto';
3
+ import * as bun from 'bun';
4
4
  import { getMetadata } from 'reflect-metadata/no-conflict';
5
5
  import { ComponentConstants } from '../../ioc/constants';
6
6
  import { AsenaWebSocketServer } from '../../server/web/websocket/AsenaWebSocketServer';
7
+ import { green, yellow } from '../../services';
7
8
  export class DefaultWebsocketAdapter extends AsenaWebsocketAdapter {
8
- _websocket;
9
9
  _server;
10
- constructor(app) {
11
- super();
12
- this.app = app;
10
+ constructor(params) {
11
+ super(params);
13
12
  }
14
- registerWebSocket(websocketHandlers, middlewares) {
13
+ registerWebSocket(webSocketService, middlewares) {
14
+ if (!webSocketService) {
15
+ throw new Error('Websocket service is not provided');
16
+ }
15
17
  if (this.websockets === undefined) {
16
- this.websockets = [];
18
+ this.websockets = new Map();
19
+ }
20
+ const namespace = getMetadata(ComponentConstants.PathKey, webSocketService.constructor);
21
+ if (!namespace) {
22
+ throw new Error('Namespace is not provided');
17
23
  }
18
- websocketHandlers.namespace = getMetadata(ComponentConstants.PathKey, websocketHandlers.constructor);
19
- this.websockets.push({ socket: websocketHandlers, middlewares });
24
+ webSocketService.namespace = namespace;
25
+ this.logger.info(`${green('Successfully')} registered ${yellow('WEBSOCKET')} route for PATH: ${green(`/${webSocketService.namespace}`)} (${webSocketService.constructor.name})`);
26
+ this.websockets.set(namespace, { socket: webSocketService, middlewares });
20
27
  }
21
28
  prepareWebSocket(options) {
22
- this._websocket = {
29
+ this.websocket = {
23
30
  open: this.createHandler('onOpenInternal'),
24
31
  message: this.createHandler('onMessage'),
25
32
  drain: this.createHandler('onDrain'),
@@ -30,9 +37,9 @@ export class DefaultWebsocketAdapter extends AsenaWebsocketAdapter {
30
37
  };
31
38
  }
32
39
  buildWebsocket() {
33
- if (!this._websocket)
40
+ if (!this.websocket || !this.websockets?.size)
34
41
  return;
35
- for (const websocket of this.websockets) {
42
+ for (const [, websocket] of this.websockets) {
36
43
  this.upgradeWebSocket(websocket.socket, websocket.middlewares);
37
44
  }
38
45
  }
@@ -41,15 +48,15 @@ export class DefaultWebsocketAdapter extends AsenaWebsocketAdapter {
41
48
  if (!this.websockets) {
42
49
  return;
43
50
  }
44
- for (const websocket of this.websockets) {
45
- websocket.socket.server = new AsenaWebSocketServer(server, websocket.socket.namespace);
51
+ for (const [namespace, websocket] of this.websockets) {
52
+ websocket.socket.server = new AsenaWebSocketServer(server, namespace);
46
53
  }
47
54
  }
48
55
  upgradeWebSocket(websocket, middlewares) {
49
56
  const path = websocket.namespace;
50
57
  this.app.get(`/${path}`, ...middlewares, async (c, next) => {
51
58
  const websocketData = c.get('_websocketData') || {};
52
- const id = crypto.randomUUID();
59
+ const id = bun.randomUUIDv7();
53
60
  const data = { values: websocketData, id, path: path };
54
61
  const upgradeResult = this._server.upgrade(c.req.raw, { data });
55
62
  if (upgradeResult) {
@@ -60,17 +67,11 @@ export class DefaultWebsocketAdapter extends AsenaWebsocketAdapter {
60
67
  }
61
68
  createHandler(type) {
62
69
  return (ws, ...args) => {
63
- const websocket = this.websockets.find((h) => {
64
- const path = h.socket.namespace;
65
- return path === ws.data.path;
66
- });
70
+ const websocket = this.websockets.get(ws.data.path);
67
71
  if (websocket?.socket[type]) {
68
72
  (websocket?.socket[type])(new AsenaSocket(ws, websocket.socket), ...args);
69
73
  }
70
74
  };
71
75
  }
72
- get websocket() {
73
- return this._websocket;
74
- }
75
76
  }
76
77
  //# sourceMappingURL=DefaultWebsocketAdapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultWebsocketAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/defaultAdapter/DefaultWebsocketAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DefaultWebsocketAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/defaultAdapter/DefaultWebsocketAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AsenaWebSocketService } from '../../server/web/websocket';
2
+ import type { MiddlewareHandler } from 'hono';
3
+ export interface WebsocketServiceRegistry<MH> {
4
+ socket: AsenaWebSocketService<any>;
5
+ middlewares: MH[];
6
+ }
7
+ export type WebSocketRegistry<MH = MiddlewareHandler> = Map<string, WebsocketServiceRegistry<MH>>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WebSocketRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketRegistry.js","sourceRoot":"","sources":["../../../../lib/adapter/types/WebSocketRegistry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import type { ServerLogger } from '../../services';
2
+ export interface WebsocketAdapterParams<A> {
3
+ /**
4
+ * An optional logger instance for logging purposes.
5
+ */
6
+ logger?: ServerLogger;
7
+ /**
8
+ * The application instance.
9
+ */
10
+ app?: A;
11
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=WebsocketAdapterParams.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebsocketAdapterParams.js","sourceRoot":"","sources":["../../../../lib/adapter/types/WebsocketAdapterParams.ts"],"names":[],"mappings":""}
@@ -1,3 +1,5 @@
1
1
  export * from './CookieExtra';
2
2
  export * from './RouteParams';
3
3
  export * from './SendOptions';
4
+ export * from './WebsocketAdapterParams';
5
+ export * from './WebSocketRegistry';
@@ -1,4 +1,6 @@
1
1
  export * from './CookieExtra';
2
2
  export * from './RouteParams';
3
3
  export * from './SendOptions';
4
+ export * from './WebsocketAdapterParams';
5
+ export * from './WebSocketRegistry';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/adapter/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/adapter/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,0BAA0B,CAAC;AACzC,cAAc,qBAAqB,CAAC"}
@@ -11,7 +11,7 @@ export declare class AsenaServer {
11
11
  private _adapter;
12
12
  private _wsOptions;
13
13
  constructor(adapter?: AsenaAdapter<any, any, any, any, any>);
14
- start(): Promise<void>;
14
+ start(gc?: boolean): Promise<void>;
15
15
  components(components: Class[]): AsenaServer;
16
16
  port(port: number): AsenaServer;
17
17
  logger(value: ServerLogger): AsenaServer;
@@ -3,9 +3,11 @@ import { readConfigFile } from '../ioc/helper/fileHelper';
3
3
  import { ComponentType } from '../ioc/types';
4
4
  import { getMetadata } from 'reflect-metadata/no-conflict';
5
5
  import * as path from 'node:path';
6
- import { green, yellow } from '../services';
6
+ import { green } from '../services';
7
7
  import { DefaultAdapter } from '../adapter/defaultAdapter';
8
8
  import { ComponentConstants } from '../ioc/constants';
9
+ import { DefaultWebsocketAdapter } from '../adapter/defaultAdapter/DefaultWebsocketAdapter';
10
+ import * as bun from 'bun';
9
11
  export class AsenaServer {
10
12
  _port;
11
13
  controllers = [];
@@ -21,14 +23,16 @@ export class AsenaServer {
21
23
  this._logger.error('Config file not found');
22
24
  }
23
25
  this._ioc = new IocEngine(config);
24
- if (!adapter) {
25
- this._adapter = new DefaultAdapter();
26
- }
27
- else {
26
+ if (adapter) {
28
27
  this._adapter = adapter;
29
28
  }
30
29
  }
31
- async start() {
30
+ async start(gc = false) {
31
+ // Setting default adapter if not provided
32
+ if (!this._adapter) {
33
+ this._adapter = new DefaultAdapter(new DefaultWebsocketAdapter(), this._logger);
34
+ this._adapter.setPort(this._port);
35
+ }
32
36
  await this._ioc.searchAndRegister(this._components);
33
37
  this._logger.info(`
34
38
  ___ _____ ______ _ __ ___
@@ -44,6 +48,10 @@ export class AsenaServer {
44
48
  this.configureErrorHandling();
45
49
  this._logger.info('Server started on port ' + this._port);
46
50
  await this._adapter.start();
51
+ // TODO: this is wierd but when we call gc asena uses less memory rest of the time
52
+ if (gc) {
53
+ bun.gc(true);
54
+ }
47
55
  }
48
56
  components(components) {
49
57
  this._components = components.map((_component) => {
@@ -58,7 +66,6 @@ export class AsenaServer {
58
66
  }
59
67
  port(port) {
60
68
  this._port = port;
61
- this._adapter.setPort(port);
62
69
  return this;
63
70
  }
64
71
  logger(value) {
@@ -87,7 +94,6 @@ export class AsenaServer {
87
94
  this.prepareTopMiddlewares({ controller, routePath });
88
95
  for (const [name, params] of Object.entries(routes)) {
89
96
  const lastPath = path.join(`${routePath}/`, params.path);
90
- this._logger.info(`METHOD: ${yellow(params.method.toUpperCase())}, PATH: ${yellow(lastPath)}${params.description ? `, DESCRIPTION: ${params.description}` : ''}, ${green('READY')}`);
91
97
  const middlewares = this.prepareMiddleware(params);
92
98
  this._adapter.registerRoute({
93
99
  method: params.method,
@@ -161,7 +167,6 @@ export class AsenaServer {
161
167
  registeredPaths.add(path);
162
168
  const middlewares = this.prepareTopMiddlewares({ controller: webSocket }, true);
163
169
  this._adapter.websocketAdapter.registerWebSocket(webSocket, this._adapter.prepareMiddlewares(middlewares));
164
- this._logger.info(`WebSocket: ${green(webSocket.constructor.name)} initialized with path: ${yellow(`/${path}`)} ${green('READY')}`);
165
170
  }
166
171
  if (flatWebSockets.length > 0) {
167
172
  this._adapter.websocketAdapter.prepareWebSocket(this._wsOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaServer.js","sourceRoot":"","sources":["../../../lib/server/AsenaServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsenaServer.js","sourceRoot":"","sources":["../../../lib/server/AsenaServer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAkB,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE3D,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,MAAM,OAAO,WAAW;IAEd,KAAK,CAAS;IAEd,WAAW,GAAY,EAAE,CAAC;IAE1B,WAAW,GAAgB,EAAE,CAAC;IAE9B,IAAI,CAAY;IAEhB,OAAO,CAAe;IAEtB,QAAQ,CAA8E;IAEtF,UAAU,CAAY;IAE9B,YAAmB,OAA+C;QAChE,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;QAEhC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC1B,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK;QAC3B,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,IAAI,uBAAuB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAChF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;;;;;;6BAMO,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAErC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAE7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAE1D,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAE5B,kFAAkF;QAClF,IAAI,EAAE,EAAE,CAAC;YACP,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAEM,UAAU,CAAC,UAAmB;QACnC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,UAAiB,EAAE,EAAE;YACtD,MAAM,IAAI,GAAW,WAAW,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC9E,MAAM,SAAS,GAAc;gBAC3B,KAAK,EAAE,UAAmB;gBAC1B,SAAS,EAAE,IAAI;aAChB,CAAC;YAEF,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,IAAI,CAAC,IAAY;QACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,MAAM,CAAC,KAAmB;QAC/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,SAAS,CAAC,OAAkB;QACjC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QAE1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAqB;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAQ,aAAa,CAAC,UAAU,CAAC,CAAC;QAEhF,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACzB,0CAA0C;YAC1C,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,WAAsB,CAAC;YAE1C,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAU,WAAW,CAAC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;YAEjF,MAAM,SAAS,GAAW,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAEhG,IAAI,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;YAEtD,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;gBAEzD,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAEnD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;oBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,WAAW,CAAC;oBACzD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,GAA2B,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnG,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC;iBAC5D,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAC3B,EAAE,UAAU,EAAE,SAAS,EAA2B,EAClD,SAAS,GAAG,KAAK;QAEjB,MAAM,cAAc,GAAG,WAAW,CAAC,kBAAkB,CAAC,cAAc,EAAE,UAAU,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACpG,MAAM,mBAAmB,GAA+B,EAAE,CAAC;QAE3D,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACjE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAmC,IAAI,CAAC,CAAC;YAElF,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;YAE/E,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBACvE,MAAM,gBAAgB,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;gBAEnE,IAAI,SAAS,EAAE,CAAC;oBACd,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC7C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,iBAAiB,CAAC,gBAA4B;QACpD,MAAM,WAAW,GAA+B,EAAE,CAAC;QACnD,MAAM,gBAAgB,GAAG,gBAAgB,EAAE,WAAW,IAAI,EAAE,CAAC;QAE7D,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACjE,MAAM,QAAQ,GAAG,WAAW,CAAC,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YACzE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAmC,IAAI,CAAC,CAAC;YAElF,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;YAE/E,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;gBAC3C,WAAW,CAAC,IAAI,CAAC;oBACf,iBAAiB,EAAE,QAAQ;oBAC3B,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,gBAAgB;QACtB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAuC,aAAa,CAAC,SAAS,CAAC,CAAC;QAE7G,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACzC,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;QACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1C,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YAE5E,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,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;YAE1B,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,EAAE,UAAU,EAAE,SAA6B,EAAE,EAAE,IAAI,CAAC,CAAC;YAEpG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC7G,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAe,aAAa,CAAC,cAAc,CAAC,CAAC;QAE9F,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,iBAAiB;QACjB,MAAM,kBAAkB,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QAEjD,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEpD,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,QAAQ,CAAC,CAAC;gBAEnD,oDAAoD;gBACpD,IAAI,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;oBACvB,MAAM,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7B,CAAC;gBAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,WAAW,cAAc,CAAC,CAAC;YAC3D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,gCAAgC,WAAW,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpF,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,oDAAoD;IAC5C,sBAAsB;QAC5B,8EAA8E;QAC9E,wCAAwC;QACxC,iCAAiC;QACjC,gCAAgC;QAChC,MAAM;QACN,EAAE;QACF,sGAAsG;QACtG,MAAM;IACR,CAAC;IAEO,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;IACH,CAAC;CAEF"}
@@ -22,6 +22,7 @@ export declare class AsenaSocket<T> implements ServerWebSocket<WebSocketData<T>>
22
22
  publishBinary(topic: string, data: ArrayBufferLike | DataView, compress?: boolean): ServerWebSocketSendStatus;
23
23
  subscribe(topic: string): void;
24
24
  unsubscribe(topic: string): void;
25
+ cleanup(): void;
25
26
  isSubscribed(topic: string): boolean;
26
27
  cork<T = unknown>(callback: (ws: ServerWebSocket<T>) => T): T;
27
28
  get remoteAddress(): string;
@@ -25,6 +25,7 @@ export class AsenaSocket {
25
25
  return this.ws.sendBinary(data, compress);
26
26
  }
27
27
  close(code, reason) {
28
+ this.cleanup();
28
29
  this.ws.close(code, reason);
29
30
  }
30
31
  terminate() {
@@ -64,13 +65,15 @@ export class AsenaSocket {
64
65
  if (room.length === 0) {
65
66
  this._websocketService.rooms.delete(topic);
66
67
  }
67
- else {
68
- this._websocketService.rooms.set(topic, room);
69
- }
70
68
  }
71
69
  }
72
70
  this.ws.unsubscribe(this.createTopic(topic));
73
71
  }
72
+ cleanup() {
73
+ this._websocketService.rooms.forEach((_, topic) => {
74
+ this.unsubscribe(topic);
75
+ });
76
+ }
74
77
  isSubscribed(topic) {
75
78
  return this.ws.isSubscribed(this.createTopic(topic));
76
79
  }
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaSocket.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaSocket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AsenaSocket.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaSocket.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,7 @@ export class AsenaWebSocketService {
59
59
  }
60
60
  }
61
61
  async onCloseInternal(ws, _code, _reason) {
62
+ ws.cleanup();
62
63
  ws.unsubscribe(``);
63
64
  ws.unsubscribe(`.${ws.data.id}`);
64
65
  this.sockets.delete(ws.id);
@@ -1 +1 @@
1
- {"version":3,"file":"AsenaWebSocketService.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaWebSocketService.ts"],"names":[],"mappings":"AAGA,oHAAoH;AAEpH;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAEhC;;OAEG;IACI,MAAM,GAAyB,IAAI,CAAC;IAE3C;;OAEG;IACK,QAAQ,GAA2B,IAAI,GAAG,EAAqB,CAAC;IAExE;;OAEG;IACK,MAAM,GAA6B,IAAI,GAAG,EAAuB,CAAC;IAE1E;;OAEG;IACK,UAAU,CAAS;IAE3B;;;OAGG;IAEI,EAAE,CAAC,IAAU;QAClB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,EAAE,CAAC,SAAiB,EAAE,IAAU;QACrC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAE/E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAuDS,KAAK,CAAC,cAAc,CAAC,EAAa;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEjB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,EAAa,EAAE,KAAa,EAAE,OAAe;QAC3E,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEnB,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,OAAO,CAAC,OAA+B;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,SAAS,CAAC,KAAa;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK,CAAC,KAA+B;QAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;CAEF"}
1
+ {"version":3,"file":"AsenaWebSocketService.js","sourceRoot":"","sources":["../../../../../lib/server/web/websocket/AsenaWebSocketService.ts"],"names":[],"mappings":"AAGA,oHAAoH;AAEpH;;;;GAIG;AACH,MAAM,OAAO,qBAAqB;IAEhC;;OAEG;IACI,MAAM,GAAyB,IAAI,CAAC;IAE3C;;OAEG;IACK,QAAQ,GAA2B,IAAI,GAAG,EAAqB,CAAC;IAExE;;OAEG;IACK,MAAM,GAA6B,IAAI,GAAG,EAAuB,CAAC;IAE1E;;OAEG;IACK,UAAU,CAAS;IAE3B;;;OAGG;IAEI,EAAE,CAAC,IAAU;QAClB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,EAAE,CAAC,SAAiB,EAAE,IAAU;QACrC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAE/E,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,gBAAgB,CAAC,IAAY;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAuDS,KAAK,CAAC,cAAc,CAAC,EAAa;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAE5B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEjB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAES,KAAK,CAAC,eAAe,CAAC,EAAa,EAAE,KAAa,EAAE,OAAe;QAC3E,EAAE,CAAC,OAAO,EAAE,CAAC;QAEb,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAEnB,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAW,OAAO,CAAC,OAA+B;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED,IAAW,SAAS,CAAC,KAAa;QAChC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK,CAAC,KAA+B;QAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;CAEF"}
@@ -11,4 +11,5 @@ export declare class DefaultLogger implements ServerLogger {
11
11
  info(message: string, meta?: any): void;
12
12
  warn(message: string, meta?: any): void;
13
13
  error(message: string, meta?: any): void;
14
+ profile(message: string): void;
14
15
  }
@@ -24,5 +24,8 @@ export class DefaultLogger {
24
24
  error(message, meta) {
25
25
  this.logger.error(message, meta);
26
26
  }
27
+ profile(message) {
28
+ this.logger.profile(message);
29
+ }
27
30
  }
28
31
  //# sourceMappingURL=DefaultLogger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultLogger.js","sourceRoot":"","sources":["../../../../lib/services/logger/DefaultLogger.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CACjD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IAC7B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAErD,OAAO,GAAG,SAAS,KAAK,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClH,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,OAAO,SAAS,CAAC;AAEtE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,OAAO,SAAS,CAAC;AAEpE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,OAAO,SAAS,CAAC;AAEvE,MAAM,OAAO,aAAa;IAEjB,MAAM,CAAS;IAEtB;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YACjC,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;YAC7B,UAAU,EAAE,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAS,CAAC,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;CAEF"}
1
+ {"version":3,"file":"DefaultLogger.js","sourceRoot":"","sources":["../../../../lib/services/logger/DefaultLogger.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CACjD,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,EACzB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EACtB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IAC7B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC;IAErD,OAAO,GAAG,SAAS,KAAK,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAClH,CAAC,CAAC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,OAAO,SAAS,CAAC;AAEtE,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,OAAO,SAAS,CAAC;AAEpE,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE,CAAC,WAAW,OAAO,SAAS,CAAC;AAEvE,MAAM,OAAO,aAAa;IAEjB,MAAM,CAAS;IAEtB;QACE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;YACjC,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE;YAC7B,UAAU,EAAE,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,EAAS,CAAC,CAAC;SAC/E,CAAC,CAAC;IACL,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,IAAI,CAAC,OAAe,EAAE,IAAU;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,IAAU;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC;IAEM,OAAO,CAAC,OAAe;QAC5B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;CAEF"}
@@ -20,4 +20,9 @@ export interface ServerLogger {
20
20
  * @param meta - Optional metadata to include with the log.
21
21
  */
22
22
  error: (message: string, meta?: any) => void;
23
+ /**
24
+ * Logs a debug message.
25
+ * @param message - The message to log.
26
+ */
27
+ profile: (message: string) => void;
23
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@asenajs/asena",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "Asena is a spring like framework for building web applications built with hono and bun",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -46,10 +46,10 @@
46
46
  "eslint-plugin-n": "^16.6.2",
47
47
  "eslint-plugin-prettier": "^5.2.1",
48
48
  "eslint-plugin-promise": "^6.6.0",
49
- "hono": "^4.6.7",
49
+ "hono": "^4.6.10",
50
50
  "prettier": "^3.3.3",
51
51
  "typescript": "^5.6.3",
52
- "winston": "^3.15.0"
52
+ "winston": "^3.17.0"
53
53
  },
54
54
  "peerDependencies": {
55
55
  "hono": "^4.5.9",