@lerianstudio/sindarian-server 1.0.0-beta.1 → 1.0.0-beta.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 (147) hide show
  1. package/README.md +367 -0
  2. package/dist/constants/index.d.ts +1 -0
  3. package/dist/constants/index.d.ts.map +1 -1
  4. package/dist/constants/index.js +1 -0
  5. package/dist/constants/index.js.map +1 -1
  6. package/dist/constants/keys.d.ts +4 -0
  7. package/dist/constants/keys.d.ts.map +1 -1
  8. package/dist/constants/keys.js +5 -1
  9. package/dist/constants/keys.js.map +1 -1
  10. package/dist/constants/scopes.d.ts +6 -0
  11. package/dist/constants/scopes.d.ts.map +1 -0
  12. package/dist/constants/scopes.js +10 -0
  13. package/dist/constants/scopes.js.map +1 -0
  14. package/dist/context/arguments-host.d.ts +14 -0
  15. package/dist/context/arguments-host.d.ts.map +1 -0
  16. package/dist/context/arguments-host.js +28 -0
  17. package/dist/context/arguments-host.js.map +1 -0
  18. package/dist/context/execution-context.d.ts +10 -0
  19. package/dist/context/execution-context.d.ts.map +1 -0
  20. package/dist/context/execution-context.js +19 -0
  21. package/dist/context/execution-context.js.map +1 -0
  22. package/dist/context/http-arguments-host.d.ts +8 -0
  23. package/dist/context/http-arguments-host.d.ts.map +1 -0
  24. package/dist/context/http-arguments-host.js +17 -0
  25. package/dist/context/http-arguments-host.js.map +1 -0
  26. package/dist/context/index.d.ts +4 -0
  27. package/dist/context/index.d.ts.map +1 -0
  28. package/dist/context/index.js +20 -0
  29. package/dist/context/index.js.map +1 -0
  30. package/dist/controllers/base-controller.d.ts +0 -2
  31. package/dist/controllers/base-controller.d.ts.map +1 -1
  32. package/dist/controllers/base-controller.js +0 -15
  33. package/dist/controllers/base-controller.js.map +1 -1
  34. package/dist/controllers/decorators/body-decorator.d.ts +2 -3
  35. package/dist/controllers/decorators/body-decorator.d.ts.map +1 -1
  36. package/dist/controllers/decorators/body-decorator.js +31 -13
  37. package/dist/controllers/decorators/body-decorator.js.map +1 -1
  38. package/dist/controllers/decorators/controller-decorator.d.ts +0 -4
  39. package/dist/controllers/decorators/controller-decorator.d.ts.map +1 -1
  40. package/dist/controllers/decorators/controller-decorator.js +1 -44
  41. package/dist/controllers/decorators/controller-decorator.js.map +1 -1
  42. package/dist/dependency-injection/container.js +1 -1
  43. package/dist/dependency-injection/container.js.map +1 -1
  44. package/dist/dependency-injection/index.d.ts +2 -1
  45. package/dist/dependency-injection/index.d.ts.map +1 -1
  46. package/dist/dependency-injection/index.js +3 -2
  47. package/dist/dependency-injection/index.js.map +1 -1
  48. package/dist/dependency-injection/injectable-decorator.d.ts +7 -0
  49. package/dist/dependency-injection/injectable-decorator.d.ts.map +1 -0
  50. package/dist/dependency-injection/injectable-decorator.js +21 -0
  51. package/dist/dependency-injection/injectable-decorator.js.map +1 -0
  52. package/dist/exceptions/base-exception-filter.d.ts +8 -0
  53. package/dist/exceptions/base-exception-filter.d.ts.map +1 -0
  54. package/dist/exceptions/base-exception-filter.js +14 -0
  55. package/dist/exceptions/base-exception-filter.js.map +1 -0
  56. package/dist/exceptions/decorators/catch-decorator.d.ts +8 -0
  57. package/dist/exceptions/decorators/catch-decorator.d.ts.map +1 -0
  58. package/dist/exceptions/decorators/catch-decorator.js +14 -0
  59. package/dist/exceptions/decorators/catch-decorator.js.map +1 -0
  60. package/dist/exceptions/decorators/index.d.ts +3 -0
  61. package/dist/exceptions/decorators/index.d.ts.map +1 -0
  62. package/dist/exceptions/decorators/index.js +8 -0
  63. package/dist/exceptions/decorators/index.js.map +1 -0
  64. package/dist/exceptions/decorators/use-filters-decorator.d.ts +4 -0
  65. package/dist/exceptions/decorators/use-filters-decorator.d.ts.map +1 -0
  66. package/dist/exceptions/decorators/use-filters-decorator.js +16 -0
  67. package/dist/exceptions/decorators/use-filters-decorator.js.map +1 -0
  68. package/dist/exceptions/exception-filter.d.ts +6 -0
  69. package/dist/exceptions/exception-filter.d.ts.map +1 -0
  70. package/dist/exceptions/exception-filter.js +7 -0
  71. package/dist/exceptions/exception-filter.js.map +1 -0
  72. package/dist/exceptions/index.d.ts +3 -0
  73. package/dist/exceptions/index.d.ts.map +1 -1
  74. package/dist/exceptions/index.js +3 -0
  75. package/dist/exceptions/index.js.map +1 -1
  76. package/dist/index.d.ts +7 -0
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +11 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/interceptor/call-handler.d.ts +4 -0
  81. package/dist/interceptor/call-handler.d.ts.map +1 -0
  82. package/dist/interceptor/call-handler.js +3 -0
  83. package/dist/interceptor/call-handler.js.map +1 -0
  84. package/dist/interceptor/decorators/index.d.ts +2 -0
  85. package/dist/interceptor/decorators/index.d.ts.map +1 -0
  86. package/dist/interceptor/decorators/index.js +6 -0
  87. package/dist/interceptor/decorators/index.js.map +1 -0
  88. package/dist/interceptor/decorators/use-interceptor-decorator.d.ts +8 -0
  89. package/dist/interceptor/decorators/use-interceptor-decorator.d.ts.map +1 -0
  90. package/dist/interceptor/decorators/use-interceptor-decorator.js +38 -0
  91. package/dist/interceptor/decorators/use-interceptor-decorator.js.map +1 -0
  92. package/dist/interceptor/index.d.ts +4 -0
  93. package/dist/interceptor/index.d.ts.map +1 -0
  94. package/dist/interceptor/index.js +20 -0
  95. package/dist/interceptor/index.js.map +1 -0
  96. package/dist/interceptor/interceptor.d.ts +3 -5
  97. package/dist/interceptor/interceptor.d.ts.map +1 -1
  98. package/dist/interceptor/interceptor.js.map +1 -1
  99. package/dist/logger/console-logger.d.ts +24 -0
  100. package/dist/logger/console-logger.d.ts.map +1 -0
  101. package/dist/logger/console-logger.js +78 -0
  102. package/dist/logger/console-logger.js.map +1 -0
  103. package/dist/logger/index.d.ts +4 -0
  104. package/dist/logger/index.d.ts.map +1 -0
  105. package/dist/logger/index.js +8 -0
  106. package/dist/logger/index.js.map +1 -0
  107. package/dist/logger/logger-service.d.ts +34 -0
  108. package/dist/logger/logger-service.d.ts.map +1 -0
  109. package/dist/logger/logger-service.js +12 -0
  110. package/dist/logger/logger-service.js.map +1 -0
  111. package/dist/logger/logger.d.ts +21 -0
  112. package/dist/logger/logger.d.ts.map +1 -0
  113. package/dist/logger/logger.js +86 -0
  114. package/dist/logger/logger.js.map +1 -0
  115. package/dist/modules/module-decorator.d.ts +3 -1
  116. package/dist/modules/module-decorator.d.ts.map +1 -1
  117. package/dist/modules/module-decorator.js +83 -23
  118. package/dist/modules/module-decorator.js.map +1 -1
  119. package/dist/server/server-factory.d.ts +15 -8
  120. package/dist/server/server-factory.d.ts.map +1 -1
  121. package/dist/server/server-factory.js +95 -49
  122. package/dist/server/server-factory.js.map +1 -1
  123. package/dist/services/filters.d.ts +2 -0
  124. package/dist/services/filters.d.ts.map +1 -0
  125. package/dist/services/filters.js +5 -0
  126. package/dist/services/filters.js.map +1 -0
  127. package/dist/services/http-service.d.ts +68 -0
  128. package/dist/services/http-service.d.ts.map +1 -0
  129. package/dist/services/http-service.js +233 -0
  130. package/dist/services/http-service.js.map +1 -0
  131. package/dist/services/interceptor.d.ts +2 -0
  132. package/dist/services/interceptor.d.ts.map +1 -0
  133. package/dist/services/interceptor.js +5 -0
  134. package/dist/services/interceptor.js.map +1 -0
  135. package/dist/utils/form-data/get-form-data.d.ts +2 -0
  136. package/dist/utils/form-data/get-form-data.d.ts.map +1 -0
  137. package/dist/utils/form-data/get-form-data.js +11 -0
  138. package/dist/utils/form-data/get-form-data.js.map +1 -0
  139. package/dist/utils/search/create-query-string.d.ts +9 -0
  140. package/dist/utils/search/create-query-string.d.ts.map +1 -0
  141. package/dist/utils/search/create-query-string.js +26 -0
  142. package/dist/utils/search/create-query-string.js.map +1 -0
  143. package/package.json +2 -5
  144. package/dist/interceptor/decorators/use-interceptor.d.ts +0 -3
  145. package/dist/interceptor/decorators/use-interceptor.d.ts.map +0 -1
  146. package/dist/interceptor/decorators/use-interceptor.js +0 -9
  147. package/dist/interceptor/decorators/use-interceptor.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.interceptorExecute = interceptorExecute;
