bootifyjs 1.1.9 → 1.2.1

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 (234) hide show
  1. package/README.md +1 -1
  2. package/dist/api.d.ts +5 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +25 -9
  5. package/dist/api.js.map +1 -1
  6. package/dist/auth/AuthManager.d.ts +68 -0
  7. package/dist/auth/AuthManager.d.ts.map +1 -0
  8. package/dist/auth/AuthManager.js +239 -0
  9. package/dist/auth/AuthManager.js.map +1 -0
  10. package/dist/auth/examples/basic-usage.d.ts +30 -0
  11. package/dist/auth/examples/basic-usage.d.ts.map +1 -0
  12. package/dist/auth/examples/basic-usage.js +391 -0
  13. package/dist/auth/examples/basic-usage.js.map +1 -0
  14. package/dist/auth/index.d.ts +70 -0
  15. package/dist/auth/index.d.ts.map +1 -0
  16. package/dist/auth/index.js +118 -0
  17. package/dist/auth/index.js.map +1 -0
  18. package/dist/auth/middleware/AuthMiddleware.d.ts +110 -0
  19. package/dist/auth/middleware/AuthMiddleware.d.ts.map +1 -0
  20. package/dist/auth/middleware/AuthMiddleware.js +336 -0
  21. package/dist/auth/middleware/AuthMiddleware.js.map +1 -0
  22. package/dist/auth/storage/RedisTokenStorage.d.ts +92 -0
  23. package/dist/auth/storage/RedisTokenStorage.d.ts.map +1 -0
  24. package/dist/auth/storage/RedisTokenStorage.js +207 -0
  25. package/dist/auth/storage/RedisTokenStorage.js.map +1 -0
  26. package/dist/auth/strategies/ApiKeyStrategy.d.ts +64 -0
  27. package/dist/auth/strategies/ApiKeyStrategy.d.ts.map +1 -0
  28. package/dist/auth/strategies/ApiKeyStrategy.js +391 -0
  29. package/dist/auth/strategies/ApiKeyStrategy.js.map +1 -0
  30. package/dist/auth/strategies/JwtStrategy.d.ts +46 -0
  31. package/dist/auth/strategies/JwtStrategy.d.ts.map +1 -0
  32. package/dist/auth/strategies/JwtStrategy.js +310 -0
  33. package/dist/auth/strategies/JwtStrategy.js.map +1 -0
  34. package/dist/auth/types.d.ts +130 -0
  35. package/dist/auth/types.d.ts.map +1 -0
  36. package/dist/auth/types.js +50 -0
  37. package/dist/auth/types.js.map +1 -0
  38. package/dist/cache/bootstrap.js +1 -1
  39. package/dist/cache/bootstrap.js.map +1 -1
  40. package/dist/cache/index.d.ts +2 -1
  41. package/dist/cache/index.d.ts.map +1 -1
  42. package/dist/cache/index.js +4 -1
  43. package/dist/cache/index.js.map +1 -1
  44. package/dist/cache/{in-memory-cache.store.d.ts → stores/in-memory-cache.store.d.ts} +1 -1
  45. package/dist/cache/stores/in-memory-cache.store.d.ts.map +1 -0
  46. package/dist/cache/{in-memory-cache.store.js → stores/in-memory-cache.store.js} +1 -1
  47. package/dist/cache/stores/in-memory-cache.store.js.map +1 -0
  48. package/dist/cache/stores/index.d.ts +3 -0
  49. package/dist/cache/stores/index.d.ts.map +1 -0
  50. package/dist/cache/stores/index.js +20 -0
  51. package/dist/cache/stores/index.js.map +1 -0
  52. package/dist/cache/stores/redis-cache.store.d.ts +8 -0
  53. package/dist/cache/stores/redis-cache.store.d.ts.map +1 -0
  54. package/dist/cache/stores/redis-cache.store.js +39 -0
  55. package/dist/cache/stores/redis-cache.store.js.map +1 -0
  56. package/dist/config/AppConfig.d.ts +3 -3
  57. package/dist/config/AppConfig.d.ts.map +1 -1
  58. package/dist/config/AppConfig.js +9 -2
  59. package/dist/config/AppConfig.js.map +1 -1
  60. package/dist/constants/index.d.ts +61 -0
  61. package/dist/constants/index.d.ts.map +1 -0
  62. package/dist/constants/index.js +75 -0
  63. package/dist/constants/index.js.map +1 -0
  64. package/dist/core/decorators.d.ts +7 -7
  65. package/dist/core/decorators.d.ts.map +1 -1
  66. package/dist/core/decorators.js +8 -7
  67. package/dist/core/decorators.js.map +1 -1
  68. package/dist/core/di-container.d.ts +1 -1
  69. package/dist/core/di-container.d.ts.map +1 -1
  70. package/dist/core/di-container.js +3 -3
  71. package/dist/core/di-container.js.map +1 -1
  72. package/dist/core/router.d.ts.map +1 -1
  73. package/dist/core/router.js +3 -3
  74. package/dist/core/router.js.map +1 -1
  75. package/dist/events/bootstrap.d.ts +13 -1
  76. package/dist/events/bootstrap.d.ts.map +1 -1
  77. package/dist/events/bootstrap.js +30 -2
  78. package/dist/events/bootstrap.js.map +1 -1
  79. package/dist/events/buffered-event-bus.service.d.ts +135 -0
  80. package/dist/events/buffered-event-bus.service.d.ts.map +1 -0
  81. package/dist/events/buffered-event-bus.service.js +420 -0
  82. package/dist/events/buffered-event-bus.service.js.map +1 -0
  83. package/dist/events/config/buffered-event-config.d.ts +153 -0
  84. package/dist/events/config/buffered-event-config.d.ts.map +1 -0
  85. package/dist/events/config/buffered-event-config.js +181 -0
  86. package/dist/events/config/buffered-event-config.js.map +1 -0
  87. package/dist/events/event-bus.service.d.ts.map +1 -1
  88. package/dist/events/event-bus.service.js +2 -0
  89. package/dist/events/event-bus.service.js.map +1 -1
  90. package/dist/events/index.d.ts +3 -0
  91. package/dist/events/index.d.ts.map +1 -1
  92. package/dist/events/index.js +3 -0
  93. package/dist/events/index.js.map +1 -1
  94. package/dist/events/metrics/event-metrics.d.ts +175 -0
  95. package/dist/events/metrics/event-metrics.d.ts.map +1 -0
  96. package/dist/events/metrics/event-metrics.js +235 -0
  97. package/dist/events/metrics/event-metrics.js.map +1 -0
  98. package/dist/events/monitoring/health-monitor.d.ts +142 -0
  99. package/dist/events/monitoring/health-monitor.d.ts.map +1 -0
  100. package/dist/events/monitoring/health-monitor.js +492 -0
  101. package/dist/events/monitoring/health-monitor.js.map +1 -0
  102. package/dist/events/retry/retry-handler.d.ts +112 -0
  103. package/dist/events/retry/retry-handler.d.ts.map +1 -0
  104. package/dist/events/retry/retry-handler.js +218 -0
  105. package/dist/events/retry/retry-handler.js.map +1 -0
  106. package/dist/events/shared-buffer.d.ts +92 -0
  107. package/dist/events/shared-buffer.d.ts.map +1 -0
  108. package/dist/events/shared-buffer.js +179 -0
  109. package/dist/events/shared-buffer.js.map +1 -0
  110. package/dist/events/worker/event-processor.worker.d.ts +75 -0
  111. package/dist/events/worker/event-processor.worker.d.ts.map +1 -0
  112. package/dist/events/worker/event-processor.worker.js +293 -0
  113. package/dist/events/worker/event-processor.worker.js.map +1 -0
  114. package/dist/events/worker/worker-manager.d.ts +132 -0
  115. package/dist/events/worker/worker-manager.d.ts.map +1 -0
  116. package/dist/events/worker/worker-manager.js +436 -0
  117. package/dist/events/worker/worker-manager.js.map +1 -0
  118. package/dist/examples/auth/auth.middleware.d.ts +1 -0
  119. package/dist/examples/auth/auth.middleware.d.ts.map +1 -0
  120. package/dist/examples/auth/auth.middleware.js +2 -0
  121. package/dist/examples/auth/auth.middleware.js.map +1 -0
  122. package/dist/examples/auth/authorization.middleware.d.ts +1 -0
  123. package/dist/examples/auth/authorization.middleware.d.ts.map +1 -0
  124. package/dist/examples/auth/authorization.middleware.js +2 -0
  125. package/dist/examples/auth/authorization.middleware.js.map +1 -0
  126. package/dist/examples/auth/context.extractor.d.ts +1 -0
  127. package/dist/examples/auth/context.extractor.d.ts.map +1 -0
  128. package/dist/examples/auth/context.extractor.js +2 -0
  129. package/dist/examples/auth/context.extractor.js.map +1 -0
  130. package/dist/examples/auth/example.d.ts +1 -0
  131. package/dist/examples/auth/example.d.ts.map +1 -0
  132. package/dist/examples/auth/example.js +2 -0
  133. package/dist/examples/auth/example.js.map +1 -0
  134. package/dist/examples/auth/provider.d.ts +1 -0
  135. package/dist/examples/auth/provider.d.ts.map +1 -0
  136. package/dist/examples/auth/provider.js +2 -0
  137. package/dist/examples/auth/provider.js.map +1 -0
  138. package/dist/examples/auth/users.d.ts +1 -0
  139. package/dist/examples/auth/users.d.ts.map +1 -0
  140. package/dist/examples/auth/users.js +2 -0
  141. package/dist/examples/auth/users.js.map +1 -0
  142. package/dist/examples/controllers/auth.controller.d.ts +1 -0
  143. package/dist/examples/controllers/auth.controller.d.ts.map +1 -0
  144. package/dist/examples/controllers/auth.controller.js +249 -0
  145. package/dist/examples/controllers/auth.controller.js.map +1 -0
  146. package/dist/examples/controllers/health.controller.d.ts +1 -0
  147. package/dist/examples/controllers/health.controller.d.ts.map +1 -1
  148. package/dist/examples/controllers/health.controller.js +6 -0
  149. package/dist/examples/controllers/health.controller.js.map +1 -1
  150. package/dist/examples/controllers/todo.controller.d.ts +4 -2
  151. package/dist/examples/controllers/todo.controller.d.ts.map +1 -1
  152. package/dist/examples/controllers/todo.controller.js +44 -18
  153. package/dist/examples/controllers/todo.controller.js.map +1 -1
  154. package/dist/examples/events/TodoEventHandler.d.ts +4 -1
  155. package/dist/examples/events/TodoEventHandler.d.ts.map +1 -1
  156. package/dist/examples/events/TodoEventHandler.js +8 -4
  157. package/dist/examples/events/TodoEventHandler.js.map +1 -1
  158. package/dist/examples/events/buffered-event-example.d.ts +71 -0
  159. package/dist/examples/events/buffered-event-example.d.ts.map +1 -0
  160. package/dist/examples/events/buffered-event-example.js +182 -0
  161. package/dist/examples/events/buffered-event-example.js.map +1 -0
  162. package/dist/examples/events/integration-test.d.ts +10 -0
  163. package/dist/examples/events/integration-test.d.ts.map +1 -0
  164. package/dist/examples/events/integration-test.js +147 -0
  165. package/dist/examples/events/integration-test.js.map +1 -0
  166. package/dist/examples/global-middleware-example.d.ts +2 -0
  167. package/dist/examples/global-middleware-example.d.ts.map +1 -0
  168. package/dist/examples/global-middleware-example.js +94 -0
  169. package/dist/examples/global-middleware-example.js.map +1 -0
  170. package/dist/examples/index.d.ts +1 -0
  171. package/dist/examples/index.d.ts.map +1 -1
  172. package/dist/examples/index.js +86 -27
  173. package/dist/examples/index.js.map +1 -1
  174. package/dist/examples/services/todo.service.d.ts +3 -2
  175. package/dist/examples/services/todo.service.d.ts.map +1 -1
  176. package/dist/examples/services/todo.service.js +12 -2
  177. package/dist/examples/services/todo.service.js.map +1 -1
  178. package/dist/examples/simple-auth-example.d.ts +7 -0
  179. package/dist/examples/simple-auth-example.d.ts.map +1 -0
  180. package/dist/examples/simple-auth-example.js +106 -0
  181. package/dist/examples/simple-auth-example.js.map +1 -0
  182. package/dist/examples/todos/schema.d.ts +4 -4
  183. package/dist/index.d.ts +1 -0
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +1 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/logging/config/logging.config.d.ts +0 -32
  188. package/dist/logging/config/logging.config.d.ts.map +1 -1
  189. package/dist/logging/config/logging.config.js +43 -49
  190. package/dist/logging/config/logging.config.js.map +1 -1
  191. package/dist/logging/core/logger.d.ts +1 -0
  192. package/dist/logging/core/logger.d.ts.map +1 -1
  193. package/dist/logging/core/logger.js +3 -0
  194. package/dist/logging/core/logger.js.map +1 -1
  195. package/dist/logging/core/logger.provider.d.ts.map +1 -1
  196. package/dist/logging/core/logger.provider.js +24 -12
  197. package/dist/logging/core/logger.provider.js.map +1 -1
  198. package/dist/logging/core/startup.logger.d.ts +1 -1
  199. package/dist/logging/core/startup.logger.d.ts.map +1 -1
  200. package/dist/logging/core/startup.logger.js +6 -3
  201. package/dist/logging/core/startup.logger.js.map +1 -1
  202. package/dist/logging/core/tracing.service.d.ts +32 -0
  203. package/dist/logging/core/tracing.service.d.ts.map +1 -0
  204. package/dist/logging/core/tracing.service.js +165 -0
  205. package/dist/logging/core/tracing.service.js.map +1 -0
  206. package/dist/logging/index.d.ts +1 -1
  207. package/dist/logging/index.d.ts.map +1 -1
  208. package/dist/logging/index.js +3 -2
  209. package/dist/logging/index.js.map +1 -1
  210. package/dist/middleware/auth-context.extractor.d.ts +5 -0
  211. package/dist/middleware/auth-context.extractor.d.ts.map +1 -0
  212. package/dist/middleware/auth-context.extractor.js +114 -0
  213. package/dist/middleware/auth-context.extractor.js.map +1 -0
  214. package/dist/middleware/auth.middleware.d.ts +16 -2
  215. package/dist/middleware/auth.middleware.d.ts.map +1 -1
  216. package/dist/middleware/auth.middleware.js +110 -13
  217. package/dist/middleware/auth.middleware.js.map +1 -1
  218. package/dist/middleware/authorization.middleware.d.ts +21 -0
  219. package/dist/middleware/authorization.middleware.d.ts.map +1 -0
  220. package/dist/middleware/authorization.middleware.js +55 -0
  221. package/dist/middleware/authorization.middleware.js.map +1 -0
  222. package/dist/middleware/context.middleware.d.ts +12 -2
  223. package/dist/middleware/context.middleware.d.ts.map +1 -1
  224. package/dist/middleware/context.middleware.js +43 -17
  225. package/dist/middleware/context.middleware.js.map +1 -1
  226. package/dist/middleware/index.d.ts +1 -0
  227. package/dist/middleware/index.d.ts.map +1 -1
  228. package/dist/middleware/tracing.middleware.d.ts +15 -0
  229. package/dist/middleware/tracing.middleware.d.ts.map +1 -0
  230. package/dist/middleware/tracing.middleware.js +36 -0
  231. package/dist/middleware/tracing.middleware.js.map +1 -0
  232. package/package.json +5 -1
  233. package/dist/cache/in-memory-cache.store.d.ts.map +0 -1
  234. package/dist/cache/in-memory-cache.store.js.map +0 -1
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.OrderEventHandler = exports.UserEventHandler = exports.EventProcessingDemoService = exports.OrderProcessedEvent = exports.UserRegisteredEvent = void 0;
16
+ exports.runBufferedEventExample = runBufferedEventExample;
17
+ const decorators_1 = require("../../core/decorators");
18
+ const decorators_2 = require("../../events/decorators");
19
+ const events_1 = require("../../events");
20
+ /**
21
+ * Example events for demonstrating buffered processing
22
+ */
23
+ class UserRegisteredEvent {
24
+ constructor(userId, email, timestamp = Date.now(), correlationId) {
25
+ this.userId = userId;
26
+ this.email = email;
27
+ this.timestamp = timestamp;
28
+ this.correlationId = correlationId;
29
+ this.type = 'user.registered';
30
+ }
31
+ get payload() {
32
+ return {
33
+ userId: this.userId,
34
+ email: this.email,
35
+ timestamp: this.timestamp
36
+ };
37
+ }
38
+ }
39
+ exports.UserRegisteredEvent = UserRegisteredEvent;
40
+ class OrderProcessedEvent {
41
+ constructor(orderId, userId, amount, timestamp = Date.now(), correlationId) {
42
+ this.orderId = orderId;
43
+ this.userId = userId;
44
+ this.amount = amount;
45
+ this.timestamp = timestamp;
46
+ this.correlationId = correlationId;
47
+ this.type = 'order.processed';
48
+ }
49
+ get payload() {
50
+ return {
51
+ orderId: this.orderId,
52
+ userId: this.userId,
53
+ amount: this.amount,
54
+ timestamp: this.timestamp
55
+ };
56
+ }
57
+ }
58
+ exports.OrderProcessedEvent = OrderProcessedEvent;
59
+ /**
60
+ * Service demonstrating both regular and buffered event processing
61
+ */
62
+ let EventProcessingDemoService = class EventProcessingDemoService {
63
+ constructor(eventBus, bufferedEventBus) {
64
+ this.eventBus = eventBus;
65
+ this.bufferedEventBus = bufferedEventBus;
66
+ }
67
+ /**
68
+ * Emit events using regular event bus (synchronous processing)
69
+ */
70
+ async emitRegularEvents() {
71
+ console.log('🔄 Emitting events via regular EventBus...');
72
+ // These will be processed synchronously on the main thread
73
+ this.eventBus.emit(new UserRegisteredEvent('user-123', 'user@example.com'));
74
+ this.eventBus.emit(new OrderProcessedEvent('order-456', 'user-123', 99.99));
75
+ console.log('✅ Regular events emitted');
76
+ }
77
+ /**
78
+ * Emit events using buffered event bus (asynchronous worker processing)
79
+ */
80
+ async emitBufferedEvents() {
81
+ if (!this.bufferedEventBus) {
82
+ console.log('⚠️ Buffered event bus not available');
83
+ return;
84
+ }
85
+ console.log('🔄 Emitting events via BufferedEventBus...');
86
+ // These will be processed asynchronously by worker threads
87
+ const result1 = await this.bufferedEventBus.emitEvent('user.registered', { userId: 'user-789', email: 'buffered@example.com' }, { priority: 'normal' });
88
+ const result2 = await this.bufferedEventBus.emitEvent('order.processed', { orderId: 'order-101', userId: 'user-789', amount: 149.99 }, { priority: 'critical' });
89
+ console.log('✅ Buffered events emitted:', { result1, result2 });
90
+ }
91
+ /**
92
+ * Get metrics from buffered event processing
93
+ */
94
+ getBufferedEventMetrics() {
95
+ if (!this.bufferedEventBus) {
96
+ return null;
97
+ }
98
+ return this.bufferedEventBus.getMetrics();
99
+ }
100
+ /**
101
+ * Get health status of buffered event processing
102
+ */
103
+ async getBufferedEventHealth() {
104
+ if (!this.bufferedEventBus) {
105
+ return null;
106
+ }
107
+ return await this.bufferedEventBus.getHealthStatus();
108
+ }
109
+ };
110
+ exports.EventProcessingDemoService = EventProcessingDemoService;
111
+ exports.EventProcessingDemoService = EventProcessingDemoService = __decorate([
112
+ (0, decorators_1.Service)(),
113
+ __param(0, (0, decorators_1.Autowired)()),
114
+ __param(1, (0, decorators_1.Autowired)()),
115
+ __metadata("design:paramtypes", [events_1.EventBusService,
116
+ events_1.BufferedEventBusService])
117
+ ], EventProcessingDemoService);
118
+ /**
119
+ * Event handlers that will process both regular and buffered events
120
+ */
121
+ let UserEventHandler = class UserEventHandler {
122
+ async handleUserRegistered(event) {
123
+ console.log(`📧 Processing user registration for ${event.email} (ID: ${event.userId})`);
124
+ // Simulate some processing time
125
+ await new Promise(resolve => setTimeout(resolve, 100));
126
+ console.log(`✅ Welcome email sent to ${event.email}`);
127
+ }
128
+ };
129
+ exports.UserEventHandler = UserEventHandler;
130
+ __decorate([
131
+ (0, decorators_2.OnEvent)('user.registered'),
132
+ __metadata("design:type", Function),
133
+ __metadata("design:paramtypes", [UserRegisteredEvent]),
134
+ __metadata("design:returntype", Promise)
135
+ ], UserEventHandler.prototype, "handleUserRegistered", null);
136
+ exports.UserEventHandler = UserEventHandler = __decorate([
137
+ (0, decorators_2.EventListener)()
138
+ ], UserEventHandler);
139
+ let OrderEventHandler = class OrderEventHandler {
140
+ async handleOrderProcessed(event) {
141
+ console.log(`📦 Processing order ${event.orderId} for user ${event.userId} ($${event.amount})`);
142
+ // Simulate some processing time
143
+ await new Promise(resolve => setTimeout(resolve, 200));
144
+ console.log(`✅ Order ${event.orderId} processed successfully`);
145
+ }
146
+ };
147
+ exports.OrderEventHandler = OrderEventHandler;
148
+ __decorate([
149
+ (0, decorators_2.OnEvent)('order.processed'),
150
+ __metadata("design:type", Function),
151
+ __metadata("design:paramtypes", [OrderProcessedEvent]),
152
+ __metadata("design:returntype", Promise)
153
+ ], OrderEventHandler.prototype, "handleOrderProcessed", null);
154
+ exports.OrderEventHandler = OrderEventHandler = __decorate([
155
+ (0, decorators_2.EventListener)()
156
+ ], OrderEventHandler);
157
+ /**
158
+ * Example usage function
159
+ */
160
+ async function runBufferedEventExample() {
161
+ console.log('\n🚀 Buffered Event Processing Example\n');
162
+ // This would typically be injected via DI
163
+ const demoService = new EventProcessingDemoService(new events_1.EventBusService());
164
+ // Emit regular events
165
+ await demoService.emitRegularEvents();
166
+ // Wait a bit
167
+ await new Promise(resolve => setTimeout(resolve, 500));
168
+ // Emit buffered events (if available)
169
+ await demoService.emitBufferedEvents();
170
+ // Show metrics (if available)
171
+ const metrics = demoService.getBufferedEventMetrics();
172
+ if (metrics) {
173
+ console.log('📊 Buffered Event Metrics:', metrics);
174
+ }
175
+ // Show health status (if available)
176
+ const health = await demoService.getBufferedEventHealth();
177
+ if (health) {
178
+ console.log('🏥 Buffered Event Health:', health);
179
+ }
180
+ console.log('\n✅ Example completed\n');
181
+ }
182
+ //# sourceMappingURL=buffered-event-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buffered-event-example.js","sourceRoot":"","sources":["../../../src/examples/events/buffered-event-example.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Integration test demonstrating buffered event processing
3
+ */
4
+ export declare function runIntegrationTest(): Promise<void>;
5
+ /**
6
+ * Performance test for buffered vs regular event processing
7
+ */
8
+ export declare function runPerformanceComparison(): Promise<void>;
9
+ export declare function runAllTests(): Promise<void>;
10
+ //# sourceMappingURL=integration-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-test.d.ts","sourceRoot":"","sources":["../../../src/examples/events/integration-test.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAsB,kBAAkB,kBAwEvC;AAED;;GAEG;AACH,wBAAsB,wBAAwB,kBAqE7C;AAGD,wBAAsB,WAAW,kBAShC"}
@@ -0,0 +1,147 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runIntegrationTest = runIntegrationTest;
4
+ exports.runPerformanceComparison = runPerformanceComparison;
5
+ exports.runAllTests = runAllTests;
6
+ const bootstrap_1 = require("../../events/bootstrap");
7
+ const buffered_event_config_1 = require("../../events/config/buffered-event-config");
8
+ const buffered_event_example_1 = require("./buffered-event-example");
9
+ /**
10
+ * Integration test demonstrating buffered event processing
11
+ */
12
+ async function runIntegrationTest() {
13
+ console.log('🧪 Starting Buffered Event Processing Integration Test\n');
14
+ try {
15
+ // Bootstrap the event system with buffered processing enabled
16
+ console.log('🔧 Bootstrapping event system with buffered processing...');
17
+ const eventSystem = (0, bootstrap_1.bootstrapEventSystem)([], {
18
+ useBufferedProcessing: true,
19
+ bufferedEventConfig: {
20
+ ...buffered_event_config_1.defaultBufferedEventConfig,
21
+ enabled: true,
22
+ workerCount: 2, // Use fewer workers for testing
23
+ maxQueueSize: 1000,
24
+ maxMemoryMB: 10,
25
+ monitoring: {
26
+ ...buffered_event_config_1.defaultBufferedEventConfig.monitoring,
27
+ enabled: true,
28
+ metricsInterval: 2000 // Check metrics every 2 seconds
29
+ }
30
+ }
31
+ });
32
+ console.log('✅ Event system bootstrapped successfully');
33
+ console.log(`📊 Regular EventBus: ${eventSystem.eventBus ? 'Available' : 'Not Available'}`);
34
+ console.log(`🔄 Buffered EventBus: ${eventSystem.bufferedEventBus ? 'Available' : 'Not Available'}`);
35
+ // Wait a moment for workers to initialize
36
+ console.log('⏳ Waiting for worker threads to initialize...');
37
+ await new Promise(resolve => setTimeout(resolve, 1000));
38
+ // Run the example
39
+ await (0, buffered_event_example_1.runBufferedEventExample)();
40
+ // Show final metrics if buffered processing is available
41
+ if (eventSystem.bufferedEventBus) {
42
+ console.log('\n📈 Final System Metrics:');
43
+ const metrics = eventSystem.bufferedEventBus.getMetrics();
44
+ console.log('Queue Metrics:', {
45
+ size: metrics.queueMetrics.size,
46
+ utilization: `${(metrics.queueMetrics.utilization * 100).toFixed(1)}%`,
47
+ totalProcessed: metrics.queueMetrics.totalProcessed
48
+ });
49
+ const health = await eventSystem.bufferedEventBus.getHealthStatus();
50
+ console.log('Health Status:', {
51
+ status: health.status,
52
+ activeWorkers: health.activeWorkers,
53
+ queueDepth: health.queueDepth
54
+ });
55
+ const workerStats = eventSystem.bufferedEventBus.getWorkerStatistics();
56
+ console.log('Worker Statistics:', {
57
+ totalWorkers: workerStats.totalWorkers,
58
+ activeWorkers: workerStats.activeWorkers,
59
+ averageProcessingTime: `${workerStats.averageProcessingTime.toFixed(2)}ms`
60
+ });
61
+ }
62
+ // Graceful shutdown
63
+ console.log('\n🔄 Shutting down event system...');
64
+ if (eventSystem.bufferedEventBus) {
65
+ await eventSystem.bufferedEventBus.shutdown();
66
+ }
67
+ console.log('✅ Integration test completed successfully!\n');
68
+ }
69
+ catch (error) {
70
+ console.error('❌ Integration test failed:', error);
71
+ throw error;
72
+ }
73
+ }
74
+ /**
75
+ * Performance test for buffered vs regular event processing
76
+ */
77
+ async function runPerformanceComparison() {
78
+ console.log('⚡ Performance Comparison: Regular vs Buffered Event Processing\n');
79
+ const eventCount = 1000;
80
+ const testEvents = Array.from({ length: eventCount }, (_, i) => ({
81
+ type: 'test.event',
82
+ payload: { id: i, data: `test-data-${i}` },
83
+ timestamp: Date.now()
84
+ }));
85
+ // Test regular event processing
86
+ console.log(`🔄 Testing regular event processing (${eventCount} events)...`);
87
+ const regularStart = Date.now();
88
+ const regularEventSystem = (0, bootstrap_1.bootstrapEventSystem)([], {
89
+ useBufferedProcessing: false
90
+ });
91
+ for (const event of testEvents) {
92
+ regularEventSystem.eventBus.emit(event);
93
+ }
94
+ const regularEnd = Date.now();
95
+ const regularTime = regularEnd - regularStart;
96
+ console.log(`✅ Regular processing completed in ${regularTime}ms`);
97
+ console.log(`📊 Regular throughput: ${(eventCount / regularTime * 1000).toFixed(0)} events/sec\n`);
98
+ // Test buffered event processing
99
+ console.log(`🔄 Testing buffered event processing (${eventCount} events)...`);
100
+ const bufferedStart = Date.now();
101
+ const bufferedEventSystem = (0, bootstrap_1.bootstrapEventSystem)([], {
102
+ useBufferedProcessing: true,
103
+ bufferedEventConfig: {
104
+ ...buffered_event_config_1.defaultBufferedEventConfig,
105
+ enabled: true,
106
+ workerCount: 4,
107
+ maxQueueSize: eventCount + 100
108
+ }
109
+ });
110
+ // Wait for workers to initialize
111
+ await new Promise(resolve => setTimeout(resolve, 500));
112
+ const emitPromises = testEvents.map(event => bufferedEventSystem.bufferedEventBus.emitEvent(event.type, event.payload, { priority: 'normal' }));
113
+ await Promise.all(emitPromises);
114
+ const bufferedEnd = Date.now();
115
+ const bufferedTime = bufferedEnd - bufferedStart;
116
+ console.log(`✅ Buffered processing completed in ${bufferedTime}ms`);
117
+ console.log(`📊 Buffered throughput: ${(eventCount / bufferedTime * 1000).toFixed(0)} events/sec`);
118
+ // Show comparison
119
+ const improvement = ((regularTime - bufferedTime) / regularTime * 100);
120
+ console.log(`\n📈 Performance improvement: ${improvement > 0 ? '+' : ''}${improvement.toFixed(1)}%`);
121
+ // Cleanup
122
+ await bufferedEventSystem.bufferedEventBus.shutdown();
123
+ console.log('\n✅ Performance comparison completed!\n');
124
+ }
125
+ // Export a function to run all tests
126
+ async function runAllTests() {
127
+ try {
128
+ await runIntegrationTest();
129
+ await new Promise(resolve => setTimeout(resolve, 1000)); // Brief pause
130
+ await runPerformanceComparison();
131
+ }
132
+ catch (error) {
133
+ console.error('❌ Test suite failed:', error);
134
+ process.exit(1);
135
+ }
136
+ }
137
+ // If this file is run directly, execute all tests
138
+ if (require.main === module) {
139
+ runAllTests().then(() => {
140
+ console.log('🎉 All tests completed successfully!');
141
+ process.exit(0);
142
+ }).catch((error) => {
143
+ console.error('💥 Test suite failed:', error);
144
+ process.exit(1);
145
+ });
146
+ }
147
+ //# sourceMappingURL=integration-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration-test.js","sourceRoot":"","sources":["../../../src/examples/events/integration-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function startAppWithGlobalMiddlewares(): Promise<void>;
2
+ //# sourceMappingURL=global-middleware-example.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-middleware-example.d.ts","sourceRoot":"","sources":["../../src/examples/global-middleware-example.ts"],"names":[],"mappings":"AA8DA,wBAAsB,6BAA6B,kBAkBlD"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.startAppWithGlobalMiddlewares = startAppWithGlobalMiddlewares;
13
+ const index_1 = require("../index");
14
+ const decorators_1 = require("../core/decorators");
15
+ // Example middleware implementations
16
+ const authMiddleware = async (request, reply) => {
17
+ console.log('🔐 Auth middleware executed');
18
+ request.user = { id: 1, username: 'testuser' };
19
+ };
20
+ const rateLimitMiddleware = async (request, reply) => {
21
+ console.log('⏱️ Rate limit middleware executed');
22
+ // Add rate limiting logic here
23
+ // For example: check request count per IP, implement sliding window, etc.
24
+ // Example: Simple rate limiting check
25
+ const clientIP = request.ip;
26
+ console.log(`Rate limiting check for IP: ${clientIP}`);
27
+ };
28
+ const loggingMiddleware = async (request, reply) => {
29
+ console.log('📝 Custom logging middleware executed');
30
+ // Add custom logging logic here
31
+ // For example: log request details, performance metrics, etc.
32
+ console.log(`${request.method} ${request.url} - User-Agent: ${request.headers['user-agent']}`);
33
+ };
34
+ const corsMiddleware = async (request, reply) => {
35
+ console.log('🌐 CORS middleware executed');
36
+ // Add CORS headers
37
+ reply.header('Access-Control-Allow-Origin', '*');
38
+ reply.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
39
+ reply.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
40
+ };
41
+ let UserController = class UserController {
42
+ getUsers() {
43
+ return {
44
+ message: 'Users retrieved successfully',
45
+ users: [
46
+ { id: 1, name: 'John Doe' },
47
+ { id: 2, name: 'Jane Smith' }
48
+ ]
49
+ };
50
+ }
51
+ getUserById() {
52
+ return {
53
+ message: 'User retrieved successfully',
54
+ user: { id: 1, name: 'John Doe' }
55
+ };
56
+ }
57
+ };
58
+ __decorate([
59
+ (0, decorators_1.Get)('/'),
60
+ __metadata("design:type", Function),
61
+ __metadata("design:paramtypes", []),
62
+ __metadata("design:returntype", void 0)
63
+ ], UserController.prototype, "getUsers", null);
64
+ __decorate([
65
+ (0, decorators_1.Get)('/:id'),
66
+ __metadata("design:type", Function),
67
+ __metadata("design:paramtypes", []),
68
+ __metadata("design:returntype", void 0)
69
+ ], UserController.prototype, "getUserById", null);
70
+ UserController = __decorate([
71
+ (0, decorators_1.Controller)('/api/users')
72
+ ], UserController);
73
+ // Example usage of globalMiddlewares
74
+ async function startAppWithGlobalMiddlewares() {
75
+ const app = await (0, index_1.createBootifyApp)({
76
+ controllers: [UserController],
77
+ port: 3000,
78
+ enableSwagger: true,
79
+ // Global middlewares execute in the order they are defined
80
+ globalMiddlewares: [
81
+ corsMiddleware, // Executes first - handles CORS
82
+ authMiddleware, // Executes second - handles authentication
83
+ rateLimitMiddleware, // Executes third - handles rate limiting
84
+ loggingMiddleware // Executes fourth - handles custom logging
85
+ ]
86
+ });
87
+ await app.start();
88
+ console.log('🚀 Server started with global middlewares!');
89
+ console.log('📖 API Documentation: http://localhost:3000/api-docs');
90
+ console.log('🔗 Test endpoint: http://localhost:3000/api/users');
91
+ }
92
+ // Uncomment to run this example
93
+ // startAppWithGlobalMiddlewares().catch(console.error)
94
+ //# sourceMappingURL=global-middleware-example.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-middleware-example.js","sourceRoot":"","sources":["../../src/examples/global-middleware-example.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import 'reflect-metadata';
2
+ import '../cache/stores/redis-cache.store';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"AACA,OAAO,kBAAkB,CAAA;AAazB,OAAO,mCAAmC,CAAA"}
@@ -3,44 +3,103 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- require("reflect-metadata");
7
6
  const dotenv_1 = __importDefault(require("dotenv"));
