@asenajs/asena 0.1.14 → 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.
- package/README.md +159 -5
- package/dist/lib/adapter/AsenaAdapter.d.ts +6 -0
- package/dist/lib/adapter/AsenaAdapter.js +10 -0
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/AsenaWebsocketAdapter.d.ts +39 -5
- package/dist/lib/adapter/AsenaWebsocketAdapter.js +54 -2
- package/dist/lib/adapter/AsenaWebsocketAdapter.js.map +1 -1
- package/dist/lib/adapter/defaultAdapter/DefaultAdapter.d.ts +8 -5
- package/dist/lib/adapter/defaultAdapter/DefaultAdapter.js +30 -40
- package/dist/lib/adapter/defaultAdapter/DefaultAdapter.js.map +1 -1
- package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.d.ts +4 -5
- package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.js +26 -22
- package/dist/lib/adapter/defaultAdapter/DefaultWebsocketAdapter.js.map +1 -1
- package/dist/lib/adapter/types/WebSocketRegistry.d.ts +7 -0
- package/dist/lib/adapter/types/WebSocketRegistry.js +2 -0
- package/dist/lib/adapter/types/WebSocketRegistry.js.map +1 -0
- package/dist/lib/adapter/types/WebsocketAdapterParams.d.ts +11 -0
- package/dist/lib/adapter/types/WebsocketAdapterParams.js +2 -0
- package/dist/lib/adapter/types/WebsocketAdapterParams.js.map +1 -0
- package/dist/lib/adapter/types/index.d.ts +2 -0
- package/dist/lib/adapter/types/index.js +2 -0
- package/dist/lib/adapter/types/index.js.map +1 -1
- package/dist/lib/ioc/Container.d.ts +3 -0
- package/dist/lib/ioc/Container.js +3 -0
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/server/AsenaServer.d.ts +1 -1
- package/dist/lib/server/AsenaServer.js +15 -10
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaSocket.d.ts +1 -0
- package/dist/lib/server/web/websocket/AsenaSocket.js +6 -3
- package/dist/lib/server/web/websocket/AsenaSocket.js.map +1 -1
- package/dist/lib/server/web/websocket/AsenaWebSocketService.js +1 -0
- package/dist/lib/server/web/websocket/AsenaWebSocketService.js.map +1 -1
- package/dist/lib/services/logger/DefaultLogger.d.ts +1 -0
- package/dist/lib/services/logger/DefaultLogger.js +3 -0
- package/dist/lib/services/logger/DefaultLogger.js.map +1 -1
- package/dist/lib/services/types/Logger.d.ts +5 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,13 +1,167 @@
|
|
|
1
1
|
# Asena
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
9
|
-
|
|
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":"
|
|
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,18 +6,21 @@ 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 {
|
|
9
|
+
import { type ServerLogger } from '../../services';
|
|
10
|
+
import type { AsenaWebsocketAdapter } from '../AsenaWebsocketAdapter';
|
|
10
11
|
export declare class DefaultAdapter extends AsenaAdapter<Hono, Handler, MiddlewareHandler, H> {
|
|
12
|
+
private static readonly VALIDATOR_METHODS;
|
|
11
13
|
app: Hono<import("hono/types").BlankEnv, import("hono/types").BlankSchema, "/">;
|
|
12
|
-
websocketAdapter: DefaultWebsocketAdapter;
|
|
13
14
|
private server;
|
|
15
|
+
private readonly methodMap;
|
|
16
|
+
constructor(websocketAdapter: AsenaWebsocketAdapter<any, any>, logger?: ServerLogger);
|
|
14
17
|
use(middleware: BaseMiddleware<HonoRequest, Response>, path?: string): void;
|
|
15
18
|
registerRoute({ method, path, middleware, handler, staticServe, validator, }: RouteParams<MiddlewareHandler, H>): void;
|
|
16
19
|
start(): Promise<Server>;
|
|
17
|
-
prepareMiddlewares(middlewares: BaseMiddleware<HonoRequest, Response> | BaseMiddleware<HonoRequest, Response>[]): any[];
|
|
18
|
-
prepareHandler(handler: Handler): (
|
|
20
|
+
prepareMiddlewares(middlewares: BaseMiddleware<HonoRequest, Response> | BaseMiddleware<HonoRequest, Response>[]): ((c: any, next: any) => any)[];
|
|
21
|
+
prepareHandler(handler: () => Handler): (c: Context) => any;
|
|
19
22
|
onError(errorHandler: ErrorHandler): void;
|
|
20
23
|
setPort(port: number): void;
|
|
21
|
-
prepareValidator(Validator: ValidatorClass<MiddlewareHandler>):
|
|
24
|
+
prepareValidator(Validator: ValidatorClass<MiddlewareHandler>): MiddlewareHandler[];
|
|
22
25
|
private normalizePath;
|
|
23
26
|
}
|
|
@@ -4,11 +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 {
|
|
7
|
+
import { green, yellow } from '../../services';
|
|
8
8
|
export class DefaultAdapter extends AsenaAdapter {
|
|
9
|
+
static VALIDATOR_METHODS = ['json', 'query', 'form', 'param', 'header'];
|
|
9
10
|
app = new Hono();
|
|
10
|
-
websocketAdapter = new DefaultWebsocketAdapter(this.app);
|
|
11
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
|
+
}
|
|
12
31
|
use(middleware, path) {
|
|
13
32
|
const normalizedPath = path ? this.normalizePath(path) : undefined;
|
|
14
33
|
const preparedMiddlewares = this.prepareMiddlewares(middleware);
|
|
@@ -21,37 +40,12 @@ export class DefaultAdapter extends AsenaAdapter {
|
|
|
21
40
|
registerRoute({ method, path, middleware, handler, staticServe, validator, }) {
|
|
22
41
|
const middlewares = validator ? [...validator, ...middleware] : middleware;
|
|
23
42
|
const routeHandler = staticServe ? middleware : [...middlewares, handler];
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
break;
|
|
28
|
-
case HttpMethod.POST:
|
|
29
|
-
this.app.post(path, ...routeHandler);
|
|
30
|
-
break;
|
|
31
|
-
case HttpMethod.PUT:
|
|
32
|
-
this.app.put(path, ...routeHandler);
|
|
33
|
-
break;
|
|
34
|
-
case HttpMethod.DELETE:
|
|
35
|
-
this.app.delete(path, ...routeHandler);
|
|
36
|
-
break;
|
|
37
|
-
case HttpMethod.PATCH:
|
|
38
|
-
this.app.patch(path, ...routeHandler);
|
|
39
|
-
break;
|
|
40
|
-
case HttpMethod.OPTIONS:
|
|
41
|
-
this.app.options(path, ...routeHandler);
|
|
42
|
-
break;
|
|
43
|
-
case HttpMethod.CONNECT:
|
|
44
|
-
this.app.on(HttpMethod.CONNECT.toUpperCase(), path, ...routeHandler);
|
|
45
|
-
break;
|
|
46
|
-
case HttpMethod.HEAD:
|
|
47
|
-
this.app.on(HttpMethod.HEAD.toUpperCase(), path, ...routeHandler);
|
|
48
|
-
break;
|
|
49
|
-
case HttpMethod.TRACE:
|
|
50
|
-
this.app.on(HttpMethod.TRACE.toUpperCase(), path, ...routeHandler);
|
|
51
|
-
break;
|
|
52
|
-
default:
|
|
53
|
-
throw new Error('Invalid method');
|
|
43
|
+
const methodHandler = this.methodMap[method];
|
|
44
|
+
if (!methodHandler) {
|
|
45
|
+
throw new Error('Invalid method');
|
|
54
46
|
}
|
|
47
|
+
methodHandler(path, ...routeHandler);
|
|
48
|
+
this.logger.info(`${green('Successfully')} registered ${yellow(method.toUpperCase())} route for PATH: ${green(`/${path}`)}`);
|
|
55
49
|
}
|
|
56
50
|
async start() {
|
|
57
51
|
this.websocketAdapter.buildWebsocket();
|
|
@@ -64,7 +58,7 @@ export class DefaultAdapter extends AsenaAdapter {
|
|
|
64
58
|
const factory = createFactory();
|
|
65
59
|
return _middlewares.map((middleware) => {
|
|
66
60
|
if (middleware.override) {
|
|
67
|
-
return middleware.middlewareService.handle
|
|
61
|
+
return (c, next) => middleware.middlewareService.handle(c, next);
|
|
68
62
|
}
|
|
69
63
|
return factory.createMiddleware(async (context, next) => {
|
|
70
64
|
await middleware.middlewareService.handle(new DefaultContextWrapper(context), next);
|
|
@@ -72,9 +66,7 @@ export class DefaultAdapter extends AsenaAdapter {
|
|
|
72
66
|
});
|
|
73
67
|
}
|
|
74
68
|
prepareHandler(handler) {
|
|
75
|
-
return
|
|
76
|
-
return await handler(new DefaultContextWrapper(context));
|
|
77
|
-
};
|
|
69
|
+
return (c) => handler()(new DefaultContextWrapper(c));
|
|
78
70
|
}
|
|
79
71
|
onError(errorHandler) {
|
|
80
72
|
this.app.onError((error, context) => {
|
|
@@ -89,10 +81,8 @@ export class DefaultAdapter extends AsenaAdapter {
|
|
|
89
81
|
return [];
|
|
90
82
|
}
|
|
91
83
|
const validatorInstance = new Validator();
|
|
92
|
-
return
|
|
93
|
-
|
|
94
|
-
.map((key) => {
|
|
95
|
-
return validatorInstance[key]().bind(validatorInstance);
|
|
84
|
+
return DefaultAdapter.VALIDATOR_METHODS.filter((key) => validatorInstance[key]).map((key) => {
|
|
85
|
+
return validatorInstance[key]();
|
|
96
86
|
});
|
|
97
87
|
}
|
|
98
88
|
normalizePath(path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/defaultAdapter/DefaultAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAgB,IAAI,EAAuD,MAAM,MAAM,CAAC;AAE/F,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAE3B,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAInD,OAAO,EAAE,
|
|
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
|
|
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(
|
|
9
|
-
registerWebSocket(
|
|
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
|
|
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(
|
|
11
|
-
super();
|
|
12
|
-
this.app = app;
|
|
10
|
+
constructor(params) {
|
|
11
|
+
super(params);
|
|
13
12
|
}
|
|
14
|
-
registerWebSocket(
|
|
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
|
-
|
|
19
|
-
this.
|
|
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.
|
|
29
|
+
this.websocket = {
|
|
23
30
|
open: this.createHandler('onOpenInternal'),
|
|
24
31
|
message: this.createHandler('onMessage'),
|
|
25
32
|
drain: this.createHandler('onDrain'),
|
|
@@ -30,23 +37,26 @@ export class DefaultWebsocketAdapter extends AsenaWebsocketAdapter {
|
|
|
30
37
|
};
|
|
31
38
|
}
|
|
32
39
|
buildWebsocket() {
|
|
33
|
-
if (!this.
|
|
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
|
}
|
|
39
46
|
startWebsocket(server) {
|
|
40
47
|
this._server = server;
|
|
41
|
-
|
|
42
|
-
|
|
48
|
+
if (!this.websockets) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
for (const [namespace, websocket] of this.websockets) {
|
|
52
|
+
websocket.socket.server = new AsenaWebSocketServer(server, namespace);
|
|
43
53
|
}
|
|
44
54
|
}
|
|
45
55
|
upgradeWebSocket(websocket, middlewares) {
|
|
46
56
|
const path = websocket.namespace;
|
|
47
57
|
this.app.get(`/${path}`, ...middlewares, async (c, next) => {
|
|
48
58
|
const websocketData = c.get('_websocketData') || {};
|
|
49
|
-
const id =
|
|
59
|
+
const id = bun.randomUUIDv7();
|
|
50
60
|
const data = { values: websocketData, id, path: path };
|
|
51
61
|
const upgradeResult = this._server.upgrade(c.req.raw, { data });
|
|
52
62
|
if (upgradeResult) {
|
|
@@ -57,17 +67,11 @@ export class DefaultWebsocketAdapter extends AsenaWebsocketAdapter {
|
|
|
57
67
|
}
|
|
58
68
|
createHandler(type) {
|
|
59
69
|
return (ws, ...args) => {
|
|
60
|
-
const websocket = this.websockets.
|
|
61
|
-
const path = h.socket.namespace;
|
|
62
|
-
return path === ws.data.path;
|
|
63
|
-
});
|
|
70
|
+
const websocket = this.websockets.get(ws.data.path);
|
|
64
71
|
if (websocket?.socket[type]) {
|
|
65
72
|
(websocket?.socket[type])(new AsenaSocket(ws, websocket.socket), ...args);
|
|
66
73
|
}
|
|
67
74
|
};
|
|
68
75
|
}
|
|
69
|
-
get websocket() {
|
|
70
|
-
return this._websocket;
|
|
71
|
-
}
|
|
72
76
|
}
|
|
73
77
|
//# sourceMappingURL=DefaultWebsocketAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultWebsocketAdapter.js","sourceRoot":"","sources":["../../../../lib/adapter/defaultAdapter/DefaultWebsocketAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAKZ,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGjE,OAAO,KAAK,
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketRegistry.js","sourceRoot":"","sources":["../../../../lib/adapter/types/WebSocketRegistry.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebsocketAdapterParams.js","sourceRoot":"","sources":["../../../../lib/adapter/types/WebsocketAdapterParams.ts"],"names":[],"mappings":""}
|
|
@@ -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"}
|
|
@@ -2,6 +2,9 @@ import type { Class } from '../server/types';
|
|
|
2
2
|
import type { ComponentType, ContainerService } from './types';
|
|
3
3
|
export declare class Container {
|
|
4
4
|
private _services;
|
|
5
|
+
constructor(services?: {
|
|
6
|
+
[key: string]: ContainerService | ContainerService[];
|
|
7
|
+
});
|
|
5
8
|
register(key: string, Class: Class, singleton: boolean): void;
|
|
6
9
|
get<T>(key: string): (T | T[]) | null;
|
|
7
10
|
getStrategy<T>(key: string): T[] | null;
|
|
@@ -2,6 +2,9 @@ import { getMetadata } from 'reflect-metadata/no-conflict';
|
|
|
2
2
|
import { ComponentConstants } from './constants';
|
|
3
3
|
export class Container {
|
|
4
4
|
_services = {};
|
|
5
|
+
constructor(services) {
|
|
6
|
+
this._services = services || {};
|
|
7
|
+
}
|
|
5
8
|
register(key, Class, singleton) {
|
|
6
9
|
if (this._services[key]) {
|
|
7
10
|
if (Array.isArray(this._services[key])) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/ioc/Container.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,OAAO,SAAS;IAEZ,SAAS,GAA6D,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../../../lib/ioc/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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 (
|
|
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,13 +94,12 @@ 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,
|
|
94
100
|
path: lastPath,
|
|
95
101
|
middleware: this._adapter.prepareMiddlewares(middlewares),
|
|
96
|
-
handler: this._adapter.prepareHandler(controller[name]
|
|
102
|
+
handler: this._adapter.prepareHandler(() => (ctx) => controller[name](ctx)),
|
|
97
103
|
staticServe: params.staticServe,
|
|
98
104
|
validator: this._adapter.prepareValidator(params.validator),
|
|
99
105
|
});
|
|
@@ -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":"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,
|
|
1
|
+
{"version":3,"file":"AsenaServer.js","sourceRoot":"","sources":["../../../lib/server/AsenaServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
|
@@ -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"}
|
|
@@ -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.
|
|
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.
|
|
49
|
+
"hono": "^4.6.10",
|
|
50
50
|
"prettier": "^3.3.3",
|
|
51
51
|
"typescript": "^5.6.3",
|
|
52
|
-
"winston": "^3.
|
|
52
|
+
"winston": "^3.17.0"
|
|
53
53
|
},
|
|
54
54
|
"peerDependencies": {
|
|
55
55
|
"hono": "^4.5.9",
|