4
+ exports.interceptorHandler = interceptorHandler;
5
+ exports.UseInterceptors = UseInterceptors;
6
+ const keys_1 = require("../../constants/keys");
7
+ async function interceptorExecute(executionContext, middlewares, action) {
8
+ if (middlewares.length === 0) {
9
+ return await action();
10
+ }
11
+ let i = 0;
12
+ const next = {
13
+ handle: async () => {
14
+ if (i >= middlewares.length) {
15
+ return await action();
16
+ }
17
+ const layer = middlewares[i++];
18
+ try {
19
+ return await layer.intercept(executionContext, next);
20
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
+ }
22
+ catch (error) {
23
+ return await next.handle();
24
+ }
25
+ }
26
+ };
27
+ return await next.handle();
28
+ }
29
+ function interceptorHandler(target) {
30
+ return Reflect.getOwnMetadata(keys_1.INTERCEPTOR_KEY, target) || [];
31
+ }
32
+ function UseInterceptors(...interceptors) {
33
+ return (target) => {
34
+ const existingInterceptors = Reflect.getOwnMetadata(keys_1.INTERCEPTOR_KEY, target) || [];
35
+ Reflect.defineMetadata(keys_1.INTERCEPTOR_KEY, [...existingInterceptors, ...interceptors], target);
36
+ };
37
+ }
38
+ //# sourceMappingURL=use-interceptor-decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-interceptor-decorator.js","sourceRoot":"","sources":["../../../src/interceptor/decorators/use-interceptor-decorator.ts"],"names":[],"mappings":";;AAMA,gDA6BC;AAID,gDAEC;AAED,0CAYC;AAvDD,2CAAkD;AAM3C,KAAK,UAAU,kBAAkB,CACtC,gBAAkC,EAClC,WAA0B,EAC1B,MAA0B;IAE1B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,MAAM,MAAM,EAAE,CAAA;IACvB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,CAAA;IAET,MAAM,IAAI,GAAgB;QACxB,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC5B,OAAO,MAAM,MAAM,EAAE,CAAA;YACvB,CAAC;YAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,CAAA;YAE9B,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;gBACpD,6DAA6D;YAC/D,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;YAC5B,CAAC;QACH,CAAC;KACF,CAAA;IAED,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;AAC5B,CAAC;AAID,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,OAAO,OAAO,CAAC,cAAc,CAAC,sBAAe,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;AAC9D,CAAC;AAED,SAAgB,eAAe,CAC7B,GAAG,YAAkD;IAErD,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,oBAAoB,GACxB,OAAO,CAAC,cAAc,CAAC,sBAAe,EAAE,MAAM,CAAC,IAAI,EAAE,CAAA;QACvD,OAAO,CAAC,cAAc,CACpB,sBAAe,EACf,CAAC,GAAG,oBAAoB,EAAE,GAAG,YAAY,CAAC,EAC1C,MAAM,CACP,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './decorators';
2
+ export * from './interceptor';
3
+ export * from './call-handler';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interceptor/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAA;AAC7B,cAAc,gBAAgB,CAAA"}
@@ -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
+ __exportStar(require("./decorators"), exports);
18
+ __exportStar(require("./interceptor"), exports);
19
+ __exportStar(require("./call-handler"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interceptor/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,gDAA6B;AAC7B,iDAA8B"}
@@ -1,8 +1,6 @@
1
- type CallHandler = {
2
- handle: (request: any) => Promise<any>;
3
- };
1
+ import { ExecutionContext } from '../context/execution-context';
2
+ import { CallHandler } from './call-handler';
4
3
  export declare abstract class Interceptor {
5
- abstract intercept(context: any, next: CallHandler): Promise<any>;
4
+ abstract intercept(context: ExecutionContext, next: CallHandler): Promise<any>;
6
5
  }
7
- export {};
8
6
  //# sourceMappingURL=interceptor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptor/interceptor.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG;IACjB,MAAM,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAA;CACvC,CAAA;AAED,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAClE"}
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/interceptor/interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,8BAAsB,WAAW;IAC/B,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;CAC/E"}
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/interceptor/interceptor.ts"],"names":[],"mappings":";;;AAIA,MAAsB,WAAW;CAEhC;AAFD,kCAEC"}
1
+ {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/interceptor/interceptor.ts"],"names":[],"mappings":";;;AAGA,MAAsB,WAAW;CAEhC;AAFD,kCAEC"}
@@ -0,0 +1,24 @@
1
+ import { LoggerService, LogLevel } from './logger-service';
2
+ export type ConsoleLoggerOptions = {
3
+ prefix?: string;
4
+ logLevels?: LogLevel[];
5
+ };
6
+ export declare class ConsoleLogger implements LoggerService {
7
+ protected logLevels: LogLevel[];
8
+ protected options: ConsoleLoggerOptions;
9
+ constructor(options?: ConsoleLoggerOptions);
10
+ log(message: any, ...optionalParams: any[]): void;
11
+ fatal(message: any, ...optionalParams: any[]): void;
12
+ error(message: any, ...optionalParams: any[]): void;
13
+ warn(message: any, ...optionalParams: any[]): void;
14
+ debug?(message: any, ...optionalParams: any[]): void;
15
+ verbose?(message: any, ...optionalParams: any[]): void;
16
+ /**
17
+ * Set log levels
18
+ * @param levels log levels
19
+ */
20
+ setLogLevels(levels: LogLevel[]): void;
21
+ protected printMessage(level: string | undefined, message: any, writeStreamType?: 'stdout' | 'stderr'): void;
22
+ protected formatMessage(level: string, message: any): string;
23
+ }
24
+ //# sourceMappingURL=console-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.d.ts","sourceRoot":"","sources":["../../src/logger/console-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAY1D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CACvB,CAAA;AAED,qBACa,aAAc,YAAW,aAAa;IACjD,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAqB;IAEpD,SAAS,CAAC,OAAO,EAAE,oBAAoB,CAAA;gBAEd,OAAO,CAAC,EAAE,oBAAoB;IAQvD,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAIjD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAInD,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAIlD,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAIpD,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAItD;;;OAGG;IACH,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE;IAO/B,SAAS,CAAC,YAAY,CACpB,KAAK,EAAE,MAAM,YAAQ,EACrB,OAAO,EAAE,GAAG,EACZ,eAAe,GAAE,QAAQ,GAAG,QAAmB,GAC9C,IAAI;IAMP,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,MAAM;CAM7D"}
@@ -0,0 +1,78 @@
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
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ConsoleLogger = void 0;
16
+ const inversify_1 = require("inversify");
17
+ const logger_1 = require("./logger");
18
+ const DEFAULT_LOG_LEVELS = [
19
+ 'log',
20
+ 'error',
21
+ 'warn',
22
+ 'debug',
23
+ 'verbose',
24
+ 'fatal'
25
+ ];
26
+ let ConsoleLogger = class ConsoleLogger {
27
+ constructor(options) {
28
+ this.logLevels = DEFAULT_LOG_LEVELS;
29
+ options = options ?? {};
30
+ options.logLevels = DEFAULT_LOG_LEVELS;
31
+ options.prefix ??= 'Sindarian';
32
+ this.options = options;
33
+ }
34
+ log(message, ...optionalParams) {
35
+ this.printMessage('log', message, ...optionalParams);
36
+ }
37
+ fatal(message, ...optionalParams) {
38
+ this.printMessage('fatal', message, ...optionalParams);
39
+ }
40
+ error(message, ...optionalParams) {
41
+ this.printMessage('error', message, ...optionalParams);
42
+ }
43
+ warn(message, ...optionalParams) {
44
+ this.printMessage('warn', message, ...optionalParams);
45
+ }
46
+ debug(message, ...optionalParams) {
47
+ this.printMessage('debug', message, ...optionalParams);
48
+ }
49
+ verbose(message, ...optionalParams) {
50
+ this.printMessage('verbose', message, ...optionalParams);
51
+ }
52
+ /**
53
+ * Set log levels
54
+ * @param levels log levels
55
+ */
56
+ setLogLevels(levels) {
57
+ if (!this.options) {
58
+ this.options = {};
59
+ }
60
+ this.options.logLevels = levels;
61
+ }
62
+ printMessage(level = 'log', message, writeStreamType = 'stdout') {
63
+ const logLevel = level.toUpperCase();
64
+ process[writeStreamType].write(this.formatMessage(logLevel, message));
65
+ }
66
+ formatMessage(level, message) {
67
+ const timestamp = logger_1.Logger.getTimestamp();
68
+ const logLevel = level.toUpperCase();
69
+ return `[${this.options.prefix}] - ${timestamp} [${logLevel}] ${message}\n`;
70
+ }
71
+ };
72
+ exports.ConsoleLogger = ConsoleLogger;
73
+ exports.ConsoleLogger = ConsoleLogger = __decorate([
74
+ (0, inversify_1.injectable)(),
75
+ __param(0, (0, inversify_1.unmanaged)()),
76
+ __metadata("design:paramtypes", [Object])
77
+ ], ConsoleLogger);
78
+ //# sourceMappingURL=console-logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-logger.js","sourceRoot":"","sources":["../../src/logger/console-logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yCAAiD;AAEjD,qCAAiC;AAEjC,MAAM,kBAAkB,GAAe;IACrC,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;CACR,CAAA;AAQM,IAAM,aAAa,GAAnB,MAAM,aAAa;IAKxB,YAAyB,OAA8B;QAJ7C,cAAS,GAAe,kBAAkB,CAAA;QAKlD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QACvB,OAAO,CAAC,SAAS,GAAG,kBAAkB,CAAA;QACtC,OAAO,CAAC,MAAM,KAAK,WAAW,CAAA;QAE9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAED,GAAG,CAAC,OAAY,EAAE,GAAG,cAAqB;QACxC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,OAAY,EAAE,GAAG,cAAqB;QAC1C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,OAAY,EAAE,GAAG,cAAqB;QAC1C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IACxD,CAAC;IAED,IAAI,CAAC,OAAY,EAAE,GAAG,cAAqB;QACzC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAE,OAAY,EAAE,GAAG,cAAqB;QAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IACxD,CAAC;IAED,OAAO,CAAE,OAAY,EAAE,GAAG,cAAqB;QAC7C,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,CAAA;IAC1D,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,MAAkB;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACnB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAA;IACjC,CAAC;IAES,YAAY,CACpB,QAAgB,KAAK,EACrB,OAAY,EACZ,kBAAuC,QAAQ;QAE/C,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAEpC,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;IACvE,CAAC;IAES,aAAa,CAAC,KAAa,EAAE,OAAY;QACjD,MAAM,SAAS,GAAG,eAAM,CAAC,YAAY,EAAE,CAAA;QACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;QAEpC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,OAAO,SAAS,KAAK,QAAQ,KAAK,OAAO,IAAI,CAAA;IAC7E,CAAC;CACF,CAAA;AAhEY,sCAAa;wBAAb,aAAa;IADzB,IAAA,sBAAU,GAAE;IAME,WAAA,IAAA,qBAAS,GAAE,CAAA;;GALb,aAAa,CAgEzB"}
@@ -0,0 +1,4 @@
1
+ export { ConsoleLogger, ConsoleLoggerOptions } from './console-logger';
2
+ export { Logger } from './logger';
3
+ export { LoggerService, LogLevel } from './logger-service';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Logger = exports.ConsoleLogger = void 0;
4
+ var console_logger_1 = require("./console-logger");
5
+ Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return console_logger_1.ConsoleLogger; } });
6
+ var logger_1 = require("./logger");
7
+ Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logger/index.ts"],"names":[],"mappings":";;;AAAA,mDAAsE;AAA7D,+GAAA,aAAa,OAAA;AACtB,mCAAiC;AAAxB,gGAAA,MAAM,OAAA"}
@@ -0,0 +1,34 @@
1
+ export declare const LOG_LEVELS: ["verbose", "debug", "log", "warn", "error", "fatal"];
2
+ export type LogLevel = (typeof LOG_LEVELS)[number];
3
+ export interface LoggerService {
4
+ /**
5
+ * Write a 'log' level log.
6
+ */
7
+ log(message: any, ...optionalParams: any[]): any;
8
+ /**
9
+ * Write an 'error' level log.
10
+ */
11
+ error(message: any, ...optionalParams: any[]): any;
12
+ /**
13
+ * Write a 'warn' level log.
14
+ */
15
+ warn(message: any, ...optionalParams: any[]): any;
16
+ /**
17
+ * Write a 'debug' level log.
18
+ */
19
+ debug?(message: any, ...optionalParams: any[]): any;
20
+ /**
21
+ * Write a 'verbose' level log.
22
+ */
23
+ verbose?(message: any, ...optionalParams: any[]): any;
24
+ /**
25
+ * Write a 'fatal' level log.
26
+ */
27
+ fatal?(message: any, ...optionalParams: any[]): any;
28
+ /**
29
+ * Set log levels.
30
+ * @param levels log levels
31
+ */
32
+ setLogLevels?(levels: LogLevel[]): any;
33
+ }
34
+ //# sourceMappingURL=logger-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-service.d.ts","sourceRoot":"","sources":["../../src/logger/logger-service.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,uDAOM,CAAA;AAE7B,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAA;AAElD,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAEhD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAElD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAEjD;;OAEG;IACH,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAEnD;;OAEG;IACH,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAErD;;OAEG;IACH,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAEnD;;;OAGG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;CACvC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LOG_LEVELS = void 0;
4
+ exports.LOG_LEVELS = [
5
+ 'verbose',
6
+ 'debug',
7
+ 'log',
8
+ 'warn',
9
+ 'error',
10
+ 'fatal'
11
+ ];
12
+ //# sourceMappingURL=logger-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-service.js","sourceRoot":"","sources":["../../src/logger/logger-service.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG;IACxB,SAAS;IACT,OAAO;IACP,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;CACoB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import { LoggerService, LogLevel } from './logger-service';
2
+ export declare class Logger implements LoggerService {
3
+ private logger;
4
+ private static staticLogger?;
5
+ log(message: any, ...optionalParams: any[]): void;
6
+ error(message: any, ...optionalParams: any[]): void;
7
+ warn(message: any, ...optionalParams: any[]): void;
8
+ debug?(message: any, ...optionalParams: any[]): void;
9
+ verbose?(message: any, ...optionalParams: any[]): void;
10
+ fatal?(message: any, ...optionalParams: any[]): void;
11
+ setLogLevels?(levels: LogLevel[]): void;
12
+ static log(message: any, ...optionalParams: any[]): void;
13
+ static error(message: any, ...optionalParams: any[]): void;
14
+ static warn(message: any, ...optionalParams: any[]): void;
15
+ static debug?(message: any, ...optionalParams: any[]): void;
16
+ static verbose?(message: any, ...optionalParams: any[]): void;
17
+ static fatal?(message: any, ...optionalParams: any[]): void;
18
+ static getTimestamp(): string;
19
+ static overrideLogger(logger: LoggerService | boolean): void;
20
+ }
21
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAa1D,qBACa,MAAO,YAAW,aAAa;IAC1C,OAAO,CAAC,MAAM,CAAqC;IACnD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAe;IAE3C,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAG1C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAG5C,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAG3C,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAG7C,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAG/C,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAG7C,YAAY,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE;IAIhC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAGjD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAGnD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAGlD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAGpD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAGtD,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE;IAIpD,MAAM,CAAC,YAAY;IAInB,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO;CAYtD"}
@@ -0,0 +1,86 @@
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 Logger_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.Logger = void 0;
11
+ const inversify_1 = require("inversify");
12
+ const console_logger_1 = require("./console-logger");
13
+ const lodash_1 = require("lodash");
14
+ const dateTimeFormatter = new Intl.DateTimeFormat(undefined, {
15
+ year: 'numeric',
16
+ hour: 'numeric',
17
+ minute: 'numeric',
18
+ second: 'numeric',
19
+ day: '2-digit',
20
+ month: '2-digit'
21
+ });
22
+ let Logger = Logger_1 = class Logger {
23
+ constructor() {
24
+ this.logger = new console_logger_1.ConsoleLogger();
25
+ }
26
+ log(message, ...optionalParams) {
27
+ this.logger.log(message, ...optionalParams);
28
+ }
29
+ error(message, ...optionalParams) {
30
+ this.logger.error(message, ...optionalParams);
31
+ }
32
+ warn(message, ...optionalParams) {
33
+ this.logger.warn(message, ...optionalParams);
34
+ }
35
+ debug(message, ...optionalParams) {
36
+ this.logger.debug?.(message, ...optionalParams);
37
+ }
38
+ verbose(message, ...optionalParams) {
39
+ this.logger.verbose?.(message, ...optionalParams);
40
+ }
41
+ fatal(message, ...optionalParams) {
42
+ this.logger.fatal?.(message, ...optionalParams);
43
+ }
44
+ setLogLevels(levels) {
45
+ this.logger.setLogLevels?.(levels);
46
+ }
47
+ static log(message, ...optionalParams) {
48
+ this.staticLogger?.log(message, ...optionalParams);
49
+ }
50
+ static error(message, ...optionalParams) {
51
+ this.staticLogger?.error(message, ...optionalParams);
52
+ }
53
+ static warn(message, ...optionalParams) {
54
+ this.staticLogger?.warn(message, ...optionalParams);
55
+ }
56
+ static debug(message, ...optionalParams) {
57
+ this.staticLogger?.debug?.(message, ...optionalParams);
58
+ }
59
+ static verbose(message, ...optionalParams) {
60
+ this.staticLogger?.verbose?.(message, ...optionalParams);
61
+ }
62
+ static fatal(message, ...optionalParams) {
63
+ this.staticLogger?.fatal?.(message, ...optionalParams);
64
+ }
65
+ static getTimestamp() {
66
+ return dateTimeFormatter.format(Date.now());
67
+ }
68
+ static overrideLogger(logger) {
69
+ if ((0, lodash_1.isObject)(logger)) {
70
+ if (logger instanceof Logger_1 && logger.constructor !== Logger_1) {
71
+ const errorMessage = `Using the "extends Logger" instruction is not allowed. Please, use "extends ConsoleLogger" instead.`;
72
+ this.staticLogger?.error(errorMessage);
73
+ throw new Error(errorMessage);
74
+ }
75
+ this.staticLogger = logger;
76
+ }
77
+ else {
78
+ this.staticLogger = undefined;
79
+ }
80
+ }
81
+ };
82
+ exports.Logger = Logger;
83
+ exports.Logger = Logger = Logger_1 = __decorate([
84
+ (0, inversify_1.injectable)()
85
+ ], Logger);
86
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger/logger.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
+ import { ResolutionContext } from 'inversify';
1
2
  import { Class, Constructor } from '../types/class';
