@zintrust/core 0.1.0 → 0.1.2

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 (518) hide show
  1. package/README.md +214 -0
  2. package/bin/zintrust.d.ts.map +1 -1
  3. package/bin/zintrust.js +18 -1
  4. package/package.json +4 -34
  5. package/public/index.html +535 -0
  6. package/src/boot/Application.d.ts.map +1 -1
  7. package/src/boot/Application.js +46 -3
  8. package/src/boot/Server.d.ts.map +1 -1
  9. package/src/boot/Server.js +3 -4
  10. package/src/boot/bootstrap.js +77 -6
  11. package/src/builder/BundleOptimizer.d.ts.map +1 -1
  12. package/src/builder/BundleOptimizer.js +25 -29
  13. package/src/cache/Cache.d.ts.map +1 -1
  14. package/src/cache/Cache.js +4 -2
  15. package/src/cache/drivers/KVDriver.d.ts.map +1 -1
  16. package/src/cache/drivers/KVDriver.js +8 -7
  17. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  18. package/src/cache/drivers/MemoryDriver.js +5 -0
  19. package/src/cache/drivers/RedisDriver.js +1 -1
  20. package/src/cli/BaseCommand.d.ts +2 -2
  21. package/src/cli/BaseCommand.d.ts.map +1 -1
  22. package/src/cli/BaseCommand.js +2 -1
  23. package/src/cli/CLI.d.ts.map +1 -1
  24. package/src/cli/CLI.js +22 -18
  25. package/src/cli/ErrorHandler.d.ts.map +1 -1
  26. package/src/cli/ErrorHandler.js +2 -4
  27. package/src/cli/commands/AddCommand.d.ts +81 -0
  28. package/src/cli/commands/AddCommand.d.ts.map +1 -1
  29. package/src/cli/commands/AddCommand.js +24 -5
  30. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  31. package/src/cli/commands/ConfigCommand.js +59 -25
  32. package/src/cli/commands/D1MigrateCommand.d.ts +4 -0
  33. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  34. package/src/cli/commands/D1MigrateCommand.js +6 -4
  35. package/src/cli/commands/FixCommand.d.ts.map +1 -1
  36. package/src/cli/commands/FixCommand.js +3 -15
  37. package/src/cli/commands/LogsCleanupCommand.d.ts +6 -0
  38. package/src/cli/commands/LogsCleanupCommand.d.ts.map +1 -0
  39. package/src/cli/commands/LogsCleanupCommand.js +20 -0
  40. package/src/cli/commands/LogsCommand.d.ts.map +1 -1
  41. package/src/cli/commands/LogsCommand.js +4 -6
  42. package/src/cli/commands/MakeMailTemplateCommand.d.ts +10 -0
  43. package/src/cli/commands/MakeMailTemplateCommand.d.ts.map +1 -0
  44. package/src/cli/commands/MakeMailTemplateCommand.js +74 -0
  45. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts +10 -0
  46. package/src/cli/commands/MakeNotificationTemplateCommand.d.ts.map +1 -0
  47. package/src/cli/commands/MakeNotificationTemplateCommand.js +113 -0
  48. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  49. package/src/cli/commands/MigrateCommand.js +3 -3
  50. package/src/cli/commands/NewCommand.d.ts +4 -0
  51. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  52. package/src/cli/commands/NewCommand.js +34 -19
  53. package/src/cli/commands/PluginCommand.d.ts.map +1 -1
  54. package/src/cli/commands/PluginCommand.js +8 -4
  55. package/src/cli/commands/PrepareCommand.d.ts.map +1 -1
  56. package/src/cli/commands/PrepareCommand.js +1 -1
  57. package/src/cli/commands/QACommand.d.ts.map +1 -1
  58. package/src/cli/commands/QACommand.js +16 -26
  59. package/src/cli/commands/SecretsCommand.d.ts +16 -0
  60. package/src/cli/commands/SecretsCommand.d.ts.map +1 -0
  61. package/src/cli/commands/SecretsCommand.js +91 -0
  62. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  63. package/src/cli/commands/StartCommand.js +2 -2
  64. package/src/cli/commands/TemplatesCommand.d.ts +3 -0
  65. package/src/cli/commands/TemplatesCommand.d.ts.map +1 -0
  66. package/src/cli/commands/TemplatesCommand.js +65 -0
  67. package/src/cli/commands/index.d.ts +5 -0
  68. package/src/cli/commands/index.d.ts.map +1 -1
  69. package/src/cli/commands/index.js +5 -0
  70. package/src/cli/config/ConfigManager.js +1 -1
  71. package/src/cli/index.d.ts +2 -1
  72. package/src/cli/index.d.ts.map +1 -1
  73. package/src/cli/index.js +2 -1
  74. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  75. package/src/cli/scaffolding/ControllerGenerator.js +11 -10
  76. package/src/cli/scaffolding/FeatureScaffolder.js +4 -4
  77. package/src/cli/scaffolding/FileGenerator.js +1 -1
  78. package/src/cli/scaffolding/MigrationGenerator.d.ts.map +1 -1
  79. package/src/cli/scaffolding/MigrationGenerator.js +10 -9
  80. package/src/cli/scaffolding/ModelGenerator.d.ts.map +1 -1
  81. package/src/cli/scaffolding/ModelGenerator.js +11 -10
  82. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  83. package/src/cli/scaffolding/ProjectScaffolder.js +61 -11
  84. package/src/cli/scaffolding/ResponseFactoryGenerator.d.ts.map +1 -1
  85. package/src/cli/scaffolding/ResponseFactoryGenerator.js +2 -1
  86. package/src/cli/scaffolding/RouteGenerator.d.ts.map +1 -1
  87. package/src/cli/scaffolding/RouteGenerator.js +15 -14
  88. package/src/cli/scaffolding/SeederGenerator.js +1 -1
  89. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.d.ts.map +1 -1
  90. package/src/cli/scaffolding/ServiceIntegrationTestGenerator.js +7 -6
  91. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts +1 -1
  92. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.d.ts.map +1 -1
  93. package/src/cli/scaffolding/ServiceRequestFactoryGenerator.js +2 -2
  94. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  95. package/src/cli/scaffolding/ServiceScaffolder.js +13 -12
  96. package/src/cli/scaffolding/TemplateEngine.d.ts +10 -3
  97. package/src/cli/scaffolding/TemplateEngine.d.ts.map +1 -1
  98. package/src/cli/scaffolding/TemplateEngine.js +15 -285
  99. package/src/cli/scaffolding/TemplateGenerator.d.ts +40 -0
  100. package/src/cli/scaffolding/TemplateGenerator.d.ts.map +1 -0
  101. package/src/cli/scaffolding/TemplateGenerator.js +172 -0
  102. package/src/cli/scaffolding/index.d.ts +1 -0
  103. package/src/cli/scaffolding/index.d.ts.map +1 -1
  104. package/src/cli/scaffolding/index.js +1 -0
  105. package/src/cli/utils/spawn.js +1 -1
  106. package/src/common/AwsSigV4.d.ts +41 -0
  107. package/src/common/AwsSigV4.d.ts.map +1 -0
  108. package/src/common/AwsSigV4.js +69 -0
  109. package/src/common/index.d.ts +39 -0
  110. package/src/common/index.d.ts.map +1 -1
  111. package/src/common/index.js +101 -8
  112. package/src/common/uuid.d.ts +3 -0
  113. package/src/common/uuid.d.ts.map +1 -0
  114. package/src/common/uuid.js +30 -0
  115. package/src/config/FileLogWriter.d.ts +22 -0
  116. package/src/config/FileLogWriter.d.ts.map +1 -0
  117. package/src/config/FileLogWriter.js +192 -0
  118. package/src/config/SecretsManager.d.ts.map +1 -1
  119. package/src/config/SecretsManager.js +26 -0
  120. package/src/config/StartupConfigValidator.d.ts +15 -0
  121. package/src/config/StartupConfigValidator.d.ts.map +1 -0
  122. package/src/config/StartupConfigValidator.js +86 -0
  123. package/src/config/app.d.ts +2 -1
  124. package/src/config/app.d.ts.map +1 -1
  125. package/src/config/app.js +65 -15
  126. package/src/config/broadcast.d.ts +47 -0
  127. package/src/config/broadcast.d.ts.map +1 -0
  128. package/src/config/broadcast.js +54 -0
  129. package/src/config/cache.d.ts +13 -17
  130. package/src/config/cache.d.ts.map +1 -1
  131. package/src/config/cache.js +9 -11
  132. package/src/config/cloudflare.d.ts +26 -0
  133. package/src/config/cloudflare.d.ts.map +1 -0
  134. package/src/config/cloudflare.js +38 -0
  135. package/src/config/env.d.ts +6 -0
  136. package/src/config/env.d.ts.map +1 -1
  137. package/src/config/env.js +6 -0
  138. package/src/config/index.d.ts +52 -28
  139. package/src/config/index.d.ts.map +1 -1
  140. package/src/config/index.js +3 -0
  141. package/src/config/logger.d.ts +2 -0
  142. package/src/config/logger.d.ts.map +1 -1
  143. package/src/config/logger.js +270 -11
  144. package/src/config/logging/HttpLogger.d.ts +23 -0
  145. package/src/config/logging/HttpLogger.d.ts.map +1 -0
  146. package/src/config/logging/HttpLogger.js +93 -0
  147. package/src/config/logging/KvLogger.d.ts +22 -0
  148. package/src/config/logging/KvLogger.d.ts.map +1 -0
  149. package/src/config/logging/KvLogger.js +143 -0
  150. package/src/config/logging/SlackLogger.d.ts +23 -0
  151. package/src/config/logging/SlackLogger.d.ts.map +1 -0
  152. package/src/config/logging/SlackLogger.js +119 -0
  153. package/src/config/mail.d.ts +81 -0
  154. package/src/config/mail.d.ts.map +1 -0
  155. package/src/config/mail.js +73 -0
  156. package/src/config/middleware.d.ts +8 -0
  157. package/src/config/middleware.d.ts.map +1 -0
  158. package/src/config/middleware.js +18 -0
  159. package/src/config/notification.d.ts +62 -0
  160. package/src/config/notification.d.ts.map +1 -0
  161. package/src/config/notification.js +43 -0
  162. package/src/config/security.d.ts.map +1 -1
  163. package/src/config/security.js +2 -2
  164. package/src/config/startup.d.ts +23 -0
  165. package/src/config/startup.d.ts.map +1 -0
  166. package/src/config/startup.js +15 -0
  167. package/src/config/storage.d.ts +21 -35
  168. package/src/config/storage.d.ts.map +1 -1
  169. package/src/config/storage.js +57 -37
  170. package/src/database/migrations/index.d.ts +1 -1
  171. package/src/database/migrations/index.d.ts.map +1 -1
  172. package/src/database/migrations/index.js +2 -1
  173. package/src/features/Queue.js +1 -25
  174. package/src/functions/lambda.d.ts.map +1 -1
  175. package/src/functions/lambda.js +6 -1
  176. package/src/health/RuntimeHealthProbes.d.ts +13 -0
  177. package/src/health/RuntimeHealthProbes.d.ts.map +1 -0
  178. package/src/health/RuntimeHealthProbes.js +62 -0
  179. package/src/health/StartupHealthChecks.d.ts +26 -0
  180. package/src/health/StartupHealthChecks.d.ts.map +1 -0
  181. package/src/health/StartupHealthChecks.js +124 -0
  182. package/src/http/ErrorResponse.d.ts +28 -0
  183. package/src/http/ErrorResponse.d.ts.map +1 -0
  184. package/src/http/ErrorResponse.js +42 -0
  185. package/src/http/Kernel.d.ts +5 -0
  186. package/src/http/Kernel.d.ts.map +1 -1
  187. package/src/http/Kernel.js +96 -30
  188. package/src/http/Request.d.ts +1 -1
  189. package/src/http/Request.d.ts.map +1 -1
  190. package/src/http/RequestContext.d.ts +20 -0
  191. package/src/http/RequestContext.d.ts.map +1 -0
  192. package/src/http/RequestContext.js +77 -0
  193. package/src/index.d.ts +9 -1
  194. package/src/index.d.ts.map +1 -1
  195. package/src/index.js +8 -2
  196. package/src/microservices/MicroserviceBootstrap.d.ts.map +1 -1
  197. package/src/microservices/MicroserviceBootstrap.js +6 -5
  198. package/src/microservices/MicroserviceManager.d.ts.map +1 -1
  199. package/src/microservices/MicroserviceManager.js +7 -5
  200. package/src/microservices/PostgresAdapter.d.ts.map +1 -1
  201. package/src/microservices/PostgresAdapter.js +7 -4
  202. package/src/microservices/ServiceBundler.d.ts.map +1 -1
  203. package/src/microservices/ServiceBundler.js +3 -1
  204. package/src/microservices/ServiceHealthMonitor.d.ts.map +1 -1
  205. package/src/microservices/ServiceHealthMonitor.js +7 -3
  206. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  207. package/src/middleware/CsrfMiddleware.js +2 -19
  208. package/src/middleware/ErrorHandlerMiddleware.d.ts +6 -0
  209. package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -0
  210. package/src/middleware/ErrorHandlerMiddleware.js +33 -0
  211. package/src/middleware/LoggingMiddleware.d.ts +9 -0
  212. package/src/middleware/LoggingMiddleware.d.ts.map +1 -0
  213. package/src/middleware/LoggingMiddleware.js +36 -0
  214. package/src/middleware/index.d.ts +2 -0
  215. package/src/middleware/index.d.ts.map +1 -1
  216. package/src/middleware/index.js +2 -0
  217. package/src/node-singletons/async_hooks.d.ts +9 -0
  218. package/src/node-singletons/async_hooks.d.ts.map +1 -0
  219. package/src/node-singletons/async_hooks.js +8 -0
  220. package/src/node-singletons/fs.d.ts +2 -2
  221. package/src/node-singletons/fs.d.ts.map +1 -1
  222. package/src/node-singletons/fs.js +2 -2
  223. package/src/node-singletons/http.d.ts +1 -1
  224. package/src/node-singletons/http.d.ts.map +1 -1
  225. package/src/node-singletons/http.js +1 -1
  226. package/src/node-singletons/index.d.ts +4 -0
  227. package/src/node-singletons/index.d.ts.map +1 -1
  228. package/src/node-singletons/index.js +4 -0
  229. package/src/node-singletons/net.d.ts +9 -0
  230. package/src/node-singletons/net.d.ts.map +1 -0
  231. package/src/node-singletons/net.js +8 -0
  232. package/src/node-singletons/os.d.ts +3 -3
  233. package/src/node-singletons/os.d.ts.map +1 -1
  234. package/src/node-singletons/os.js +3 -4
  235. package/src/node-singletons/path.d.ts +3 -1
  236. package/src/node-singletons/path.d.ts.map +1 -1
  237. package/src/node-singletons/path.js +3 -1
  238. package/src/node-singletons/perf-hooks.d.ts +3 -1
  239. package/src/node-singletons/perf-hooks.d.ts.map +1 -1
  240. package/src/node-singletons/perf-hooks.js +3 -1
  241. package/src/node-singletons/process.d.ts +23 -0
  242. package/src/node-singletons/process.d.ts.map +1 -0
  243. package/src/node-singletons/process.js +8 -0
  244. package/src/node-singletons/readline.d.ts +3 -3
  245. package/src/node-singletons/readline.d.ts.map +1 -1
  246. package/src/node-singletons/readline.js +3 -4
  247. package/src/node-singletons/tls.d.ts +9 -0
  248. package/src/node-singletons/tls.d.ts.map +1 -0
  249. package/src/node-singletons/tls.js +8 -0
  250. package/src/node-singletons/url.d.ts +3 -1
  251. package/src/node-singletons/url.d.ts.map +1 -1
  252. package/src/node-singletons/url.js +3 -1
  253. package/src/orm/ConnectionManager.d.ts +6 -1
  254. package/src/orm/ConnectionManager.d.ts.map +1 -1
  255. package/src/orm/ConnectionManager.js +14 -0
  256. package/src/orm/DatabaseAdapter.d.ts +6 -0
  257. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  258. package/src/orm/QueryBuilder.d.ts +8 -1
  259. package/src/orm/QueryBuilder.d.ts.map +1 -1
  260. package/src/orm/QueryBuilder.js +188 -28
  261. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  262. package/src/orm/adapters/D1Adapter.js +18 -12
  263. package/src/orm/adapters/MySQLAdapter.d.ts.map +1 -1
  264. package/src/orm/adapters/MySQLAdapter.js +4 -0
  265. package/src/orm/adapters/PostgreSQLAdapter.d.ts.map +1 -1
  266. package/src/orm/adapters/PostgreSQLAdapter.js +4 -0
  267. package/src/orm/adapters/SQLServerAdapter.d.ts.map +1 -1
  268. package/src/orm/adapters/SQLServerAdapter.js +4 -0
  269. package/src/orm/adapters/SQLiteAdapter.d.ts.map +1 -1
  270. package/src/orm/adapters/SQLiteAdapter.js +4 -0
  271. package/src/performance/Benchmark.d.ts.map +1 -1
  272. package/src/performance/Benchmark.js +3 -0
  273. package/src/performance/CodeGenerationBenchmark.js +3 -3
  274. package/src/performance/Optimizer.d.ts +1 -1
  275. package/src/performance/Optimizer.d.ts.map +1 -1
  276. package/src/performance/Optimizer.js +157 -80
  277. package/src/performance/establish-baseline.js +3 -3
  278. package/src/runtime/PluginManager.d.ts +3 -1
  279. package/src/runtime/PluginManager.d.ts.map +1 -1
  280. package/src/runtime/PluginManager.js +124 -28
  281. package/src/runtime/RuntimeDetector.d.ts.map +1 -1
  282. package/src/runtime/RuntimeDetector.js +47 -5
  283. package/src/runtime/adapters/CloudflareAdapter.js +2 -2
  284. package/src/runtime/adapters/DenoAdapter.js +9 -7
  285. package/src/runtime/adapters/FargateAdapter.d.ts.map +1 -1
  286. package/src/runtime/adapters/FargateAdapter.js +4 -3
  287. package/src/runtime/adapters/LambdaAdapter.d.ts.map +1 -1
  288. package/src/runtime/adapters/LambdaAdapter.js +4 -2
  289. package/src/runtime/adapters/NodeServerAdapter.d.ts.map +1 -1
  290. package/src/runtime/adapters/NodeServerAdapter.js +7 -6
  291. package/src/scheduler/ScheduleRunner.d.ts +18 -0
  292. package/src/scheduler/ScheduleRunner.d.ts.map +1 -0
  293. package/src/scheduler/ScheduleRunner.js +155 -0
  294. package/src/scheduler/index.d.ts +3 -0
  295. package/src/scheduler/index.d.ts.map +1 -0
  296. package/src/scheduler/index.js +1 -0
  297. package/src/scheduler/types.d.ts +16 -0
  298. package/src/scheduler/types.d.ts.map +1 -0
  299. package/src/scheduler/types.js +4 -0
  300. package/src/schedules/index.d.ts +2 -0
  301. package/src/schedules/index.d.ts.map +1 -0
  302. package/src/schedules/index.js +1 -0
  303. package/src/schedules/log-cleanup.d.ts +4 -0
  304. package/src/schedules/log-cleanup.d.ts.map +1 -0
  305. package/src/schedules/log-cleanup.js +18 -0
  306. package/src/scripts/GenerateEnvArtifacts.d.ts +13 -0
  307. package/src/scripts/GenerateEnvArtifacts.d.ts.map +1 -0
  308. package/src/scripts/GenerateEnvArtifacts.js +171 -0
  309. package/src/scripts/TemplateSync.js +109 -70
  310. package/src/security/CsrfTokenManager.js +1 -1
  311. package/src/security/Encryptor.js +1 -1
  312. package/src/security/Hash.d.ts +14 -0
  313. package/src/security/Hash.d.ts.map +1 -0
  314. package/src/security/Hash.js +81 -0
  315. package/src/security/StartupSecretValidation.d.ts +20 -0
  316. package/src/security/StartupSecretValidation.d.ts.map +1 -0
  317. package/src/security/StartupSecretValidation.js +61 -0
  318. package/src/security/UrlValidator.d.ts +0 -1
  319. package/src/security/UrlValidator.d.ts.map +1 -1
  320. package/src/security/UrlValidator.js +1 -2
  321. package/src/security/Xss.d.ts +14 -0
  322. package/src/security/Xss.d.ts.map +1 -0
  323. package/src/security/Xss.js +57 -0
  324. package/src/security/XssProtection.d.ts.map +1 -1
  325. package/src/security/XssProtection.js +150 -16
  326. package/src/templates/adapters/MySQLAdapter.ts.tpl +5 -0
  327. package/src/templates/adapters/PostgreSQLAdapter.ts.tpl +5 -0
  328. package/src/templates/adapters/SQLServerAdapter.ts.tpl +5 -0
  329. package/src/templates/adapters/SQLiteAdapter.ts.tpl +5 -0
  330. package/src/templates/features/Queue.ts.tpl +1 -29
  331. package/src/templates/project/basic/.env.example.tpl +48 -0
  332. package/src/templates/project/basic/.env.tpl +89 -94
  333. package/src/templates/project/basic/app/Toolkit/Broadcast/sendBroadcast.ts.tpl +7 -0
  334. package/src/templates/project/basic/app/Toolkit/Mail/sendWelcomeEmail.ts.tpl +30 -0
  335. package/src/templates/project/basic/app/Toolkit/Notification/sendSlackNotification.ts.tpl +10 -0
  336. package/src/templates/project/basic/app/Toolkit/Notification/sendSms.ts.tpl +13 -0
  337. package/src/templates/project/basic/config/FileLogWriter.ts.tpl +240 -0
  338. package/src/templates/project/basic/config/SecretsManager.ts.tpl +32 -1
  339. package/src/templates/project/basic/config/StartupConfigValidator.ts.tpl +151 -0
  340. package/src/templates/project/basic/config/app.ts.tpl +84 -15
  341. package/src/templates/project/basic/config/broadcast.ts.tpl +97 -0
  342. package/src/templates/project/basic/config/cache.ts.tpl +19 -23
  343. package/src/templates/project/basic/config/cloudflare.ts.tpl +57 -0
  344. package/src/templates/project/basic/config/env.ts.tpl +7 -1
  345. package/src/templates/project/basic/config/index.ts.tpl +3 -0
  346. package/src/templates/project/basic/config/logger.ts.tpl +301 -11
  347. package/src/templates/project/basic/config/logging/HttpLogger.ts.tpl +121 -0
  348. package/src/templates/project/basic/config/logging/KvLogger.ts.tpl +181 -0
  349. package/src/templates/project/basic/config/logging/SlackLogger.ts.tpl +156 -0
  350. package/src/templates/project/basic/config/mail.ts.tpl +141 -0
  351. package/src/templates/project/basic/config/middleware.ts.tpl +27 -0
  352. package/src/templates/project/basic/config/notification.ts.tpl +86 -0
  353. package/src/templates/project/basic/config/security.ts.tpl +4 -5
  354. package/src/templates/project/basic/config/startup.ts.tpl +27 -0
  355. package/src/templates/project/basic/config/storage.ts.tpl +77 -42
  356. package/src/templates/project/basic/database/migrations/index.ts.tpl +1 -1
  357. package/src/templates/project/basic/package.json.tpl +1 -1
  358. package/src/templates/project/basic/routes/api.ts.tpl +9 -37
  359. package/src/templates/project/basic/routes/broadcast.ts.tpl +32 -0
  360. package/src/templates/project/basic/routes/health.ts.tpl +134 -0
  361. package/src/templates/project/basic/src/index.ts.tpl +38 -11
  362. package/src/templates/project/basic/template.json +3 -0
  363. package/src/toolkit/Secrets/EnvFile.d.ts +15 -0
  364. package/src/toolkit/Secrets/EnvFile.d.ts.map +1 -0
  365. package/src/toolkit/Secrets/EnvFile.js +63 -0
  366. package/src/toolkit/Secrets/Manifest.d.ts +24 -0
  367. package/src/toolkit/Secrets/Manifest.d.ts.map +1 -0
  368. package/src/toolkit/Secrets/Manifest.js +71 -0
  369. package/src/toolkit/Secrets/index.d.ts +42 -0
  370. package/src/toolkit/Secrets/index.d.ts.map +1 -0
  371. package/src/toolkit/Secrets/index.js +119 -0
  372. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts +14 -0
  373. package/src/toolkit/Secrets/providers/AwsSecretsManager.d.ts.map +1 -0
  374. package/src/toolkit/Secrets/providers/AwsSecretsManager.js +131 -0
  375. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts +9 -0
  376. package/src/toolkit/Secrets/providers/CloudflareKv.d.ts.map +1 -0
  377. package/src/toolkit/Secrets/providers/CloudflareKv.js +73 -0
  378. package/src/tools/broadcast/Broadcast.d.ts +7 -0
  379. package/src/tools/broadcast/Broadcast.d.ts.map +1 -0
  380. package/src/tools/broadcast/Broadcast.js +37 -0
  381. package/src/tools/broadcast/drivers/BaseDriver.d.ts +5 -0
  382. package/src/tools/broadcast/drivers/BaseDriver.d.ts.map +1 -0
  383. package/src/tools/broadcast/drivers/BaseDriver.js +8 -0
  384. package/src/tools/broadcast/drivers/InMemory.d.ts +18 -0
  385. package/src/tools/broadcast/drivers/InMemory.d.ts.map +1 -0
  386. package/src/tools/broadcast/drivers/InMemory.js +16 -0
  387. package/src/tools/broadcast/drivers/Pusher.d.ts +8 -0
  388. package/src/tools/broadcast/drivers/Pusher.d.ts.map +1 -0
  389. package/src/tools/broadcast/drivers/Pusher.js +75 -0
  390. package/src/tools/broadcast/drivers/Redis.d.ts +19 -0
  391. package/src/tools/broadcast/drivers/Redis.d.ts.map +1 -0
  392. package/src/tools/broadcast/drivers/Redis.js +73 -0
  393. package/src/tools/broadcast/drivers/RedisHttps.d.ts +14 -0
  394. package/src/tools/broadcast/drivers/RedisHttps.d.ts.map +1 -0
  395. package/src/tools/broadcast/drivers/RedisHttps.js +50 -0
  396. package/src/tools/broadcast/index.d.ts +7 -0
  397. package/src/tools/broadcast/index.d.ts.map +1 -0
  398. package/src/tools/broadcast/index.js +6 -0
  399. package/src/tools/http/Http.d.ts +51 -0
  400. package/src/tools/http/Http.d.ts.map +1 -0
  401. package/src/tools/http/Http.js +171 -0
  402. package/src/tools/http/HttpResponse.d.ts +32 -0
  403. package/src/tools/http/HttpResponse.d.ts.map +1 -0
  404. package/src/tools/http/HttpResponse.js +80 -0
  405. package/src/tools/http/index.d.ts +15 -0
  406. package/src/tools/http/index.d.ts.map +1 -0
  407. package/src/tools/http/index.js +9 -0
  408. package/src/tools/mail/Mail.d.ts +22 -0
  409. package/src/tools/mail/Mail.d.ts.map +1 -0
  410. package/src/tools/mail/Mail.js +105 -0
  411. package/src/tools/mail/attachments.d.ts +23 -0
  412. package/src/tools/mail/attachments.d.ts.map +1 -0
  413. package/src/tools/mail/attachments.js +26 -0
  414. package/src/tools/mail/drivers/BaseDriver.d.ts +5 -0
  415. package/src/tools/mail/drivers/BaseDriver.d.ts.map +1 -0
  416. package/src/tools/mail/drivers/BaseDriver.js +8 -0
  417. package/src/tools/mail/drivers/Mailgun.d.ts +31 -0
  418. package/src/tools/mail/drivers/Mailgun.d.ts.map +1 -0
  419. package/src/tools/mail/drivers/Mailgun.js +81 -0
  420. package/src/tools/mail/drivers/SendGrid.d.ts +29 -0
  421. package/src/tools/mail/drivers/SendGrid.d.ts.map +1 -0
  422. package/src/tools/mail/drivers/SendGrid.js +57 -0
  423. package/src/tools/mail/drivers/Ses.d.ts +24 -0
  424. package/src/tools/mail/drivers/Ses.d.ts.map +1 -0
  425. package/src/tools/mail/drivers/Ses.js +116 -0
  426. package/src/tools/mail/drivers/Smtp.d.ts +38 -0
  427. package/src/tools/mail/drivers/Smtp.d.ts.map +1 -0
  428. package/src/tools/mail/drivers/Smtp.js +327 -0
  429. package/src/tools/mail/templates/index.d.ts +27 -0
  430. package/src/tools/mail/templates/index.d.ts.map +1 -0
  431. package/src/tools/mail/templates/index.js +35 -0
  432. package/src/tools/mail/templates/markdown/index.d.ts +17 -0
  433. package/src/tools/mail/templates/markdown/index.d.ts.map +1 -0
  434. package/src/tools/mail/templates/markdown/index.js +49 -0
  435. package/src/tools/mail/templates/markdown/registry.d.ts +15 -0
  436. package/src/tools/mail/templates/markdown/registry.d.ts.map +1 -0
  437. package/src/tools/mail/templates/markdown/registry.js +34 -0
  438. package/src/tools/mail/templates/markdown/validator.d.ts +16 -0
  439. package/src/tools/mail/templates/markdown/validator.d.ts.map +1 -0
  440. package/src/tools/mail/templates/markdown/validator.js +24 -0
  441. package/src/tools/mail/testing.d.ts +41 -0
  442. package/src/tools/mail/testing.d.ts.map +1 -0
  443. package/src/tools/mail/testing.js +34 -0
  444. package/src/tools/notification/Driver.d.ts +11 -0
  445. package/src/tools/notification/Driver.d.ts.map +1 -0
  446. package/src/tools/notification/Driver.js +1 -0
  447. package/src/tools/notification/Notification.d.ts +11 -0
  448. package/src/tools/notification/Notification.d.ts.map +1 -0
  449. package/src/tools/notification/Notification.js +11 -0
  450. package/src/tools/notification/Registry.d.ts +10 -0
  451. package/src/tools/notification/Registry.d.ts.map +1 -0
  452. package/src/tools/notification/Registry.js +22 -0
  453. package/src/tools/notification/Service.d.ts +6 -0
  454. package/src/tools/notification/Service.d.ts.map +1 -0
  455. package/src/tools/notification/Service.js +18 -0
  456. package/src/tools/notification/config.d.ts +5 -0
  457. package/src/tools/notification/config.d.ts.map +1 -0
  458. package/src/tools/notification/config.js +5 -0
  459. package/src/tools/notification/drivers/BaseDriver.d.ts +5 -0
  460. package/src/tools/notification/drivers/BaseDriver.d.ts.map +1 -0
  461. package/src/tools/notification/drivers/BaseDriver.js +8 -0
  462. package/src/tools/notification/drivers/Console.d.ts +7 -0
  463. package/src/tools/notification/drivers/Console.d.ts.map +1 -0
  464. package/src/tools/notification/drivers/Console.js +13 -0
  465. package/src/tools/notification/drivers/Slack.d.ts +16 -0
  466. package/src/tools/notification/drivers/Slack.d.ts.map +1 -0
  467. package/src/tools/notification/drivers/Slack.js +24 -0
  468. package/src/tools/notification/drivers/Termii.d.ts +10 -0
  469. package/src/tools/notification/drivers/Termii.d.ts.map +1 -0
  470. package/src/tools/notification/drivers/Termii.js +47 -0
  471. package/src/tools/notification/drivers/Twilio.d.ts +21 -0
  472. package/src/tools/notification/drivers/Twilio.d.ts.map +1 -0
  473. package/src/tools/notification/drivers/Twilio.js +48 -0
  474. package/src/tools/notification/templates/markdown/index.d.ts +15 -0
  475. package/src/tools/notification/templates/markdown/index.d.ts.map +1 -0
  476. package/src/tools/notification/templates/markdown/index.js +38 -0
  477. package/src/tools/notification/templates/markdown/registry.d.ts +15 -0
  478. package/src/tools/notification/templates/markdown/registry.d.ts.map +1 -0
  479. package/src/tools/notification/templates/markdown/registry.js +36 -0
  480. package/src/tools/notification/testing.d.ts +19 -0
  481. package/src/tools/notification/testing.d.ts.map +1 -0
  482. package/src/tools/notification/testing.js +35 -0
  483. package/src/tools/notification/testingHelpers.d.ts +12 -0
  484. package/src/tools/notification/testingHelpers.d.ts.map +1 -0
  485. package/src/tools/notification/testingHelpers.js +32 -0
  486. package/src/tools/queue/Queue.d.ts +23 -0
  487. package/src/tools/queue/Queue.d.ts.map +1 -0
  488. package/src/tools/queue/Queue.js +38 -0
  489. package/src/tools/queue/drivers/InMemory.d.ts +10 -0
  490. package/src/tools/queue/drivers/InMemory.d.ts.map +1 -0
  491. package/src/tools/queue/drivers/InMemory.js +55 -0
  492. package/src/tools/queue/drivers/Redis.d.ts +10 -0
  493. package/src/tools/queue/drivers/Redis.d.ts.map +1 -0
  494. package/src/tools/queue/drivers/Redis.js +91 -0
  495. package/src/tools/storage/drivers/Gcs.d.ts +20 -0
  496. package/src/tools/storage/drivers/Gcs.d.ts.map +1 -0
  497. package/src/tools/storage/drivers/Gcs.js +152 -0
  498. package/src/tools/storage/drivers/Local.d.ts +17 -0
  499. package/src/tools/storage/drivers/Local.d.ts.map +1 -0
  500. package/src/tools/storage/drivers/Local.js +63 -0
  501. package/src/tools/storage/drivers/R2.d.ts +20 -0
  502. package/src/tools/storage/drivers/R2.d.ts.map +1 -0
  503. package/src/tools/storage/drivers/R2.js +73 -0
  504. package/src/tools/storage/drivers/S3.d.ts +26 -0
  505. package/src/tools/storage/drivers/S3.d.ts.map +1 -0
  506. package/src/tools/storage/drivers/S3.js +258 -0
  507. package/src/tools/storage/index.d.ts +24 -0
  508. package/src/tools/storage/index.d.ts.map +1 -0
  509. package/src/tools/storage/index.js +112 -0
  510. package/src/tools/storage/testing.d.ts +23 -0
  511. package/src/tools/storage/testing.d.ts.map +1 -0
  512. package/src/tools/storage/testing.js +52 -0
  513. package/src/tools/templates/MarkdownRenderer.d.ts +14 -0
  514. package/src/tools/templates/MarkdownRenderer.d.ts.map +1 -0
  515. package/src/tools/templates/MarkdownRenderer.js +300 -0
  516. package/src/tools/templates/index.d.ts +5 -0
  517. package/src/tools/templates/index.d.ts.map +1 -0
  518. package/src/tools/templates/index.js +4 -0
