@lerianstudio/sindarian-server 1.0.0-beta.1 → 1.0.0-beta.11

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 (199) 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 +5 -0
  7. package/dist/constants/keys.d.ts.map +1 -1
  8. package/dist/constants/keys.js +6 -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 +12 -17
  35. package/dist/controllers/decorators/body-decorator.d.ts.map +1 -1
  36. package/dist/controllers/decorators/body-decorator.js +55 -43
  37. package/dist/controllers/decorators/body-decorator.js.map +1 -1
  38. package/dist/controllers/decorators/controller-decorator.d.ts +5 -8
  39. package/dist/controllers/decorators/controller-decorator.d.ts.map +1 -1
  40. package/dist/controllers/decorators/controller-decorator.js +30 -66
  41. package/dist/controllers/decorators/controller-decorator.js.map +1 -1
  42. package/dist/controllers/decorators/param-decorator.d.ts +4 -9
  43. package/dist/controllers/decorators/param-decorator.d.ts.map +1 -1
  44. package/dist/controllers/decorators/param-decorator.js +33 -29
  45. package/dist/controllers/decorators/param-decorator.js.map +1 -1
  46. package/dist/controllers/decorators/query-decorator.d.ts +11 -15
  47. package/dist/controllers/decorators/query-decorator.d.ts.map +1 -1
  48. package/dist/controllers/decorators/query-decorator.js +24 -38
  49. package/dist/controllers/decorators/query-decorator.js.map +1 -1
  50. package/dist/controllers/decorators/request-decorator.d.ts +8 -12
  51. package/dist/controllers/decorators/request-decorator.d.ts.map +1 -1
  52. package/dist/controllers/decorators/request-decorator.js +21 -17
  53. package/dist/controllers/decorators/request-decorator.js.map +1 -1
  54. package/dist/controllers/decorators/route-decorator.d.ts +12 -1
  55. package/dist/controllers/decorators/route-decorator.d.ts.map +1 -1
  56. package/dist/controllers/decorators/route-decorator.js +24 -16
  57. package/dist/controllers/decorators/route-decorator.js.map +1 -1
  58. package/dist/dependency-injection/container.js +1 -1
  59. package/dist/dependency-injection/container.js.map +1 -1
  60. package/dist/dependency-injection/index.d.ts +2 -1
  61. package/dist/dependency-injection/index.d.ts.map +1 -1
  62. package/dist/dependency-injection/index.js +3 -2
  63. package/dist/dependency-injection/index.js.map +1 -1
  64. package/dist/dependency-injection/injectable-decorator.d.ts +7 -0
  65. package/dist/dependency-injection/injectable-decorator.d.ts.map +1 -0
  66. package/dist/dependency-injection/injectable-decorator.js +21 -0
  67. package/dist/dependency-injection/injectable-decorator.js.map +1 -0
  68. package/dist/exceptions/api-exception.d.ts +4 -7
  69. package/dist/exceptions/api-exception.d.ts.map +1 -1
  70. package/dist/exceptions/api-exception.js +8 -4
  71. package/dist/exceptions/api-exception.js.map +1 -1
  72. package/dist/exceptions/base-exception-filter.d.ts +8 -0
  73. package/dist/exceptions/base-exception-filter.d.ts.map +1 -0
  74. package/dist/exceptions/base-exception-filter.js +21 -0
  75. package/dist/exceptions/base-exception-filter.js.map +1 -0
  76. package/dist/exceptions/decorators/catch-decorator.d.ts +8 -0
  77. package/dist/exceptions/decorators/catch-decorator.d.ts.map +1 -0
  78. package/dist/exceptions/decorators/catch-decorator.js +14 -0
  79. package/dist/exceptions/decorators/catch-decorator.js.map +1 -0
  80. package/dist/exceptions/decorators/index.d.ts +3 -0
  81. package/dist/exceptions/decorators/index.d.ts.map +1 -0
  82. package/dist/exceptions/decorators/index.js +8 -0
  83. package/dist/exceptions/decorators/index.js.map +1 -0
  84. package/dist/exceptions/decorators/use-filters-decorator.d.ts +15 -0
  85. package/dist/exceptions/decorators/use-filters-decorator.d.ts.map +1 -0
  86. package/dist/exceptions/decorators/use-filters-decorator.js +47 -0
  87. package/dist/exceptions/decorators/use-filters-decorator.js.map +1 -0
  88. package/dist/exceptions/exception-filter.d.ts +6 -0
  89. package/dist/exceptions/exception-filter.d.ts.map +1 -0
  90. package/dist/exceptions/exception-filter.js +7 -0
  91. package/dist/exceptions/exception-filter.js.map +1 -0
  92. package/dist/exceptions/index.d.ts +3 -0
  93. package/dist/exceptions/index.d.ts.map +1 -1
  94. package/dist/exceptions/index.js +3 -0
  95. package/dist/exceptions/index.js.map +1 -1
  96. package/dist/index.d.ts +10 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +15 -1
  99. package/dist/index.js.map +1 -1
  100. package/dist/interceptor/call-handler.d.ts +4 -0
  101. package/dist/interceptor/call-handler.d.ts.map +1 -0
  102. package/dist/interceptor/call-handler.js +3 -0
  103. package/dist/interceptor/call-handler.js.map +1 -0
  104. package/dist/interceptor/decorators/index.d.ts +2 -0
  105. package/dist/interceptor/decorators/index.d.ts.map +1 -0
  106. package/dist/interceptor/decorators/index.js +6 -0
  107. package/dist/interceptor/decorators/index.js.map +1 -0
  108. package/dist/interceptor/decorators/use-interceptor-decorator.d.ts +15 -0
  109. package/dist/interceptor/decorators/use-interceptor-decorator.d.ts.map +1 -0
  110. package/dist/interceptor/decorators/use-interceptor-decorator.js +76 -0
  111. package/dist/interceptor/decorators/use-interceptor-decorator.js.map +1 -0
  112. package/dist/interceptor/index.d.ts +4 -0
  113. package/dist/interceptor/index.d.ts.map +1 -0
  114. package/dist/interceptor/index.js +20 -0
  115. package/dist/interceptor/index.js.map +1 -0
  116. package/dist/interceptor/interceptor.d.ts +3 -5
  117. package/dist/interceptor/interceptor.d.ts.map +1 -1
  118. package/dist/interceptor/interceptor.js.map +1 -1
  119. package/dist/logger/console-logger.d.ts +24 -0
  120. package/dist/logger/console-logger.d.ts.map +1 -0
  121. package/dist/logger/console-logger.js +78 -0
  122. package/dist/logger/console-logger.js.map +1 -0
  123. package/dist/logger/index.d.ts +4 -0
  124. package/dist/logger/index.d.ts.map +1 -0
  125. package/dist/logger/index.js +8 -0
  126. package/dist/logger/index.js.map +1 -0
  127. package/dist/logger/logger-service.d.ts +34 -0
  128. package/dist/logger/logger-service.d.ts.map +1 -0
  129. package/dist/logger/logger-service.js +12 -0
  130. package/dist/logger/logger-service.js.map +1 -0
  131. package/dist/logger/logger.d.ts +21 -0
  132. package/dist/logger/logger.d.ts.map +1 -0
  133. package/dist/logger/logger.js +86 -0
  134. package/dist/logger/logger.js.map +1 -0
  135. package/dist/modules/module-decorator.d.ts +5 -3
  136. package/dist/modules/module-decorator.d.ts.map +1 -1
  137. package/dist/modules/module-decorator.js +78 -24
  138. package/dist/modules/module-decorator.js.map +1 -1
  139. package/dist/pipes/decorators/index.d.ts +2 -0
  140. package/dist/pipes/decorators/index.d.ts.map +1 -0
  141. package/dist/pipes/decorators/index.js +6 -0
  142. package/dist/pipes/decorators/index.js.map +1 -0
  143. package/dist/pipes/decorators/use-pipes.d.ts +19 -0
  144. package/dist/pipes/decorators/use-pipes.d.ts.map +1 -0
  145. package/dist/pipes/decorators/use-pipes.js +118 -0
  146. package/dist/pipes/decorators/use-pipes.js.map +1 -0
  147. package/dist/pipes/index.d.ts +3 -0
  148. package/dist/pipes/index.d.ts.map +1 -0
  149. package/dist/pipes/index.js +18 -0
  150. package/dist/pipes/index.js.map +1 -0
  151. package/dist/pipes/pipe-transform.d.ts +46 -0
  152. package/dist/pipes/pipe-transform.d.ts.map +1 -0
  153. package/dist/pipes/pipe-transform.js +3 -0
  154. package/dist/pipes/pipe-transform.js.map +1 -0
  155. package/dist/server/server-factory.d.ts +23 -6
  156. package/dist/server/server-factory.d.ts.map +1 -1
  157. package/dist/server/server-factory.js +114 -48
  158. package/dist/server/server-factory.js.map +1 -1
  159. package/dist/services/filters.d.ts +2 -0
  160. package/dist/services/filters.d.ts.map +1 -0
  161. package/dist/services/filters.js +5 -0
  162. package/dist/services/filters.js.map +1 -0
  163. package/dist/services/http-service.d.ts +68 -0
  164. package/dist/services/http-service.d.ts.map +1 -0
  165. package/dist/services/http-service.js +233 -0
  166. package/dist/services/http-service.js.map +1 -0
  167. package/dist/services/interceptor.d.ts +2 -0
  168. package/dist/services/interceptor.d.ts.map +1 -0
  169. package/dist/services/interceptor.js +5 -0
  170. package/dist/services/interceptor.js.map +1 -0
  171. package/dist/services/pipes.d.ts +2 -0
  172. package/dist/services/pipes.d.ts.map +1 -0
  173. package/dist/services/pipes.js +5 -0
  174. package/dist/services/pipes.js.map +1 -0
  175. package/dist/utils/form-data/get-form-data.d.ts +2 -0
  176. package/dist/utils/form-data/get-form-data.d.ts.map +1 -0
  177. package/dist/utils/form-data/get-form-data.js +11 -0
  178. package/dist/utils/form-data/get-form-data.js.map +1 -0
  179. package/dist/utils/search/create-query-string.d.ts +9 -0
  180. package/dist/utils/search/create-query-string.d.ts.map +1 -0
  181. package/dist/utils/search/create-query-string.js +26 -0
  182. package/dist/utils/search/create-query-string.js.map +1 -0
  183. package/dist/zod/create-zod-dto.d.ts +16 -0
  184. package/dist/zod/create-zod-dto.d.ts.map +1 -0
  185. package/dist/zod/create-zod-dto.js +14 -0
  186. package/dist/zod/create-zod-dto.js.map +1 -0
  187. package/dist/zod/index.d.ts +3 -0
  188. package/dist/zod/index.d.ts.map +1 -0
  189. package/dist/zod/index.js +8 -0
  190. package/dist/zod/index.js.map +1 -0
  191. package/dist/zod/zod-validation-pipe.d.ts +5 -0
  192. package/dist/zod/zod-validation-pipe.d.ts.map +1 -0
  193. package/dist/zod/zod-validation-pipe.js +35 -0
  194. package/dist/zod/zod-validation-pipe.js.map +1 -0
  195. package/package.json +7 -6
  196. package/dist/interceptor/decorators/use-interceptor.d.ts +0 -3
  197. package/dist/interceptor/decorators/use-interceptor.d.ts.map +0 -1
  198. package/dist/interceptor/decorators/use-interceptor.js +0 -9
  199. package/dist/interceptor/decorators/use-interceptor.js.map +0 -1