3
+ import { Scope } from '../constants/scopes';
2
4
  import { ControllerMetadata } from '../controllers/decorators/controller-decorator';
3
- import { ResolutionContext } from 'inversify';
4
5
  export type InjectionToken<T = any> = symbol | string | Constructor<T>;
5
6
  type Provider = {
6
7
  provide: InjectionToken;
7
8
  useClass?: Class;
8
9
  useValue?: any;
9
10
  useFactory?: (context: ResolutionContext) => any | Promise<any>;
11
+ scope?: Scope;
10
12
  } | Class;
11
13
  export type ModuleOptions = {
12
14
  imports?: Class[];
@@ -1 +1 @@
1
- {"version":3,"file":"module-decorator.d.ts","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AASlD,OAAO,EAEL,kBAAkB,EACnB,MAAM,+CAA+C,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEtE,KAAK,QAAQ,GACT;IACE,OAAO,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;CAChE,GACD,KAAK,CAAA;AAET,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,KAAK,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,UAAU,EAAE,KAAK,CAAA;CAClB,CAAA;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAE,GAAG,CAAC,QAAQ,CAAa,GAAG,cAAc,EAAE,CA6BpG;AAED,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CA2D9D"}
1
+ {"version":3,"file":"module-decorator.d.ts","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AASlD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAEL,kBAAkB,EACnB,MAAM,+CAA+C,CAAA;AAKtD,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,CAAA;AAEtE,KAAK,QAAQ,GACT;IACE,OAAO,EAAE,cAAc,CAAA;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,QAAQ,CAAC,EAAE,GAAG,CAAA;IACd,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC/D,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GACD,KAAK,CAAA;AAET,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,CAAC,EAAE,KAAK,EAAE,CAAA;IACjB,WAAW,CAAC,EAAE,KAAK,EAAE,CAAA;IACrB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,kBAAkB,GAAG;IAChD,UAAU,EAAE,KAAK,CAAA;CAClB,CAAA;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,QAAQ,EAChB,OAAO,GAAE,GAAG,CAAC,QAAQ,CAAa,GACjC,cAAc,EAAE,CAiClB;AAED,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAsD9D"}
@@ -4,7 +4,10 @@ exports.moduleHandler = moduleHandler;
4
4
  exports.Module = Module;
5
5
  const container_1 = require("../dependency-injection/container");
6
6
  const keys_1 = require("../constants/keys");
7
+ const scopes_1 = require("../constants/scopes");
7
8
  const controller_decorator_1 = require("../controllers/decorators/controller-decorator");
9
+ const use_interceptor_decorator_1 = require("../interceptor/decorators/use-interceptor-decorator");
10
+ const logger_1 = require("../logger/logger");
8
11
  function moduleHandler(target, visited = new Set()) {
9
12
  // Prevent infinite recursion by tracking visited modules
10
13
  if (visited.has(target)) {
@@ -25,6 +28,7 @@ function moduleHandler(target, visited = new Set()) {
25
28
  ...route,
26
29
  controller
27
30
  }));
31
+ logger_1.Logger.log(`Registered ${controllerRoutes.length} routes for controller ${controller.name}`);
28
32
  routes.push(...controllerRoutes);
29
33
  }
