@carno.js/core 0.2.8 → 0.2.9

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 (45) hide show
  1. package/dist/Carno.d.ts +9 -7
  2. package/dist/Carno.js +14 -1
  3. package/dist/commons/decorators/index.d.ts +1 -0
  4. package/dist/commons/decorators/index.js +1 -0
  5. package/dist/commons/decorators/validation.decorator.d.ts +32 -0
  6. package/dist/commons/decorators/validation.decorator.js +40 -0
  7. package/dist/constants.d.ts +1 -0
  8. package/dist/constants.js +2 -1
  9. package/dist/container/InjectorService.d.ts +3 -1
  10. package/dist/container/InjectorService.js +4 -3
  11. package/dist/container/MethodInvoker.d.ts +3 -2
  12. package/dist/container/MethodInvoker.js +4 -17
  13. package/dist/index.d.ts +1 -0
  14. package/dist/index.js +1 -0
  15. package/dist/route/ParamResolverFactory.d.ts +0 -5
  16. package/dist/route/ParamResolverFactory.js +0 -40
  17. package/dist/route/RouteCompiler.d.ts +3 -3
  18. package/dist/route/RouteCompiler.js +2 -11
  19. package/dist/utils/ValidationCache.d.ts +2 -0
  20. package/dist/utils/ValidationCache.js +10 -2
  21. package/dist/utils/index.d.ts +0 -1
  22. package/dist/utils/index.js +0 -1
  23. package/dist/validation/ValidatorAdapter.d.ts +66 -0
  24. package/dist/validation/ValidatorAdapter.js +20 -0
  25. package/dist/validation/adapters/ClassValidatorAdapter.d.ts +23 -0
  26. package/dist/validation/adapters/ClassValidatorAdapter.js +47 -0
  27. package/dist/validation/adapters/ZodAdapter.d.ts +14 -0
  28. package/dist/validation/adapters/ZodAdapter.js +56 -0
  29. package/dist/validation/adapters/index.d.ts +4 -0
  30. package/dist/validation/adapters/index.js +7 -0
  31. package/dist/validation/index.d.ts +3 -0
  32. package/dist/validation/index.js +20 -0
  33. package/package.json +17 -6
  34. package/dist/Cheetah.d.ts +0 -65
  35. package/dist/Cheetah.js +0 -307
  36. package/dist/default-routes-cheetah.d.ts +0 -3
  37. package/dist/default-routes-cheetah.js +0 -29
  38. package/dist/domain/CheetahClosure.d.ts +0 -1
  39. package/dist/domain/CheetahClosure.js +0 -2
  40. package/dist/domain/CheetahMiddleware.d.ts +0 -5
  41. package/dist/domain/CheetahMiddleware.js +0 -2
  42. package/dist/services/request-logger.service.d.ts +0 -15
  43. package/dist/services/request-logger.service.js +0 -50
  44. package/dist/utils/isClassValidator.d.ts +0 -6
  45. package/dist/utils/isClassValidator.js +0 -13