@@ -1,21 +1,40 @@
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");
21
+ const pipes_1 = require("../services/pipes");
22
+ const use_pipes_1 = require("../pipes/decorators/use-pipes");
23
+ const route_decorator_1 = require("../controllers/decorators/route-decorator");
10
24
  class ServerFactory {
11
25
  constructor(module, container, routes) {
12
26
  this.globalPrefix = '';
27
+ this.globalFilters = [new base_exception_filter_1.BaseExceptionFilter()];
28
+ this.globalInterceptors = [];
29
+ this.globalPipes = [];
13
30
  this.module = module;
14
31
  this.container = container;
15
32
  this.routes = routes;
33
+ logger_1.Logger.log('Application Started.');
16
34
  }
17
- static create(module) {
35
+ static create(module, options) {
18
36
  const container = new container_1.Container();
37
+ this._registerLogger(options?.logger);
19
38
  container.load(module.prototype[keys_1.MODULE_PROPERTY]);
20
39
  const routes = (0, module_decorator_1.moduleHandler)(module);
21
40
  return new ServerFactory(module, container, routes);
@@ -27,6 +46,15 @@ class ServerFactory {
27
46
  setGlobalPrefix(prefix) {
28
47
  this.globalPrefix = prefix;
29
48
  }
49
+ useGlobalFilters(...filters) {
50
+ this.globalFilters.push(...filters);
51
+ }
52
+ useGlobalInterceptors(...interceptors) {
53
+ this.globalInterceptors.push(...interceptors);
54
+ }
55
+ useGlobalPipes(...pipes) {
56
+ this.globalPipes.push(...pipes);
57
+ }
30
58
  /**
31
59
  * Handle a request
32
60
  * @param request - The request to handle
@@ -34,47 +62,52 @@ class ServerFactory {
34
62
  * @returns The response from the handler
35
63
  */
36
64
  async handler(request, { params }) {
65
+ const host = new arguments_host_1.ArgumentsHost([request]);
66
+ let controller;
37
67
  try {
38
68
  // Bind the current request to the container for this request lifecycle
39
69
  (0, request_1.bindRequest)(this.container, request);
40
70
  const { pathname, method } = this._parseRequest(request);
41
- 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)
71
+ const match = this._fetchRoute(pathname, method);
72
+ controller = await this.container.getAsync(match?.controller);
73
+ const handler = this._fetchHandler(controller, match?.methodName);
74
+ const executionContext = new execution_context_1.ExecutionContext(controller.constructor, handler, [request]);
75
+ // Check if there's any interceptors to execute
76
+ const interceptors = await this._fetchInterceptors(controller);
77
+ // Check if there's any pipes to execute
78
+ const pipes = await this._fetchPipes(controller, match?.methodName);
79
+ return await use_interceptor_decorator_1.InterceptorHandler.execute(executionContext, interceptors, async () => {
80
+ // Parse args
81
+ const args = await route_decorator_1.RouteHandler.getArgs(controller, match?.methodName, [request, { params }]);
82
+ // Run registered pipes
83
+ const pipedArgs = await use_pipes_1.PipeHandler.execute(controller, match?.methodName, pipes, args);
84
+ // Execute controller
85
+ return await handler.call(controller, ...pipedArgs);
57
86
  });
58
87
  }
59
88
  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 });
89
+ const filters = await this._fetchExceptionFilters(controller);
90
+ for (const filter of filters) {
91
+ // Fetch filter metadata
92
+ const metadata = (0, catch_decorator_1.catchHandler)(filter.constructor);
93
+ const type = metadata?.type;
94
+ // Check if any specific type is registered, if none, it's a catch all filter
95
+ if (!type || error instanceof type) {
96
+ const response = await filter.catch(error, host);
97
+ // If a response is returned from the filter, use it
98
+ if (response) {
99
+ return response;
100
+ }
101
+ }
65
102
  }
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
103
  return server_1.NextResponse.json({ message: 'Internal server error' }, { status: 500 });
76
104
  }
77
105
  }
