@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
package/dist/lambda.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LambdaAdapter = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const aws_1 = require("./utils/aws");
|
|
6
|
+
const core_1 = require("./utils/core");
|
|
7
|
+
class LambdaAdapter extends aws_1.Plugin {
|
|
8
|
+
handler;
|
|
9
|
+
controllers = [];
|
|
10
|
+
plugins = [];
|
|
11
|
+
constructor(Controller) {
|
|
12
|
+
super();
|
|
13
|
+
this.controllers.push(Controller);
|
|
14
|
+
this.handler = this.createHandler();
|
|
15
|
+
}
|
|
16
|
+
createHandler() {
|
|
17
|
+
return async (event, context) => {
|
|
18
|
+
await this.callPluginHook('beforeRequest', event, context);
|
|
19
|
+
const eventType = (0, aws_1.getEventType)(event);
|
|
20
|
+
const request = aws_1.RequestFactory.create(event, context);
|
|
21
|
+
const response = aws_1.ResponseFactory.create(request);
|
|
22
|
+
return this.runControllers({
|
|
23
|
+
context,
|
|
24
|
+
event,
|
|
25
|
+
eventType,
|
|
26
|
+
request,
|
|
27
|
+
response,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async runControllers(meta) {
|
|
32
|
+
const { request, response, eventType, event, context } = meta;
|
|
33
|
+
let processed;
|
|
34
|
+
for (const ControllerClass of this.controllers ?? []) {
|
|
35
|
+
const instance = new ControllerClass();
|
|
36
|
+
try {
|
|
37
|
+
const cors = Reflect.getMetadata(constants_1.CORS_METADATA, instance);
|
|
38
|
+
let handledCors = { permitted: true, continue: true };
|
|
39
|
+
if (cors) {
|
|
40
|
+
handledCors = (0, core_1.handleCORS)(request, response, cors);
|
|
41
|
+
}
|
|
42
|
+
if (!handledCors.permitted) {
|
|
43
|
+
return this.toLambdaResponse({ status: 403, message: 'Cors: Origin not allowed' }, request, response, eventType);
|
|
44
|
+
}
|
|
45
|
+
if (!handledCors.continue && handledCors.permitted) {
|
|
46
|
+
return this.toLambdaResponse({ status: 204 }, request, response, eventType);
|
|
47
|
+
}
|
|
48
|
+
if (typeof instance.handleRequest !== 'function') {
|
|
49
|
+
throw new Error('Controller must have handleRequest method');
|
|
50
|
+
}
|
|
51
|
+
await this.callPluginHook('beforeRoute', request, response);
|
|
52
|
+
processed = await instance.handleRequest(request, response);
|
|
53
|
+
if (processed)
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
return this.handleError(error, request);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if ((0, core_1.getErrorType)(response?.data).isError) {
|
|
61
|
+
return this.handleError(processed?.data, request);
|
|
62
|
+
}
|
|
63
|
+
return this.toLambdaResponse(processed?.data, request, response, eventType);
|
|
64
|
+
}
|
|
65
|
+
toLambdaResponse(data, request, response, eventType) {
|
|
66
|
+
const statusCode = data?.status ?? response?.status ?? 200;
|
|
67
|
+
const headers = {
|
|
68
|
+
'Content-Type': 'application/json',
|
|
69
|
+
'X-Request-Id': request.requestId,
|
|
70
|
+
...response.headers,
|
|
71
|
+
};
|
|
72
|
+
const originHeader = request.headers['origin'] || request.headers['Origin'];
|
|
73
|
+
let origin;
|
|
74
|
+
if (originHeader) {
|
|
75
|
+
if (Array.isArray(originHeader)) {
|
|
76
|
+
origin = originHeader[0];
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
origin = originHeader;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (origin) {
|
|
83
|
+
headers['Access-Control-Allow-Origin'] = origin;
|
|
84
|
+
headers['Access-Control-Allow-Credentials'] = 'true';
|
|
85
|
+
headers['Access-Control-Allow-Methods'] = 'GET,POST,PUT,DELETE,OPTIONS';
|
|
86
|
+
headers['Access-Control-Allow-Headers'] =
|
|
87
|
+
'Content-Type,Authorization,X-Amz-Date,X-Api-Key,X-Amz-Security-Token';
|
|
88
|
+
}
|
|
89
|
+
const body = JSON.stringify({
|
|
90
|
+
success: statusCode < 400,
|
|
91
|
+
data: data?.data ?? data?.error ?? data,
|
|
92
|
+
timestamp: new Date().toISOString(),
|
|
93
|
+
});
|
|
94
|
+
const commonResponse = {
|
|
95
|
+
statusCode,
|
|
96
|
+
headers,
|
|
97
|
+
body: data?.data ?? data?.error ?? data,
|
|
98
|
+
timestamp: new Date().toISOString(),
|
|
99
|
+
};
|
|
100
|
+
this.callPluginHook('afterResponse', request, response);
|
|
101
|
+
switch (eventType) {
|
|
102
|
+
case 'rest':
|
|
103
|
+
return { ...commonResponse, isBase64Encoded: false };
|
|
104
|
+
case 'http':
|
|
105
|
+
return {
|
|
106
|
+
...commonResponse,
|
|
107
|
+
cookies: request.cookies
|
|
108
|
+
? Object.entries(request.cookies).map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
|
|
109
|
+
: undefined,
|
|
110
|
+
};
|
|
111
|
+
case 'url':
|
|
112
|
+
return {
|
|
113
|
+
...commonResponse,
|
|
114
|
+
cookies: request.cookies
|
|
115
|
+
? Object.entries(request.cookies).map(([k, v]) => `${k}=${encodeURIComponent(v)}`)
|
|
116
|
+
: undefined,
|
|
117
|
+
};
|
|
118
|
+
default:
|
|
119
|
+
return { statusCode, headers, body };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
handleError(error, request) {
|
|
123
|
+
const config = {
|
|
124
|
+
includeStack: process.env.NODE_ENV !== 'production',
|
|
125
|
+
logErrors: true,
|
|
126
|
+
};
|
|
127
|
+
let serialized = new core_1.ApplicationError(error, {
|
|
128
|
+
meta: request,
|
|
129
|
+
config,
|
|
130
|
+
});
|
|
131
|
+
const eventType = (0, aws_1.getEventType)(request.getLambdaEvent());
|
|
132
|
+
const statusCode = serialized.status || 500;
|
|
133
|
+
const body = JSON.stringify(serialized);
|
|
134
|
+
const headers = {
|
|
135
|
+
'Content-Type': 'application/json',
|
|
136
|
+
'X-Request-Id': request.requestId,
|
|
137
|
+
'Access-Control-Allow-Origin': '*',
|
|
138
|
+
'Access-Control-Allow-Credentials': 'true',
|
|
139
|
+
};
|
|
140
|
+
switch (eventType) {
|
|
141
|
+
case 'rest':
|
|
142
|
+
return { statusCode, headers, body, isBase64Encoded: false };
|
|
143
|
+
default:
|
|
144
|
+
return { statusCode, headers, body };
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
exports.LambdaAdapter = LambdaAdapter;
|
|
149
|
+
//# sourceMappingURL=lambda.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../src/lambda.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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("./plugin"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/aws/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,2CAAyB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { ALBEvent, APIGatewayProxyEvent, APIGatewayProxyEventV2, CloudFrontRequestEvent, Handler, LambdaFunctionURLEvent } from 'aws-lambda';
|
|
2
|
+
import { ControllerClass } from '../core/controller';
|
|
3
|
+
import { Plugin } from './plugin';
|
|
4
|
+
export interface LambdaFunctionUrlEvent {
|
|
5
|
+
version: string;
|
|
6
|
+
routeKey: string;
|
|
7
|
+
rawPath: string;
|
|
8
|
+
rawQueryString: string;
|
|
9
|
+
headers: Record<string, string>;
|
|
10
|
+
body?: string;
|
|
11
|
+
isBase64Encoded?: boolean;
|
|
12
|
+
requestContext: {
|
|
13
|
+
accountId: string;
|
|
14
|
+
apiId: string;
|
|
15
|
+
domainName: string;
|
|
16
|
+
domainPrefix: string;
|
|
17
|
+
http: {
|
|
18
|
+
method: string;
|
|
19
|
+
path: string;
|
|
20
|
+
protocol: string;
|
|
21
|
+
sourceIp: string;
|
|
22
|
+
userAgent: string;
|
|
23
|
+
};
|
|
24
|
+
requestId: string;
|
|
25
|
+
routeKey: string;
|
|
26
|
+
stage: string;
|
|
27
|
+
time: string;
|
|
28
|
+
timeEpoch: number;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
export type LambdaEvent = ALBEvent | LambdaFunctionURLEvent | CloudFrontRequestEvent | APIGatewayProxyEvent | APIGatewayProxyEventV2 | LambdaFunctionUrlEvent;
|
|
32
|
+
export interface NormalizedEvent {
|
|
33
|
+
httpMethod: string;
|
|
34
|
+
path: string;
|
|
35
|
+
headers: Record<string, string | string[]>;
|
|
36
|
+
queryStringParameters: Record<string, string>;
|
|
37
|
+
multiValueQueryStringParameters?: Record<string, string[]>;
|
|
38
|
+
pathParameters: Record<string, string>;
|
|
39
|
+
body: string | null;
|
|
40
|
+
isBase64Encoded: boolean;
|
|
41
|
+
cookies?: string[];
|
|
42
|
+
requestContext: any;
|
|
43
|
+
}
|
|
44
|
+
export interface LambdaApp {
|
|
45
|
+
beforeStart?: () => void;
|
|
46
|
+
}
|
|
47
|
+
export interface Lambda {
|
|
48
|
+
beforeStart?: () => Promise<void>;
|
|
49
|
+
handleRequest(request: any): Promise<any>;
|
|
50
|
+
}
|
|
51
|
+
export interface ILambdaAdapter {
|
|
52
|
+
handler: Handler;
|
|
53
|
+
controllers: ControllerClass[];
|
|
54
|
+
plugins: Plugin[];
|
|
55
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lambda.js","sourceRoot":"","sources":["../../../src/types/aws/lambda.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Context } from 'aws-lambda';
|
|
2
|
+
import { IncomingMessage } from 'http';
|
|
3
|
+
import { IRequest, IResponse } from '../core';
|
|
4
|
+
import { ILambdaAdapter, LambdaEvent } from './lambda';
|
|
5
|
+
export interface Hooks {
|
|
6
|
+
beforeRequest?: (req: IncomingMessage) => void | Promise<void>;
|
|
7
|
+
beforeRoute?: (req: IRequest, response: IResponse) => void | Promise<void>;
|
|
8
|
+
afterResponse?: (req: IRequest, res: IResponse) => void | Promise<void>;
|
|
9
|
+
}
|
|
10
|
+
export type PluginHookKeys = keyof Hooks;
|
|
11
|
+
export interface Plugin {
|
|
12
|
+
name: string;
|
|
13
|
+
onInit?(app: ILambdaAdapter, event: LambdaEvent, context: Context): void | Promise<void>;
|
|
14
|
+
hooks?: Hooks;
|
|
15
|
+
}
|
|
16
|
+
export type PluginKeys = keyof Omit<Plugin, 'name' | 'hooks'>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/types/aws/plugin.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ServerResponse } from 'http';
|
|
2
|
+
import { AppError } from './error';
|
|
3
|
+
import { IRequest } from './request';
|
|
4
|
+
import { IResponse } from './response';
|
|
5
|
+
export type Router = (req: IRequest, res?: ServerResponse) => Promise<{
|
|
6
|
+
status: number;
|
|
7
|
+
data: any;
|
|
8
|
+
message?: string;
|
|
9
|
+
}>;
|
|
10
|
+
export interface IController {
|
|
11
|
+
handleRequest: Router;
|
|
12
|
+
}
|
|
13
|
+
export type MiddlewareCB = (request: IRequest, response: IResponse, next: (args?: any) => any) => void | Promise<IRequest> | IRequest | Promise<void> | void;
|
|
14
|
+
export type InterceptorCB = (data: any, req?: IRequest, res?: IResponse) => Promise<unknown> | unknown;
|
|
15
|
+
export type ErrorCB = (error: AppError, req?: IRequest, res?: IResponse) => any;
|
|
16
|
+
export type ParamDecoratorType = 'body' | 'params' | 'query' | 'request' | 'headers' | 'cookies' | 'response' | 'multipart' | 'event' | 'context' | 'sse' | 'ws';
|
|
17
|
+
export interface ParamMetadata {
|
|
18
|
+
index: number;
|
|
19
|
+
type: ParamDecoratorType;
|
|
20
|
+
dto?: any;
|
|
21
|
+
name?: string;
|
|
22
|
+
}
|
|
23
|
+
export type ResponseWithStatus = {
|
|
24
|
+
status: number;
|
|
25
|
+
[key: string]: any;
|
|
26
|
+
};
|
|
27
|
+
export declare enum HTTP_METHODS {
|
|
28
|
+
ANY = "ANY",
|
|
29
|
+
GET = "GET",
|
|
30
|
+
POST = "POST",
|
|
31
|
+
PATCH = "PATCH",
|
|
32
|
+
DELETE = "DELETE",
|
|
33
|
+
PUT = "PUT",
|
|
34
|
+
OPTIONS = "OPTIONS",
|
|
35
|
+
HEAD = "HEAD"
|
|
36
|
+
}
|
|
37
|
+
export type Meta = {
|
|
38
|
+
requestUrl: URL;
|
|
39
|
+
method: string;
|
|
40
|
+
requestId: string;
|
|
41
|
+
sourceIp: string;
|
|
42
|
+
userAgent: string;
|
|
43
|
+
startTime: number;
|
|
44
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HTTP_METHODS = void 0;
|
|
4
|
+
var HTTP_METHODS;
|
|
5
|
+
(function (HTTP_METHODS) {
|
|
6
|
+
HTTP_METHODS["ANY"] = "ANY";
|
|
7
|
+
HTTP_METHODS["GET"] = "GET";
|
|
8
|
+
HTTP_METHODS["POST"] = "POST";
|
|
9
|
+
HTTP_METHODS["PATCH"] = "PATCH";
|
|
10
|
+
HTTP_METHODS["DELETE"] = "DELETE";
|
|
11
|
+
HTTP_METHODS["PUT"] = "PUT";
|
|
12
|
+
HTTP_METHODS["OPTIONS"] = "OPTIONS";
|
|
13
|
+
HTTP_METHODS["HEAD"] = "HEAD";
|
|
14
|
+
})(HTTP_METHODS || (exports.HTTP_METHODS = HTTP_METHODS = {}));
|
|
15
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/types/core/common.ts"],"names":[],"mappings":";;;AAsDA,IAAY,YASX;AATD,WAAY,YAAY;IACtB,2BAAW,CAAA;IACX,2BAAW,CAAA;IACX,6BAAa,CAAA;IACb,+BAAe,CAAA;IACf,iCAAiB,CAAA;IACjB,2BAAW,CAAA;IACX,mCAAmB,CAAA;IACnB,6BAAa,CAAA;AACf,CAAC,EATW,YAAY,4BAAZ,YAAY,QASvB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { ServerResponse } from 'http';
|
|
2
|
+
import { ErrorCB, HTTP_METHODS, InterceptorCB, MiddlewareCB } from './common';
|
|
3
|
+
import { CORSConfig } from './cors';
|
|
4
|
+
import { IRequest } from './request';
|
|
5
|
+
import { SanitizerConfig } from './sanitize';
|
|
6
|
+
export type ControllerClass = {
|
|
7
|
+
new (...args: any[]): any;
|
|
8
|
+
};
|
|
9
|
+
export type ControllerMethods = Array<{
|
|
10
|
+
name: string;
|
|
11
|
+
httpMethod: HTTP_METHODS;
|
|
12
|
+
pattern: string;
|
|
13
|
+
middlewares?: MiddlewareCB[];
|
|
14
|
+
}>;
|
|
15
|
+
export type ControllerType = {
|
|
16
|
+
handleRequest?(request: IRequest, response: ServerResponse): Promise<any>;
|
|
17
|
+
ws?: WsControllerHandlers;
|
|
18
|
+
sse?: SeeControllerHandlers;
|
|
19
|
+
new (...args: any[]): any;
|
|
20
|
+
};
|
|
21
|
+
export type ControllerInstance = InstanceType<ControllerType>;
|
|
22
|
+
export type ControllerMetadata = {
|
|
23
|
+
routePrefix: string;
|
|
24
|
+
middlewares: MiddlewareCB[];
|
|
25
|
+
interceptor?: InterceptorCB;
|
|
26
|
+
subControllers: ControllerInstance[];
|
|
27
|
+
errorHandler?: ErrorCB;
|
|
28
|
+
cors?: CORSConfig;
|
|
29
|
+
sanitizers: SanitizerConfig[];
|
|
30
|
+
};
|
|
31
|
+
export interface ControllerConfig {
|
|
32
|
+
prefix: string;
|
|
33
|
+
middlewares?: Array<MiddlewareCB>;
|
|
34
|
+
controllers?: ControllerInstance[];
|
|
35
|
+
interceptor?: InterceptorCB;
|
|
36
|
+
}
|
|
37
|
+
export type RouteContext = {
|
|
38
|
+
controllerInstance: any;
|
|
39
|
+
controllerMeta: ControllerMetadata;
|
|
40
|
+
path: string;
|
|
41
|
+
method: string;
|
|
42
|
+
middlewareChain: MiddlewareCB[];
|
|
43
|
+
interceptorChain: InterceptorCB[];
|
|
44
|
+
corsChain: CORSConfig[];
|
|
45
|
+
errorHandlerChain: ErrorCB[];
|
|
46
|
+
subPath: string;
|
|
47
|
+
sanitizersChain: SanitizerConfig[];
|
|
48
|
+
};
|
|
49
|
+
export type SSE_HANDLER_META = {
|
|
50
|
+
type: string;
|
|
51
|
+
method: string;
|
|
52
|
+
};
|
|
53
|
+
export type HandlerMeta = {
|
|
54
|
+
type: 'connection';
|
|
55
|
+
topic: undefined;
|
|
56
|
+
method: 'onconnect';
|
|
57
|
+
fn: (...args: any[]) => any;
|
|
58
|
+
};
|
|
59
|
+
export type WsHandlerMeta = HandlerMeta & {
|
|
60
|
+
topic?: string;
|
|
61
|
+
};
|
|
62
|
+
export type WsControllerHandlers = {
|
|
63
|
+
handlers: {
|
|
64
|
+
connection: WsHandlerMeta[];
|
|
65
|
+
message: WsHandlerMeta[];
|
|
66
|
+
close: WsHandlerMeta[];
|
|
67
|
+
error: WsHandlerMeta[];
|
|
68
|
+
};
|
|
69
|
+
topics: HandlerMeta[];
|
|
70
|
+
};
|
|
71
|
+
export type SeeControllerHandlers = {
|
|
72
|
+
handlers: {
|
|
73
|
+
connection: HandlerMeta[];
|
|
74
|
+
close: HandlerMeta[];
|
|
75
|
+
error: HandlerMeta[];
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export type NextFunction = (error?: unknown) => void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/types/core/controller.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CORSConfig {
|
|
2
|
+
origin?: string | string[] | ((origin: string) => boolean);
|
|
3
|
+
methods?: string[];
|
|
4
|
+
allowedHeaders?: string[];
|
|
5
|
+
exposedHeaders?: string[];
|
|
6
|
+
credentials?: boolean;
|
|
7
|
+
maxAge?: number;
|
|
8
|
+
preflightContinue?: boolean;
|
|
9
|
+
optionsSuccessStatus?: number;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/types/core/cors.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { IRequest } from './request';
|
|
2
|
+
import { IResponse } from './response';
|
|
3
|
+
export declare enum ErrorCode {
|
|
4
|
+
BAD_REQUEST = "BAD_REQUEST",
|
|
5
|
+
UNAUTHORIZED = "UNAUTHORIZED",
|
|
6
|
+
FORBIDDEN = "FORBIDDEN",
|
|
7
|
+
NOT_FOUND = "NOT_FOUND",
|
|
8
|
+
VALIDATION_FAILED = "VALIDATION_FAILED",
|
|
9
|
+
RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
|
|
10
|
+
INTERNAL_ERROR = "INTERNAL_ERROR",
|
|
11
|
+
SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
|
|
12
|
+
DATABASE_ERROR = "DATABASE_ERROR",
|
|
13
|
+
DUPLICATE_ENTRY = "DUPLICATE_ENTRY",
|
|
14
|
+
INVALID_STATE = "INVALID_STATE",
|
|
15
|
+
DEPENDENCY_FAILED = "DEPENDENCY_FAILED"
|
|
16
|
+
}
|
|
17
|
+
export interface ErrorDetails {
|
|
18
|
+
field?: string;
|
|
19
|
+
value?: any;
|
|
20
|
+
constraint?: string;
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
}
|
|
23
|
+
export interface AppError extends Error {
|
|
24
|
+
code: ErrorCode;
|
|
25
|
+
status: number;
|
|
26
|
+
details?: ErrorDetails[];
|
|
27
|
+
timestamp: Date;
|
|
28
|
+
requestId?: string;
|
|
29
|
+
path?: string;
|
|
30
|
+
method?: string;
|
|
31
|
+
toResponse(): ErrorResponse;
|
|
32
|
+
}
|
|
33
|
+
export interface IValidationError extends AppError {
|
|
34
|
+
code: ErrorCode.VALIDATION_FAILED;
|
|
35
|
+
details?: ErrorDetails[];
|
|
36
|
+
}
|
|
37
|
+
export interface ErrorResponse {
|
|
38
|
+
success: false;
|
|
39
|
+
error: {
|
|
40
|
+
code: ErrorCode;
|
|
41
|
+
status: number;
|
|
42
|
+
message: string;
|
|
43
|
+
details?: ErrorDetails[];
|
|
44
|
+
timestamp: string;
|
|
45
|
+
requestId?: string;
|
|
46
|
+
path?: string;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export interface ErrorHandlerConfig {
|
|
50
|
+
includeStack?: boolean;
|
|
51
|
+
logErrors?: boolean;
|
|
52
|
+
logStack?: boolean;
|
|
53
|
+
customHandlers?: Record<ErrorCode, (error: AppError) => any>;
|
|
54
|
+
}
|
|
55
|
+
export interface SerializedError {
|
|
56
|
+
type: 'Error' | 'HttpError' | 'AxiosError' | 'Unknown' | 'ValidationError';
|
|
57
|
+
message: string;
|
|
58
|
+
status?: number;
|
|
59
|
+
code?: string;
|
|
60
|
+
stack?: string;
|
|
61
|
+
data?: any;
|
|
62
|
+
original?: any;
|
|
63
|
+
errors?: any[];
|
|
64
|
+
details?: ErrorDetails[];
|
|
65
|
+
}
|
|
66
|
+
export interface ErrorHandlerConfig {
|
|
67
|
+
includeStack?: boolean;
|
|
68
|
+
logErrors?: boolean;
|
|
69
|
+
logStack?: boolean;
|
|
70
|
+
customHandlers?: Record<ErrorCode, (error: AppError) => any>;
|
|
71
|
+
}
|
|
72
|
+
export type ErorrHandler = (error: Error, req: IRequest, response: IResponse) => any;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ErrorCode = void 0;
|
|
4
|
+
var ErrorCode;
|
|
5
|
+
(function (ErrorCode) {
|
|
6
|
+
ErrorCode["BAD_REQUEST"] = "BAD_REQUEST";
|
|
7
|
+
ErrorCode["UNAUTHORIZED"] = "UNAUTHORIZED";
|
|
8
|
+
ErrorCode["FORBIDDEN"] = "FORBIDDEN";
|
|
9
|
+
ErrorCode["NOT_FOUND"] = "NOT_FOUND";
|
|
10
|
+
ErrorCode["VALIDATION_FAILED"] = "VALIDATION_FAILED";
|
|
11
|
+
ErrorCode["RATE_LIMIT_EXCEEDED"] = "RATE_LIMIT_EXCEEDED";
|
|
12
|
+
ErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
13
|
+
ErrorCode["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
|
|
14
|
+
ErrorCode["DATABASE_ERROR"] = "DATABASE_ERROR";
|
|
15
|
+
ErrorCode["DUPLICATE_ENTRY"] = "DUPLICATE_ENTRY";
|
|
16
|
+
ErrorCode["INVALID_STATE"] = "INVALID_STATE";
|
|
17
|
+
ErrorCode["DEPENDENCY_FAILED"] = "DEPENDENCY_FAILED";
|
|
18
|
+
})(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
|
|
19
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/types/core/error.ts"],"names":[],"mappings":";;;AAGA,IAAY,SAaX;AAbD,WAAY,SAAS;IACnB,wCAA2B,CAAA;IAC3B,0CAA6B,CAAA;IAC7B,oCAAuB,CAAA;IACvB,oCAAuB,CAAA;IACvB,oDAAuC,CAAA;IACvC,wDAA2C,CAAA;IAC3C,8CAAiC,CAAA;IACjC,wDAA2C,CAAA;IAC3C,8CAAiC,CAAA;IACjC,gDAAmC,CAAA;IACnC,4CAA+B,CAAA;IAC/B,oDAAuC,CAAA;AACzC,CAAC,EAbW,SAAS,yBAAT,SAAS,QAapB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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("./common"), exports);
|
|
18
|
+
__exportStar(require("./controller"), exports);
|
|
19
|
+
__exportStar(require("./cors"), exports);
|
|
20
|
+
__exportStar(require("./error"), exports);
|
|
21
|
+
__exportStar(require("./multipart"), exports);
|
|
22
|
+
__exportStar(require("./request"), exports);
|
|
23
|
+
__exportStar(require("./response"), exports);
|
|
24
|
+
__exportStar(require("./sanitize"), exports);
|
|
25
|
+
__exportStar(require("./sse"), exports);
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,yCAAuB;AACvB,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B;AAC1B,6CAA2B;AAC3B,6CAA2B;AAC3B,wCAAsB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multipart.js","sourceRoot":"","sources":["../../../src/types/core/multipart.ts"],"names":[],"mappings":""}
|