@sharangyawali/sg-app 0.0.5

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.

Potentially problematic release.


This version of @sharangyawali/sg-app might be problematic. Click here for more details.

Files changed (165) hide show
  1. package/cls/cls.service.d.ts +8 -0
  2. package/cls/cls.service.js +33 -0
  3. package/cls/index.d.ts +1 -0
  4. package/cls/index.js +17 -0
  5. package/common/constants/index.d.ts +1 -0
  6. package/common/constants/index.js +17 -0
  7. package/common/constants/providers.constants.d.ts +1 -0
  8. package/common/constants/providers.constants.js +4 -0
  9. package/common/decorators/component.decorators.d.ts +2 -0
  10. package/common/decorators/component.decorators.js +14 -0
  11. package/common/decorators/controller.decorator.d.ts +2 -0
  12. package/common/decorators/controller.decorator.js +18 -0
  13. package/common/decorators/filters.decorator.d.ts +2 -0
  14. package/common/decorators/filters.decorator.js +19 -0
  15. package/common/decorators/guards.decorator.d.ts +4 -0
  16. package/common/decorators/guards.decorator.js +25 -0
  17. package/common/decorators/index.d.ts +10 -0
  18. package/common/decorators/index.js +26 -0
  19. package/common/decorators/inject.decorators.d.ts +3 -0
  20. package/common/decorators/inject.decorators.js +13 -0
  21. package/common/decorators/interceptors.decorator.d.ts +4 -0
  22. package/common/decorators/interceptors.decorator.js +25 -0
  23. package/common/decorators/middlewares.decorator.d.ts +3 -0
  24. package/common/decorators/middlewares.decorator.js +19 -0
  25. package/common/decorators/module.decorator.d.ts +2 -0
  26. package/common/decorators/module.decorator.js +31 -0
  27. package/common/decorators/parameter-validator.decorator.d.ts +5 -0
  28. package/common/decorators/parameter-validator.decorator.js +21 -0
  29. package/common/decorators/route-mapping.decorator.d.ts +5 -0
  30. package/common/decorators/route-mapping.decorator.js +32 -0
  31. package/common/enum/index.d.ts +3 -0
  32. package/common/enum/index.js +19 -0
  33. package/common/enum/request-method.enum.d.ts +11 -0
  34. package/common/enum/request-method.enum.js +15 -0
  35. package/common/enum/request-parameters.enum.d.ts +7 -0
  36. package/common/enum/request-parameters.enum.js +11 -0
  37. package/common/enum/scope.enum.d.ts +5 -0
  38. package/common/enum/scope.enum.js +9 -0
  39. package/common/http/http-context.d.ts +13 -0
  40. package/common/http/http-context.js +27 -0
  41. package/common/http/http-exception.d.ts +7 -0
  42. package/common/http/http-exception.js +17 -0
  43. package/common/http/index.d.ts +2 -0
  44. package/common/http/index.js +18 -0
  45. package/common/index.d.ts +5 -0
  46. package/common/index.js +21 -0
  47. package/common/interface/controller-method-paramenters.interface.d.ts +6 -0
  48. package/common/interface/controller-method-paramenters.interface.js +2 -0
  49. package/common/interface/controller-methods.interface.d.ts +6 -0
  50. package/common/interface/controller-methods.interface.js +2 -0
  51. package/common/interface/cors.interface.d.ts +14 -0
  52. package/common/interface/cors.interface.js +2 -0
  53. package/common/interface/features/index.d.ts +4 -0
  54. package/common/interface/features/index.js +20 -0
  55. package/common/interface/features/sg-filter.interface.d.ts +4 -0
  56. package/common/interface/features/sg-filter.interface.js +2 -0
  57. package/common/interface/features/sg-guard.interface.d.ts +4 -0
  58. package/common/interface/features/sg-guard.interface.js +2 -0
  59. package/common/interface/features/sg-interceptor.interface.d.ts +4 -0
  60. package/common/interface/features/sg-interceptor.interface.js +2 -0
  61. package/common/interface/features/sg-middleware.interface.d.ts +4 -0
  62. package/common/interface/features/sg-middleware.interface.js +2 -0
  63. package/common/interface/global-middleware-options.interface.d.ts +5 -0
  64. package/common/interface/global-middleware-options.interface.js +2 -0
  65. package/common/interface/global-prefix-options.interface.d.ts +4 -0
  66. package/common/interface/global-prefix-options.interface.js +2 -0
  67. package/common/interface/index.d.ts +15 -0
  68. package/common/interface/index.js +31 -0
  69. package/common/interface/injectable-options.interface.d.ts +5 -0
  70. package/common/interface/injectable-options.interface.js +2 -0
  71. package/common/interface/injection-token.interface.d.ts +2 -0
  72. package/common/interface/injection-token.interface.js +2 -0
  73. package/common/interface/module-options.interface.d.ts +6 -0
  74. package/common/interface/module-options.interface.js +2 -0
  75. package/common/interface/provider.interface.d.ts +30 -0
  76. package/common/interface/provider.interface.js +2 -0
  77. package/common/interface/route-info.interface.d.ts +5 -0
  78. package/common/interface/route-info.interface.js +2 -0
  79. package/common/interface/sg-application.interface.d.ts +8 -0
  80. package/common/interface/sg-application.interface.js +2 -0
  81. package/common/interface/sg-factory.interface.d.ts +8 -0
  82. package/common/interface/sg-factory.interface.js +2 -0
  83. package/common/interface/sg-interceptor.interface.d.ts +3 -0
  84. package/common/interface/sg-interceptor.interface.js +2 -0
  85. package/common/interface/static-route.interface.d.ts +20 -0
  86. package/common/interface/static-route.interface.js +2 -0
  87. package/common/interface/type.interface.d.ts +3 -0
  88. package/common/interface/type.interface.js +2 -0
  89. package/config/config-service.d.ts +3 -0
  90. package/config/config-service.js +11 -0
  91. package/config/index.d.ts +1 -0
  92. package/config/index.js +17 -0
  93. package/di-container.d.ts +15 -0
  94. package/di-container.js +103 -0
  95. package/index.d.ts +9 -0
  96. package/index.js +25 -0
  97. package/logger/index.d.ts +1 -0
  98. package/logger/index.js +17 -0
  99. package/logger/logger-service.d.ts +9 -0
  100. package/logger/logger-service.js +44 -0
  101. package/package.json +24 -0
  102. package/routes-config.d.ts +22 -0
  103. package/routes-config.js +204 -0
  104. package/set-meta-data.d.ts +1 -0
  105. package/set-meta-data.js +35 -0
  106. package/sg-application.d.ts +12 -0
  107. package/sg-application.js +37 -0
  108. package/sg-factory.d.ts +6 -0
  109. package/sg-factory.js +22 -0
  110. package/src/cls/cls.service.ts +31 -0
  111. package/src/cls/index.ts +1 -0
  112. package/src/common/constants/index.ts +1 -0
  113. package/src/common/constants/providers.constants.ts +1 -0
  114. package/src/common/decorators/component.decorators.ts +13 -0
  115. package/src/common/decorators/controller.decorator.ts +16 -0
  116. package/src/common/decorators/filters.decorator.ts +17 -0
  117. package/src/common/decorators/guards.decorator.ts +26 -0
  118. package/src/common/decorators/index.ts +10 -0
  119. package/src/common/decorators/inject.decorators.ts +12 -0
  120. package/src/common/decorators/interceptors.decorator.ts +26 -0
  121. package/src/common/decorators/middlewares.decorator.ts +18 -0
  122. package/src/common/decorators/module.decorator.ts +29 -0
  123. package/src/common/decorators/parameter-validator.decorator.ts +17 -0
  124. package/src/common/decorators/route-mapping.decorator.ts +27 -0
  125. package/src/common/enum/index.ts +3 -0
  126. package/src/common/enum/request-method.enum.ts +11 -0
  127. package/src/common/enum/request-parameters.enum.ts +7 -0
  128. package/src/common/enum/scope.enum.ts +5 -0
  129. package/src/common/http/http-context.ts +25 -0
  130. package/src/common/http/http-exception.ts +12 -0
  131. package/src/common/http/index.ts +2 -0
  132. package/src/common/index.ts +5 -0
  133. package/src/common/interface/controller-method-paramenters.interface.ts +7 -0
  134. package/src/common/interface/controller-methods.interface.ts +7 -0
  135. package/src/common/interface/cors.interface.ts +15 -0
  136. package/src/common/interface/features/index.ts +4 -0
  137. package/src/common/interface/features/sg-filter.interface.ts +5 -0
  138. package/src/common/interface/features/sg-guard.interface.ts +5 -0
  139. package/src/common/interface/features/sg-interceptor.interface.ts +5 -0
  140. package/src/common/interface/features/sg-middleware.interface.ts +5 -0
  141. package/src/common/interface/global-middleware-options.interface.ts +7 -0
  142. package/src/common/interface/global-prefix-options.interface.ts +5 -0
  143. package/src/common/interface/index.ts +15 -0
  144. package/src/common/interface/injectable-options.interface.ts +6 -0
  145. package/src/common/interface/injection-token.interface.ts +2 -0
  146. package/src/common/interface/module-options.interface.ts +7 -0
  147. package/src/common/interface/provider.interface.ts +36 -0
  148. package/src/common/interface/route-info.interface.ts +6 -0
  149. package/src/common/interface/sg-application.interface.ts +9 -0
  150. package/src/common/interface/sg-factory.interface.ts +10 -0
  151. package/src/common/interface/sg-interceptor.interface.ts +3 -0
  152. package/src/common/interface/static-route.interface.ts +22 -0
  153. package/src/common/interface/type.interface.ts +3 -0
  154. package/src/config/config-service.ts +7 -0
  155. package/src/config/index.ts +1 -0
  156. package/src/di-container.ts +135 -0
  157. package/src/index.ts +9 -0
  158. package/src/logger/index.ts +1 -0
  159. package/src/logger/logger-service.ts +48 -0
  160. package/src/routes-config.ts +305 -0
  161. package/src/set-meta-data.ts +30 -0
  162. package/src/sg-application.ts +29 -0
  163. package/src/sg-factory.ts +15 -0
  164. package/tsconfig.json +31 -0
  165. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,6 @@