30
34
  }
@@ -41,32 +45,24 @@ function Module(options) {
41
45
  });
42
46
  }
43
47
  if (providers) {
44
- providers.forEach((providerEntity) => {
45
- if (typeof providerEntity === 'object') {
46
- if (providerEntity.useClass) {
47
- container.bind(providerEntity.provide).to(providerEntity.useClass);
48
- }
49
- else if (providerEntity.useFactory) {
50
- container
51
- .bind(providerEntity.provide)
52
- .toDynamicValue(async (context) => {
53
- return await providerEntity.useFactory(context);
54
- });
55
- }
56
- else if (providerEntity.useValue) {
57
- container
58
- .bind(providerEntity.provide)
59
- .toConstantValue(providerEntity.useValue);
60
- }
61
- }
62
- else {
63
- container.bind(providerEntity).to(providerEntity);
64
- }
65
- });
48
+ providers.forEach((provider) => registerProvider(container, provider));
66
49
  }
67
50
  if (controllers) {
68
51
  controllers.forEach((controller) => {
69
- container.bind(controller).to(controller);
52
+ // Bind the controller
53
+ container.bind(controller).to(controller).inSingletonScope();
54
+ // Check for interceptors and register class types
55
+ const interceptors = (0, use_interceptor_decorator_1.interceptorHandler)(controller);
56
+ interceptors.forEach((interceptor) => {
57
+ // If it's a class constructor (function), register it in the container
58
+ if (typeof interceptor === 'function') {
59
+ container.bind(interceptor).toSelf().inSingletonScope();
60
+ }
61
+ else {
62
+ // If it's an instance, bind it to its constructor class as a constant value
63
+ container.bind(interceptor.constructor).toConstantValue(interceptor);
64
+ }
65
+ });
70
66
  });
71
67
  }