@@ -6,6 +6,7 @@ export { appConfig, type AppConfig } from './app';
6
6
  export { cacheConfig, type CacheConfig } from './cache';
7
7
  export { databaseConfig, type DatabaseConfig } from './database';
8
8
  export { microservicesConfig, type MicroservicesConfig } from './microservices';
9
+ export { middlewareConfig, type MiddlewareConfig } from './middleware';
9
10
  export { queueConfig, type QueueConfig } from './queue';
10
11
  export { securityConfig } from './security';
11
12
  export { storageConfig, type StorageConfig } from './storage';
@@ -219,8 +220,8 @@ export declare const config: Readonly<{
219
220
  };
220
221
  }>;
221
222
  readonly storage: Readonly<{
222
- default: string;
223
- drivers: {
223
+ readonly default: string;
224
+ readonly drivers: {
224
225
  local: {
225
226
  driver: "local";
226
227
  root: string;
@@ -229,14 +230,23 @@ export declare const config: Readonly<{
229
230
  };
230
231
  s3: {
231
232
  driver: "s3";
232
- key: string;
233
- secret: string;
233
+ accessKeyId: string;
234
+ secretAccessKey: string;
234
235
  region: string;
235
236
  bucket: string;
236
237
  url: string;
237
238
  endpoint: string;
238
239
  usePathStyleUrl: boolean;
239
240
  };
241
+ r2: {
242
+ driver: "r2";
243
+ accessKeyId: string;
244
+ secretAccessKey: string;
245
+ region: string;
246
+ bucket: string;
247
+ endpoint: string;
248
+ url: string;
249
+ };
240
250
  gcs: {
241
251
  driver: "gcs";
242
252
  projectId: string;
@@ -246,8 +256,8 @@ export declare const config: Readonly<{
246
256
  };
247
257
  };
248
258
  getDriver(this: {
249
- default: string;
250
- drivers: {
259
+ readonly default: string;
260
+ readonly drivers: {
251
261
  local: {
252
262
  driver: "local";
253
263
  root: string;
@@ -256,14 +266,23 @@ export declare const config: Readonly<{
256
266
  };
257
267
  s3: {
258
268
  driver: "s3";
259
- key: string;
260
- secret: string;
269
+ accessKeyId: string;
270
+ secretAccessKey: string;
261
271
  region: string;
262
272
  bucket: string;
263
273
  url: string;
264
274
  endpoint: string;
265
275
  usePathStyleUrl: boolean;
266
276
  };
277
+ r2: {
278
+ driver: "r2";
279
+ accessKeyId: string;
280
+ secretAccessKey: string;
281
+ region: string;
282
+ bucket: string;
283
+ endpoint: string;
284
+ url: string;
285
+ };
267
286
  gcs: {
268
287
  driver: "gcs";
269
288
  projectId: string;
@@ -279,13 +298,21 @@ export declare const config: Readonly<{
279
298
  visibility: string;
280
299
  } | {
281
300
  driver: "s3";
282
- key: string;
283
- secret: string;
301
+ accessKeyId: string;
302
+ secretAccessKey: string;
284
303
  region: string;
285
304
  bucket: string;
286
305
  url: string;
287
306
  endpoint: string;
288
307
  usePathStyleUrl: boolean;
308
+ } | {
309
+ driver: "r2";
310
+ accessKeyId: string;
311
+ secretAccessKey: string;
312
+ region: string;
313
+ bucket: string;
314
+ endpoint: string;
315
+ url: string;
289
316
  } | {
290
317
  driver: "gcs";
291
318
  projectId: string;
@@ -293,16 +320,16 @@ export declare const config: Readonly<{
293
320
  bucket: string;
294
321
  url: string;
295
322
  };
296
- temp: {
323
+ readonly temp: {
297
324
  path: string;
298
325
  maxAge: number;
299
326
  };
300
- uploads: {
327
+ readonly uploads: {
301
328
  maxSize: string;
302
329
  allowedMimes: string;
303
330
  path: string;
304
331
  };
305
- backups: {
332
+ readonly backups: {
306
333
  path: string;
307
334
  driver: string;
308
335
  };
@@ -379,6 +406,7 @@ export declare const config: Readonly<{
379
406
  readonly bcryptRounds: number;
380
407
  };
381
408
  }>;
409
+ readonly middleware: Readonly<import("./middleware").MiddlewareConfig>;
382
410
  readonly microservices: Readonly<{
383
411
  readonly enabled: boolean;
384
412
  readonly services: string[];
@@ -441,18 +469,16 @@ export declare const config: Readonly<{
441
469
  driver: "redis";
442
470
  host: string;
443
471
  port: number;
444
- password: string;
445
- database: number;
446
472
  ttl: number;
447
473
  };
448
- memcached: {
449
- driver: "memcached";
450
- servers: string[];
474
+ mongodb: {
475
+ driver: "mongodb";
476
+ uri: string;
477
+ db: string;
451
478
  ttl: number;
452
479
  };
453
- file: {
454
- driver: "file";
455
- path: string;
480
+ kv: {
481
+ driver: "kv";
456
482
  ttl: number;
457
483
  };
458
484
  };
@@ -463,23 +489,21 @@ export declare const config: Readonly<{
463
489
  driver: "redis";
464
490
  host: string;
465
491
  port: number;
466
- password: string | undefined;
467
- database: number;
468
492
  ttl: number;
469
493
  } | {
470
- driver: "memcached";
471
- servers: string[];
494
+ driver: "mongodb";
495
+ uri: string;
496
+ db: string;
472
497
  ttl: number;
473
498
  } | {
474
- driver: "file";
475
- path: string;
499
+ driver: "kv";
476
500
  ttl: number;
477
501
  };
478
502
  keyPrefix: string;
479
503
  ttl: number;
480
504
  }>;
481
505
  readonly queue: Readonly<{
482
- default: "database" | "redis" | "sync" | "rabbitmq" | "sqs";
506
+ default: "redis" | "database" | "sync" | "rabbitmq" | "sqs";
483
507
  drivers: {
484
508
  sync: {
485
509
  driver: "sync";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQR,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASR,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -6,6 +6,7 @@ import { appConfig } from './app';
6
6
  import { cacheConfig } from './cache';
7
7
  import { databaseConfig } from './database';
8
8
  import { microservicesConfig } from './microservices';
9
+ import { middlewareConfig } from './middleware';
9
10
  import { queueConfig } from './queue';
10
11
  import { securityConfig } from './security';
11
12
  import { storageConfig } from './storage';
@@ -13,6 +14,7 @@ export { appConfig } from './app';
13
14
  export { cacheConfig } from './cache';
14
15
  export { databaseConfig } from './database';
15
16
  export { microservicesConfig } from './microservices';
17
+ export { middlewareConfig } from './middleware';
16
18
  export { queueConfig } from './queue';
17
19
  export { securityConfig } from './security';
18
20
  export { storageConfig } from './storage';
@@ -25,6 +27,7 @@ export const config = Object.freeze({
25
27
  database: databaseConfig,
26
28
  storage: storageConfig,
27
29
  security: securityConfig,
30
+ middleware: middlewareConfig,
28
31
  microservices: microservicesConfig,
29
32
  cache: cacheConfig,
30
33
  queue: queueConfig,
@@ -5,12 +5,14 @@ interface ILogger {
5
5
  error(message: string, error?: unknown, category?: string): void;
6
6
  fatal(message: string, error?: unknown, category?: string): void;
7
7
  }
8
+ export declare const cleanLogsOnce: () => Promise<string[]>;
8
9
  export declare const Logger: Readonly<{
9
10
  debug: (message: string, data?: unknown, category?: string) => void;
10
11
  info: (message: string, data?: unknown, category?: string) => void;
11
12
  warn: (message: string, data?: unknown, category?: string) => void;
12
13
  error: (message: string, error?: unknown, category?: string) => void;
13
14
  fatal: (message: string, error?: unknown, category?: string) => void;
15
+ cleanLogsOnce: () => Promise<string[]>;
14
16
  scope: (scope: string) => ILogger;
15
17
  }>;
16
18
  export default Logger;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/config/logger.ts"],"names":[],"mappings":"AAOA,UAAU,OAAO;IACf,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClE;AAwED,eAAO,MAAM,MAAM;qBArDQ,MAAM,SAAS,OAAO,aAAa,MAAM,KAAG,IAAI;oBAOjD,MAAM,SAAS,OAAO,aAAa,MAAM,KAAG,IAAI;oBAKhD,MAAM,SAAS,OAAO,aAAa,MAAM,KAAG,IAAI;qBAK/C,MAAM,UAAU,OAAO,aAAa,MAAM,KAAG,IAAI;qBAMjD,MAAM,UAAU,OAAO,aAAa,MAAM,KAAG,IAAI;mBAS1C,MAAM,KAAG,OAAO;EA4BhD,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/config/logger.ts"],"names":[],"mappings":"AAQA,UAAU,OAAO;IACf,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClE;AA0VD,eAAO,MAAM,aAAa,QAAa,OAAO,CAAC,MAAM,EAAE,CAYtD,CAAC;AAEF,eAAO,MAAM,MAAM;qBAzJQ,MAAM,SAAS,OAAO,aAAa,MAAM,KAAG,IAAI;oBAsBjD,MAAM,SAAS,OAAO,aAAa,MAAM,KAAG,IAAI;oBAoBhD,MAAM,SAAS,OAAO,aAAa,MAAM,KAAG,IAAI;qBAoB/C,MAAM,UAAU,OAAO,aAAa,MAAM,KAAG,IAAI;qBA0BjD,MAAM,UAAU,OAAO,aAAa,MAAM,KAAG,IAAI;yBAmDrC,OAAO,CAAC,MAAM,EAAE,CAAC;mBArBtB,MAAM,KAAG,OAAO;EA2ChD,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -3,9 +3,124 @@
3
3
  * Sealed namespace pattern - all exports through Logger namespace
4
4
  * Replaces console.* calls throughout the codebase
5
5
  */
6
+ import { appConfig } from './app';
6
7
  import { Env } from './env';
7
- const isDevelopment = Env.NODE_ENV === 'development' || Env.NODE_ENV === undefined;
8
- const isProduction = Env.NODE_ENV === 'production';
8
+ const isDevelopment = () => appConfig.isDevelopment();
9
+ const isProduction = () => appConfig.isProduction();
10
+ const getLogFormat = () => Env.get('LOG_FORMAT', 'text');
11
+ const isJsonFormat = (value) => value === 'json';
12
+ const SENSITIVE_FIELDS = new Set([
13
+ 'password',
14
+ 'token',
15
+ 'authorization',
16
+ 'secret',
17
+ 'apikey',
18
+ 'api_key',
19
+ 'jwt',
20
+ 'bearer',
21
+ ]);
22
+ const redactSensitiveData = (data) => {
23
+ const seen = new WeakSet();
24
+ const walk = (value) => {
25
+ if (Array.isArray(value)) {
26
+ if (seen.has(value))
27
+ return '[Circular]';
28
+ seen.add(value);
29
+ return value.map((v) => walk(v));
30
+ }
31
+ if (typeof value === 'object' && value !== null) {
32
+ const asObj = value;
33
+ if (seen.has(asObj))
34
+ return '[Circular]';
35
+ seen.add(asObj);
36
+ const out = {};
37
+ for (const [key, inner] of Object.entries(asObj)) {
38
+ if (SENSITIVE_FIELDS.has(key.toLowerCase())) {
39
+ out[key] = '[REDACTED]';
40
+ }
41
+ else {
42
+ out[key] = walk(inner);
43
+ }
44
+ }
45
+ return out;
46
+ }
47
+ return value;
48
+ };
49
+ return walk(data);
50
+ };
51
+ const safeStringify = (obj, indent = false) => {
52
+ const seen = new WeakSet();
53
+ return JSON.stringify(obj, (_key, value) => {
54
+ if (typeof value === 'object' && value !== null) {
55
+ const asObj = value;
56
+ if (seen.has(asObj))
57
+ return '[Circular]';
58
+ seen.add(asObj);
59
+ }
60
+ return value;
61
+ }, indent ? 2 : 0);
62
+ };
63
+ let fileWriterPromise;
64
+ let fileWriter;
65
+ const getFileWriter = () => {
66
+ if (fileWriter !== undefined)
67
+ return;
68
+ if (fileWriterPromise !== undefined)
69
+ return;
70
+ fileWriterPromise = import('./FileLogWriter')
71
+ .then((mod) => {
72
+ fileWriter = mod.FileLogWriter;
73
+ return mod;
74
+ })
75
+ .catch(() => {
76
+ fileWriterPromise = undefined;
77
+ return { FileLogWriter: { write: (_line) => undefined } };
78
+ });
79
+ };
80
+ const shouldLogToFile = () => {
81
+ // Prefer dynamic lookup so late-bound env (tests, some runtimes) is respected.
82
+ if (!Env.getBool('LOG_TO_FILE', false))
83
+ return false;
84
+ if (typeof process === 'undefined')
85
+ return false;
86
+ return true;
87
+ };
88
+ const buildFileLine = (params) => {
89
+ if (isJsonFormat(getLogFormat()))
90
+ return params.formatted;
91
+ let line = params.formatted;
92
+ if (typeof params.errorMessage === 'string' && params.errorMessage.length > 0) {
93
+ line = `${line} ${params.errorMessage}`;
94
+ }
95
+ else if (params.data !== undefined && params.data !== '') {
96
+ line = `${line} ${safeStringify(redactSensitiveData(params.data))}`;
97
+ }
98
+ return line;
99
+ };
100
+ const writeToFile = (line) => {
101
+ if (!shouldLogToFile())
102
+ return;
103
+ if (fileWriter !== undefined) {
104
+ fileWriter.write(line);
105
+ return;
106
+ }
107
+ getFileWriter();
108
+ fileWriterPromise?.then((mod) => mod.FileLogWriter.write(line));
109
+ };
110
+ const formatLogMessage = (params) => {
111
+ if (isJsonFormat(getLogFormat())) {
112
+ return safeStringify({
113
+ timestamp: new Date().toISOString(),
114
+ level: params.level,
115
+ message: params.message,
116
+ category: params.category,
117
+ data: redactSensitiveData(params.data),
118
+ error: params.errorMessage,
119
+ });
120
+ }
121
+ // text format
122
+ return `[${params.level.toUpperCase()}] ${params.message}`;
123
+ };
9
124
  /**
10
125
  * Helper to extract error message from unknown error type
11
126
  */
@@ -16,33 +131,162 @@ const getErrorMessage = (error) => {
16
131
  if (error instanceof Error) {
17
132
  return error.message;
18
133
  }
19
- return String(error);
134
+ if (typeof error === 'string')
135
+ return error;
136
+ if (typeof error === 'number' || typeof error === 'bigint')
137
+ return error.toString();
138
+ if (typeof error === 'boolean')
139
+ return error ? 'true' : 'false';
140
+ if (typeof error === 'symbol')
141
+ return error.toString();
142
+ if (typeof error === 'function')
143
+ return '[Function]';
144
+ try {
145
+ return safeStringify(error);
146
+ }
147
+ catch {
148
+ return '[Unserializable error]';
149
+ }
150
+ };
151
+ const emitCloudLogs = (event) => {
152
+ // Lazy-load to avoid cycles and avoid cost when disabled.
153
+ void (async () => {
154
+ try {
155
+ if (event.level === 'error' || event.level === 'fatal') {
156
+ const mod = await import('./logging/KvLogger');
157
+ void mod.KvLogger.enqueue(event);
158
+ }
159
+ }
160
+ catch {
161
+ // best-effort
162
+ }
163
+ try {
164
+ if (event.level === 'warn' || event.level === 'error' || event.level === 'fatal') {
165
+ const mod = await import('./logging/SlackLogger');
166
+ void mod.SlackLogger.enqueue(event);
167
+ }
168
+ }
169
+ catch {
170
+ // best-effort
171
+ }
172
+ try {
173
+ const mod = await import('./logging/HttpLogger');
174
+ void mod.HttpLogger.enqueue(event);
175
+ }
176
+ catch {
177
+ // best-effort
178
+ }
179
+ })();
20
180
  };
21
181
  // Private helper functions
22
182
  const logDebug = (message, data, category) => {
23
183
  String(category);
24
- if (isDevelopment) {
25
- console.debug(`[DEBUG] ${message}`, data ?? ''); // eslint-disable-line no-console
184
+ if (isDevelopment()) {
185
+ const timestamp = new Date().toISOString();
186
+ const out = formatLogMessage({ level: 'debug', message, data, category });
187
+ writeToFile(buildFileLine({ formatted: out, data }));
188
+ if (isJsonFormat(getLogFormat())) {
189
+ console.debug(out); // eslint-disable-line no-console
190
+ return;
191
+ }
192
+ console.debug(out, data ?? ''); // eslint-disable-line no-console
193
+ emitCloudLogs({
194
+ timestamp,
195
+ level: 'debug',
196
+ message,
197
+ category,
198
+ data: redactSensitiveData(data),
199
+ });
26
200
  }
27
201
  };
28
202
  const logInfo = (message, data, category) => {
29
203
  String(category);
30
- console.log(`[INFO] ${message}`, data ?? ''); // eslint-disable-line no-console
204
+ const timestamp = new Date().toISOString();
205
+ const out = formatLogMessage({ level: 'info', message, data, category });
206
+ writeToFile(buildFileLine({ formatted: out, data }));
207
+ if (isJsonFormat(getLogFormat())) {
208
+ console.log(out); // eslint-disable-line no-console
209
+ }
210
+ else {
211
+ console.log(out, data ?? ''); // eslint-disable-line no-console
212
+ }
213
+ emitCloudLogs({
214
+ timestamp,
215
+ level: 'info',
216
+ message,
217
+ category,
218
+ data: redactSensitiveData(data),
219
+ });
31
220
  };
32
221
  const logWarn = (message, data, category) => {
33
222
  String(category);
34
- console.warn(`[WARN] ${message}`, data ?? ''); // eslint-disable-line no-console
223
+ const timestamp = new Date().toISOString();
224
+ const out = formatLogMessage({ level: 'warn', message, data, category });
225
+ writeToFile(buildFileLine({ formatted: out, data }));
226
+ if (isJsonFormat(getLogFormat())) {
227
+ console.warn(out); // eslint-disable-line no-console
228
+ }
229
+ else {
230
+ console.warn(out, data ?? ''); // eslint-disable-line no-console
231
+ }
232
+ emitCloudLogs({
233
+ timestamp,
234
+ level: 'warn',
235
+ message,
236
+ category,
237
+ data: redactSensitiveData(data),
238
+ });
35
239
  };
36
240
  const logError = (message, error, category) => {
37
241
  const errorMessage = getErrorMessage(error);
38
242
  String(category);
39
- console.error(`[ERROR] ${message}`, errorMessage); // eslint-disable-line no-console
243
+ const timestamp = new Date().toISOString();
244
+ const out = formatLogMessage({
245
+ level: 'error',
246
+ message,
247
+ category,
248
+ errorMessage,
249
+ });
250
+ writeToFile(buildFileLine({ formatted: out, errorMessage }));
251
+ if (isJsonFormat(getLogFormat())) {
252
+ console.error(out); // eslint-disable-line no-console
253
+ }
254
+ else {
255
+ console.error(out, errorMessage); // eslint-disable-line no-console
256
+ }
257
+ emitCloudLogs({
258
+ timestamp,
259
+ level: 'error',
260
+ message,
261
+ category,
262
+ error: errorMessage,
263
+ });
40
264
  };
41
265
  const logFatal = (message, error, category) => {
42
266
  const errorMessage = getErrorMessage(error);
43
267
  String(category);
44
- console.error(`[FATAL] ${message}`, errorMessage); // eslint-disable-line no-console
45
- if (isProduction && typeof process !== 'undefined') {
268
+ const timestamp = new Date().toISOString();
269
+ const out = formatLogMessage({
270
+ level: 'fatal',
271
+ message,
272
+ category,
273
+ errorMessage,
274
+ });
275
+ writeToFile(buildFileLine({ formatted: out, errorMessage }));
276
+ if (isJsonFormat(getLogFormat())) {
277
+ console.error(out); // eslint-disable-line no-console
278
+ }
279
+ else {
280
+ console.error(out, errorMessage); // eslint-disable-line no-console
281
+ }
282
+ emitCloudLogs({
283
+ timestamp,
284
+ level: 'fatal',
285
+ message,
286
+ category,
287
+ error: errorMessage,
288
+ });
289
+ if (isProduction() && typeof process !== 'undefined') {
46
290
  process.exit(1);
47
291
  }
48
292
  };
@@ -65,13 +309,28 @@ const createLoggerScope = (scope) => {
65
309
  },
66
310
  };
67
311
  };
68
- // Sealed namespace with all logger functionality
312
+ // Expose log cleanup API and sealed namespace with all logger functionality
313
+ export const cleanLogsOnce = async () => {
314
+ if (!shouldLogToFile())
315
+ return [];
316
+ try {
317
+ const mod = await import('./FileLogWriter');
318
+ const deleted = mod.cleanOnce();
319
+ logInfo('Log cleanup executed', { deletedCount: deleted.length });
320
+ return deleted;
321
+ }
322
+ catch (err) {
323
+ logError('Log cleanup failed', err);
324
+ return [];
325
+ }
326
+ };
69
327
  export const Logger = Object.freeze({
70
328
  debug: logDebug,
71
329
  info: logInfo,
72
330
  warn: logWarn,
73
331
  error: logError,
74
332
  fatal: logFatal,
333
+ cleanLogsOnce,
75
334
  scope: createLoggerScope,
76
335
  });
77
336
  export default Logger;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * HTTP Endpoint Logger
3
+ * Sends logs to an external HTTP logging service.
4
+ *
5
+ * Enabled via env:
6
+ * - HTTP_LOG_ENABLED (default: false)
7
+ * - HTTP_LOG_ENDPOINT_URL
8
+ * - HTTP_LOG_BATCH_SIZE (default: 50)
9
+ * - HTTP_LOG_AUTH_TOKEN (optional)
10
+ */
11
+ export type HttpLogEvent = {
12
+ timestamp: string;
13
+ level: 'debug' | 'info' | 'warn' | 'error' | 'fatal';
14
+ message: string;
15
+ category?: string;
16
+ data?: unknown;
17
+ error?: string;
18
+ };
19
+ export declare const HttpLogger: Readonly<{
20
+ enqueue(event: HttpLogEvent): Promise<void>;
21
+ }>;
22
+ export default HttpLogger;
23
+ //# sourceMappingURL=HttpLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpLogger.d.ts","sourceRoot":"","sources":["../../../../src/config/logging/HttpLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAkFF,eAAO,MAAM,UAAU;mBACA,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;EAYjD,CAAC;AAEH,eAAe,UAAU,CAAC"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * HTTP Endpoint Logger
3
+ * Sends logs to an external HTTP logging service.
4
+ *
5
+ * Enabled via env:
6
+ * - HTTP_LOG_ENABLED (default: false)
7
+ * - HTTP_LOG_ENDPOINT_URL
8
+ * - HTTP_LOG_BATCH_SIZE (default: 50)
9
+ * - HTTP_LOG_AUTH_TOKEN (optional)
10
+ */
11
+ import { delay } from '../../common/index';
12
+ import { Env } from '../env';
13
+ import { ErrorFactory } from '../../exceptions/ZintrustError';
14
+ import { HttpClient } from '../../tools/http/Http';
15
+ const isEnabled = () => Env.getBool('HTTP_LOG_ENABLED', false);
16
+ let buffer = [];
17
+ let flushPromise;
18
+ const postBatch = async (events) => {
19
+ const endpoint = Env.get('HTTP_LOG_ENDPOINT_URL').trim();
20
+ if (endpoint.length === 0) {
21
+ throw ErrorFactory.createConfigError('HTTP_LOG_ENDPOINT_URL is required when HTTP logging is enabled');
22
+ }
23
+ const token = Env.get('HTTP_LOG_AUTH_TOKEN').trim();
24
+ const builder = HttpClient.post(endpoint, {
25
+ sentAt: new Date().toISOString(),
26
+ count: events.length,
27
+ events,
28
+ });
29
+ if (token.length > 0) {
30
+ builder.withAuth(token, 'Bearer');
31
+ }
32
+ await builder.send();
33
+ };
34
+ const flushNow = async () => {
35
+ const toSend = buffer;
36
+ buffer = [];
37
+ if (!isEnabled())
38
+ return;
39
+ if (toSend.length === 0)
40
+ return;
41
+ const maxRetries = 3;
42
+ const attemptPost = async (attempt) => {
43
+ try {
44
+ await postBatch(toSend);
45
+ }
46
+ catch {
47
+ if (attempt >= maxRetries)
48
+ return;
49
+ const backoffMs = 100 * 2 ** attempt;
50
+ await delay(backoffMs);
51
+ await attemptPost(attempt + 1);
52
+ }
53
+ };
54
+ await attemptPost(0);
55
+ };
56
+ const scheduleFlush = async () => {
57
+ if (flushPromise !== undefined)
58
+ return flushPromise;
59
+ const promise = new Promise((resolve) => {
60
+ const run = async () => {
61
+ try {
62
+ await flushNow();
63
+ }
64
+ finally {
65
+ resolve(undefined);
66
+ }
67
+ };
68
+ if (typeof globalThis.setTimeout !== 'function') {
69
+ void run();
70
+ return;
71
+ }
72
+ globalThis.setTimeout(() => {
73
+ void run();
74
+ }, 0);
75
+ });
76
+ flushPromise = promise.finally(() => {
77
+ flushPromise = undefined;
78
+ });
79
+ return flushPromise;
80
+ };
81
+ export const HttpLogger = Object.freeze({
82
+ async enqueue(event) {
83
+ if (!isEnabled())
84
+ return Promise.resolve(); // NOSONAR
85
+ buffer.push(event);
86
+ const batchSize = Math.max(1, Env.getInt('HTTP_LOG_BATCH_SIZE', 50));
87
+ if (buffer.length >= batchSize) {
88
+ return scheduleFlush();
89
+ }
90
+ return scheduleFlush();
91
+ },
92
+ });
93
+ export default HttpLogger;