@@ -0,0 +1,14 @@
1
+ import type { ValidatorAdapter } from "../ValidatorAdapter";
2
+ export interface ZodAdapterOptions {
3
+ }
4
+ export declare class ZodAdapter implements ValidatorAdapter<ZodAdapterOptions> {
5
+ private options;
6
+ constructor(options?: ZodAdapterOptions);
7
+ getName(): string;
8
+ getOptions(): ZodAdapterOptions;
9
+ hasValidation(target: Function): boolean;
10
+ validateAndTransform(target: Function, value: any): any;
11
+ private getSchema;
12
+ private formatZodErrors;
13
+ private buildFieldPath;
14
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZodAdapter = void 0;
4
+ const Metadata_1 = require("../../domain/Metadata");
5
+ const HttpException_1 = require("../../exceptions/HttpException");
6
+ const constants_1 = require("../../constants");
7
+ class ZodAdapter {
8
+ constructor(options = {}) {
9
+ this.options = options;
10
+ }
11
+ getName() {
12
+ return "ZodAdapter";
13
+ }
14
+ getOptions() {
15
+ return this.options;
16
+ }
17
+ hasValidation(target) {
18
+ return Metadata_1.Metadata.has(constants_1.VALIDATION_ZOD_SCHEMA, target);
19
+ }
20
+ validateAndTransform(target, value) {
21
+ const schema = this.getSchema(target);
22
+ if (!schema) {
23
+ return value;
24
+ }
25
+ const result = schema.safeParse(value);
26
+ if (!result.success) {
27
+ const formattedErrors = this.formatZodErrors(result.error);
28
+ throw new HttpException_1.HttpException(formattedErrors, 400);
29
+ }
30
+ return result.data;
31
+ }
32
+ getSchema(target) {
33
+ return Metadata_1.Metadata.get(constants_1.VALIDATION_ZOD_SCHEMA, target);
34
+ }
35
+ formatZodErrors(error) {
36
+ const issuesMap = new Map();
37
+ for (const issue of error.issues) {
38
+ const field = this.buildFieldPath(issue.path);
39
+ if (!issuesMap.has(field)) {
40
+ issuesMap.set(field, []);
41
+ }
42
+ issuesMap.get(field).push(issue.message);
43
+ }
44
+ return Array.from(issuesMap.entries()).map(([field, messages]) => ({
45
+ field,
46
+ messages,
47
+ }));
48
+ }
49
+ buildFieldPath(path) {
50
+ if (path.length === 0) {
51
+ return "body";
52
+ }
53
+ return path.map(p => String(p)).join(".");
54
+ }
55
+ }
56
+ exports.ZodAdapter = ZodAdapter;
@@ -0,0 +1,4 @@
1
+ export { ZodAdapter } from "./ZodAdapter";
2
+ export type { ZodAdapterOptions } from "./ZodAdapter";
3
+ export { ClassValidatorAdapter } from "./ClassValidatorAdapter";
4
+ export type { ClassValidatorAdapterOptions } from "./ClassValidatorAdapter";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ClassValidatorAdapter = exports.ZodAdapter = void 0;
4
+ var ZodAdapter_1 = require("./ZodAdapter");
5
+ Object.defineProperty(exports, "ZodAdapter", { enumerable: true, get: function () { return ZodAdapter_1.ZodAdapter; } });
6
+ var ClassValidatorAdapter_1 = require("./ClassValidatorAdapter");
7
+ Object.defineProperty(exports, "ClassValidatorAdapter", { enumerable: true, get: function () { return ClassValidatorAdapter_1.ClassValidatorAdapter; } });
@@ -0,0 +1,3 @@
1
+ export type { ValidatorAdapter, ValidatorAdapterConstructor, ValidationConfig, ValidatorAdapterOptions, } from "./ValidatorAdapter";
2
+ export { defineValidation } from "./ValidatorAdapter";
3
+ export * from "./adapters";
@@ -0,0 +1,20 @@
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
+ exports.defineValidation = void 0;
18
+ var ValidatorAdapter_1 = require("./ValidatorAdapter");
19
+ Object.defineProperty(exports, "defineValidation", { enumerable: true, get: function () { return ValidatorAdapter_1.defineValidation; } });
20
+ __exportStar(require("./adapters"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carno.js/core",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "Carno.js is a framework for building web applications object oriented with TypeScript and Bun.sh",
5
5
  "keywords": [
6
6
  "bun",
@@ -33,23 +33,34 @@
33
33
  "license": "MIT",
34
34
  "dependencies": {
35
35
  "bentocache": "^1.0.0-beta.5",
36
- "class-transformer": "^0.5.1",
37
- "class-validator": "^0.14.0",
38
36
  "globby": "^10.0.2",
39
37
  "parseurl-fast": "^1.2.0",
40
38
  "pino": "^8.16.1",
41
39
  "pino-pretty": "^10.2.3",
42
- "reflect-metadata": "^0.1.13"
40
+ "reflect-metadata": "^0.1.13",
41
+ "zod": "^4.3.4"
43
42
  },
44
43
  "devDependencies": {
45
44
  "@types/globby": "^9.1.0",
46
- "bun-types": "latest"
45
+ "bun-types": "latest",
46
+ "class-transformer": "^0.5.1",
47
+ "class-validator": "^0.14.3"
47
48
  },
48
49
  "peerDependencies": {
50
+ "class-transformer": "^0.5.1",
51
+ "class-validator": "^0.14.0",
49
52
  "typescript": "^5.0.0"
50
53
  },
54
+ "peerDependenciesMeta": {
55
+ "class-validator": {
56
+ "optional": true
57
+ },
58
+ "class-transformer": {
59
+ "optional": true
60
+ }
61
+ },
51
62
  "publishConfig": {
52
63
  "access": "public"
53
64
  },
54
- "gitHead": "2793d412b70bb432d2c825bae58522ccac87baff"
65
+ "gitHead": "cc116bcd2f96e3cf6e87bbb38d5e4dfe1245150a"
55
66
  }
package/dist/Cheetah.d.ts DELETED
@@ -1,65 +0,0 @@
1
- import { Server } from "bun";
2
- import { ValidatorOptions } from "class-validator";
3
- import * as pino from "pino";
4
- import { TokenRouteWithProvider } from "./container/ContainerConfiguration";
5
- import { CorsConfig } from "./domain/cors-config";
6
- import Memoirist from "./route/memoirist";
7
- export interface ApplicationConfig {
8
- validation?: ValidatorOptions;
9
- logger?: pino.LoggerOptions;
10
- exports?: any[];
11
- providers?: any[];
12
- cors?: CorsConfig;
13
- globalMiddlewares?: any[];
14
- }
15
- export declare class Cheetah {
16
- config: ApplicationConfig;
17
- router: Memoirist<TokenRouteWithProvider>;
18
- private injector;
19
- private fetch;
20
- private server;
21
- constructor(config?: ApplicationConfig);
22
- /**
23
- * Use the Cheetah plugin.
24
- *
25
- * @param plugin
26
- */
27
- use(plugin: Cheetah): this;
28
- private findProviderInConfig;
29
- private getProviderToken;
30
- private shouldCloneProvider;
31
- private cloneProvider;
32
- /**
33
- * Set the custom logger provider.
34
- * The provider must be a class with the @Service() decorator.
35
- * The provider must extend the LoggerService class.
36
- *
37
- * @param provider
38
- */
39
- useLogger(provider: any): this;
40
- private loadProvidersAndControllers;
41
- private registerControllers;
42
- private registerMetadataProviders;
43
- private registerConfigProviders;
44
- private normalizeProvider;
45
- init(): Promise<void>;
46
- listen(port?: number): Promise<void>;
47
- private registerShutdownHandlers;
48
- getHttpServer(): Server<any>;
49
- getInjector(): import(".").InjectorService;
50
- private createHttpServer;
51
- private fetcher;
52
- private catcher;
53
- private bootstrapApplication;
54
- private handleShutdownHook;
55
- private closeHttpServer;
56
- private exitProcess;
57
- private reportHookFailure;
58
- private isCorsEnabled;
59
- private isOriginAllowed;
60
- private buildCorsHeaders;
61
- private handlePreflightRequest;
62
- private applyCorsHeaders;
63
- close(closeActiveConnections?: boolean): void;
64
- private discoverRoutePath;
65
- }
package/dist/Cheetah.js DELETED
@@ -1,307 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.Cheetah = void 0;
7
- const node_process_1 = __importDefault(require("node:process"));
8
- const index_1 = require("./commons/index");
9
- const constants_1 = require("./constants");
10
- const createContainer_1 = require("./container/createContainer");
11
- const createInjector_1 = require("./container/createInjector");
12
- const domain_1 = require("./domain");
13
- const Context_1 = require("./domain/Context");
14
- const LocalsContainer_1 = require("./domain/LocalsContainer");
15
- const cors_config_1 = require("./domain/cors-config");
16
- const on_event_1 = require("./events/on-event");
17
- const HttpException_1 = require("./exceptions/HttpException");
18
- const RouteExecutor_1 = require("./route/RouteExecutor");
19
- const memoirist_1 = __importDefault(require("./route/memoirist"));
20
- const logger_service_1 = require("./services/logger.service");
21
- const parseUrl = require("parseurl-fast");
22
- // todo: change console.log for LoggerService.
23
- class Cheetah {
24
- constructor(config = {}) {
25
- this.config = config;
26
- this.router = new memoirist_1.default();
27
- this.injector = (0, createInjector_1.createInjector)();
28
- this.fetch = async (request, server) => {
29
- try {
30
- return await this.fetcher(request, server);
31
- }
32
- catch (error) {
33
- if (error instanceof HttpException_1.HttpException) {
34
- let response = new Response(JSON.stringify({
35
- message: error.getResponse(),
36
- statusCode: error.getStatus(),
37
- }), {
38
- status: error.statusCode,
39
- headers: { "Content-Type": "application/json" },
40
- });
41
- if (this.isCorsEnabled()) {
42
- const origin = request.headers.get("origin");
43
- if (origin && this.isOriginAllowed(origin)) {
44
- response = this.applyCorsHeaders(response, origin);
45
- }
46
- }
47
- return response;
48
- }
49
- throw error;
50
- }
51
- };
52
- this.catcher = (error) => {
53
- console.error("Unhandled error:", error);
54
- return new Response("Internal Server Error", { status: 500 });
55
- };
56
- void this.bootstrapApplication();
57
- }
58
- /**
59
- * Use the Cheetah plugin.
60
- *
61
- * @param plugin
62
- */
63
- use(plugin) {
64
- if (!this.config.providers) {
65
- this.config.providers = [];
66
- }
67
- if (!this.config.globalMiddlewares) {
68
- this.config.globalMiddlewares = [];
69
- }
70
- for (const exportProvider of plugin.config.exports || []) {
71
- const existingProvider = this.findProviderInConfig(plugin, exportProvider);
72
- const providerToAdd = this.shouldCloneProvider(existingProvider)
73
- ? this.cloneProvider(existingProvider)
74
- : exportProvider;
75
- this.config.providers.push(providerToAdd);
76
- }
77
- if (plugin.config.globalMiddlewares) {
78
- this.config.globalMiddlewares.push(...plugin.config.globalMiddlewares);
79
- }
80
- return this;
81
- }
82
- findProviderInConfig(plugin, exportProvider) {
83
- return plugin.config.providers?.find((p) => this.getProviderToken(p) === this.getProviderToken(exportProvider));
84
- }
85
- getProviderToken(provider) {
86
- return provider?.provide || provider;
87
- }
88
- shouldCloneProvider(provider) {
89
- return !!(provider?.useValue !== undefined || provider?.useClass);
90
- }
91
- cloneProvider(provider) {
92
- return { ...provider };
93
- }
94
- /**
95
- * Set the custom logger provider.
96
- * The provider must be a class with the @Service() decorator.
97
- * The provider must extend the LoggerService class.
98
- *
99
- * @param provider
100
- */
101
- useLogger(provider) {
102
- (0, index_1.registerProvider)({ provide: logger_service_1.LoggerService, useClass: provider });
103
- return this;
104
- }
105
- loadProvidersAndControllers() {
106
- const providers = domain_1.Metadata.get(constants_1.PROVIDER, Reflect) || [];
107
- const controllers = domain_1.Metadata.get(constants_1.CONTROLLER, Reflect) || [];
108
- this.registerControllers(controllers);
109
- this.registerMetadataProviders(providers);
110
- this.registerConfigProviders();
111
- }
112
- registerControllers(controllers) {
113
- for (const controller of controllers) {
114
- (0, index_1.registerController)(controller);
115
- controller.options?.children &&
116
- controller.options.children.forEach((child) => {
117
- (0, index_1.registerController)({ provide: child, parent: controller.provide });
118
- });
119
- }
120
- }
121
- registerMetadataProviders(providers) {
122
- for (const provider of providers) {
123
- (0, index_1.registerProvider)(provider);
124
- }
125
- }
126
- registerConfigProviders() {
127
- if (!this.config.providers) {
128
- return;
129
- }
130
- for (const provider of this.config.providers) {
131
- const normalized = this.normalizeProvider(provider);
132
- (0, index_1.registerProvider)(normalized);
133
- }
134
- }
135
- normalizeProvider(provider) {
136
- if (provider?.provide) {
137
- return provider;
138
- }
139
- return {
140
- provide: provider,
141
- useClass: provider,
142
- };
143
- }
144
- async init() {
145
- this.loadProvidersAndControllers();
146
- await this.injector.loadModule((0, createContainer_1.createContainer)(), this.config, this.router);
147
- }
148
- async listen(port = 3000) {
149
- this.registerShutdownHandlers();
150
- await this.init();
151
- this.createHttpServer(port);
152
- }
153
- registerShutdownHandlers() {
154
- const shutdown = async (signal) => {
155
- console.log(`\nReceived ${signal}, starting graceful shutdown...`);
156
- await this.handleShutdownHook();
157
- };
158
- node_process_1.default.on("SIGTERM", () => shutdown("SIGTERM"));
159
- node_process_1.default.on("SIGINT", () => shutdown("SIGINT"));
160
- }
161
- getHttpServer() {
162
- return this.server;
163
- }
164
- getInjector() {
165
- return this.injector;
166
- }
167
- createHttpServer(port) {
168
- this.server = Bun.serve({ port, fetch: this.fetch, error: this.catcher });
169
- console.log(`Server running on port ${port}`);
170
- }
171
- async fetcher(request, server) {
172
- if (this.isCorsEnabled()) {
173
- const origin = request.headers.get("origin");
174
- if (request.method === "OPTIONS" && origin) {
175
- return this.handlePreflightRequest(request);
176
- }
177
- }
178
- const urlParsed = parseUrl(request);
179
- const context = await Context_1.Context.createFromRequest(urlParsed, request, server);
180
- await this.injector.callHook(on_event_1.EventType.OnRequest, { context });
181
- const local = new LocalsContainer_1.LocalsContainer();
182
- const routePath = this.discoverRoutePath(urlParsed);
183
- const route = this.router.find(request.method.toLowerCase(), routePath);
184
- if (!route) {
185
- throw new HttpException_1.HttpException("Method not allowed", 404);
186
- }
187
- context.param = route.params;
188
- local.set(Context_1.Context, context);
189
- let response = await RouteExecutor_1.RouteExecutor.executeRoute(route.store, this.injector, context, local);
190
- if (this.isCorsEnabled()) {
191
- const origin = request.headers.get("origin");
192
- if (origin && this.isOriginAllowed(origin)) {
193
- response = this.applyCorsHeaders(response, origin);
194
- }
195
- }
196
- return response;
197
- }
198
- async bootstrapApplication() {
199
- try {
200
- await this.injector.callHook(on_event_1.EventType.OnApplicationBoot, {});
201
- }
202
- catch (error) {
203
- this.reportHookFailure(on_event_1.EventType.OnApplicationBoot, error);
204
- }
205
- }
206
- async handleShutdownHook() {
207
- try {
208
- await this.injector.callHook(on_event_1.EventType.OnApplicationShutdown);
209
- this.closeHttpServer();
210
- this.exitProcess();
211
- }
212
- catch (error) {
213
- this.reportHookFailure(on_event_1.EventType.OnApplicationShutdown, error);
214
- this.exitProcess(1);
215
- }
216
- }
217
- closeHttpServer() {
218
- if (this.server) {
219
- console.log("Closing HTTP server...");
220
- this.server.stop(true);
221
- }
222
- }
223
- exitProcess(code = 0) {
224
- console.log("Shutdown complete.");
225
- node_process_1.default.exit(code);
226
- }
227
- reportHookFailure(event, error) {
228
- console.error(`Lifecycle hook ${event} failed`, error);
229
- }
230
- isCorsEnabled() {
231
- return !!this.config.cors;
232
- }
233
- isOriginAllowed(origin) {
234
- if (!origin || !this.config.cors) {
235
- return false;
236
- }
237
- const { origins } = this.config.cors;
238
- if (typeof origins === "string") {
239
- return origins === "*" || origins === origin;
240
- }
241
- if (Array.isArray(origins)) {
242
- return origins.includes(origin);
243
- }
244
- if (origins instanceof RegExp) {
245
- return origins.test(origin);
246
- }
247
- if (typeof origins === "function") {
248
- return origins(origin);
249
- }
250
- return false;
251
- }
252
- buildCorsHeaders(origin) {
253
- const cors = this.config.cors;
254
- const headers = {};
255
- const allowedOrigin = typeof cors.origins === "string" && cors.origins === "*"
256
- ? "*"
257
- : origin;
258
- headers["Access-Control-Allow-Origin"] = allowedOrigin;
259
- if (cors.credentials) {
260
- headers["Access-Control-Allow-Credentials"] = "true";
261
- }
262
- const methods = cors.methods || cors_config_1.DEFAULT_CORS_METHODS;
263
- headers["Access-Control-Allow-Methods"] = methods.join(", ");
264
- const allowedHeaders = cors.allowedHeaders || cors_config_1.DEFAULT_CORS_ALLOWED_HEADERS;
265
- headers["Access-Control-Allow-Headers"] = allowedHeaders.join(", ");
266
- if (cors.exposedHeaders && cors.exposedHeaders.length > 0) {
267
- headers["Access-Control-Expose-Headers"] = cors.exposedHeaders.join(", ");
268
- }
269
- if (cors.maxAge !== undefined) {
270
- headers["Access-Control-Max-Age"] = cors.maxAge.toString();
271
- }
272
- return headers;
273
- }
274
- handlePreflightRequest(request) {
275
- const origin = request.headers.get("origin");
276
- if (!this.isOriginAllowed(origin)) {
277
- return new Response(null, { status: 403 });
278
- }
279
- const corsHeaders = this.buildCorsHeaders(origin);
280
- return new Response(null, {
281
- status: 204,
282
- headers: corsHeaders,
283
- });
284
- }
285
- applyCorsHeaders(response, origin) {
286
- const corsHeaders = this.buildCorsHeaders(origin);
287
- const newHeaders = new Headers(response.headers);
288
- for (const [key, value] of Object.entries(corsHeaders)) {
289
- newHeaders.set(key, value);
290
- }
291
- return new Response(response.body, {
292
- status: response.status,
293
- statusText: response.statusText,
294
- headers: newHeaders,
295
- });
296
- }
297
- close(closeActiveConnections = false) {
298
- this.server?.stop(closeActiveConnections);
299
- }
300
- discoverRoutePath(url) {
301
- if (url?.pathname) {
302
- return url.pathname;
303
- }
304
- return url?.path || "/";
305
- }
306
- }
307
- exports.Cheetah = Cheetah;
@@ -1,3 +0,0 @@
1
- export declare class DefaultRoutesCheetah {
2
- favicon(): Promise<boolean>;
3
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.DefaultRoutesCheetah = void 0;
13
- const controller_decorator_1 = require("./commons/decorators/controller.decorator");
14
- const http_decorators_1 = require("./commons/decorators/http.decorators");
15
- let DefaultRoutesCheetah = class DefaultRoutesCheetah {
16
- async favicon() {
17
- return true;
18
- }
19
- };
20
- exports.DefaultRoutesCheetah = DefaultRoutesCheetah;
21
- __decorate([
22
- (0, http_decorators_1.Get)("favicon.ico"),
23
- __metadata("design:type", Function),
24
- __metadata("design:paramtypes", []),
25
- __metadata("design:returntype", Promise)
26
- ], DefaultRoutesCheetah.prototype, "favicon", null);
27
- exports.DefaultRoutesCheetah = DefaultRoutesCheetah = __decorate([
28
- (0, controller_decorator_1.Controller)()
29
- ], DefaultRoutesCheetah);
@@ -1 +0,0 @@
1
- export type CheetahClosure = () => void;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,5 +0,0 @@
1
- import { CheetahClosure } from "./CheetahClosure";
2
- import { Context } from "./Context";
3
- export interface CheetahMiddleware {
4
- handle(context: Context, next: CheetahClosure): Promise<void>;
5
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,15 +0,0 @@
1
- import { Context } from "../domain/Context";
2
- import { LoggerService, LoggerAdapter } from "./logger.service";
3
- export declare class RequestLogger implements LoggerAdapter {
4
- private logger;
5
- private context;
6
- private childLogger;
7
- constructor(logger: LoggerService, context: Context);
8
- private initializeChildLogger;
9
- info(message: string, ...args: any[]): void;
10
- warn(message: string, ...args: any[]): void;
11
- error(message: string, ...args: any[]): void;
12
- debug(message: string, ...args: any[]): void;
13
- fatal(message: string, ...args: any[]): void;
14
- trace(message: string, ...args: any[]): void;
15
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RequestLogger = void 0;
13
- const Injectable_decorator_1 = require("../commons/decorators/Injectable.decorator");
14
- const provider_scope_1 = require("../domain/provider-scope");
15
- const Context_1 = require("../domain/Context");
16
- const logger_service_1 = require("./logger.service");
17
- let RequestLogger = class RequestLogger {
18
- constructor(logger, context) {
19
- this.logger = logger;
20
- this.context = context;
21
- this.initializeChildLogger();
22
- }
23
- initializeChildLogger() {
24
- this.childLogger = this.logger.child({ trackingId: this.context.trackingId });
25
- }
26
- info(message, ...args) {
27
- this.childLogger.info(message, ...args);
28
- }
29
- warn(message, ...args) {
30
- this.childLogger.warn(message, ...args);
31
- }
32
- error(message, ...args) {
33
- this.childLogger.error(message, ...args);
34
- }
35
- debug(message, ...args) {
36
- this.childLogger.debug(message, ...args);
37
- }
38
- fatal(message, ...args) {
39
- this.childLogger.fatal(message, ...args);
40
- }
41
- trace(message, ...args) {
42
- this.childLogger.trace(message, ...args);
43
- }
44
- };
45
- exports.RequestLogger = RequestLogger;
46
- exports.RequestLogger = RequestLogger = __decorate([
47
- (0, Injectable_decorator_1.Injectable)({ scope: provider_scope_1.ProviderScope.REQUEST }),
48
- __metadata("design:paramtypes", [logger_service_1.LoggerService,
49
- Context_1.Context])
50
- ], RequestLogger);
@@ -1,6 +0,0 @@
1
- /**
2
- * Verifica se a classe possui implementação do class-validator ou class-transformer.
3
- *
4
- * @param token
5
- */
6
- export declare function isClassValidator(token: Function): boolean;
@@ -1,13 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isClassValidator = isClassValidator;
4
- const class_validator_1 = require("class-validator");
5
- /**
6
- * Verifica se a classe possui implementação do class-validator ou class-transformer.
7
- *
8
- * @param token
9
- */
10
- function isClassValidator(token) {
11
- const validationMetadata = (0, class_validator_1.getMetadataStorage)();
12
- return validationMetadata.getTargetValidationMetadatas(token, '', false, false, []).length > 0;
13
- }