@zintrust/core 0.1.1 → 0.1.3

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 (487) hide show
  1. package/README.md +3 -3
  2. package/bin/zintrust.d.ts.map +1 -1
  3. package/bin/zintrust.js +18 -1
  4. package/package.json +15 -1
  5. package/src/boot/Application.d.ts.map +1 -1
  6. package/src/boot/Application.js +46 -3
  7. package/src/boot/Server.d.ts.map +1 -1
  8. package/src/boot/Server.js +3 -4
  9. package/src/boot/bootstrap.js +77 -6
  10. package/src/builder/BundleOptimizer.d.ts.map +1 -1
  11. package/src/builder/BundleOptimizer.js +6 -4
  12. package/src/cache/drivers/KVDriver.d.ts.map +1 -1
  13. package/src/cache/drivers/KVDriver.js +6 -6
  14. package/src/cache/drivers/RedisDriver.js +1 -1
  15. package/src/cli/BaseCommand.d.ts +2 -2
  16. package/src/cli/BaseCommand.d.ts.map +1 -1
  17. package/src/cli/BaseCommand.js +2 -1
  18. package/src/cli/CLI.d.ts.map +1 -1
  19. package/src/cli/CLI.js +11 -4
  20. package/src/cli/commands/AddCommand.js +1 -1
  21. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  22. package/src/cli/commands/ConfigCommand.js +34 -4
  23. package/src/cli/commands/D1MigrateCommand.d.ts +4 -0
  24. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  25. package/src/cli/commands/D1MigrateCommand.js +4 -3
  26. package/src/cli/commands/FixCommand.d.ts.map +1 -1
  27. package/src/cli/commands/FixCommand.js +3 -16
  28. package/src/cli/commands/LogsCleanupCommand.d.ts +6 -0
  29. package/src/cli/commands/LogsCleanupCommand.d.ts.map +1 -0
  30. package/src/cli/commands/LogsCleanupCommand.js +20 -0
  31. package/src/cli/commands/LogsCommand.d.ts.map +1 -1
  32. package/src/cli/commands/LogsCommand.js +1 -1
  33. package/src/cli/commands/MakeMailTemplateCommand.d.ts +10 -0
  34. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -0
  35. package/src/cli/commands/MakeMailTemplateCommand.js +74 -0
  36. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +10 -0
  37. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -0
  38. package/src/cli/commands/MakeNotificationTemplateCommand.js +113 -0
  39. package/src/cli/commands/NewCommand.d.ts +4 -0
  40. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  41. package/src/cli/commands/NewCommand.js +33 -20
  42. package/src/cli/commands/PluginCommand.d.ts.map +1 -1
  43. package/src/cli/commands/PluginCommand.js +8 -4
  44. package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
  45. package/src/cli/commands/PrepareCommand.js +1 -1
  46. package/src/cli/commands/QACommand.d.ts.map +1 -1
  47. package/src/cli/commands/QACommand.js +11 -20
  48. package/src/cli/commands/SecretsCommand.d.ts +16 -0
  49. package/src/cli/commands/SecretsCommand.d.ts.map +1 -0
  50. package/src/cli/commands/SecretsCommand.js +91 -0
  51. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  52. package/src/cli/commands/StartCommand.js +2 -2
  53. package/src/cli/commands/TemplatesCommand.d.ts +3 -0
  54. package/src/cli/commands/TemplatesCommand.d.ts.map +1 -0
  55. package/src/cli/commands/TemplatesCommand.js +65 -0
  56. package/src/cli/commands/index.d.ts +5 -0
  57. package/src/cli/commands/index.d.ts.map +1 -1
  58. package/src/cli/commands/index.js +5 -0
  59. package/src/cli/config/ConfigManager.js +1 -1
  60. package/src/cli/index.d.ts +2 -1
  61. package/src/cli/index.d.ts.map +1 -1
  62. package/src/cli/index.js +2 -1
  63. package/src/cli/scaffolding/ControllerGenerator.js +1 -1
  64. package/src/cli/scaffolding/FeatureScaffolder.js +4 -4
  65. package/src/cli/scaffolding/FileGenerator.js +1 -1
  66. package/src/cli/scaffolding/ModelGenerator.js +1 -1
  67. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  68. package/src/cli/scaffolding/ProjectScaffolder.js +61 -11
  69. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +1 -1
  70. package/src/cli/scaffolding/ResponseFactoryGenerator.js +3 -2
  71. package/src/cli/scaffolding/RouteGenerator.js +1 -1
  72. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +1 -1
  73. package/src/cli/scaffolding/ServiceScaffolder.js +2 -2
  74. package/src/cli/scaffolding/TemplateGenerator.d.ts +40 -0
  75. package/src/cli/scaffolding/TemplateGenerator.d.ts.map +1 -0
  76. package/src/cli/scaffolding/TemplateGenerator.js +172 -0
  77. package/src/cli/scaffolding/index.d.ts +1 -0
  78. package/src/cli/scaffolding/index.d.ts.map +1 -1
  79. package/src/cli/scaffolding/index.js +1 -0
  80. package/src/cli/utils/spawn.js +1 -1
  81. package/src/common/AwsSigV4.d.ts +41 -0
  82. package/src/common/AwsSigV4.d.ts.map +1 -0
  83. package/src/common/AwsSigV4.js +69 -0
  84. package/src/common/index.d.ts +39 -0
  85. package/src/common/index.d.ts.map +1 -1
  86. package/src/common/index.js +101 -8
  87. package/src/common/uuid.d.ts +3 -0
  88. package/src/common/uuid.d.ts.map +1 -0
  89. package/src/common/uuid.js +30 -0
  90. package/src/config/FileLogWriter.d.ts +22 -0
  91. package/src/config/FileLogWriter.d.ts.map +1 -0
  92. package/src/config/FileLogWriter.js +192 -0
  93. package/src/config/SecretsManager.d.ts.map +1 -1
  94. package/src/config/SecretsManager.js +37 -11
  95. package/src/config/StartupConfigValidator.d.ts +15 -0
  96. package/src/config/StartupConfigValidator.d.ts.map +1 -0
  97. package/src/config/StartupConfigValidator.js +86 -0
  98. package/src/config/app.d.ts +2 -1
  99. package/src/config/app.d.ts.map +1 -1
  100. package/src/config/app.js +65 -15
  101. package/src/config/broadcast.d.ts +47 -0
  102. package/src/config/broadcast.d.ts.map +1 -0
  103. package/src/config/broadcast.js +54 -0
  104. package/src/config/cache.d.ts +13 -17
  105. package/src/config/cache.d.ts.map +1 -1
  106. package/src/config/cache.js +9 -11
  107. package/src/config/cloudflare.d.ts +26 -0
  108. package/src/config/cloudflare.d.ts.map +1 -0
  109. package/src/config/cloudflare.js +38 -0
  110. package/src/config/env.d.ts +6 -0
  111. package/src/config/env.d.ts.map +1 -1
  112. package/src/config/env.js +6 -0
  113. package/src/config/index.d.ts +52 -28
  114. package/src/config/index.d.ts.map +1 -1
  115. package/src/config/index.js +3 -0
  116. package/src/config/logger.d.ts +2 -0
  117. package/src/config/logger.d.ts.map +1 -1
  118. package/src/config/logger.js +270 -11
  119. package/src/config/logging/HttpLogger.d.ts +23 -0
  120. package/src/config/logging/HttpLogger.d.ts.map +1 -0
  121. package/src/config/logging/HttpLogger.js +93 -0
  122. package/src/config/logging/KvLogger.d.ts +22 -0
  123. package/src/config/logging/KvLogger.d.ts.map +1 -0
  124. package/src/config/logging/KvLogger.js +143 -0
  125. package/src/config/logging/SlackLogger.d.ts +23 -0
  126. package/src/config/logging/SlackLogger.d.ts.map +1 -0
  127. package/src/config/logging/SlackLogger.js +119 -0
  128. package/src/config/mail.d.ts +81 -0
  129. package/src/config/mail.d.ts.map +1 -0
  130. package/src/config/mail.js +73 -0
  131. package/src/config/middleware.d.ts +8 -0
  132. package/src/config/middleware.d.ts.map +1 -0
  133. package/src/config/middleware.js +18 -0
  134. package/src/config/notification.d.ts +62 -0
  135. package/src/config/notification.d.ts.map +1 -0
  136. package/src/config/notification.js +43 -0
  137. package/src/config/security.d.ts.map +1 -1
  138. package/src/config/security.js +2 -2
  139. package/src/config/startup.d.ts +23 -0
  140. package/src/config/startup.d.ts.map +1 -0
  141. package/src/config/startup.js +15 -0
  142. package/src/config/storage.d.ts +21 -35
  143. package/src/config/storage.d.ts.map +1 -1
  144. package/src/config/storage.js +57 -37
  145. package/src/database/migrations/index.d.ts +1 -1
  146. package/src/database/migrations/index.d.ts.map +1 -1
  147. package/src/database/migrations/index.js +2 -1
  148. package/src/features/Queue.js +1 -25
  149. package/src/health/RuntimeHealthProbes.d.ts +13 -0
  150. package/src/health/RuntimeHealthProbes.d.ts.map +1 -0
  151. package/src/health/RuntimeHealthProbes.js +62 -0
  152. package/src/health/StartupHealthChecks.d.ts +26 -0
  153. package/src/health/StartupHealthChecks.d.ts.map +1 -0
  154. package/src/health/StartupHealthChecks.js +124 -0
  155. package/src/http/ErrorResponse.d.ts +28 -0
  156. package/src/http/ErrorResponse.d.ts.map +1 -0
  157. package/src/http/ErrorResponse.js +42 -0
  158. package/src/http/Kernel.d.ts +5 -0
  159. package/src/http/Kernel.d.ts.map +1 -1
  160. package/src/http/Kernel.js +96 -30
  161. package/src/http/RequestContext.d.ts +20 -0
  162. package/src/http/RequestContext.d.ts.map +1 -0
  163. package/src/http/RequestContext.js +77 -0
  164. package/src/index.d.ts +9 -1
  165. package/src/index.d.ts.map +1 -1
  166. package/src/index.js +8 -2
  167. package/src/microservices/MicroserviceManager.d.ts.map +1 -1
  168. package/src/microservices/MicroserviceManager.js +9 -6
  169. package/src/microservices/PostgresAdapter.d.ts.map +1 -1
  170. package/src/microservices/PostgresAdapter.js +3 -1
  171. package/src/microservices/ServiceBundler.d.ts.map +1 -1
  172. package/src/microservices/ServiceBundler.js +6 -4
  173. package/src/microservices/ServiceHealthMonitor.js +2 -2
  174. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  175. package/src/middleware/CsrfMiddleware.js +2 -19
  176. package/src/middleware/ErrorHandlerMiddleware.d.ts +6 -0
  177. package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -0
  178. package/src/middleware/ErrorHandlerMiddleware.js +33 -0
  179. package/src/middleware/LoggingMiddleware.d.ts +9 -0
  180. package/src/middleware/LoggingMiddleware.d.ts.map +1 -0
  181. package/src/middleware/LoggingMiddleware.js +36 -0
  182. package/src/middleware/index.d.ts +2 -0
  183. package/src/middleware/index.d.ts.map +1 -1
  184. package/src/middleware/index.js +2 -0
  185. package/src/node-singletons/async_hooks.d.ts +9 -0
  186. package/src/node-singletons/async_hooks.d.ts.map +1 -0
  187. package/src/node-singletons/async_hooks.js +8 -0
  188. package/src/node-singletons/fs.d.ts +2 -2
  189. package/src/node-singletons/fs.d.ts.map +1 -1
  190. package/src/node-singletons/fs.js +2 -2
  191. package/src/node-singletons/http.d.ts +1 -1
  192. package/src/node-singletons/http.d.ts.map +1 -1
  193. package/src/node-singletons/http.js +1 -1
  194. package/src/node-singletons/index.d.ts +4 -0
  195. package/src/node-singletons/index.d.ts.map +1 -1
  196. package/src/node-singletons/index.js +4 -0
  197. package/src/node-singletons/net.d.ts +9 -0
  198. package/src/node-singletons/net.d.ts.map +1 -0
  199. package/src/node-singletons/net.js +8 -0
  200. package/src/node-singletons/os.d.ts +3 -3
  201. package/src/node-singletons/os.d.ts.map +1 -1
  202. package/src/node-singletons/os.js +3 -4
  203. package/src/node-singletons/path.d.ts +3 -1
  204. package/src/node-singletons/path.d.ts.map +1 -1
  205. package/src/node-singletons/path.js +3 -1
  206. package/src/node-singletons/perf-hooks.d.ts +3 -1
  207. package/src/node-singletons/perf-hooks.d.ts.map +1 -1
  208. package/src/node-singletons/perf-hooks.js +3 -1
  209. package/src/node-singletons/process.d.ts +23 -0
  210. package/src/node-singletons/process.d.ts.map +1 -0
  211. package/src/node-singletons/process.js +8 -0
  212. package/src/node-singletons/readline.d.ts +3 -3
  213. package/src/node-singletons/readline.d.ts.map +1 -1
  214. package/src/node-singletons/readline.js +3 -4
  215. package/src/node-singletons/tls.d.ts +9 -0
  216. package/src/node-singletons/tls.d.ts.map +1 -0
  217. package/src/node-singletons/tls.js +8 -0
  218. package/src/node-singletons/url.d.ts +3 -1
  219. package/src/node-singletons/url.d.ts.map +1 -1
  220. package/src/node-singletons/url.js +3 -1
  221. package/src/orm/ConnectionManager.d.ts +6 -1
  222. package/src/orm/ConnectionManager.d.ts.map +1 -1
  223. package/src/orm/ConnectionManager.js +14 -0
  224. package/src/orm/DatabaseAdapter.d.ts +6 -0
  225. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  226. package/src/orm/QueryBuilder.d.ts +8 -1
  227. package/src/orm/QueryBuilder.d.ts.map +1 -1
  228. package/src/orm/QueryBuilder.js +188 -28
  229. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  230. package/src/orm/adapters/D1Adapter.js +18 -12
  231. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
  232. package/src/orm/adapters/MySQLAdapter.js +4 -0
  233. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  234. package/src/orm/adapters/PostgreSQLAdapter.js +4 -0
  235. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
  236. package/src/orm/adapters/SQLServerAdapter.js +4 -0
  237. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
  238. package/src/orm/adapters/SQLiteAdapter.js +4 -0
  239. package/src/performance/CodeGenerationBenchmark.js +3 -3
  240. package/src/performance/Optimizer.d.ts +1 -1
  241. package/src/performance/Optimizer.d.ts.map +1 -1
  242. package/src/performance/Optimizer.js +150 -75
  243. package/src/performance/establish-baseline.js +3 -3
  244. package/src/runtime/PluginManager.d.ts +3 -1
  245. package/src/runtime/PluginManager.d.ts.map +1 -1
  246. package/src/runtime/PluginManager.js +124 -28
  247. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  248. package/src/runtime/RuntimeDetector.js +47 -6
  249. package/src/runtime/adapters/CloudflareAdapter.js +2 -2
  250. package/src/runtime/adapters/FargateAdapter.d.ts.map +1 -1
  251. package/src/runtime/adapters/FargateAdapter.js +2 -1
  252. package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
  253. package/src/runtime/adapters/LambdaAdapter.js +4 -2
  254. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
  255. package/src/runtime/adapters/NodeServerAdapter.js +2 -1
  256. package/src/scheduler/ScheduleRunner.d.ts +18 -0
  257. package/src/scheduler/ScheduleRunner.d.ts.map +1 -0
  258. package/src/scheduler/ScheduleRunner.js +155 -0
  259. package/src/scheduler/index.d.ts +3 -0
  260. package/src/scheduler/index.d.ts.map +1 -0
  261. package/src/scheduler/index.js +1 -0
  262. package/src/scheduler/types.d.ts +16 -0
  263. package/src/scheduler/types.d.ts.map +1 -0
  264. package/src/scheduler/types.js +4 -0
  265. package/src/schedules/index.d.ts +2 -0
  266. package/src/schedules/index.d.ts.map +1 -0
  267. package/src/schedules/index.js +1 -0
  268. package/src/schedules/log-cleanup.d.ts +4 -0
  269. package/src/schedules/log-cleanup.d.ts.map +1 -0
  270. package/src/schedules/log-cleanup.js +18 -0
  271. package/src/scripts/GenerateEnvArtifacts.d.ts +13 -0
  272. package/src/scripts/GenerateEnvArtifacts.d.ts.map +1 -0
  273. package/src/scripts/GenerateEnvArtifacts.js +171 -0
  274. package/src/scripts/TemplateSync.js +109 -70
  275. package/src/security/CsrfTokenManager.js +1 -1
  276. package/src/security/Encryptor.js +1 -1
  277. package/src/security/Hash.d.ts +14 -0
  278. package/src/security/Hash.d.ts.map +1 -0
  279. package/src/security/Hash.js +81 -0
  280. package/src/security/StartupSecretValidation.d.ts +20 -0
  281. package/src/security/StartupSecretValidation.d.ts.map +1 -0
  282. package/src/security/StartupSecretValidation.js +61 -0
  283. package/src/security/UrlValidator.d.ts +0 -1
  284. package/src/security/UrlValidator.d.ts.map +1 -1
  285. package/src/security/UrlValidator.js +1 -2
  286. package/src/security/Xss.d.ts +14 -0
  287. package/src/security/Xss.d.ts.map +1 -0
  288. package/src/security/Xss.js +57 -0
  289. package/src/security/XssProtection.d.ts.map +1 -1
  290. package/src/security/XssProtection.js +155 -17
  291. package/src/templates/adapters/MySQLAdapter.ts.tpl +5 -0
  292. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +5 -0
  293. package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -0
  294. package/src/templates/adapters/SQLiteAdapter.ts.tpl +5 -0
  295. package/src/templates/features/Queue.ts.tpl +1 -29
  296. package/src/templates/project/basic/.env.example.tpl +48 -0
  297. package/src/templates/project/basic/.env.tpl +89 -94
  298. package/src/templates/project/basic/app/Toolkit/Broadcast/sendBroadcast.ts.tpl +7 -0
  299. package/src/templates/project/basic/app/Toolkit/Mail/sendWelcomeEmail.ts.tpl +30 -0
  300. package/src/templates/project/basic/app/Toolkit/Notification/sendSlackNotification.ts.tpl +10 -0
  301. package/src/templates/project/basic/app/Toolkit/Notification/sendSms.ts.tpl +13 -0
  302. package/src/templates/project/basic/config/FileLogWriter.ts.tpl +240 -0
  303. package/src/templates/project/basic/config/SecretsManager.ts.tpl +44 -21
  304. package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +151 -0
  305. package/src/templates/project/basic/config/app.ts.tpl +84 -15
  306. package/src/templates/project/basic/config/broadcast.ts.tpl +97 -0
  307. package/src/templates/project/basic/config/cache.ts.tpl +19 -23
  308. package/src/templates/project/basic/config/cloudflare.ts.tpl +57 -0
  309. package/src/templates/project/basic/config/env.ts.tpl +7 -1
  310. package/src/templates/project/basic/config/index.ts.tpl +3 -0
  311. package/src/templates/project/basic/config/logger.ts.tpl +301 -11
  312. package/src/templates/project/basic/config/logging/HttpLogger.ts.tpl +121 -0
  313. package/src/templates/project/basic/config/logging/KvLogger.ts.tpl +181 -0
  314. package/src/templates/project/basic/config/logging/SlackLogger.ts.tpl +156 -0
  315. package/src/templates/project/basic/config/mail.ts.tpl +141 -0
  316. package/src/templates/project/basic/config/middleware.ts.tpl +27 -0
  317. package/src/templates/project/basic/config/notification.ts.tpl +86 -0
  318. package/src/templates/project/basic/config/security.ts.tpl +4 -5
  319. package/src/templates/project/basic/config/startup.ts.tpl +27 -0
  320. package/src/templates/project/basic/config/storage.ts.tpl +77 -42
  321. package/src/templates/project/basic/database/migrations/index.ts.tpl +1 -1
  322. package/src/templates/project/basic/package.json.tpl +1 -1
  323. package/src/templates/project/basic/routes/api.ts.tpl +11 -37
  324. package/src/templates/project/basic/routes/broadcast.ts.tpl +32 -0
  325. package/src/templates/project/basic/routes/health.ts.tpl +134 -0
  326. package/src/templates/project/basic/routes/storage.ts.tpl +42 -0
  327. package/src/templates/project/basic/src/index.ts.tpl +38 -11
  328. package/src/templates/project/basic/template.json +3 -0
  329. package/src/toolkit/Secrets/EnvFile.d.ts +15 -0
  330. package/src/toolkit/Secrets/EnvFile.d.ts.map +1 -0
  331. package/src/toolkit/Secrets/EnvFile.js +63 -0
  332. package/src/toolkit/Secrets/Manifest.d.ts +24 -0
  333. package/src/toolkit/Secrets/Manifest.d.ts.map +1 -0
  334. package/src/toolkit/Secrets/Manifest.js +71 -0
  335. package/src/toolkit/Secrets/index.d.ts +42 -0
  336. package/src/toolkit/Secrets/index.d.ts.map +1 -0
  337. package/src/toolkit/Secrets/index.js +119 -0
  338. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts +14 -0
  339. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts.map +1 -0
  340. package/src/toolkit/Secrets/providers/AwsSecretsManager.js +131 -0
  341. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts +9 -0
  342. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts.map +1 -0
  343. package/src/toolkit/Secrets/providers/CloudflareKv.js +73 -0
  344. package/src/tools/broadcast/Broadcast.d.ts +7 -0
  345. package/src/tools/broadcast/Broadcast.d.ts.map +1 -0
  346. package/src/tools/broadcast/Broadcast.js +37 -0
  347. package/src/tools/broadcast/drivers/BaseDriver.d.ts +5 -0
  348. package/src/tools/broadcast/drivers/BaseDriver.d.ts.map +1 -0
  349. package/src/tools/broadcast/drivers/BaseDriver.js +8 -0
  350. package/src/tools/broadcast/drivers/InMemory.d.ts +18 -0
  351. package/src/tools/broadcast/drivers/InMemory.d.ts.map +1 -0
  352. package/src/tools/broadcast/drivers/InMemory.js +16 -0
  353. package/src/tools/broadcast/drivers/Pusher.d.ts +8 -0
  354. package/src/tools/broadcast/drivers/Pusher.d.ts.map +1 -0
  355. package/src/tools/broadcast/drivers/Pusher.js +75 -0
  356. package/src/tools/broadcast/drivers/Redis.d.ts +19 -0
  357. package/src/tools/broadcast/drivers/Redis.d.ts.map +1 -0
  358. package/src/tools/broadcast/drivers/Redis.js +73 -0
  359. package/src/tools/broadcast/drivers/RedisHttps.d.ts +14 -0
  360. package/src/tools/broadcast/drivers/RedisHttps.d.ts.map +1 -0
  361. package/src/tools/broadcast/drivers/RedisHttps.js +50 -0
  362. package/src/tools/broadcast/index.d.ts +7 -0
  363. package/src/tools/broadcast/index.d.ts.map +1 -0
  364. package/src/tools/broadcast/index.js +6 -0
  365. package/src/tools/http/Http.d.ts +49 -0
  366. package/src/tools/http/Http.d.ts.map +1 -0
  367. package/src/tools/http/Http.js +169 -0
  368. package/src/tools/http/HttpResponse.d.ts +32 -0
  369. package/src/tools/http/HttpResponse.d.ts.map +1 -0
  370. package/src/tools/http/HttpResponse.js +80 -0
  371. package/src/tools/http/index.d.ts +15 -0
  372. package/src/tools/http/index.d.ts.map +1 -0
  373. package/src/tools/http/index.js +9 -0
  374. package/src/tools/mail/Mail.d.ts +22 -0
  375. package/src/tools/mail/Mail.d.ts.map +1 -0
  376. package/src/tools/mail/Mail.js +105 -0
  377. package/src/tools/mail/attachments.d.ts +23 -0
  378. package/src/tools/mail/attachments.d.ts.map +1 -0
  379. package/src/tools/mail/attachments.js +26 -0
  380. package/src/tools/mail/drivers/BaseDriver.d.ts +5 -0
  381. package/src/tools/mail/drivers/BaseDriver.d.ts.map +1 -0
  382. package/src/tools/mail/drivers/BaseDriver.js +8 -0
  383. package/src/tools/mail/drivers/Mailgun.d.ts +31 -0
  384. package/src/tools/mail/drivers/Mailgun.d.ts.map +1 -0
  385. package/src/tools/mail/drivers/Mailgun.js +81 -0
  386. package/src/tools/mail/drivers/SendGrid.d.ts +29 -0
  387. package/src/tools/mail/drivers/SendGrid.d.ts.map +1 -0
  388. package/src/tools/mail/drivers/SendGrid.js +57 -0
  389. package/src/tools/mail/drivers/Ses.d.ts +24 -0
  390. package/src/tools/mail/drivers/Ses.d.ts.map +1 -0
  391. package/src/tools/mail/drivers/Ses.js +116 -0
  392. package/src/tools/mail/drivers/Smtp.d.ts +38 -0
  393. package/src/tools/mail/drivers/Smtp.d.ts.map +1 -0
  394. package/src/tools/mail/drivers/Smtp.js +327 -0
  395. package/src/tools/mail/templates/index.d.ts +27 -0
  396. package/src/tools/mail/templates/index.d.ts.map +1 -0
  397. package/src/tools/mail/templates/index.js +35 -0
  398. package/src/tools/mail/templates/markdown/index.d.ts +17 -0
  399. package/src/tools/mail/templates/markdown/index.d.ts.map +1 -0
  400. package/src/tools/mail/templates/markdown/index.js +49 -0
  401. package/src/tools/mail/templates/markdown/registry.d.ts +15 -0
  402. package/src/tools/mail/templates/markdown/registry.d.ts.map +1 -0
  403. package/src/tools/mail/templates/markdown/registry.js +34 -0
  404. package/src/tools/mail/templates/markdown/validator.d.ts +16 -0
  405. package/src/tools/mail/templates/markdown/validator.d.ts.map +1 -0
  406. package/src/tools/mail/templates/markdown/validator.js +24 -0
  407. package/src/tools/mail/testing.d.ts +41 -0
  408. package/src/tools/mail/testing.d.ts.map +1 -0
  409. package/src/tools/mail/testing.js +34 -0
  410. package/src/tools/notification/Driver.d.ts +11 -0
  411. package/src/tools/notification/Driver.d.ts.map +1 -0
  412. package/src/tools/notification/Driver.js +1 -0
  413. package/src/tools/notification/Notification.d.ts +11 -0
  414. package/src/tools/notification/Notification.d.ts.map +1 -0
  415. package/src/tools/notification/Notification.js +11 -0
  416. package/src/tools/notification/Registry.d.ts +10 -0
  417. package/src/tools/notification/Registry.d.ts.map +1 -0
  418. package/src/tools/notification/Registry.js +22 -0
  419. package/src/tools/notification/Service.d.ts +6 -0
  420. package/src/tools/notification/Service.d.ts.map +1 -0
  421. package/src/tools/notification/Service.js +18 -0
  422. package/src/tools/notification/config.d.ts +5 -0
  423. package/src/tools/notification/config.d.ts.map +1 -0
  424. package/src/tools/notification/config.js +5 -0
  425. package/src/tools/notification/drivers/BaseDriver.d.ts +5 -0
  426. package/src/tools/notification/drivers/BaseDriver.d.ts.map +1 -0
  427. package/src/tools/notification/drivers/BaseDriver.js +8 -0
  428. package/src/tools/notification/drivers/Console.d.ts +7 -0
  429. package/src/tools/notification/drivers/Console.d.ts.map +1 -0
  430. package/src/tools/notification/drivers/Console.js +13 -0
  431. package/src/tools/notification/drivers/Slack.d.ts +16 -0
  432. package/src/tools/notification/drivers/Slack.d.ts.map +1 -0
  433. package/src/tools/notification/drivers/Slack.js +24 -0
  434. package/src/tools/notification/drivers/Termii.d.ts +10 -0
  435. package/src/tools/notification/drivers/Termii.d.ts.map +1 -0
  436. package/src/tools/notification/drivers/Termii.js +47 -0
  437. package/src/tools/notification/drivers/Twilio.d.ts +21 -0
  438. package/src/tools/notification/drivers/Twilio.d.ts.map +1 -0
  439. package/src/tools/notification/drivers/Twilio.js +48 -0
  440. package/src/tools/notification/templates/markdown/index.d.ts +15 -0
  441. package/src/tools/notification/templates/markdown/index.d.ts.map +1 -0
  442. package/src/tools/notification/templates/markdown/index.js +38 -0
  443. package/src/tools/notification/templates/markdown/registry.d.ts +15 -0
  444. package/src/tools/notification/templates/markdown/registry.d.ts.map +1 -0
  445. package/src/tools/notification/templates/markdown/registry.js +36 -0
  446. package/src/tools/notification/testing.d.ts +19 -0
  447. package/src/tools/notification/testing.d.ts.map +1 -0
  448. package/src/tools/notification/testing.js +35 -0
  449. package/src/tools/notification/testingHelpers.d.ts +12 -0
  450. package/src/tools/notification/testingHelpers.d.ts.map +1 -0
  451. package/src/tools/notification/testingHelpers.js +32 -0
  452. package/src/tools/queue/Queue.d.ts +23 -0
  453. package/src/tools/queue/Queue.d.ts.map +1 -0
  454. package/src/tools/queue/Queue.js +38 -0
  455. package/src/tools/queue/drivers/InMemory.d.ts +10 -0
  456. package/src/tools/queue/drivers/InMemory.d.ts.map +1 -0
  457. package/src/tools/queue/drivers/InMemory.js +55 -0
  458. package/src/tools/queue/drivers/Redis.d.ts +10 -0
  459. package/src/tools/queue/drivers/Redis.d.ts.map +1 -0
  460. package/src/tools/queue/drivers/Redis.js +91 -0
  461. package/src/tools/storage/LocalSignedUrl.d.ts +12 -0
  462. package/src/tools/storage/LocalSignedUrl.d.ts.map +1 -0
  463. package/src/tools/storage/LocalSignedUrl.js +108 -0
  464. package/src/tools/storage/drivers/Gcs.d.ts +20 -0
  465. package/src/tools/storage/drivers/Gcs.d.ts.map +1 -0
  466. package/src/tools/storage/drivers/Gcs.js +152 -0
  467. package/src/tools/storage/drivers/Local.d.ts +18 -0
  468. package/src/tools/storage/drivers/Local.d.ts.map +1 -0
  469. package/src/tools/storage/drivers/Local.js +89 -0
  470. package/src/tools/storage/drivers/R2.d.ts +20 -0
  471. package/src/tools/storage/drivers/R2.d.ts.map +1 -0
  472. package/src/tools/storage/drivers/R2.js +73 -0
  473. package/src/tools/storage/drivers/S3.d.ts +26 -0
  474. package/src/tools/storage/drivers/S3.d.ts.map +1 -0
  475. package/src/tools/storage/drivers/S3.js +258 -0
  476. package/src/tools/storage/index.d.ts +24 -0
  477. package/src/tools/storage/index.d.ts.map +1 -0
  478. package/src/tools/storage/index.js +111 -0
  479. package/src/tools/storage/testing.d.ts +23 -0
  480. package/src/tools/storage/testing.d.ts.map +1 -0
  481. package/src/tools/storage/testing.js +52 -0
  482. package/src/tools/templates/MarkdownRenderer.d.ts +14 -0
  483. package/src/tools/templates/MarkdownRenderer.d.ts.map +1 -0
  484. package/src/tools/templates/MarkdownRenderer.js +300 -0
  485. package/src/tools/templates/index.d.ts +5 -0
  486. package/src/tools/templates/index.d.ts.map +1 -0
  487. package/src/tools/templates/index.js +4 -0