72
68
  });
@@ -83,4 +79,68 @@ function Module(options) {
83
79
  prototype[keys_1.CONTROLLERS_PROPERTY] = controllers;
84
80
  };
85
81
  }
82
+ /**
83
+ * Register a provider in the container
84
+ * @param container
85
+ * @param provider
86
+ */
87
+ function registerProvider(container, provider) {
88
+ // Checks if provider is a object with options
89
+ if (typeof provider === 'object') {
90
+ registerProviderObject(container, provider);
91
+ }
92
+ else {
93
+ // If not, it's a simple class type
94
+ container.bind(provider).to(provider);
95
+ }
96
+ }
97
+ /**
98
+ * Registers a provider object in the container
99
+ * @param container
100
+ * @param provider
101
+ * @returns
102
+ */
103
+ function registerProviderObject(container, provider) {
104
+ // Protect the method by avoid non objects
105
+ if (typeof provider !== 'object') {
106
+ return;
107
+ }
108
+ const { provide, useClass, useValue, useFactory, scope } = provider;
109
+ const bind = container.bind(provide);
110
+ if (useClass) {
111
+ registerScope(bind.to(useClass), scope);
112
+ return;
113
+ }
114
+ if (useFactory) {
115
+ registerScope(bind.toDynamicValue(async (context) => {
116
+ return await useFactory(context);
117
+ }), scope);
118
+ return;
119
+ }
120
+ if (useValue) {
121
+ bind.toConstantValue(useValue);
122
+ return;
123
+ }
124
+ const message = `Module: Invalid provider ${provider.provide.toString()} configuration`;
125
+ logger_1.Logger.error(message);
126
+ throw new Error(message);
127
+ }
128
+ /**
129
+ * Registers a scope for a binding
130
+ * @param bind
131
+ * @param scope
132
+ * @returns
133
+ */
134
+ function registerScope(bind, scope) {
135
+ switch (scope) {
136
+ case scopes_1.Scope.DEFAULT:
137
+ return bind.inSingletonScope();
138
+ case scopes_1.Scope.REQUEST:
139
+ return bind.inRequestScope();
140
+ case scopes_1.Scope.TRANSIENT:
141
+ return bind.inTransientScope();
142
+ default:
143
+ return bind.inSingletonScope();
144
+ }
145
+ }
86
146
  //# sourceMappingURL=module-decorator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module-decorator.js","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module-decorator.js","sourceRoot":"","sources":["../../src/modules/module-decorator.ts"],"names":[],"mappings":";;AAyCA,sCAoCC;AAED,wBAsDC;AAnID,gEAA6E;AAC7E,2CAMyB;AACzB,+CAA0C;AAC1C,wFAGsD;AACtD,kGAAuF;AACvF,4CAAwC;AAyBxC,SAAgB,aAAa,CAC3B,MAAgB,EAChB,UAAyB,IAAI,GAAG,EAAE;IAElC,yDAAyD;IACzD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAEnB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,uBAAgB,CAAC,CAAA;IAClD,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,2BAAoB,CAAC,CAAA;IAE1D,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,YAAY,IAAI,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,IAAA,wCAAiB,EAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBACrE,GAAG,KAAK;gBACR,UAAU;aACX,CAAC,CAAC,CAAA;YAEH,eAAM,CAAC,GAAG,CACR,cAAc,gBAAgB,CAAC,MAAM,0BAA0B,UAAU,CAAC,IAAI,EAAE,CACjF,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAA;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAgB,MAAM,CAAC,OAAuB;IAC5C,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,CAAA;IAEzD,MAAM,eAAe,GAAG,IAAI,2BAAe,CAAC,CAAC,SAAS,EAAE,EAAE;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC/B,IAAI,YAAY,CAAC,SAAS,CAAC,sBAAe,CAAC,EAAE,CAAC;oBAC5C,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,sBAAe,CAAC,CAAC,CAAA;gBACzD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;QACxE,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjC,sBAAsB;gBACtB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAA;gBAE5D,kDAAkD;gBAClD,MAAM,YAAY,GAAG,IAAA,8CAAkB,EAAC,UAAU,CAAC,CAAA;gBACnD,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;oBACnC,uEAAuE;oBACvE,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;wBACtC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAA;oBACzD,CAAC;yBAAM,CAAC;wBACN,4EAA4E;wBAC5E,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,CAAA;oBACtE,CAAC;gBACH,CAAC,CAAC,CAAA;YACJ,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,UAAU,MAAgB;QAC/B,OAAO,CAAC,cAAc,CACpB,iBAAU,EACV;YACE,OAAO;YACP,SAAS;YACT,WAAW;SACZ,EACD,MAAM,CACP,CAAA;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAA;QAElC,SAAS,CAAC,uBAAgB,CAAC,GAAG,OAAO,CAAA;QACrC,SAAS,CAAC,sBAAe,CAAC,GAAG,eAAe,CAAA;QAC5C,SAAS,CAAC,yBAAkB,CAAC,GAAG,SAAS,CAAA;QACzC,SAAS,CAAC,2BAAoB,CAAC,GAAG,WAAW,CAAA;IAC/C,CAAC,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,SAAoB,EAAE,QAAkB;IAChE,8CAA8C;IAC9C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC7C,CAAC;SAAM,CAAC;QACN,mCAAmC;QACnC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IACvC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,sBAAsB,CAAC,SAAoB,EAAE,QAAkB;IACtE,0CAA0C;IAC1C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAM;IACR,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;IAEnE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAEpC,IAAI,QAAQ,EAAE,CAAC;QACb,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;QACvC,OAAM;IACR,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,aAAa,CACX,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACpC,OAAO,MAAM,UAAW,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC,CAAC,EACF,KAAK,CACN,CAAA;QACD,OAAM;IACR,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;QAC9B,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,4BAA4B,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACvF,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACrB,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAI,IAA2B,EAAE,KAAa;IAClE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,cAAK,CAAC,OAAO;YAChB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAChC,KAAK,cAAK,CAAC,OAAO;YAChB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;QAC9B,KAAK,cAAK,CAAC,SAAS;YAClB,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAA;QAChC;YACE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAA;IAClC,CAAC;AACH,CAAC"}