@clairejs/server 3.22.10 → 3.22.12
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
CHANGED
|
@@ -12,6 +12,7 @@ export declare class LambdaWrapper {
|
|
|
12
12
|
protected readonly serverFactory: () => Promise<ClaireServer>;
|
|
13
13
|
protected readonly requestMapper: (event: any) => RequestOptions | undefined;
|
|
14
14
|
protected readonly config?: LambdaWrapperConfig | undefined;
|
|
15
|
+
private logger?;
|
|
15
16
|
private httpRequestHandler?;
|
|
16
17
|
private socketManager?;
|
|
17
18
|
private jobScheduler?;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getServiceProvider, HttpMethod, SocketMethod, Errors } from "@clairejs/core";
|
|
1
|
+
import { getServiceProvider, HttpMethod, SocketMethod, Errors, AbstractLogger } from "@clairejs/core";
|
|
2
2
|
import { AbstractHttpRequestHandler } from "../http/controller/AbstractHttpRequestHandler";
|
|
3
3
|
import { AbstractServerSocketManager } from "../socket/AbstractServerSocketManager";
|
|
4
4
|
import { CRON_REQUEST_METHOD } from "../job/interfaces";
|
|
@@ -66,6 +66,7 @@ export class LambdaWrapper {
|
|
|
66
66
|
serverFactory;
|
|
67
67
|
requestMapper;
|
|
68
68
|
config;
|
|
69
|
+
logger;
|
|
69
70
|
httpRequestHandler;
|
|
70
71
|
socketManager;
|
|
71
72
|
jobScheduler;
|
|
@@ -80,30 +81,36 @@ export class LambdaWrapper {
|
|
|
80
81
|
if (!this._server) {
|
|
81
82
|
this._server = await this.serverFactory();
|
|
82
83
|
const injector = getServiceProvider().getInjector();
|
|
84
|
+
this.logger = injector.resolveOptional(AbstractLogger);
|
|
83
85
|
this.socketManager = injector.resolveOptional(AbstractServerSocketManager);
|
|
84
86
|
this.httpRequestHandler = injector.resolveOptional(AbstractHttpRequestHandler);
|
|
85
87
|
this.jobScheduler = injector.resolveOptional(AbstractJobScheduler);
|
|
86
88
|
await injector.initInstances();
|
|
87
89
|
this.socketManager?.configure();
|
|
88
90
|
await this._server.init();
|
|
91
|
+
this.logger?.info("Server init finish");
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.logger?.info("Server already booted, reusing");
|
|
89
95
|
}
|
|
90
96
|
}
|
|
91
97
|
async handler(event) {
|
|
92
|
-
|
|
93
|
-
//-- handle http otherwise
|
|
98
|
+
console.log("Raw lambda event", event);
|
|
94
99
|
const requestOptions = this.requestMapper(event);
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
const corsHeaders = convertCorsToHeaders(requestOptions.headers?.origin || "", this.httpRequestHandler?.corsConfig);
|
|
99
|
-
if (requestOptions.method === HttpMethod.OPTIONS) {
|
|
100
|
-
return toApiGatewayFormat({ code: 200, headers: corsHeaders, cookies: {} });
|
|
101
|
-
}
|
|
102
|
-
if (requestOptions.method === CRON_REQUEST_METHOD) {
|
|
103
|
-
await this.jobScheduler?.handleCron(requestOptions.body);
|
|
104
|
-
return toApiGatewayFormat({ code: 200, headers: corsHeaders, cookies: {} });
|
|
105
|
-
}
|
|
100
|
+
console.log("after map event", requestOptions);
|
|
101
|
+
const corsHeaders = convertCorsToHeaders(requestOptions?.headers?.origin || "", this.httpRequestHandler?.corsConfig);
|
|
106
102
|
try {
|
|
103
|
+
await this.bootServer();
|
|
104
|
+
if (!requestOptions) {
|
|
105
|
+
throw Errors.SYSTEM_ERROR("Cannot resolve event");
|
|
106
|
+
}
|
|
107
|
+
if (requestOptions.method === HttpMethod.OPTIONS) {
|
|
108
|
+
return toApiGatewayFormat({ code: 200, headers: corsHeaders, cookies: {} });
|
|
109
|
+
}
|
|
110
|
+
if (requestOptions.method === CRON_REQUEST_METHOD) {
|
|
111
|
+
await this.jobScheduler?.handleCron(requestOptions.body);
|
|
112
|
+
return toApiGatewayFormat({ code: 200, headers: corsHeaders, cookies: {} });
|
|
113
|
+
}
|
|
107
114
|
if (Object.values(HttpMethod).includes(requestOptions.method)) {
|
|
108
115
|
if (!this.httpRequestHandler) {
|
|
109
116
|
throw Errors.SYSTEM_ERROR("Http request handler not found");
|
|
@@ -136,6 +143,8 @@ export class LambdaWrapper {
|
|
|
136
143
|
return toApiGatewayFormat({ code: 200, headers: corsHeaders, cookies: {} });
|
|
137
144
|
}
|
|
138
145
|
catch (err) {
|
|
146
|
+
console.log(err);
|
|
147
|
+
this.logger?.error(err);
|
|
139
148
|
return toApiGatewayFormat({
|
|
140
149
|
code: typeof err.code === "number" ? err.code : 500,
|
|
141
150
|
value: { name: err.name, message: err.message, code: err.code || 500 },
|
|
@@ -12,6 +12,7 @@ const parseCookie = (cookieArray) => {
|
|
|
12
12
|
};
|
|
13
13
|
export const lambdaRequestMapper = (event) => {
|
|
14
14
|
if (event.requestContext.eventType) {
|
|
15
|
+
console.log("map socket");
|
|
15
16
|
//-- socket
|
|
16
17
|
const method = event.requestContext.eventType.toLowerCase();
|
|
17
18
|
const body = event.body && JSON.parse(event.body);
|
|
@@ -22,6 +23,7 @@ export const lambdaRequestMapper = (event) => {
|
|
|
22
23
|
};
|
|
23
24
|
}
|
|
24
25
|
if (event.requestContext.cronScheduler) {
|
|
26
|
+
console.log("map cron");
|
|
25
27
|
//-- cron scheduler
|
|
26
28
|
return {
|
|
27
29
|
method: CRON_REQUEST_METHOD,
|
|
@@ -29,6 +31,7 @@ export const lambdaRequestMapper = (event) => {
|
|
|
29
31
|
body: event.requestContext.cronScheduler.data,
|
|
30
32
|
};
|
|
31
33
|
}
|
|
34
|
+
console.log("map http");
|
|
32
35
|
//-- http
|
|
33
36
|
return {
|
|
34
37
|
clientIP: event.requestContext.http.sourceIp,
|