@zintrust/core 0.4.26 → 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 (486) 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 +27 -78
  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/boot/bootstrap.js +5 -0
  439. package/src/cli/CLI.d.ts.map +1 -1
  440. package/src/cli/CLI.js +4 -0
  441. package/src/cli/commands/D1ProxyCommand.d.ts +6 -0
  442. package/src/cli/commands/D1ProxyCommand.d.ts.map +1 -0
  443. package/src/cli/commands/D1ProxyCommand.js +170 -0
  444. package/src/cli/commands/InitContainerCommand.d.ts.map +1 -1
  445. package/src/cli/commands/InitContainerCommand.js +61 -23
  446. package/src/cli/commands/KvProxyCommand.d.ts +6 -0
  447. package/src/cli/commands/KvProxyCommand.d.ts.map +1 -0
  448. package/src/cli/commands/KvProxyCommand.js +158 -0
  449. package/src/cli/commands/MigrateCommand.js +1 -1
  450. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
  451. package/src/cli/commands/MigrateWorkerCommand.js +8 -2
  452. package/src/cli/commands/ProxyCommand.d.ts.map +1 -1
  453. package/src/cli/commands/ProxyCommand.js +2 -0
  454. package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
  455. package/src/cli/commands/WorkerCommands.js +47 -7
  456. package/src/cli/commands/index.d.ts +2 -0
  457. package/src/cli/commands/index.d.ts.map +1 -1
  458. package/src/cli/commands/index.js +2 -0
  459. package/src/cli/index.d.ts +2 -0
  460. package/src/cli/index.d.ts.map +1 -1
  461. package/src/cli/index.js +2 -0
  462. package/src/cli/scaffolding/GovernanceScaffolder.d.ts.map +1 -1
  463. package/src/cli/scaffolding/GovernanceScaffolder.js +20 -3
  464. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  465. package/src/cli/scaffolding/ProjectScaffolder.js +13 -4
  466. package/src/cli/utils/DistPackager.d.ts +2 -2
  467. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  468. package/src/cli/utils/DistPackager.js +9 -3
  469. package/src/index.js +3 -3
  470. package/src/proxy.d.ts +2 -0
  471. package/src/proxy.d.ts.map +1 -1
  472. package/src/proxy.js +2 -0
  473. package/src/runtime/WorkerProjectAutoImports.d.ts +14 -0
  474. package/src/runtime/WorkerProjectAutoImports.d.ts.map +1 -0
  475. package/src/runtime/WorkerProjectAutoImports.js +63 -0
  476. package/src/templates/project/basic/app/Workers/ExampleWorker.ts.tpl +17 -0
  477. package/src/templates/project/basic/package.json.tpl +1 -1
  478. package/src/templates/project/basic/src/zintrust.workers.ts.tpl +11 -0
  479. package/src/zintrust.comon.d.ts +9 -0
  480. package/src/zintrust.comon.d.ts.map +1 -0
  481. package/src/zintrust.comon.js +15 -0
  482. package/src/zintrust.plugins.d.ts +6 -3
  483. package/src/zintrust.plugins.d.ts.map +1 -1
  484. package/src/zintrust.plugins.js +27 -3
  485. package/start.d.ts +1 -0
  486. package/start.js +1 -0
@@ -6,14 +6,14 @@ import { join } from '../../node-singletons/path.js';
6
6
  const DOCKER_COMPOSE_WORKERS_TEMPLATE = `name: zintrust-workers
7
7
 
8
8
  services:
9
- # Workers/Jobs API Service (Port 7772)
10
- # Exposes the Workers API to create/manage jobs
9
+ # Worker runtime service (Port 7772)
10
+ # Boots the full ZinTrust server so the worker pages stay reachable while workers auto-start.
11
11
  workers-api:
12
- image: \${WORKERS_IMAGE:-zintrust/zintrust-workers:latest}
12
+ image: \${WORKERS_IMAGE:-zintrust-workers-local:latest}
13
13
  build:
14
14
  context: .
15
- dockerfile: Dockerfile
16
- command: ["node", "--experimental-specifier-resolution=node", "dist/src/boot/bootstrap.js"]
15
+ dockerfile: Dockerfile.workers
16
+ target: worker
17
17
  environment:
18
18
  # Runtime
19
19
  - NODE_ENV=\${NODE_ENV:-development}
@@ -26,11 +26,10 @@ services:
26
26
  - APP_KEY=\${APP_KEY}
27
27
  - ENCRYPTION_CIPHER=\${ENCRYPTION_CIPHER:-aes-256-cbc}
28
28
  - LOG_LEVEL=\${LOG_LEVEL:-info}
29
- - ZINTRUST_PROJECT_ROOT=/app/dist
30
29
 
31
30
  # Workers & Queue
32
- - WORKER_ENABLED=\${WORKER_ENABLED:-false}
33
- - WORKER_AUTO_START=\${WORKER_AUTO_START:-false}
31
+ - WORKER_ENABLED=\${WORKER_ENABLED:-true}
32
+ - WORKER_AUTO_START=\${WORKER_AUTO_START:-true}
34
33
  - QUEUE_ENABLED=true
35
34
  - QUEUE_MONITOR_ENABLED=\${QUEUE_MONITOR_ENABLED:-false}
36
35
  - QUEUE_MONITOR_MIDDLEWARE=\${QUEUE_MONITOR_MIDDLEWARE:-}
@@ -97,22 +96,61 @@ services:
97
96
  - '7772:7772'
98
97
 
99
98
  `;