@@ -2,55 +2,105 @@
2
2
  * HTTP Kernel - Request handling and middleware pipeline
3
3
  */
4
4
  import { Logger } from '../config/logger';
5
+ import { middlewareConfig } from '../config/middleware';
6
+ import { ErrorResponse } from './ErrorResponse';
5
7
  import { Request } from './Request';
8
+ import { RequestContext } from './RequestContext';
6
9
  import { Response } from './Response';
7
10
  import { MiddlewareStack } from '../middleware/MiddlewareStack';
8
11
  import { Router } from '../routing/Router';
12
+ import { create as createScheduleRunner } from '../scheduler/ScheduleRunner';
13
+ import { Env } from '../config/env';
9
14
  /**
10
15
  * Terminate request lifecycle
11
16
  */
12
17
  function terminate(_req, _res) {
13
18
  // Cleanup, logging, etc.
14
19
  }
15
- /**
16
- * HTTP Kernel Factory
17
- */
18
- const create = (router, container) => {
19
- const globalMiddleware = [];
20
- const routeMiddleware = {};
21
- const middlewareStack = MiddlewareStack.create();
22
- /**
23
- * Handle incoming HTTP request (Node.js entry point)
24
- */
25
- const handle = async (nodeReq, nodeRes) => {
26
- const req = Request.create(nodeReq);
27
- const res = Response.create(nodeRes);
28
- await handleRequest(req, res);
29
- };
30
- /**
31
- * Handle wrapped request/response
32
- */
33
- const handleRequest = async (req, res) => {
20
+ const isWritableEnded = (res) => {
21
+ if (typeof res.getRaw !== 'function')
22
+ return false;
23
+ const raw = res.getRaw();
24
+ if (typeof raw !== 'object' || raw === null)
25
+ return false;
26
+ if (!('writableEnded' in raw))
27
+ return false;
28
+ return Boolean(raw.writableEnded);
29
+ };
30
+ const resolveMiddlewareForRoute = (route, globalMiddleware, routeMiddleware) => {
31
+ const routeAny = route;
32
+ const routeMiddlewareNames = Array.isArray(routeAny.middleware)
33
+ ? routeAny.middleware.filter((m) => typeof m === 'string')
34
+ : [];
35
+ const resolvedRouteMiddleware = routeMiddlewareNames
36
+ .map((name) => routeMiddleware[name])
37
+ .filter((mw) => typeof mw === 'function');
38
+ return [...globalMiddleware, ...resolvedRouteMiddleware];
39
+ };
40
+ const createHandleRequest = (router, globalMiddleware, routeMiddleware) => {
41
+ return async (req, res) => {
42
+ const context = RequestContext.create(req);
34
43
  try {
35
- Logger.info(`[${req.getMethod()}] ${req.getPath()}`);
36
- // Match route
37
- const route = Router.match(router, req.getMethod(), req.getPath());
38
- if (!route) {
39
- res.setStatus(404).json({ error: 'Not Found' });
40
- return;
41
- }
42
- req.setParams(route.params);
43
- // Execute middleware and handler
44
- await route.handler(req, res);
44
+ await RequestContext.run(context, async () => {
45
+ Logger.info(`[${req.getMethod()}] ${req.getPath()}`);
46
+ // Match route
47
+ const route = Router.match(router, req.getMethod(), req.getPath());
48
+ if (!route) {
49
+ res.setStatus(404).json(ErrorResponse.notFound('Route', context.requestId));
50
+ return;
51
+ }
52
+ req.setParams(route.params);
53
+ const middlewareToRun = resolveMiddlewareForRoute(route, globalMiddleware, routeMiddleware);
54
+ let index = 0;
55
+ const next = async () => {
56
+ if (index < middlewareToRun.length) {
57
+ const mw = middlewareToRun[index++];
58
+ await mw(req, res, next);
59
+ return;
60
+ }
61
+ await route.handler(req, res);
62
+ };
63
+ await next();
64
+ });
45
65
  }
46
66
  catch (error) {
47
67
  Logger.error('Kernel error:', error);
48
- res.setStatus(500).json({ error: 'Internal Server Error' });
68
+ if (!isWritableEnded(res)) {
69
+ res
70
+ .setStatus(500)
71
+ .json(ErrorResponse.internalServerError('Internal server error', context.requestId));
72
+ }
49
73
  }
50
74
  finally {
51
75
  terminate(req, res);
52
76
  }
53
77
  };
78
+ };
79
+ const createHandle = (handleRequest) => async (nodeReq, nodeRes) => {
80
+ const req = Request.create(nodeReq);
81
+ const res = Response.create(nodeRes);
82
+ await handleRequest(req, res);
83
+ };
84
+ /**
85
+ * HTTP Kernel Factory
86
+ */
87
+ const create = (router, container) => {
88
+ const globalMiddleware = [];
89
+ const routeMiddleware = {};
90
+ const middlewareStack = MiddlewareStack.create();
91
+ // Scheduling runner (for long-running runtimes)
92
+ const scheduleRunner = createScheduleRunner();
93
+ const scheduleKernel = Object.freeze({
94
+ getContainer: () => container,
95
+ getRouter: () => router,
96
+ });
97
+ // Register default middleware config
98
+ globalMiddleware.push(...middlewareConfig.global);
99
+ for (const [name, mw] of Object.entries(middlewareConfig.route)) {
100
+ routeMiddleware[name] = mw;
101
+ }
102
+ const handleRequest = createHandleRequest(router, globalMiddleware, routeMiddleware);
103
+ const handle = createHandle(handleRequest);
54
104
  return {
55
105
  handle,
56
106
  handleRequest,
@@ -64,6 +114,22 @@ const create = (router, container) => {
64
114
  getRouter: () => router,
65
115
  getContainer: () => container,
66
116
  getMiddlewareStack: () => middlewareStack,
117
+ // Scheduling API
118
+ registerSchedule(schedule) {
119
+ scheduleRunner.register(schedule);
120
+ },
121
+ startSchedules() {
122
+ // Delegated to the internal ScheduleRunner. Kernel will call startSchedules
123
+ // during boot for long-running runtimes (Node / Fargate).
124
+ scheduleRunner.start(scheduleKernel);
125
+ },
126
+ async stopSchedules() {
127
+ const timeoutMs = Env.getInt('SCHEDULE_SHUTDOWN_TIMEOUT_MS', 30000);
128
+ await scheduleRunner.stop(timeoutMs);
129
+ },
130
+ async runScheduleOnce(name) {
131
+ await scheduleRunner.runOnce(name, scheduleKernel);
132
+ },
67
133
  };
68
134
  };
69
135
  export const Kernel = Object.freeze({
@@ -0,0 +1,20 @@
1
+ import type { IRequest } from './Request';
2
+ export interface IRequestContext {
3
+ requestId: string;
4
+ startTime: number;
5
+ method: string;
6
+ path: string;
7
+ userAgent?: string;
8
+ status?: number;
9
+ duration?: number;
10
+ }
11
+ export declare const RequestContext: Readonly<{
12
+ run<T>(context: IRequestContext, callback: () => T): Promise<T>;
13
+ current(): Promise<IRequestContext | undefined>;
14
+ create(req: IRequest): IRequestContext;
15
+ attach(req: IRequest, context: IRequestContext): void;
16
+ get(req: IRequest): IRequestContext | undefined;
17
+ enrich(context: IRequestContext, status: number): IRequestContext;
18
+ }>;
19
+ export default RequestContext;
20
+ //# sourceMappingURL=RequestContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../../src/http/RequestContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6CD,eAAO,MAAM,cAAc;QACf,CAAC,WAAW,eAAe,YAAY,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;eAKpD,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;gBAKzC,QAAQ,GAAG,eAAe;gBAoB1B,QAAQ,WAAW,eAAe,GAAG,IAAI;aAM5C,QAAQ,GAAG,eAAe,GAAG,SAAS;oBAM/B,eAAe,UAAU,MAAM,GAAG,eAAe;EAQjE,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { generateUuid } from '../common/uuid';
2
+ const createFallbackStorage = () => {
3
+ let store;
4
+ return {
5
+ run(ctx, callback) {
6
+ const prev = store;
7
+ store = ctx;
8
+ try {
9
+ return callback();
10
+ }
11
+ finally {
12
+ store = prev;
13
+ }
14
+ },
15
+ getStore() {
16
+ return store;
17
+ },
18
+ };
19
+ };
20
+ const resolveStorage = async () => {
21
+ try {
22
+ const mod = (await import('../node-singletons/async_hooks'));
23
+ return new mod.AsyncLocalStorage();
24
+ }
25
+ catch {
26
+ return createFallbackStorage();
27
+ }
28
+ };
29
+ const getHeaderString = (req, name) => {
30
+ const value = req.getHeader(name);
31
+ return typeof value === 'string' ? value : undefined;
32
+ };
33
+ const STORAGE_PROMISE = resolveStorage();
34
+ export const RequestContext = Object.freeze({
35
+ async run(context, callback) {
36
+ const storage = await STORAGE_PROMISE;
37
+ return storage.run(context, callback);
38
+ },
39
+ async current() {
40
+ const storage = await STORAGE_PROMISE;
41
+ return storage.getStore();
42
+ },
43
+ create(req) {
44
+ req.context ??= {};
45
+ const requestIdFromHeader = getHeaderString(req, 'x-request-id');
46
+ const requestId = requestIdFromHeader ?? generateUuid();
47
+ const ctx = {
48
+ requestId,
49
+ startTime: Date.now(),
50
+ method: req.getMethod(),
51
+ path: req.getPath(),
52
+ userAgent: getHeaderString(req, 'user-agent'),
53
+ };
54
+ req.context['requestId'] = requestId;
55
+ req.context['requestContext'] = ctx;
56
+ return ctx;
57
+ },
58
+ attach(req, context) {
59
+ req.context ??= {};
60
+ req.context['requestContext'] = context;
61
+ req.context['requestId'] = context.requestId;
62
+ },
63
+ get(req) {
64
+ const anyReq = req;
65
+ const value = anyReq.context?.['requestContext'];
66
+ return typeof value === 'object' && value !== null ? value : undefined;
67
+ },
68
+ enrich(context, status) {
69
+ const duration = Date.now() - context.startTime;
70
+ return {
71
+ ...context,
72
+ status,
73
+ duration,
74
+ };
75
+ },
76
+ });
77
+ export default RequestContext;
package/src/index.d.ts CHANGED
@@ -35,9 +35,17 @@ export { Schema, Validator } from './validation/Validator';
35
35
  export { CsrfTokenManager } from './security/CsrfTokenManager';
36
36
  export type { CsrfTokenData } from './security/CsrfTokenManager';
37
37
  export { Encryptor } from './security/Encryptor';
38
+ export { Hash } from './security/Hash';
38
39
  export { JwtManager } from './security/JwtManager';
39
40
  export type { JwtOptions, JwtPayload } from './security/JwtManager';
41
+ export { Xss } from './security/Xss';
40
42
  export { XssProtection } from './security/XssProtection';
41
43
  export { ErrorFactory } from './exceptions/ZintrustError';
42
- export declare const version = "0.1.0";
44
+ export { mailConfig } from './config/mail';
45
+ export type { MailConfig, MailDriverConfig, MailDriverName } from './config/mail';
46
+ export { StartupConfigValidator } from './config/StartupConfigValidator';
47
+ export { Mail } from './tools/mail/Mail';
48
+ export type { SendMailInput, SendMailResult } from './tools/mail/Mail';
49
+ export { SmtpDriver } from './tools/mail/drivers/Smtp';
50
+ export type { SmtpConfig as SmtpDriverConfig } from './tools/mail/drivers/Smtp';
43
51
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,YAAY,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAGzD,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/src/index.js CHANGED
@@ -29,9 +29,15 @@ export { Schema, Validator } from './validation/Validator';
29
29
  // Security
30
30
  export { CsrfTokenManager } from './security/CsrfTokenManager';
31
31
  export { Encryptor } from './security/Encryptor';
32
+ export { Hash } from './security/Hash';
32
33
  export { JwtManager } from './security/JwtManager';
34
+ export { Xss } from './security/Xss';
33
35
  export { XssProtection } from './security/XssProtection';
34
36
  // Exceptions
35
37
  export { ErrorFactory } from './exceptions/ZintrustError';
36
- // Version
37
- export const version = '0.1.0';
38
+ // Config
39
+ export { mailConfig } from './config/mail';
40
+ export { StartupConfigValidator } from './config/StartupConfigValidator';
41
+ // Mail
42
+ export { Mail } from './tools/mail/Mail';
43
+ export { SmtpDriver } from './tools/mail/drivers/Smtp';
@@ -1 +1 @@
1
- {"version":3,"file":"MicroserviceManager.d.ts","sourceRoot":"","sources":["../../../src/microservices/MicroserviceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MicroserviceManager.d.ts","sourceRoot":"","sources":["../../../src/microservices/MicroserviceManager.ts"],"names":[],"mappings":"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"}
@@ -86,30 +86,32 @@ const registerService = (config) => {
86
86
  Logger.info(`Registered microservice: ${serviceConfig.name}`);
87
87
  return serviceConfig;
88
88
  };
89
+ // eslint-disable-next-line @typescript-eslint/require-await
89
90
  const startService = async (name, _handler) => {
90
91
  const service = services.get(name);
91
92
  if (service === undefined) {
92
- return Promise.reject(ErrorFactory.createNotFoundError('Service not found', { name }));
93
+ throw ErrorFactory.createNotFoundError('Service not found', { name });
93
94
  }
94
95
  service.status = 'running';
95
96
  Logger.info(`Service started: ${name}`);
96
- return Promise.resolve(true);
97
+ return true;
97
98
  };
99
+ // eslint-disable-next-line @typescript-eslint/require-await
98
100
  const stopService = async (name) => {
99
101
  const service = services.get(name);
100
102
  if (service === undefined) {
101
- return Promise.resolve(false);
103
+ return false;
102
104
  }
103
105
  service.status = 'stopped';
104
106
  Logger.info(`Service stopped: ${name}`);
105
- return Promise.resolve(true);
107
+ return true;
106
108
  };
109
+ // eslint-disable-next-line @typescript-eslint/require-await
107
110
  const stopAllServices = async () => {
108
111
  Logger.info('Stopping all microservices...');
109
112
  for (const service of services.values()) {
110
113
  service.status = 'stopped';
111
114
  }
112
- return Promise.resolve();
113
115
  };
114
116
  const getService = (domain, name) => {
115
117
  const service = services.get(name);
@@ -219,8 +221,9 @@ const getStatusSummary = () => {
219
221
  timestamp: Date.now(),
220
222
  };
221
223
  };
224
+ // eslint-disable-next-line @typescript-eslint/require-await
222
225
  const discoverServices = async () => {
223
- return Promise.resolve(Array.from(services.values()));
226
+ return Array.from(services.values());
224
227
  };
225
228
  const getMicroserviceManager = () => MicroserviceManager;
226
229
  export const MicroserviceManager = Object.freeze({
@@ -1 +1 @@
1
- {"version":3,"file":"PostgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/microservices/PostgresAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostgresAdapter.d.ts","sourceRoot":"","sources":["../../../src/microservices/PostgresAdapter.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Logger } from '../config/logger';
2
2
  import { ErrorFactory } from '../exceptions/ZintrustError';
3
+ import { QueryBuilder } from '../orm/QueryBuilder';
3
4
  const poolsByInstance = new WeakMap();
4
5
  const configByInstance = new WeakMap();
5
6
  function getAdapterConfig(adapter) {
@@ -242,7 +243,8 @@ async function runMigrations(pool, migrations) {
242
243
  */
243
244
  async function runHealthCheck(pool) {
244
245
  try {
245
- const result = await pool.query('SELECT 1');
246
+ const pingSql = QueryBuilder.create('').select('1').toSQL();
247
+ const result = await pool.query(pingSql);
246
248
  return result.rows.length > 0;
247
249
  }
248
250
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceBundler.d.ts","sourceRoot":"","sources":["../../../src/microservices/ServiceBundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,IAAI,eAAe,CAAC;IAC/B,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F,MAAM,IAAI,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,wBAiEvB,CAAC;AA+RL;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpF;AAED,eAAO,MAAM,aAAa,GAAU,QAAQ,YAAY,KAAG,OAAO,CAAC,YAAY,CAC3B,CAAC;AACrD,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,EACd,UAAU,MAAM,EAAE,EAClB,YAAY,MAAM,KACjB,OAAO,CAAC,YAAY,EAAE,CAAwE,CAAC;AAClG,eAAO,MAAM,kBAAkB,GAC7B,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAC+D,CAAC;AAEjF,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"ServiceBundler.d.ts","sourceRoot":"","sources":["../../../src/microservices/ServiceBundler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC7F;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,IAAI,eAAe,CAAC;IAC/B,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC3D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC3F,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5F,MAAM,IAAI,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,wBAiEvB,CAAC;AAiSL;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpF;AAED,eAAO,MAAM,aAAa,GAAU,QAAQ,YAAY,KAAG,OAAO,CAAC,YAAY,CAC3B,CAAC;AACrD,eAAO,MAAM,SAAS,GACpB,QAAQ,MAAM,EACd,UAAU,MAAM,EAAE,EAClB,YAAY,MAAM,KACjB,OAAO,CAAC,YAAY,EAAE,CAAwE,CAAC;AAClG,eAAO,MAAM,kBAAkB,GAC7B,aAAa,MAAM,EACnB,QAAQ,MAAM,EACd,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAC+D,CAAC;AAEjF,eAAe,cAAc,CAAC"}
@@ -54,6 +54,7 @@ export const ServiceBundler = Object.freeze(() => {
54
54
  /**
55
55
  * Run bundle for a single service
56
56
  */
57
+ // eslint-disable-next-line @typescript-eslint/require-await
57
58
  async function runBundleService(config) {
58
59
  const { serviceName, domain, outputDir, targetSize = 1 } = config;
59
60
  Logger.info(`\n📦 Bundling service: ${serviceName}`);
@@ -64,14 +65,14 @@ async function runBundleService(config) {
64
65
  const metadata = generateBundleMetadata(serviceName, domain, totalSize, fileCount, targetSize);
65
66
  fs.writeFileSync(path.join(bundleDir, 'bundle.json'), JSON.stringify(metadata, null, 2));
66
67
  logBundleSummary(totalSize, fileCount, targetSize);
67
- return Promise.resolve({
68
+ return {
68
69
  serviceName,
69
70
  sizeBytes: totalSize,
70
71
  sizeMB: Number.parseFloat((totalSize / (1024 * 1024)).toFixed(2)),
71
72
  files: fileCount,
72
73
  location: bundleDir,
73
74
  optimized: totalSize < targetSize * 1024 * 1024,
74
- });
75
+ };
75
76
  }
76
77
  /**
77
78
  * Run bundle for all services
@@ -100,6 +101,7 @@ async function runBundleAll(domain, services, outputDir, bundleServiceFn) {
100
101
  /**
101
102
  * Run create service image
102
103
  */
104
+ // eslint-disable-next-line @typescript-eslint/require-await
103
105
  async function runCreateServiceImage(serviceName, domain, registry) {
104
106
  const serviceDir = `services/${domain}/${serviceName}`;
105
107
  const imageTag = `${registry}/${domain}-${serviceName}:latest`;
@@ -109,7 +111,7 @@ async function runCreateServiceImage(serviceName, domain, registry) {
109
111
  fs.writeFileSync(path.join(serviceDir, 'Dockerfile'), dockerfile);
110
112
  Logger.info(` ✓ Dockerfile created at ${serviceDir}/Dockerfile`);
111
113
  Logger.info(` To build: docker build -t ${imageTag} ${serviceDir}`);
112
- return Promise.resolve(imageTag);
114
+ return imageTag;
113
115
  }
114
116
  /**
115
117
  * Copy directory recursively
@@ -270,7 +272,7 @@ ENV NODE_ENV=production
270
272
  ENV SERVICE_NAME=${serviceName}
271
273
 
272
274
  HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
273
- CMD node -e "require('node:http').get('http://localhost:3000/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"
275
+ CMD node -e "require('node:http').get('http://localhost:7777/health', (r) => process.exit(r.statusCode === 200 ? 0 : 1))"
274
276
 
275
277
  EXPOSE 3000
276
278
 
@@ -84,7 +84,7 @@ async function checkDependencyService(depService) {
84
84
  try {
85
85
  // In a real environment, we would resolve the service URL
86
86
  // For now, we assume it's on localhost with a standard port mapping or discovery
87
- const url = `http://localhost:3000/health?service=${depService}`;
87
+ const url = `http://localhost:7777/health?service=${depService}`;
88
88
  // SSRF Protection
89
89
  validateUrl(url);
90
90
  const depResponse = await fetch(url, {
@@ -346,6 +346,7 @@ export const HealthCheckAggregator = Object.freeze({
346
346
  /**
347
347
  * Handle aggregated health check request
348
348
  */
349
+ // eslint-disable-next-line @typescript-eslint/require-await
349
350
  async handle(_req, res) {
350
351
  const status = monitor.getLastStatus();
351
352
  let statusCode;
@@ -359,7 +360,6 @@ export const HealthCheckAggregator = Object.freeze({
359
360
  statusCode = 200;
360
361
  }
361
362
  res.setStatus(statusCode).json(status);
362
- return Promise.resolve();
363
363
  },
364
364
  };
365
365
  },
@@ -1 +1 @@
1
- {"version":3,"file":"CsrfMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/CsrfMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AASD,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACa,WAAW,GAAQ,UAAU;EA+E7C,CAAC"}
1
+ {"version":3,"file":"CsrfMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/CsrfMiddleware.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AASD,eAAO,MAAM,cAAc;IACzB;;OAEG;qBACa,WAAW,GAAQ,UAAU;EAiF7C,CAAC"}
@@ -3,8 +3,8 @@
3
3
  * Protects against Cross-Site Request Forgery attacks
4
4
  * Uses CsrfTokenManager for token generation and validation
5
5
  */
6
+ import { generateSecureJobId } from '../common/uuid';
6
7
  import { Logger } from '../config/logger';
7
- import { ErrorFactory } from '../exceptions/ZintrustError';
8
8
  import { CsrfTokenManager } from '../security/CsrfTokenManager';
9
9
  const DEFAULT_OPTIONS = {
10
10
  cookieName: 'XSRF-TOKEN',
@@ -48,7 +48,7 @@ export const CsrfMiddleware = Object.freeze({
48
48
  // return;
49
49
  // Better approach: Generate a session ID if missing (Double Submit Cookie foundation)
50
50
  // IMPORTANT: use a cryptographically secure generator (Sonar S2245).
51
- sessionId = generateSecureId();
51
+ sessionId = await generateSecureJobId('CSRF Middleware: secure crypto API not available to generate a session id');
52
52
  // We would need to set this session cookie, but we can't easily do that without a SessionManager.
53
53
  // We'll assume the SessionMiddleware handles session creation.
54
54
  }
@@ -102,20 +102,3 @@ function isUnrefableTimer(value) {
102
102
  return false;
103
103
  return 'unref' in value && typeof value.unref === 'function';
104
104
  }
105
- function generateSecureId() {
106
- if (typeof globalThis.crypto?.randomUUID === 'function') {
107
- return globalThis.crypto.randomUUID();
108
- }
109
- if (typeof globalThis.crypto?.getRandomValues === 'function') {
110
- const bytes = new Uint8Array(32);
111
- globalThis.crypto.getRandomValues(bytes);
112
- return bytesToHex(bytes);
113
- }
114
- throw ErrorFactory.createSecurityError('CSRF Middleware: secure crypto API not available to generate a session id.');
115
- }
116
- function bytesToHex(bytes) {
117
- let out = '';
118
- for (const b of bytes)
119
- out += b.toString(16).padStart(2, '0');
120
- return out;
121
- }
@@ -0,0 +1,6 @@
1
+ import type { Middleware } from './MiddlewareStack';
2
+ export declare const ErrorHandlerMiddleware: Readonly<{
3
+ create(): Middleware;
4
+ }>;
5
+ export default ErrorHandlerMiddleware;
6
+ //# sourceMappingURL=ErrorHandlerMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorHandlerMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/ErrorHandlerMiddleware.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAU9D,eAAO,MAAM,sBAAsB;cACvB,UAAU;EAwBpB,CAAC;AAEH,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Env } from '../config/env';
2
+ import { Logger } from '../config/logger';
3
+ import { ErrorResponse } from '../http/ErrorResponse';
4
+ import { RequestContext } from '../http/RequestContext';
5
+ const isWritableEnded = (res) => {
6
+ if (typeof res.getRaw !== 'function')
7
+ return false;
8
+ const raw = res.getRaw();
9
+ if (typeof raw !== 'object' || raw === null)
10
+ return false;
11
+ if (!('writableEnded' in raw))
12
+ return false;
13
+ return Boolean(raw.writableEnded);
14
+ };
15
+ export const ErrorHandlerMiddleware = Object.freeze({
16
+ create() {
17
+ return async (req, res, next) => {
18
+ try {
19
+ await next();
20
+ }
21
+ catch (error) {
22
+ Logger.error('Unhandled request error:', error);
23
+ const requestId = RequestContext.get(req)?.requestId ?? req.context['requestId'];
24
+ const includeStack = Env.NODE_ENV !== 'production';
25
+ if (!isWritableEnded(res)) {
26
+ res.setStatus(500);
27
+ res.json(ErrorResponse.internalServerError('Internal server error', requestId, includeStack ? error?.stack : undefined));
28
+ }
29
+ }
30
+ };
31
+ },
32
+ });
33
+ export default ErrorHandlerMiddleware;
@@ -0,0 +1,9 @@
1
+ import type { Middleware } from './MiddlewareStack';
2
+ export interface LoggingOptions {
3
+ enabled?: boolean;
4
+ }
5
+ export declare const LoggingMiddleware: Readonly<{
6
+ create(options?: LoggingOptions): Middleware;
7
+ }>;
8
+ export default LoggingMiddleware;
9
+ //# sourceMappingURL=LoggingMiddleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoggingMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middleware/LoggingMiddleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AASD,eAAO,MAAM,iBAAiB;qBACZ,cAAc,GAAQ,UAAU;EA0BhD,CAAC;AAEH,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { Env } from '../config/env';
2
+ import { Logger } from '../config/logger';
3
+ import { RequestContext } from '../http/RequestContext';
4
+ const getStatusSafe = (res) => {
5
+ const anyRes = res;
6
+ if (typeof anyRes.getStatus === 'function')
7
+ return anyRes.getStatus();
8
+ if (typeof anyRes.statusCode === 'number')
9
+ return anyRes.statusCode;
10
+ return 200;
11
+ };
12
+ export const LoggingMiddleware = Object.freeze({
13
+ create(options = {}) {
14
+ const enabled = typeof options.enabled === 'boolean' ? options.enabled : Boolean(Env.LOG_HTTP_REQUEST);
15
+ return async (req, res, next) => {
16
+ if (enabled === false) {
17
+ await next();
18
+ return;
19
+ }
20
+ const start = Date.now();
21
+ const method = req.getMethod();
22
+ const path = req.getPath();
23
+ const requestId = RequestContext.get(req)?.requestId ?? req.context['requestId'];
24
+ Logger.info(`[${requestId}] ↓ ${method} ${path}`);
25
+ try {
26
+ await next();
27
+ }
28
+ finally {
29
+ const durationMs = Date.now() - start;
30
+ const status = getStatusSafe(res);
31
+ Logger.info(`[${requestId}] ↑ ${method} ${path} ${status} ${durationMs}ms`);
32
+ }
33
+ };
34
+ },
35
+ });
36
+ export default LoggingMiddleware;