@heliosjs/core 1.0.2

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.
Files changed (152) hide show
  1. package/README.md +540 -0
  2. package/dist/Controller.d.ts +54 -0
  3. package/dist/Controller.js +168 -0
  4. package/dist/Controller.js.map +1 -0
  5. package/dist/Endpoint.d.ts +73 -0
  6. package/dist/Endpoint.js +126 -0
  7. package/dist/Endpoint.js.map +1 -0
  8. package/dist/constants.d.ts +25 -0
  9. package/dist/constants.js +34 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/decorators.d.ts +94 -0
  12. package/dist/decorators.js +107 -0
  13. package/dist/decorators.js.map +1 -0
  14. package/dist/index.d.ts +11 -0
  15. package/dist/index.js +29 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/types/core/common.d.ts +44 -0
  18. package/dist/types/core/common.js +15 -0
  19. package/dist/types/core/common.js.map +1 -0
  20. package/dist/types/core/controller.d.ts +78 -0
  21. package/dist/types/core/controller.js +3 -0
  22. package/dist/types/core/controller.js.map +1 -0
  23. package/dist/types/core/cors.d.ts +10 -0
  24. package/dist/types/core/cors.js +3 -0
  25. package/dist/types/core/cors.js.map +1 -0
  26. package/dist/types/core/error.d.ts +72 -0
  27. package/dist/types/core/error.js +19 -0
  28. package/dist/types/core/error.js.map +1 -0
  29. package/dist/types/core/index.d.ts +9 -0
  30. package/dist/types/core/index.js +26 -0
  31. package/dist/types/core/index.js.map +1 -0
  32. package/dist/types/core/multipart.d.ts +8 -0
  33. package/dist/types/core/multipart.js +3 -0
  34. package/dist/types/core/multipart.js.map +1 -0
  35. package/dist/types/core/request.d.ts +65 -0
  36. package/dist/types/core/request.js +3 -0
  37. package/dist/types/core/request.js.map +1 -0
  38. package/dist/types/core/response.d.ts +49 -0
  39. package/dist/types/core/response.js +3 -0
  40. package/dist/types/core/response.js.map +1 -0
  41. package/dist/types/core/sanitize.d.ts +8 -0
  42. package/dist/types/core/sanitize.js +3 -0
  43. package/dist/types/core/sanitize.js.map +1 -0
  44. package/dist/types/core/sse.d.ts +37 -0
  45. package/dist/types/core/sse.js +3 -0
  46. package/dist/types/core/sse.js.map +1 -0
  47. package/dist/types/ws/index.d.ts +50 -0
  48. package/dist/types/ws/index.js +3 -0
  49. package/dist/types/ws/index.js.map +1 -0
  50. package/dist/utils/core/controller.d.ts +25 -0
  51. package/dist/utils/core/controller.js +219 -0
  52. package/dist/utils/core/controller.js.map +1 -0
  53. package/dist/utils/core/cors.d.ts +8 -0
  54. package/dist/utils/core/cors.js +128 -0
  55. package/dist/utils/core/cors.js.map +1 -0
  56. package/dist/utils/core/endpoint.d.ts +3 -0
  57. package/dist/utils/core/endpoint.js +28 -0
  58. package/dist/utils/core/endpoint.js.map +1 -0
  59. package/dist/utils/core/error/apperror.d.ts +31 -0
  60. package/dist/utils/core/error/apperror.js +131 -0
  61. package/dist/utils/core/error/apperror.js.map +1 -0
  62. package/dist/utils/core/error/authorizations.d.ts +7 -0
  63. package/dist/utils/core/error/authorizations.js +17 -0
  64. package/dist/utils/core/error/authorizations.js.map +1 -0
  65. package/dist/utils/core/error/base.d.ts +20 -0
  66. package/dist/utils/core/error/base.js +52 -0
  67. package/dist/utils/core/error/base.js.map +1 -0
  68. package/dist/utils/core/error/dependencyFailed.d.ts +7 -0
  69. package/dist/utils/core/error/dependencyFailed.js +17 -0
  70. package/dist/utils/core/error/dependencyFailed.js.map +1 -0
  71. package/dist/utils/core/error/duplicateEntry.d.ts +7 -0
  72. package/dist/utils/core/error/duplicateEntry.js +17 -0
  73. package/dist/utils/core/error/duplicateEntry.js.map +1 -0
  74. package/dist/utils/core/error/forbidden.d.ts +7 -0
  75. package/dist/utils/core/error/forbidden.js +17 -0
  76. package/dist/utils/core/error/forbidden.js.map +1 -0
  77. package/dist/utils/core/error/helpers.d.ts +8 -0
  78. package/dist/utils/core/error/helpers.js +144 -0
  79. package/dist/utils/core/error/helpers.js.map +1 -0
  80. package/dist/utils/core/error/index.d.ts +12 -0
  81. package/dist/utils/core/error/index.js +29 -0
  82. package/dist/utils/core/error/index.js.map +1 -0
  83. package/dist/utils/core/error/invalidState.d.ts +7 -0
  84. package/dist/utils/core/error/invalidState.js +17 -0
  85. package/dist/utils/core/error/invalidState.js.map +1 -0
  86. package/dist/utils/core/error/notfound.d.ts +7 -0
  87. package/dist/utils/core/error/notfound.js +18 -0
  88. package/dist/utils/core/error/notfound.js.map +1 -0
  89. package/dist/utils/core/error/rateLimit.d.ts +7 -0
  90. package/dist/utils/core/error/rateLimit.js +17 -0
  91. package/dist/utils/core/error/rateLimit.js.map +1 -0
  92. package/dist/utils/core/error/serviceUnavailable.d.ts +7 -0
  93. package/dist/utils/core/error/serviceUnavailable.js +17 -0
  94. package/dist/utils/core/error/serviceUnavailable.js.map +1 -0
  95. package/dist/utils/core/error/validation.d.ts +10 -0
  96. package/dist/utils/core/error/validation.js +20 -0
  97. package/dist/utils/core/error/validation.js.map +1 -0
  98. package/dist/utils/core/headers.d.ts +2 -0
  99. package/dist/utils/core/headers.js +10 -0
  100. package/dist/utils/core/headers.js.map +1 -0
  101. package/dist/utils/core/helper.d.ts +6 -0
  102. package/dist/utils/core/helper.js +66 -0
  103. package/dist/utils/core/helper.js.map +1 -0
  104. package/dist/utils/core/index.d.ts +10 -0
  105. package/dist/utils/core/index.js +27 -0
  106. package/dist/utils/core/index.js.map +1 -0
  107. package/dist/utils/core/multipart.d.ts +9 -0
  108. package/dist/utils/core/multipart.js +207 -0
  109. package/dist/utils/core/multipart.js.map +1 -0
  110. package/dist/utils/core/request.d.ts +100 -0
  111. package/dist/utils/core/request.js +218 -0
  112. package/dist/utils/core/request.js.map +1 -0
  113. package/dist/utils/core/response.d.ts +48 -0
  114. package/dist/utils/core/response.js +269 -0
  115. package/dist/utils/core/response.js.map +1 -0
  116. package/dist/utils/core/routeWalker.d.ts +2 -0
  117. package/dist/utils/core/routeWalker.js +115 -0
  118. package/dist/utils/core/routeWalker.js.map +1 -0
  119. package/dist/utils/core/sanitize.d.ts +30 -0
  120. package/dist/utils/core/sanitize.js +134 -0
  121. package/dist/utils/core/sanitize.js.map +1 -0
  122. package/dist/utils/shared/index.d.ts +2 -0
  123. package/dist/utils/shared/index.js +19 -0
  124. package/dist/utils/shared/index.js.map +1 -0
  125. package/dist/utils/shared/parsers.d.ts +11 -0
  126. package/dist/utils/shared/parsers.js +133 -0
  127. package/dist/utils/shared/parsers.js.map +1 -0
  128. package/dist/utils/shared/validate.d.ts +1 -0
  129. package/dist/utils/shared/validate.js +41 -0
  130. package/dist/utils/shared/validate.js.map +1 -0
  131. package/dist/utils/socket/index.d.ts +3 -0
  132. package/dist/utils/socket/index.js +20 -0
  133. package/dist/utils/socket/index.js.map +1 -0
  134. package/dist/utils/socket/server.d.ts +33 -0
  135. package/dist/utils/socket/server.js +218 -0
  136. package/dist/utils/socket/server.js.map +1 -0
  137. package/dist/utils/socket/service.d.ts +20 -0
  138. package/dist/utils/socket/service.js +42 -0
  139. package/dist/utils/socket/service.js.map +1 -0
  140. package/dist/utils/socket/socket.d.ts +16 -0
  141. package/dist/utils/socket/socket.js +33 -0
  142. package/dist/utils/socket/socket.js.map +1 -0
  143. package/dist/utils/sse/index.d.ts +2 -0
  144. package/dist/utils/sse/index.js +19 -0
  145. package/dist/utils/sse/index.js.map +1 -0
  146. package/dist/utils/sse/server.d.ts +14 -0
  147. package/dist/utils/sse/server.js +85 -0
  148. package/dist/utils/sse/server.js.map +1 -0
  149. package/dist/utils/sse/service.d.ts +17 -0
  150. package/dist/utils/sse/service.js +40 -0
  151. package/dist/utils/sse/service.js.map +1 -0
  152. package/package.json +37 -0
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyMiddlewaresVsSanitizers = exports.getResponse = exports.NextFunction = exports.findRouteInController = exports.getAllMethods = exports.getControllerMethods = exports.executeControllerMethod = void 0;
4
+ require("reflect-metadata");
5
+ const constants_1 = require("../../constants");
6
+ const core_1 = require("../../types/core");
7
+ const shared_1 = require("../shared");
8
+ const socket_1 = require("../socket");
9
+ const sse_1 = require("../sse");
10
+ const helper_1 = require("./helper");
11
+ const multipart_1 = require("./multipart");
12
+ const sanitize_1 = require("./sanitize");
13
+ const getBodyAndMultipart = (request) => {
14
+ let body = request.body;
15
+ let multipart;
16
+ if (multipart_1.MultipartProcessor.isMultipart({ headers: request.headers })) {
17
+ const { fields, files } = multipart_1.MultipartProcessor.parse({
18
+ body: request.rawBody || request.body,
19
+ headers: request.headers,
20
+ isBase64Encoded: request.isBase64Encoded,
21
+ });
22
+ multipart = files;
23
+ body = fields;
24
+ }
25
+ return { multipart, body };
26
+ };
27
+ const executeControllerMethod = async (controller, propertyName, request, response) => {
28
+ const fn = controller[propertyName];
29
+ if (typeof fn !== 'function')
30
+ return null;
31
+ const endpointMeta = Reflect.getMetadata(constants_1.ENDPOINT, controller, propertyName);
32
+ if (!endpointMeta)
33
+ return null;
34
+ const methodMiddlewares = Reflect.getMetadata(constants_1.MIDDLEWARES, controller, propertyName) || [];
35
+ try {
36
+ for (let middleware of methodMiddlewares) {
37
+ await middleware(request, response, exports.NextFunction);
38
+ }
39
+ const prototype = Object.getPrototypeOf(controller);
40
+ const paramMetadata = Reflect.getMetadata(constants_1.PARAM_METADATA_KEY, prototype, propertyName) || [];
41
+ if (paramMetadata.length === 0) {
42
+ return fn.call(controller, request, response);
43
+ }
44
+ const { body, multipart } = getBodyAndMultipart(request);
45
+ const args = [];
46
+ const totalParams = Math.max(paramMetadata.length ? Math.max(...paramMetadata.map((p) => p.index)) + 1 : 0);
47
+ for (let i = 0; i < totalParams; i++) {
48
+ const param = paramMetadata.find((p) => p.index === i);
49
+ if (!param) {
50
+ args[i] = undefined;
51
+ continue;
52
+ }
53
+ let value = request[param.type];
54
+ if (param.type === 'multipart') {
55
+ value = multipart;
56
+ }
57
+ if (param.type === 'ws') {
58
+ value = socket_1.WebSocketService.getInstance();
59
+ }
60
+ if (param.type === 'sse') {
61
+ value = sse_1.SSEService.getInstance();
62
+ }
63
+ if (param.type === 'request') {
64
+ value = request;
65
+ }
66
+ if (param.type === 'body') {
67
+ value = body;
68
+ }
69
+ if (param.type === 'response') {
70
+ value = response;
71
+ }
72
+ if (constants_1.TO_VALIDATE.includes(param.type)) {
73
+ const validated = await (0, shared_1.validate)(param.dto, value);
74
+ value = param.name ? validated?.[param.name] : validated;
75
+ }
76
+ args[i] = value;
77
+ }
78
+ return await fn.apply(controller, args);
79
+ }
80
+ catch (error) {
81
+ if (typeof error === 'string') {
82
+ const catched = new Error(error);
83
+ catched.stack = `${catched.name}: ${catched.message}\n at ${controller.constructor?.name}.${propertyName}\n${catched.stack}`;
84
+ catched.original = error;
85
+ catched.controller = controller.constructor?.name;
86
+ catched.method = propertyName;
87
+ catched.status = 500;
88
+ response.error(catched);
89
+ throw catched;
90
+ }
91
+ throw error;
92
+ }
93
+ };
94
+ exports.executeControllerMethod = executeControllerMethod;
95
+ const getControllerMethods = (controller) => {
96
+ const methods = [];
97
+ let proto = Object.getPrototypeOf(controller);
98
+ while (proto && proto !== Object.prototype) {
99
+ const propertyNames = Object.getOwnPropertyNames(proto);
100
+ for (const propertyName of propertyNames) {
101
+ if (propertyName === 'constructor')
102
+ continue;
103
+ const endpointMeta = Reflect.getMetadata(constants_1.ENDPOINT, proto, propertyName);
104
+ if (endpointMeta) {
105
+ const [httpMethod, pattern] = endpointMeta;
106
+ const methodMiddlewares = Reflect.getMetadata(constants_1.MIDDLEWARES, proto, propertyName);
107
+ methods.push({
108
+ name: propertyName,
109
+ httpMethod,
110
+ pattern,
111
+ middlewares: methodMiddlewares,
112
+ });
113
+ }
114
+ }
115
+ proto = Object.getPrototypeOf(proto);
116
+ }
117
+ return methods.sort((a, b) => (a.httpMethod === core_1.HTTP_METHODS.ANY ? 1 : -1));
118
+ };
119
+ exports.getControllerMethods = getControllerMethods;
120
+ const getAllMethods = (obj) => {
121
+ let methods = new Set();
122
+ let current = Object.getPrototypeOf(obj);
123
+ while (current && current !== Object.prototype) {
124
+ Object.getOwnPropertyNames(current).forEach((name) => {
125
+ if (name !== 'constructor' && typeof current[name] === 'function') {
126
+ methods.add(name);
127
+ }
128
+ });
129
+ current = Object.getPrototypeOf(current);
130
+ }
131
+ return Array.from(methods);
132
+ };
133
+ exports.getAllMethods = getAllMethods;
134
+ const findRouteInController = (instance, path, route, method) => {
135
+ const prototype = Object.getPrototypeOf(instance);
136
+ const propertyNames = (0, exports.getAllMethods)(instance);
137
+ const matches = [];
138
+ for (const name of propertyNames) {
139
+ if ([
140
+ 'constructor',
141
+ 'getResponse',
142
+ 'routeWalker',
143
+ 'getAllMethods',
144
+ 'findRouteInController',
145
+ ].includes(name))
146
+ continue;
147
+ const endpointMeta = Reflect.getMetadata(constants_1.ENDPOINT, prototype, name) || [];
148
+ const sanitizers = Reflect.getMetadata(constants_1.SANITIZE, prototype, name) ?? [];
149
+ if (endpointMeta.length === 0)
150
+ continue;
151
+ const [httpMethod, routePattern, middlewares] = endpointMeta;
152
+ if (httpMethod !== method && httpMethod !== 'ANY') {
153
+ continue;
154
+ }
155
+ if (httpMethod === 'ANY') {
156
+ let useRoute = route.split('/');
157
+ route = useRoute[0];
158
+ }
159
+ const current = [path, routePattern].join('/').replace(/\/+/g, '/');
160
+ const pathParams = (0, helper_1.matchRoute)(current, route);
161
+ if (pathParams) {
162
+ const priority = httpMethod === 'ANY' ? 0 : Object.keys(pathParams).length > 0 ? 1 : 2;
163
+ matches.push({
164
+ name,
165
+ pathParams,
166
+ priority,
167
+ cors: Reflect.getMetadata(constants_1.CORS_METADATA, prototype, name),
168
+ middlewares,
169
+ sanitizers,
170
+ });
171
+ }
172
+ }
173
+ matches.sort((a, b) => b.priority - a.priority);
174
+ return matches[0];
175
+ };
176
+ exports.findRouteInController = findRouteInController;
177
+ const NextFunction = (error) => {
178
+ if (error)
179
+ throw { status: error.status ?? 500, message: error.message ?? error };
180
+ };
181
+ exports.NextFunction = NextFunction;
182
+ const getResponse = async (data) => {
183
+ let appResponse = await (0, exports.executeControllerMethod)(data.controllerInstance, data.name, data.request, data.response);
184
+ if (!appResponse) {
185
+ return;
186
+ }
187
+ data.response.status = appResponse.status ?? 200;
188
+ const isError = !constants_1.OK_STATUSES.includes(data.response.status);
189
+ const interceptors = data.interceptors.reverse();
190
+ for (let index = 0; index < interceptors?.length && !isError; index++) {
191
+ const interceptor = interceptors[index];
192
+ appResponse = await Promise.resolve(interceptor(appResponse, data.request, data.response));
193
+ }
194
+ const propertyName = data.name;
195
+ const prototype = Object.getPrototypeOf(data.controllerInstance);
196
+ const methodOkStatus = Reflect.getMetadata(constants_1.OK_METADATA_KEY, data.controllerInstance, propertyName);
197
+ if (methodOkStatus) {
198
+ !isError && (data.response.status = methodOkStatus);
199
+ }
200
+ else {
201
+ const classOkStatus = Reflect.getMetadata(constants_1.OK_METADATA_KEY, prototype);
202
+ !isError && classOkStatus && (data.response.status = classOkStatus);
203
+ }
204
+ return appResponse;
205
+ };
206
+ exports.getResponse = getResponse;
207
+ const applyMiddlewaresVsSanitizers = async (request, response, functions) => {
208
+ const length = Math.max(functions.sanitizers.length, functions.middlewares.length);
209
+ for (let i = 0; i < length; i++) {
210
+ const mws = functions.middlewares[i] ?? [];
211
+ const sntzs = functions.sanitizers[i] ?? [];
212
+ (0, sanitize_1.sanitizeRequest)(request, sntzs);
213
+ for (let middleware of mws) {
214
+ await middleware(request, response, exports.NextFunction);
215
+ }
216
+ }
217
+ };
218
+ exports.applyMiddlewaresVsSanitizers = applyMiddlewaresVsSanitizers;
219
+ //# sourceMappingURL=controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/utils/core/controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { CORSConfig, IRequest } from '../../types/core';
2
+ export declare function handleCORS(req: IRequest, res: any, config: CORSConfig): {
3
+ permitted: boolean;
4
+ continue: boolean;
5
+ };
6
+ export declare function isPreflightRequest(req: any): boolean;
7
+ export declare const getCORSConfig: (controller: any, methodName?: string) => CORSConfig | null;
8
+ export declare const getCORSHeaders: (req: any, config: CORSConfig) => Record<string, string>;
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCORSHeaders = exports.getCORSConfig = void 0;
4
+ exports.handleCORS = handleCORS;
5
+ exports.isPreflightRequest = isPreflightRequest;
6
+ const constants_1 = require("../../constants");
7
+ const headers_1 = require("./headers");
8
+ function handleCORS(req, res, config) {
9
+ const origin = (0, headers_1.getOrigin)(req);
10
+ function isOriginAllowed() {
11
+ if (!origin)
12
+ return false;
13
+ if (config.origin === '*')
14
+ return true;
15
+ if (typeof config.origin === 'string')
16
+ return config.origin === origin;
17
+ if (Array.isArray(config.origin))
18
+ return config.origin.includes(origin);
19
+ if (typeof config.origin === 'function')
20
+ return config.origin(origin);
21
+ return false;
22
+ }
23
+ if (origin && !isOriginAllowed()) {
24
+ res.statusCode = 403;
25
+ res.setHeader('Content-Type', 'application/json');
26
+ return { permitted: false, continue: false };
27
+ }
28
+ if (req.method === 'OPTIONS') {
29
+ if (origin) {
30
+ res.setHeader('Access-Control-Allow-Origin', origin);
31
+ }
32
+ else if (config.origin === '*') {
33
+ res.setHeader('Access-Control-Allow-Origin', '*');
34
+ }
35
+ if (config.methods) {
36
+ res.setHeader('Access-Control-Allow-Methods', config.methods.join(', '));
37
+ }
38
+ if (config.allowedHeaders) {
39
+ res.setHeader('Access-Control-Allow-Headers', config.allowedHeaders.join(', '));
40
+ }
41
+ if (config.credentials) {
42
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
43
+ }
44
+ if (config.maxAge) {
45
+ res.setHeader('Access-Control-Max-Age', config.maxAge.toString());
46
+ }
47
+ res.statusCode = config.optionsSuccessStatus || 204;
48
+ return { permitted: true, continue: false };
49
+ }
50
+ if (origin) {
51
+ res.setHeader('Access-Control-Allow-Origin', origin);
52
+ if (config.credentials) {
53
+ res.setHeader('Access-Control-Allow-Credentials', 'true');
54
+ }
55
+ if (config.exposedHeaders) {
56
+ res.setHeader('Access-Control-Expose-Headers', config.exposedHeaders.join(', '));
57
+ }
58
+ }
59
+ return { permitted: true, continue: true };
60
+ }
61
+ function isPreflightRequest(req) {
62
+ return (req.method === 'OPTIONS' && req.headers['access-control-request-method'] && req.headers.origin);
63
+ }
64
+ const getCORSConfig = (controller, methodName) => {
65
+ if (methodName) {
66
+ const methodConfig = Reflect.getMetadata(constants_1.CORS_METADATA, controller, methodName);
67
+ if (methodConfig) {
68
+ return methodConfig;
69
+ }
70
+ }
71
+ if (controller && controller.constructor) {
72
+ const classConfig = Reflect.getMetadata(constants_1.CORS_METADATA, controller.constructor.prototype);
73
+ if (classConfig) {
74
+ return classConfig;
75
+ }
76
+ }
77
+ return null;
78
+ };
79
+ exports.getCORSConfig = getCORSConfig;
80
+ const getCORSHeaders = (req, config) => {
81
+ const headers = {};
82
+ const origin = req?.headers?.origin || req?.headers?.Origin;
83
+ if (!origin)
84
+ return headers;
85
+ let allowedOrigin = null;
86
+ if (config.origin === '*') {
87
+ allowedOrigin = '*';
88
+ }
89
+ else if (typeof config.origin === 'string') {
90
+ allowedOrigin = config.origin;
91
+ }
92
+ else if (Array.isArray(config.origin)) {
93
+ if (config.origin.includes(origin)) {
94
+ allowedOrigin = origin;
95
+ }
96
+ }
97
+ else if (typeof config.origin === 'function') {
98
+ if (config.origin(origin)) {
99
+ allowedOrigin = origin;
100
+ }
101
+ }
102
+ else if (config.origin === true) {
103
+ allowedOrigin = origin;
104
+ }
105
+ if (allowedOrigin) {
106
+ headers['Access-Control-Allow-Origin'] = allowedOrigin;
107
+ if (config.credentials) {
108
+ headers['Access-Control-Allow-Credentials'] = 'true';
109
+ }
110
+ if (config.exposedHeaders?.length) {
111
+ headers['Access-Control-Expose-Headers'] = config.exposedHeaders.join(', ');
112
+ }
113
+ if (req.method === 'OPTIONS') {
114
+ if (config.methods?.length) {
115
+ headers['Access-Control-Allow-Methods'] = config.methods.join(', ');
116
+ }
117
+ if (config.allowedHeaders?.length) {
118
+ headers['Access-Control-Allow-Headers'] = config.allowedHeaders.join(', ');
119
+ }
120
+ if (config.maxAge) {
121
+ headers['Access-Control-Max-Age'] = config.maxAge.toString();
122
+ }
123
+ }
124
+ }
125
+ return headers;
126
+ };
127
+ exports.getCORSHeaders = getCORSHeaders;
128
+ //# sourceMappingURL=cors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../../src/utils/core/cors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ParamDecoratorType } from '../../types/core';
2
+ export declare function createParamDecorator(type: ParamDecoratorType, dto?: any, name?: string): (target: any, propertyKey: string | symbol, parameterIndex: number) => void;
3
+ export declare const pathStartsWithPrefix: (path: string, prefix: string) => boolean;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pathStartsWithPrefix = void 0;
4
+ exports.createParamDecorator = createParamDecorator;
5
+ const constants_1 = require("../../constants");
6
+ function createParamDecorator(type, dto, name) {
7
+ return function (target, propertyKey, parameterIndex) {
8
+ const existingParams = Reflect.getMetadata(constants_1.PARAM_METADATA_KEY, target, propertyKey) || [];
9
+ existingParams.push({ index: parameterIndex, type, dto, name });
10
+ existingParams.sort((a, b) => a.index - b.index);
11
+ Reflect.defineMetadata(constants_1.PARAM_METADATA_KEY, existingParams, target, propertyKey);
12
+ };
13
+ }
14
+ const pathStartsWithPrefix = (path, prefix) => {
15
+ const pathSegments = path.split('/').filter(Boolean);
16
+ const prefixSegments = prefix.split('/').filter(Boolean);
17
+ if (prefixSegments.length > pathSegments.length) {
18
+ return false;
19
+ }
20
+ for (let i = 0; i < prefixSegments.length; i++) {
21
+ if (pathSegments[i] !== prefixSegments[i]) {
22
+ return false;
23
+ }
24
+ }
25
+ return true;
26
+ };
27
+ exports.pathStartsWithPrefix = pathStartsWithPrefix;
28
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/utils/core/endpoint.ts"],"names":[],"mappings":";;;AAGA,oDAUC;AAbD,+CAAqD;AAGrD,SAAgB,oBAAoB,CAAC,IAAwB,EAAE,GAAS,EAAE,IAAa;IACrF,OAAO,UAAU,MAAW,EAAE,WAA4B,EAAE,cAAsB;QAChF,MAAM,cAAc,GAClB,OAAO,CAAC,WAAW,CAAC,8BAAkB,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;QAErE,cAAc,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEjD,OAAO,CAAC,cAAc,CAAC,8BAAkB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IAClF,CAAC,CAAC;AACJ,CAAC;AAEM,MAAM,oBAAoB,GAAG,CAAC,IAAY,EAAE,MAAc,EAAW,EAAE;IAC5E,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzD,IAAI,cAAc,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,YAAY,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B"}
@@ -0,0 +1,31 @@
1
+ import { Meta } from '../../../types/core/common';
2
+ import { ErrorCode, ErrorDetails, ErrorHandlerConfig } from '../../../types/core/error';
3
+ export declare class ApplicationError {
4
+ private config;
5
+ code: ErrorCode;
6
+ status: number;
7
+ message: string;
8
+ details?: ErrorDetails[];
9
+ timestamp: Date;
10
+ requestId?: string;
11
+ path?: string;
12
+ stack?: unknown;
13
+ constructor(error: unknown, data: {
14
+ meta: Meta;
15
+ config: ErrorHandlerConfig;
16
+ status?: number;
17
+ });
18
+ private normalizeError;
19
+ private formatValidationErrors;
20
+ private logError;
21
+ toJSON(): {
22
+ code: ErrorCode;
23
+ status: number;
24
+ message: ErrorCode;
25
+ details: ErrorDetails[] | undefined;
26
+ timestamp: Date;
27
+ requestId: string | undefined;
28
+ path: string | undefined;
29
+ stack: unknown;
30
+ };
31
+ }
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationError = void 0;
4
+ const error_1 = require("../../../types/core/error");
5
+ const authorizations_1 = require("./authorizations");
6
+ const base_1 = require("./base");
7
+ const notfound_1 = require("./notfound");
8
+ const validation_1 = require("./validation");
9
+ class ApplicationError {
10
+ config;
11
+ code;
12
+ status;
13
+ message;
14
+ details;
15
+ timestamp;
16
+ requestId;
17
+ path;
18
+ stack;
19
+ constructor(error, data) {
20
+ this.config = {
21
+ includeStack: process.env.NODE_ENV !== 'production',
22
+ logErrors: true,
23
+ logStack: true,
24
+ ...(data.config ?? {}),
25
+ };
26
+ const appError = this.normalizeError(error, data.meta);
27
+ if (this.config.logErrors) {
28
+ this.logError(appError, data.meta);
29
+ }
30
+ this.code = appError.code;
31
+ this.status = appError.status;
32
+ this.message = appError.code;
33
+ this.details = appError.details;
34
+ this.timestamp = appError.timestamp ?? new Date();
35
+ this.requestId = data.meta.requestId;
36
+ this.path = appError.path;
37
+ this.details = appError.details;
38
+ this.stack = appError.cause?.stack?.split('\n').map((line) => line.trim());
39
+ }
40
+ normalizeError(error, request) {
41
+ if (error instanceof base_1.BaseError) {
42
+ return error;
43
+ }
44
+ if (error?.errors) {
45
+ const details = this.formatValidationErrors(error?.errors);
46
+ return new validation_1.ValidationError(details, request);
47
+ }
48
+ const base = {
49
+ requestId: request.requestId,
50
+ path: request.requestUrl.pathname,
51
+ method: request.method,
52
+ };
53
+ if ((error.status ?? error.statusCode) == 401) {
54
+ return new authorizations_1.UnauthorizedError(error_1.ErrorCode.UNAUTHORIZED, base);
55
+ }
56
+ if ((error.status ?? error.statusCode) == 404) {
57
+ return new notfound_1.NotFoundError(request.requestUrl.pathname, request.requestId);
58
+ }
59
+ if (error instanceof Error) {
60
+ return new base_1.BaseError(error_1.ErrorCode.INTERNAL_ERROR, error.message, {
61
+ status: 500,
62
+ cause: error,
63
+ ...base,
64
+ });
65
+ }
66
+ if (typeof error === 'string') {
67
+ return new base_1.BaseError(error_1.ErrorCode.INTERNAL_ERROR, error, {
68
+ status: 500,
69
+ ...base,
70
+ });
71
+ }
72
+ if (typeof error === 'object' && error !== null) {
73
+ const err = error;
74
+ return new base_1.BaseError(err.code || error_1.ErrorCode.INTERNAL_ERROR, err.message || 'Unknown error', {
75
+ status: err.status || 500,
76
+ details: err.details,
77
+ ...base,
78
+ });
79
+ }
80
+ return new base_1.BaseError(error_1.ErrorCode.INTERNAL_ERROR, 'Unknown error', {
81
+ status: 500,
82
+ ...base,
83
+ });
84
+ }
85
+ formatValidationErrors(errors) {
86
+ return errors.map((error) => ({
87
+ field: error.property,
88
+ value: error.value,
89
+ constraints: error.constraints ? Object.values(error.constraints) : [],
90
+ children: error.children?.length ? this.formatValidationErrors(error.children) : undefined,
91
+ }));
92
+ }
93
+ logError(error, meta) {
94
+ const logEntry = {
95
+ timestamp: error.timestamp.toISOString(),
96
+ requestId: error.requestId,
97
+ method: error.method,
98
+ path: error.path,
99
+ code: error.code,
100
+ status: error.status,
101
+ message: error.message,
102
+ details: error.details,
103
+ stack: this.config.includeStack ? error.stack : undefined,
104
+ ip: meta.sourceIp,
105
+ userAgent: meta.userAgent,
106
+ };
107
+ if (error.status >= 500) {
108
+ console.error(JSON.stringify(logEntry, null, 2));
109
+ }
110
+ else if (error.status >= 400) {
111
+ console.warn(JSON.stringify(logEntry));
112
+ }
113
+ else {
114
+ console.info(JSON.stringify(logEntry));
115
+ }
116
+ }
117
+ toJSON() {
118
+ return {
119
+ code: this.code,
120
+ status: this.status,
121
+ message: this.code,
122
+ details: this.details,
123
+ timestamp: this.timestamp ?? new Date(),
124
+ requestId: this.requestId,
125
+ path: this.path,
126
+ stack: this.stack,
127
+ };
128
+ }
129
+ }
130
+ exports.ApplicationError = ApplicationError;
131
+ //# sourceMappingURL=apperror.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apperror.js","sourceRoot":"","sources":["../../../../src/utils/core/error/apperror.ts"],"names":[],"mappings":";;;AACA,qDAAkG;AAClG,qDAAqD;AACrD,iCAAmC;AACnC,yCAA2C;AAC3C,6CAA+C;AAE/C,MAAa,gBAAgB;IACnB,MAAM,CAAqB;IACnC,IAAI,CAAY;IAChB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,OAAO,CAAkB;IACzB,SAAS,CAAO;IAChB,SAAS,CAAU;IACnB,IAAI,CAAU;IACd,KAAK,CAAW;IAEhB,YAAY,KAAc,EAAE,IAAiE;QAC3F,IAAI,CAAC,MAAM,GAAG;YACZ,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY;YACnD,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,IAAI;YACd,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;SACvB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,GAAI,QAAQ,CAAC,KAAa,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9F,CAAC;IAEO,cAAc,CACpB,KAAU,EACV,OAA+D;QAE/D,IAAI,KAAK,YAAY,gBAAS,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC3D,OAAO,IAAI,4BAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,MAAM,IAAI,GAAG;YACX,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ;YACjC,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;YAC9C,OAAO,IAAI,kCAAiB,CAAC,iBAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC;YAC9C,OAAO,IAAI,wBAAa,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,IAAI,gBAAS,CAAC,iBAAS,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE;gBAC5D,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,KAAK;gBACZ,GAAG,IAAI;aACR,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,gBAAS,CAAC,iBAAS,CAAC,cAAc,EAAE,KAAK,EAAE;gBACpD,MAAM,EAAE,GAAG;gBACX,GAAG,IAAI;aACR,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAChD,MAAM,GAAG,GAAG,KAAY,CAAC;YACzB,OAAO,IAAI,gBAAS,CAAC,GAAG,CAAC,IAAI,IAAI,iBAAS,CAAC,cAAc,EAAE,GAAG,CAAC,OAAO,IAAI,eAAe,EAAE;gBACzF,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,GAAG;gBACzB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,GAAG,IAAI;aACR,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,gBAAS,CAAC,iBAAS,CAAC,cAAc,EAAE,eAAe,EAAE;YAC9D,MAAM,EAAE,GAAG;YACX,GAAG,IAAI;SACR,CAAC,CAAC;IACL,CAAC;IAEO,sBAAsB,CAAC,MAAa;QAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC5B,KAAK,EAAE,KAAK,CAAC,QAAQ;YACrB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;YACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SAC3F,CAAC,CAAC,CAAC;IACN,CAAC;IAEO,QAAQ,CAAC,KAAe,EAAE,IAAU;QAC1C,MAAM,QAAQ,GAAG;YACf,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YACxC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;YACzD,EAAE,EAAE,IAAI,CAAC,QAAQ;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;QAEF,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE;YACvC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAvID,4CAuIC"}
@@ -0,0 +1,7 @@
1
+ import { BaseError } from './base';
2
+ export declare class UnauthorizedError extends BaseError {
3
+ constructor(message?: string, options?: {
4
+ requestId?: string;
5
+ path?: string;
6
+ });
7
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UnauthorizedError = void 0;
4
+ const error_1 = require("../../../types/core/error");
5
+ const base_1 = require("./base");
6
+ class UnauthorizedError extends base_1.BaseError {
7
+ constructor(message = 'Unauthorized', options) {
8
+ super(error_1.ErrorCode.UNAUTHORIZED, message, {
9
+ status: 401,
10
+ requestId: options?.requestId,
11
+ path: options?.path,
12
+ });
13
+ this.name = 'UnauthorizedError';
14
+ }
15
+ }
16
+ exports.UnauthorizedError = UnauthorizedError;
17
+ //# sourceMappingURL=authorizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authorizations.js","sourceRoot":"","sources":["../../../../src/utils/core/error/authorizations.ts"],"names":[],"mappings":";;;AAAA,qDAAsD;AACtD,iCAAmC;AAEnC,MAAa,iBAAkB,SAAQ,gBAAS;IAC9C,YAAY,OAAO,GAAG,cAAc,EAAE,OAA+C;QACnF,KAAK,CAAC,iBAAS,CAAC,YAAY,EAAE,OAAO,EAAE;YACrC,MAAM,EAAE,GAAG;YACX,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,IAAI,EAAE,OAAO,EAAE,IAAI;SACpB,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AATD,8CASC"}
@@ -0,0 +1,20 @@
1
+ import { AppError, ErrorCode, ErrorDetails, ErrorResponse } from '../../../types/core/error';
2
+ export declare class BaseError extends Error implements AppError {
3
+ readonly code: ErrorCode;
4
+ readonly status: number;
5
+ readonly details?: ErrorDetails[];
6
+ readonly timestamp: Date;
7
+ readonly requestId?: string;
8
+ readonly path?: string;
9
+ readonly method?: string;
10
+ constructor(code: ErrorCode, message: string, options?: {
11
+ status?: number;
12
+ details?: ErrorDetails[];
13
+ requestId?: string;
14
+ path?: string;
15
+ method?: string;
16
+ cause?: Error;
17
+ });
18
+ toResponse(): ErrorResponse;
19
+ private getDefaultStatus;
20
+ }