100
- const DOCKERFILE_TEMPLATE = String.raw `FROM zintrust/zintrust:latest AS runtime
99
+ const DOCKERFILE_TEMPLATE = String.raw `# Multi-stage worker overlay image.
100
+ #
101
+ # This compiles the local ZinTrust app first, then copies only the compiled worker-related
102
+ # artifacts onto the published zintrust/zintrust runtime image.
103
+
104
+ FROM node:20-alpine AS project-build
105
+
106
+ WORKDIR /project
107
+
108
+ ENV NPM_CONFIG_CACHE=/root/.npm
109
+ ENV NPM_CONFIG_PREFER_OFFLINE=true
110
+
111
+ RUN apk upgrade --no-cache \
112
+ && apk add --no-cache g++ git make python3
113
+
114
+ COPY package.json package-lock.json ./
115
+
116
+ RUN --mount=type=cache,target=/root/.npm,id=zintrust-worker-overlay-npm-cache,sharing=locked \
117
+ npm config set fetch-retries 5 \
118
+ && npm config set fetch-retry-mintimeout 20000 \
119
+ && npm config set fetch-retry-maxtimeout 120000 \
120
+ && npm ci
121
+
122
+ COPY . .
123
+
124
+ # Fresh projects always ship npm run build; do not depend on framework-internal build variants.
125
+ RUN --mount=type=cache,target=/root/.npm,id=zintrust-worker-overlay-npm-cache,sharing=locked npm run build
126
+
127
+ FROM project-build AS worker-overlay
128
+
129
+ RUN set -eu; \
130
+ overlay_root=/overlay; \
131
+ mkdir -p "$overlay_root/dist"; \
132
+ if [ -d /project/dist/app ]; then cp -R /project/dist/app "$overlay_root/dist/app"; fi; \
133
+ mkdir -p "$overlay_root/dist/src"; \
134
+ if [ -f /project/dist/src/zintrust.workers.js ]; then cp /project/dist/src/zintrust.workers.js "$overlay_root/dist/src/zintrust.workers.js"; fi; \
135
+ if [ -f /project/dist/src/zintrust.workers.js.map ]; then cp /project/dist/src/zintrust.workers.js.map "$overlay_root/dist/src/zintrust.workers.js.map"; fi
136
+
137
+ FROM zintrust/zintrust:latest AS runtime
101
138
 
102
139
  WORKDIR /app
103
140
 
104
- ENV NODE_ENV=production
105
- ENV PORT=7772
106
- ENV HOST=0.0.0.0
141
+ COPY --from=worker-overlay --chown=nodejs:nodejs /overlay/dist/ /app/dist/
107
142
 
108
- USER nodejs
143
+ FROM runtime AS worker
109
144
 
110
- HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
111
- CMD node -e "require('node:http').get('http://localhost:7772/health', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})"
145
+ ENV WORKER_ENABLED=true
146
+ ENV WORKER_AUTO_START=true
147
+ ENV QUEUE_ENABLED=true
148
+ ENV HOST=0.0.0.0
149
+ ENV PORT=7772
112
150
 
113
- EXPOSE 7772
151
+ HEALTHCHECK NONE
114
152
 
