@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
@@ -1,19 +1,29 @@
1
1
  import { Container } from '../dependency-injection/container';
2
+ import { ExceptionFilter } from '../exceptions/exception-filter';
3
+ import { Interceptor } from '../interceptor/interceptor';
2
4
  import { ModuleMetadata } from '../modules/module-decorator';
3
5
  import { Class } from '../types/class';
4
6
  import { NextRequest } from 'next/server';
7
+ import { LoggerService } from '../logger/logger-service';
8
+ export type ServerFactoryOptions = {
9
+ logger?: LoggerService | boolean;
10
+ };
5
11
  export declare class ServerFactory {
6
12
  private globalPrefix;
13
+ private globalFilters;
14
+ private globalInterceptors;
7
15
  private readonly module;
8
16
  private readonly container;
9
17
  private readonly routes;
10
18
  constructor(module: Class, container: Container, routes: ModuleMetadata[]);
11
- static create(module: Class): ServerFactory;
19
+ static create(module: Class, options?: ServerFactoryOptions): ServerFactory;
12
20
  /**
13
21
  * Set the global prefix for the server
14
22
  * @param prefix - The global prefix to set
15
23
  */
16
24
  setGlobalPrefix(prefix: string): void;
25
+ useGlobalFilters(...filters: ExceptionFilter[]): void;
26
+ useGlobalInterceptors(...interceptors: Interceptor[]): void;
17
27
  /**
18
28
  * Handle a request
19
29
  * @param request - The request to handle
@@ -23,6 +33,7 @@ export declare class ServerFactory {
23
33
  handler(request: NextRequest, { params }: {
24
34
  params: Promise<any>;
25
35
  }): Promise<any>;
36
+ private static _registerLogger;
26
37
  /**
27
38
  * Parse the request
28
39
  * @param request - The request to parse
@@ -36,12 +47,8 @@ export declare class ServerFactory {
36
47
  * @returns The route
37
48
  */
38
49
  private _fetchRoute;
39
- /**
40
- * Extract parameters from the URL using the route pattern
41
- * @param pathname - The actual pathname
42
- * @param routePattern - The route pattern with :param syntax
43
- * @returns The extracted parameters
44
- */
45
- private _extractParams;
50
+ private _fetchInterceptors;
51
+ private _fetchHandler;
52
+ private _fetchExceptionFilters;
46
53
  }
47
54
  //# sourceMappingURL=server-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../../src/server/server-factory.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAC5D,OAAO,EAAiB,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE1E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAA;AAEvD,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAa;IAEjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE;WAM3D,MAAM,CAAC,MAAM,EAAE,KAAK;IAUlC;;;OAGG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IAIrC;;;;;OAKG;IACU,OAAO,CAClB,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE;IA0EtC;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;IAgBnB;;;;;OAKG;IACH,OAAO,CAAC,cAAc;CAqBvB"}
