@zintrust/core 0.4.27 → 0.4.28

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 (469) hide show
  1. package/app/Controllers/AuthController.d.ts +10 -0
  2. package/app/Controllers/AuthController.d.ts.map +1 -0
  3. package/app/Controllers/AuthController.js +233 -0
  4. package/app/Controllers/TestController.d.ts +22 -0
  5. package/app/Controllers/TestController.d.ts.map +1 -0
  6. package/app/Controllers/TestController.js +188 -0
  7. package/app/Controllers/UserController.d.ts +9 -0
  8. package/app/Controllers/UserController.d.ts.map +1 -0
  9. package/app/Controllers/UserController.js +8 -0
  10. package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
  11. package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
  12. package/app/Controllers/UserQueryBuilderController.js +404 -0
  13. package/app/Jobs/AdvancedEmailJobService.d.ts +57 -0
  14. package/app/Jobs/AdvancedEmailJobService.d.ts.map +1 -0
  15. package/app/Jobs/AdvancedEmailJobService.js +185 -0
  16. package/app/Jobs/EmailJobService.d.ts +33 -0
  17. package/app/Jobs/EmailJobService.d.ts.map +1 -0
  18. package/app/Jobs/EmailJobService.js +113 -0
  19. package/app/Middleware/AuthFailureResponder.d.ts +3 -0
  20. package/app/Middleware/AuthFailureResponder.d.ts.map +1 -0
  21. package/app/Middleware/AuthFailureResponder.js +8 -0
  22. package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
  23. package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
  24. package/app/Middleware/ProfilerMiddleware.js +47 -0
  25. package/app/Middleware/index.d.ts +59 -0
  26. package/app/Middleware/index.d.ts.map +1 -0
  27. package/app/Middleware/index.js +216 -0
  28. package/app/Models/Post.d.ts +14 -0
  29. package/app/Models/Post.d.ts.map +1 -0
  30. package/app/Models/Post.js +27 -0
  31. package/app/Models/User.d.ts +14 -0
  32. package/app/Models/User.d.ts.map +1 -0
  33. package/app/Models/User.js +44 -0
  34. package/app/Schedules/JobTracking.d.ts +3 -0
  35. package/app/Schedules/JobTracking.d.ts.map +1 -0
  36. package/app/Schedules/JobTracking.js +13 -0
  37. package/app/Schedules/index.d.ts +2 -0
  38. package/app/Schedules/index.d.ts.map +1 -0
  39. package/app/Schedules/index.js +1 -0
  40. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
  41. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
  42. package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
  43. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
  44. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
  45. package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
  46. package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
  47. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
  48. package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
  49. package/app/Toolkit/Notification/sendSms.d.ts +6 -0
  50. package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
  51. package/app/Toolkit/Notification/sendSms.js +5 -0
  52. package/app/Types/controller.d.ts +44 -0
  53. package/app/Types/controller.d.ts.map +1 -0
  54. package/app/Types/controller.js +1 -0
  55. package/app/Workers/AdvancEmailWorker.d.ts +44 -0
  56. package/app/Workers/AdvancEmailWorker.d.ts.map +1 -0
  57. package/app/Workers/AdvancEmailWorker.js +192 -0
  58. package/app/Workers/EmailWorker.d.ts +39 -0
  59. package/app/Workers/EmailWorker.d.ts.map +1 -0
  60. package/app/Workers/EmailWorker.js +199 -0
  61. package/app/Workers/TestWorker.d.ts +16 -0
  62. package/app/Workers/TestWorker.d.ts.map +1 -0
  63. package/app/Workers/TestWorker.js +153 -0
  64. package/bin/z.js +0 -0
  65. package/bin/zin.js +0 -0
  66. package/bin/zintrust.js +0 -0
  67. package/bin/zt.js +0 -0
  68. package/build-manifest.json +6410 -0
  69. package/config/broadcast.d.ts +38 -0
  70. package/config/broadcast.d.ts.map +1 -0
  71. package/config/broadcast.js +37 -0
  72. package/config/cache.d.ts +40 -0
  73. package/config/cache.d.ts.map +1 -0
  74. package/config/cache.js +39 -0
  75. package/config/database.d.ts +58 -0
  76. package/config/database.d.ts.map +1 -0
  77. package/config/database.js +65 -0
  78. package/config/mail.d.ts +51 -0
  79. package/config/mail.d.ts.map +1 -0
  80. package/config/mail.js +69 -0
  81. package/config/middleware.d.ts +21 -0
  82. package/config/middleware.d.ts.map +1 -0
  83. package/config/middleware.js +61 -0
  84. package/config/notification.d.ts +33 -0
  85. package/config/notification.d.ts.map +1 -0
  86. package/config/notification.js +33 -0
  87. package/config/queue.d.ts +55 -0
  88. package/config/queue.d.ts.map +1 -0
  89. package/config/queue.js +87 -0
  90. package/config/storage.d.ts +59 -0
  91. package/config/storage.d.ts.map +1 -0
  92. package/config/storage.js +59 -0
  93. package/config/workers.d.ts +54 -0
  94. package/config/workers.d.ts.map +1 -0
  95. package/config/workers.js +83 -0
  96. package/database/factories/UserFactory.d.ts +40 -0
  97. package/database/factories/UserFactory.d.ts.map +1 -0
  98. package/database/factories/UserFactory.js +99 -0
  99. package/database/migrations/20260109074544_create_users_table.d.ts +7 -0
  100. package/database/migrations/20260109074544_create_users_table.d.ts.map +1 -0
  101. package/database/migrations/20260109074544_create_users_table.js +21 -0
  102. package/database/migrations/20260109144731_create_tasks_table.d.ts +7 -0
  103. package/database/migrations/20260109144731_create_tasks_table.d.ts.map +1 -0
  104. package/database/migrations/20260109144731_create_tasks_table.js +19 -0
  105. package/database/migrations/20260109144735_add_done_tasks_table.d.ts +11 -0
  106. package/database/migrations/20260109144735_add_done_tasks_table.d.ts.map +1 -0
  107. package/database/migrations/20260109144735_add_done_tasks_table.js +25 -0
  108. package/database/migrations/20260109150837_add_start_tasks_table.d.ts +11 -0
  109. package/database/migrations/20260109150837_add_start_tasks_table.d.ts.map +1 -0
  110. package/database/migrations/20260109150837_add_start_tasks_table.js +22 -0
  111. package/database/migrations/20260109152114_add_way_tasks_table.d.ts +11 -0
  112. package/database/migrations/20260109152114_add_way_tasks_table.d.ts.map +1 -0
  113. package/database/migrations/20260109152114_add_way_tasks_table.js +22 -0
  114. package/database/migrations/20260218121500_create_jwt_revocations_table.d.ts +7 -0
  115. package/database/migrations/20260218121500_create_jwt_revocations_table.d.ts.map +1 -0
  116. package/database/migrations/20260218121500_create_jwt_revocations_table.js +22 -0
  117. package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.d.ts +11 -0
  118. package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.d.ts.map +1 -0
  119. package/database/migrations/20260222120000_add_kind_to_jwt_revocations_table.js +20 -0
  120. package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.d.ts +11 -0
  121. package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.d.ts.map +1 -0
  122. package/database/migrations/20260222123000_add_user_id_to_jwt_revocations_table.js +20 -0
  123. package/database/migrations/20260327112651_create_posts_table.d.ts +11 -0
  124. package/database/migrations/20260327112651_create_posts_table.d.ts.map +1 -0
  125. package/database/migrations/20260327112651_create_posts_table.js +24 -0
  126. package/database/seeders/DatabaseSeeder.d.ts +5 -0
  127. package/database/seeders/DatabaseSeeder.d.ts.map +1 -0
  128. package/database/seeders/DatabaseSeeder.js +15 -0
  129. package/database/seeders/UserSeeder.d.ts +30 -0
  130. package/database/seeders/UserSeeder.d.ts.map +1 -0
  131. package/database/seeders/UserSeeder.js +97 -0
  132. package/index.d.ts +1 -0
  133. package/index.js +1 -0
  134. package/package.json +26 -77
  135. package/packages/cache-redis/src/RedisProxyAdapter.d.ts +6 -0
  136. package/packages/cache-redis/src/RedisProxyAdapter.d.ts.map +1 -0
  137. package/packages/cache-redis/src/RedisProxyAdapter.js +144 -0
  138. package/packages/cache-redis/src/index.d.ts +27 -0
  139. package/packages/cache-redis/src/index.d.ts.map +1 -0
  140. package/packages/cache-redis/src/index.js +153 -0
  141. package/packages/db-d1/src/index.d.ts +55 -0
  142. package/packages/db-d1/src/index.d.ts.map +1 -0
  143. package/packages/db-d1/src/index.js +118 -0
  144. package/packages/db-d1/src/register.d.ts +6 -0
  145. package/packages/db-d1/src/register.d.ts.map +1 -0
  146. package/packages/db-d1/src/register.js +8 -0
  147. package/packages/db-mysql/src/common.d.ts +7 -0
  148. package/packages/db-mysql/src/common.d.ts.map +1 -0
  149. package/packages/db-mysql/src/common.js +17 -0
  150. package/packages/db-mysql/src/index.d.ts +43 -0
  151. package/packages/db-mysql/src/index.d.ts.map +1 -0
  152. package/packages/db-mysql/src/index.js +265 -0
  153. package/packages/db-mysql/src/register.d.ts +6 -0
  154. package/packages/db-mysql/src/register.d.ts.map +1 -0
  155. package/packages/db-mysql/src/register.js +32 -0
  156. package/packages/db-postgres/src/index.d.ts +39 -0
  157. package/packages/db-postgres/src/index.d.ts.map +1 -0
  158. package/packages/db-postgres/src/index.js +179 -0
  159. package/packages/db-postgres/src/register.d.ts +6 -0
  160. package/packages/db-postgres/src/register.d.ts.map +1 -0
  161. package/packages/db-postgres/src/register.js +8 -0
  162. package/packages/db-sqlite/src/index.d.ts +9 -0
  163. package/packages/db-sqlite/src/index.d.ts.map +1 -0
  164. package/packages/db-sqlite/src/index.js +7 -0
  165. package/packages/db-sqlite/src/register.d.ts +6 -0
  166. package/packages/db-sqlite/src/register.d.ts.map +1 -0
  167. package/packages/db-sqlite/src/register.js +8 -0
  168. package/packages/db-sqlserver/src/index.d.ts +38 -0
  169. package/packages/db-sqlserver/src/index.d.ts.map +1 -0
  170. package/packages/db-sqlserver/src/index.js +73 -0
  171. package/packages/db-sqlserver/src/register.d.ts +6 -0
  172. package/packages/db-sqlserver/src/register.d.ts.map +1 -0
  173. package/packages/db-sqlserver/src/register.js +21 -0
  174. package/packages/mail-sendgrid/src/register.d.ts +6 -0
  175. package/packages/mail-sendgrid/src/register.d.ts.map +1 -0
  176. package/packages/mail-sendgrid/src/register.js +24 -0
  177. package/packages/mail-smtp/src/register.d.ts +6 -0
  178. package/packages/mail-smtp/src/register.d.ts.map +1 -0
  179. package/packages/mail-smtp/src/register.js +29 -0
  180. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
  181. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
  182. package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
  183. package/packages/queue-monitor/src/connection.d.ts +3 -0
  184. package/packages/queue-monitor/src/connection.d.ts.map +1 -0
  185. package/packages/queue-monitor/src/connection.js +1 -0
  186. package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
  187. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
  188. package/packages/queue-monitor/src/dashboard-ui.js +997 -0
  189. package/packages/queue-monitor/src/driver.d.ts +15 -0
  190. package/packages/queue-monitor/src/driver.d.ts.map +1 -0
  191. package/packages/queue-monitor/src/driver.js +115 -0
  192. package/packages/queue-monitor/src/index.d.ts +71 -0
  193. package/packages/queue-monitor/src/index.d.ts.map +1 -0
  194. package/packages/queue-monitor/src/index.js +296 -0
  195. package/packages/queue-monitor/src/metrics.d.ts +27 -0
  196. package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
  197. package/packages/queue-monitor/src/metrics.js +92 -0
  198. package/packages/queue-monitor/src/worker.d.ts +8 -0
  199. package/packages/queue-monitor/src/worker.d.ts.map +1 -0
  200. package/packages/queue-monitor/src/worker.js +35 -0
  201. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
  202. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
  203. package/packages/queue-redis/src/BullMQRedisQueue.js +465 -0
  204. package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
  205. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
  206. package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
  207. package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
  208. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
  209. package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
  210. package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
  211. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
  212. package/packages/queue-redis/src/RedisPublishClient.js +251 -0
  213. package/packages/queue-redis/src/index.d.ts +12 -0
  214. package/packages/queue-redis/src/index.d.ts.map +1 -0
  215. package/packages/queue-redis/src/index.js +10 -0
  216. package/packages/queue-redis/src/register.d.ts +6 -0
  217. package/packages/queue-redis/src/register.d.ts.map +1 -0
  218. package/packages/queue-redis/src/register.js +21 -0
  219. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
  220. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
  221. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
  222. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
  223. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
  224. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
  225. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
  226. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
  227. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
  228. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
  229. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
  230. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
  231. package/packages/workers/src/AnomalyDetection.d.ts +107 -0
  232. package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
  233. package/packages/workers/src/AnomalyDetection.js +329 -0
  234. package/packages/workers/src/AutoScaler.d.ts +128 -0
  235. package/packages/workers/src/AutoScaler.d.ts.map +1 -0
  236. package/packages/workers/src/AutoScaler.js +425 -0
  237. package/packages/workers/src/BroadcastWorker.d.ts +29 -0
  238. package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
  239. package/packages/workers/src/BroadcastWorker.js +24 -0
  240. package/packages/workers/src/CanaryController.d.ts +104 -0
  241. package/packages/workers/src/CanaryController.d.ts.map +1 -0
  242. package/packages/workers/src/CanaryController.js +424 -0
  243. package/packages/workers/src/ChaosEngineering.d.ts +80 -0
  244. package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
  245. package/packages/workers/src/ChaosEngineering.js +229 -0
  246. package/packages/workers/src/CircuitBreaker.d.ts +107 -0
  247. package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
  248. package/packages/workers/src/CircuitBreaker.js +374 -0
  249. package/packages/workers/src/ClusterLock.d.ts +91 -0
  250. package/packages/workers/src/ClusterLock.d.ts.map +1 -0
  251. package/packages/workers/src/ClusterLock.js +397 -0
  252. package/packages/workers/src/ComplianceManager.d.ts +178 -0
  253. package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
  254. package/packages/workers/src/ComplianceManager.js +556 -0
  255. package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
  256. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
  257. package/packages/workers/src/DatacenterOrchestrator.js +404 -0
  258. package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
  259. package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
  260. package/packages/workers/src/DeadLetterQueue.js +544 -0
  261. package/packages/workers/src/HealthMonitor.d.ts +43 -0
  262. package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
  263. package/packages/workers/src/HealthMonitor.js +312 -0
  264. package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
  265. package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
  266. package/packages/workers/src/MultiQueueWorker.js +282 -0
  267. package/packages/workers/src/NotificationWorker.d.ts +29 -0
  268. package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
  269. package/packages/workers/src/NotificationWorker.js +23 -0
  270. package/packages/workers/src/Observability.d.ts +154 -0
  271. package/packages/workers/src/Observability.d.ts.map +1 -0
  272. package/packages/workers/src/Observability.js +538 -0
  273. package/packages/workers/src/PluginManager.d.ts +124 -0
  274. package/packages/workers/src/PluginManager.d.ts.map +1 -0
  275. package/packages/workers/src/PluginManager.js +392 -0
  276. package/packages/workers/src/PriorityQueue.d.ts +118 -0
  277. package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
  278. package/packages/workers/src/PriorityQueue.js +276 -0
  279. package/packages/workers/src/ResourceMonitor.d.ts +165 -0
  280. package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
  281. package/packages/workers/src/ResourceMonitor.js +632 -0
  282. package/packages/workers/src/SLAMonitor.d.ts +111 -0
  283. package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
  284. package/packages/workers/src/SLAMonitor.js +274 -0
  285. package/packages/workers/src/WorkerFactory.d.ts +226 -0
  286. package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
  287. package/packages/workers/src/WorkerFactory.js +2551 -0
  288. package/packages/workers/src/WorkerInit.d.ts +103 -0
  289. package/packages/workers/src/WorkerInit.d.ts.map +1 -0
  290. package/packages/workers/src/WorkerInit.js +359 -0
  291. package/packages/workers/src/WorkerMetrics.d.ts +116 -0
  292. package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
  293. package/packages/workers/src/WorkerMetrics.js +570 -0
  294. package/packages/workers/src/WorkerRegistry.d.ts +152 -0
  295. package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
  296. package/packages/workers/src/WorkerRegistry.js +396 -0
  297. package/packages/workers/src/WorkerShutdown.d.ts +70 -0
  298. package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
  299. package/packages/workers/src/WorkerShutdown.js +185 -0
  300. package/packages/workers/src/WorkerVersioning.d.ts +108 -0
  301. package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
  302. package/packages/workers/src/WorkerVersioning.js +300 -0
  303. package/packages/workers/src/config/workerConfig.d.ts +5 -0
  304. package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
  305. package/packages/workers/src/config/workerConfig.js +25 -0
  306. package/packages/workers/src/createQueueWorker.d.ts +31 -0
  307. package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
  308. package/packages/workers/src/createQueueWorker.js +382 -0
  309. package/packages/workers/src/dashboard/index.d.ts +2 -0
  310. package/packages/workers/src/dashboard/index.d.ts.map +1 -0
  311. package/packages/workers/src/dashboard/index.js +1 -0
  312. package/packages/workers/src/dashboard/types.d.ts +123 -0
  313. package/packages/workers/src/dashboard/types.d.ts.map +1 -0
  314. package/packages/workers/src/dashboard/types.js +1 -0
  315. package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
  316. package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
  317. package/packages/workers/src/dashboard/workers-api.js +776 -0
  318. package/packages/workers/src/helper/index.d.ts +6 -0
  319. package/packages/workers/src/helper/index.d.ts.map +1 -0
  320. package/packages/workers/src/helper/index.js +10 -0
  321. package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
  322. package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
  323. package/packages/workers/src/http/WorkerApiController.js +313 -0
  324. package/packages/workers/src/http/WorkerController.d.ts +375 -0
  325. package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
  326. package/packages/workers/src/http/WorkerController.js +1454 -0
  327. package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
  328. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
  329. package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
  330. package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
  331. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
  332. package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
  333. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
  334. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
  335. package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
  336. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
  337. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
  338. package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
  339. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
  340. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
  341. package/packages/workers/src/http/middleware/FeaturesValidator.js +61 -0
  342. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
  343. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
  344. package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
  345. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
  346. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
  347. package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
  348. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
  349. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
  350. package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
  351. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
  352. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
  353. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
  354. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
  355. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
  356. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
  357. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
  358. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
  359. package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
  360. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
  361. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
  362. package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
  363. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
  364. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
  365. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
  366. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
  367. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
  368. package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
  369. package/packages/workers/src/index.d.ts +47 -0
  370. package/packages/workers/src/index.d.ts.map +1 -0
  371. package/packages/workers/src/index.js +48 -0
  372. package/packages/workers/src/register.d.ts +10 -0
  373. package/packages/workers/src/register.d.ts.map +1 -0
  374. package/packages/workers/src/register.js +43 -0
  375. package/packages/workers/src/routes/workers.d.ts +13 -0
  376. package/packages/workers/src/routes/workers.d.ts.map +1 -0
  377. package/packages/workers/src/routes/workers.js +126 -0
  378. package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
  379. package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
  380. package/packages/workers/src/storage/WorkerStore.js +259 -0
  381. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
  382. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
  383. package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
  384. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
  385. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
  386. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
  387. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
  388. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
  389. package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
  390. package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
  391. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
  392. package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
  393. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
  394. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
  395. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
  396. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
  397. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
  398. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
  399. package/packages/workers/src/telemetry/index.d.ts +16 -0
  400. package/packages/workers/src/telemetry/index.d.ts.map +1 -0
  401. package/packages/workers/src/telemetry/index.js +60 -0
  402. package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
  403. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
  404. package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
  405. package/packages/workers/src/type.d.ts +77 -0
  406. package/packages/workers/src/type.d.ts.map +1 -0
  407. package/packages/workers/src/type.js +1 -0
  408. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
  409. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
  410. package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
  411. package/packages/workers/src/ui/router/ui.d.ts +4 -0
  412. package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
  413. package/packages/workers/src/ui/router/ui.js +208 -0
  414. package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
  415. package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
  416. package/packages/workers/src/ui/types/worker-ui.js +5 -0
  417. package/routes/DirectTestRoutes.d.ts +25 -0
  418. package/routes/DirectTestRoutes.d.ts.map +1 -0
  419. package/routes/DirectTestRoutes.js +480 -0
  420. package/routes/TestRoutes.d.ts +11 -0
  421. package/routes/TestRoutes.d.ts.map +1 -0
  422. package/routes/TestRoutes.js +25 -0
  423. package/routes/api.d.ts +7 -0
  424. package/routes/api.d.ts.map +1 -0
  425. package/routes/api.js +136 -0
  426. package/routes/apiDev.d.ts +7 -0
  427. package/routes/apiDev.d.ts.map +1 -0
  428. package/routes/apiDev.js +92 -0
  429. package/routes/broadcast.d.ts +9 -0
  430. package/routes/broadcast.d.ts.map +1 -0
  431. package/routes/broadcast.js +27 -0
  432. package/routes/mail.d.ts +12 -0
  433. package/routes/mail.d.ts.map +1 -0
  434. package/routes/mail.js +138 -0
  435. package/routes/storage.d.ts +4 -0
  436. package/routes/storage.d.ts.map +1 -0
  437. package/routes/storage.js +35 -0
  438. package/src/cli/CLI.d.ts.map +1 -1
  439. package/src/cli/CLI.js +4 -0
  440. package/src/cli/commands/D1ProxyCommand.d.ts +6 -0
  441. package/src/cli/commands/D1ProxyCommand.d.ts.map +1 -0
  442. package/src/cli/commands/D1ProxyCommand.js +170 -0
  443. package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
  444. package/src/cli/commands/InitContainerCommand.js +9 -96
  445. package/src/cli/commands/KvProxyCommand.d.ts +6 -0
  446. package/src/cli/commands/KvProxyCommand.d.ts.map +1 -0
  447. package/src/cli/commands/KvProxyCommand.js +158 -0
  448. package/src/cli/commands/ProxyCommand.d.ts.map +1 -1
  449. package/src/cli/commands/ProxyCommand.js +2 -0
  450. package/src/cli/commands/index.d.ts +2 -0
  451. package/src/cli/commands/index.d.ts.map +1 -1
  452. package/src/cli/commands/index.js +2 -0
  453. package/src/cli/index.d.ts +2 -0
  454. package/src/cli/index.d.ts.map +1 -1
  455. package/src/cli/index.js +2 -0
  456. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -1
  457. package/src/cli/scaffolding/GovernanceScaffolder.js +20 -3
  458. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  459. package/src/cli/scaffolding/ProjectScaffolder.js +13 -4
  460. package/src/cli/utils/DistPackager.d.ts +2 -2
  461. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  462. package/src/cli/utils/DistPackager.js +9 -3
  463. package/src/index.js +3 -3
  464. package/src/proxy.d.ts +2 -0
  465. package/src/proxy.d.ts.map +1 -1
  466. package/src/proxy.js +2 -0
  467. package/src/templates/project/basic/package.json.tpl +1 -1
  468. package/start.d.ts +1 -0
  469. package/start.js +1 -0
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Example Routes
3
+ * Demonstrates routing patterns
4
+ */
5
+ // import { MultiLoginController } from '@app/Controllers/MultiLoginController';
6
+ import { Router } from '../src/routes/Router.js';
7
+ import { registerMailUiPag } from './mail.js';
8
+ import registerDirectMysqlTestRoutes from './TestRoutes.js';
9
+ import { JobStateTracker } from '../src/index.js';
10
+ const trackerStatuses = new Set([
11
+ 'pending',
12
+ 'active',
13
+ 'completed',
14
+ 'failed',
15
+ 'stalled',
16
+ 'timeout',
17
+ 'pending_recovery',
18
+ 'dead_letter',
19
+ 'manual_review',
20
+ 'delayed',
21
+ ]);
22
+ const getQueryValue = (req, key) => {
23
+ const raw = req.getQueryParam(key);
24
+ if (Array.isArray(raw)) {
25
+ return raw.length > 0 ? String(raw[0]) : undefined;
26
+ }
27
+ if (typeof raw === 'string')
28
+ return raw;
29
+ return undefined;
30
+ };
31
+ const parseLimit = (value) => {
32
+ if (value === undefined || value.trim().length === 0)
33
+ return 200;
34
+ const parsed = Number.parseInt(value, 10);
35
+ if (!Number.isFinite(parsed) || parsed <= 0)
36
+ return 200;
37
+ return Math.min(5000, parsed);
38
+ };
39
+ const normalizeOptional = (value) => {
40
+ if (value === undefined)
41
+ return undefined;
42
+ const trimmed = value.trim();
43
+ if (trimmed.length === 0)
44
+ return undefined;
45
+ return trimmed;
46
+ };
47
+ const parseStatus = (value) => {
48
+ const normalized = normalizeOptional(value);
49
+ if (normalized === undefined)
50
+ return undefined;
51
+ if (!trackerStatuses.has(normalized))
52
+ return undefined;
53
+ return normalized;
54
+ };
55
+ const buildTrackerResponse = (req) => {
56
+ const queueName = normalizeOptional(getQueryValue(req, 'queue'));
57
+ const status = parseStatus(getQueryValue(req, 'status'));
58
+ const jobId = normalizeOptional(getQueryValue(req, 'jobId'));
59
+ const limit = parseLimit(getQueryValue(req, 'limit'));
60
+ const records = JobStateTracker.list({
61
+ queueName,
62
+ status,
63
+ limit,
64
+ });
65
+ const transitions = JobStateTracker.getTransitions({
66
+ queueName,
67
+ jobId,
68
+ limit,
69
+ });
70
+ const processId = typeof process === 'undefined' ? null : process.pid;
71
+ return {
72
+ processId,
73
+ queueName: queueName ?? null,
74
+ status: status ?? null,
75
+ jobId: jobId ?? null,
76
+ limit,
77
+ records,
78
+ transitions,
79
+ summary: JobStateTracker.getSummary(queueName),
80
+ generatedAt: new Date().toISOString(),
81
+ };
82
+ };
83
+ const registerQueueTrackerDebugRoute = (_router) => {
84
+ Router.get(_router, '/_debug/queue/tracker', async (req, res) => {
85
+ res.json(buildTrackerResponse(req));
86
+ });
87
+ };
88
+ export function registerDevRoutes(_router) {
89
+ registerDirectMysqlTestRoutes(_router);
90
+ registerQueueTrackerDebugRoute(_router);
91
+ registerMailUiPag(_router);
92
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Broadcast Routes
3
+ *
4
+ * Runtime-only endpoints for broadcast.
5
+ * Provider setup and secret provisioning remain CLI-only.
6
+ */
7
+ import { type IRouter } from '../src/routes/Router';
8
+ export declare function registerBroadcastRoutes(router: IRouter): void;
9
+ //# sourceMappingURL=broadcast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../routes/broadcast.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,qBAAqB,CAAC;AAE3D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAsB7D"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Broadcast Routes
3
+ *
4
+ * Runtime-only endpoints for broadcast.
5
+ * Provider setup and secret provisioning remain CLI-only.
6
+ */
7
+ import { Router } from '../src/routes/Router.js';
8
+ export function registerBroadcastRoutes(router) {
9
+ Router.get(router, '/broadcast/health', async (_req, res) => {
10
+ res.json({ ok: true });
11
+ });
12
+ Router.post(router, '/broadcast/send', async (req, res) => {
13
+ const body = (req.body ?? {});
14
+ const channel = typeof body['channel'] === 'string' ? body['channel'] : '';
15
+ const event = typeof body['event'] === 'string' ? body['event'] : '';
16
+ const data = body['data'];
17
+ if (!channel || !event) {
18
+ res
19
+ .setStatus(400)
20
+ .json({ ok: false, error: 'Invalid payload: channel and event are required' });
21
+ return;
22
+ }
23
+ const { Broadcast } = await import('../src/tools/broadcast/Broadcast.js');
24
+ const result = await Broadcast.send(channel, event, data);
25
+ res.json({ ok: true, result });
26
+ });
27
+ }
@@ -0,0 +1,12 @@
1
+ import { type IRouter } from '../src/index.js';
2
+ import '../app/Workers/TestWorker';
3
+ export declare const demonstrateDelayScheduling: () => Promise<void>;
4
+ export declare const demonstratePriorityJobOrdering: () => Promise<void>;
5
+ export declare const demonstrateRetryControl: () => Promise<void>;
6
+ export declare const demonstrateDeduplication: () => Promise<void>;
7
+ export declare const demonstrateCustomLockProvider: () => Promise<void>;
8
+ export declare const demonstrateBulkProcessing: () => Promise<void>;
9
+ export declare const demonstrateMetadataTracking: () => Promise<void>;
10
+ export declare const demonstrateCombinedAdvancedOptions: () => Promise<void>;
11
+ export declare const registerMailUiPag: (router: IRouter) => Promise<void>;
12
+ //# sourceMappingURL=mail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../routes/mail.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9D,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,0BAA0B,QAAa,OAAO,CAAC,IAAI,CAU/D,CAAC;AAEF,eAAO,MAAM,8BAA8B,QAAa,OAAO,CAAC,IAAI,CAUnE,CAAC;AAEF,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAS5D,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CA4B7D,CAAC;AAEF,eAAO,MAAM,6BAA6B,QAAa,OAAO,CAAC,IAAI,CA4BlE,CAAC;AAEF,eAAO,MAAM,yBAAyB,QAAa,OAAO,CAAC,IAAI,CAU9D,CAAC;AAEF,eAAO,MAAM,2BAA2B,QAAa,OAAO,CAAC,IAAI,CAehE,CAAC;AAEF,eAAO,MAAM,kCAAkC,QAAa,OAAO,CAAC,IAAI,CAcvE,CAAC;AA4CF,eAAO,MAAM,iBAAiB,GAAU,QAAQ,OAAO,KAAG,OAAO,CAAC,IAAI,CAkDrE,CAAC"}
package/routes/mail.js ADDED
@@ -0,0 +1,138 @@
1
+ /* istanbul ignore file */
2
+ import AdvancedEmailJobService from '../app/Jobs/AdvancedEmailJobService.js';
3
+ import { Mail } from '../src/tools/mail/Mail.js';
4
+ import { Logger, Router } from '../src/index.js';
5
+ // Ensure TestWorker is registered for dashboard visibility
6
+ import '../app/Workers/TestWorker.js';
7
+ export const demonstrateDelayScheduling = async () => {
8
+ // Schedule email for 1 hour from now - job won't process until delay expires
9
+ await AdvancedEmailJobService.sendScheduledLock('scheduled@zintrust.com', 'Meeting Reminder', 'welcome', { meetingTime: '2026-02-01T10:00:00Z' }, 3600000 // 1 hour delay in milliseconds
10
+ );
11
+ // AdvancedEmailJobService.processAll();
12
+ };
13
+ export const demonstratePriorityJobOrdering = async () => {
14
+ // High priority urgent email - processes before lower priority jobs
15
+ await AdvancedEmailJobService.sendHighPriority('urgent@zintrust.com', 'URGENT: System Alert', 'welcome', { alertType: 'critical' }, { priority: 10, attempts: 5 }, // Higher number = higher priority,
16
+ 'advanced-queue-redis');
17
+ };
18
+ export const demonstrateRetryControl = async () => {
19
+ // Email with custom retry attempts and exponential backoff
20
+ await AdvancedEmailJobService.sendHighPriority('retry@zintrust.com', 'Retry Test', 'welcome', { test: 'retry-logic' }, { attempts: 7, delay: 0 } // Will retry 7 times with exponential backoff
21
+ );
22
+ };
23
+ export const demonstrateDeduplication = async () => {
24
+ // Prevents duplicate emails from being sent within 24-hour window
25
+ await AdvancedEmailJobService.sendWithDeduplication('dedup@zintrust.com', 'Welcome Email', 'welcome', { name: 'User' }, 'welcome-user-123', // Same uniqueId = same job
26
+ 'example-redis1');
27
+ await AdvancedEmailJobService.sendWithDeduplication('dedup-2@zintrust.com', 'Weekly Digest', 'welcome', { digest: 'week-1', delay: 300000 }, 'weekly-digest-001', 'example-redis1');
28
+ await AdvancedEmailJobService.sendWithDeduplication('dedup-3@zintrust.com', 'Invoice Ready', 'welcome', { invoiceId: 'inv-8899', delay: 300000 }, 'invoice-inv-8899', 'advanced-queue');
29
+ };
30
+ export const demonstrateCustomLockProvider = async () => {
31
+ // Use custom lock provider (redis/database/memory) for uniqueness
32
+ await AdvancedEmailJobService.sendWithUniqueLock('unique@zintrust.com', 'Password Reset', 'welcome', { token: 'abc123' }, 'redis', // uniqueVia: 'redis' | 'database' | 'memory'
33
+ 'example-redis1');
34
+ await AdvancedEmailJobService.sendWithUniqueLock('unique-2@zintrust.com', 'Email Verification', 'welcome', { token: 'verify-456' }, 'memory', 'advanced-queue');
35
+ await AdvancedEmailJobService.sendWithUniqueLock('unique-3@zintrust.com', 'Account Recovery', 'welcome', { token: 'recover-789' }, 'database', 'example-redis1');
36
+ };
37
+ export const demonstrateBulkProcessing = async () => {
38
+ // Send bulk emails with batch ID and per-recipient deduplication
39
+ await AdvancedEmailJobService.sendBulk(['bulk1@zintrust.com', 'bulk2@zintrust.com', 'bulk3@zintrust.com'], 'Monthly Newsletter', 'welcome', { campaign: 'Q1-2026', issue: 'January' }, 'batch-newsletter-202601', // batchId for tracking
40
+ 'advanced-queue');
41
+ };
42
+ export const demonstrateMetadataTracking = async () => {
43
+ // Email with campaign tracking metadata
44
+ await AdvancedEmailJobService.sendWithMetadata('metadata@zintrust.com', 'Campaign Email', 'welcome', { userName: 'Alice' }, {
45
+ campaign: 'winter-sale',
46
+ source: 'web-signup',
47
+ priority: 'high',
48
+ tags: ['marketing', 'promotion', 'new-user'],
49
+ }, 'example-redis1');
50
+ };
51
+ export const demonstrateCombinedAdvancedOptions = async () => {
52
+ // High-priority scheduled email with retry logic
53
+ await AdvancedEmailJobService.sendHighPriority('combined@zintrust.com', 'VIP Scheduled Notification', 'welcome', { vipLevel: 'platinum' }, {
54
+ priority: 10, // High priority
55
+ delay: 300000, // 5 minutes delay
56
+ attempts: 5, // Retry up to 5 times
57
+ }, 'example-redis1');
58
+ };
59
+ const TestAdvancedJob = async () => {
60
+ // ====================================================================
61
+ // SCENARIO 1: Delay Scheduling (delay option)
62
+ // ====================================================================
63
+ // await demonstrateDelayScheduling();
64
+ // ====================================================================
65
+ // SCENARIO 2: Priority Job Ordering (priority option)
66
+ // ====================================================================
67
+ await demonstratePriorityJobOrdering();
68
+ // ====================================================================
69
+ // SCENARIO 3: Retry Control (attempts + backoff options)
70
+ // ====================================================================
71
+ // await demonstrateRetryControl();
72
+ // ====================================================================
73
+ // SCENARIO 4: Deduplication Support (uniqueId + deduplication options)
74
+ // ====================================================================
75
+ // await demonstrateDeduplication();
76
+ // ====================================================================
77
+ // SCENARIO 5: Custom Lock Provider (uniqueVia option)
78
+ // ====================================================================
79
+ // await demonstrateCustomLockProvider();
80
+ // ====================================================================
81
+ // SCENARIO 6: Bulk Processing with Deduplication
82
+ // ====================================================================
83
+ // await demonstrateBulkProcessing();
84
+ // ====================================================================
85
+ // SCENARIO 7: Metadata Tracking (custom envelope data)
86
+ // ====================================================================
87
+ // await demonstrateMetadataTracking();
88
+ // ====================================================================
89
+ // SCENARIO 8: Combined Advanced Options
90
+ // ====================================================================
91
+ // await demonstrateCombinedAdvancedOptions();
92
+ };
93
+ export const registerMailUiPag = async (router) => {
94
+ /* istanbul ignore next */
95
+ // const { EmailJobService } = await import('../app/Jobs/EmailJobService');
96
+ const handler = async (req, res) => {
97
+ try {
98
+ await TestAdvancedJob();
99
+ }
100
+ catch (error) {
101
+ Logger.warn('Mail preview queue trigger failed', {
102
+ route: '/mail/:template',
103
+ template: req.getParam('template') ?? 'welcome',
104
+ error: error instanceof Error ? error.message : String(error),
105
+ });
106
+ }
107
+ const templateName = req.getParam('template') ?? 'welcome';
108
+ const templates = {
109
+ welcome: 'welcome',
110
+ general: 'general',
111
+ custom: 'custom',
112
+ 'job-completed': 'job-completed',
113
+ 'performance-report': 'performance-report',
114
+ 'password-reset': 'password-reset',
115
+ 'worker-alert': 'worker-alert',
116
+ };
117
+ const finalTemplate = templates[templateName] ?? 'welcome';
118
+ const variablesByTemplate = {
119
+ welcome: { name: 'Alice' },
120
+ general: {
121
+ name: 'Alice',
122
+ headline: 'Hello Alice',
123
+ message: 'Welcome to ZinTrust platform.',
124
+ primary_color: '#0ea5e9',
125
+ },
126
+ custom: { name: 'Alice' },
127
+ };
128
+ const html = await Mail.render({
129
+ template: finalTemplate,
130
+ variables: variablesByTemplate[finalTemplate] ?? { name: 'Alice' },
131
+ });
132
+ res.html(html);
133
+ };
134
+ if (typeof Router?.get !== 'function') {
135
+ return;
136
+ }
137
+ Router.get(router, '/mail/:template', handler);
138
+ };
@@ -0,0 +1,4 @@
1
+ import { type IRouter } from '../src/routes/Router';
2
+ export declare function registerStorageRoutes(router: IRouter): void;
3
+ export default registerStorageRoutes;
4
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../routes/storage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAU,MAAM,qBAAqB,CAAC;AAI3D,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAiC3D;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { HTTP_HEADERS } from '../src/config/constants.js';
2
+ import { Env } from '../src/config/env.js';
3
+ import { Router } from '../src/routes/Router.js';
4
+ import { LocalSignedUrl } from '../src/tools/storage/LocalSignedUrl.js';
5
+ import { Storage } from '../src/tools/storage/index.js';
6
+ export function registerStorageRoutes(router) {
7
+ Router.get(router, '/storage/download', async (req, res) => {
8
+ const tokenRaw = req.getQueryParam('token');
9
+ const token = typeof tokenRaw === 'string' ? tokenRaw : '';
10
+ if (token.trim() === '') {
11
+ res.setStatus(400).json({ message: 'Missing token' });
12
+ return;
13
+ }
14
+ const appKey = Env.get('APP_KEY', '');
15
+ if (appKey.trim() === '') {
16
+ res.setStatus(500).json({ message: 'Storage signing is not configured' });
17
+ return;
18
+ }
19
+ try {
20
+ const payload = LocalSignedUrl.verifyToken(token, appKey);
21
+ // Only local disk is supported by this route.
22
+ if (payload.disk !== 'local') {
23
+ res.setStatus(400).json({ message: 'Unsupported disk' });
24
+ return;
25
+ }
26
+ const contents = await Storage.get('local', payload.key);
27
+ res.setHeader(HTTP_HEADERS.CONTENT_TYPE, 'application/octet-stream');
28
+ res.setStatus(200).send(contents);
29
+ }
30
+ catch {
31
+ res.setStatus(403).json({ message: 'Invalid or expired token' });
32
+ }
33
+ });
34
+ }
35
+ export default registerStorageRoutes;
@@ -1 +1 @@
1
- {"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC;CACvB;AAsPD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
1
+ {"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC;CACvB;AAwPD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
package/src/cli/CLI.js CHANGED
@@ -11,6 +11,7 @@ import { ContainerWorkersCommand } from './commands/ContainerWorkersCommand.js';
11
11
  import { AddMigrationCommand, CreateCommand, CreateMigrationCommand, } from './commands/CreateCommand.js';
12
12
  import { D1LearnCommand } from './commands/D1LearnCommand.js';
13
13
  import { D1MigrateCommand } from './commands/D1MigrateCommand.js';
14
+ import { D1ProxyCommand } from './commands/D1ProxyCommand.js';
14
15
  import { DbSeedCommand } from './commands/DbSeedCommand.js';
15
16
  import { DebugCommand } from './commands/DebugCommand.js';
16
17
  import { DeployCommand } from './commands/DeployCommand.js';
@@ -28,6 +29,7 @@ import { InitProducerCommand } from './commands/InitProducerCommand.js';
28
29
  import { InitProxyCommand } from './commands/InitProxyCommand.js';
29
30
  import { JwtDevCommand } from './commands/JwtDevCommand.js';
30
31
  import { KeyGenerateCommand } from './commands/KeyGenerateCommand.js';
32
+ import { KvProxyCommand } from './commands/KvProxyCommand.js';
31
33
  import { MakeMailTemplateCommand } from './commands/MakeMailTemplateCommand.js';
32
34
  import { MakeNotificationTemplateCommand } from './commands/MakeNotificationTemplateCommand.js';
33
35
  import { MigrateCommand } from './commands/MigrateCommand.js';
@@ -128,6 +130,8 @@ const buildCommandRegistry = () => {
128
130
  RoutesCommand.create(),
129
131
  JwtDevCommand,
130
132
  ProxyCommand.create(),
133
+ D1ProxyCommand.create(),
134
+ KvProxyCommand.create(),
131
135
  MySqlProxyCommand.create(),
132
136
  PostgresProxyCommand.create(),
133
137
  MongoDBProxyCommand.create(),
@@ -0,0 +1,6 @@
1
+ import type { IBaseCommand } from '../BaseCommand';
2
+ export declare const D1ProxyCommand: Readonly<{
3
+ create(): IBaseCommand;
4
+ }>;
5
+ export default D1ProxyCommand;
6
+ //# sourceMappingURL=D1ProxyCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"D1ProxyCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/D1ProxyCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6LrE,eAAO,MAAM,cAAc;cACf,YAAY;EAmCtB,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -0,0 +1,170 @@
1
+ import { BaseCommand } from '../BaseCommand.js';
2
+ import { maybeRunProxyWatchMode } from '../commands/ProxyCommandUtils.js';
3
+ import { SpawnUtil } from '../utils/spawn.js';
4
+ import { Env } from '../../config/env.js';
5
+ import { Logger } from '../../config/logger.js';
6
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
7
+ import { isNonEmptyString } from '../../helper/index.js';
8
+ import { existsSync, readFileSync, writeFileSync } from '../../node-singletons/fs.js';
9
+ import { join } from '../../node-singletons/path.js';
10
+ const DEFAULT_CONFIG = 'wrangler.jsonc';
11
+ const DEFAULT_COMPATIBILITY_DATE = '2026-03-12';
12
+ const DEFAULT_BINDING = 'ZIN_DB';
13
+ const DEFAULT_DATABASE_NAME = 'd1-proxy-db';
14
+ const DEFAULT_DATABASE_ID = '<your-d1-database-id>';
15
+ const DEFAULT_MIGRATIONS_DIR = 'database/migrations/d1';
16
+ const trimOption = (value) => {
17
+ if (!isNonEmptyString(value))
18
+ return undefined;
19
+ const trimmed = value.trim();
20
+ return trimmed.length > 0 ? trimmed : undefined;
21
+ };
22
+ const resolveConfigPath = (raw) => {
23
+ const trimmed = trimOption(raw);
24
+ return trimmed ?? DEFAULT_CONFIG;
25
+ };
26
+ const findQuotedValue = (content, key) => {
27
+ const pattern = new RegExp(String.raw `"${key}"\s*:\s*"([^"]+)"`);
28
+ const match = pattern.exec(content);
29
+ return trimOption(match?.[1]);
30
+ };
31
+ const resolveConfigValues = (content, options) => {
32
+ const fileContent = content ?? '';
33
+ return {
34
+ binding: trimOption(options.binding) ??
35
+ trimOption(Env.get('D1_BINDING', '')) ??
36
+ findQuotedValue(fileContent, 'D1_BINDING') ??
37
+ findQuotedValue(fileContent, 'binding') ??
38
+ DEFAULT_BINDING,
39
+ databaseName: trimOption(options.databaseName) ??
40
+ trimOption(Env.get('D1_DATABASE_NAME', '')) ??
41
+ findQuotedValue(fileContent, 'database_name') ??
42
+ DEFAULT_DATABASE_NAME,
43
+ databaseId: trimOption(options.databaseId) ??
44
+ trimOption(Env.get('D1_DATABASE_ID', '')) ??
45
+ findQuotedValue(fileContent, 'database_id') ??
46
+ DEFAULT_DATABASE_ID,
47
+ migrationsDir: trimOption(options.migrationsDir) ??
48
+ findQuotedValue(fileContent, 'migrations_dir') ??
49
+ DEFAULT_MIGRATIONS_DIR,
50
+ };
51
+ };
52
+ const renderD1ProxyEnvBlock = (values) => {
53
+ return [
54
+ ' "d1-proxy": {',
55
+ ' "name": "zintrust-d1-proxy",',
56
+ ' "main": "./src/proxy/d1/ZintrustD1Proxy.ts",',
57
+ ' "compatibility_flags": ["nodejs_compat"],',
58
+ ` "compatibility_date": "${DEFAULT_COMPATIBILITY_DATE}",`,
59
+ ' "vars": {',
60
+ ` "D1_BINDING": "${values.binding}",`,
61
+ ' "ZT_PROXY_SIGNING_WINDOW_MS": "60000",',
62
+ ' "ZT_MAX_BODY_BYTES": "131072",',
63
+ ' "ZT_MAX_SQL_BYTES": "32768",',
64
+ ' "ZT_MAX_PARAMS": "256",',
65
+ ' "NODE_ENV": "development",',
66
+ String.raw ` "ZT_D1_STATEMENTS_JSON": "{\"health\":\"select 1 as ok\"}"`,
67
+ ' },',
68
+ ' "d1_databases": [',
69
+ ' {',
70
+ ` "binding": "${values.binding}",`,
71
+ ` "database_name": "${values.databaseName}",`,
72
+ ` "database_id": "${values.databaseId}",`,
73
+ ` "migrations_dir": "${values.migrationsDir}"`,
74
+ ' }',
75
+ ' ]',
76
+ ' }',
77
+ ].join('\n');
78
+ };
79
+ const renderDefaultWranglerConfig = (values) => {
80
+ return [
81
+ '{',
82
+ ' "name": "zintrust-api",',
83
+ ' "main": "./src/functions/cloudflare.ts",',
84
+ ` "compatibility_date": "${DEFAULT_COMPATIBILITY_DATE}",`,
85
+ ' "compatibility_flags": ["nodejs_compat"],',
86
+ ' "env": {',
87
+ renderD1ProxyEnvBlock(values),
88
+ ' }',
89
+ '}',
90
+ '',
91
+ ].join('\n');
92
+ };
93
+ const injectEnvBlock = (content, block) => {
94
+ if (/"d1-proxy"\s*:\s*\{/.test(content))
95
+ return content;
96
+ if (/"env"\s*:\s*\{\s*\}/m.test(content)) {
97
+ return content.replace(/"env"\s*:\s*\{\s*\}/m, `"env": {\n${block}\n }`);
98
+ }
99
+ if (/"env"\s*:\s*\{/m.test(content)) {
100
+ return content.replace(/"env"\s*:\s*\{/m, (match) => `${match}\n${block},`);
101
+ }
102
+ const closingIndex = content.lastIndexOf('}');
103
+ if (closingIndex < 0) {
104
+ throw ErrorFactory.createCliError('Invalid wrangler.jsonc: missing closing brace.');
105
+ }
106
+ const before = content.slice(0, closingIndex).trimEnd();
107
+ const suffix = before.endsWith('{') ? '\n' : ',\n';
108
+ return `${before}${suffix} "env": {\n${block}\n }\n}\n`;
109
+ };
110
+ const ensureWranglerConfig = (configPath, options) => {
111
+ if (!existsSync(configPath)) {
112
+ const values = resolveConfigValues(undefined, options);
113
+ writeFileSync(configPath, renderDefaultWranglerConfig(values), 'utf-8');
114
+ return { createdFile: true, insertedEnv: true, values };
115
+ }
116
+ const content = readFileSync(configPath, 'utf-8');
117
+ const values = resolveConfigValues(content, options);
118
+ const next = injectEnvBlock(content, renderD1ProxyEnvBlock(values));
119
+ if (next !== content) {
120
+ writeFileSync(configPath, next, 'utf-8');
121
+ return { createdFile: false, insertedEnv: true, values };
122
+ }
123
+ return { createdFile: false, insertedEnv: false, values };
124
+ };
125
+ const warnOnPlaceholderDatabaseId = (values) => {
126
+ if (values.databaseId !== DEFAULT_DATABASE_ID)
127
+ return;
128
+ Logger.warn('Could not resolve a D1 database id automatically. Update wrangler.jsonc or pass --database-id before relying on the generated d1-proxy environment.');
129
+ };
130
+ const addOptions = (command) => {
131
+ command.option('-c, --config <path>', 'Wrangler config file', DEFAULT_CONFIG);
132
+ command.option('--watch', 'Auto-restart proxy on file changes');
133
+ command.option('--binding <name>', 'D1 binding name', DEFAULT_BINDING);
134
+ command.option('--database-name <name>', 'Cloudflare D1 database name');
135
+ command.option('--database-id <id>', 'Cloudflare D1 database id');
136
+ command.option('--migrations-dir <path>', 'Cloudflare D1 migrations directory', DEFAULT_MIGRATIONS_DIR);
137
+ };
138
+ export const D1ProxyCommand = Object.freeze({
139
+ create() {
140
+ return BaseCommand.create({
141
+ name: 'proxy:d1',
142
+ aliases: ['d1:proxy'],
143
+ description: 'Start the local Cloudflare D1 proxy Worker via Wrangler and scaffold env.d1-proxy in wrangler.jsonc when missing',
144
+ addOptions,
145
+ execute: async (options) => {
146
+ await maybeRunProxyWatchMode(options.watch);
147
+ const cwd = process.cwd();
148
+ const configPath = join(cwd, resolveConfigPath(options.config));
149
+ const result = ensureWranglerConfig(configPath, options);
150
+ if (result.createdFile) {
151
+ Logger.info(`Created ${configPath} with a default d1-proxy environment.`);
152
+ }
153
+ else if (result.insertedEnv) {
154
+ Logger.info(`Added env.d1-proxy to ${configPath}.`);
155
+ }
156
+ warnOnPlaceholderDatabaseId(result.values);
157
+ const exitCode = await SpawnUtil.spawnAndWait({
158
+ command: 'wrangler',
159
+ args: ['dev', '--config', configPath, '--env', 'd1-proxy'],
160
+ env: process.env,
161
+ forwardSignals: false,
162
+ });
163
+ if (exitCode !== 0) {
164
+ process.exit(exitCode);
165
+ }
166
+ },
167
+ });
168
+ },
169
+ });
170
+ export default D1ProxyCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"InitContainerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/InitContainerCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqSlE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAqBtB,CAAC"}
1
+ {"version":3,"file":"InitContainerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/InitContainerCommand.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA8MlE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAqBtB,CAAC"}