@scpxl/nodejs-framework 1.0.14 → 1.0.19

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 (192) hide show
  1. package/README.md +29 -0
  2. package/dist/api-requester/api-requester.d.ts +27 -6
  3. package/dist/api-requester/api-requester.d.ts.map +1 -1
  4. package/dist/api-requester/api-requester.js +188 -26
  5. package/dist/api-requester/api-requester.js.map +2 -2
  6. package/dist/api-requester/index.d.ts +1 -0
  7. package/dist/api-requester/index.d.ts.map +1 -1
  8. package/dist/api-requester/index.js.map +1 -1
  9. package/dist/application/base-application.d.ts +16 -20
  10. package/dist/application/base-application.d.ts.map +1 -1
  11. package/dist/application/base-application.js +152 -109
  12. package/dist/application/base-application.js.map +2 -2
  13. package/dist/application/command-application.d.ts.map +1 -1
  14. package/dist/application/command-application.js +3 -4
  15. package/dist/application/command-application.js.map +2 -2
  16. package/dist/application/web-application.d.ts.map +1 -1
  17. package/dist/application/web-application.js +9 -2
  18. package/dist/application/web-application.js.map +2 -2
  19. package/dist/cache/manager.d.ts +87 -6
  20. package/dist/cache/manager.d.ts.map +1 -1
  21. package/dist/cache/manager.js +77 -30
  22. package/dist/cache/manager.js.map +2 -2
  23. package/dist/cluster/cluster-manager.d.ts.map +1 -1
  24. package/dist/cluster/cluster-manager.js +7 -9
  25. package/dist/cluster/cluster-manager.js.map +2 -2
  26. package/dist/config/env.d.ts +11 -0
  27. package/dist/config/env.d.ts.map +1 -0
  28. package/dist/config/env.js +103 -0
  29. package/dist/config/env.js.map +7 -0
  30. package/dist/config/index.d.ts +3 -0
  31. package/dist/config/index.d.ts.map +1 -0
  32. package/dist/config/index.js +3 -0
  33. package/dist/config/index.js.map +7 -0
  34. package/dist/config/schema.d.ts +408 -0
  35. package/dist/config/schema.d.ts.map +1 -0
  36. package/dist/config/schema.js +218 -0
  37. package/dist/config/schema.js.map +7 -0
  38. package/dist/database/dynamic-entity.d.ts.map +1 -1
  39. package/dist/database/dynamic-entity.js +6 -2
  40. package/dist/database/dynamic-entity.js.map +2 -2
  41. package/dist/database/instance.d.ts.map +1 -1
  42. package/dist/database/instance.js +0 -8
  43. package/dist/database/instance.js.map +2 -2
  44. package/dist/database/manager.d.ts.map +1 -1
  45. package/dist/database/manager.js +71 -9
  46. package/dist/database/manager.js.map +2 -2
  47. package/dist/error/error-reporter.d.ts +96 -0
  48. package/dist/error/error-reporter.d.ts.map +1 -0
  49. package/dist/error/error-reporter.js +228 -0
  50. package/dist/error/error-reporter.js.map +7 -0
  51. package/dist/error/error.interface.d.ts +126 -0
  52. package/dist/error/error.interface.d.ts.map +1 -0
  53. package/dist/error/error.interface.js +45 -0
  54. package/dist/error/error.interface.js.map +7 -0
  55. package/dist/error/framework-errors.d.ts +113 -0
  56. package/dist/error/framework-errors.d.ts.map +1 -0
  57. package/dist/error/framework-errors.js +176 -0
  58. package/dist/error/framework-errors.js.map +7 -0
  59. package/dist/error/index.d.ts +6 -0
  60. package/dist/error/index.d.ts.map +1 -0
  61. package/dist/error/index.js +34 -0
  62. package/dist/error/index.js.map +7 -0
  63. package/dist/event/manager.d.ts.map +1 -1
  64. package/dist/event/manager.js +2 -9
  65. package/dist/event/manager.js.map +2 -2
  66. package/dist/index.d.ts +5 -1
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +5 -1
  69. package/dist/index.js.map +2 -2
  70. package/dist/lifecycle/exit.d.ts +11 -0
  71. package/dist/lifecycle/exit.d.ts.map +1 -0
  72. package/dist/lifecycle/exit.js +29 -0
  73. package/dist/lifecycle/exit.js.map +7 -0
  74. package/dist/lifecycle/index.d.ts +7 -0
  75. package/dist/lifecycle/index.d.ts.map +1 -0
  76. package/dist/lifecycle/index.js +12 -0
  77. package/dist/lifecycle/index.js.map +7 -0
  78. package/dist/lifecycle/lifecycle-manager.d.ts +66 -0
  79. package/dist/lifecycle/lifecycle-manager.d.ts.map +1 -0
  80. package/dist/lifecycle/lifecycle-manager.js +280 -0
  81. package/dist/lifecycle/lifecycle-manager.js.map +7 -0
  82. package/dist/lifecycle/shutdown-controller.d.ts +15 -0
  83. package/dist/lifecycle/shutdown-controller.d.ts.map +1 -0
  84. package/dist/lifecycle/shutdown-controller.js +38 -0
  85. package/dist/lifecycle/shutdown-controller.js.map +7 -0
  86. package/dist/lifecycle/types.d.ts +28 -0
  87. package/dist/lifecycle/types.d.ts.map +1 -0
  88. package/dist/lifecycle/types.js +13 -0
  89. package/dist/lifecycle/types.js.map +7 -0
  90. package/dist/logger/logger.d.ts +2 -1
  91. package/dist/logger/logger.d.ts.map +1 -1
  92. package/dist/logger/logger.js +35 -11
  93. package/dist/logger/logger.js.map +2 -2
  94. package/dist/performance/cache-performance.d.ts +6 -0
  95. package/dist/performance/cache-performance.d.ts.map +1 -1
  96. package/dist/performance/cache-performance.js +16 -0
  97. package/dist/performance/cache-performance.js.map +2 -2
  98. package/dist/performance/index.d.ts +1 -0
  99. package/dist/performance/index.d.ts.map +1 -1
  100. package/dist/performance/index.js +1 -0
  101. package/dist/performance/index.js.map +2 -2
  102. package/dist/performance/performance-monitor.d.ts.map +1 -1
  103. package/dist/performance/performance-monitor.js +47 -18
  104. package/dist/performance/performance-monitor.js.map +2 -2
  105. package/dist/performance/performance-monitor.plugin.d.ts +24 -0
  106. package/dist/performance/performance-monitor.plugin.d.ts.map +1 -0
  107. package/dist/performance/performance-monitor.plugin.js +89 -0
  108. package/dist/performance/performance-monitor.plugin.js.map +7 -0
  109. package/dist/performance/webserver-performance.js +1 -1
  110. package/dist/performance/webserver-performance.js.map +2 -2
  111. package/dist/queue/manager.d.ts.map +1 -1
  112. package/dist/queue/manager.js +3 -10
  113. package/dist/queue/manager.js.map +2 -2
  114. package/dist/queue/worker.d.ts.map +1 -1
  115. package/dist/queue/worker.js +2 -2
  116. package/dist/queue/worker.js.map +2 -2
  117. package/dist/redis/manager.d.ts.map +1 -1
  118. package/dist/redis/manager.js +228 -33
  119. package/dist/redis/manager.js.map +2 -2
  120. package/dist/request-context/index.d.ts +3 -0
  121. package/dist/request-context/index.d.ts.map +1 -0
  122. package/dist/request-context/index.js +25 -0
  123. package/dist/request-context/index.js.map +7 -0
  124. package/dist/request-context/request-context.d.ts +108 -0
  125. package/dist/request-context/request-context.d.ts.map +1 -0
  126. package/dist/request-context/request-context.interface.d.ts +46 -0
  127. package/dist/request-context/request-context.interface.d.ts.map +1 -0
  128. package/dist/request-context/request-context.interface.js +1 -0
  129. package/dist/request-context/request-context.interface.js.map +7 -0
  130. package/dist/request-context/request-context.js +79 -0
  131. package/dist/request-context/request-context.js.map +7 -0
  132. package/dist/services/aws/s3.js +4 -6
  133. package/dist/services/aws/s3.js.map +2 -2
  134. package/dist/util/file.d.ts +13 -0
  135. package/dist/util/file.d.ts.map +1 -1
  136. package/dist/util/file.js +46 -9
  137. package/dist/util/file.js.map +2 -2
  138. package/dist/util/helper.d.ts +16 -1
  139. package/dist/util/helper.d.ts.map +1 -1
  140. package/dist/util/helper.js +19 -43
  141. package/dist/util/helper.js.map +2 -2
  142. package/dist/util/index.d.ts +1 -0
  143. package/dist/util/index.d.ts.map +1 -1
  144. package/dist/util/index.js +18 -16
  145. package/dist/util/index.js.map +2 -2
  146. package/dist/util/loader.d.ts.map +1 -1
  147. package/dist/util/loader.js +13 -2
  148. package/dist/util/loader.js.map +2 -2
  149. package/dist/util/os.d.ts.map +1 -1
  150. package/dist/util/os.js +8 -14
  151. package/dist/util/os.js.map +2 -2
  152. package/dist/util/time.d.ts +8 -2
  153. package/dist/util/time.d.ts.map +1 -1
  154. package/dist/util/time.js +12 -7
  155. package/dist/util/time.js.map +2 -2
  156. package/dist/util/timing.d.ts +36 -0
  157. package/dist/util/timing.d.ts.map +1 -0
  158. package/dist/util/timing.interface.d.ts +47 -0
  159. package/dist/util/timing.interface.d.ts.map +1 -0
  160. package/dist/util/timing.interface.js +1 -0
  161. package/dist/util/timing.interface.js.map +7 -0
  162. package/dist/util/timing.js +98 -0
  163. package/dist/util/timing.js.map +7 -0
  164. package/dist/util/url.js +1 -1
  165. package/dist/util/url.js.map +2 -2
  166. package/dist/webserver/controller/base.d.ts +3 -1
  167. package/dist/webserver/controller/base.d.ts.map +1 -1
  168. package/dist/webserver/controller/base.interface.d.ts +2 -0
  169. package/dist/webserver/controller/base.interface.d.ts.map +1 -1
  170. package/dist/webserver/controller/base.js +4 -1
  171. package/dist/webserver/controller/base.js.map +2 -2
  172. package/dist/webserver/controller/health.d.ts +8 -1
  173. package/dist/webserver/controller/health.d.ts.map +1 -1
  174. package/dist/webserver/controller/health.js +36 -22
  175. package/dist/webserver/controller/health.js.map +2 -2
  176. package/dist/webserver/webserver.d.ts +16 -2
  177. package/dist/webserver/webserver.d.ts.map +1 -1
  178. package/dist/webserver/webserver.interface.d.ts +37 -0
  179. package/dist/webserver/webserver.interface.d.ts.map +1 -1
  180. package/dist/webserver/webserver.interface.js.map +2 -2
  181. package/dist/webserver/webserver.js +117 -20
  182. package/dist/webserver/webserver.js.map +2 -2
  183. package/dist/websocket/controllers/server/system.d.ts.map +1 -1
  184. package/dist/websocket/controllers/server/system.js.map +2 -2
  185. package/dist/websocket/websocket-base.d.ts.map +1 -1
  186. package/dist/websocket/websocket-base.js +2 -3
  187. package/dist/websocket/websocket-base.js.map +2 -2
  188. package/dist/websocket/websocket-server.d.ts +1 -1
  189. package/dist/websocket/websocket-server.d.ts.map +1 -1
  190. package/dist/websocket/websocket-server.js +7 -31
  191. package/dist/websocket/websocket-server.js.map +2 -2
  192. package/package.json +68 -25
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Error severity levels for classification and handling
3
+ */
4
+ export declare enum ErrorSeverity {
5
+ /**
6
+ * Fatal errors that require immediate attention and may cause application failure
7
+ */
8
+ FATAL = "fatal",
9
+ /**
10
+ * Critical errors that significantly impact functionality
11
+ */
12
+ CRITICAL = "critical",
13
+ /**
14
+ * Major errors that affect features but don't crash the application
15
+ */
16
+ ERROR = "error",
17
+ /**
18
+ * Warnings about potential issues
19
+ */
20
+ WARNING = "warning",
21
+ /**
22
+ * Informational messages about error conditions
23
+ */
24
+ INFO = "info"
25
+ }
26
+ /**
27
+ * Standard error codes for framework errors
28
+ */
29
+ export declare enum ErrorCode {
30
+ INVALID_CONFIG = "ERR_INVALID_CONFIG",
31
+ MISSING_CONFIG = "ERR_MISSING_CONFIG",
32
+ CONFIG_VALIDATION_FAILED = "ERR_CONFIG_VALIDATION_FAILED",
33
+ LIFECYCLE_INIT_FAILED = "ERR_LIFECYCLE_INIT_FAILED",
34
+ LIFECYCLE_START_FAILED = "ERR_LIFECYCLE_START_FAILED",
35
+ LIFECYCLE_SHUTDOWN_FAILED = "ERR_LIFECYCLE_SHUTDOWN_FAILED",
36
+ LIFECYCLE_TIMEOUT = "ERR_LIFECYCLE_TIMEOUT",
37
+ DATABASE_CONNECTION_FAILED = "ERR_DATABASE_CONNECTION_FAILED",
38
+ DATABASE_QUERY_FAILED = "ERR_DATABASE_QUERY_FAILED",
39
+ DATABASE_MIGRATION_FAILED = "ERR_DATABASE_MIGRATION_FAILED",
40
+ REDIS_CONNECTION_FAILED = "ERR_REDIS_CONNECTION_FAILED",
41
+ REDIS_COMMAND_FAILED = "ERR_REDIS_COMMAND_FAILED",
42
+ QUEUE_JOB_FAILED = "ERR_QUEUE_JOB_FAILED",
43
+ QUEUE_CONNECTION_FAILED = "ERR_QUEUE_CONNECTION_FAILED",
44
+ QUEUE_PROCESSOR_NOT_FOUND = "ERR_QUEUE_PROCESSOR_NOT_FOUND",
45
+ WEB_SERVER_START_FAILED = "ERR_WEB_SERVER_START_FAILED",
46
+ WEB_SERVER_REQUEST_FAILED = "ERR_WEB_SERVER_REQUEST_FAILED",
47
+ WEB_CONTROLLER_NOT_FOUND = "ERR_WEB_CONTROLLER_NOT_FOUND",
48
+ WEB_ACTION_NOT_FOUND = "ERR_WEB_ACTION_NOT_FOUND",
49
+ WEBSOCKET_CONNECTION_FAILED = "ERR_WEBSOCKET_CONNECTION_FAILED",
50
+ WEBSOCKET_MESSAGE_FAILED = "ERR_WEBSOCKET_MESSAGE_FAILED",
51
+ VALIDATION_FAILED = "ERR_VALIDATION_FAILED",
52
+ INVALID_INPUT = "ERR_INVALID_INPUT",
53
+ RESOURCE_NOT_FOUND = "ERR_RESOURCE_NOT_FOUND",
54
+ RESOURCE_ALREADY_EXISTS = "ERR_RESOURCE_ALREADY_EXISTS",
55
+ RESOURCE_LOCKED = "ERR_RESOURCE_LOCKED",
56
+ UNKNOWN = "ERR_UNKNOWN",
57
+ INTERNAL = "ERR_INTERNAL",
58
+ NOT_IMPLEMENTED = "ERR_NOT_IMPLEMENTED"
59
+ }
60
+ /**
61
+ * Normalized error envelope for consistent error handling
62
+ */
63
+ export interface ErrorEnvelope {
64
+ /**
65
+ * Error message (human-readable)
66
+ */
67
+ message: string;
68
+ /**
69
+ * Error code (machine-readable)
70
+ */
71
+ code: ErrorCode | string;
72
+ /**
73
+ * Error severity level
74
+ */
75
+ severity: ErrorSeverity;
76
+ /**
77
+ * Original error stack trace
78
+ */
79
+ stack?: string;
80
+ /**
81
+ * Request ID for correlation (if available)
82
+ */
83
+ requestId?: string;
84
+ /**
85
+ * Additional context about the error
86
+ */
87
+ context?: Record<string, unknown>;
88
+ /**
89
+ * Underlying cause (if error was wrapped)
90
+ */
91
+ cause?: unknown;
92
+ /**
93
+ * Timestamp when error occurred
94
+ */
95
+ timestamp: Date;
96
+ /**
97
+ * Error name/type
98
+ */
99
+ name?: string;
100
+ }
101
+ /**
102
+ * Options for error reporting
103
+ */
104
+ export interface ErrorReportOptions {
105
+ /**
106
+ * Additional context to include with the error
107
+ */
108
+ context?: Record<string, unknown>;
109
+ /**
110
+ * Override error severity
111
+ */
112
+ severity?: ErrorSeverity;
113
+ /**
114
+ * Override error code
115
+ */
116
+ code?: ErrorCode | string;
117
+ /**
118
+ * Whether to capture this error in Sentry
119
+ */
120
+ captureInSentry?: boolean;
121
+ /**
122
+ * Whether to log this error
123
+ */
124
+ log?: boolean;
125
+ }
126
+ //# sourceMappingURL=error.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.interface.d.ts","sourceRoot":"","sources":["../../src/error/error.interface.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,aAAa;IACvB;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,QAAQ,aAAa;IAErB;;OAEG;IACH,KAAK,UAAU;IAEf;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,IAAI,SAAS;CACd;AAED;;GAEG;AACH,oBAAY,SAAS;IAEnB,cAAc,uBAAuB;IACrC,cAAc,uBAAuB;IACrC,wBAAwB,iCAAiC;IAGzD,qBAAqB,8BAA8B;IACnD,sBAAsB,+BAA+B;IACrD,yBAAyB,kCAAkC;IAC3D,iBAAiB,0BAA0B;IAG3C,0BAA0B,mCAAmC;IAC7D,qBAAqB,8BAA8B;IACnD,yBAAyB,kCAAkC;IAG3D,uBAAuB,gCAAgC;IACvD,oBAAoB,6BAA6B;IAGjD,gBAAgB,yBAAyB;IACzC,uBAAuB,gCAAgC;IACvD,yBAAyB,kCAAkC;IAG3D,uBAAuB,gCAAgC;IACvD,yBAAyB,kCAAkC;IAC3D,wBAAwB,iCAAiC;IACzD,oBAAoB,6BAA6B;IAGjD,2BAA2B,oCAAoC;IAC/D,wBAAwB,iCAAiC;IAGzD,iBAAiB,0BAA0B;IAC3C,aAAa,sBAAsB;IAGnC,kBAAkB,2BAA2B;IAC7C,uBAAuB,gCAAgC;IACvD,eAAe,wBAAwB;IAGvC,OAAO,gBAAgB;IACvB,QAAQ,iBAAiB;IACzB,eAAe,wBAAwB;CACxC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,EAAE,aAAa,CAAC;IAExB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,SAAS,EAAE,IAAI,CAAC;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC;;OAEG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IAEzB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAE1B;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;CACf"}
@@ -0,0 +1,45 @@
1
+ var ErrorSeverity = /* @__PURE__ */ ((ErrorSeverity2) => {
2
+ ErrorSeverity2["FATAL"] = "fatal";
3
+ ErrorSeverity2["CRITICAL"] = "critical";
4
+ ErrorSeverity2["ERROR"] = "error";
5
+ ErrorSeverity2["WARNING"] = "warning";
6
+ ErrorSeverity2["INFO"] = "info";
7
+ return ErrorSeverity2;
8
+ })(ErrorSeverity || {});
9
+ var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
10
+ ErrorCode2["INVALID_CONFIG"] = "ERR_INVALID_CONFIG";
11
+ ErrorCode2["MISSING_CONFIG"] = "ERR_MISSING_CONFIG";
12
+ ErrorCode2["CONFIG_VALIDATION_FAILED"] = "ERR_CONFIG_VALIDATION_FAILED";
13
+ ErrorCode2["LIFECYCLE_INIT_FAILED"] = "ERR_LIFECYCLE_INIT_FAILED";
14
+ ErrorCode2["LIFECYCLE_START_FAILED"] = "ERR_LIFECYCLE_START_FAILED";
15
+ ErrorCode2["LIFECYCLE_SHUTDOWN_FAILED"] = "ERR_LIFECYCLE_SHUTDOWN_FAILED";
16
+ ErrorCode2["LIFECYCLE_TIMEOUT"] = "ERR_LIFECYCLE_TIMEOUT";
17
+ ErrorCode2["DATABASE_CONNECTION_FAILED"] = "ERR_DATABASE_CONNECTION_FAILED";
18
+ ErrorCode2["DATABASE_QUERY_FAILED"] = "ERR_DATABASE_QUERY_FAILED";
19
+ ErrorCode2["DATABASE_MIGRATION_FAILED"] = "ERR_DATABASE_MIGRATION_FAILED";
20
+ ErrorCode2["REDIS_CONNECTION_FAILED"] = "ERR_REDIS_CONNECTION_FAILED";
21
+ ErrorCode2["REDIS_COMMAND_FAILED"] = "ERR_REDIS_COMMAND_FAILED";
22
+ ErrorCode2["QUEUE_JOB_FAILED"] = "ERR_QUEUE_JOB_FAILED";
23
+ ErrorCode2["QUEUE_CONNECTION_FAILED"] = "ERR_QUEUE_CONNECTION_FAILED";
24
+ ErrorCode2["QUEUE_PROCESSOR_NOT_FOUND"] = "ERR_QUEUE_PROCESSOR_NOT_FOUND";
25
+ ErrorCode2["WEB_SERVER_START_FAILED"] = "ERR_WEB_SERVER_START_FAILED";
26
+ ErrorCode2["WEB_SERVER_REQUEST_FAILED"] = "ERR_WEB_SERVER_REQUEST_FAILED";
27
+ ErrorCode2["WEB_CONTROLLER_NOT_FOUND"] = "ERR_WEB_CONTROLLER_NOT_FOUND";
28
+ ErrorCode2["WEB_ACTION_NOT_FOUND"] = "ERR_WEB_ACTION_NOT_FOUND";
29
+ ErrorCode2["WEBSOCKET_CONNECTION_FAILED"] = "ERR_WEBSOCKET_CONNECTION_FAILED";
30
+ ErrorCode2["WEBSOCKET_MESSAGE_FAILED"] = "ERR_WEBSOCKET_MESSAGE_FAILED";
31
+ ErrorCode2["VALIDATION_FAILED"] = "ERR_VALIDATION_FAILED";
32
+ ErrorCode2["INVALID_INPUT"] = "ERR_INVALID_INPUT";
33
+ ErrorCode2["RESOURCE_NOT_FOUND"] = "ERR_RESOURCE_NOT_FOUND";
34
+ ErrorCode2["RESOURCE_ALREADY_EXISTS"] = "ERR_RESOURCE_ALREADY_EXISTS";
35
+ ErrorCode2["RESOURCE_LOCKED"] = "ERR_RESOURCE_LOCKED";
36
+ ErrorCode2["UNKNOWN"] = "ERR_UNKNOWN";
37
+ ErrorCode2["INTERNAL"] = "ERR_INTERNAL";
38
+ ErrorCode2["NOT_IMPLEMENTED"] = "ERR_NOT_IMPLEMENTED";
39
+ return ErrorCode2;
40
+ })(ErrorCode || {});
41
+ export {
42
+ ErrorCode,
43
+ ErrorSeverity
44
+ };
45
+ //# sourceMappingURL=error.interface.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/error/error.interface.ts"],
4
+ "sourcesContent": ["/**\n * Error severity levels for classification and handling\n */\nexport enum ErrorSeverity {\n /**\n * Fatal errors that require immediate attention and may cause application failure\n */\n FATAL = 'fatal',\n\n /**\n * Critical errors that significantly impact functionality\n */\n CRITICAL = 'critical',\n\n /**\n * Major errors that affect features but don't crash the application\n */\n ERROR = 'error',\n\n /**\n * Warnings about potential issues\n */\n WARNING = 'warning',\n\n /**\n * Informational messages about error conditions\n */\n INFO = 'info',\n}\n\n/**\n * Standard error codes for framework errors\n */\nexport enum ErrorCode {\n // Configuration errors (1xxx)\n INVALID_CONFIG = 'ERR_INVALID_CONFIG',\n MISSING_CONFIG = 'ERR_MISSING_CONFIG',\n CONFIG_VALIDATION_FAILED = 'ERR_CONFIG_VALIDATION_FAILED',\n\n // Lifecycle errors (2xxx)\n LIFECYCLE_INIT_FAILED = 'ERR_LIFECYCLE_INIT_FAILED',\n LIFECYCLE_START_FAILED = 'ERR_LIFECYCLE_START_FAILED',\n LIFECYCLE_SHUTDOWN_FAILED = 'ERR_LIFECYCLE_SHUTDOWN_FAILED',\n LIFECYCLE_TIMEOUT = 'ERR_LIFECYCLE_TIMEOUT',\n\n // Database errors (3xxx)\n DATABASE_CONNECTION_FAILED = 'ERR_DATABASE_CONNECTION_FAILED',\n DATABASE_QUERY_FAILED = 'ERR_DATABASE_QUERY_FAILED',\n DATABASE_MIGRATION_FAILED = 'ERR_DATABASE_MIGRATION_FAILED',\n\n // Redis errors (4xxx)\n REDIS_CONNECTION_FAILED = 'ERR_REDIS_CONNECTION_FAILED',\n REDIS_COMMAND_FAILED = 'ERR_REDIS_COMMAND_FAILED',\n\n // Queue errors (5xxx)\n QUEUE_JOB_FAILED = 'ERR_QUEUE_JOB_FAILED',\n QUEUE_CONNECTION_FAILED = 'ERR_QUEUE_CONNECTION_FAILED',\n QUEUE_PROCESSOR_NOT_FOUND = 'ERR_QUEUE_PROCESSOR_NOT_FOUND',\n\n // Web server errors (6xxx)\n WEB_SERVER_START_FAILED = 'ERR_WEB_SERVER_START_FAILED',\n WEB_SERVER_REQUEST_FAILED = 'ERR_WEB_SERVER_REQUEST_FAILED',\n WEB_CONTROLLER_NOT_FOUND = 'ERR_WEB_CONTROLLER_NOT_FOUND',\n WEB_ACTION_NOT_FOUND = 'ERR_WEB_ACTION_NOT_FOUND',\n\n // WebSocket errors (7xxx)\n WEBSOCKET_CONNECTION_FAILED = 'ERR_WEBSOCKET_CONNECTION_FAILED',\n WEBSOCKET_MESSAGE_FAILED = 'ERR_WEBSOCKET_MESSAGE_FAILED',\n\n // Validation errors (8xxx)\n VALIDATION_FAILED = 'ERR_VALIDATION_FAILED',\n INVALID_INPUT = 'ERR_INVALID_INPUT',\n\n // Resource errors (9xxx)\n RESOURCE_NOT_FOUND = 'ERR_RESOURCE_NOT_FOUND',\n RESOURCE_ALREADY_EXISTS = 'ERR_RESOURCE_ALREADY_EXISTS',\n RESOURCE_LOCKED = 'ERR_RESOURCE_LOCKED',\n\n // Generic errors\n UNKNOWN = 'ERR_UNKNOWN',\n INTERNAL = 'ERR_INTERNAL',\n NOT_IMPLEMENTED = 'ERR_NOT_IMPLEMENTED',\n}\n\n/**\n * Normalized error envelope for consistent error handling\n */\nexport interface ErrorEnvelope {\n /**\n * Error message (human-readable)\n */\n message: string;\n\n /**\n * Error code (machine-readable)\n */\n code: ErrorCode | string;\n\n /**\n * Error severity level\n */\n severity: ErrorSeverity;\n\n /**\n * Original error stack trace\n */\n stack?: string;\n\n /**\n * Request ID for correlation (if available)\n */\n requestId?: string;\n\n /**\n * Additional context about the error\n */\n context?: Record<string, unknown>;\n\n /**\n * Underlying cause (if error was wrapped)\n */\n cause?: unknown;\n\n /**\n * Timestamp when error occurred\n */\n timestamp: Date;\n\n /**\n * Error name/type\n */\n name?: string;\n}\n\n/**\n * Options for error reporting\n */\nexport interface ErrorReportOptions {\n /**\n * Additional context to include with the error\n */\n context?: Record<string, unknown>;\n\n /**\n * Override error severity\n */\n severity?: ErrorSeverity;\n\n /**\n * Override error code\n */\n code?: ErrorCode | string;\n\n /**\n * Whether to capture this error in Sentry\n */\n captureInSentry?: boolean;\n\n /**\n * Whether to log this error\n */\n log?: boolean;\n}\n"],
5
+ "mappings": "AAGO,IAAK,gBAAL,kBAAKA,mBAAL;AAIL,EAAAA,eAAA,WAAQ;AAKR,EAAAA,eAAA,cAAW;AAKX,EAAAA,eAAA,WAAQ;AAKR,EAAAA,eAAA,aAAU;AAKV,EAAAA,eAAA,UAAO;AAxBG,SAAAA;AAAA,GAAA;AA8BL,IAAK,YAAL,kBAAKC,eAAL;AAEL,EAAAA,WAAA,oBAAiB;AACjB,EAAAA,WAAA,oBAAiB;AACjB,EAAAA,WAAA,8BAA2B;AAG3B,EAAAA,WAAA,2BAAwB;AACxB,EAAAA,WAAA,4BAAyB;AACzB,EAAAA,WAAA,+BAA4B;AAC5B,EAAAA,WAAA,uBAAoB;AAGpB,EAAAA,WAAA,gCAA6B;AAC7B,EAAAA,WAAA,2BAAwB;AACxB,EAAAA,WAAA,+BAA4B;AAG5B,EAAAA,WAAA,6BAA0B;AAC1B,EAAAA,WAAA,0BAAuB;AAGvB,EAAAA,WAAA,sBAAmB;AACnB,EAAAA,WAAA,6BAA0B;AAC1B,EAAAA,WAAA,+BAA4B;AAG5B,EAAAA,WAAA,6BAA0B;AAC1B,EAAAA,WAAA,+BAA4B;AAC5B,EAAAA,WAAA,8BAA2B;AAC3B,EAAAA,WAAA,0BAAuB;AAGvB,EAAAA,WAAA,iCAA8B;AAC9B,EAAAA,WAAA,8BAA2B;AAG3B,EAAAA,WAAA,uBAAoB;AACpB,EAAAA,WAAA,mBAAgB;AAGhB,EAAAA,WAAA,wBAAqB;AACrB,EAAAA,WAAA,6BAA0B;AAC1B,EAAAA,WAAA,qBAAkB;AAGlB,EAAAA,WAAA,aAAU;AACV,EAAAA,WAAA,cAAW;AACX,EAAAA,WAAA,qBAAkB;AAhDR,SAAAA;AAAA,GAAA;",
6
+ "names": ["ErrorSeverity", "ErrorCode"]
7
+ }
@@ -0,0 +1,113 @@
1
+ import { ErrorCode, ErrorSeverity } from './error.interface.js';
2
+ /**
3
+ * Base framework error class
4
+ *
5
+ * All framework-specific errors extend this class for consistent error handling
6
+ */
7
+ export declare class FrameworkError extends Error {
8
+ readonly code: ErrorCode | string;
9
+ readonly severity: ErrorSeverity;
10
+ readonly context?: Record<string, unknown>;
11
+ readonly timestamp: Date;
12
+ constructor(message: string, options?: {
13
+ code?: ErrorCode | string;
14
+ severity?: ErrorSeverity;
15
+ context?: Record<string, unknown>;
16
+ cause?: unknown;
17
+ });
18
+ }
19
+ /**
20
+ * Configuration error
21
+ */
22
+ export declare class ConfigurationError extends FrameworkError {
23
+ constructor(message: string, options?: {
24
+ context?: Record<string, unknown>;
25
+ cause?: unknown;
26
+ });
27
+ }
28
+ /**
29
+ * Validation error
30
+ */
31
+ export declare class ValidationError extends FrameworkError {
32
+ constructor(message: string, options?: {
33
+ context?: Record<string, unknown>;
34
+ cause?: unknown;
35
+ });
36
+ }
37
+ /**
38
+ * Database error
39
+ */
40
+ export declare class DatabaseError extends FrameworkError {
41
+ constructor(message: string, options?: {
42
+ code?: ErrorCode;
43
+ context?: Record<string, unknown>;
44
+ cause?: unknown;
45
+ });
46
+ }
47
+ /**
48
+ * Redis error
49
+ */
50
+ export declare class RedisError extends FrameworkError {
51
+ constructor(message: string, options?: {
52
+ code?: ErrorCode;
53
+ context?: Record<string, unknown>;
54
+ cause?: unknown;
55
+ });
56
+ }
57
+ /**
58
+ * Queue error
59
+ */
60
+ export declare class QueueError extends FrameworkError {
61
+ constructor(message: string, options?: {
62
+ code?: ErrorCode;
63
+ context?: Record<string, unknown>;
64
+ cause?: unknown;
65
+ });
66
+ }
67
+ /**
68
+ * Web server error
69
+ */
70
+ export declare class WebServerError extends FrameworkError {
71
+ constructor(message: string, options?: {
72
+ code?: ErrorCode;
73
+ context?: Record<string, unknown>;
74
+ cause?: unknown;
75
+ });
76
+ }
77
+ /**
78
+ * WebSocket error
79
+ */
80
+ export declare class WebSocketError extends FrameworkError {
81
+ constructor(message: string, options?: {
82
+ code?: ErrorCode;
83
+ context?: Record<string, unknown>;
84
+ cause?: unknown;
85
+ });
86
+ }
87
+ /**
88
+ * Lifecycle error
89
+ */
90
+ export declare class LifecycleError extends FrameworkError {
91
+ constructor(message: string, options?: {
92
+ code?: ErrorCode;
93
+ context?: Record<string, unknown>;
94
+ cause?: unknown;
95
+ });
96
+ }
97
+ /**
98
+ * Resource not found error
99
+ */
100
+ export declare class ResourceNotFoundError extends FrameworkError {
101
+ constructor(message: string, options?: {
102
+ context?: Record<string, unknown>;
103
+ });
104
+ }
105
+ /**
106
+ * Not implemented error
107
+ */
108
+ export declare class NotImplementedError extends FrameworkError {
109
+ constructor(message: string, options?: {
110
+ context?: Record<string, unknown>;
111
+ });
112
+ }
113
+ //# sourceMappingURL=framework-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-errors.d.ts","sourceRoot":"","sources":["../../src/error/framework-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,176 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { ErrorCode, ErrorSeverity } from "./error.interface.js";
4
+ class FrameworkError extends Error {
5
+ static {
6
+ __name(this, "FrameworkError");
7
+ }
8
+ code;
9
+ severity;
10
+ context;
11
+ timestamp;
12
+ constructor(message, options) {
13
+ super(message);
14
+ this.name = "FrameworkError";
15
+ this.code = options?.code ?? ErrorCode.INTERNAL;
16
+ this.severity = options?.severity ?? ErrorSeverity.ERROR;
17
+ this.context = options?.context;
18
+ this.timestamp = /* @__PURE__ */ new Date();
19
+ if (Error.captureStackTrace) {
20
+ Error.captureStackTrace(this, this.constructor);
21
+ }
22
+ if (options?.cause) {
23
+ this.cause = options.cause;
24
+ }
25
+ }
26
+ }
27
+ class ConfigurationError extends FrameworkError {
28
+ static {
29
+ __name(this, "ConfigurationError");
30
+ }
31
+ constructor(message, options) {
32
+ super(message, {
33
+ code: ErrorCode.INVALID_CONFIG,
34
+ severity: ErrorSeverity.FATAL,
35
+ ...options
36
+ });
37
+ this.name = "ConfigurationError";
38
+ }
39
+ }
40
+ class ValidationError extends FrameworkError {
41
+ static {
42
+ __name(this, "ValidationError");
43
+ }
44
+ constructor(message, options) {
45
+ super(message, {
46
+ code: ErrorCode.VALIDATION_FAILED,
47
+ severity: ErrorSeverity.ERROR,
48
+ ...options
49
+ });
50
+ this.name = "ValidationError";
51
+ }
52
+ }
53
+ class DatabaseError extends FrameworkError {
54
+ static {
55
+ __name(this, "DatabaseError");
56
+ }
57
+ constructor(message, options) {
58
+ super(message, {
59
+ code: options?.code ?? ErrorCode.DATABASE_QUERY_FAILED,
60
+ severity: ErrorSeverity.ERROR,
61
+ context: options?.context,
62
+ cause: options?.cause
63
+ });
64
+ this.name = "DatabaseError";
65
+ }
66
+ }
67
+ class RedisError extends FrameworkError {
68
+ static {
69
+ __name(this, "RedisError");
70
+ }
71
+ constructor(message, options) {
72
+ super(message, {
73
+ code: options?.code ?? ErrorCode.REDIS_COMMAND_FAILED,
74
+ severity: ErrorSeverity.ERROR,
75
+ context: options?.context,
76
+ cause: options?.cause
77
+ });
78
+ this.name = "RedisError";
79
+ }
80
+ }
81
+ class QueueError extends FrameworkError {
82
+ static {
83
+ __name(this, "QueueError");
84
+ }
85
+ constructor(message, options) {
86
+ super(message, {
87
+ code: options?.code ?? ErrorCode.QUEUE_JOB_FAILED,
88
+ severity: ErrorSeverity.ERROR,
89
+ context: options?.context,
90
+ cause: options?.cause
91
+ });
92
+ this.name = "QueueError";
93
+ }
94
+ }
95
+ class WebServerError extends FrameworkError {
96
+ static {
97
+ __name(this, "WebServerError");
98
+ }
99
+ constructor(message, options) {
100
+ super(message, {
101
+ code: options?.code ?? ErrorCode.WEB_SERVER_REQUEST_FAILED,
102
+ severity: ErrorSeverity.ERROR,
103
+ context: options?.context,
104
+ cause: options?.cause
105
+ });
106
+ this.name = "WebServerError";
107
+ }
108
+ }
109
+ class WebSocketError extends FrameworkError {
110
+ static {
111
+ __name(this, "WebSocketError");
112
+ }
113
+ constructor(message, options) {
114
+ super(message, {
115
+ code: options?.code ?? ErrorCode.WEBSOCKET_MESSAGE_FAILED,
116
+ severity: ErrorSeverity.ERROR,
117
+ context: options?.context,
118
+ cause: options?.cause
119
+ });
120
+ this.name = "WebSocketError";
121
+ }
122
+ }
123
+ class LifecycleError extends FrameworkError {
124
+ static {
125
+ __name(this, "LifecycleError");
126
+ }
127
+ constructor(message, options) {
128
+ super(message, {
129
+ code: options?.code ?? ErrorCode.LIFECYCLE_INIT_FAILED,
130
+ severity: ErrorSeverity.CRITICAL,
131
+ context: options?.context,
132
+ cause: options?.cause
133
+ });
134
+ this.name = "LifecycleError";
135
+ }
136
+ }
137
+ class ResourceNotFoundError extends FrameworkError {
138
+ static {
139
+ __name(this, "ResourceNotFoundError");
140
+ }
141
+ constructor(message, options) {
142
+ super(message, {
143
+ code: ErrorCode.RESOURCE_NOT_FOUND,
144
+ severity: ErrorSeverity.WARNING,
145
+ ...options
146
+ });
147
+ this.name = "ResourceNotFoundError";
148
+ }
149
+ }
150
+ class NotImplementedError extends FrameworkError {
151
+ static {
152
+ __name(this, "NotImplementedError");
153
+ }
154
+ constructor(message, options) {
155
+ super(message, {
156
+ code: ErrorCode.NOT_IMPLEMENTED,
157
+ severity: ErrorSeverity.ERROR,
158
+ ...options
159
+ });
160
+ this.name = "NotImplementedError";
161
+ }
162
+ }
163
+ export {
164
+ ConfigurationError,
165
+ DatabaseError,
166
+ FrameworkError,
167
+ LifecycleError,
168
+ NotImplementedError,
169
+ QueueError,
170
+ RedisError,
171
+ ResourceNotFoundError,
172
+ ValidationError,
173
+ WebServerError,
174
+ WebSocketError
175
+ };
176
+ //# sourceMappingURL=framework-errors.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/error/framework-errors.ts"],
4
+ "sourcesContent": ["import { ErrorCode, ErrorSeverity } from './error.interface.js';\n\n/**\n * Base framework error class\n *\n * All framework-specific errors extend this class for consistent error handling\n */\nexport class FrameworkError extends Error {\n public readonly code: ErrorCode | string;\n public readonly severity: ErrorSeverity;\n public readonly context?: Record<string, unknown>;\n public readonly timestamp: Date;\n\n constructor(\n message: string,\n options?: {\n code?: ErrorCode | string;\n severity?: ErrorSeverity;\n context?: Record<string, unknown>;\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = 'FrameworkError';\n this.code = options?.code ?? ErrorCode.INTERNAL;\n this.severity = options?.severity ?? ErrorSeverity.ERROR;\n this.context = options?.context;\n this.timestamp = new Date();\n\n // Maintain proper stack trace\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n // Attach cause if provided (ES2022 error cause)\n if (options?.cause) {\n this.cause = options.cause;\n }\n }\n}\n\n/**\n * Configuration error\n */\nexport class ConfigurationError extends FrameworkError {\n constructor(message: string, options?: { context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: ErrorCode.INVALID_CONFIG,\n severity: ErrorSeverity.FATAL,\n ...options,\n });\n this.name = 'ConfigurationError';\n }\n}\n\n/**\n * Validation error\n */\nexport class ValidationError extends FrameworkError {\n constructor(message: string, options?: { context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: ErrorCode.VALIDATION_FAILED,\n severity: ErrorSeverity.ERROR,\n ...options,\n });\n this.name = 'ValidationError';\n }\n}\n\n/**\n * Database error\n */\nexport class DatabaseError extends FrameworkError {\n constructor(message: string, options?: { code?: ErrorCode; context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: options?.code ?? ErrorCode.DATABASE_QUERY_FAILED,\n severity: ErrorSeverity.ERROR,\n context: options?.context,\n cause: options?.cause,\n });\n this.name = 'DatabaseError';\n }\n}\n\n/**\n * Redis error\n */\nexport class RedisError extends FrameworkError {\n constructor(message: string, options?: { code?: ErrorCode; context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: options?.code ?? ErrorCode.REDIS_COMMAND_FAILED,\n severity: ErrorSeverity.ERROR,\n context: options?.context,\n cause: options?.cause,\n });\n this.name = 'RedisError';\n }\n}\n\n/**\n * Queue error\n */\nexport class QueueError extends FrameworkError {\n constructor(message: string, options?: { code?: ErrorCode; context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: options?.code ?? ErrorCode.QUEUE_JOB_FAILED,\n severity: ErrorSeverity.ERROR,\n context: options?.context,\n cause: options?.cause,\n });\n this.name = 'QueueError';\n }\n}\n\n/**\n * Web server error\n */\nexport class WebServerError extends FrameworkError {\n constructor(message: string, options?: { code?: ErrorCode; context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: options?.code ?? ErrorCode.WEB_SERVER_REQUEST_FAILED,\n severity: ErrorSeverity.ERROR,\n context: options?.context,\n cause: options?.cause,\n });\n this.name = 'WebServerError';\n }\n}\n\n/**\n * WebSocket error\n */\nexport class WebSocketError extends FrameworkError {\n constructor(message: string, options?: { code?: ErrorCode; context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: options?.code ?? ErrorCode.WEBSOCKET_MESSAGE_FAILED,\n severity: ErrorSeverity.ERROR,\n context: options?.context,\n cause: options?.cause,\n });\n this.name = 'WebSocketError';\n }\n}\n\n/**\n * Lifecycle error\n */\nexport class LifecycleError extends FrameworkError {\n constructor(message: string, options?: { code?: ErrorCode; context?: Record<string, unknown>; cause?: unknown }) {\n super(message, {\n code: options?.code ?? ErrorCode.LIFECYCLE_INIT_FAILED,\n severity: ErrorSeverity.CRITICAL,\n context: options?.context,\n cause: options?.cause,\n });\n this.name = 'LifecycleError';\n }\n}\n\n/**\n * Resource not found error\n */\nexport class ResourceNotFoundError extends FrameworkError {\n constructor(message: string, options?: { context?: Record<string, unknown> }) {\n super(message, {\n code: ErrorCode.RESOURCE_NOT_FOUND,\n severity: ErrorSeverity.WARNING,\n ...options,\n });\n this.name = 'ResourceNotFoundError';\n }\n}\n\n/**\n * Not implemented error\n */\nexport class NotImplementedError extends FrameworkError {\n constructor(message: string, options?: { context?: Record<string, unknown> }) {\n super(message, {\n code: ErrorCode.NOT_IMPLEMENTED,\n severity: ErrorSeverity.ERROR,\n ...options,\n });\n this.name = 'NotImplementedError';\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,6 @@
1
+ export type { ErrorEnvelope, ErrorReportOptions } from './error.interface.js';
2
+ export { ErrorCode, ErrorSeverity } from './error.interface.js';
3
+ export { ErrorReporter } from './error-reporter.js';
4
+ export { FrameworkError, ConfigurationError, ValidationError, DatabaseError, RedisError, QueueError, WebServerError, WebSocketError, LifecycleError, ResourceNotFoundError, NotImplementedError, } from './framework-errors.js';
5
+ export { default as errorReporter } from './error-reporter.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/error/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { ErrorCode, ErrorSeverity } from "./error.interface.js";
2
+ import { ErrorReporter } from "./error-reporter.js";
3
+ import {
4
+ FrameworkError,
5
+ ConfigurationError,
6
+ ValidationError,
7
+ DatabaseError,
8
+ RedisError,
9
+ QueueError,
10
+ WebServerError,
11
+ WebSocketError,
12
+ LifecycleError,
13
+ ResourceNotFoundError,
14
+ NotImplementedError
15
+ } from "./framework-errors.js";
16
+ import { default as default2 } from "./error-reporter.js";
17
+ export {
18
+ ConfigurationError,
19
+ DatabaseError,
20
+ ErrorCode,
21
+ ErrorReporter,
22
+ ErrorSeverity,
23
+ FrameworkError,
24
+ LifecycleError,
25
+ NotImplementedError,
26
+ QueueError,
27
+ RedisError,
28
+ ResourceNotFoundError,
29
+ ValidationError,
30
+ WebServerError,
31
+ WebSocketError,
32
+ default2 as errorReporter
33
+ };
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/error/index.ts"],
4
+ "sourcesContent": ["export type { ErrorEnvelope, ErrorReportOptions } from './error.interface.js';\nexport { ErrorCode, ErrorSeverity } from './error.interface.js';\nexport { ErrorReporter } from './error-reporter.js';\nexport {\n FrameworkError,\n ConfigurationError,\n ValidationError,\n DatabaseError,\n RedisError,\n QueueError,\n WebServerError,\n WebSocketError,\n LifecycleError,\n ResourceNotFoundError,\n NotImplementedError,\n} from './framework-errors.js';\n\n// Export default instance for convenience\nexport { default as errorReporter } from './error-reporter.js';\n"],
5
+ "mappings": "AACA,SAAS,WAAW,qBAAqB;AACzC,SAAS,qBAAqB;AAC9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,SAAoB,WAAXA,gBAAgC;",
6
+ "names": ["default"]
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/event/manager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,6BAA6B,EAAuB,MAAM,wBAAwB,CAAC;AAMlH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAyB;IAEvC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,aAAa,CAAwB;gBAEjC,MAAM,EAAE,6BAA6B;IAqBpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0FrB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5E;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlE"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/event/manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,6BAA6B,EAAuB,MAAM,wBAAwB,CAAC;AAMlH,MAAM,CAAC,OAAO,OAAO,YAAY;IAC/B,OAAO,CAAC,MAAM,CAAyB;IAEvC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,aAAa,CAAgB;IAErC,OAAO,CAAC,gBAAgB,CAA0B;IAElD,OAAO,CAAC,aAAa,CAAwB;gBAEjC,MAAM,EAAE,6BAA6B;IAqBpC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoFrB,GAAG,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,GAAG,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0B5E;;OAEG;IACI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAGlE"}
@@ -1,8 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
- import { existsSync } from "fs";
4
3
  import { Logger } from "../logger/index.js";