106
+ static _registerLogger(logger) {
107
+ if (logger !== false && !(0, lodash_1.isNil)(logger)) {
108
+ logger_1.Logger.overrideLogger(logger);
109
+ }
110
+ }
78
111
  /**
79
112
  * Parse the request
80
113
  * @param request - The request to parse
@@ -102,29 +135,62 @@ class ServerFactory {
102
135
  }
103
136
  });
104
137
  if (!route) {
105
- throw new Error(`Server: Route ${pathname} not found`);
138
+ logger_1.Logger.error(`Route not found for ${method} ${pathname}`);
139
+ throw new api_exception_1.NotFoundApiException(`Route ${pathname} not found`);
106
140
  }
107
141
  return route;
108
142
  }
143
+ async _fetchInterceptors(controller) {
144
+ const interceptors = [...this.globalInterceptors];
145
+ // Fetch any registered global interceptor
146
+ const appInterceptor = this.container.isBound(interceptor_1.APP_INTERCEPTOR);
147
+ if (appInterceptor) {
148
+ interceptors.push(await this.container.getAsync(interceptor_1.APP_INTERCEPTOR));
149
+ }
150
+ if (controller) {
151
+ // Fetch controller interceptors
152
+ interceptors.push(...(await use_interceptor_decorator_1.InterceptorHandler.fetch(this.container, controller)));
153
+ }
154
+ return interceptors.reverse();
155
+ }
156
+ _fetchHandler(controller, methodName) {
157
+ const originalHandler = controller[methodName];
158
+ // Create a named function wrapper to preserve the method name for logging/debugging
159
+ const handler = Object.defineProperty(function namedHandler(...args) {
160
+ return originalHandler.apply(controller, args);
161
+ }, 'name', { value: methodName, configurable: true });
162
+ return handler;
163
+ }
164
+ async _fetchExceptionFilters(controller) {
165
+ const filters = [...this.globalFilters];
166
+ // Fetch any registered global filter
167
+ const appFilter = this.container.isBound(filters_1.APP_FILTER);
168
+ if (appFilter) {
169
+ filters.push(await this.container.getAsync(filters_1.APP_FILTER));
170
+ }
171
+ if (controller) {
172
+ filters.push(...(await use_filters_decorator_1.FilterHandler.fetch(this.container, controller)));
173
+ }
174
+ return filters.reverse();
175
+ }
109
176
  /**
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
177
+ * Fetch the pipes for a controller method
178
+ * @param controller
179
+ * @param methodName
180
+ * @returns
114
181
  */
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;
125
- }
182
+ async _fetchPipes(controller, methodName) {
183
+ const pipes = [...this.globalPipes];
184
+ // Fetch any registered global pipes
185
+ const appPipe = this.container.isBound(pipes_1.APP_PIPE);
186
+ if (appPipe) {
187
+ pipes.push(await this.container.getAsync(pipes_1.APP_PIPE));
188
+ }
189
+ // Fetch controller pipes
190
+ if (controller) {
191
+ pipes.push(...(await use_pipes_1.PipeHandler.fetch(this.container, controller, methodName)));
126
192
  }
127
- return params;
193
+ return pipes.reverse();
128
194
  }
