@heliosjs/aws 1.0.3
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 +540 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.js +34 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/lambda.d.ts +14 -0
- package/dist/lambda.js +149 -0
- package/dist/lambda.js.map +1 -0
- package/dist/types/aws/index.d.ts +2 -0
- package/dist/types/aws/index.js +19 -0
- package/dist/types/aws/index.js.map +1 -0
- package/dist/types/aws/lambda.d.ts +55 -0
- package/dist/types/aws/lambda.js +3 -0
- package/dist/types/aws/lambda.js.map +1 -0
- package/dist/types/aws/plugin.d.ts +16 -0
- package/dist/types/aws/plugin.js +3 -0
- package/dist/types/aws/plugin.js.map +1 -0
- package/dist/types/core/common.d.ts +44 -0
- package/dist/types/core/common.js +15 -0
- package/dist/types/core/common.js.map +1 -0
- package/dist/types/core/controller.d.ts +78 -0
- package/dist/types/core/controller.js +3 -0
- package/dist/types/core/controller.js.map +1 -0
- package/dist/types/core/cors.d.ts +10 -0
- package/dist/types/core/cors.js +3 -0
- package/dist/types/core/cors.js.map +1 -0
- package/dist/types/core/error.d.ts +72 -0
- package/dist/types/core/error.js +19 -0
- package/dist/types/core/error.js.map +1 -0
- package/dist/types/core/index.d.ts +9 -0
- package/dist/types/core/index.js +26 -0
- package/dist/types/core/index.js.map +1 -0
- package/dist/types/core/multipart.d.ts +8 -0
- package/dist/types/core/multipart.js +3 -0
- package/dist/types/core/multipart.js.map +1 -0
- package/dist/types/core/request.d.ts +65 -0
- package/dist/types/core/request.js +3 -0
- package/dist/types/core/request.js.map +1 -0
- package/dist/types/core/response.d.ts +49 -0
- package/dist/types/core/response.js +3 -0
- package/dist/types/core/response.js.map +1 -0
- package/dist/types/core/sanitize.d.ts +8 -0
- package/dist/types/core/sanitize.js +3 -0
- package/dist/types/core/sanitize.js.map +1 -0
- package/dist/types/core/sse.d.ts +37 -0
- package/dist/types/core/sse.js +3 -0
- package/dist/types/core/sse.js.map +1 -0
- package/dist/types/ws/index.d.ts +50 -0
- package/dist/types/ws/index.js +3 -0
- package/dist/types/ws/index.js.map +1 -0
- package/dist/utils/aws/helpers.d.ts +4 -0
- package/dist/utils/aws/helpers.js +84 -0
- package/dist/utils/aws/helpers.js.map +1 -0
- package/dist/utils/aws/index.d.ts +6 -0
- package/dist/utils/aws/index.js +23 -0
- package/dist/utils/aws/index.js.map +1 -0
- package/dist/utils/aws/lambda.d.ts +6 -0
- package/dist/utils/aws/lambda.event.normalizers.d.ts +42 -0
- package/dist/utils/aws/lambda.event.normalizers.js +260 -0
- package/dist/utils/aws/lambda.event.normalizers.js.map +1 -0
- package/dist/utils/aws/lambda.js +50 -0
- package/dist/utils/aws/lambda.js.map +1 -0
- package/dist/utils/aws/parsers.d.ts +8 -0
- package/dist/utils/aws/parsers.js +69 -0
- package/dist/utils/aws/parsers.js.map +1 -0
- package/dist/utils/aws/plugin.d.ts +9 -0
- package/dist/utils/aws/plugin.js +43 -0
- package/dist/utils/aws/plugin.js.map +1 -0
- package/dist/utils/aws/request.factory.d.ts +6 -0
- package/dist/utils/aws/request.factory.js +14 -0
- package/dist/utils/aws/request.factory.js.map +1 -0
- package/dist/utils/aws/response.factory.d.ts +8 -0
- package/dist/utils/aws/response.factory.js +14 -0
- package/dist/utils/aws/response.factory.js.map +1 -0
- package/dist/utils/core/controller.d.ts +25 -0
- package/dist/utils/core/controller.js +219 -0
- package/dist/utils/core/controller.js.map +1 -0
- package/dist/utils/core/cors.d.ts +8 -0
- package/dist/utils/core/cors.js +128 -0
- package/dist/utils/core/cors.js.map +1 -0
- package/dist/utils/core/endpoint.d.ts +3 -0
- package/dist/utils/core/endpoint.js +28 -0
- package/dist/utils/core/endpoint.js.map +1 -0
- package/dist/utils/core/error/apperror.d.ts +31 -0
- package/dist/utils/core/error/apperror.js +131 -0
- package/dist/utils/core/error/apperror.js.map +1 -0
- package/dist/utils/core/error/authorizations.d.ts +7 -0
- package/dist/utils/core/error/authorizations.js +17 -0
- package/dist/utils/core/error/authorizations.js.map +1 -0
- package/dist/utils/core/error/base.d.ts +20 -0
- package/dist/utils/core/error/base.js +52 -0
- package/dist/utils/core/error/base.js.map +1 -0
- package/dist/utils/core/error/dependencyFailed.d.ts +7 -0
- package/dist/utils/core/error/dependencyFailed.js +17 -0
- package/dist/utils/core/error/dependencyFailed.js.map +1 -0
- package/dist/utils/core/error/duplicateEntry.d.ts +7 -0
- package/dist/utils/core/error/duplicateEntry.js +17 -0
- package/dist/utils/core/error/duplicateEntry.js.map +1 -0
- package/dist/utils/core/error/forbidden.d.ts +7 -0
- package/dist/utils/core/error/forbidden.js +17 -0
- package/dist/utils/core/error/forbidden.js.map +1 -0
- package/dist/utils/core/error/helpers.d.ts +8 -0
- package/dist/utils/core/error/helpers.js +144 -0
- package/dist/utils/core/error/helpers.js.map +1 -0
- package/dist/utils/core/error/index.d.ts +12 -0
- package/dist/utils/core/error/index.js +29 -0
- package/dist/utils/core/error/index.js.map +1 -0
- package/dist/utils/core/error/invalidState.d.ts +7 -0
- package/dist/utils/core/error/invalidState.js +17 -0
- package/dist/utils/core/error/invalidState.js.map +1 -0
- package/dist/utils/core/error/notfound.d.ts +7 -0
- package/dist/utils/core/error/notfound.js +18 -0
- package/dist/utils/core/error/notfound.js.map +1 -0
- package/dist/utils/core/error/rateLimit.d.ts +7 -0
- package/dist/utils/core/error/rateLimit.js +17 -0
- package/dist/utils/core/error/rateLimit.js.map +1 -0
- package/dist/utils/core/error/serviceUnavailable.d.ts +7 -0
- package/dist/utils/core/error/serviceUnavailable.js +17 -0
- package/dist/utils/core/error/serviceUnavailable.js.map +1 -0
- package/dist/utils/core/error/validation.d.ts +10 -0
- package/dist/utils/core/error/validation.js +20 -0
- package/dist/utils/core/error/validation.js.map +1 -0
- package/dist/utils/core/headers.d.ts +2 -0
- package/dist/utils/core/headers.js +10 -0
- package/dist/utils/core/headers.js.map +1 -0
- package/dist/utils/core/helper.d.ts +6 -0
- package/dist/utils/core/helper.js +66 -0
- package/dist/utils/core/helper.js.map +1 -0
- package/dist/utils/core/index.d.ts +10 -0
- package/dist/utils/core/index.js +27 -0
- package/dist/utils/core/index.js.map +1 -0
- package/dist/utils/core/multipart.d.ts +9 -0
- package/dist/utils/core/multipart.js +207 -0
- package/dist/utils/core/multipart.js.map +1 -0
- package/dist/utils/core/request.d.ts +100 -0
- package/dist/utils/core/request.js +218 -0
- package/dist/utils/core/request.js.map +1 -0
- package/dist/utils/core/response.d.ts +48 -0
- package/dist/utils/core/response.js +269 -0
- package/dist/utils/core/response.js.map +1 -0
- package/dist/utils/core/routeWalker.d.ts +2 -0
- package/dist/utils/core/routeWalker.js +115 -0
- package/dist/utils/core/routeWalker.js.map +1 -0
- package/dist/utils/core/sanitize.d.ts +30 -0
- package/dist/utils/core/sanitize.js +134 -0
- package/dist/utils/core/sanitize.js.map +1 -0
- package/dist/utils/shared/index.d.ts +2 -0
- package/dist/utils/shared/index.js +19 -0
- package/dist/utils/shared/index.js.map +1 -0
- package/dist/utils/shared/parsers.d.ts +11 -0
- package/dist/utils/shared/parsers.js +133 -0
- package/dist/utils/shared/parsers.js.map +1 -0
- package/dist/utils/shared/validate.d.ts +1 -0
- package/dist/utils/shared/validate.js +41 -0
- package/dist/utils/shared/validate.js.map +1 -0
- package/dist/utils/socket/index.d.ts +3 -0
- package/dist/utils/socket/index.js +20 -0
- package/dist/utils/socket/index.js.map +1 -0
- package/dist/utils/socket/server.d.ts +33 -0
- package/dist/utils/socket/server.js +218 -0
- package/dist/utils/socket/server.js.map +1 -0
- package/dist/utils/socket/service.d.ts +20 -0
- package/dist/utils/socket/service.js +42 -0
- package/dist/utils/socket/service.js.map +1 -0
- package/dist/utils/socket/socket.d.ts +16 -0
- package/dist/utils/socket/socket.js +33 -0
- package/dist/utils/socket/socket.js.map +1 -0
- package/dist/utils/sse/index.d.ts +2 -0
- package/dist/utils/sse/index.js +19 -0
- package/dist/utils/sse/index.js.map +1 -0
- package/dist/utils/sse/server.d.ts +14 -0
- package/dist/utils/sse/server.js +85 -0
- package/dist/utils/sse/server.js.map +1 -0
- package/dist/utils/sse/service.d.ts +17 -0
- package/dist/utils/sse/service.js +40 -0
- package/dist/utils/sse/service.js.map +1 -0
- package/package.json +33 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { IncomingHttpHeaders } from 'http';
|
|
2
|
+
export type RequestSource = 'http' | 'lambda' | 'unknown';
|
|
3
|
+
export type EventType = 'apigateway' | 'apigatewayv2' | 'alb' | 'cloudfront' | 's3' | 'sns' | 'sqs' | 'dynamodb' | 'unknown';
|
|
4
|
+
export interface RequestOptions {
|
|
5
|
+
method: string;
|
|
6
|
+
requestUrl: URL;
|
|
7
|
+
url: string;
|
|
8
|
+
path: string;
|
|
9
|
+
headers: Record<string, string | string[]>;
|
|
10
|
+
query: Record<string, string | string[]>;
|
|
11
|
+
body: any;
|
|
12
|
+
params: Record<string, string>;
|
|
13
|
+
cookies: Record<string, string>;
|
|
14
|
+
sourceIp?: string;
|
|
15
|
+
userAgent?: string;
|
|
16
|
+
requestId: string;
|
|
17
|
+
stage?: string;
|
|
18
|
+
timestamp: Date;
|
|
19
|
+
raw?: any;
|
|
20
|
+
context?: any;
|
|
21
|
+
rawBody?: any;
|
|
22
|
+
event?: unknown;
|
|
23
|
+
isBase64Encoded?: boolean;
|
|
24
|
+
source: RequestSource;
|
|
25
|
+
}
|
|
26
|
+
export interface IRequest {
|
|
27
|
+
method: string;
|
|
28
|
+
path: string;
|
|
29
|
+
url: string;
|
|
30
|
+
requestUrl: URL;
|
|
31
|
+
headers: Record<string, string | string[]>;
|
|
32
|
+
query: Record<string, string | string[]>;
|
|
33
|
+
body: any;
|
|
34
|
+
params: Record<string, string>;
|
|
35
|
+
cookies: Record<string, string>;
|
|
36
|
+
sourceIp: string;
|
|
37
|
+
userAgent: string;
|
|
38
|
+
requestId: string;
|
|
39
|
+
stage: string;
|
|
40
|
+
timestamp: Date;
|
|
41
|
+
source: RequestSource;
|
|
42
|
+
raw: any;
|
|
43
|
+
context: any;
|
|
44
|
+
rawBody: any;
|
|
45
|
+
isBase64Encoded: any;
|
|
46
|
+
startTime: number;
|
|
47
|
+
getHeader(name: string): string | string[] | undefined;
|
|
48
|
+
getCookie(name: string): string | undefined;
|
|
49
|
+
getQuery(name: string): string | string[] | undefined;
|
|
50
|
+
getParam(name: string): string | undefined;
|
|
51
|
+
isHttp(): boolean;
|
|
52
|
+
isLambda(): boolean;
|
|
53
|
+
getLambdaEvent(): unknown;
|
|
54
|
+
getLambdaContext(): unknown;
|
|
55
|
+
getHttpRequest(): IncomingHttpHeaders | undefined;
|
|
56
|
+
setState(key: string, value: any): void;
|
|
57
|
+
getState<T = any>(key: string): T | undefined;
|
|
58
|
+
getAllState(): Map<string, any>;
|
|
59
|
+
isSecure(): boolean;
|
|
60
|
+
getClientIp(): string;
|
|
61
|
+
getHost(): string;
|
|
62
|
+
getFullUrl(): string;
|
|
63
|
+
clone(overrides?: Partial<RequestOptions>): IRequest;
|
|
64
|
+
toJSON(): Record<string, any>;
|
|
65
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/types/core/request.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export type ResponseSource = 'http' | 'lambda' | 'unknown';
|
|
2
|
+
export interface CookieOptions {
|
|
3
|
+
maxAge?: number;
|
|
4
|
+
expires?: Date;
|
|
5
|
+
path?: string;
|
|
6
|
+
domain?: string;
|
|
7
|
+
secure?: boolean;
|
|
8
|
+
httpOnly?: boolean;
|
|
9
|
+
sameSite?: 'strict' | 'lax' | 'none';
|
|
10
|
+
priority?: 'low' | 'medium' | 'high';
|
|
11
|
+
partitioned?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface ResponseOptions {
|
|
14
|
+
statusCode?: number;
|
|
15
|
+
headers?: Record<string, string | string[]>;
|
|
16
|
+
body?: any;
|
|
17
|
+
cookies?: string[];
|
|
18
|
+
isBase64Encoded?: boolean;
|
|
19
|
+
encoding?: BufferEncoding;
|
|
20
|
+
}
|
|
21
|
+
export interface IResponse {
|
|
22
|
+
headers: Record<string, string | string[]>;
|
|
23
|
+
data: any;
|
|
24
|
+
cookies: string[];
|
|
25
|
+
isBase64Encoded: boolean;
|
|
26
|
+
source: ResponseSource;
|
|
27
|
+
raw: any;
|
|
28
|
+
headersSent: boolean;
|
|
29
|
+
ok: boolean;
|
|
30
|
+
meta: {
|
|
31
|
+
requestUrl: URL;
|
|
32
|
+
method: string;
|
|
33
|
+
};
|
|
34
|
+
status: number;
|
|
35
|
+
getStatus(): number;
|
|
36
|
+
setHeader(name: string, value: string | string[]): this;
|
|
37
|
+
getHeader(name: string): string | string[] | undefined;
|
|
38
|
+
hasHeader(name: string): boolean;
|
|
39
|
+
removeHeader(name: string): this;
|
|
40
|
+
setHeaders(headers: Record<string, string | string[]>): this;
|
|
41
|
+
setCookie(name: string, value: string, options?: CookieOptions): this;
|
|
42
|
+
clearCookie(name: string, options?: CookieOptions): this;
|
|
43
|
+
getCookies(): string[];
|
|
44
|
+
redirect(url: string, statusCode?: number): this;
|
|
45
|
+
end(data: unknown): this;
|
|
46
|
+
error(data: unknown): this;
|
|
47
|
+
reset(): this;
|
|
48
|
+
toJSON(): Record<string, any>;
|
|
49
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../../src/types/core/response.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/types/core/sanitize.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ServerResponse } from 'http';
|
|
2
|
+
export interface SSEClient {
|
|
3
|
+
id: string;
|
|
4
|
+
response: ServerResponse;
|
|
5
|
+
topics: Set<string>;
|
|
6
|
+
data: Record<string, any>;
|
|
7
|
+
connectedAt: Date;
|
|
8
|
+
}
|
|
9
|
+
export interface SSEMessage {
|
|
10
|
+
event?: string;
|
|
11
|
+
id?: string;
|
|
12
|
+
retry?: number;
|
|
13
|
+
data: any;
|
|
14
|
+
}
|
|
15
|
+
export interface SSEEvent {
|
|
16
|
+
type: 'connection' | 'close';
|
|
17
|
+
client: SSEClient;
|
|
18
|
+
data?: any;
|
|
19
|
+
}
|
|
20
|
+
export interface ISSEServer {
|
|
21
|
+
createConnection(res: ServerResponse): SSEClient;
|
|
22
|
+
sendToClient(clientId: string, message: SSEMessage): boolean;
|
|
23
|
+
broadcast(message: SSEMessage, excludeClientId?: string): void;
|
|
24
|
+
getStats(): {
|
|
25
|
+
clients: number;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface ISSEService {
|
|
29
|
+
initialize(sse: ISSEServer): void;
|
|
30
|
+
sendToClient(clientId: string, message: SSEMessage): boolean;
|
|
31
|
+
broadcast(message: SSEMessage, excludeClientId?: string): void;
|
|
32
|
+
getStats(): {
|
|
33
|
+
clients: number;
|
|
34
|
+
};
|
|
35
|
+
isAvailable(): boolean;
|
|
36
|
+
createConnection(res: ServerResponse): SSEClient;
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sse.js","sourceRoot":"","sources":["../../../src/types/core/sse.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import WebSocket from 'ws';
|
|
2
|
+
export type WebSocketHandlerType = 'connection' | 'message' | 'close' | 'error';
|
|
3
|
+
export interface WebSocketEvent {
|
|
4
|
+
type: WebSocketHandlerType;
|
|
5
|
+
client: WebSocketClient;
|
|
6
|
+
message?: WebSocketMessage;
|
|
7
|
+
data?: any;
|
|
8
|
+
}
|
|
9
|
+
export interface WebSocketClient {
|
|
10
|
+
id: string;
|
|
11
|
+
socket: WebSocket;
|
|
12
|
+
topics: Set<string>;
|
|
13
|
+
data: Record<string, any>;
|
|
14
|
+
connectedAt: Date;
|
|
15
|
+
}
|
|
16
|
+
export interface WebSocketMessage {
|
|
17
|
+
type: string;
|
|
18
|
+
topic?: string;
|
|
19
|
+
data: any;
|
|
20
|
+
clientId?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface WebSocketStats {
|
|
23
|
+
clients: number;
|
|
24
|
+
topics: Array<{
|
|
25
|
+
topic: string;
|
|
26
|
+
subscribers: number;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export interface IWebSocketService {
|
|
30
|
+
sendToClient(clientId: string, message: any): boolean;
|
|
31
|
+
publishToTopic(topic: string, data: any, exclude?: string[]): void;
|
|
32
|
+
broadcast(message: any, excludeClientId?: string): void;
|
|
33
|
+
getStats(): {
|
|
34
|
+
clients: number;
|
|
35
|
+
topics: Array<{
|
|
36
|
+
topic: string;
|
|
37
|
+
subscribers: number;
|
|
38
|
+
}>;
|
|
39
|
+
};
|
|
40
|
+
isAvailable(): boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface IWebSocketServer {
|
|
43
|
+
sendToClient(clientId: string, message: any): boolean;
|
|
44
|
+
publishToTopic(topic: string, data: any, exclude: string[]): void;
|
|
45
|
+
broadcast(message: any, excludeClientId?: string): void;
|
|
46
|
+
getStats(): WebSocketStats;
|
|
47
|
+
subscribeToTopic(client: WebSocketClient, topic: string): void;
|
|
48
|
+
unsubscribeFromTopic(client: WebSocketClient, topic: string): void;
|
|
49
|
+
registerControllers(controllers: any[]): void;
|
|
50
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/ws/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { NormalizedEvent } from '../../types/aws';
|
|
2
|
+
export declare const getEventType: (event: any) => "rest" | "http" | "url";
|
|
3
|
+
export declare const getSourceIp: (event: NormalizedEvent) => string;
|
|
4
|
+
export declare const normalizeEvent: (event: any, type: string) => NormalizedEvent;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeEvent = exports.getSourceIp = exports.getEventType = void 0;
|
|
4
|
+
const getEventType = (event) => {
|
|
5
|
+
if (event.httpMethod && event.resource) {
|
|
6
|
+
return 'rest';
|
|
7
|
+
}
|
|
8
|
+
if (event.version === '2.0' || event.requestContext?.http) {
|
|
9
|
+
return 'http';
|
|
10
|
+
}
|
|
11
|
+
if (event.version && event.rawPath && !event.requestContext?.http) {
|
|
12
|
+
return 'url';
|
|
13
|
+
}
|
|
14
|
+
return 'rest';
|
|
15
|
+
};
|
|
16
|
+
exports.getEventType = getEventType;
|
|
17
|
+
const getSourceIp = (event) => {
|
|
18
|
+
const forwardedFor = event.headers['x-forwarded-for'];
|
|
19
|
+
if (forwardedFor) {
|
|
20
|
+
if (Array.isArray(forwardedFor)) {
|
|
21
|
+
return forwardedFor[0].split(',')[0].trim();
|
|
22
|
+
}
|
|
23
|
+
return forwardedFor.split(',')[0].trim();
|
|
24
|
+
}
|
|
25
|
+
if (event.requestContext?.identity?.sourceIp) {
|
|
26
|
+
return event.requestContext.identity.sourceIp;
|
|
27
|
+
}
|
|
28
|
+
if (event.requestContext?.http?.sourceIp) {
|
|
29
|
+
return event.requestContext.http.sourceIp;
|
|
30
|
+
}
|
|
31
|
+
return '0.0.0.0';
|
|
32
|
+
};
|
|
33
|
+
exports.getSourceIp = getSourceIp;
|
|
34
|
+
const parseQueryString = (queryString) => {
|
|
35
|
+
const params = {};
|
|
36
|
+
if (!queryString)
|
|
37
|
+
return params;
|
|
38
|
+
new URLSearchParams(queryString).forEach((value, key) => {
|
|
39
|
+
params[key] = value;
|
|
40
|
+
});
|
|
41
|
+
return params;
|
|
42
|
+
};
|
|
43
|
+
const normalizeEvent = (event, type) => {
|
|
44
|
+
const base = {
|
|
45
|
+
headers: event.headers || {},
|
|
46
|
+
body: event.body || null,
|
|
47
|
+
isBase64Encoded: event.isBase64Encoded || false,
|
|
48
|
+
requestContext: event.requestContext,
|
|
49
|
+
};
|
|
50
|
+
switch (type) {
|
|
51
|
+
case 'rest':
|
|
52
|
+
return {
|
|
53
|
+
...base,
|
|
54
|
+
httpMethod: event.httpMethod,
|
|
55
|
+
path: event.path,
|
|
56
|
+
queryStringParameters: event.queryStringParameters || {},
|
|
57
|
+
multiValueQueryStringParameters: event.multiValueQueryStringParameters,
|
|
58
|
+
pathParameters: event.pathParameters || {},
|
|
59
|
+
cookies: event.headers?.Cookie ? [event.headers.Cookie] : [],
|
|
60
|
+
};
|
|
61
|
+
case 'http':
|
|
62
|
+
return {
|
|
63
|
+
...base,
|
|
64
|
+
httpMethod: event.requestContext?.http?.method || 'GET',
|
|
65
|
+
path: event.rawPath,
|
|
66
|
+
queryStringParameters: event.queryStringParameters || {},
|
|
67
|
+
pathParameters: event.pathParameters || {},
|
|
68
|
+
cookies: event.cookies || [],
|
|
69
|
+
};
|
|
70
|
+
case 'url':
|
|
71
|
+
return {
|
|
72
|
+
...base,
|
|
73
|
+
httpMethod: event.requestContext?.http?.method || 'GET',
|
|
74
|
+
path: event.rawPath,
|
|
75
|
+
queryStringParameters: parseQueryString(event.rawQueryString),
|
|
76
|
+
pathParameters: {},
|
|
77
|
+
cookies: [],
|
|
78
|
+
};
|
|
79
|
+
default:
|
|
80
|
+
throw new Error(`Unsupported event type: ${type}`);
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
exports.normalizeEvent = normalizeEvent;
|
|
84
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/utils/aws/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./lambda"), exports);
|
|
18
|
+
__exportStar(require("./lambda.event.normalizers"), exports);
|
|
19
|
+
__exportStar(require("./parsers"), exports);
|
|
20
|
+
__exportStar(require("./plugin"), exports);
|
|
21
|
+
__exportStar(require("./request.factory"), exports);
|
|
22
|
+
__exportStar(require("./response.factory"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6DAA2C;AAC3C,4CAA0B;AAC1B,2CAAyB;AACzB,oDAAkC;AAClC,qDAAmC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2 } from 'aws-lambda';
|
|
2
|
+
import { NormalizedEvent } from '../../types/aws';
|
|
3
|
+
export declare const getEventType: (event: any) => "rest" | "http" | "url";
|
|
4
|
+
export declare const getSourceIp: (event: NormalizedEvent) => string;
|
|
5
|
+
export declare const getQueryStringParameters: (event: APIGatewayProxyEvent | APIGatewayProxyEventV2 | ALBEvent) => Record<string, string>;
|
|
6
|
+
export declare const getMultiValueQueryStringParameters: (event: APIGatewayProxyEvent | ALBEvent) => Record<string, string[]>;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { LambdaEvent } from '../../types/aws';
|
|
2
|
+
import { RequestOptions } from '../../types/core';
|
|
3
|
+
import { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2, CloudFrontRequestEvent, Context, LambdaFunctionURLEvent } from 'aws-lambda';
|
|
4
|
+
export declare const normalizeAPIGatewayEvent: (event: APIGatewayProxyEvent, context: Context) => RequestOptions;
|
|
5
|
+
export declare const normalizeAPIGatewayV2Event: (event: APIGatewayProxyEventV2, context: Context) => RequestOptions;
|
|
6
|
+
export declare const normalizeALBEvent: (event: ALBEvent, context: Context) => RequestOptions;
|
|
7
|
+
export declare const normalizeCloudFrontEvent: (event: CloudFrontRequestEvent, context: Context) => RequestOptions;
|
|
8
|
+
export interface LambdaFunctionUrlEvent {
|
|
9
|
+
version: string;
|
|
10
|
+
rawPath: string;
|
|
11
|
+
rawQueryString: string;
|
|
12
|
+
headers: Record<string, string>;
|
|
13
|
+
queryStringParameters?: Record<string, string>;
|
|
14
|
+
requestContext: {
|
|
15
|
+
accountId: string;
|
|
16
|
+
apiId: string;
|
|
17
|
+
domainName: string;
|
|
18
|
+
domainPrefix: string;
|
|
19
|
+
http: {
|
|
20
|
+
method: string;
|
|
21
|
+
path: string;
|
|
22
|
+
protocol: string;
|
|
23
|
+
sourceIp: string;
|
|
24
|
+
userAgent: string;
|
|
25
|
+
};
|
|
26
|
+
requestId: string;
|
|
27
|
+
routeKey: string;
|
|
28
|
+
stage: string;
|
|
29
|
+
time: string;
|
|
30
|
+
timeEpoch: number;
|
|
31
|
+
};
|
|
32
|
+
body?: string;
|
|
33
|
+
isBase64Encoded?: boolean;
|
|
34
|
+
cookies?: string[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Нормализует Lambda Function URL event
|
|
38
|
+
*/
|
|
39
|
+
export declare const normalizeLambdaFunctionUrlEvent: (event: LambdaFunctionURLEvent, context: Context) => RequestOptions;
|
|
40
|
+
export type LambdaEventType = 'apigateway' | 'apigatewayv2' | 'alb' | 'cloudfront' | 'lambda-url' | 'unknown';
|
|
41
|
+
export declare const getLambdaEventType: (event: any) => LambdaEventType;
|
|
42
|
+
export declare const normalizeEvent: (event: LambdaEvent, context: Context) => RequestOptions;
|