1
+ import { RequestParameters } from "../enum";
2
+ export interface ControllerMethodParams<T = RequestParameters | string> {
3
+ dtoClass: any;
4
+ index: number;
5
+ paramType: T;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { RequestMethodEnum } from "../enum";
2
+ export interface ControllerMethods<T = RequestMethodEnum | string> {
3
+ method: T;
4
+ path?: string;
5
+ handler: string | symbol;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ export interface CorsOptions {
2
+ origin?: boolean | string | RegExp | (string | RegExp)[] | CorsOptionsDelegate;
3
+ methods?: string | string[];
4
+ allowedHeaders?: string | string[];
5
+ exposedHeaders?: string | string[];
6
+ credentials?: boolean;
7
+ preflightContinue?: boolean;
8
+ optionsSuccessStatus?: number;
9
+ maxAge?: number;
10
+ vary?: boolean;
11
+ }
12
+ export interface CorsOptionsDelegate {
13
+ (origin: string | undefined, callback: (err: Error | null, allow: boolean) => void): void;
14
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export * from "./sg-middleware.interface";
2
+ export * from "./sg-guard.interface";
3
+ export * from "./sg-interceptor.interface";
4
+ export * from "./sg-filter.interface";
@@ -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("./sg-middleware.interface"), exports);
18
+ __exportStar(require("./sg-guard.interface"), exports);
19
+ __exportStar(require("./sg-interceptor.interface"), exports);
20
+ __exportStar(require("./sg-filter.interface"), exports);
@@ -0,0 +1,4 @@
1
+ import { HttpContext, HttpException } from "../..";
2
+ export interface SGFilter {
3
+ catch(exception: HttpException, context: HttpContext): any;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { HttpContext } from "../..";
2
+ export interface SGGuard {
3
+ canAccess(httpContext: HttpContext): Promise<Boolean>;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { HttpContext } from "../..";
2
+ export interface SGInterceptor {
3
+ intercept(httpContext: HttpContext): Promise<(data: any) => any | void>;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { NextFunction, Request, Response } from "express";
2
+ export interface SGMiddleware {
3
+ use(request: Request, response: Response, next: NextFunction): any;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { RouteInfo } from "./route-info.interface";
2
+ export interface MiddlewareOptions<T = RouteInfo> {
3
+ exclude?: T[];
4
+ forRoutes?: T[];
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import { RouteInfo } from "./route-info.interface";
2
+ export interface GlobalPrefixOptions<T = RouteInfo> {
3
+ exclude?: T[];
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ export * from "./route-info.interface";
2
+ export * from "./global-prefix-options.interface";
3
+ export * from "./sg-application.interface";
4
+ export * from "./global-middleware-options.interface";
5
+ export * from "./features";
6
+ export * from "./controller-methods.interface";
7
+ export * from "./controller-method-paramenters.interface";
8
+ export * from "./module-options.interface";
9
+ export * from "./injectable-options.interface";
10
+ export * from "./type.interface";
11
+ export * from "./injection-token.interface";
12
+ export * from "./provider.interface";
13
+ export * from './sg-factory.interface';
14
+ export * from './cors.interface';
15
+ export * from './static-route.interface';
@@ -0,0 +1,31 @@
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("./route-info.interface"), exports);
18
+ __exportStar(require("./global-prefix-options.interface"), exports);
19
+ __exportStar(require("./sg-application.interface"), exports);
20
+ __exportStar(require("./global-middleware-options.interface"), exports);
21
+ __exportStar(require("./features"), exports);
22
+ __exportStar(require("./controller-methods.interface"), exports);
23
+ __exportStar(require("./controller-method-paramenters.interface"), exports);
24
+ __exportStar(require("./module-options.interface"), exports);
25
+ __exportStar(require("./injectable-options.interface"), exports);
26
+ __exportStar(require("./type.interface"), exports);
27
+ __exportStar(require("./injection-token.interface"), exports);
28
+ __exportStar(require("./provider.interface"), exports);
29
+ __exportStar(require("./sg-factory.interface"), exports);
30
+ __exportStar(require("./cors.interface"), exports);
31
+ __exportStar(require("./static-route.interface"), exports);
@@ -0,0 +1,5 @@
1
+ import { Scope } from "../enum";
2
+ export interface InjectableOptions<T = Scope> {
3
+ scope: T;
4
+ token?: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ export type Constructor<T = any> = new (...args: any[]) => T;
2
+ export type Token<T = any> = (new (...args: any[]) => T) | symbol | string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { ModuleProvider } from "./provider.interface";
2
+ export interface ModuleOptions {
3
+ controllers?: any[];
4
+ imports?: any[];
5
+ providers?: ModuleProvider[];
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,30 @@
1
+ import { Scope } from "../enum";
2
+ import { Constructor, Token } from "./injection-token.interface";
3
+ import { Type } from "./type.interface";
4
+ export type ModuleProvider<T = any> = Type<any> | ClassProvider<T> | ValueProvider<T> | FactoryProvider<T>;
5
+ export interface ClassProvider<T = any> {
6
+ token: Token<T>;
7
+ useClass?: Constructor<T>;
8
+ scope: Scope;
9
+ }
10
+ export interface ValueProvider<T = any> {
11
+ token: Token<T>;
12
+ useValue?: T;
13
+ scope: Scope;
14
+ }
15
+ export interface FactoryProvider<T = any> {
16
+ inject: Token[];
17
+ token: Token<T>;
18
+ useFactory: (...args: any[]) => {
19
+ value: T;
20
+ };
21
+ scope: Scope;
22
+ }
23
+ export interface Provider<T = any> {
24
+ token: Token<T>;
25
+ useClass?: Constructor<T>;
26
+ useValue?: T;
27
+ scope: Scope;
28
+ inject?: Token[];
29
+ useFactory?: (...args: any[]) => T;
30
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { RequestMethodEnum } from "../enum/request-method.enum";
2
+ export interface RouteInfo {
3
+ routePrefix: string;
4
+ method: RequestMethodEnum;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { GlobalPrefixOptions } from "./global-prefix-options.interface";
2
+ import { StaticRoutes } from "./static-route.interface";
3
+ export interface ISGApplication {
4
+ use(...args: any[]): this;
5
+ setStaticRoutes(options: StaticRoutes[]): this;
6
+ setGlobalPrefix(prefix: string, options?: GlobalPrefixOptions): this;
7
+ listen(port: number, callback?: (error?: Error) => void): Promise<any>;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { CorsOptions } from "./cors.interface";
2
+ import { ISGApplication } from "./sg-application.interface";
3
+ export interface FactoryOptions {
4
+ cors?: CorsOptions | boolean;
5
+ }
6
+ export interface ISGFactory {
7
+ create(appModule: any, options?: FactoryOptions): ISGApplication;
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export interface SGInterceptor {
2
+ intercepts: any;
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,20 @@
1
+ import { Response } from "express";
2
+ export interface StaticRoutes {
3
+ prefix?: string;
4
+ path: string;
5
+ options?: StaticOptions;
6
+ }
7
+ export interface StaticOptions<T = Response> {
8
+ acceptRanges?: boolean | undefined;
9
+ cacheControl?: boolean | undefined;
10
+ dotfiles?: string | undefined;
11
+ etag?: boolean | undefined;
12
+ extensions?: string[] | false | undefined;
13
+ fallthrough?: boolean | undefined;
14
+ immutable?: boolean | undefined;
15
+ index?: boolean | string | string[] | undefined;
16
+ lastModified?: boolean | undefined;
17
+ maxAge?: number | string | undefined;
18
+ redirect?: boolean | undefined;
19
+ setHeaders?: ((res: T, path: string, stat: any) => any) | undefined;
20
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export interface Type<T = any> extends Function {
2
+ new (...args: any[]): T;
3
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export declare class ConfigService {
2
+ get(propertyPath: string): string;
3
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConfigService = void 0;
4
+ const dotenv_1 = require("dotenv");
5
+ (0, dotenv_1.config)();
6
+ class ConfigService {
7
+ get(propertyPath) {
8
+ return process.env[propertyPath];
9
+ }
10
+ }
11
+ exports.ConfigService = ConfigService;
@@ -0,0 +1 @@
1
+ export * from "./config-service";
@@ -0,0 +1,17 @@
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("./config-service"), exports);
@@ -0,0 +1,15 @@
1
+ import { Provider, Token } from "./common";
2
+ import "reflect-metadata";
3
+ declare class Container {
4
+ private providers;
5
+ private singletons;
6
+ private requestCache;
7
+ register(provider: Provider): void;
8
+ resolve<T>(token: Token<T>, requestId?: string): T;
9
+ private constructFactory;
10
+ private construct;
11
+ private createRequestScopedProxy;
12
+ removeRequestInstances(requestId: string): void;
13
+ }
14
+ export declare const container: Container;
15
+ export {};
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.container = void 0;
4
+ const common_1 = require("./common");
5
+ const cls_1 = require("./cls");
6
+ require("reflect-metadata");
7
+ class Container {
8
+ providers = new Map();
9
+ singletons = new Map();
10
+ requestCache = new Map();
11
+ register(provider) {
12
+ this.providers.set(provider.token, provider);
13
+ }
14
+ resolve(token, requestId) {
15
+ if (token === common_1.REQUEST) {
16
+ const cls = this.resolve(cls_1.CLSService);
17
+ return cls.get("request");
18
+ }
19
+ const provider = this.providers.get(token);
20
+ if (!provider) {
21
+ if (typeof token === "function") {
22
+ return this.construct(token, requestId);
23
+ }
24
+ throw new common_1.HttpException(`No provider found for token: ${token.toString()}`);
25
+ }
26
+ if (provider.useValue)
27
+ return provider.useValue;
28
+ if (provider.scope == common_1.Scope.SINGLETON) {
29
+ if (!this.singletons.has(token)) {
30
+ const instance = provider.useFactory
31
+ ? this.constructFactory(provider, requestId)
32
+ : this.construct(provider.useClass, requestId);
33
+ this.singletons.set(token, instance);
34
+ }
35
+ return this.singletons.get(token);
36
+ }
37
+ else if (provider.scope === common_1.Scope.REQUEST) {
38
+ if (!requestId) {
39
+ throw new Error(`Request-scoped provider "${String(token)}" needs requestId`);
40
+ }
41
+ let cache = this.requestCache.get(requestId);
42
+ if (!cache) {
43
+ cache = new Map();
44
+ this.requestCache.set(requestId, cache);
45
+ }
46
+ if (cache.has(token))
47
+ return cache.get(token);
48
+ const instance = provider.useFactory
49
+ ? this.constructFactory(provider, requestId)
50
+ : this.construct(provider.useClass, requestId);
51
+ cache.set(token, instance);
52
+ return instance;
53
+ }
54
+ return provider.useFactory ? this.constructFactory(provider, requestId) : this.construct(provider.useClass, requestId);
55
+ }
56
+ constructFactory(provider, requestId) {
57
+ const params = provider.inject?.map((token) => {
58
+ const dep = this.providers.get(token);
59
+ if (dep?.scope === common_1.Scope.REQUEST) {
60
+ return this.createRequestScopedProxy(token);
61
+ }
62
+ return this.resolve(token, requestId);
63
+ }) ?? [];
64
+ return provider.useFactory(...params);
65
+ }
66
+ construct(target, requestId) {
67
+ const injections = Reflect.getMetadata("custom:inject_tokens", target) || {};
68
+ const args = [];
69
+ for (const index of Object.keys(injections)) {
70
+ const token = injections[index];
71
+ const provider = this.providers.get(token);
72
+ if (!provider) {
73
+ args[+index] = this.resolve(token, requestId);
74
+ continue;
75
+ }
76
+ if (provider?.scope === common_1.Scope.REQUEST) {
77
+ args[+index] = this.createRequestScopedProxy(token);
78
+ }
79
+ else {
80
+ args[+index] = this.resolve(token, requestId);
81
+ }
82
+ }
83
+ return new target(...args);
84
+ }
85
+ createRequestScopedProxy(token) {
86
+ const cls = this.resolve(cls_1.CLSService);
87
+ return new Proxy({}, {
88
+ get(_, prop) {
89
+ const requestId = cls.get('requestId');
90
+ if (!requestId) {
91
+ throw new Error(`Request-scoped provider "${String(token)}" accessed outside request context`);
92
+ }
93
+ const instance = exports.container.resolve(token, requestId);
94
+ const value = instance[prop];
95
+ return typeof value === "function" ? value.bind(instance) : value;
96
+ }
97
+ });
98
+ }
99
+ removeRequestInstances(requestId) {
100
+ this.requestCache.delete(requestId);
101
+ }
102
+ }
103
+ exports.container = new Container();
package/index.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ export * from "./logger";
2
+ export * from "./common";
3
+ export * from "./config";
4
+ export * from "./sg-factory";
5
+ export * from "./sg-application";
6
+ export * from "./routes-config";
7
+ export * from "./set-meta-data";
8
+ export * from "./cls";
9
+ export * from "./di-container";
package/index.js ADDED
@@ -0,0 +1,25 @@
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("./logger"), exports);
18
+ __exportStar(require("./common"), exports);
19
+ __exportStar(require("./config"), exports);
20
+ __exportStar(require("./sg-factory"), exports);
21
+ __exportStar(require("./sg-application"), exports);
22
+ __exportStar(require("./routes-config"), exports);
23
+ __exportStar(require("./set-meta-data"), exports);
24
+ __exportStar(require("./cls"), exports);
25
+ __exportStar(require("./di-container"), exports);
@@ -0,0 +1 @@
1
+ export * from "./logger-service";
@@ -0,0 +1,17 @@
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("./logger-service"), exports);
@@ -0,0 +1,9 @@
1
+ export declare class AppLogger {
2
+ private readonly logger;
3
+ constructor();
4
+ log(message: string): void;
5
+ debug(message: string): void;
6
+ warn(message: string): void;
7
+ error(message: string): void;
8
+ logWithContext(context: string, message: string): void;
9
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppLogger = void 0;
4
+ const winston_1 = require("winston");
5
+ class AppLogger {
6
+ logger;
7
+ constructor() {
8
+ const colorizer = winston_1.format.colorize();
9
+ (0, winston_1.addColors)({
10
+ info: "bold green",
11
+ log: "bold white",
12
+ warn: "bold yellow"
13
+ });
14
+ const myFormat = winston_1.format.printf(({ message }) => {
15
+ const coloredTime = colorizer.colorize("log", new Date().toLocaleString());
16
+ const coloredServer = colorizer.colorize("info", "[NODE] SHARAN");
17
+ return `${coloredServer}- ${coloredTime} ${message}`;
18
+ });
19
+ this.logger = (0, winston_1.createLogger)({
20
+ level: "info",
21
+ format: winston_1.format.combine(winston_1.format.colorize({ all: true }), myFormat),
22
+ transports: [
23
+ new winston_1.transports.Console(),
24
+ ],
25
+ exitOnError: false
26
+ });
27
+ }
28
+ log(message) {
29
+ this.logger.log("info", message);
30
+ }
31
+ debug(message) {
32
+ this.logger.debug(message);
33
+ }
34
+ warn(message) {
35
+ this.logger.warn(message);
36
+ }
37
+ error(message) {
38
+ this.logger.error(message);
39
+ }
40
+ logWithContext(context, message) {
41
+ this.logger.info(`[${context}] ${message}`);
42
+ }
43
+ }
44
+ exports.AppLogger = AppLogger;
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@sharangyawali/sg-app",
3
+ "version": "0.0.5",
4
+ "keywords": [],
5
+ "author": "Sharan Gyawali",
6
+ "license": "ISC",
7
+ "description": "SG-APP - Express App In CLEAN ARCHITECTURE",
8
+ "devDependencies": {
9
+ "@types/express": "^5.0.6",
10
+ "@types/node": "^25.0.3",
11
+ "ts-node": "^10.9.2",
12
+ "tsx": "^4.21.0",
13
+ "typescript": "^5.9.3"
14
+ },
15
+ "dependencies": {
16
+ "class-transformer": "^0.5.1",
17
+ "class-validator": "^0.14.3",
18
+ "cors": "^2.8.5",
19
+ "dotenv": "^17.2.3",
20
+ "express": "^5.2.1",
21
+ "reflect-metadata": "^0.2.2",
22
+ "winston": "^3.19.0"
23
+ }
24
+ }