129
195
  }
130
196
  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
+ protected createRequest(url: URL | string, options: FetchModuleOptions): Promise<Request>;
14
+ protected createRequestFormData(url: URL | string, options: FetchModuleOptions): Promise<Request>;
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;cA8DxC,aAAa,CAC3B,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,OAAO,CAAC;cAkBH,qBAAqB,CACnC,GAAG,EAAE,GAAG,GAAG,MAAM,EACjB,OAAO,EAAE,kBAAkB;cAwBb,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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APP_INTERCEPTOR = void 0;
4
+ exports.APP_INTERCEPTOR = Symbol('APP_INTERCEPTOR');
5
+ //# sourceMappingURL=interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interceptor.js","sourceRoot":"","sources":["../../src/services/interceptor.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare const APP_PIPE: unique symbol;
2
+ //# sourceMappingURL=pipes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipes.d.ts","sourceRoot":"","sources":["../../src/services/pipes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,eAAqB,CAAA"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.APP_PIPE = void 0;
4
+ exports.APP_PIPE = Symbol('APP_PIPE');
5
+ //# sourceMappingURL=pipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipes.js","sourceRoot":"","sources":["../../src/services/pipes.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export declare function getFormData(form: FormData): Record<string, any>;
2
+ //# sourceMappingURL=get-form-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-form-data.d.ts","sourceRoot":"","sources":["../../../src/utils/form-data/get-form-data.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,uBAMzC"}