115
- CMD ["node", "dist/src/boot/bootstrap.js"]
153
+ CMD ["node", "--experimental-specifier-resolution=node", "dist/src/boot/bootstrap.js"]
116
154
  `;
117
155
  const backupSuffix = () => new Date().toISOString().replaceAll(/[:.]/g, '-');
118
156
  const backupFileIfExists = (filePath) => {
@@ -138,19 +176,18 @@ async function writeDockerComposeFile(cwd) {
138
176
  }
139
177
  }
140
178
  async function writeDockerfile(cwd) {
141
- const dockerfilePath = join(cwd, 'Dockerfile');
179
+ const dockerfilePath = join(cwd, 'Dockerfile.workers');
142
180
  let shouldWrite = true;
143
181
  if (existsSync(dockerfilePath)) {
144
- // Only ask if it's different or just generic confirm? Let's just ask.
145
- shouldWrite = await PromptHelper.confirm('Dockerfile already exists. Overwrite with standard worker configuration?', false);
182
+ shouldWrite = await PromptHelper.confirm('Dockerfile.workers already exists. Overwrite with the ZinTrust worker overlay image?', false);
146
183
  }
147
184
  if (shouldWrite) {
148
185
  backupFileIfExists(dockerfilePath);
149
186
  writeFileSync(dockerfilePath, DOCKERFILE_TEMPLATE);
150
- Logger.info('✅ Created Dockerfile');
187
+ Logger.info('✅ Created Dockerfile.workers');
151
188
  }
152
189
  else {
153
- Logger.info('Skipped Dockerfile');
190
+ Logger.info('Skipped Dockerfile.workers');
154
191
  }
155
192
  }
156
193
  export const InitContainerCommand = Object.freeze({
@@ -165,7 +202,8 @@ export const InitContainerCommand = Object.freeze({
165
202
  await writeDockerComposeFile(cwd);
166
203
  await writeDockerfile(cwd);
167
204
  Logger.info('✅ Container worker scaffolding complete.');
168
- Logger.info('Run with: docker-compose -f docker-compose.workers.yml up');
205
+ Logger.info('Run with: docker compose -f docker-compose.workers.yml up');
206
+ Logger.info('Build worker runtime with: docker build -f Dockerfile.workers --target worker .');
169
207
  await Promise.resolve();
170
208
  },
171
209
  });
@@ -0,0 +1,6 @@
1
+ import type { IBaseCommand } from '../BaseCommand';
2
+ export declare const KvProxyCommand: Readonly<{
3
+ create(): IBaseCommand;
4
+ }>;
5
+ export default KvProxyCommand;
6
+ //# sourceMappingURL=KvProxyCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KvProxyCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/KvProxyCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0KrE,eAAO,MAAM,cAAc;cACf,YAAY;EAmCtB,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -0,0 +1,158 @@
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_KV';
13
+ const DEFAULT_NAMESPACE_ID = '<your-kv-namespace-id>';
14
+ const trimOption = (value) => {
15
+ if (!isNonEmptyString(value))
16
+ return undefined;
17
+ const trimmed = value.trim();
18
+ return trimmed.length > 0 ? trimmed : undefined;
19
+ };
20
+ const resolveConfigPath = (raw) => trimOption(raw) ?? DEFAULT_CONFIG;
21
+ const findQuotedValue = (content, key) => {
22
+ const pattern = new RegExp(String.raw `"${key}"\s*:\s*"([^"]+)"`);
23
+ const match = pattern.exec(content);
24
+ return trimOption(match?.[1]);
25
+ };
26
+ const resolveConfigValues = (content, options) => {
27
+ const fileContent = content ?? '';
28
+ const namespaceId = trimOption(options.namespaceId) ??
29
+ trimOption(Env.get('KV_NAMESPACE_ID', '')) ??
30
+ findQuotedValue(fileContent, 'preview_id') ??
31
+ findQuotedValue(fileContent, 'id') ??
32
+ DEFAULT_NAMESPACE_ID;
33
+ return {
34
+ binding: trimOption(options.binding) ??
35
+ trimOption(Env.get('KV_NAMESPACE', '')) ??
36
+ findQuotedValue(fileContent, 'KV_NAMESPACE') ??
37
+ findQuotedValue(fileContent, 'binding') ??
38
+ DEFAULT_BINDING,
39
+ namespaceId,
40
+ previewId: trimOption(options.previewId) ??
41
+ trimOption(Env.get('KV_NAMESPACE_PREVIEW_ID', '')) ??
42
+ findQuotedValue(fileContent, 'preview_id') ??
43
+ namespaceId,
44
+ };
45
+ };
46
+ const renderKvProxyEnvBlock = (values) => {
47
+ return [
48
+ ' "kv-proxy": {',
49
+ ' "name": "zintrust-kv-proxy",',
50
+ ' "main": "./src/proxy/kv/ZintrustKvProxy.ts",',
51
+ ' "compatibility_flags": ["nodejs_compat"],',
52
+ ` "compatibility_date": "${DEFAULT_COMPATIBILITY_DATE}",`,
53
+ ' "vars": {',
54
+ ` "KV_NAMESPACE": "${values.binding}",`,
55
+ ' "NODE_ENV": "development"',
56
+ ' },',
57
+ ' "kv_namespaces": [',
58
+ ' {',
59
+ ` "binding": "${values.binding}",`,
60
+ ` "id": "${values.namespaceId}",`,
61
+ ` "preview_id": "${values.previewId}",`,
62
+ ' "remote": false',
63
+ ' }',
64
+ ' ]',
65
+ ' }',
66
+ ].join('\n');
67
+ };
68
+ const renderDefaultWranglerConfig = (values) => {
69
+ return [
70
+ '{',
71
+ ' "name": "zintrust-api",',
72
+ ' "main": "./src/functions/cloudflare.ts",',
73
+ ` "compatibility_date": "${DEFAULT_COMPATIBILITY_DATE}",`,
74
+ ' "compatibility_flags": ["nodejs_compat"],',
75
+ ' "env": {',
76
+ renderKvProxyEnvBlock(values),
77
+ ' }',
78
+ '}',
79
+ '',
80
+ ].join('\n');
81
+ };
82
+ const injectEnvBlock = (content, block) => {
83
+ if (/"kv-proxy"\s*:\s*\{/.test(content))
84
+ return content;
85
+ if (/"env"\s*:\s*\{\s*\}/m.test(content)) {
86
+ return content.replace(/"env"\s*:\s*\{\s*\}/m, `"env": {\n${block}\n }`);
87
+ }
88
+ if (/"env"\s*:\s*\{/m.test(content)) {
89
+ return content.replace(/"env"\s*:\s*\{/m, (match) => `${match}\n${block},`);
90
+ }
91
+ const closingIndex = content.lastIndexOf('}');
92
+ if (closingIndex < 0) {
93
+ throw ErrorFactory.createCliError('Invalid wrangler.jsonc: missing closing brace.');
94
+ }
95
+ const before = content.slice(0, closingIndex).trimEnd();
96
+ const suffix = before.endsWith('{') ? '\n' : ',\n';
97
+ return `${before}${suffix} "env": {\n${block}\n }\n}\n`;
98
+ };
99
+ const ensureWranglerConfig = (configPath, options) => {
100
+ if (!existsSync(configPath)) {
101
+ const values = resolveConfigValues(undefined, options);
102
+ writeFileSync(configPath, renderDefaultWranglerConfig(values), 'utf-8');
103
+ return { createdFile: true, insertedEnv: true, values };
104
+ }
105
+ const content = readFileSync(configPath, 'utf-8');
106
+ const values = resolveConfigValues(content, options);
107
+ const next = injectEnvBlock(content, renderKvProxyEnvBlock(values));
108
+ if (next !== content) {
109
+ writeFileSync(configPath, next, 'utf-8');
110
+ return { createdFile: false, insertedEnv: true, values };
111
+ }
112
+ return { createdFile: false, insertedEnv: false, values };
113
+ };
114
+ const warnOnPlaceholderNamespaceId = (values) => {
115
+ if (values.namespaceId !== DEFAULT_NAMESPACE_ID)
116
+ return;
117
+ Logger.warn('Could not resolve a KV namespace id automatically. Update wrangler.jsonc or pass --namespace-id before relying on the generated kv-proxy environment.');
118
+ };
119
+ const addOptions = (command) => {
120
+ command.option('-c, --config <path>', 'Wrangler config file', DEFAULT_CONFIG);
121
+ command.option('--watch', 'Auto-restart proxy on file changes');
122
+ command.option('--binding <name>', 'KV binding name', DEFAULT_BINDING);
123
+ command.option('--namespace-id <id>', 'Cloudflare KV namespace id');
124
+ command.option('--preview-id <id>', 'Cloudflare KV preview namespace id');
125
+ };
126
+ export const KvProxyCommand = Object.freeze({
127
+ create() {
128
+ return BaseCommand.create({
129
+ name: 'proxy:kv',
130
+ aliases: ['kv:proxy'],
131
+ description: 'Start the local Cloudflare KV proxy Worker via Wrangler and scaffold env.kv-proxy in wrangler.jsonc when missing',
132
+ addOptions,
133
+ execute: async (options) => {
134
+ await maybeRunProxyWatchMode(options.watch);
135
+ const cwd = process.cwd();
136
+ const configPath = join(cwd, resolveConfigPath(options.config));
137
+ const result = ensureWranglerConfig(configPath, options);
138
+ if (result.createdFile) {
139
+ Logger.info(`Created ${configPath} with a default kv-proxy environment.`);
140
+ }
141
+ else if (result.insertedEnv) {
142
+ Logger.info(`Added env.kv-proxy to ${configPath}.`);
143
+ }
144
+ warnOnPlaceholderNamespaceId(result.values);
145
+ const exitCode = await SpawnUtil.spawnAndWait({
146
+ command: 'wrangler',
147
+ args: ['dev', '--config', configPath, '--env', 'kv-proxy'],
148
+ env: process.env,
149
+ forwardSignals: false,
150
+ });
151
+ if (exitCode !== 0) {
152
+ process.exit(exitCode);
153
+ }
154
+ },
155
+ });
156
+ },
157
+ });
158
+ export default KvProxyCommand;
@@ -215,7 +215,7 @@ const warnIfAdapterMissing = (cmd, conn) => {
215
215
  if (conn.driver === 'mysql' && DatabaseAdapterRegistry.get('mysql') === undefined) {
216
216
  cmd.warn('MySQL adapter is not installed/registered; migrations may not hit a real MySQL DB.');
217
217
  cmd.warn('Install via `zin plugin install adapter:mysql` (or `zin add db:mysql`).');
218
- cmd.debug('[debug] Expected a side-effect import in src/zintrust.plugins.ts like: import "@zintrust/db-mysql/register";');
218
+ cmd.debug('[debug] Expected a side-effect import in src/zintrust.plugins.ts like: import "../../../packages/db-mysql/src/register";');
219
219
  }
220
220
  if (conn.driver === 'postgresql' && DatabaseAdapterRegistry.get('postgresql') === undefined) {
221
221
  cmd.warn('PostgreSQL adapter is not installed/registered; migrations may not hit a real PostgreSQL DB.');
@@ -1 +1 @@
1
- {"version":3,"file":"MigrateWorkerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/MigrateWorkerCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAiNrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAUtB,CAAC"}
1
+ {"version":3,"file":"MigrateWorkerCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/MigrateWorkerCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAuNrE,eAAO,MAAM,oBAAoB;cACrB,YAAY;EAUtB,CAAC"}
@@ -15,7 +15,12 @@ const isBuiltInDriver = (driver) => driver === 'sqlite' ||
15
15
  driver === 'sqlserver' ||
16
16
  driver === 'd1' ||
17
17
  driver === 'd1-remote';
18
- const getWorkerPersistenceConnectionName = () => {
18
+ const getWorkerPersistenceConnectionName = (optionValue) => {
19
+ if (typeof optionValue === 'string') {
20
+ const trimmed = optionValue.trim();
21
+ if (trimmed.length > 0)
22
+ return trimmed;
23
+ }
19
24
  if (typeof process === 'undefined')
20
25
  return 'default';
21
26
  const raw = process.env?.['WORKER_PERSISTENCE_DB_CONNECTION'];
@@ -31,6 +36,7 @@ const addOptions = (command) => {
31
36
  .option('--step <number>', 'Number of batches to rollback (use with --rollback)', '1')
32
37
  .option('--force', 'Skip production confirmation (allow unsafe operations in production)')
33
38
  .option('--all', 'Run migrations for all configured database connections')
39
+ .option('--connection <name>', 'Use a specific database connection for worker migrations')
34
40
  .option('--no-interactive', 'Disable interactive prompts (useful for CI/CD)');
35
41
  };
36
42
  const getInteractive = (options) => options['interactive'] !== false;
@@ -137,7 +143,7 @@ const executeMigrateWorker = async (options, cmd) => {
137
143
  }
138
144
  }
139
145
  else {
140
- const selected = getWorkerPersistenceConnectionName();
146
+ const selected = getWorkerPersistenceConnectionName(options['connection']);
141
147
  const hasSelected = selected.length > 0;
142
148
  const connections = databaseConfig.connections;
143
149
  const configured = hasSelected ? connections[selected] : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"ProxyCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ProxyCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,0BAA0B,CAAC;AAClC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AAyD9B,eAAO,MAAM,YAAY;cACb,YAAY;EAyBtB,CAAC;AAEH,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ProxyCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/ProxyCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAMrE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,oBAAoB,CAAC;AAC5B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,0BAA0B,CAAC;AAClC,OAAO,uBAAuB,CAAC;AAC/B,OAAO,sBAAsB,CAAC;AA2D9B,eAAO,MAAM,YAAY;cACb,YAAY;EAyBtB,CAAC;AAEH,eAAe,YAAY,CAAC"}
@@ -10,6 +10,8 @@ import '../../proxy/postgres/register.js';
10
10
  import '../../proxy/redis/register.js';
11
11
  import '../../proxy/smtp/register.js';
12
12
  const PROXY_TARGET_MAP = Object.freeze({
13
+ d1: 'proxy:d1',
14
+ kv: 'proxy:kv',
13
15
  mysql: 'proxy:mysql',
14
16
  my: 'proxy:mysql',
15
17
  postgres: 'proxy:postgres',
@@ -1 +1 @@
1
- {"version":3,"file":"WorkerCommands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/WorkerCommands.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgiBrD;;GAEG;AACH,eAAO,MAAM,cAAc;mCApYS,YAAY;qCA4CV,YAAY;oCAiDb,YAAY;uCAkFT,YAAY;mCA0FhB,YAAY;sCAgCT,YAAY;sCAgCZ,YAAY;CAmElD,CAAC"}
1
+ {"version":3,"file":"WorkerCommands.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/WorkerCommands.ts"],"names":[],"mappings":"AACA;;;GAGG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0lBrD;;GAEG;AACH,eAAO,MAAM,cAAc;mCAtaS,YAAY;qCA4CV,YAAY;oCAiDb,YAAY;uCAqHT,YAAY;mCAyFhB,YAAY;sCAgCT,YAAY;sCAgCZ,YAAY;CAmElD,CAAC"}
@@ -7,14 +7,26 @@ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
7
7
  import { BaseCommand } from '../BaseCommand.js';
8
8
  import { Env } from '../../config/env.js';
9
9
  import { Logger } from '../../config/logger.js';
10
+ import { WorkerProjectAutoImports } from '../../runtime/WorkerProjectAutoImports.js';
10
11
  import { loadWorkersModule as loadWorkersRuntimeModule } from '../../runtime/WorkersModule.js';
11
12
  // Lazy initialization to prevent temporal dead zone issues
12
13
  let WorkerFactory;
13
14
  let WorkerRegistry;
14
15
  let HealthMonitor;
15
16
  let ResourceMonitor;
17
+ let workerProjectEntrypointAttempted = false;
18
+ const ensureProjectWorkerEntrypointLoaded = async () => {
19
+ if (workerProjectEntrypointAttempted)
20
+ return;
21
+ workerProjectEntrypointAttempted = true;
22
+ const result = await WorkerProjectAutoImports.tryImportProjectWorkerEntrypoint();
23
+ if (!result.ok && result.reason === 'import-failed') {
24
+ Logger.warn(`Project worker entrypoint import failed: ${result.errorMessage ?? 'Unknown error'}`);
25
+ }
26
+ };
16
27
  const loadWorkersModule = async () => {
17
28
  try {
29
+ await ensureProjectWorkerEntrypointLoaded();
18
30
  return (await loadWorkersRuntimeModule());
19
31
  }
20
32
  catch (error) {
@@ -232,6 +244,32 @@ const isRegisteredWorkerRunning = async (workerLike) => {
232
244
  const isPaused = typeof pausedFn === 'function' ? pausedFn() : false;
233
245
  return isRunning && !isPaused;
234
246
  };
247
+ const resolveAutoStartWorkerNames = async (factory, workersModule) => {
248
+ const persistedRecords = await factory.listPersistedRecords();
249
+ const fileRecords = typeof factory.listFileBackedRecords === 'function'
250
+ ? await factory.listFileBackedRecords()
251
+ : [];
252
+ if (typeof workersModule.selectAutoStartNames === 'function') {
253
+ return workersModule.selectAutoStartNames(persistedRecords, fileRecords, Logger.warn);
254
+ }
255
+ const persistedNames = persistedRecords
256
+ .filter((record) => record.activeStatus !== false && record.autoStart === true)
257
+ .map((record) => record.name);
258
+ if (persistedNames.length > 0) {
259
+ return { names: persistedNames, source: 'persisted' };
260
+ }
261
+ const seen = new Set();
262
+ const fileNames = [];
263
+ for (const record of fileRecords) {
264
+ if (record.activeStatus === false || record.autoStart !== true)
265
+ continue;
266
+ if (seen.has(record.name))
267
+ continue;
268
+ seen.add(record.name);
269
+ fileNames.push(record.name);
270
+ }
271
+ return { names: fileNames, source: fileNames.length > 0 ? 'file' : 'none' };
272
+ };
235
273
  /**
236
274
  * Worker Start All Command
237
275
  */
@@ -244,17 +282,19 @@ const createWorkerStartAllCommand = () => {
244
282
  return;
245
283
  }
246
284
  const factory = await getWorkerFactory();
247
- const records = await factory.listPersistedRecords();
248
- const autoStartRecords = records.filter((record) => record.activeStatus !== false && record.autoStart === true);
249
- const workers = autoStartRecords.map((record) => record.name);
285
+ const workersModule = await loadWorkersModule();
286
+ const { names: workers, source } = await resolveAutoStartWorkerNames(factory, workersModule);
250
287
  if (workers.length === 0) {
251
- Logger.info('No auto-start eligible persisted workers found.');
288
+ Logger.info('No auto-start eligible persisted or file-backed workers found.');
252
289
  return;
253
290
  }
254
- const discoveredWorkers = await pollForPersistedWorkers(factory);
255
- const eligibleWorkers = workers.filter((name) => discoveredWorkers.includes(name));
291
+ let eligibleWorkers = workers;
292
+ if (source === 'persisted') {
293
+ const discoveredWorkers = await pollForPersistedWorkers(factory);
294
+ eligibleWorkers = workers.filter((name) => discoveredWorkers.includes(name));
295
+ }
256
296
  if (eligibleWorkers.length === 0) {
257
- Logger.info('No auto-start eligible workers are currently persisted.');
297
+ Logger.info('No auto-start eligible workers are currently available.');
258
298
  return;
259
299
  }
260
300
  const results = await Promise.all(eligibleWorkers.map(async (name) => {
@@ -6,8 +6,10 @@ export { BroadcastWorkCommand } from '../commands/BroadcastWorkCommand';
6
6
  export { ConfigCommand } from '../commands/ConfigCommand';
7
7
  export { ContainerWorkersCommand } from '../commands/ContainerWorkersCommand';
8
8
  export { AddMigrationCommand, CreateCommand, CreateMigrationCommand, } from '../commands/CreateCommand';
9
+ export { D1ProxyCommand } from '../commands/D1ProxyCommand';
9
10
  export { DebugCommand } from '../commands/DebugCommand';
10
11
  export { JwtDevCommand } from '../commands/JwtDevCommand';
12
+ export { KvProxyCommand } from '../commands/KvProxyCommand';
11
13
  export { LogsCleanupCommand } from '../commands/LogsCleanupCommand';
12
14
  export { MakeMailTemplateCommand } from '../commands/MakeMailTemplateCommand';
13
15
  export { MakeNotificationTemplateCommand } from '../commands/MakeNotificationTemplateCommand';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,+BAA+B,EAAE,MAAM,+CAA+C,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -6,8 +6,10 @@ export { BroadcastWorkCommand } from '../commands/BroadcastWorkCommand.js';
6
6
  export { ConfigCommand } from '../commands/ConfigCommand.js';
7
7
  export { ContainerWorkersCommand } from '../commands/ContainerWorkersCommand.js';
8
8
  export { AddMigrationCommand, CreateCommand, CreateMigrationCommand, } from '../commands/CreateCommand.js';
9
+ export { D1ProxyCommand } from '../commands/D1ProxyCommand.js';
9
10
  export { DebugCommand } from '../commands/DebugCommand.js';
10
11
  export { JwtDevCommand } from '../commands/JwtDevCommand.js';
12
+ export { KvProxyCommand } from '../commands/KvProxyCommand.js';
11
13
  export { LogsCleanupCommand } from '../commands/LogsCleanupCommand.js';
12
14
  export { MakeMailTemplateCommand } from '../commands/MakeMailTemplateCommand.js';
13
15
  export { MakeNotificationTemplateCommand } from '../commands/MakeNotificationTemplateCommand.js';
@@ -8,7 +8,9 @@ export { EXIT_CODES, ErrorHandler } from './ErrorHandler';
8
8
  export { PromptHelper, type PromptOptions } from './PromptHelper';
9
9
  export { AddCommand } from './commands/AddCommand';
10
10
  export { ConfigCommand } from './commands/ConfigCommand';
11
+ export { D1ProxyCommand } from './commands/D1ProxyCommand';
11
12
  export { DebugCommand } from './commands/DebugCommand';
13
+ export { KvProxyCommand } from './commands/KvProxyCommand';
12
14
  export { MigrateCommand } from './commands/MigrateCommand';
13
15
  export { MySqlProxyCommand } from './commands/MySqlProxyCommand';
14
16
  export { NewCommand } from './commands/NewCommand';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGrE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC"}
package/src/cli/index.js CHANGED
@@ -9,7 +9,9 @@ export { PromptHelper } from './PromptHelper.js';
9
9
  // Export commands
10
10
  export { AddCommand } from './commands/AddCommand.js';
11
11
  export { ConfigCommand } from './commands/ConfigCommand.js';
12
+ export { D1ProxyCommand } from './commands/D1ProxyCommand.js';
12
13
  export { DebugCommand } from './commands/DebugCommand.js';
14
+ export { KvProxyCommand } from './commands/KvProxyCommand.js';
13
15
  export { MigrateCommand } from './commands/MigrateCommand.js';
14
16
  export { MySqlProxyCommand } from './commands/MySqlProxyCommand.js';
15
17
  export { NewCommand } from './commands/NewCommand.js';
@@ -1 +1 @@
1
- {"version":3,"file":"GovernanceScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/GovernanceScaffolder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmBH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AA8RH,eAAO,MAAM,oBAAoB;0BAEhB,MAAM,YACV,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC;EA+DpC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
1
+ {"version":3,"file":"GovernanceScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/GovernanceScaffolder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,MAAM,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC,CAAC;AAgTH,eAAO,MAAM,oBAAoB;0BAEhB,MAAM,YACV,yBAAyB,GACjC,OAAO,CAAC,wBAAwB,CAAC;EA+DpC,CAAC;AAEH,eAAe,oBAAoB,CAAC"}
@@ -6,6 +6,7 @@
6
6
  * - Architecture tests (Vitest)
7
7
  */
8
8
  import { FileGenerator } from '../scaffolding/FileGenerator.js';
9
+ import { VersionChecker } from '../services/VersionChecker.js';
9
10
  import { SpawnUtil } from '../utils/spawn.js';
10
11
  import { resolvePackageManager } from '../../common/index.js';
11
12
  import { Logger } from '../../config/logger.js';
@@ -49,12 +50,28 @@ const ensureDevDependency = (devDependencies, name, version) => {
49
50
  devDependencies[name] = version;
50
51
  }
51
52
  };
53
+ const toCompatibleGovernanceVersion = (value) => {
54
+ const match = /(\d+)\.(\d+)\.(\d+)/.exec(value);
55
+ if (match === null)
56
+ return undefined;
57
+ const [, major, minor] = match;
58
+ return `^${major}.${minor}.0`;
59
+ };
52
60
  const inferGovernanceVersion = (pkg) => {
53
61
  const deps = getStringRecord(pkg.dependencies);
54
62
  const core = deps?.['@zintrust/core'];
55
- if (typeof core === 'string' && core.trim() !== '')
56
- return core;
57
- return '^0.1.0';
63
+ if (typeof core === 'string' && core.trim() !== '') {
64
+ const compatibleFromCore = toCompatibleGovernanceVersion(core);
65
+ if (compatibleFromCore !== undefined)
66
+ return compatibleFromCore;
67
+ }
68
+ const currentVersion = VersionChecker.getCurrentVersion().trim();
69
+ if (currentVersion !== '' && currentVersion !== '0.0.0') {
70
+ const compatibleFromCli = toCompatibleGovernanceVersion(currentVersion);
71
+ if (compatibleFromCli !== undefined)
72
+ return compatibleFromCli;
73
+ }
74
+ return '^0.4.0';
58
75
  };
59
76
  const writeEslintConfig = (projectRoot) => {
60
77
  const eslintConfigPath = path.join(projectRoot, 'eslint.config.mjs');
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ProjectScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,cAAc,IAAI,MAAM,CAAC;IACzB,sBAAsB,IAAI,OAAO,CAAC;IAClC,iBAAiB,IAAI,MAAM,CAAC;IAC5B,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IACtD,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;AAodD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAsBrE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsBA;AA6ID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,GAAE,MAAsB,GAAG,kBAAkB,CAsB/F;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC"}
1
+ {"version":3,"file":"ProjectScaffolder.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ProjectScaffolder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAC;AAEpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAAC;IACpE,cAAc,IAAI,MAAM,CAAC;IACzB,sBAAsB,IAAI,OAAO,CAAC;IAClC,iBAAiB,IAAI,MAAM,CAAC;IAC5B,WAAW,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,MAAM,CAAC;IACtD,gBAAgB,IAAI,OAAO,CAAC;IAC5B,aAAa,IAAI,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAC3E;AA8dD,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAsBrE;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG;IAChE,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAsBA;AA8ID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,GAAE,MAAsB,GAAG,kBAAkB,CAsB/F;AAED,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAEhC;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC"}
@@ -20,6 +20,14 @@ const loadCoreVersion = () => {
20
20
  return '0.0.0';
21
21
  }
22
22
  };
23
+ const toCompatibleGovernanceVersion = (version) => {
24
+ const match = /(\d+)\.(\d+)\.(\d+)/.exec(version);
25
+ if (match !== null) {
26
+ const [, major, minor] = match;
27
+ return `^${major}.${minor}.0`;
28
+ }
29
+ return '^0.4.0';
30
+ };
23
31
  const createDirectories = (projectPath, directories) => {
24
32
  let count = 0;
25
33
  if (!fs.existsSync(projectPath)) {
@@ -239,11 +247,11 @@ const readTemplateJson = (templateJsonPath) => {
239
247
  }
240
248
  };
241
249
  const resolveTemplateMetadata = (templateName, meta, fallback) => {
242
- const name = typeof meta.name === 'string' ? meta.name : fallback?.name ?? templateName;
243
- const description = typeof meta.description === 'string' ? meta.description : fallback?.description ?? '';
250
+ const name = typeof meta.name === 'string' ? meta.name : (fallback?.name ?? templateName);
251
+ const description = typeof meta.description === 'string' ? meta.description : (fallback?.description ?? '');
244
252
  const directories = Array.isArray(meta.directories)
245
253
  ? coerceStringArray(meta.directories)
246
- : fallback?.directories ?? [];
254
+ : (fallback?.directories ?? []);
247
255
  return { name, description, directories };
248
256
  };
249
257
  const loadTemplateFiles = (templateDir) => {
@@ -451,6 +459,8 @@ const prepareContext = (state, options) => {
451
459
  .replaceAll(/[-:T.Z]/g, '')
452
460
  .slice(0, 14);
453
461
  state.variables = {
462
+ coreVersion: loadCoreVersion(),
463
+ governanceVersion: toCompatibleGovernanceVersion(loadCoreVersion()),
454
464
  projectName: options.name,
455
465
  projectSlug: options.name,
456
466
  author: options.author ?? 'Your Name',
@@ -459,7 +469,6 @@ const prepareContext = (state, options) => {
459
469
  database: options.database ?? 'sqlite',
460
470
  template: state.templateName,
461
471
  migrationTimestamp,
462
- coreVersion: loadCoreVersion(),
463
472
  };
464
473
  };
465
474
  const createDirectoriesForState = (state) => {