8
- dotenv_1.default.config();
7
+ require("reflect-metadata");
9
8
  const api_1 = require("../api");
9
+ const di_container_1 = require("../core/di-container");
10
+ const bootstrap_1 = require("../events/bootstrap");
10
11
  const health_controller_1 = require("./controllers/health.controller");
11
12
  const todo_controller_1 = require("./controllers/todo.controller");
12
- const component_registry_1 = require("../core/component-registry");
13
- const bootstrap_1 = require("../events/bootstrap");
14
- const di_container_1 = require("../core/di-container");
15
- const todo_service_1 = require("./services/todo.service");
13
+ dotenv_1.default.config();
14
+ // import { bootstrapCache } from '../cache/bootstrap'
16
15
  const zod_1 = __importDefault(require("zod"));
17
- const AppConfig_1 = require("../config/AppConfig");
18
- // import { createBootifyApp } from './api'
19
- // import { HealthController } from './examples/controllers/health.controller'
20
- // import { TodoController } from './examples/controllers/todo.controller'
16
+ const basic_usage_1 = require("../auth/examples/basic-usage");
17
+ const cache_1 = require("../cache");
18
+ // Import the RedisCacheStore to trigger @Service decorator registration
19
+ require("../cache/stores/redis-cache.store");
21
20
  // --- Application Startup ---