5
- import { Helper, Loader } from "../util/index.js";
4
+ import { File, Helper, Loader } from "../util/index.js";
6
5
  class EventManager {
7
6
  static {
8
7
  __name(this, "EventManager");
@@ -32,14 +31,8 @@ class EventManager {
32
31
  this.eventHandlers = /* @__PURE__ */ new Map();
33
32
  }
34
33
  async load() {
35
- const controllersDirectoryExists = existsSync(this.options.controllersDirectory);
34
+ const controllersDirectoryExists = await File.pathExists(this.options.controllersDirectory);
36
35
  if (!controllersDirectoryExists) {
37
- this.logger.warn({
38
- message: "Event controllers directory not found",
39
- meta: {
40
- Directory: this.options.controllersDirectory
41
- }
42
- });
43
36
  return;
44
37
  }
45
38
  const controllers = await Loader.loadModulesInDirectory({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/event/manager.ts"],
4
- "sourcesContent": ["// event-manager.ts\nimport { existsSync } from 'fs';\nimport { Logger } from '../logger/index.js';\nimport { Helper, Loader } from '../util/index.js';\nimport type { EventDefinition, EventManagerConstructorParams, EventManagerOptions } from './manager.interface.js';\nimport type { ApplicationConfig } from '../application/base-application.interface.js';\nimport type DatabaseInstance from '../database/instance.js';\nimport type { RedisInstance } from '../redis/index.js';\nimport type { EventControllerType } from './controller/base.interface.js';\n\nexport default class EventManager {\n private logger: typeof Logger = Logger;\n\n private applicationConfig: ApplicationConfig;\n private options: EventManagerOptions;\n private events: EventDefinition[];\n private redisInstance: RedisInstance;\n // private queueManager: QueueManager;\n private databaseInstance: DatabaseInstance | null;\n\n private eventHandlers: Map<string, Function>;\n\n constructor(params: EventManagerConstructorParams) {\n const defaultOptions: Partial<EventManagerOptions> = {\n log: {\n startUp: true,\n },\n debug: {\n printEvents: false,\n },\n };\n\n this.options = Helper.defaultsDeep(params.options, defaultOptions);\n\n this.applicationConfig = params.applicationConfig;\n this.events = params.events;\n this.redisInstance = params.redisInstance;\n // this.queueManager = params.queueManager;\n this.databaseInstance = params.databaseInstance;\n\n this.eventHandlers = new Map();\n }\n\n public async load(): Promise<void> {\n // Check if controllers directory exists\n const controllersDirectoryExists = existsSync(this.options.controllersDirectory);\n\n if (!controllersDirectoryExists) {\n this.logger.warn({\n message: 'Event controllers directory not found',\n meta: {\n Directory: this.options.controllersDirectory,\n },\n });\n return;\n }\n\n // Load controllers\n const controllers = await Loader.loadModulesInDirectory({\n directory: this.options.controllersDirectory,\n extensions: ['.ts', '.js'],\n });\n\n // Load event handlers\n for (const event of this.events) {\n let ControllerClass: EventControllerType;\n let controllerName: string;\n\n if (event.controller) {\n ControllerClass = event.controller;\n controllerName = ControllerClass.name;\n } else if (event.controllerName) {\n ControllerClass = controllers[event.controllerName];\n controllerName = event.controllerName;\n } else {\n throw new Error('Event controller not specified');\n }\n\n if (typeof ControllerClass !== 'function') {\n const controllerPath = `${this.options.controllersDirectory}/${event.controllerName}.ts`;\n this.logger.warn({\n message: 'Event controller not found',\n meta: {\n Controller: event.controllerName,\n Path: controllerPath,\n Event: event.name,\n },\n });\n continue;\n }\n\n // Initialize controller instance\n const controllerInstance = new ControllerClass({\n applicationConfig: this.applicationConfig,\n redisInstance: this.redisInstance,\n // queueManager: this.queueManager,\n databaseInstance: this.databaseInstance,\n });\n\n const handler = controllerInstance[event.handlerName as keyof typeof controllerInstance];\n\n if (!handler || typeof handler !== 'function') {\n this.logger.warn({\n message: 'Event handler not found',\n meta: {\n Controller: controllerName,\n Handler: event.handlerName,\n Event: event.name,\n },\n });\n continue;\n }\n\n // Store the handler\n this.eventHandlers.set(event.name, (handler as Function).bind(controllerInstance));\n }\n\n // Log the list of registered events\n const registeredEvents = Array.from(this.eventHandlers.keys());\n\n this.log('Registered Events:', {\n Events: registeredEvents.length ? registeredEvents : '-',\n });\n\n if (this.options.debug?.printEvents) {\n this.log('Registered Events:');\n\n for (const eventName of registeredEvents) {\n console.log(`- ${eventName}`);\n }\n }\n }\n\n public async run({ name, data }: { name: string; data: any }): Promise<void> {\n try {\n const handler = this.eventHandlers.get(name);\n\n if (!handler) {\n const availableEvents = Array.from(this.eventHandlers.keys()).join(', ');\n\n this.logger.warn({\n message: 'Event handler not found for event',\n meta: {\n Event: name,\n AvailableEvents: availableEvents,\n },\n });\n\n throw new Error(`Event handler not found for event '${name}'. Available events are: ${availableEvents}`);\n }\n\n await handler(data);\n\n this.log('Event executed', { Event: name });\n } catch (error) {\n this.logger.error({ error });\n }\n }\n\n /**\n * Log event message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({ level: 'event', message, meta });\n }\n}\n"],
5
- "mappings": ";;AACA,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,QAAQ,cAAc;AAO/B,MAAO,aAA2B;AAAA,EAVlC,OAUkC;AAAA;AAAA;AAAA,EACxB,SAAwB;AAAA,EAExB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EAEA;AAAA,EAER,YAAY,QAAuC;AACjD,UAAM,iBAA+C;AAAA,MACnD,KAAK;AAAA,QACH,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,aAAa;AAAA,MACf;AAAA,IACF;AAEA,SAAK,UAAU,OAAO,aAAa,OAAO,SAAS,cAAc;AAEjE,SAAK,oBAAoB,OAAO;AAChC,SAAK,SAAS,OAAO;AACrB,SAAK,gBAAgB,OAAO;AAE5B,SAAK,mBAAmB,OAAO;AAE/B,SAAK,gBAAgB,oBAAI,IAAI;AAAA,EAC/B;AAAA,EAEA,MAAa,OAAsB;AAEjC,UAAM,6BAA6B,WAAW,KAAK,QAAQ,oBAAoB;AAE/E,QAAI,CAAC,4BAA4B;AAC/B,WAAK,OAAO,KAAK;AAAA,QACf,SAAS;AAAA,QACT,MAAM;AAAA,UACJ,WAAW,KAAK,QAAQ;AAAA,QAC1B;AAAA,MACF,CAAC;AACD;AAAA,IACF;AAGA,UAAM,cAAc,MAAM,OAAO,uBAAuB;AAAA,MACtD,WAAW,KAAK,QAAQ;AAAA,MACxB,YAAY,CAAC,OAAO,KAAK;AAAA,IAC3B,CAAC;AAGD,eAAW,SAAS,KAAK,QAAQ;AAC/B,UAAI;AACJ,UAAI;AAEJ,UAAI,MAAM,YAAY;AACpB,0BAAkB,MAAM;AACxB,yBAAiB,gBAAgB;AAAA,MACnC,WAAW,MAAM,gBAAgB;AAC/B,0BAAkB,YAAY,MAAM,cAAc;AAClD,yBAAiB,MAAM;AAAA,MACzB,OAAO;AACL,cAAM,IAAI,MAAM,gCAAgC;AAAA,MAClD;AAEA,UAAI,OAAO,oBAAoB,YAAY;AACzC,cAAM,iBAAiB,GAAG,KAAK,QAAQ,oBAAoB,IAAI,MAAM,cAAc;AACnF,aAAK,OAAO,KAAK;AAAA,UACf,SAAS;AAAA,UACT,MAAM;AAAA,YACJ,YAAY,MAAM;AAAA,YAClB,MAAM;AAAA,YACN,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AACD;AAAA,MACF;AAGA,YAAM,qBAAqB,IAAI,gBAAgB;AAAA,QAC7C,mBAAmB,KAAK;AAAA,QACxB,eAAe,KAAK;AAAA;AAAA,QAEpB,kBAAkB,KAAK;AAAA,MACzB,CAAC;AAED,YAAM,UAAU,mBAAmB,MAAM,WAA8C;AAEvF,UAAI,CAAC,WAAW,OAAO,YAAY,YAAY;AAC7C,aAAK,OAAO,KAAK;AAAA,UACf,SAAS;AAAA,UACT,MAAM;AAAA,YACJ,YAAY;AAAA,YACZ,SAAS,MAAM;AAAA,YACf,OAAO,MAAM;AAAA,UACf;AAAA,QACF,CAAC;AACD;AAAA,MACF;AAGA,WAAK,cAAc,IAAI,MAAM,MAAO,QAAqB,KAAK,kBAAkB,CAAC;AAAA,IACnF;AAGA,UAAM,mBAAmB,MAAM,KAAK,KAAK,cAAc,KAAK,CAAC;AAE7D,SAAK,IAAI,sBAAsB;AAAA,MAC7B,QAAQ,iBAAiB,SAAS,mBAAmB;AAAA,IACvD,CAAC;AAED,QAAI,KAAK,QAAQ,OAAO,aAAa;AACnC,WAAK,IAAI,oBAAoB;AAE7B,iBAAW,aAAa,kBAAkB;AACxC,gBAAQ,IAAI,KAAK,SAAS,EAAE;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAa,IAAI,EAAE,MAAM,KAAK,GAA+C;AAC3E,QAAI;AACF,YAAM,UAAU,KAAK,cAAc,IAAI,IAAI;AAE3C,UAAI,CAAC,SAAS;AACZ,cAAM,kBAAkB,MAAM,KAAK,KAAK,cAAc,KAAK,CAAC,EAAE,KAAK,IAAI;AAEvE,aAAK,OAAO,KAAK;AAAA,UACf,SAAS;AAAA,UACT,MAAM;AAAA,YACJ,OAAO;AAAA,YACP,iBAAiB;AAAA,UACnB;AAAA,QACF,CAAC;AAED,cAAM,IAAI,MAAM,sCAAsC,IAAI,4BAA4B,eAAe,EAAE;AAAA,MACzG;AAEA,YAAM,QAAQ,IAAI;AAElB,WAAK,IAAI,kBAAkB,EAAE,OAAO,KAAK,CAAC;AAAA,IAC5C,SAAS,OAAO;AACd,WAAK,OAAO,MAAM,EAAE,MAAM,CAAC;AAAA,IAC7B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKO,IAAI,SAAiB,MAAsC;AAChE,SAAK,OAAO,OAAO,EAAE,OAAO,SAAS,SAAS,KAAK,CAAC;AAAA,EACtD;AACF;",
4
+ "sourcesContent": ["// event-manager.ts\nimport { Logger } from '../logger/index.js';\nimport { File, Helper, Loader } from '../util/index.js';\nimport type { EventDefinition, EventManagerConstructorParams, EventManagerOptions } from './manager.interface.js';\nimport type { ApplicationConfig } from '../application/base-application.interface.js';\nimport type DatabaseInstance from '../database/instance.js';\nimport type { RedisInstance } from '../redis/index.js';\nimport type { EventControllerType } from './controller/base.interface.js';\n\nexport default class EventManager {\n private logger: typeof Logger = Logger;\n\n private applicationConfig: ApplicationConfig;\n private options: EventManagerOptions;\n private events: EventDefinition[];\n private redisInstance: RedisInstance;\n // private queueManager: QueueManager;\n private databaseInstance: DatabaseInstance | null;\n\n private eventHandlers: Map<string, Function>;\n\n constructor(params: EventManagerConstructorParams) {\n const defaultOptions: Partial<EventManagerOptions> = {\n log: {\n startUp: true,\n },\n debug: {\n printEvents: false,\n },\n };\n\n this.options = Helper.defaultsDeep(params.options, defaultOptions);\n\n this.applicationConfig = params.applicationConfig;\n this.events = params.events;\n this.redisInstance = params.redisInstance;\n // this.queueManager = params.queueManager;\n this.databaseInstance = params.databaseInstance;\n\n this.eventHandlers = new Map();\n }\n\n public async load(): Promise<void> {\n // Check if controllers directory exists\n const controllersDirectoryExists = await File.pathExists(this.options.controllersDirectory);\n\n if (!controllersDirectoryExists) {\n return;\n }\n\n // Load controllers\n const controllers = await Loader.loadModulesInDirectory({\n directory: this.options.controllersDirectory,\n extensions: ['.ts', '.js'],\n });\n\n // Load event handlers\n for (const event of this.events) {\n let ControllerClass: EventControllerType;\n let controllerName: string;\n\n if (event.controller) {\n ControllerClass = event.controller;\n controllerName = ControllerClass.name;\n } else if (event.controllerName) {\n ControllerClass = controllers[event.controllerName];\n controllerName = event.controllerName;\n } else {\n throw new Error('Event controller not specified');\n }\n\n if (typeof ControllerClass !== 'function') {\n const controllerPath = `${this.options.controllersDirectory}/${event.controllerName}.ts`;\n this.logger.warn({\n message: 'Event controller not found',\n meta: {\n Controller: event.controllerName,\n Path: controllerPath,\n Event: event.name,\n },\n });\n continue;\n }\n\n // Initialize controller instance\n const controllerInstance = new ControllerClass({\n applicationConfig: this.applicationConfig,\n redisInstance: this.redisInstance,\n // queueManager: this.queueManager,\n databaseInstance: this.databaseInstance,\n });\n\n const handler = controllerInstance[event.handlerName as keyof typeof controllerInstance];\n\n if (!handler || typeof handler !== 'function') {\n this.logger.warn({\n message: 'Event handler not found',\n meta: {\n Controller: controllerName,\n Handler: event.handlerName,\n Event: event.name,\n },\n });\n continue;\n }\n\n // Store the handler\n this.eventHandlers.set(event.name, (handler as Function).bind(controllerInstance));\n }\n\n // Log the list of registered events\n const registeredEvents = Array.from(this.eventHandlers.keys());\n\n this.log('Registered Events:', {\n Events: registeredEvents.length ? registeredEvents : '-',\n });\n\n if (this.options.debug?.printEvents) {\n this.log('Registered Events:');\n\n for (const eventName of registeredEvents) {\n console.log(`- ${eventName}`);\n }\n }\n }\n\n public async run({ name, data }: { name: string; data: any }): Promise<void> {\n try {\n const handler = this.eventHandlers.get(name);\n\n if (!handler) {\n const availableEvents = Array.from(this.eventHandlers.keys()).join(', ');\n\n this.logger.warn({\n message: 'Event handler not found for event',\n meta: {\n Event: name,\n AvailableEvents: availableEvents,\n },\n });\n\n throw new Error(`Event handler not found for event '${name}'. Available events are: ${availableEvents}`);\n }\n\n await handler(data);\n\n this.log('Event executed', { Event: name });\n } catch (error) {\n this.logger.error({ error });\n }\n }\n\n /**\n * Log event message\n */\n public log(message: string, meta?: Record<string, unknown>): void {\n this.logger.custom({ level: 'event', message, meta });\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }