@xbg.solutions/backend-core 1.0.0

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 (185) hide show
  1. package/lib/core/src/app.d.ts +28 -0
  2. package/lib/core/src/app.d.ts.map +1 -0
  3. package/lib/core/src/app.js +188 -0
  4. package/lib/core/src/app.js.map +1 -0
  5. package/lib/core/src/base/BaseController.d.ts +108 -0
  6. package/lib/core/src/base/BaseController.d.ts.map +1 -0
  7. package/lib/core/src/base/BaseController.js +307 -0
  8. package/lib/core/src/base/BaseController.js.map +1 -0
  9. package/lib/core/src/base/BaseEntity.d.ts +92 -0
  10. package/lib/core/src/base/BaseEntity.d.ts.map +1 -0
  11. package/lib/core/src/base/BaseEntity.js +143 -0
  12. package/lib/core/src/base/BaseEntity.js.map +1 -0
  13. package/lib/core/src/base/BaseRepository.d.ts +124 -0
  14. package/lib/core/src/base/BaseRepository.d.ts.map +1 -0
  15. package/lib/core/src/base/BaseRepository.js +414 -0
  16. package/lib/core/src/base/BaseRepository.js.map +1 -0
  17. package/lib/core/src/base/BaseService.d.ts +89 -0
  18. package/lib/core/src/base/BaseService.d.ts.map +1 -0
  19. package/lib/core/src/base/BaseService.js +342 -0
  20. package/lib/core/src/base/BaseService.js.map +1 -0
  21. package/lib/core/src/base/index.d.ts +8 -0
  22. package/lib/core/src/base/index.d.ts.map +1 -0
  23. package/lib/core/src/base/index.js +24 -0
  24. package/lib/core/src/base/index.js.map +1 -0
  25. package/lib/core/src/config/app.config.d.ts +70 -0
  26. package/lib/core/src/config/app.config.d.ts.map +1 -0
  27. package/lib/core/src/config/app.config.js +106 -0
  28. package/lib/core/src/config/app.config.js.map +1 -0
  29. package/lib/core/src/config/auth.config.d.ts +54 -0
  30. package/lib/core/src/config/auth.config.d.ts.map +1 -0
  31. package/lib/core/src/config/auth.config.js +88 -0
  32. package/lib/core/src/config/auth.config.js.map +1 -0
  33. package/lib/core/src/config/cache.config.d.ts +47 -0
  34. package/lib/core/src/config/cache.config.d.ts.map +1 -0
  35. package/lib/core/src/config/cache.config.js +225 -0
  36. package/lib/core/src/config/cache.config.js.map +1 -0
  37. package/lib/core/src/config/communications.config.d.ts +175 -0
  38. package/lib/core/src/config/communications.config.d.ts.map +1 -0
  39. package/lib/core/src/config/communications.config.js +219 -0
  40. package/lib/core/src/config/communications.config.js.map +1 -0
  41. package/lib/core/src/config/database.config.d.ts +68 -0
  42. package/lib/core/src/config/database.config.d.ts.map +1 -0
  43. package/lib/core/src/config/database.config.js +95 -0
  44. package/lib/core/src/config/database.config.js.map +1 -0
  45. package/lib/core/src/config/firebase-event-mapping.config.d.ts +41 -0
  46. package/lib/core/src/config/firebase-event-mapping.config.d.ts.map +1 -0
  47. package/lib/core/src/config/firebase-event-mapping.config.js +180 -0
  48. package/lib/core/src/config/firebase-event-mapping.config.js.map +1 -0
  49. package/lib/core/src/config/firestore.config.d.ts +61 -0
  50. package/lib/core/src/config/firestore.config.d.ts.map +1 -0
  51. package/lib/core/src/config/firestore.config.js +74 -0
  52. package/lib/core/src/config/firestore.config.js.map +1 -0
  53. package/lib/core/src/config/index.d.ts +15 -0
  54. package/lib/core/src/config/index.d.ts.map +1 -0
  55. package/lib/core/src/config/index.js +41 -0
  56. package/lib/core/src/config/index.js.map +1 -0
  57. package/lib/core/src/config/maps.config.d.ts +31 -0
  58. package/lib/core/src/config/maps.config.d.ts.map +1 -0
  59. package/lib/core/src/config/maps.config.js +50 -0
  60. package/lib/core/src/config/maps.config.js.map +1 -0
  61. package/lib/core/src/config/middleware.config.d.ts +57 -0
  62. package/lib/core/src/config/middleware.config.d.ts.map +1 -0
  63. package/lib/core/src/config/middleware.config.js +68 -0
  64. package/lib/core/src/config/middleware.config.js.map +1 -0
  65. package/lib/core/src/config/tokens.config.d.ts +53 -0
  66. package/lib/core/src/config/tokens.config.d.ts.map +1 -0
  67. package/lib/core/src/config/tokens.config.js +129 -0
  68. package/lib/core/src/config/tokens.config.js.map +1 -0
  69. package/lib/core/src/generator/generator.d.ts +38 -0
  70. package/lib/core/src/generator/generator.d.ts.map +1 -0
  71. package/lib/core/src/generator/generator.js +159 -0
  72. package/lib/core/src/generator/generator.js.map +1 -0
  73. package/lib/core/src/generator/index.d.ts +7 -0
  74. package/lib/core/src/generator/index.d.ts.map +1 -0
  75. package/lib/core/src/generator/index.js +23 -0
  76. package/lib/core/src/generator/index.js.map +1 -0
  77. package/lib/core/src/generator/parser.d.ts +10 -0
  78. package/lib/core/src/generator/parser.d.ts.map +1 -0
  79. package/lib/core/src/generator/parser.js +197 -0
  80. package/lib/core/src/generator/parser.js.map +1 -0
  81. package/lib/core/src/generator/types.d.ts +112 -0
  82. package/lib/core/src/generator/types.d.ts.map +1 -0
  83. package/lib/core/src/generator/types.js +7 -0
  84. package/lib/core/src/generator/types.js.map +1 -0
  85. package/lib/core/src/index.d.ts +19 -0
  86. package/lib/core/src/index.d.ts.map +1 -0
  87. package/lib/core/src/index.js +46 -0
  88. package/lib/core/src/index.js.map +1 -0
  89. package/lib/core/src/middleware/auth.middleware.d.ts +57 -0
  90. package/lib/core/src/middleware/auth.middleware.d.ts.map +1 -0
  91. package/lib/core/src/middleware/auth.middleware.js +256 -0
  92. package/lib/core/src/middleware/auth.middleware.js.map +1 -0
  93. package/lib/core/src/middleware/cors.middleware.d.ts +13 -0
  94. package/lib/core/src/middleware/cors.middleware.d.ts.map +1 -0
  95. package/lib/core/src/middleware/cors.middleware.js +50 -0
  96. package/lib/core/src/middleware/cors.middleware.js.map +1 -0
  97. package/lib/core/src/middleware/error.middleware.d.ts +46 -0
  98. package/lib/core/src/middleware/error.middleware.d.ts.map +1 -0
  99. package/lib/core/src/middleware/error.middleware.js +174 -0
  100. package/lib/core/src/middleware/error.middleware.js.map +1 -0
  101. package/lib/core/src/middleware/index.d.ts +11 -0
  102. package/lib/core/src/middleware/index.d.ts.map +1 -0
  103. package/lib/core/src/middleware/index.js +27 -0
  104. package/lib/core/src/middleware/index.js.map +1 -0
  105. package/lib/core/src/middleware/logging.middleware.d.ts +10 -0
  106. package/lib/core/src/middleware/logging.middleware.d.ts.map +1 -0
  107. package/lib/core/src/middleware/logging.middleware.js +87 -0
  108. package/lib/core/src/middleware/logging.middleware.js.map +1 -0
  109. package/lib/core/src/middleware/rateLimit.middleware.d.ts +26 -0
  110. package/lib/core/src/middleware/rateLimit.middleware.d.ts.map +1 -0
  111. package/lib/core/src/middleware/rateLimit.middleware.js +105 -0
  112. package/lib/core/src/middleware/rateLimit.middleware.js.map +1 -0
  113. package/lib/core/src/middleware/requestId.middleware.d.ts +11 -0
  114. package/lib/core/src/middleware/requestId.middleware.d.ts.map +1 -0
  115. package/lib/core/src/middleware/requestId.middleware.js +26 -0
  116. package/lib/core/src/middleware/requestId.middleware.js.map +1 -0
  117. package/lib/core/src/middleware/validation.middleware.d.ts +25 -0
  118. package/lib/core/src/middleware/validation.middleware.d.ts.map +1 -0
  119. package/lib/core/src/middleware/validation.middleware.js +133 -0
  120. package/lib/core/src/middleware/validation.middleware.js.map +1 -0
  121. package/lib/core/src/types/errors.d.ts +119 -0
  122. package/lib/core/src/types/errors.d.ts.map +1 -0
  123. package/lib/core/src/types/errors.js +210 -0
  124. package/lib/core/src/types/errors.js.map +1 -0
  125. package/lib/utils-cache-connector/src/cache-connector.d.ts +139 -0
  126. package/lib/utils-cache-connector/src/cache-connector.d.ts.map +1 -0
  127. package/lib/utils-cache-connector/src/cache-connector.js +277 -0
  128. package/lib/utils-cache-connector/src/cache-connector.js.map +1 -0
  129. package/lib/utils-cache-connector/src/index.d.ts +52 -0
  130. package/lib/utils-cache-connector/src/index.d.ts.map +1 -0
  131. package/lib/utils-cache-connector/src/index.js +103 -0
  132. package/lib/utils-cache-connector/src/index.js.map +1 -0
  133. package/lib/utils-cache-connector/src/providers/base-cache-provider.d.ts +95 -0
  134. package/lib/utils-cache-connector/src/providers/base-cache-provider.d.ts.map +1 -0
  135. package/lib/utils-cache-connector/src/providers/base-cache-provider.js +120 -0
  136. package/lib/utils-cache-connector/src/providers/base-cache-provider.js.map +1 -0
  137. package/lib/utils-cache-connector/src/providers/firestore-cache-provider.d.ts +58 -0
  138. package/lib/utils-cache-connector/src/providers/firestore-cache-provider.d.ts.map +1 -0
  139. package/lib/utils-cache-connector/src/providers/firestore-cache-provider.js +418 -0
  140. package/lib/utils-cache-connector/src/providers/firestore-cache-provider.js.map +1 -0
  141. package/lib/utils-cache-connector/src/providers/memory-cache-provider.d.ts +57 -0
  142. package/lib/utils-cache-connector/src/providers/memory-cache-provider.d.ts.map +1 -0
  143. package/lib/utils-cache-connector/src/providers/memory-cache-provider.js +217 -0
  144. package/lib/utils-cache-connector/src/providers/memory-cache-provider.js.map +1 -0
  145. package/lib/utils-cache-connector/src/providers/noop-cache-provider.d.ts +21 -0
  146. package/lib/utils-cache-connector/src/providers/noop-cache-provider.d.ts.map +1 -0
  147. package/lib/utils-cache-connector/src/providers/noop-cache-provider.js +42 -0
  148. package/lib/utils-cache-connector/src/providers/noop-cache-provider.js.map +1 -0
  149. package/lib/utils-cache-connector/src/providers/redis-cache-provider.d.ts +64 -0
  150. package/lib/utils-cache-connector/src/providers/redis-cache-provider.d.ts.map +1 -0
  151. package/lib/utils-cache-connector/src/providers/redis-cache-provider.js +414 -0
  152. package/lib/utils-cache-connector/src/providers/redis-cache-provider.js.map +1 -0
  153. package/lib/utils-cache-connector/src/types.d.ts +342 -0
  154. package/lib/utils-cache-connector/src/types.d.ts.map +1 -0
  155. package/lib/utils-cache-connector/src/types.js +8 -0
  156. package/lib/utils-cache-connector/src/types.js.map +1 -0
  157. package/lib/utils-events/src/event-bus.d.ts +42 -0
  158. package/lib/utils-events/src/event-bus.d.ts.map +1 -0
  159. package/lib/utils-events/src/event-bus.js +93 -0
  160. package/lib/utils-events/src/event-bus.js.map +1 -0
  161. package/lib/utils-events/src/event-types.d.ts +146 -0
  162. package/lib/utils-events/src/event-types.d.ts.map +1 -0
  163. package/lib/utils-events/src/event-types.js +49 -0
  164. package/lib/utils-events/src/event-types.js.map +1 -0
  165. package/lib/utils-events/src/index.d.ts +7 -0
  166. package/lib/utils-events/src/index.d.ts.map +1 -0
  167. package/lib/utils-events/src/index.js +11 -0
  168. package/lib/utils-events/src/index.js.map +1 -0
  169. package/lib/utils-logger/src/index.d.ts +12 -0
  170. package/lib/utils-logger/src/index.d.ts.map +1 -0
  171. package/lib/utils-logger/src/index.js +29 -0
  172. package/lib/utils-logger/src/index.js.map +1 -0
  173. package/lib/utils-logger/src/logger-types.d.ts +32 -0
  174. package/lib/utils-logger/src/logger-types.d.ts.map +1 -0
  175. package/lib/utils-logger/src/logger-types.js +17 -0
  176. package/lib/utils-logger/src/logger-types.js.map +1 -0
  177. package/lib/utils-logger/src/logger.d.ts +42 -0
  178. package/lib/utils-logger/src/logger.d.ts.map +1 -0
  179. package/lib/utils-logger/src/logger.js +123 -0
  180. package/lib/utils-logger/src/logger.js.map +1 -0
  181. package/package.json +49 -0
  182. package/src/templates/controller.hbs +48 -0
  183. package/src/templates/entity.hbs +80 -0
  184. package/src/templates/repository.hbs +56 -0
  185. package/src/templates/service.hbs +108 -0