21
+ const envSchema = zod_1.default.object({
22
+ NODE_ENV: zod_1.default.string().min(1),
23
+ JWT_SECRET: zod_1.default.string().min(1),
24
+ });
25
+ // Global middleware implementations
26
+ const corsMiddleware = async (request, reply) => {
27
+ console.log('🌐 CORS middleware executed');
28
+ reply.header('Access-Control-Allow-Origin', '*');
29
+ reply.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
30
+ reply.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
31
+ };
32
+ const requestTimingMiddleware = async (request, reply) => {
33
+ const startTime = Date.now();
34
+ console.log(`⏱️ Request started: ${request.method} ${request.url}`);
35
+ request.startTime = startTime;
36
+ request.logTiming = () => {
37
+ const duration = Date.now() - startTime;
38
+ console.log(`⏱️ Request completed in ${duration}ms: ${request.method} ${request.url}`);
39
+ };
40
+ };
41
+ const securityHeadersMiddleware = async (request, reply) => {
42
+ console.log('🔒 Security headers middleware executed');
43
+ reply.header('X-Content-Type-Options', 'nosniff');
44
+ reply.header('X-Frame-Options', 'DENY');
45
+ reply.header('X-XSS-Protection', '1; mode=block');
46
+ reply.header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
47
+ };
48
+ const requestLoggingMiddleware = async (request, reply) => {
49
+ const clientIP = request.ip;
50
+ const userAgent = request.headers['user-agent'] || 'Unknown';
51
+ console.log(`📝 Request: ${request.method} ${request.url} from ${clientIP} - ${userAgent}`);
52
+ };
22
53
  async function main() {
23
54
  // await intitializeLogging()
24
- AppConfig_1.AppConfig.initialize(zod_1.default.object({
25
- NODE_ENV: zod_1.default.string().min(1),
26
- }));
27
- const allComponents = Array.from(component_registry_1.registeredComponents);
28
- await (0, bootstrap_1.bootstrapEventSystem)(allComponents);
29
- // await bootstrapCache()
30
- const { start } = await (0, api_1.createBootifyApp)({
55
+ const { middleware: jwtAuthMiddleware, authManager } = await (0, basic_usage_1.setupJwtAuth)();
56
+ // Register authManager in DI container for controller injection
57
+ di_container_1.container.register('AuthManager', { useFactory: () => authManager });
58
+ const allComponents = Array.from(di_container_1.container.getRegisteredComponents());
59
+ await (0, bootstrap_1.bootstrapEventSystem)(allComponents, { useBufferedProcessing: true });
60
+ await (0, cache_1.bootstrapCache)();
61
+ const { app, start } = await (0, api_1.createBootifyApp)({
31
62
  controllers: [health_controller_1.HealthController, todo_controller_1.TodoController],
32
63
  enableSwagger: true,
33
- port: 3000,
34
- configSchema: zod_1.default.object({
35
- NODE_ENV: zod_1.default.string().min(1),
36
- }),
64
+ port: 8080,
65
+ configSchema: envSchema,
66
+ globalMiddlewares: [
67
+ // jwtAuthMiddleware.authenticate({
68
+ // strategies: ['jwt', 'api-key'],
69
+ // skipPaths: ['/auth/login', '/auth/refresh', '/health']
70
+ // }),
71
+ corsMiddleware, // 1st: Handle CORS headers
72
+ securityHeadersMiddleware, // 2nd: Add security headers
73
+ requestTimingMiddleware, // 3rd: Start request timing
74
+ requestLoggingMiddleware // 4th: Log request details
75
+ ]
37
76
  });
38
- console.log('All components:', di_container_1.container.getRegisteredComponents());
39
- const animal = di_container_1.container.resolve('Animal');
40
- // console.log(animal)
41
- const animalservice = di_container_1.container.resolve(todo_service_1.AnimalService);
42
- console.log(animalservice.animal === animalservice.animal1);
43
- console.log(animalservice.animal.name);
77
+ await (0, basic_usage_1.registerJWTAuthRoutes)(app, authManager, jwtAuthMiddleware);
78
+ // Setup context middleware with authentication
79
+ // app.addHook('onRequest', createContextMiddleware(authContextExtractor));
80
+ // console.log('All components:', container.getRegisteredComponents())
81
+ // const animal = container.resolve<Animal>('Animal')
82
+ // // console.log(animal)
83
+ // const animalservice: AnimalService = container.resolve<AnimalService>(AnimalService)
84
+ // console.log(animalservice.animal === animalservice.animal1)
85
+ // console.log(animalservice.animal.name)
86
+ // console.log('🚀 BootifyJS Example Server starting...');
87
+ // console.log('🔧 Global middlewares enabled: CORS, Security Headers, Request Timing, Request Logging');
88
+ // console.log('📊 Available endpoints:');
89
+ // console.log(' GET /todos - List all todos (requires authentication)');
90
+ // console.log(' POST /todos - Create a new todo (requires authentication)');
91
+ // console.log(' GET /todos/:id - Get a specific todo (requires authentication)');
92
+ // console.log(' PUT /todos/:id - Update a todo (requires authentication)');
93
+ // console.log(' DELETE /todos/:id - Delete a todo (requires authentication)');
94
+ // console.log(' GET /animals - List all animals');
95
+ // console.log(' POST /animals - Create a new animal');
96
+ // console.log('🔐 Authentication endpoints:');
97
+ // console.log(' POST /auth/login - Login to get JWT token');
98
+ // console.log(' GET /auth/info - Check authentication status');
99
+ // console.log('💡 Use @UseMiddleware(authenticate()) decorator for protected routes!');
100
+ // console.log('🔑 Test credentials: admin/admin123, manager/manager123, user/user123');
101
+ // console.log('🌐 CORS enabled for all origins');
102
+ // console.log('🔒 Security headers automatically added to all responses');
44
103
  await start();
45
104
  }
46
105
  main();
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":";;;;;AAAA,4BAAyB;AACzB,oDAA2B;AAC3B,gBAAM,CAAC,MAAM,EAAE,CAAA;AACf,gCAAyC;AACzC,uEAAkE;AAClE,mEAA8D;AAC9D,mEAAiE;AACjE,mDAA0D;AAC1D,uDAAgD;AAChD,0DAA+D;AAG/D,8CAAmB;AACnB,mDAA+C;AAC/C,2CAA2C;AAC3C,8EAA8E;AAC9E,0EAA0E;AAE1E,8BAA8B;AAE9B,KAAK,UAAU,IAAI;IACjB,+BAA+B;IAC/B,qBAAS,CAAC,UAAU,CAClB,aAAC,CAAC,MAAM,CAAC;QACP,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5B,CAAC,CACH,CAAA;IAED,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,yCAAoB,CAAC,CAAA;IACtD,MAAM,IAAA,gCAAoB,EAAC,aAAa,CAAC,CAAA;IACzC,yBAAyB;IACzB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAA,sBAAgB,EAAC;QACvC,WAAW,EAAE,CAAC,oCAAgB,EAAE,gCAAc,CAAC;QAC/C,aAAa,EAAE,IAAI;QACnB,IAAI,EAAE,IAAI;QACV,YAAY,EAAE,aAAC,CAAC,MAAM,CAAC;YACrB,QAAQ,EAAE,aAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC5B,CAAC;KACH,CAAC,CAAA;IAEF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,wBAAS,CAAC,uBAAuB,EAAE,CAAC,CAAA;IACnE,MAAM,MAAM,GAAG,wBAAS,CAAC,OAAO,CAAS,QAAQ,CAAC,CAAA;IAElD,wBAAwB;IACxB,MAAM,aAAa,GAAkB,wBAAS,CAAC,OAAO,CAAgB,4BAAa,CAAC,CAAA;IACpF,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAEtC,MAAM,KAAK,EAAE,CAAA;AACf,CAAC;AAED,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/examples/index.ts"],"names":[],"mappings":"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"}