@asenajs/asena 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/lib/adapter/AsenaAdapter.d.ts +2 -2
- package/dist/lib/adapter/AsenaAdapter.js.map +1 -1
- package/dist/lib/adapter/types/ServeOptions.d.ts +16 -0
- package/dist/lib/ioc/Container.d.ts +25 -0
- package/dist/lib/ioc/Container.js +47 -0
- package/dist/lib/ioc/Container.js.map +1 -1
- package/dist/lib/ioc/CoreContainer.d.ts +5 -3
- package/dist/lib/ioc/CoreContainer.js +9 -3
- package/dist/lib/ioc/CoreContainer.js.map +1 -1
- package/dist/lib/ioc/IocEngine.js +3 -1
- package/dist/lib/ioc/IocEngine.js.map +1 -1
- package/dist/lib/ioc/component/decorators/Inject.js +16 -0
- package/dist/lib/ioc/component/decorators/Inject.js.map +1 -1
- package/dist/lib/ioc/constants/ComponentConstants.d.ts +4 -0
- package/dist/lib/ioc/constants/ComponentConstants.js +5 -0
- package/dist/lib/ioc/constants/ComponentConstants.js.map +1 -1
- package/dist/lib/ioc/types/ICoreServiceNamesType.d.ts +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js +1 -0
- package/dist/lib/ioc/types/ICoreServiceNamesType.js.map +1 -1
- package/dist/lib/ioc/types/InjectableComponent.d.ts +10 -0
- package/dist/lib/ioc/types/decorators/ComponentType.d.ts +2 -1
- package/dist/lib/ioc/types/decorators/ComponentType.js +1 -0
- package/dist/lib/ioc/types/decorators/ComponentType.js.map +1 -1
- package/dist/lib/server/AsenaServer.d.ts +46 -3
- package/dist/lib/server/AsenaServer.js +158 -28
- package/dist/lib/server/AsenaServer.js.map +1 -1
- package/dist/lib/server/AsenaServerFactory.d.ts +38 -3
- package/dist/lib/server/AsenaServerFactory.js +21 -2
- package/dist/lib/server/AsenaServerFactory.js.map +1 -1
- package/dist/lib/server/config/AsenaConfig.d.ts +82 -4
- package/dist/lib/server/config/AsenaConfig.js +39 -1
- package/dist/lib/server/config/AsenaConfig.js.map +1 -1
- package/dist/lib/server/decorators/components/MessageController.d.ts +49 -0
- package/dist/lib/server/decorators/components/MessageController.js +62 -0
- package/dist/lib/server/decorators/components/MessageController.js.map +1 -0
- package/dist/lib/server/decorators/components/index.d.ts +1 -0
- package/dist/lib/server/decorators/components/index.js +1 -0
- package/dist/lib/server/decorators/components/index.js.map +1 -1
- package/dist/lib/server/event/EventDispatchService.d.ts +3 -7
- package/dist/lib/server/event/EventDispatchService.js +9 -40
- package/dist/lib/server/event/EventDispatchService.js.map +1 -1
- package/dist/lib/server/event/PatternHandlerIndex.d.ts +53 -0
- package/dist/lib/server/event/PatternHandlerIndex.js +100 -0
- package/dist/lib/server/event/PatternHandlerIndex.js.map +1 -0
- package/dist/lib/server/event/decorators/On.d.ts +4 -0
- package/dist/lib/server/event/decorators/On.js +6 -0
- package/dist/lib/server/event/decorators/On.js.map +1 -1
- package/dist/lib/server/event/index.d.ts +1 -0
- package/dist/lib/server/event/index.js +2 -0
- package/dist/lib/server/event/index.js.map +1 -1
- package/dist/lib/server/event/types.d.ts +12 -0
- package/dist/lib/server/health/HealthServer.d.ts +26 -0
- package/dist/lib/server/health/HealthServer.js +63 -0
- package/dist/lib/server/health/HealthServer.js.map +1 -0
- package/dist/lib/server/health/index.d.ts +1 -0
- package/dist/lib/server/health/index.js +2 -0
- package/dist/lib/server/health/index.js.map +1 -0
- package/dist/lib/server/messaging/Ulak.d.ts +156 -0
- package/dist/lib/server/messaging/Ulak.js +174 -0
- package/dist/lib/server/messaging/Ulak.js.map +1 -1
- package/dist/lib/server/messaging/types.d.ts +5 -1
- package/dist/lib/server/messaging/types.js +5 -0
- package/dist/lib/server/messaging/types.js.map +1 -1
- package/dist/lib/server/microservice/InMemoryTransport.d.ts +45 -0
- package/dist/lib/server/microservice/InMemoryTransport.js +124 -0
- package/dist/lib/server/microservice/InMemoryTransport.js.map +1 -0
- package/dist/lib/server/microservice/MicroserviceTransport.d.ts +132 -0
- package/dist/lib/server/microservice/MicroserviceTransport.js +2 -0
- package/dist/lib/server/microservice/MicroserviceTransport.js.map +1 -0
- package/dist/lib/server/microservice/decorators/EventPattern.d.ts +38 -0
- package/dist/lib/server/microservice/decorators/EventPattern.js +59 -0
- package/dist/lib/server/microservice/decorators/EventPattern.js.map +1 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.d.ts +31 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.js +55 -0
- package/dist/lib/server/microservice/decorators/MessagePattern.js.map +1 -0
- package/dist/lib/server/microservice/decorators/index.d.ts +2 -0
- package/dist/lib/server/microservice/decorators/index.js +3 -0
- package/dist/lib/server/microservice/decorators/index.js.map +1 -0
- package/dist/lib/server/microservice/index.d.ts +5 -0
- package/dist/lib/server/microservice/index.js +11 -0
- package/dist/lib/server/microservice/index.js.map +1 -0
- package/dist/lib/server/microservice/interceptorChain.d.ts +20 -0
- package/dist/lib/server/microservice/interceptorChain.js +39 -0
- package/dist/lib/server/microservice/interceptorChain.js.map +1 -0
- package/dist/lib/server/microservice/types.d.ts +142 -0
- package/dist/lib/server/microservice/types.js +5 -0
- package/dist/lib/server/microservice/types.js.map +1 -0
- package/dist/lib/server/src/services/PrepareEventService.d.ts +4 -1
- package/dist/lib/server/src/services/PrepareEventService.js +10 -3
- package/dist/lib/server/src/services/PrepareEventService.js.map +1 -1
- package/dist/lib/server/src/services/PrepareMicroserviceService.d.ts +66 -0
- package/dist/lib/server/src/services/PrepareMicroserviceService.js +193 -0
- package/dist/lib/server/src/services/PrepareMicroserviceService.js.map +1 -0
- package/dist/lib/test/factory/deepMock.d.ts +25 -0
- package/dist/lib/test/factory/deepMock.js +105 -0
- package/dist/lib/test/factory/deepMock.js.map +1 -0
- package/dist/lib/test/factory/ulakStub.d.ts +44 -0
- package/dist/lib/test/factory/ulakStub.js +40 -0
- package/dist/lib/test/factory/ulakStub.js.map +1 -0
- package/dist/lib/test/harness/createTestApp.d.ts +33 -0
- package/dist/lib/test/harness/createTestApp.js +105 -0
- package/dist/lib/test/harness/createTestApp.js.map +1 -0
- package/dist/lib/test/harness/createWebTest.d.ts +28 -0
- package/dist/lib/test/harness/createWebTest.js +127 -0
- package/dist/lib/test/harness/createWebTest.js.map +1 -0
- package/dist/lib/test/harness/silentLogger.d.ts +27 -0
- package/dist/lib/test/harness/silentLogger.js +54 -0
- package/dist/lib/test/harness/silentLogger.js.map +1 -0
- package/dist/lib/test/harness/types.d.ts +147 -0
- package/dist/lib/test/harness/types.js +2 -0
- package/dist/lib/test/harness/types.js.map +1 -0
- package/dist/lib/test/http/TestHttpCall.d.ts +78 -0
- package/dist/lib/test/http/TestHttpCall.js +149 -0
- package/dist/lib/test/http/TestHttpCall.js.map +1 -0
- package/dist/lib/test/http/TestHttpResponse.d.ts +46 -0
- package/dist/lib/test/http/TestHttpResponse.js +70 -0
- package/dist/lib/test/http/TestHttpResponse.js.map +1 -0
- package/dist/lib/test/index.d.ts +9 -0
- package/dist/lib/test/index.js +8 -0
- package/dist/lib/test/index.js.map +1 -1
- package/dist/lib/test/metadata/discovery.d.ts +21 -0
- package/dist/lib/test/metadata/discovery.js +37 -8
- package/dist/lib/test/metadata/discovery.js.map +1 -1
- package/dist/lib/test/mockComponent.d.ts +25 -0
- package/dist/lib/test/mockComponent.js +39 -6
- package/dist/lib/test/mockComponent.js.map +1 -1
- package/dist/lib/test/types.d.ts +13 -0
- package/package.json +11 -7
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { type CoreContainer, type ICoreService } from '../ioc';
|
|
2
|
-
import type { AsenaAdapter } from '../adapter';
|
|
2
|
+
import type { AsenaAdapter, AsenaStartOptions } from '../adapter';
|
|
3
|
+
import * as bun from 'bun';
|
|
4
|
+
import type { HealthOptions } from './AsenaServerFactory';
|
|
3
5
|
/**
|
|
4
6
|
* @description AsenaServer - Main server class for Asena framework
|
|
5
7
|
* Now a core service managed by IoC container with field injection
|
|
@@ -7,8 +9,9 @@ import type { AsenaAdapter } from '../adapter';
|
|
|
7
9
|
export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements ICoreService {
|
|
8
10
|
serviceName: string;
|
|
9
11
|
private _coreContainer;
|
|
10
|
-
private _adapter
|
|
12
|
+
private _adapter?;
|
|
11
13
|
private _logger;
|
|
14
|
+
private _ulak;
|
|
12
15
|
private prepareMiddleware;
|
|
13
16
|
private prepareConfigService;
|
|
14
17
|
private prepareWebsocketService;
|
|
@@ -17,10 +20,16 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
|
|
|
17
20
|
private prepareEventService;
|
|
18
21
|
private prepareScheduleService;
|
|
19
22
|
private prepareFrontendControllerService;
|
|
23
|
+
private prepareMicroserviceService;
|
|
20
24
|
private cronRunner;
|
|
21
25
|
private _port;
|
|
22
26
|
private _gc;
|
|
23
27
|
private controllers;
|
|
28
|
+
private microserviceTransports;
|
|
29
|
+
private messagingInterceptors;
|
|
30
|
+
private _health?;
|
|
31
|
+
private healthServer?;
|
|
32
|
+
private _httpServer?;
|
|
24
33
|
/**
|
|
25
34
|
* @description Lifecycle hook - called after dependencies are injected
|
|
26
35
|
* @returns {void}
|
|
@@ -29,9 +38,10 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
|
|
|
29
38
|
/**
|
|
30
39
|
* @description Start the server
|
|
31
40
|
* Main entry point after factory creation
|
|
41
|
+
* @param {AsenaStartOptions} options - Optional transport overrides forwarded to the adapter
|
|
32
42
|
* @returns {Promise<void>}
|
|
33
43
|
*/
|
|
34
|
-
start(): Promise<void>;
|
|
44
|
+
start(options?: AsenaStartOptions): Promise<void>;
|
|
35
45
|
/**
|
|
36
46
|
* @description Stop the server and release resources
|
|
37
47
|
* @param {boolean} closeActiveConnections - Whether to close active connections immediately
|
|
@@ -45,11 +55,37 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
|
|
|
45
55
|
* @returns {this}
|
|
46
56
|
*/
|
|
47
57
|
port(port: number): this;
|
|
58
|
+
/**
|
|
59
|
+
* @description Configure the optional health endpoint (mainly for headless/K8s probes)
|
|
60
|
+
* Builder pattern for API compatibility
|
|
61
|
+
* @param {HealthOptions} options - Health endpoint options
|
|
62
|
+
* @returns {this}
|
|
63
|
+
*/
|
|
64
|
+
health(options: HealthOptions): this;
|
|
65
|
+
/**
|
|
66
|
+
* @description Lazily resolve the HTTP adapter if one was registered.
|
|
67
|
+
* Headless mode (no adapter) is valid - all adapter-dependent steps are skipped.
|
|
68
|
+
* @returns {Promise<void>}
|
|
69
|
+
*/
|
|
70
|
+
private resolveAdapter;
|
|
71
|
+
/**
|
|
72
|
+
* @description Warn about HTTP-only components that cannot work without an adapter
|
|
73
|
+
* @returns {void}
|
|
74
|
+
*/
|
|
75
|
+
private warnAdapterlessComponents;
|
|
48
76
|
/**
|
|
49
77
|
* @description Get current CoreContainer instance
|
|
50
78
|
* @returns {CoreContainer}
|
|
51
79
|
*/
|
|
52
80
|
get coreContainer(): CoreContainer;
|
|
81
|
+
/**
|
|
82
|
+
* @description The Bun server the adapter is listening on, once start() has run.
|
|
83
|
+
*
|
|
84
|
+
* Undefined in headless mode and before start(). Read `httpServer.port` to learn the
|
|
85
|
+
* actually bound port - the only way to find it out when starting on port 0.
|
|
86
|
+
* @returns {bun.Server | undefined}
|
|
87
|
+
*/
|
|
88
|
+
get httpServer(): bun.Server<any> | undefined;
|
|
53
89
|
/**
|
|
54
90
|
* @description Initialize and register all controllers
|
|
55
91
|
* @returns {Promise<void>}
|
|
@@ -119,4 +155,11 @@ export declare class AsenaServer<A extends AsenaAdapter<any, any>> implements IC
|
|
|
119
155
|
* @returns {Promise<void>}
|
|
120
156
|
*/
|
|
121
157
|
private prepareConfigs;
|
|
158
|
+
/**
|
|
159
|
+
* @description Prepare microservice message handlers and transports
|
|
160
|
+
* Runs before the HTTP adapter starts so handlers are live before HTTP goes up.
|
|
161
|
+
* Also validates that @MessageController components have a configured transport (fail fast).
|
|
162
|
+
* @returns {Promise<void>}
|
|
163
|
+
*/
|
|
164
|
+
private prepareMicroservices;
|
|
122
165
|
}
|
|
@@ -14,6 +14,8 @@ import * as bun from 'bun';
|
|
|
14
14
|
import { blue, green, yellow } from '../logger';
|
|
15
15
|
import { getOwnTypedMetadata, getTypedMetadata } from '../utils/typedMetadata';
|
|
16
16
|
import { Inject, PostConstruct } from '../ioc/component';
|
|
17
|
+
import { normalizeTransportConfig } from './config/AsenaConfig';
|
|
18
|
+
import { HealthServer } from './health/HealthServer';
|
|
17
19
|
/**
|
|
18
20
|
* @description AsenaServer - Main server class for Asena framework
|
|
19
21
|
* Now a core service managed by IoC container with field injection
|
|
@@ -21,8 +23,11 @@ import { Inject, PostConstruct } from '../ioc/component';
|
|
|
21
23
|
let AsenaServer = class AsenaServer {
|
|
22
24
|
serviceName = 'AsenaServer';
|
|
23
25
|
_coreContainer;
|
|
26
|
+
// NOT injected eagerly: resolved lazily in start() via container.has()
|
|
27
|
+
// so the server can boot in headless mode without an HTTP adapter
|
|
24
28
|
_adapter;
|
|
25
29
|
_logger;
|
|
30
|
+
_ulak;
|
|
26
31
|
prepareMiddleware;
|
|
27
32
|
prepareConfigService;
|
|
28
33
|
prepareWebsocketService;
|
|
@@ -31,11 +36,21 @@ let AsenaServer = class AsenaServer {
|
|
|
31
36
|
prepareEventService;
|
|
32
37
|
prepareScheduleService;
|
|
33
38
|
prepareFrontendControllerService;
|
|
39
|
+
prepareMicroserviceService;
|
|
34
40
|
cronRunner;
|
|
35
41
|
// Instance state
|
|
36
42
|
_port;
|
|
37
43
|
_gc = false;
|
|
38
44
|
controllers = [];
|
|
45
|
+
// Microservice transports collected from the transport() config hook
|
|
46
|
+
microserviceTransports = new Map();
|
|
47
|
+
messagingInterceptors = [];
|
|
48
|
+
// Optional health endpoint (mainly for headless deployments / K8s probes)
|
|
49
|
+
_health;
|
|
50
|
+
healthServer;
|
|
51
|
+
// The Bun server returned by the adapter - exposes the actually bound port, which is
|
|
52
|
+
// what a caller needs when starting on port 0 or on a unix socket
|
|
53
|
+
_httpServer;
|
|
39
54
|
/**
|
|
40
55
|
* @description Lifecycle hook - called after dependencies are injected
|
|
41
56
|
* @returns {void}
|
|
@@ -46,25 +61,42 @@ let AsenaServer = class AsenaServer {
|
|
|
46
61
|
/**
|
|
47
62
|
* @description Start the server
|
|
48
63
|
* Main entry point after factory creation
|
|
64
|
+
* @param {AsenaStartOptions} options - Optional transport overrides forwarded to the adapter
|
|
49
65
|
* @returns {Promise<void>}
|
|
50
66
|
*/
|
|
51
|
-
async start() {
|
|
52
|
-
this.
|
|
53
|
-
this._adapter
|
|
67
|
+
async start(options) {
|
|
68
|
+
await this.resolveAdapter();
|
|
69
|
+
if (this._adapter) {
|
|
70
|
+
this._logger.info(`Adapter: ${green(this._adapter.name)} implemented`);
|
|
71
|
+
this._adapter.setPort(this._port);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this._logger.info('Headless mode: no HTTP adapter configured');
|
|
75
|
+
this.warnAdapterlessComponents();
|
|
76
|
+
}
|
|
54
77
|
this._logger.info('All components registered and ready to use');
|
|
55
78
|
// Phase 7: Application setup
|
|
56
79
|
this._coreContainer.setPhase(CoreBootstrapPhase.APPLICATION_SETUP);
|
|
57
80
|
await this.prepareConfigs();
|
|
81
|
+
await this.prepareMicroservices();
|
|
58
82
|
await this.prepareEventService.prepare();
|
|
59
83
|
await this.prepareScheduleService.prepare();
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
84
|
+
if (this._adapter) {
|
|
85
|
+
await this.initializeControllers();
|
|
86
|
+
await this.prepareFrontendControllers();
|
|
87
|
+
await this.prepareWebSocket();
|
|
88
|
+
}
|
|
63
89
|
// Phase 8: Server ready
|
|
64
90
|
this._coreContainer.setPhase(CoreBootstrapPhase.SERVER_READY);
|
|
65
|
-
|
|
91
|
+
if (this._adapter) {
|
|
92
|
+
this._httpServer = await this._adapter.start(options);
|
|
93
|
+
}
|
|
66
94
|
// Start scheduled jobs after server is ready
|
|
67
95
|
this.cronRunner.startAll();
|
|
96
|
+
if (this._health) {
|
|
97
|
+
this.healthServer = new HealthServer(this._health, this._ulak, this._logger);
|
|
98
|
+
this.healthServer.start();
|
|
99
|
+
}
|
|
68
100
|
if (this._gc) {
|
|
69
101
|
bun.gc(true);
|
|
70
102
|
}
|
|
@@ -76,7 +108,11 @@ let AsenaServer = class AsenaServer {
|
|
|
76
108
|
*/
|
|
77
109
|
async stop(closeActiveConnections = true) {
|
|
78
110
|
this.cronRunner.stopAll();
|
|
79
|
-
|
|
111
|
+
this.healthServer?.stop();
|
|
112
|
+
// Adapter first: in-flight HTTP handlers may still call ulak.send(), so
|
|
113
|
+
// transports must outlive the HTTP surface that uses them
|
|
114
|
+
await this._adapter?.stop(closeActiveConnections);
|
|
115
|
+
await this.prepareMicroserviceService.destroy();
|
|
80
116
|
}
|
|
81
117
|
/**
|
|
82
118
|
* @description Configure server port
|
|
@@ -88,6 +124,51 @@ let AsenaServer = class AsenaServer {
|
|
|
88
124
|
this._port = port;
|
|
89
125
|
return this;
|
|
90
126
|
}
|
|
127
|
+
/**
|
|
128
|
+
* @description Configure the optional health endpoint (mainly for headless/K8s probes)
|
|
129
|
+
* Builder pattern for API compatibility
|
|
130
|
+
* @param {HealthOptions} options - Health endpoint options
|
|
131
|
+
* @returns {this}
|
|
132
|
+
*/
|
|
133
|
+
health(options) {
|
|
134
|
+
this._health = options;
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* @description Lazily resolve the HTTP adapter if one was registered.
|
|
139
|
+
* Headless mode (no adapter) is valid - all adapter-dependent steps are skipped.
|
|
140
|
+
* @returns {Promise<void>}
|
|
141
|
+
*/
|
|
142
|
+
async resolveAdapter() {
|
|
143
|
+
if (this._adapter) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
if (this._coreContainer.container.has(ICoreServiceNames.ASENA_ADAPTER)) {
|
|
147
|
+
this._adapter = await this._coreContainer.resolve(ICoreServiceNames.ASENA_ADAPTER);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* @description Warn about HTTP-only components that cannot work without an adapter
|
|
152
|
+
* @returns {void}
|
|
153
|
+
*/
|
|
154
|
+
warnAdapterlessComponents() {
|
|
155
|
+
const httpOnlyTypes = [ComponentType.CONTROLLER, ComponentType.WEBSOCKET, ComponentType.FRONTEND_CONTROLLER];
|
|
156
|
+
const services = this._coreContainer.container.services;
|
|
157
|
+
for (const type of httpOnlyTypes) {
|
|
158
|
+
const names = [];
|
|
159
|
+
for (const value of Object.values(services)) {
|
|
160
|
+
const entries = Array.isArray(value) ? value : [value];
|
|
161
|
+
for (const entry of entries) {
|
|
162
|
+
if (entry?.Class && getTypedMetadata(type, entry.Class)) {
|
|
163
|
+
names.push(entry.Class.name);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
if (names.length) {
|
|
168
|
+
this._logger.warn(`Headless mode: ${type} component(s) [${names.join(', ')}] require an HTTP adapter and will be ignored`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
91
172
|
/**
|
|
92
173
|
* @description Get current CoreContainer instance
|
|
93
174
|
* @returns {CoreContainer}
|
|
@@ -95,6 +176,16 @@ let AsenaServer = class AsenaServer {
|
|
|
95
176
|
get coreContainer() {
|
|
96
177
|
return this._coreContainer;
|
|
97
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* @description The Bun server the adapter is listening on, once start() has run.
|
|
181
|
+
*
|
|
182
|
+
* Undefined in headless mode and before start(). Read `httpServer.port` to learn the
|
|
183
|
+
* actually bound port - the only way to find it out when starting on port 0.
|
|
184
|
+
* @returns {bun.Server | undefined}
|
|
185
|
+
*/
|
|
186
|
+
get httpServer() {
|
|
187
|
+
return this._httpServer;
|
|
188
|
+
}
|
|
98
189
|
/**
|
|
99
190
|
* @description Initialize and register all controllers
|
|
100
191
|
* @returns {Promise<void>}
|
|
@@ -285,49 +376,84 @@ let AsenaServer = class AsenaServer {
|
|
|
285
376
|
return;
|
|
286
377
|
}
|
|
287
378
|
if (typeof configInstance.serveOptions === 'function') {
|
|
288
|
-
|
|
379
|
+
if (this._adapter) {
|
|
380
|
+
await this._adapter.serveOptions(configInstance.serveOptions.bind(configInstance));
|
|
381
|
+
}
|
|
382
|
+
else {
|
|
383
|
+
this._logger.warn('Headless mode: serveOptions() ignored (no HTTP adapter)');
|
|
384
|
+
}
|
|
289
385
|
}
|
|
290
386
|
if (typeof configInstance.onError === 'function') {
|
|
291
|
-
|
|
387
|
+
if (this._adapter) {
|
|
388
|
+
await this._adapter.onError(configInstance.onError.bind(configInstance));
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
this._logger.warn('Headless mode: onError() ignored (no HTTP adapter)');
|
|
392
|
+
}
|
|
292
393
|
}
|
|
293
394
|
// Pattern-based global middleware registration
|
|
294
395
|
if (typeof configInstance.globalMiddlewares === 'function') {
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
396
|
+
if (this._adapter) {
|
|
397
|
+
const middlewareEntries = await configInstance.globalMiddlewares();
|
|
398
|
+
for (const entry of middlewareEntries) {
|
|
399
|
+
// Normalize entry to config format (handles backward compatibility)
|
|
400
|
+
const config = this.normalizeMiddlewareEntry(entry);
|
|
401
|
+
// Prepare middleware instances
|
|
402
|
+
const preparedMiddlewares = await this.prepareMiddlewares([config.middleware]);
|
|
403
|
+
// Register with adapter (pass route config)
|
|
404
|
+
for (const middleware of preparedMiddlewares) {
|
|
405
|
+
await this._adapter.use(middleware, config.routes);
|
|
406
|
+
}
|
|
304
407
|
}
|
|
305
408
|
}
|
|
409
|
+
else {
|
|
410
|
+
this._logger.warn('Headless mode: globalMiddlewares() ignored (no HTTP adapter)');
|
|
411
|
+
}
|
|
306
412
|
}
|
|
307
|
-
// WebSocket
|
|
413
|
+
// Transport configuration (WebSocket + microservice)
|
|
308
414
|
if (typeof configInstance.transport === 'function') {
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
if (
|
|
312
|
-
|
|
415
|
+
const result = await configInstance.transport();
|
|
416
|
+
const normalized = await normalizeTransportConfig(result);
|
|
417
|
+
if (normalized.websocket) {
|
|
418
|
+
if (this._adapter) {
|
|
419
|
+
const wsAdapter = this._adapter.getWebsocketAdapter();
|
|
420
|
+
if (wsAdapter) {
|
|
421
|
+
wsAdapter.transport = normalized.websocket;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
else {
|
|
425
|
+
this._logger.warn('Headless mode: websocket transport ignored (no HTTP adapter)');
|
|
426
|
+
}
|
|
313
427
|
}
|
|
428
|
+
// Microservice part works in BOTH modes - consumed by prepareMicroservices()
|
|
429
|
+
this.microserviceTransports = normalized.microservices;
|
|
430
|
+
this.messagingInterceptors = normalized.interceptors;
|
|
314
431
|
}
|
|
315
432
|
const name = getOwnTypedMetadata(ComponentConstants.NameKey, configInstance.constructor);
|
|
316
433
|
this._logger.info(`Config ${yellow(name)} applied`);
|
|
317
434
|
}
|
|
435
|
+
/**
|
|
436
|
+
* @description Prepare microservice message handlers and transports
|
|
437
|
+
* Runs before the HTTP adapter starts so handlers are live before HTTP goes up.
|
|
438
|
+
* Also validates that @MessageController components have a configured transport (fail fast).
|
|
439
|
+
* @returns {Promise<void>}
|
|
440
|
+
*/
|
|
441
|
+
async prepareMicroservices() {
|
|
442
|
+
await this.prepareMicroserviceService.prepare(this.microserviceTransports, this.messagingInterceptors);
|
|
443
|
+
}
|
|
318
444
|
};
|
|
319
445
|
__decorate([
|
|
320
446
|
Inject(ICoreServiceNames.CORE_CONTAINER),
|
|
321
447
|
__metadata("design:type", Function)
|
|
322
448
|
], AsenaServer.prototype, "_coreContainer", void 0);
|
|
323
|
-
__decorate([
|
|
324
|
-
Inject(ICoreServiceNames.ASENA_ADAPTER),
|
|
325
|
-
__metadata("design:type", Object)
|
|
326
|
-
], AsenaServer.prototype, "_adapter", void 0);
|
|
327
449
|
__decorate([
|
|
328
450
|
Inject(ICoreServiceNames.SERVER_LOGGER),
|
|
329
451
|
__metadata("design:type", Object)
|
|
330
452
|
], AsenaServer.prototype, "_logger", void 0);
|
|
453
|
+
__decorate([
|
|
454
|
+
Inject(ICoreServiceNames.__ULAK__),
|
|
455
|
+
__metadata("design:type", Function)
|
|
456
|
+
], AsenaServer.prototype, "_ulak", void 0);
|
|
331
457
|
__decorate([
|
|
332
458
|
Inject(ICoreServiceNames.PREPARE_MIDDLEWARE_SERVICE),
|
|
333
459
|
__metadata("design:type", Function)
|
|
@@ -360,6 +486,10 @@ __decorate([
|
|
|
360
486
|
Inject(ICoreServiceNames.PREPARE_FRONTEND_CONTROLLER_SERVICE),
|
|
361
487
|
__metadata("design:type", Function)
|
|
362
488
|
], AsenaServer.prototype, "prepareFrontendControllerService", void 0);
|
|
489
|
+
__decorate([
|
|
490
|
+
Inject(ICoreServiceNames.PREPARE_MICROSERVICE_SERVICE),
|
|
491
|
+
__metadata("design:type", Function)
|
|
492
|
+
], AsenaServer.prototype, "prepareMicroserviceService", void 0);
|
|
363
493
|
__decorate([
|
|
364
494
|
Inject(ICoreServiceNames.CRON_RUNNER),
|
|
365
495
|
__metadata("design:type", Function)
|
|
@@ -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":"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"}
|
|
@@ -2,15 +2,50 @@ import type { AsenaServer } from './AsenaServer';
|
|
|
2
2
|
import type { AsenaAdapter } from '../adapter';
|
|
3
3
|
import type { ServerLogger } from '../logger';
|
|
4
4
|
import type { Class } from './types';
|
|
5
|
+
/**
|
|
6
|
+
* @description Health endpoint options for headless/hybrid deployments
|
|
7
|
+
*/
|
|
8
|
+
export interface HealthOptions {
|
|
9
|
+
/**
|
|
10
|
+
* Port for the health endpoint mini server
|
|
11
|
+
*/
|
|
12
|
+
port: number;
|
|
13
|
+
/**
|
|
14
|
+
* Endpoint path
|
|
15
|
+
* @default '/healthz'
|
|
16
|
+
*/
|
|
17
|
+
path?: string;
|
|
18
|
+
}
|
|
5
19
|
/**
|
|
6
20
|
* @description Configuration options for AsenaServer creation
|
|
21
|
+
*
|
|
22
|
+
* `adapter` is required unless `headless: true` is set. HEADLESS mode opens
|
|
23
|
+
* no HTTP server, but microservice transports, events, schedules and configs
|
|
24
|
+
* still run - useful for internal services driven purely by microservice
|
|
25
|
+
* messages.
|
|
7
26
|
*/
|
|
8
|
-
export interface AsenaServerOptions<A extends AsenaAdapter<any, any>> {
|
|
9
|
-
adapter
|
|
27
|
+
export interface AsenaServerOptions<A extends AsenaAdapter<any, any> = AsenaAdapter<any, any>> {
|
|
28
|
+
adapter?: A;
|
|
29
|
+
/**
|
|
30
|
+
* Explicit opt-in for booting without an HTTP adapter. Required when
|
|
31
|
+
* `adapter` is omitted, so a wiring bug that yields an undefined adapter
|
|
32
|
+
* fails fast instead of silently starting an HTTP-less application.
|
|
33
|
+
*/
|
|
34
|
+
headless?: boolean;
|
|
10
35
|
logger: ServerLogger;
|
|
11
36
|
port?: number;
|
|
12
37
|
components?: Class[];
|
|
13
38
|
gc?: boolean;
|
|
39
|
+
health?: HealthOptions;
|
|
40
|
+
/**
|
|
41
|
+
* Replace registered components with pre-created test doubles, keyed by service name
|
|
42
|
+
* (Spring's `@MockBean`).
|
|
43
|
+
*
|
|
44
|
+
* Seeded before user components are registered, so the real class is never constructed
|
|
45
|
+
* and every dependent captures the double. Core services cannot be overridden - they
|
|
46
|
+
* have already resolved their dependencies during bootstrap phases 1-5.
|
|
47
|
+
*/
|
|
48
|
+
overrides?: Record<string, object>;
|
|
14
49
|
}
|
|
15
50
|
/**
|
|
16
51
|
* @description Factory for creating AsenaServer instances
|
|
@@ -22,5 +57,5 @@ export declare class AsenaServerFactory {
|
|
|
22
57
|
* @param {AsenaServerOptions<A>} options - Server configuration options
|
|
23
58
|
* @returns {Promise<AsenaServer<A>>} Fully configured AsenaServer instance
|
|
24
59
|
*/
|
|
25
|
-
static create<A extends AsenaAdapter<any, any>>(options: AsenaServerOptions<A>): Promise<AsenaServer<A>>;
|
|
60
|
+
static create<A extends AsenaAdapter<any, any> = AsenaAdapter<any, any>>(options: AsenaServerOptions<A>): Promise<AsenaServer<A>>;
|
|
26
61
|
}
|
|
@@ -13,7 +13,11 @@ export class AsenaServerFactory {
|
|
|
13
13
|
* @returns {Promise<AsenaServer<A>>} Fully configured AsenaServer instance
|
|
14
14
|
*/
|
|
15
15
|
static async create(options) {
|
|
16
|
-
const { adapter, logger, port, components, gc } = options;
|
|
16
|
+
const { adapter, logger, port, components, gc, health, overrides } = options;
|
|
17
|
+
if (!adapter && !options.headless) {
|
|
18
|
+
throw new Error("AsenaServerFactory.create: no 'adapter' provided - pass an HTTP adapter, " +
|
|
19
|
+
"or set 'headless: true' to intentionally start without one");
|
|
20
|
+
}
|
|
17
21
|
logger.info(`
|
|
18
22
|
___ _____ ______ _ __ ___
|
|
19
23
|
/ | / ___/ / ____// | / // |
|
|
@@ -36,6 +40,18 @@ export class AsenaServerFactory {
|
|
|
36
40
|
// Phase 6: Register user components
|
|
37
41
|
const iocEngine = await coreContainer.resolve(ICoreServiceNames.IOC_ENGINE);
|
|
38
42
|
iocEngine.setConfig(config);
|
|
43
|
+
// Seed overrides before any user component is registered: Container builds injection
|
|
44
|
+
// closures eagerly, so a double added later would be missed by existing dependents
|
|
45
|
+
if (overrides) {
|
|
46
|
+
const coreServiceNames = new Set(Object.values(ICoreServiceNames));
|
|
47
|
+
for (const [name, instance] of Object.entries(overrides)) {
|
|
48
|
+
if (coreServiceNames.has(name)) {
|
|
49
|
+
throw new Error(`Cannot override core service '${name}' - core services are wired during bootstrap ` +
|
|
50
|
+
'phases 1-5 and have already captured their dependencies by this point.');
|
|
51
|
+
}
|
|
52
|
+
coreContainer.container.overrideInstance(name, instance);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
39
55
|
if (components?.length) {
|
|
40
56
|
const injectableComponents = components.map((comp) => {
|
|
41
57
|
const face = getTypedMetadata(ComponentConstants.InterfaceKey, comp);
|
|
@@ -56,8 +72,11 @@ export class AsenaServerFactory {
|
|
|
56
72
|
// Resolve AsenaServer (with all dependencies injected)
|
|
57
73
|
const server = await coreContainer.resolve(ICoreServiceNames.ASENA_SERVER);
|
|
58
74
|
// Configure server
|
|
59
|
-
|
|
75
|
+
// Explicit !== undefined: port 0 is meaningful (let Bun pick a free ephemeral port)
|
|
76
|
+
if (port !== undefined)
|
|
60
77
|
server.port(port);
|
|
78
|
+
if (health)
|
|
79
|
+
server.health(health);
|
|
61
80
|
if (gc !== undefined)
|
|
62
81
|
server._gc = gc;
|
|
63
82
|
return server;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AsenaServerFactory.js","sourceRoot":"","sources":["../../../lib/server/AsenaServerFactory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAK9E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"AsenaServerFactory.js","sourceRoot":"","sources":["../../../lib/server/AsenaServerFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,57 @@
|
|
|
1
1
|
import type { AsenaContext, AsenaServeOptions } from '../../adapter';
|
|
2
2
|
import type { WebSocketTransport } from '../web/websocket';
|
|
3
3
|
import type { MiddlewareClass } from '../web/middleware';
|
|
4
|
+
import type { MessagingInterceptor } from '../microservice/types';
|
|
5
|
+
import type { MicroserviceTransport } from '../microservice/MicroserviceTransport';
|
|
6
|
+
/**
|
|
7
|
+
* Object form of the transport() hook - configures WebSocket and microservice
|
|
8
|
+
* transports separately (all fields optional)
|
|
9
|
+
*/
|
|
10
|
+
export interface AsenaTransportConfig {
|
|
11
|
+
/**
|
|
12
|
+
* WebSocket transport for cross-pod messaging (same as the bare return form)
|
|
13
|
+
*/
|
|
14
|
+
websocket?: WebSocketTransport | Promise<WebSocketTransport>;
|
|
15
|
+
/**
|
|
16
|
+
* Microservice transport(s). A single transport is registered under the
|
|
17
|
+
* name 'default'; a named map allows multiple brokers in one project
|
|
18
|
+
* (e.g. part on Redis, part on NATS).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* microservice: new RedisMicroserviceTransport({ ... })
|
|
22
|
+
* @example
|
|
23
|
+
* microservice: { default: redisTransport, analytics: natsTransport }
|
|
24
|
+
*/
|
|
25
|
+
microservice?: MicroserviceTransport | Record<string, MicroserviceTransport> | Promise<MicroserviceTransport | Record<string, MicroserviceTransport>>;
|
|
26
|
+
/**
|
|
27
|
+
* Messaging interceptors applied to all microservice transports
|
|
28
|
+
* (e.g. OpenTelemetry trace propagation)
|
|
29
|
+
*/
|
|
30
|
+
interceptors?: MessagingInterceptor[];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Normalized result of the transport() hook
|
|
34
|
+
*/
|
|
35
|
+
export interface NormalizedTransportConfig {
|
|
36
|
+
websocket?: WebSocketTransport;
|
|
37
|
+
microservices: Map<string, MicroserviceTransport>;
|
|
38
|
+
interceptors: MessagingInterceptor[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Normalize the transport() hook result into a single shape.
|
|
42
|
+
*
|
|
43
|
+
* - A bare WebSocketTransport (has a publish function) is the legacy form → { websocket }
|
|
44
|
+
* - An object form is discriminated per field; a single MicroserviceTransport
|
|
45
|
+
* (has a send function) becomes the 'default' named transport
|
|
46
|
+
* - An object with none of the known fields throws (catches accidentally
|
|
47
|
+
* returning a bare MicroserviceTransport, which would otherwise be a silent no-op)
|
|
48
|
+
*
|
|
49
|
+
* CAVEAT: the legacy detection is duck-typed on `publish`. A custom
|
|
50
|
+
* MicroserviceTransport that also defines a `publish` method would be
|
|
51
|
+
* mistaken for a bare WebSocketTransport when returned bare - such
|
|
52
|
+
* transports must use the explicit `{ microservice: ... }` object form.
|
|
53
|
+
*/
|
|
54
|
+
export declare function normalizeTransportConfig(result: WebSocketTransport | AsenaTransportConfig): Promise<NormalizedTransportConfig>;
|
|
4
55
|
/**
|
|
5
56
|
* Route configuration for global middleware
|
|
6
57
|
*/
|
|
@@ -114,18 +165,45 @@ export interface AsenaConfig<C extends AsenaContext<any, any> = AsenaContext<any
|
|
|
114
165
|
*/
|
|
115
166
|
globalMiddlewares?(): Promise<GlobalMiddlewareEntry[]> | GlobalMiddlewareEntry[];
|
|
116
167
|
/**
|
|
117
|
-
*
|
|
168
|
+
* Transport configuration for cross-pod WebSocket messaging and
|
|
169
|
+
* microservice messaging.
|
|
118
170
|
*
|
|
119
|
-
*
|
|
120
|
-
*
|
|
171
|
+
* Two return forms are supported:
|
|
172
|
+
* 1. Bare WebSocketTransport (legacy, backward compatible) - configures
|
|
173
|
+
* only the WebSocket transport. When not specified, BunLocalTransport
|
|
174
|
+
* is used (single-pod, zero overhead).
|
|
175
|
+
* 2. AsenaTransportConfig object - configures WebSocket and microservice
|
|
176
|
+
* transports separately, plus messaging interceptors.
|
|
121
177
|
*
|
|
122
178
|
* @example
|
|
123
179
|
* ```typescript
|
|
180
|
+
* // Legacy form - WebSocket only
|
|
124
181
|
* transport() {
|
|
125
182
|
* return new RedisTransport(this.redis);
|
|
126
183
|
* }
|
|
184
|
+
*
|
|
185
|
+
* // Object form - WebSocket + microservice
|
|
186
|
+
* transport() {
|
|
187
|
+
* return {
|
|
188
|
+
* websocket: new RedisTransport(this.redis),
|
|
189
|
+
* microservice: new RedisMicroserviceTransport({
|
|
190
|
+
* url: 'redis://localhost:6379',
|
|
191
|
+
* serviceName: 'order-service',
|
|
192
|
+
* }),
|
|
193
|
+
* };
|
|
194
|
+
* }
|
|
195
|
+
*
|
|
196
|
+
* // Multiple named microservice transports (multi-broker projects)
|
|
197
|
+
* transport() {
|
|
198
|
+
* return {
|
|
199
|
+
* microservice: {
|
|
200
|
+
* default: new RedisMicroserviceTransport({ ... }),
|
|
201
|
+
* analytics: new NatsMicroserviceTransport({ ... }),
|
|
202
|
+
* },
|
|
203
|
+
* };
|
|
204
|
+
* }
|
|
127
205
|
* ```
|
|
128
206
|
*/
|
|
129
|
-
transport?(): WebSocketTransport | Promise<WebSocketTransport>;
|
|
207
|
+
transport?(): WebSocketTransport | AsenaTransportConfig | Promise<WebSocketTransport | AsenaTransportConfig>;
|
|
130
208
|
}
|
|
131
209
|
export type AsenaConfigFunctions = 'onError' | 'serveOptions' | 'globalMiddlewares' | 'transport';
|