@@ -0,0 +1,342 @@
1
+ "use strict";
2
+ /**
3
+ * Base Service Class
4
+ * Handles business logic orchestration and event publishing
5
+ * All services should extend this class
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.BaseService = void 0;
9
+ const utils_events_1 = require("@xbg/utils-events");
10
+ const utils_logger_1 = require("@xbg/utils-logger");
11
+ const errors_1 = require("../types/errors");
12
+ class BaseService {
13
+ constructor(repository) {
14
+ this.repository = repository;
15
+ }
16
+ /**
17
+ * Create a new entity
18
+ */
19
+ async create(data, context) {
20
+ try {
21
+ utils_logger_1.logger.info(`Creating ${this.entityName}`, {
22
+ requestId: context.requestId,
23
+ userId: context.userId,
24
+ });
25
+ // Pre-create hook
26
+ await this.beforeCreate(data, context);
27
+ // Create entity
28
+ const entity = await this.buildEntity(data);
29
+ const created = await this.repository.create(entity);
30
+ // Post-create hook
31
+ await this.afterCreate(created, context);
32
+ // Publish event
33
+ this.publishEvent('CREATED', created, context);
34
+ return {
35
+ success: true,
36
+ data: created,
37
+ };
38
+ }
39
+ catch (error) {
40
+ const err = error instanceof Error ? error : new Error(String(error));
41
+ const serviceError = new errors_1.ServiceError(`Failed to create ${this.entityName}: ${err.message}`, context.requestId);
42
+ utils_logger_1.logger.error(serviceError.message, err, {
43
+ requestId: context.requestId,
44
+ });
45
+ return {
46
+ success: false,
47
+ error: this.handleError(error),
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Find entity by ID
53
+ */
54
+ async findById(id, context) {
55
+ try {
56
+ utils_logger_1.logger.debug(`Finding ${this.entityName} by ID`, {
57
+ requestId: context.requestId,
58
+ id,
59
+ });
60
+ const entity = await this.repository.findById(id);
61
+ if (!entity) {
62
+ return {
63
+ success: false,
64
+ error: {
65
+ code: 'NOT_FOUND',
66
+ message: `${this.entityName} not found`,
67
+ details: { id },
68
+ },
69
+ };
70
+ }
71
+ // Check access permissions
72
+ const hasAccess = await this.checkReadAccess(entity, context);
73
+ if (!hasAccess) {
74
+ return {
75
+ success: false,
76
+ error: {
77
+ code: 'FORBIDDEN',
78
+ message: `Access denied to ${this.entityName}`,
79
+ },
80
+ };
81
+ }
82
+ return {
83
+ success: true,
84
+ data: entity,
85
+ };
86
+ }
87
+ catch (error) {
88
+ const err = error instanceof Error ? error : new Error(String(error));
89
+ const serviceError = new errors_1.ServiceError(`Failed to find ${this.entityName}: ${err.message}`, context.requestId);
90
+ utils_logger_1.logger.error(serviceError.message, err, {
91
+ requestId: context.requestId,
92
+ id,
93
+ });
94
+ return {
95
+ success: false,
96
+ error: this.handleError(error),
97
+ };
98
+ }
99
+ }
100
+ /**
101
+ * Find all entities with filtering
102
+ */
103
+ async findAll(options, context) {
104
+ try {
105
+ utils_logger_1.logger.debug(`Finding all ${this.entityName}`, {
106
+ requestId: context.requestId,
107
+ options,
108
+ });
109
+ // Apply user-specific filters
110
+ const userOptions = await this.applyUserFilters(options, context);
111
+ const entities = await this.repository.findAll(userOptions);
112
+ return {
113
+ success: true,
114
+ data: entities,
115
+ };
116
+ }
117
+ catch (error) {
118
+ const err = error instanceof Error ? error : new Error(String(error));
119
+ const serviceError = new errors_1.ServiceError(`Failed to find ${this.entityName} entities: ${err.message}`, context.requestId);
120
+ utils_logger_1.logger.error(serviceError.message, err, {
121
+ requestId: context.requestId,
122
+ });
123
+ return {
124
+ success: false,
125
+ error: this.handleError(error),
126
+ };
127
+ }
128
+ }
129
+ /**
130
+ * Find entities with pagination
131
+ */
132
+ async findPaginated(page, pageSize, options, context) {
133
+ try {
134
+ utils_logger_1.logger.debug(`Finding paginated ${this.entityName}`, {
135
+ requestId: context.requestId,
136
+ page,
137
+ pageSize,
138
+ });
139
+ const userOptions = await this.applyUserFilters(options, context);
140
+ const result = await this.repository.findPaginated(page, pageSize, userOptions);
141
+ return {
142
+ success: true,
143
+ data: result,
144
+ };
145
+ }
146
+ catch (error) {
147
+ const err = error instanceof Error ? error : new Error(String(error));
148
+ const serviceError = new errors_1.ServiceError(`Failed to find paginated ${this.entityName}: ${err.message}`, context.requestId);
149
+ utils_logger_1.logger.error(serviceError.message, err, {
150
+ requestId: context.requestId,
151
+ });
152
+ return {
153
+ success: false,
154
+ error: this.handleError(error),
155
+ };
156
+ }
157
+ }
158
+ /**
159
+ * Update an entity
160
+ */
161
+ async update(id, data, context) {
162
+ try {
163
+ utils_logger_1.logger.info(`Updating ${this.entityName}`, {
164
+ requestId: context.requestId,
165
+ id,
166
+ });
167
+ // Find existing entity
168
+ const existing = await this.repository.findById(id);
169
+ if (!existing) {
170
+ return {
171
+ success: false,
172
+ error: {
173
+ code: 'NOT_FOUND',
174
+ message: `${this.entityName} not found`,
175
+ details: { id },
176
+ },
177
+ };
178
+ }
179
+ // Check update permissions
180
+ const canUpdate = await this.checkUpdateAccess(existing, context);
181
+ if (!canUpdate) {
182
+ return {
183
+ success: false,
184
+ error: {
185
+ code: 'FORBIDDEN',
186
+ message: `Access denied to update ${this.entityName}`,
187
+ },
188
+ };
189
+ }
190
+ // Pre-update hook
191
+ await this.beforeUpdate(existing, data, context);
192
+ // Merge changes
193
+ const updated = await this.mergeEntity(existing, data);
194
+ const result = await this.repository.update(updated);
195
+ // Post-update hook
196
+ await this.afterUpdate(result, context);
197
+ // Publish event
198
+ this.publishEvent('UPDATED', result, context);
199
+ return {
200
+ success: true,
201
+ data: result,
202
+ };
203
+ }
204
+ catch (error) {
205
+ const err = error instanceof Error ? error : new Error(String(error));
206
+ const serviceError = new errors_1.ServiceError(`Failed to update ${this.entityName}: ${err.message}`, context.requestId);
207
+ utils_logger_1.logger.error(serviceError.message, err, {
208
+ requestId: context.requestId,
209
+ id,
210
+ });
211
+ return {
212
+ success: false,
213
+ error: this.handleError(error),
214
+ };
215
+ }
216
+ }
217
+ /**
218
+ * Delete an entity
219
+ */
220
+ async delete(id, context, hardDelete = false) {
221
+ try {
222
+ utils_logger_1.logger.info(`Deleting ${this.entityName}`, {
223
+ requestId: context.requestId,
224
+ id,
225
+ hardDelete,
226
+ });
227
+ const existing = await this.repository.findById(id, true);
228
+ if (!existing) {
229
+ return {
230
+ success: false,
231
+ error: {
232
+ code: 'NOT_FOUND',
233
+ message: `${this.entityName} not found`,
234
+ details: { id },
235
+ },
236
+ };
237
+ }
238
+ // Check delete permissions
239
+ const canDelete = await this.checkDeleteAccess(existing, context);
240
+ if (!canDelete) {
241
+ return {
242
+ success: false,
243
+ error: {
244
+ code: 'FORBIDDEN',
245
+ message: `Access denied to delete ${this.entityName}`,
246
+ },
247
+ };
248
+ }
249
+ // Pre-delete hook
250
+ await this.beforeDelete(existing, context);
251
+ // Delete entity
252
+ await this.repository.delete(id, hardDelete);
253
+ // Post-delete hook
254
+ await this.afterDelete(existing, context);
255
+ // Publish event
256
+ this.publishEvent('DELETED', existing, context);
257
+ return {
258
+ success: true,
259
+ };
260
+ }
261
+ catch (error) {
262
+ const err = error instanceof Error ? error : new Error(String(error));
263
+ const serviceError = new errors_1.ServiceError(`Failed to delete ${this.entityName}: ${err.message}`, context.requestId);
264
+ utils_logger_1.logger.error(serviceError.message, err, {
265
+ requestId: context.requestId,
266
+ id,
267
+ });
268
+ return {
269
+ success: false,
270
+ error: this.handleError(error),
271
+ };
272
+ }
273
+ }
274
+ /**
275
+ * Lifecycle hooks (override in subclasses)
276
+ */
277
+ async beforeCreate(_data, _context) { }
278
+ async afterCreate(_entity, _context) { }
279
+ async beforeUpdate(_existing, _data, _context) { }
280
+ async afterUpdate(_entity, _context) { }
281
+ async beforeDelete(_entity, _context) { }
282
+ async afterDelete(_entity, _context) { }
283
+ /**
284
+ * Access control methods (override in subclasses)
285
+ */
286
+ async checkReadAccess(_entity, _context) {
287
+ return true;
288
+ }
289
+ async checkUpdateAccess(_entity, _context) {
290
+ return true;
291
+ }
292
+ async checkDeleteAccess(_entity, _context) {
293
+ return true;
294
+ }
295
+ /**
296
+ * Apply user-specific filters (override in subclasses)
297
+ */
298
+ async applyUserFilters(options, _context) {
299
+ return options;
300
+ }
301
+ /**
302
+ * Publish domain event
303
+ */
304
+ publishEvent(action, entity, context) {
305
+ const eventType = `${this.entityName.toUpperCase()}_${action}`;
306
+ try {
307
+ utils_events_1.eventBus.publish(eventType, {
308
+ entityId: entity.getId(),
309
+ entityType: this.entityName,
310
+ action,
311
+ timestamp: context.timestamp,
312
+ userId: context.userId,
313
+ requestId: context.requestId,
314
+ data: entity.toFirestore(),
315
+ });
316
+ }
317
+ catch (error) {
318
+ utils_logger_1.logger.warn('Failed to publish event', {
319
+ eventType,
320
+ error: error instanceof Error ? error.message : String(error),
321
+ });
322
+ }
323
+ }
324
+ /**
325
+ * Handle errors and convert to ServiceError
326
+ */
327
+ handleError(error) {
328
+ if (error instanceof Error) {
329
+ return {
330
+ code: 'INTERNAL_ERROR',
331
+ message: error.message,
332
+ details: { stack: error.stack },
333
+ };
334
+ }
335
+ return {
336
+ code: 'UNKNOWN_ERROR',
337
+ message: String(error),
338
+ };
339
+ }
340
+ }
341
+ exports.BaseService = BaseService;
342
+ //# sourceMappingURL=BaseService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseService.js","sourceRoot":"","sources":["../../../../src/base/BaseService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Base classes barrel export
3
+ */
4
+ export * from './BaseEntity';
5
+ export * from './BaseRepository';
6
+ export * from './BaseService';
7
+ export * from './BaseController';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/base/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Base classes barrel export
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
17
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ __exportStar(require("./BaseEntity"), exports);
21
+ __exportStar(require("./BaseRepository"), exports);
22
+ __exportStar(require("./BaseService"), exports);
23
+ __exportStar(require("./BaseController"), exports);
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/base/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;AAEH,+CAA6B;AAC7B,mDAAiC;AACjC,gDAA8B;AAC9B,mDAAiC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Application Configuration - Single Source of Truth
3
+ * All application-wide settings are centralized here
4
+ */
5
+ export interface AppConfig {
6
+ app: {
7
+ name: string;
8
+ version: string;
9
+ environment: 'development' | 'staging' | 'production';
10
+ port: number;
11
+ };
12
+ api: {
13
+ basePath: string;
14
+ corsOrigins: string[];
15
+ rateLimits: {
16
+ windowMs: number;
17
+ max: number;
18
+ standardHeaders: boolean;
19
+ legacyHeaders: boolean;
20
+ };
21
+ requestSizeLimit: string;
22
+ enableSwagger: boolean;
23
+ };
24
+ features: {
25
+ authentication: boolean;
26
+ multiTenant: boolean;
27
+ fileUploads: boolean;
28
+ notifications: boolean;
29
+ analytics: boolean;
30
+ realtime: boolean;
31
+ };
32
+ integrations: {
33
+ sendgrid?: {
34
+ enabled: boolean;
35
+ apiKey?: string;
36
+ fromEmail?: string;
37
+ };
38
+ stripe?: {
39
+ enabled: boolean;
40
+ secretKey?: string;
41
+ webhookSecret?: string;
42
+ };
43
+ };
44
+ logging: {
45
+ level: 'debug' | 'info' | 'warn' | 'error';
46
+ prettyPrint: boolean;
47
+ redactPII: boolean;
48
+ };
49
+ }
50
+ /**
51
+ * Load and validate application configuration
52
+ */
53
+ export declare const APP_CONFIG: AppConfig;
54
+ /**
55
+ * Validate configuration on startup
56
+ */
57
+ export declare function validateAppConfig(): void;
58
+ /**
59
+ * Check if running in production environment
60
+ */
61
+ export declare function isProduction(): boolean;
62
+ /**
63
+ * Check if running in development environment
64
+ */
65
+ export declare function isDevelopment(): boolean;
66
+ /**
67
+ * Check if a feature is enabled
68
+ */
69
+ export declare function isFeatureEnabled(feature: keyof AppConfig['features']): boolean;
70
+ //# sourceMappingURL=app.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.config.d.ts","sourceRoot":"","sources":["../../../../src/config/app.config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE;QACH,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;QACtD,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IAEF,GAAG,EAAE;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,UAAU,EAAE;YACV,QAAQ,EAAE,MAAM,CAAC;YACjB,GAAG,EAAE,MAAM,CAAC;YACZ,eAAe,EAAE,OAAO,CAAC;YACzB,aAAa,EAAE,OAAO,CAAC;SACxB,CAAC;QACF,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IAEF,QAAQ,EAAE;QACR,cAAc,EAAE,OAAO,CAAC;QACxB,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;QACvB,SAAS,EAAE,OAAO,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KACnB,CAAC;IAEF,YAAY,EAAE;QACZ,QAAQ,CAAC,EAAE;YACT,OAAO,EAAE,OAAO,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,MAAM,CAAC,EAAE;YACP,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC;IAEF,OAAO,EAAE;QACP,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;QAC3C,WAAW,EAAE,OAAO,CAAC;QACrB,SAAS,EAAE,OAAO,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,SAgDxB,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CA4BxC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAE9E"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ /**
3
+ * Application Configuration - Single Source of Truth
4
+ * All application-wide settings are centralized here
5
+ */
6
+ var _a;
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.APP_CONFIG = void 0;
9
+ exports.validateAppConfig = validateAppConfig;
10
+ exports.isProduction = isProduction;
11
+ exports.isDevelopment = isDevelopment;
12
+ exports.isFeatureEnabled = isFeatureEnabled;
13
+ /**
14
+ * Load and validate application configuration
15
+ */
16
+ exports.APP_CONFIG = {
17
+ app: {
18
+ name: process.env.APP_NAME || 'Backend Boilerplate API',
19
+ version: process.env.APP_VERSION || '1.0.0',
20
+ environment: process.env.NODE_ENV || 'development',
21
+ port: parseInt(process.env.PORT || '5001', 10),
22
+ },
23
+ api: {
24
+ basePath: process.env.API_BASE_PATH || '/api/v1',
25
+ corsOrigins: ((_a = process.env.CORS_ORIGINS) === null || _a === void 0 ? void 0 : _a.split(',')) || ['http://localhost:5173', 'http://localhost:3000'],
26
+ rateLimits: {
27
+ windowMs: parseInt(process.env.RATE_LIMIT_WINDOW_MS || '900000', 10), // 15 minutes
28
+ max: parseInt(process.env.RATE_LIMIT_MAX || '100', 10),
29
+ standardHeaders: true,
30
+ legacyHeaders: false,
31
+ },
32
+ requestSizeLimit: process.env.REQUEST_SIZE_LIMIT || '10mb',
33
+ enableSwagger: process.env.ENABLE_SWAGGER === 'true' || process.env.NODE_ENV === 'development',
34
+ },
35
+ features: {
36
+ authentication: process.env.FEATURE_AUTHENTICATION !== 'false',
37
+ multiTenant: process.env.FEATURE_MULTI_TENANT === 'true',
38
+ fileUploads: process.env.FEATURE_FILE_UPLOADS !== 'false',
39
+ notifications: process.env.FEATURE_NOTIFICATIONS !== 'false',
40
+ analytics: process.env.FEATURE_ANALYTICS === 'true',
41
+ realtime: process.env.FEATURE_REALTIME !== 'false',
42
+ },
43
+ integrations: {
44
+ sendgrid: {
45
+ enabled: !!process.env.SENDGRID_API_KEY,
46
+ apiKey: process.env.SENDGRID_API_KEY,
47
+ fromEmail: process.env.SENDGRID_FROM_EMAIL,
48
+ },
49
+ stripe: {
50
+ enabled: !!process.env.STRIPE_SECRET_KEY,
51
+ secretKey: process.env.STRIPE_SECRET_KEY,
52
+ webhookSecret: process.env.STRIPE_WEBHOOK_SECRET,
53
+ },
54
+ },
55
+ logging: {
56
+ level: process.env.LOG_LEVEL || 'info',
57
+ prettyPrint: process.env.NODE_ENV === 'development',
58
+ redactPII: process.env.NODE_ENV === 'production',
59
+ },
60
+ };
61
+ /**
62
+ * Validate configuration on startup
63
+ */
64
+ function validateAppConfig() {
65
+ var _a, _b;
66
+ const errors = [];
67
+ // Validate required fields
68
+ if (!exports.APP_CONFIG.app.name) {
69
+ errors.push('APP_NAME is required');
70
+ }
71
+ if (!['development', 'staging', 'production'].includes(exports.APP_CONFIG.app.environment)) {
72
+ errors.push('NODE_ENV must be development, staging, or production');
73
+ }
74
+ if (exports.APP_CONFIG.app.port < 1 || exports.APP_CONFIG.app.port > 65535) {
75
+ errors.push('PORT must be between 1 and 65535');
76
+ }
77
+ // Validate integrations
78
+ if (((_a = exports.APP_CONFIG.integrations.sendgrid) === null || _a === void 0 ? void 0 : _a.enabled) && !exports.APP_CONFIG.integrations.sendgrid.apiKey) {
79
+ errors.push('SENDGRID_API_KEY is required when SendGrid is enabled');
80
+ }
81
+ if (((_b = exports.APP_CONFIG.integrations.stripe) === null || _b === void 0 ? void 0 : _b.enabled) && !exports.APP_CONFIG.integrations.stripe.secretKey) {
82
+ errors.push('STRIPE_SECRET_KEY is required when Stripe is enabled');
83
+ }
84
+ if (errors.length > 0) {
85
+ throw new Error(`Configuration validation failed:\n${errors.join('\n')}`);
86
+ }
87
+ }
88
+ /**
89
+ * Check if running in production environment
90
+ */
91
+ function isProduction() {
92
+ return exports.APP_CONFIG.app.environment === 'production';
93
+ }
94
+ /**
95
+ * Check if running in development environment
96
+ */
97
+ function isDevelopment() {
98
+ return exports.APP_CONFIG.app.environment === 'development';
99
+ }
100
+ /**
101
+ * Check if a feature is enabled
102
+ */
103
+ function isFeatureEnabled(feature) {
104
+ return exports.APP_CONFIG.features[feature];
105
+ }
106
+ //# sourceMappingURL=app.config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.config.js","sourceRoot":"","sources":["../../../../src/config/app.config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Authentication Configuration
3
+ * JWT and auth provider settings
4
+ */
5
+ export interface AuthConfig {
6
+ jwt: {
7
+ issuer: string;
8
+ audience: string;
9
+ expiresIn: string;
10
+ refreshTokenExpiresIn: string;
11
+ };
12
+ providers: {
13
+ firebase: {
14
+ enabled: boolean;
15
+ projectId?: string;
16
+ };
17
+ auth0?: {
18
+ enabled: boolean;
19
+ domain?: string;
20
+ clientId?: string;
21
+ clientSecret?: string;
22
+ };
23
+ clerk?: {
24
+ enabled: boolean;
25
+ apiKey?: string;
26
+ };
27
+ };
28
+ blacklist: {
29
+ enabled: boolean;
30
+ cleanupIntervalMs: number;
31
+ retentionDays: number;
32
+ };
33
+ session: {
34
+ maxConcurrentSessions: number;
35
+ slidingExpiration: boolean;
36
+ };
37
+ security: {
38
+ requireEmailVerification: boolean;
39
+ requireMFA: boolean;
40
+ passwordMinLength: number;
41
+ maxLoginAttempts: number;
42
+ lockoutDurationMinutes: number;
43
+ };
44
+ }
45
+ export declare const AUTH_CONFIG: AuthConfig;
46
+ /**
47
+ * Get enabled auth provider
48
+ */
49
+ export declare function getEnabledAuthProvider(): 'firebase' | 'auth0' | 'clerk' | null;
50
+ /**
51
+ * Validate auth configuration
52
+ */
53
+ export declare function validateAuthConfig(): void;
54
+ //# sourceMappingURL=auth.config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.config.d.ts","sourceRoot":"","sources":["../../../../src/config/auth.config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,qBAAqB,EAAE,MAAM,CAAC;KAC/B,CAAC;IAEF,SAAS,EAAE;QACT,QAAQ,EAAE;YACR,OAAO,EAAE,OAAO,CAAC;YACjB,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;QACF,KAAK,CAAC,EAAE;YACN,OAAO,EAAE,OAAO,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,CAAC;QACF,KAAK,CAAC,EAAE;YACN,OAAO,EAAE,OAAO,CAAC;YACjB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IAEF,SAAS,EAAE;QACT,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,OAAO,EAAE;QACP,qBAAqB,EAAE,MAAM,CAAC;QAC9B,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IAEF,QAAQ,EAAE;QACR,wBAAwB,EAAE,OAAO,CAAC;QAClC,UAAU,EAAE,OAAO,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;QACzB,sBAAsB,EAAE,MAAM,CAAC;KAChC,CAAC;CACH;AAED,eAAO,MAAM,WAAW,EAAE,UA2CzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAK9E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAwBzC"}