1
+ {"version":3,"file":"server-factory.d.ts","sourceRoot":"","sources":["../../src/server/server-factory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,kCAAkC,CAAA;AAI5D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAK/D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,EAAiB,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAI1E,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAErC,OAAO,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAKvD,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAA;CACjC,CAAA;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,kBAAkB,CAAoB;IAE9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE;WAQ3D,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,oBAAoB;IAYlE;;;OAGG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IAI9B,gBAAgB,CAAC,GAAG,OAAO,EAAE,eAAe,EAAE;IAI9C,qBAAqB,CAAC,GAAG,YAAY,EAAE,WAAW,EAAE;IAI3D;;;;;OAKG;IACU,OAAO,CAClB,OAAO,EAAE,WAAW,EACpB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;KAAE;IA2DtC,OAAO,CAAC,MAAM,CAAC,eAAe;IAM9B;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAUrB;;;;;OAKG;IACH,OAAO,CAAC,WAAW;YAiBL,kBAAkB;IAgChC,OAAO,CAAC,aAAa;YAiBP,sBAAsB;CAmBrC"}
@@ -1,21 +1,36 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ServerFactory = void 0;
4
+ const arguments_host_1 = require("../context/arguments-host");
5
+ const execution_context_1 = require("../context/execution-context");
4
6
  const keys_1 = require("../constants/keys");
5
7
  const container_1 = require("../dependency-injection/container");
8
+ const base_exception_filter_1 = require("../exceptions/base-exception-filter");
9
+ const catch_decorator_1 = require("../exceptions/decorators/catch-decorator");
10
+ const use_filters_decorator_1 = require("../exceptions/decorators/use-filters-decorator");
11
+ const use_interceptor_decorator_1 = require("../interceptor/decorators/use-interceptor-decorator");
6
12
  const module_decorator_1 = require("../modules/module-decorator");
13
+ const filters_1 = require("../services/filters");
14
+ const interceptor_1 = require("../services/interceptor");
7
15
  const request_1 = require("../services/request");
8
16
  const url_match_1 = require("../utils/url/url-match");
9
17
  const server_1 = require("next/server");
18
+ const logger_1 = require("../logger/logger");
19
+ const api_exception_1 = require("../exceptions/api-exception");
20
+ const lodash_1 = require("lodash");
10
21
  class ServerFactory {
11
22
  constructor(module, container, routes) {
12
23
  this.globalPrefix = '';
24
+ this.globalFilters = [new base_exception_filter_1.BaseExceptionFilter()];
25
+ this.globalInterceptors = [];
13
26
  this.module = module;
14
27
  this.container = container;
15
28
  this.routes = routes;
29
+ logger_1.Logger.log('Application Started.');
16
30
  }
17
- static create(module) {
31
+ static create(module, options) {
18
32
  const container = new container_1.Container();
33
+ this._registerLogger(options?.logger);
19
34
  container.load(module.prototype[keys_1.MODULE_PROPERTY]);
20
35
  const routes = (0, module_decorator_1.moduleHandler)(module);
21
36
  return new ServerFactory(module, container, routes);
@@ -27,6 +42,12 @@ class ServerFactory {
27
42
  setGlobalPrefix(prefix) {
28
43
  this.globalPrefix = prefix;
29
44
  }
45
+ useGlobalFilters(...filters) {
46
+ this.globalFilters.push(...filters);
47
+ }
48
+ useGlobalInterceptors(...interceptors) {
49
+ this.globalInterceptors.push(...interceptors);
50
+ }
30
51
  /**
31
52
  * Handle a request
32
53
  * @param request - The request to handle
@@ -34,47 +55,45 @@ class ServerFactory {
34
55
  * @returns The response from the handler
35
56
  */
36
57
  async handler(request, { params }) {
58
+ const host = new arguments_host_1.ArgumentsHost([request]);
59
+ let controller;
37
60
  try {
38
61
  // Bind the current request to the container for this request lifecycle
39
62
  (0, request_1.bindRequest)(this.container, request);
40
63
  const { pathname, method } = this._parseRequest(request);
41
64
  const routeMatch = this._fetchRoute(pathname, method);
42
- // Extract URL parameters from the matched route
43
- const extractedParams = this._extractParams(pathname, routeMatch.path);
44
- // Merge with any existing params
45
- const resolvedParams = await params;
46
- const combinedParams = { ...resolvedParams, ...extractedParams };
47
- const controller = await this.container.getAsync(routeMatch?.controller);
48
- if (!controller) {
49
- return server_1.NextResponse.json({ message: 'Controller not found' }, { status: 500 });
50
- }
51
- const handler = controller[routeMatch?.methodName];
52
- if (!handler) {
53
- return server_1.NextResponse.json({ message: 'Method not found' }, { status: 500 });
54
- }
55
- return await handler.call(controller, request, {
56
- params: Promise.resolve(combinedParams)
57
- });
65
+ controller = await this.container.getAsync(routeMatch?.controller);
66
+ const handler = this._fetchHandler(controller, routeMatch?.methodName);
67
+ const executionContext = new execution_context_1.ExecutionContext(controller.constructor, handler, [request]);
68
+ // Check if there's any interceptors to execute
69
+ const interceptors = await this._fetchInterceptors(controller);
70
+ return await (0, use_interceptor_decorator_1.interceptorExecute)(executionContext, interceptors, () => handler.call(controller, request, {
71
+ params
72
+ }));
58
73
  }
59
74
  catch (error) {
60
- // Handle route not found errors
61
- if (error.message &&
62
- error.message.includes('Route') &&
63
- error.message.includes('not found')) {
64
- return server_1.NextResponse.json({ message: 'Route not found' }, { status: 404 });
75
+ const filters = await this._fetchExceptionFilters(controller);
76
+ for (const filter of filters) {
77
+ // Fetch filter metadata
78
+ const metadata = (0, catch_decorator_1.catchHandler)(filter.constructor);
79
+ const type = metadata?.type;
80
+ // Check if any specific type is registered, if none, it's a catch all filter
81
+ if (!type || error instanceof type) {
82
+ const response = await filter.catch(error, host);
83
+ // If a response is returned from the filter, use it
84
+ if (response) {
85
+ return response;
86
+ }
87
+ }
65
88
  }
66
- // Handle validation errors
67
- if (error.message &&
68
- (error.message.includes('Invalid param') ||
69
- error.message.includes('Invalid body') ||
70
- error.message.includes('Invalid query'))) {
71
- return server_1.NextResponse.json({ message: error.message }, { status: 400 });
72
- }
73
- // Handle other errors
74
- console.error('Server error:', error);
75
89
  return server_1.NextResponse.json({ message: 'Internal server error' }, { status: 500 });
76
90
  }
77
91
  }
92
+ static _registerLogger(logger) {
93
+ if (logger !== false && !(0, lodash_1.isNil)(logger)) {
94
+ logger_1.Logger.overrideLogger(logger);
95
+ }
96
+ }
78
97
  /**
79
98
  * Parse the request
80
99
  * @param request - The request to parse
@@ -102,29 +121,56 @@ class ServerFactory {
102
121
  }
103
122
  });
104
123
  if (!route) {
105
- throw new Error(`Server: Route ${pathname} not found`);
124
+ logger_1.Logger.error(`Route not found for ${method} ${pathname}`);
125
+ throw new api_exception_1.NotFoundApiException(`Route ${pathname} not found`);
106
126
  }
107
127
  return route;
108
128
  }
109
- /**
110
- * Extract parameters from the URL using the route pattern
111
- * @param pathname - The actual pathname
112
- * @param routePattern - The route pattern with :param syntax
113
- * @returns The extracted parameters
114
- */
115
- _extractParams(pathname, routePattern) {
116
- const pathSegments = pathname.split('/').filter(Boolean);
117
- const patternSegments = routePattern.split('/').filter(Boolean);
118
- const params = {};
119
- for (let i = 0; i < patternSegments.length; i++) {
120
- const patternSegment = patternSegments[i];
121
- const pathSegment = pathSegments[i];
122
- if (patternSegment.startsWith(':')) {
123
- const paramName = patternSegment.substring(1);
124
- params[paramName] = pathSegment;
129
+ async _fetchInterceptors(controller) {
130
+ const interceptors = [...this.globalInterceptors];
131
+ // Fetch any registered global interceptor
132
+ const appInterceptor = this.container.isBound(interceptor_1.APP_INTERCEPTOR);
133
+ if (appInterceptor) {
134
+ interceptors.push(await this.container.getAsync(interceptor_1.APP_INTERCEPTOR));
135
+ }
136
+ // Fetch controller interceptors
137
+ const metadata = (0, use_interceptor_decorator_1.interceptorHandler)(controller.constructor);
138
+ if (metadata.length > 0) {
139
+ const resolvedInterceptors = await Promise.all(metadata.map((interceptor) => {
140
+ // If it's a class constructor (function), resolve from container
141
+ if (typeof interceptor === 'function') {
142
+ return this.container.getAsync(interceptor);
143
+ }
144
+ // If it's an instance, resolve from container using its constructor
145
+ return this.container.getAsync(interceptor.constructor);
146
+ }));
147
+ interceptors.push(...resolvedInterceptors);
148
+ }
149
+ return interceptors.reverse();
150
+ }
151
+ _fetchHandler(controller, methodName) {
152
+ const originalHandler = controller[methodName];
153
+ // Create a named function wrapper to preserve the method name for logging/debugging
154
+ const handler = Object.defineProperty(function namedHandler(...args) {
155
+ return originalHandler.apply(controller, args);
156
+ }, 'name', { value: methodName, configurable: true });
157
+ return handler;
158
+ }
159
+ async _fetchExceptionFilters(controller) {
160
+ const filters = [...this.globalFilters];
161
+ // Fetch any registered global filter
162
+ const appFilter = this.container.isBound(filters_1.APP_FILTER);
163
+ if (appFilter) {
164
+ filters.push(await this.container.getAsync(filters_1.APP_FILTER));
165
+ }
166
+ if (controller) {
167
+ // Fetch controller filters
168
+ const controllerFilters = (0, use_filters_decorator_1.filterHandler)(controller.constructor);
169
+ if (controllerFilters.length > 0) {
170
+ filters.push(...controllerFilters);
125
171
  }
126
172
  }
127
- return params;
173
+ return filters.reverse();
128
174
  }
129
175
  }
130
176
  exports.ServerFactory = ServerFactory;
@@ -1 +1 @@
1
- {"version":3,"file":"server-factory.js","sourceRoot":"","sources":["../../src/server/server-factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server-factory.js","sourceRoot":"","sources":["../../src/server/server-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const APP_FILTER: unique symbol;
2
+ //# sourceMappingURL=filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../src/services/filters.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,eAAuB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APP_FILTER = void 0;
4
+ exports.APP_FILTER = Symbol('APP_FILTER');
5
+ //# sourceMappingURL=filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filters.js","sourceRoot":"","sources":["../../src/services/filters.ts"],"names":[],"mappings":";;;AAAa,QAAA,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA"}
@@ -0,0 +1,68 @@
1
+ export interface FetchModuleOptions extends RequestInit {
2
+ baseUrl?: URL | string;
3
+ search?: object;
4
+ }
5
+ /**
6
+ * HTTP service class to allow easy implementation of custom API repositories
7
+ *
8
+ * Code based from nestjs-fetch:
9
+ * https://github.com/mikehall314/nestjs-fetch/blob/main/lib/fetch.service.ts
10
+ */
11
+ export declare abstract class HttpService {
12
+ protected request<T>(request: Request): Promise<T>;
13
+ private createRequest;
14
+ private createRequestFormData;
15
+ protected createDefaults(): Promise<{}>;
16
+ /**
17
+ * Event triggered before the request is sent
18
+ * @param request The request to be sent
19
+ */
20
+ protected onBeforeFetch(request: Request): void;
21
+ /**
22
+ * Event triggered after the request is sent, but before response JSON parsing
23
+ * @param request The request that was sent
24
+ * @param response The raw response received from the server
25
+ */
26
+ protected onAfterFetch(request: Request, response: Response): void;
27
+ /**
28
+ * Catch function to handle errors from the native fetch API
29
+ * @param request The request that was sent
30
+ * @param response The raw response received from the server
31
+ * @param error Parsed error response from the server
32
+ */
33
+ protected catch(request: Request, response: Response, error: any): Promise<void>;
34
+ get<T>(url: URL | string, options?: FetchModuleOptions): Promise<T>;
35
+ head(url: URL | string, options?: FetchModuleOptions): Promise<Response>;
36
+ delete(url: URL | string, options?: FetchModuleOptions): Promise<Response>;
37
+ patch<T>(url: URL | string, options?: FetchModuleOptions): Promise<T>;
38
+ put<T>(url: URL | string, options?: FetchModuleOptions): Promise<T>;
39
+ post<T>(url: URL | string, options?: FetchModuleOptions): Promise<T>;
40
+ /**
41
+ * Convert an object to FormData, handling File objects and nested data
42
+ * Uses lodash utilities for better type checking and iteration
43
+ * @param data Object to convert to FormData
44
+ * @returns FormData instance
45
+ */
46
+ private objectToFormData;
47
+ /**
48
+ * POST method with automatic FormData conversion
49
+ * Accepts any object and converts it to FormData, handling File objects properly
50
+ * Automatically removes Content-Type header to let browser set multipart boundary
51
+ * @param url URL to send the request to
52
+ * @param data Object to convert to FormData
53
+ * @param options Additional request options
54
+ * @returns Promise resolving to the response data
55
+ */
56
+ postFormData<T>(url: URL | string, data: Record<string, any>, options?: FetchModuleOptions): Promise<T>;
57
+ /**
58
+ * PATCH method with automatic FormData conversion
59
+ * Accepts any object and converts it to FormData, handling File objects properly
60
+ * Automatically removes Content-Type header to let browser set multipart boundary
61
+ * @param url URL to send the request to
62
+ * @param data Object to convert to FormData
63
+ * @param options Additional request options
64
+ * @returns Promise resolving to the response data
65
+ */
66
+ patchFormData<T>(url: URL | string, data: Record<string, any>, options?: FetchModuleOptions): Promise<T>;
67
+ }
68
+ //# sourceMappingURL=http-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-service.d.ts","sourceRoot":"","sources":["../../src/services/http-service.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,OAAO,CAAC,EAAE,GAAG,GAAG,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;GAKG;AACH,8BAAsB,WAAW;cACf,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;YA8D1C,aAAa;YAqBb,qBAAqB;cA0BnB,cAAc;IAI9B;;;OAGG;IAEH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO;IAExC;;;;OAIG;IAEH,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAE3D;;;;;OAKG;cACa,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG;IAIhE,GAAG,CAAC,CAAC,EACT,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAKP,IAAI,CACR,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,QAAQ,CAAC;IAQd,MAAM,CACV,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,QAAQ,CAAC;IAQd,KAAK,CAAC,CAAC,EACX,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAQP,GAAG,CAAC,CAAC,EACT,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAKP,IAAI,CAAC,CAAC,EACV,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAQb;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IA8BxB;;;;;;;;OAQG;IACG,YAAY,CAAC,CAAC,EAClB,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;IAYb;;;;;;;;OAQG;IACG,aAAa,CAAC,CAAC,EACnB,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,CAAC,CAAC;CAWd"}
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.HttpService = void 0;
4
+ const lodash_1 = require("lodash");
5
+ const create_query_string_1 = require("../utils/search/create-query-string");
6
+ const http_status_1 = require("../constants/http-status");
7
+ const api_exception_1 = require("../exceptions/api-exception");
8
+ /**
9
+ * HTTP service class to allow easy implementation of custom API repositories
10
+ *
11
+ * Code based from nestjs-fetch:
12
+ * https://github.com/mikehall314/nestjs-fetch/blob/main/lib/fetch.service.ts
13
+ */
14
+ class HttpService {
15
+ async request(request) {
16
+ try {
17
+ this.onBeforeFetch(request);
18
+ const response = await fetch(request);
19
+ this.onAfterFetch(request, response);
20
+ // Parse text/plain error responses
21
+ if (response?.headers?.get('content-type')?.includes('text/plain')) {
22
+ const message = await response.text();
23
+ await this.catch(request, response, { message });
24
+ if (response.status === http_status_1.HttpStatus.UNAUTHORIZED) {
25
+ throw new api_exception_1.UnauthorizedApiException(message);
26
+ }
27
+ else if (response.status === http_status_1.HttpStatus.NOT_FOUND) {
28
+ throw new api_exception_1.NotFoundApiException(message);
29
+ }
30
+ else if (response.status === http_status_1.HttpStatus.UNPROCESSABLE_ENTITY) {
31
+ throw new api_exception_1.UnprocessableEntityApiException(message);
32
+ }
33
+ else if (response.status === http_status_1.HttpStatus.INTERNAL_SERVER_ERROR) {
34
+ throw new api_exception_1.InternalServerErrorApiException(message);
35
+ }
36
+ throw new api_exception_1.ServiceUnavailableApiException(message);
37
+ }
38
+ // Parse application/json error responses
39
+ // NodeJS native fetch does not throw for logic errors
40
+ if (!response.ok) {
41
+ const error = await response.json();
42
+ await this.catch(request, response, error);
43
+ if (response.status === http_status_1.HttpStatus.UNAUTHORIZED) {
44
+ throw new api_exception_1.UnauthorizedApiException(error);
45
+ }
46
+ else if (response.status === http_status_1.HttpStatus.NOT_FOUND) {
47
+ throw new api_exception_1.NotFoundApiException(error);
48
+ }
49
+ else if (response.status === http_status_1.HttpStatus.UNPROCESSABLE_ENTITY) {
50
+ throw new api_exception_1.UnprocessableEntityApiException(error);
51
+ }
52
+ else if (response.status === http_status_1.HttpStatus.INTERNAL_SERVER_ERROR) {
53
+ throw new api_exception_1.InternalServerErrorApiException(error);
54
+ }
55
+ throw new api_exception_1.ServiceUnavailableApiException(error);
56
+ }
57
+ // Handle 204 Success No Content response
58
+ if (response.status === http_status_1.HttpStatus.NO_CONTENT) {
59
+ return {};
60
+ }
61
+ return await response.json();
62
+ }
63
+ catch (error) {
64
+ if (error instanceof api_exception_1.ApiException) {
65
+ throw error;
66
+ }
67
+ throw new api_exception_1.ServiceUnavailableApiException(error);
68
+ }
69
+ }
70
+ async createRequest(url, options) {
71
+ const defaults = (await this.createDefaults());
72
+ const { baseUrl, search, ...requestOptions } = {
73
+ ...defaults,
74
+ ...options,
75
+ headers: {
76
+ ...defaults.headers,
77
+ ...options.headers
78
+ }
79
+ };
80
+ return new Request(new URL(url + (0, create_query_string_1.createQueryString)(search), baseUrl), requestOptions);
81
+ }
82
+ async createRequestFormData(url, options) {
83
+ const defaults = (await this.createDefaults());
84
+ const { baseUrl, search, ...requestOptions } = {
85
+ ...defaults,
86
+ ...options,
87
+ headers: {
88
+ ...defaults.headers,
89
+ ...options.headers
90
+ }
91
+ };
92
+ if (requestOptions.headers) {
93
+ delete requestOptions.headers['Content-Type'];
94
+ delete requestOptions.headers['content-type'];
95
+ }
96
+ return new Request(new URL(url + (0, create_query_string_1.createQueryString)(search), baseUrl), requestOptions);
97
+ }
98
+ async createDefaults() {
99
+ return {};
100
+ }
101
+ /**
102
+ * Event triggered before the request is sent
103
+ * @param request The request to be sent
104
+ */
105
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
106
+ onBeforeFetch(request) { }
107
+ /**
108
+ * Event triggered after the request is sent, but before response JSON parsing
109
+ * @param request The request that was sent
110
+ * @param response The raw response received from the server
111
+ */
112
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
113
+ onAfterFetch(request, response) { }
114
+ /**
115
+ * Catch function to handle errors from the native fetch API
116
+ * @param request The request that was sent
117
+ * @param response The raw response received from the server
118
+ * @param error Parsed error response from the server
119
+ */
120
+ async catch(request, response, error) {
121
+ console.error('Request error', { response, error });
122
+ }
123
+ async get(url, options = {}) {
124
+ const request = await this.createRequest(url, { ...options, method: 'GET' });
125
+ return this.request(request);
126
+ }
127
+ async head(url, options = {}) {
128
+ const request = await this.createRequest(url, {
129
+ ...options,
130
+ method: 'HEAD'
131
+ });
132
+ return this.request(request);
133
+ }
134
+ async delete(url, options = {}) {
135
+ const request = await this.createRequest(url, {
136
+ ...options,
137
+ method: 'DELETE'
138
+ });
139
+ return this.request(request);
140
+ }
141
+ async patch(url, options = {}) {
142
+ const request = await this.createRequest(url, {
143
+ ...options,
144
+ method: 'PATCH'
145
+ });
146
+ return this.request(request);
147
+ }
148
+ async put(url, options = {}) {
149
+ const request = await this.createRequest(url, { ...options, method: 'PUT' });
150
+ return this.request(request);
151
+ }
152
+ async post(url, options = {}) {
153
+ const request = await this.createRequest(url, {
154
+ ...options,
155
+ method: 'POST'
156
+ });
157
+ return this.request(request);
158
+ }
159
+ /**
160
+ * Convert an object to FormData, handling File objects and nested data
161
+ * Uses lodash utilities for better type checking and iteration
162
+ * @param data Object to convert to FormData
163
+ * @returns FormData instance
164
+ */
165
+ objectToFormData(data) {
166
+ const formData = new FormData();
167
+ (0, lodash_1.forOwn)(data, (value, key) => {
168
+ // Skip null/undefined values using lodash utilities
169
+ if ((0, lodash_1.isNull)(value) || (0, lodash_1.isUndefined)(value)) {
170
+ return;
171
+ }
172
+ if (value instanceof File) {
173
+ formData.append(key, value);
174
+ }
175
+ else if ((0, lodash_1.isArray)(value)) {
176
+ (0, lodash_1.forEach)(value, (item, index) => {
177
+ if (item instanceof File) {
178
+ formData.append(`${key}[${index}]`, item);
179
+ }
180
+ else {
181
+ formData.append(`${key}[${index}]`, (0, lodash_1.toString)(item));
182
+ }
183
+ });
184
+ }
185
+ else if ((0, lodash_1.isObject)(value)) {
186
+ // Convert nested objects to JSON strings
187
+ formData.append(key, JSON.stringify(value));
188
+ }
189
+ else {
190
+ formData.append(key, (0, lodash_1.toString)(value));
191
+ }
192
+ });
193
+ return formData;
194
+ }
195
+ /**
196
+ * POST method with automatic FormData conversion
197
+ * Accepts any object and converts it to FormData, handling File objects properly
198
+ * Automatically removes Content-Type header to let browser set multipart boundary
199
+ * @param url URL to send the request to
200
+ * @param data Object to convert to FormData
201
+ * @param options Additional request options
202
+ * @returns Promise resolving to the response data
203
+ */
204
+ async postFormData(url, data, options = {}) {
205
+ const formData = this.objectToFormData(data);
206
+ const request = await this.createRequestFormData(url, {
207
+ ...options,
208
+ method: 'POST',
209
+ body: formData
210
+ });
211
+ return this.request(request);
212
+ }
213
+ /**
214
+ * PATCH method with automatic FormData conversion
215
+ * Accepts any object and converts it to FormData, handling File objects properly
216
+ * Automatically removes Content-Type header to let browser set multipart boundary
217
+ * @param url URL to send the request to
218
+ * @param data Object to convert to FormData
219
+ * @param options Additional request options
220
+ * @returns Promise resolving to the response data
221
+ */
222
+ async patchFormData(url, data, options = {}) {
223
+ const formData = this.objectToFormData(data);
224
+ const request = await this.createRequestFormData(url, {
225
+ ...options,
226
+ method: 'PATCH',
227
+ body: formData
228
+ });
229
+ return this.request(request);
230
+ }
231
+ }
232
+ exports.HttpService = HttpService;
233
+ //# sourceMappingURL=http-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-service.js","sourceRoot":"","sources":["../../src/services/http-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const APP_INTERCEPTOR: unique symbol;
2
+ //# sourceMappingURL=interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/services/interceptor.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,eAA4B,CAAA"}