@zintrust/core 0.1.48 → 0.1.50

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 (403) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -9
  3. package/src/cli/CLI.d.ts.map +1 -1
  4. package/src/cli/CLI.js +2 -0
  5. package/src/cli/commands/AddCommand.js +2 -2
  6. package/src/cli/commands/BulletproofKeyGenerateCommand.d.ts +10 -0
  7. package/src/cli/commands/BulletproofKeyGenerateCommand.d.ts.map +1 -0
  8. package/src/cli/commands/BulletproofKeyGenerateCommand.js +139 -0
  9. package/src/cli/commands/JwtDevCommand.d.ts.map +1 -1
  10. package/src/cli/commands/JwtDevCommand.js +51 -32
  11. package/src/cli/scaffolding/ControllerGenerator.d.ts +1 -1
  12. package/src/cli/scaffolding/ControllerGenerator.d.ts.map +1 -1
  13. package/src/cli/scaffolding/ControllerGenerator.js +8 -79
  14. package/src/config/SecretsManager.d.ts +0 -1
  15. package/src/config/SecretsManager.d.ts.map +1 -1
  16. package/src/config/SecretsManager.js +0 -1
  17. package/src/config/index.d.ts +1 -1
  18. package/src/config/index.d.ts.map +1 -1
  19. package/src/config/index.js +30 -10
  20. package/src/config/middleware.d.ts +1 -0
  21. package/src/config/middleware.d.ts.map +1 -1
  22. package/src/config/middleware.js +3 -0
  23. package/src/http/error-pages/ErrorPageRenderer.js +7 -1
  24. package/src/index.d.ts +1 -2
  25. package/src/index.d.ts.map +1 -1
  26. package/src/index.js +4 -5
  27. package/src/middleware/BulletproofAuthMiddleware.d.ts +92 -0
  28. package/src/middleware/BulletproofAuthMiddleware.d.ts.map +1 -0
  29. package/src/middleware/BulletproofAuthMiddleware.js +421 -0
  30. package/src/middleware/CsrfMiddleware.d.ts +0 -1
  31. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  32. package/src/middleware/CsrfMiddleware.js +8 -1
  33. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
  34. package/src/middleware/JwtAuthMiddleware.js +11 -5
  35. package/src/orm/Database.d.ts.map +1 -1
  36. package/src/orm/Database.js +48 -39
  37. package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -1
  38. package/src/orm/adapters/MySQLProxyAdapter.js +54 -35
  39. package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -1
  40. package/src/orm/adapters/PostgreSQLProxyAdapter.js +126 -103
  41. package/src/orm/adapters/SqlProxyHttpAdapterShared.d.ts +30 -0
  42. package/src/orm/adapters/SqlProxyHttpAdapterShared.d.ts.map +1 -0
  43. package/src/orm/adapters/SqlProxyHttpAdapterShared.js +64 -0
  44. package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -1
  45. package/src/orm/adapters/SqlServerProxyAdapter.js +54 -37
  46. package/src/orm/migrations/MigrationStore.d.ts.map +1 -1
  47. package/src/orm/migrations/MigrationStore.js +22 -1
  48. package/src/proxy/d1/ZintrustD1Proxy.d.ts +2 -2
  49. package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -1
  50. package/src/proxy/d1/ZintrustD1Proxy.js +39 -2
  51. package/src/proxy/kv/ZintrustKvProxy.d.ts +2 -2
  52. package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -1
  53. package/src/proxy/kv/ZintrustKvProxy.js +38 -2
  54. package/src/routes/doc.js +1 -1
  55. package/src/routes/errorPages.d.ts.map +1 -1
  56. package/src/routes/errorPages.js +9 -2
  57. package/src/security/CsrfTokenManager.d.ts.map +1 -1
  58. package/src/security/CsrfTokenManager.js +57 -23
  59. package/src/security/JwtManager.d.ts +4 -1
  60. package/src/security/JwtManager.d.ts.map +1 -1
  61. package/src/security/JwtManager.js +25 -11
  62. package/src/security/JwtSessions.d.ts +12 -0
  63. package/src/security/JwtSessions.d.ts.map +1 -0
  64. package/src/security/JwtSessions.js +556 -0
  65. package/src/security/NonceReplay.d.ts +24 -0
  66. package/src/security/NonceReplay.d.ts.map +1 -0
  67. package/src/security/NonceReplay.js +42 -0
  68. package/src/security/TokenRevocation.d.ts.map +1 -1
  69. package/src/security/TokenRevocation.js +1 -0
  70. package/src/tools/http/Http.d.ts +5 -0
  71. package/src/tools/http/Http.d.ts.map +1 -1
  72. package/src/tools/http/Http.js +25 -9
  73. package/src/tools/queue/QueueReliabilityOrchestrator.d.ts.map +1 -1
  74. package/src/tools/queue/QueueReliabilityOrchestrator.js +18 -6
  75. package/src/validation/Validator.d.ts.map +1 -1
  76. package/src/validation/Validator.js +4 -2
  77. package/src/zintrust.comon.d.ts +9 -0
  78. package/src/zintrust.comon.d.ts.map +1 -0
  79. package/src/zintrust.comon.js +15 -0
  80. package/src/zintrust.plugins.d.ts +9 -3
  81. package/src/zintrust.plugins.d.ts.map +1 -1
  82. package/src/zintrust.plugins.js +10 -3
  83. package/src/zintrust.plugins.wg.d.ts +1 -0
  84. package/src/zintrust.plugins.wg.d.ts.map +1 -1
  85. package/src/zintrust.plugins.wg.js +1 -0
  86. package/app/Controllers/AuthController.d.ts +0 -10
  87. package/app/Controllers/AuthController.d.ts.map +0 -1
  88. package/app/Controllers/AuthController.js +0 -201
  89. package/app/Controllers/UserController.d.ts +0 -9
  90. package/app/Controllers/UserController.d.ts.map +0 -1
  91. package/app/Controllers/UserController.js +0 -8
  92. package/app/Controllers/UserQueryBuilderController.d.ts +0 -16
  93. package/app/Controllers/UserQueryBuilderController.d.ts.map +0 -1
  94. package/app/Controllers/UserQueryBuilderController.js +0 -404
  95. package/app/Middleware/ProfilerMiddleware.d.ts +0 -12
  96. package/app/Middleware/ProfilerMiddleware.d.ts.map +0 -1
  97. package/app/Middleware/ProfilerMiddleware.js +0 -47
  98. package/app/Middleware/index.d.ts +0 -59
  99. package/app/Middleware/index.d.ts.map +0 -1
  100. package/app/Middleware/index.js +0 -215
  101. package/app/Models/Post.d.ts +0 -14
  102. package/app/Models/Post.d.ts.map +0 -1
  103. package/app/Models/Post.js +0 -27
  104. package/app/Models/User.d.ts +0 -14
  105. package/app/Models/User.d.ts.map +0 -1
  106. package/app/Models/User.js +0 -44
  107. package/app/Schedules/JobTracking.d.ts +0 -3
  108. package/app/Schedules/JobTracking.d.ts.map +0 -1
  109. package/app/Schedules/JobTracking.js +0 -13
  110. package/app/Schedules/index.d.ts +0 -2
  111. package/app/Schedules/index.d.ts.map +0 -1
  112. package/app/Schedules/index.js +0 -1
  113. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +0 -6
  114. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +0 -1
  115. package/app/Toolkit/Broadcast/sendBroadcast.js +0 -5
  116. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +0 -6
  117. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +0 -1
  118. package/app/Toolkit/Mail/sendWelcomeEmail.js +0 -20
  119. package/app/Toolkit/Notification/sendSlackNotification.d.ts +0 -8
  120. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +0 -1
  121. package/app/Toolkit/Notification/sendSlackNotification.js +0 -5
  122. package/app/Toolkit/Notification/sendSms.d.ts +0 -6
  123. package/app/Toolkit/Notification/sendSms.d.ts.map +0 -1
  124. package/app/Toolkit/Notification/sendSms.js +0 -5
  125. package/app/Types/controller.d.ts +0 -42
  126. package/app/Types/controller.d.ts.map +0 -1
  127. package/app/Types/controller.js +0 -1
  128. package/config/broadcast.d.ts +0 -38
  129. package/config/broadcast.d.ts.map +0 -1
  130. package/config/broadcast.js +0 -37
  131. package/config/cache.d.ts +0 -40
  132. package/config/cache.d.ts.map +0 -1
  133. package/config/cache.js +0 -39
  134. package/config/database.d.ts +0 -58
  135. package/config/database.d.ts.map +0 -1
  136. package/config/database.js +0 -65
  137. package/config/mail.d.ts +0 -51
  138. package/config/mail.d.ts.map +0 -1
  139. package/config/mail.js +0 -69
  140. package/config/middleware.d.ts +0 -11
  141. package/config/middleware.d.ts.map +0 -1
  142. package/config/middleware.js +0 -30
  143. package/config/notification.d.ts +0 -33
  144. package/config/notification.d.ts.map +0 -1
  145. package/config/notification.js +0 -33
  146. package/config/queue.d.ts +0 -55
  147. package/config/queue.d.ts.map +0 -1
  148. package/config/queue.js +0 -87
  149. package/config/storage.d.ts +0 -59
  150. package/config/storage.d.ts.map +0 -1
  151. package/config/storage.js +0 -59
  152. package/config/workers.d.ts +0 -54
  153. package/config/workers.d.ts.map +0 -1
  154. package/config/workers.js +0 -83
  155. package/packages/cloudflare-d1-proxy/src/index.d.ts +0 -48
  156. package/packages/cloudflare-d1-proxy/src/index.d.ts.map +0 -1
  157. package/packages/cloudflare-d1-proxy/src/index.js +0 -387
  158. package/packages/cloudflare-kv-proxy/src/index.d.ts +0 -44
  159. package/packages/cloudflare-kv-proxy/src/index.d.ts.map +0 -1
  160. package/packages/cloudflare-kv-proxy/src/index.js +0 -325
  161. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +0 -35
  162. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +0 -1
  163. package/packages/queue-monitor/src/QueueMonitoringService.js +0 -194
  164. package/packages/queue-monitor/src/connection.d.ts +0 -3
  165. package/packages/queue-monitor/src/connection.d.ts.map +0 -1
  166. package/packages/queue-monitor/src/connection.js +0 -1
  167. package/packages/queue-monitor/src/dashboard-ui.d.ts +0 -7
  168. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +0 -1
  169. package/packages/queue-monitor/src/dashboard-ui.js +0 -997
  170. package/packages/queue-monitor/src/driver.d.ts +0 -15
  171. package/packages/queue-monitor/src/driver.d.ts.map +0 -1
  172. package/packages/queue-monitor/src/driver.js +0 -115
  173. package/packages/queue-monitor/src/index.d.ts +0 -71
  174. package/packages/queue-monitor/src/index.d.ts.map +0 -1
  175. package/packages/queue-monitor/src/index.js +0 -296
  176. package/packages/queue-monitor/src/metrics.d.ts +0 -27
  177. package/packages/queue-monitor/src/metrics.d.ts.map +0 -1
  178. package/packages/queue-monitor/src/metrics.js +0 -92
  179. package/packages/queue-monitor/src/worker.d.ts +0 -8
  180. package/packages/queue-monitor/src/worker.d.ts.map +0 -1
  181. package/packages/queue-monitor/src/worker.js +0 -35
  182. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +0 -26
  183. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +0 -1
  184. package/packages/queue-redis/src/BullMQRedisQueue.js +0 -463
  185. package/packages/queue-redis/src/HttpQueueDriver.d.ts +0 -18
  186. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +0 -1
  187. package/packages/queue-redis/src/HttpQueueDriver.js +0 -249
  188. package/packages/queue-redis/src/QueueHttpGateway.d.ts +0 -16
  189. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +0 -1
  190. package/packages/queue-redis/src/QueueHttpGateway.js +0 -217
  191. package/packages/queue-redis/src/RedisPublishClient.d.ts +0 -14
  192. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +0 -1
  193. package/packages/queue-redis/src/RedisPublishClient.js +0 -251
  194. package/packages/queue-redis/src/index.d.ts +0 -12
  195. package/packages/queue-redis/src/index.d.ts.map +0 -1
  196. package/packages/queue-redis/src/index.js +0 -10
  197. package/packages/queue-redis/src/register.d.ts +0 -6
  198. package/packages/queue-redis/src/register.d.ts.map +0 -1
  199. package/packages/queue-redis/src/register.js +0 -21
  200. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +0 -11
  201. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +0 -1
  202. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +0 -32
  203. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +0 -11
  204. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +0 -1
  205. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +0 -46
  206. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +0 -7
  207. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +0 -1
  208. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +0 -44
  209. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +0 -7
  210. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +0 -1
  211. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +0 -104
  212. package/packages/workers/src/AnomalyDetection.d.ts +0 -107
  213. package/packages/workers/src/AnomalyDetection.d.ts.map +0 -1
  214. package/packages/workers/src/AnomalyDetection.js +0 -329
  215. package/packages/workers/src/AutoScaler.d.ts +0 -128
  216. package/packages/workers/src/AutoScaler.d.ts.map +0 -1
  217. package/packages/workers/src/AutoScaler.js +0 -425
  218. package/packages/workers/src/BroadcastWorker.d.ts +0 -24
  219. package/packages/workers/src/BroadcastWorker.d.ts.map +0 -1
  220. package/packages/workers/src/BroadcastWorker.js +0 -24
  221. package/packages/workers/src/CanaryController.d.ts +0 -104
  222. package/packages/workers/src/CanaryController.d.ts.map +0 -1
  223. package/packages/workers/src/CanaryController.js +0 -424
  224. package/packages/workers/src/ChaosEngineering.d.ts +0 -80
  225. package/packages/workers/src/ChaosEngineering.d.ts.map +0 -1
  226. package/packages/workers/src/ChaosEngineering.js +0 -229
  227. package/packages/workers/src/CircuitBreaker.d.ts +0 -107
  228. package/packages/workers/src/CircuitBreaker.d.ts.map +0 -1
  229. package/packages/workers/src/CircuitBreaker.js +0 -374
  230. package/packages/workers/src/ClusterLock.d.ts +0 -91
  231. package/packages/workers/src/ClusterLock.d.ts.map +0 -1
  232. package/packages/workers/src/ClusterLock.js +0 -397
  233. package/packages/workers/src/ComplianceManager.d.ts +0 -178
  234. package/packages/workers/src/ComplianceManager.d.ts.map +0 -1
  235. package/packages/workers/src/ComplianceManager.js +0 -556
  236. package/packages/workers/src/DatacenterOrchestrator.d.ts +0 -134
  237. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +0 -1
  238. package/packages/workers/src/DatacenterOrchestrator.js +0 -404
  239. package/packages/workers/src/DeadLetterQueue.d.ts +0 -123
  240. package/packages/workers/src/DeadLetterQueue.d.ts.map +0 -1
  241. package/packages/workers/src/DeadLetterQueue.js +0 -544
  242. package/packages/workers/src/HealthMonitor.d.ts +0 -43
  243. package/packages/workers/src/HealthMonitor.d.ts.map +0 -1
  244. package/packages/workers/src/HealthMonitor.js +0 -312
  245. package/packages/workers/src/MultiQueueWorker.d.ts +0 -90
  246. package/packages/workers/src/MultiQueueWorker.d.ts.map +0 -1
  247. package/packages/workers/src/MultiQueueWorker.js +0 -282
  248. package/packages/workers/src/NotificationWorker.d.ts +0 -24
  249. package/packages/workers/src/NotificationWorker.d.ts.map +0 -1
  250. package/packages/workers/src/NotificationWorker.js +0 -23
  251. package/packages/workers/src/Observability.d.ts +0 -154
  252. package/packages/workers/src/Observability.d.ts.map +0 -1
  253. package/packages/workers/src/Observability.js +0 -538
  254. package/packages/workers/src/PluginManager.d.ts +0 -124
  255. package/packages/workers/src/PluginManager.d.ts.map +0 -1
  256. package/packages/workers/src/PluginManager.js +0 -392
  257. package/packages/workers/src/PriorityQueue.d.ts +0 -118
  258. package/packages/workers/src/PriorityQueue.d.ts.map +0 -1
  259. package/packages/workers/src/PriorityQueue.js +0 -276
  260. package/packages/workers/src/ResourceMonitor.d.ts +0 -165
  261. package/packages/workers/src/ResourceMonitor.d.ts.map +0 -1
  262. package/packages/workers/src/ResourceMonitor.js +0 -632
  263. package/packages/workers/src/SLAMonitor.d.ts +0 -111
  264. package/packages/workers/src/SLAMonitor.d.ts.map +0 -1
  265. package/packages/workers/src/SLAMonitor.js +0 -274
  266. package/packages/workers/src/WorkerFactory.d.ts +0 -218
  267. package/packages/workers/src/WorkerFactory.d.ts.map +0 -1
  268. package/packages/workers/src/WorkerFactory.js +0 -2253
  269. package/packages/workers/src/WorkerInit.d.ts +0 -86
  270. package/packages/workers/src/WorkerInit.d.ts.map +0 -1
  271. package/packages/workers/src/WorkerInit.js +0 -307
  272. package/packages/workers/src/WorkerMetrics.d.ts +0 -116
  273. package/packages/workers/src/WorkerMetrics.d.ts.map +0 -1
  274. package/packages/workers/src/WorkerMetrics.js +0 -570
  275. package/packages/workers/src/WorkerRegistry.d.ts +0 -152
  276. package/packages/workers/src/WorkerRegistry.d.ts.map +0 -1
  277. package/packages/workers/src/WorkerRegistry.js +0 -396
  278. package/packages/workers/src/WorkerShutdown.d.ts +0 -70
  279. package/packages/workers/src/WorkerShutdown.d.ts.map +0 -1
  280. package/packages/workers/src/WorkerShutdown.js +0 -185
  281. package/packages/workers/src/WorkerVersioning.d.ts +0 -108
  282. package/packages/workers/src/WorkerVersioning.d.ts.map +0 -1
  283. package/packages/workers/src/WorkerVersioning.js +0 -300
  284. package/packages/workers/src/config/workerConfig.d.ts +0 -5
  285. package/packages/workers/src/config/workerConfig.d.ts.map +0 -1
  286. package/packages/workers/src/config/workerConfig.js +0 -25
  287. package/packages/workers/src/createQueueWorker.d.ts +0 -26
  288. package/packages/workers/src/createQueueWorker.d.ts.map +0 -1
  289. package/packages/workers/src/createQueueWorker.js +0 -367
  290. package/packages/workers/src/dashboard/index.d.ts +0 -2
  291. package/packages/workers/src/dashboard/index.d.ts.map +0 -1
  292. package/packages/workers/src/dashboard/index.js +0 -1
  293. package/packages/workers/src/dashboard/types.d.ts +0 -123
  294. package/packages/workers/src/dashboard/types.d.ts.map +0 -1
  295. package/packages/workers/src/dashboard/types.js +0 -1
  296. package/packages/workers/src/dashboard/workers-api.d.ts +0 -5
  297. package/packages/workers/src/dashboard/workers-api.d.ts.map +0 -1
  298. package/packages/workers/src/dashboard/workers-api.js +0 -738
  299. package/packages/workers/src/helper/index.d.ts +0 -6
  300. package/packages/workers/src/helper/index.d.ts.map +0 -1
  301. package/packages/workers/src/helper/index.js +0 -10
  302. package/packages/workers/src/http/WorkerApiController.d.ts +0 -39
  303. package/packages/workers/src/http/WorkerApiController.d.ts.map +0 -1
  304. package/packages/workers/src/http/WorkerApiController.js +0 -313
  305. package/packages/workers/src/http/WorkerController.d.ts +0 -375
  306. package/packages/workers/src/http/WorkerController.d.ts.map +0 -1
  307. package/packages/workers/src/http/WorkerController.js +0 -1454
  308. package/packages/workers/src/http/WorkerMonitoringService.d.ts +0 -12
  309. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +0 -1
  310. package/packages/workers/src/http/WorkerMonitoringService.js +0 -89
  311. package/packages/workers/src/http/middleware/CustomValidation.d.ts +0 -93
  312. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +0 -1
  313. package/packages/workers/src/http/middleware/CustomValidation.js +0 -270
  314. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +0 -4
  315. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +0 -1
  316. package/packages/workers/src/http/middleware/DatacenterValidator.js +0 -94
  317. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +0 -8
  318. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +0 -1
  319. package/packages/workers/src/http/middleware/EditWorkerValidation.js +0 -56
  320. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +0 -4
  321. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +0 -1
  322. package/packages/workers/src/http/middleware/FeaturesValidator.js +0 -61
  323. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +0 -32
  324. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +0 -1
  325. package/packages/workers/src/http/middleware/InfrastructureValidator.js +0 -226
  326. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +0 -4
  327. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +0 -1
  328. package/packages/workers/src/http/middleware/OptionsValidator.js +0 -112
  329. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +0 -8
  330. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +0 -1
  331. package/packages/workers/src/http/middleware/PayloadSanitizer.js +0 -42
  332. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +0 -4
  333. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +0 -1
  334. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +0 -140
  335. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +0 -4
  336. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +0 -1
  337. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +0 -45
  338. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +0 -8
  339. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +0 -1
  340. package/packages/workers/src/http/middleware/ValidateDriver.js +0 -20
  341. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +0 -4
  342. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +0 -1
  343. package/packages/workers/src/http/middleware/VersionSanitizer.js +0 -25
  344. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +0 -4
  345. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +0 -1
  346. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +0 -46
  347. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +0 -28
  348. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +0 -1
  349. package/packages/workers/src/http/middleware/WorkerValidationChain.js +0 -186
  350. package/packages/workers/src/index.d.ts +0 -47
  351. package/packages/workers/src/index.d.ts.map +0 -1
  352. package/packages/workers/src/index.js +0 -48
  353. package/packages/workers/src/routes/workers.d.ts +0 -13
  354. package/packages/workers/src/routes/workers.d.ts.map +0 -1
  355. package/packages/workers/src/routes/workers.js +0 -126
  356. package/packages/workers/src/storage/WorkerStore.d.ts +0 -52
  357. package/packages/workers/src/storage/WorkerStore.d.ts.map +0 -1
  358. package/packages/workers/src/storage/WorkerStore.js +0 -259
  359. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +0 -47
  360. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +0 -1
  361. package/packages/workers/src/telemetry/api/TelemetryAPI.js +0 -219
  362. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +0 -18
  363. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +0 -1
  364. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +0 -140
  365. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +0 -2
  366. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +0 -1
  367. package/packages/workers/src/telemetry/components/AlertPanel.js +0 -13
  368. package/packages/workers/src/telemetry/components/CostTracking.d.ts +0 -2
  369. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +0 -1
  370. package/packages/workers/src/telemetry/components/CostTracking.js +0 -14
  371. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +0 -2
  372. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +0 -1
  373. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +0 -11
  374. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +0 -2
  375. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +0 -1
  376. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +0 -11
  377. package/packages/workers/src/telemetry/index.d.ts +0 -16
  378. package/packages/workers/src/telemetry/index.d.ts.map +0 -1
  379. package/packages/workers/src/telemetry/index.js +0 -60
  380. package/packages/workers/src/telemetry/routes/dashboard.d.ts +0 -7
  381. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +0 -1
  382. package/packages/workers/src/telemetry/routes/dashboard.js +0 -608
  383. package/packages/workers/src/type.d.ts +0 -77
  384. package/packages/workers/src/type.d.ts.map +0 -1
  385. package/packages/workers/src/type.js +0 -1
  386. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +0 -5
  387. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +0 -1
  388. package/packages/workers/src/ui/router/EmbeddedAssets.js +0 -13
  389. package/packages/workers/src/ui/router/ui.d.ts +0 -4
  390. package/packages/workers/src/ui/router/ui.d.ts.map +0 -1
  391. package/packages/workers/src/ui/router/ui.js +0 -208
  392. package/packages/workers/src/ui/types/worker-ui.d.ts +0 -230
  393. package/packages/workers/src/ui/types/worker-ui.d.ts.map +0 -1
  394. package/packages/workers/src/ui/types/worker-ui.js +0 -5
  395. package/routes/api.d.ts +0 -7
  396. package/routes/api.d.ts.map +0 -1
  397. package/routes/api.js +0 -129
  398. package/routes/broadcast.d.ts +0 -9
  399. package/routes/broadcast.d.ts.map +0 -1
  400. package/routes/broadcast.js +0 -27
  401. package/routes/storage.d.ts +0 -4
  402. package/routes/storage.d.ts.map +0 -1
  403. package/routes/storage.js +0 -35
@@ -0,0 +1,64 @@
1
+ import { Env } from '../../config/env.js';
2
+ import { ErrorFactory } from '../../exceptions/ZintrustError.js';
3
+ import { ensureSignedSettings, requestSignedProxy, } from '../adapters/SqlProxyAdapterUtils.js';
4
+ import { resolveSqlProxyMode } from '../adapters/SqlProxyRegistryMode.js';
5
+ const resolveBaseUrl = (input) => {
6
+ const explicit = Env.get(input.urlKey, '').trim();
7
+ if (explicit !== '')
8
+ return explicit;
9
+ if (input.hostKey === undefined ||
10
+ input.portKey === undefined ||
11
+ input.defaultPort === undefined) {
12
+ return '';
13
+ }
14
+ const defaultHost = input.defaultHost ?? '127.0.0.1';
15
+ const rawHost = Env.get(input.hostKey, defaultHost);
16
+ const host = typeof rawHost === 'string' && rawHost.trim() !== '' ? rawHost : defaultHost;
17
+ const port = Env.getInt(input.portKey, input.defaultPort);
18
+ return `http://${host}:${port}`;
19
+ };
20
+ const buildProxySettingsFromEnv = (input) => {
21
+ const baseUrl = resolveBaseUrl(input);
22
+ const keyId = Env.get(input.keyIdKey, Env.get(input.sharedKeyIdKey ?? 'ZT_PROXY_KEY_ID', ''));
23
+ const secret = Env.get(input.secretKey, Env.get(input.sharedSecretKey ?? 'ZT_PROXY_SECRET', ''));
24
+ const timeoutMs = Env.getInt(input.timeoutKey, Env.getInt(input.sharedTimeoutKey ?? 'ZT_PROXY_TIMEOUT_MS', 30000));
25
+ return { baseUrl, keyId, secret, timeoutMs };
26
+ };
27
+ const buildStandardSignedProxyConfig = (input) => {
28
+ const { settings, label } = input;
29
+ const prefix = `${label} proxy`;
30
+ return {
31
+ settings,
32
+ missingUrlMessage: `${label} proxy URL is missing (${input.urlKey})`,
33
+ missingCredentialsMessage: `${label} proxy signing credentials are missing (${input.keyIdKey} / ${input.secretKey})`,
34
+ messages: {
35
+ unauthorized: `${prefix} unauthorized`,
36
+ forbidden: `${prefix} forbidden`,
37
+ rateLimited: `${prefix} rate limited`,
38
+ rejected: `${prefix} rejected request`,
39
+ error: `${prefix} error`,
40
+ timedOut: `${prefix} request timed out`,
41
+ },
42
+ };
43
+ };
44
+ const ensureSignedProxyConfig = (signed) => {
45
+ ensureSignedSettings(signed);
46
+ };
47
+ const requestProxy = async (signed, path, payload) => {
48
+ return requestSignedProxy(signed, path, payload);
49
+ };
50
+ const resolveProxyModeFromEnv = (envKey) => {
51
+ return resolveSqlProxyMode(envKey);
52
+ };
53
+ const createProxyNotReachableCliError = (label, baseUrl, error) => {
54
+ const msg = error instanceof Error ? error.message : String(error);
55
+ return ErrorFactory.createCliError(`${label} is enabled but the proxy server is not reachable at ${baseUrl}. Start the proxy stack (e.g. \`zin cp up\` or \`docker compose -f docker-compose.proxy.yml up -d\`) and re-run \`zin migrate\`.`, { error: msg, baseUrl });
56
+ };
57
+ export const SqlProxyHttpAdapterShared = Object.freeze({
58
+ buildProxySettingsFromEnv,
59
+ buildStandardSignedProxyConfig,
60
+ ensureSignedProxyConfig,
61
+ requestProxy,
62
+ resolveProxyModeFromEnv,
63
+ createProxyNotReachableCliError,
64
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"SqlServerProxyAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/SqlServerProxyAdapter.ts"],"names":[],"mappings":"AACA;;GAEG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AAwO1E,wBAAgB,2BAA2B,IAAI,gBAAgB,CAI9D"}
1
+ {"version":3,"file":"SqlServerProxyAdapter.d.ts","sourceRoot":"","sources":["../../../../src/orm/adapters/SqlServerProxyAdapter.ts"],"names":[],"mappings":"AACA;;GAEG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,sBAAsB,CAAC;AA2P1E,wBAAgB,2BAA2B,IAAI,gBAAgB,CAK9D"}
@@ -2,46 +2,40 @@
2
2
  /**
3
3
  * SQL Server Proxy Adapter (HTTP)
4
4
  */
5
- import { Env } from '../../config/env.js';
6
5
  import { ErrorFactory } from '../../exceptions/ZintrustError.js';
7
6
  import { AdaptersEnum } from '../../migrations/enum/index.js';
8
7
  import { QueryBuilder } from '../QueryBuilder.js';
9
- import { ensureSignedSettings, isRecord, requestSignedProxy, } from '../adapters/SqlProxyAdapterUtils.js';
10
- import { createStatementPayload, getExecMetaWithLastRowId, resolveSqlProxyMode, } from '../adapters/SqlProxyRegistryMode.js';
8
+ import { ensureSignedSettings, isRecord, } from '../adapters/SqlProxyAdapterUtils.js';
9
+ import { SqlProxyHttpAdapterShared } from '../adapters/SqlProxyHttpAdapterShared.js';
10
+ import { createStatementPayload, getExecMetaWithLastRowId, } from '../adapters/SqlProxyRegistryMode.js';
11
11
  const resolveProxyMode = () => {
12
- return resolveSqlProxyMode('SQLSERVER_PROXY_MODE');
13
- };
14
- const resolveBaseUrl = () => {
15
- const explicit = Env.get('SQLSERVER_PROXY_URL', '').trim();
16
- if (explicit !== '')
17
- return explicit;
18
- const host = Env.get('SQLSERVER_PROXY_HOST', '127.0.0.1');
19
- const port = Env.getInt('SQLSERVER_PROXY_PORT', 8793);
20
- return `http://${host}:${port}`;
12
+ return SqlProxyHttpAdapterShared.resolveProxyModeFromEnv('SQLSERVER_PROXY_MODE');
21
13
  };
22
14
  const buildProxySettings = () => {
23
- const baseUrl = resolveBaseUrl();
24
- const keyId = Env.get('SQLSERVER_PROXY_KEY_ID', '');
25
- const secret = Env.get('SQLSERVER_PROXY_SECRET', '');
26
- const timeoutMs = Env.getInt('SQLSERVER_PROXY_TIMEOUT_MS', Env.ZT_PROXY_TIMEOUT_MS ?? 30000);
27
- return { baseUrl, keyId, secret, timeoutMs };
15
+ return SqlProxyHttpAdapterShared.buildProxySettingsFromEnv({
16
+ urlKey: 'SQLSERVER_PROXY_URL',
17
+ hostKey: 'SQLSERVER_PROXY_HOST',
18
+ portKey: 'SQLSERVER_PROXY_PORT',
19
+ defaultHost: '127.0.0.1',
20
+ defaultPort: 8793,
21
+ keyIdKey: 'SQLSERVER_PROXY_KEY_ID',
22
+ secretKey: 'SQLSERVER_PROXY_SECRET',
23
+ timeoutKey: 'SQLSERVER_PROXY_TIMEOUT_MS',
24
+ sharedTimeoutKey: 'ZT_PROXY_TIMEOUT_MS',
25
+ });
26
+ };
27
+ const buildSignedProxyConfig = (settings) => {
28
+ return SqlProxyHttpAdapterShared.buildStandardSignedProxyConfig({
29
+ settings,
30
+ label: 'SQL Server',
31
+ urlKey: 'SQLSERVER_PROXY_URL',
32
+ keyIdKey: 'SQLSERVER_PROXY_KEY_ID',
33
+ secretKey: 'SQLSERVER_PROXY_SECRET',
34
+ });
28
35
  };
29
- const buildSignedProxyConfig = (settings) => ({
30
- settings,
31
- missingUrlMessage: 'SQL Server proxy URL is missing (SQLSERVER_PROXY_URL)',
32
- missingCredentialsMessage: 'SQL Server proxy signing credentials are missing (SQLSERVER_PROXY_KEY_ID / SQLSERVER_PROXY_SECRET)',
33
- messages: {
34
- unauthorized: 'SQL Server proxy unauthorized',
35
- forbidden: 'SQL Server proxy forbidden',
36
- rateLimited: 'SQL Server proxy rate limited',
37
- rejected: 'SQL Server proxy rejected request',
38
- error: 'SQL Server proxy error',
39
- timedOut: 'SQL Server proxy request timed out',
40
- },
41
- });
42
36
  const isQueryResponse = (value) => isRecord(value) && Array.isArray(value['rows']) && typeof value['rowCount'] === 'number';
43
37
  const isQueryOneResponse = (value) => isRecord(value) && 'row' in value;
44
- const requestProxy = async (settings, path, payload) => requestSignedProxy(buildSignedProxyConfig(settings), path, payload);
38
+ const requestProxy = async (signed, path, payload) => SqlProxyHttpAdapterShared.requestProxy(signed, path, payload);
45
39
  const requireConnected = (state) => {
46
40
  if (!state.connected)
47
41
  throw ErrorFactory.createConnectionError('Database not connected');
@@ -61,8 +55,8 @@ const createQuery = (state) => async (sql, parameters) => {
61
55
  requireConnected(state);
62
56
  const mode = resolveProxyMode();
63
57
  const out = mode === 'registry'
64
- ? await requestProxy(state.settings, '/zin/sqlserver/statement', await createStatementPayload(sql, parameters))
65
- : await requestProxy(state.settings, '/zin/sqlserver/query', {
58
+ ? await requestProxy(state.signed, '/zin/sqlserver/statement', await createStatementPayload(sql, parameters))
59
+ : await requestProxy(state.signed, '/zin/sqlserver/query', {
66
60
  sql,
67
61
  params: parameters,
68
62
  });
@@ -72,13 +66,13 @@ const createQueryOne = (state) => async (sql, parameters) => {
72
66
  requireConnected(state);
73
67
  const mode = resolveProxyMode();
74
68
  if (mode !== 'registry') {
75
- const out = await requestProxy(state.settings, '/zin/sqlserver/queryOne', {
69
+ const out = await requestProxy(state.signed, '/zin/sqlserver/queryOne', {
76
70
  sql,
77
71
  params: parameters,
78
72
  });
79
73
  return out.row ?? null;
80
74
  }
81
- const out = await requestProxy(state.settings, '/zin/sqlserver/statement', await createStatementPayload(sql, parameters));
75
+ const out = await requestProxy(state.signed, '/zin/sqlserver/statement', await createStatementPayload(sql, parameters));
82
76
  if (isQueryOneResponse(out))
83
77
  return out.row ?? null;
84
78
  if (isQueryResponse(out))
@@ -123,7 +117,7 @@ const createAdapter = (state) => {
123
117
  const queryOne = createQueryOne(state);
124
118
  const adapter = {
125
119
  async connect() {
126
- ensureSignedSettings(buildSignedProxyConfig(state.settings));
120
+ ensureSignedSettings(state.signed);
127
121
  state.connected = true;
128
122
  },
129
123
  async disconnect() {
@@ -135,6 +129,28 @@ const createAdapter = (state) => {
135
129
  ping: createPing(query),
136
130
  transaction: createTransaction(state, () => adapter),
137
131
  rawQuery: createRawQuery(query),
132
+ async ensureMigrationsTable() {
133
+ requireConnected(state);
134
+ try {
135
+ await query(`IF OBJECT_ID(N'migrations', N'U') IS NULL
136
+ BEGIN
137
+ CREATE TABLE migrations (
138
+ id INT IDENTITY(1,1) PRIMARY KEY,
139
+ name NVARCHAR(255) NOT NULL,
140
+ scope NVARCHAR(255) NOT NULL DEFAULT 'global',
141
+ service NVARCHAR(255) NOT NULL DEFAULT '',
142
+ batch INT NOT NULL,
143
+ status NVARCHAR(255) NOT NULL,
144
+ applied_at DATETIME2 NULL,
145
+ created_at DATETIME2 NOT NULL DEFAULT SYSUTCDATETIME(),
146
+ CONSTRAINT UQ_migrations_name_scope_service UNIQUE (name, scope, service)
147
+ );
148
+ END`, []);
149
+ }
150
+ catch (error) {
151
+ throw SqlProxyHttpAdapterShared.createProxyNotReachableCliError('SQL Server proxy', state.settings.baseUrl, error);
152
+ }
153
+ },
138
154
  getType() {
139
155
  return AdaptersEnum.sqlserver;
140
156
  },
@@ -149,6 +165,7 @@ const createAdapter = (state) => {
149
165
  };
150
166
  export function createSqlServerProxyAdapter() {
151
167
  const settings = buildProxySettings();
152
- const state = { connected: false, inTransaction: false, settings };
168
+ const signed = buildSignedProxyConfig(settings);
169
+ const state = { connected: false, inTransaction: false, settings, signed };
153
170
  return createAdapter(state);
154
171
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MigrationStore.d.ts","sourceRoot":"","sources":["../../../../src/orm/migrations/MigrationStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA8ChG,eAAO,MAAM,cAAc;oBACH,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;8BASzC,SAAS,UACN,cAAc,YACZ,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;sBAiBZ,SAAS,SACN,cAAc,WACZ,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;sBAyBlC,SAAS,UACL;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,IAAI,CAAC;mBAuCV,SAAS,UACL;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,cAAc,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,qBAAqB,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GACA,OAAO,CAAC,IAAI,CAAC;kCAiBV,SAAS,UACL;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GACnE,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;8BAyB5C,SAAS,UACL;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,MAAM,EAAE,CAAC;qBAgBd,SAAS,UACL;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAC/D,OAAO,CAAC,IAAI,CAAC;EAShB,CAAC"}
1
+ {"version":3,"file":"MigrationStore.d.ts","sourceRoot":"","sources":["../../../../src/orm/migrations/MigrationStore.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI/C,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA0DhG,eAAO,MAAM,cAAc;oBACH,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;8BAkBzC,SAAS,UACN,cAAc,YACZ,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;sBAiBZ,SAAS,SACN,cAAc,WACZ,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;sBAyBlC,SAAS,UACL;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAC9E,OAAO,CAAC,IAAI,CAAC;mBAuCV,SAAS,UACL;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,cAAc,CAAC;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,qBAAqB,CAAC;QAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GACA,OAAO,CAAC,IAAI,CAAC;kCAiBV,SAAS,UACL;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GACnE,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;8BAyB5C,SAAS,UACL;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,MAAM,EAAE,CAAC;qBAgBd,SAAS,UACL;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAC/D,OAAO,CAAC,IAAI,CAAC;EAShB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { Env } from '../../config/env.js';
1
2
  import { ErrorFactory } from '../../exceptions/ZintrustError.js';
2
3
  import { QueryBuilder } from '../QueryBuilder.js';
3
4
  function nowIso() {
@@ -21,7 +22,19 @@ const hasMigrationsTableSupport = (adapter) => {
21
22
  };
22
23
  const requireMigrationsTableSupport = (adapter) => {
23
24
  if (!hasMigrationsTableSupport(adapter)) {
24
- throw ErrorFactory.createCliError('Migrations tracking is not supported for this database adapter yet.');
25
+ const isSqlProxyEnabled = Env.getBool('USE_POSTGRES_PROXY', false) ||
26
+ Env.getBool('USE_MYSQL_PROXY', false) ||
27
+ Env.getBool('USE_SQLSERVER_PROXY', false) ||
28
+ Env.get('POSTGRES_PROXY_URL', '').trim() !== '' ||
29
+ Env.get('MYSQL_PROXY_URL', '').trim() !== '' ||
30
+ Env.get('SQLSERVER_PROXY_URL', '').trim() !== '';
31
+ const hint = isSqlProxyEnabled
32
+ ? 'If you are using SQL proxy adapters, ensure the proxy stack is running (e.g. `zin cp up` or `docker compose -f docker-compose.proxy.yml up -d`).'
33
+ : undefined;
34
+ let message = 'Migrations tracking is not supported for this database adapter yet.';
35
+ if (hint)
36
+ message = `${message} ${hint}`;
37
+ throw ErrorFactory.createCliError(message);
25
38
  }
26
39
  return async () => {
27
40
  await adapter.ensureMigrationsTable();
@@ -32,6 +45,14 @@ export const MigrationStore = Object.freeze({
32
45
  assertDbSupportsMigrations(db);
33
46
  const adapter = db.getAdapterInstance(false);
34
47
  const ensure = requireMigrationsTableSupport(adapter);
48
+ // getAdapterInstance(false) returns a raw adapter without going through Database.query()
49
+ // which auto-connects; ensure we're connected before creating the migrations table.
50
+ if (typeof db.connect === 'function') {
51
+ await db.connect();
52
+ }
53
+ else if (typeof adapter.connect === 'function') {
54
+ await adapter.connect();
55
+ }
35
56
  await ensure();
36
57
  },
37
58
  async getLastCompletedBatch(db, scope = 'global', service = '') {
@@ -1,3 +1,3 @@
1
- export { ZintrustD1Proxy } from '../../../packages/cloudflare-d1-proxy/src/index.js';
2
- export { default } from '../../../packages/cloudflare-d1-proxy/src/index.js';
1
+ export declare const ZintrustD1Proxy: Record<string, unknown>;
2
+ export default ZintrustD1Proxy;
3
3
  //# sourceMappingURL=ZintrustD1Proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZintrustD1Proxy.d.ts","sourceRoot":"","sources":["../../../../src/proxy/d1/ZintrustD1Proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"ZintrustD1Proxy.d.ts","sourceRoot":"","sources":["../../../../src/proxy/d1/ZintrustD1Proxy.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,eAAe,EAuBZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExC,eAAe,eAAe,CAAC"}
@@ -1,2 +1,39 @@
1
- export { ZintrustD1Proxy } from '../../../packages/cloudflare-d1-proxy/src/index.js';
2
- export { default } from '../../../packages/cloudflare-d1-proxy/src/index.js';
1
+ import { isUndefinedOrNull } from '../../helper/index.js';
2
+ import { Logger } from '../../config/logger.js';
3
+ const MODULE_ID = '@zintrust/' + 'cloudflare-d1-proxy';
4
+ let cached = null;
5
+ const load = async () => {
6
+ if (cached !== null)
7
+ return cached;
8
+ try {
9
+ // Non-literal specifier to avoid tsconfig path alias rewriting in dist builds.
10
+ cached = (await import(MODULE_ID));
11
+ return cached;
12
+ }
13
+ catch (error) {
14
+ Logger.error(`Optional dependency not installed: ${MODULE_ID}. Install it to use ZintrustD1Proxy.`, { error: error instanceof Error ? error.message : String(error) });
15
+ }
16
+ return undefined;
17
+ };
18
+ // Proxy surface that defers loading until first usage.
19
+ export const ZintrustD1Proxy = new Proxy({}, {
20
+ get(_target, prop) {
21
+ if (prop === Symbol.toStringTag)
22
+ return 'ZintrustD1Proxy';
23
+ return async (...args) => {
24
+ const mod = await load();
25
+ if (isUndefinedOrNull(mod) || typeof mod !== 'object')
26
+ return undefined;
27
+ const target = mod.ZintrustD1Proxy ?? mod.default;
28
+ if (!target || typeof target !== 'object') {
29
+ Logger.error(`Invalid module export from ${MODULE_ID}: missing ZintrustD1Proxy`);
30
+ return undefined;
31
+ }
32
+ const value = target[prop];
33
+ if (typeof value !== 'function')
34
+ return value;
35
+ return value(...args);
36
+ };
37
+ },
38
+ });
39
+ export default ZintrustD1Proxy;
@@ -1,3 +1,3 @@
1
- export { ZintrustKvProxy } from '../../../packages/cloudflare-kv-proxy/src/index.js';
2
- export { default } from '../../../packages/cloudflare-kv-proxy/src/index.js';
1
+ export declare const ZintrustKvProxy: Record<string, unknown>;
2
+ export default ZintrustKvProxy;
3
3
  //# sourceMappingURL=ZintrustKvProxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ZintrustKvProxy.d.ts","sourceRoot":"","sources":["../../../../src/proxy/kv/ZintrustKvProxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"ZintrustKvProxy.d.ts","sourceRoot":"","sources":["../../../../src/proxy/kv/ZintrustKvProxy.ts"],"names":[],"mappings":"AA2BA,eAAO,MAAM,eAAe,EAuBZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAExC,eAAe,eAAe,CAAC"}
@@ -1,2 +1,38 @@
1
- export { ZintrustKvProxy } from '../../../packages/cloudflare-kv-proxy/src/index.js';
2
- export { default } from '../../../packages/cloudflare-kv-proxy/src/index.js';
1
+ import { isUndefinedOrNull } from '../../helper/index.js';
2
+ import { Logger } from '../../config/logger.js';
3
+ const MODULE_ID = '@zintrust/' + 'cloudflare-kv-proxy';
4
+ let cached = null;
5
+ const load = async () => {
6
+ if (cached !== null)
7
+ return cached;
8
+ try {
9
+ // Non-literal specifier to avoid tsconfig path alias rewriting in dist builds.
10
+ cached = (await import(MODULE_ID));
11
+ return cached;
12
+ }
13
+ catch (error) {
14
+ Logger.error(`Optional dependency not installed: ${MODULE_ID}. Install it to use ZintrustKvProxy.`, { error: error instanceof Error ? error.message : String(error) });
15
+ }
16
+ return undefined;
17
+ };
18
+ export const ZintrustKvProxy = new Proxy({}, {
19
+ get(_target, prop) {
20
+ if (prop === Symbol.toStringTag)
21
+ return 'ZintrustKvProxy';
22
+ return async (...args) => {
23
+ const mod = await load();
24
+ if (isUndefinedOrNull(mod) || typeof mod !== 'object')
25
+ return undefined;
26
+ const target = mod.ZintrustKvProxy ?? mod.default;
27
+ if (!target || typeof target !== 'object') {
28
+ Logger.error(`Invalid module export from ${MODULE_ID}: missing ZintrustKvProxy`);
29
+ return undefined;
30
+ }
31
+ const value = target[prop];
32
+ if (typeof value !== 'function')
33
+ return value;
34
+ return value(...args);
35
+ };
36
+ },
37
+ });
38
+ export default ZintrustKvProxy;
package/src/routes/doc.js CHANGED
@@ -16,7 +16,7 @@ export { MIME_TYPES_MAP } from './common.js';
16
16
  */
17
17
  // Backward-compatible re-exports
18
18
  export { findPackageRoot, findPackageRootAsync, getFrameworkPublicRoots, getFrameworkPublicRootsAsync, getPublicRoot, getPublicRootAsync, } from './publicRoot.js';
19
- const PUBLIC_ROOT_CACHE_TTL_MS = 3000000000; //50 minutes, effectively caching for the duration of typical dev sessions
19
+ const PUBLIC_ROOT_CACHE_TTL_MS = 3000000000; // 50 minutes, can be adjusted as needed
20
20
  let cachedPublicRoot = null;
21
21
  const getCachedPublicRootAsync = async () => {
22
22
  const now = Date.now();
@@ -1 +1 @@
1
- {"version":3,"file":"errorPages.d.ts","sourceRoot":"","sources":["../../../src/routes/errorPages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AA8JhD,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,UAAU,SAAS,KAAG,OAkD1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,SAAS,MAAM,EACf,UAAU,SAAS,KAClB,OAAO,CAAC,OAAO,CA4CjB,CAAC;AAmBF,eAAO,MAAM,oBAAoB,GAAI,UAAU,SAAS,KAAG,OAE1D,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,UAAU,SAAS,KAAG,OAAO,CAAC,OAAO,CAKpF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,OAAO,KAAG,IAO1D,CAAC;;uCAP+C,OAAO,KAAG,IAAI;mCAjIlB,MAAM,YAAY,SAAS,KAAG,OAAO;;AA0IlF,wBAAiE"}
1
+ {"version":3,"file":"errorPages.d.ts","sourceRoot":"","sources":["../../../src/routes/errorPages.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAuKhD,eAAO,MAAM,mBAAmB,GAAI,SAAS,MAAM,EAAE,UAAU,SAAS,KAAG,OAkD1E,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,SAAS,MAAM,EACf,UAAU,SAAS,KAClB,OAAO,CAAC,OAAO,CA4CjB,CAAC;AAmBF,eAAO,MAAM,oBAAoB,GAAI,UAAU,SAAS,KAAG,OAE1D,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAU,UAAU,SAAS,KAAG,OAAO,CAAC,OAAO,CAKpF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,OAAO,KAAG,IAO1D,CAAC;;uCAP+C,OAAO,KAAG,IAAI;mCAjIlB,MAAM,YAAY,SAAS,KAAG,OAAO;;AA0IlF,wBAAiE"}
@@ -10,10 +10,17 @@ import { Router } from './Router.js';
10
10
  import { ErrorFactory } from '../exceptions/ZintrustError.js';
11
11
  import * as fs from '../node-singletons/fs.js';
12
12
  import * as path from '../node-singletons/path.js';
13
+ let cachedCandidateRoots = null;
13
14
  const getCandidatePublicRoots = () => {
14
- const roots = [path.join(process.cwd(), 'public'), ...getFrameworkPublicRoots()];
15
+ const cwd = process.cwd();
16
+ if (cachedCandidateRoots !== null && cachedCandidateRoots.cwd === cwd) {
17
+ return cachedCandidateRoots.roots;
18
+ }
19
+ const roots = [path.join(cwd, 'public'), ...getFrameworkPublicRoots()];
15
20
  const unique = new Set(roots.map((root) => root.trim()).filter((root) => root !== ''));
16
- return [...unique];
21
+ const resolved = [...unique];
22
+ cachedCandidateRoots = { cwd, roots: resolved };
23
+ return resolved;
17
24
  };
18
25
  const pathExistsAsync = async (candidate) => {
19
26
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"CsrfTokenManager.d.ts","sourceRoot":"","sources":["../../../src/security/CsrfTokenManager.ts"],"names":[],"mappings":"AACA;;;GAGG;AAQH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC/D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,iBAAiB,CAAC;CAC9D;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAkSF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAE7B,CAAC"}
1
+ {"version":3,"file":"CsrfTokenManager.d.ts","sourceRoot":"","sources":["../../../src/security/CsrfTokenManager.ts"],"names":[],"mappings":"AACA;;;GAGG;AAQH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClE,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAC/D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,iBAAiB,CAAC;CAC9D;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE/C,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAyVF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,oBAE7B,CAAC"}
@@ -121,12 +121,54 @@ const createRedisClientFactory = (options) => {
121
121
  return redisClient;
122
122
  };
123
123
  };
124
+ const createRedisPrefixVersioner = (keyPrefix, getRedisClient) => {
125
+ const versionKey = `${keyPrefix}__v`;
126
+ let cachedVersion = null;
127
+ const getVersion = async () => {
128
+ if (cachedVersion !== null)
129
+ return cachedVersion;
130
+ const client = getRedisClient();
131
+ const raw = await client.get(versionKey);
132
+ const v = (raw ?? '1').trim();
133
+ cachedVersion = v === '' ? '1' : v;
134
+ return cachedVersion;
135
+ };
136
+ const getEffectivePrefix = async () => {
137
+ const v = await getVersion();
138
+ return `${keyPrefix}${v}:`;
139
+ };
140
+ const bumpPrefixVersion = async () => {
141
+ const client = getRedisClient();
142
+ // INCR creates the key if it does not exist.
143
+ const next = await client.incr(versionKey);
144
+ cachedVersion = String(next);
145
+ };
146
+ return {
147
+ getEffectivePrefix,
148
+ bumpPrefixVersion,
149
+ };
150
+ };
151
+ const scanRedisKeys = async (client, match) => {
152
+ const keys = [];
153
+ const stream = client.scanStream({ match, count: 200 });
154
+ return new Promise((resolve, reject) => {
155
+ stream.on('data', (resultKeys) => {
156
+ if (Array.isArray(resultKeys) && resultKeys.length) {
157
+ keys.push(...resultKeys);
158
+ }
159
+ });
160
+ stream.on('end', () => resolve(keys));
161
+ stream.on('error', (err) => reject(err));
162
+ });
163
+ };
124
164
  const createRedisTokenOperations = (keyPrefix, tokenTtl, getRedisClient) => {
125
- const buildKey = (sessionId) => `${keyPrefix}${sessionId}`;
165
+ const { getEffectivePrefix, bumpPrefixVersion } = createRedisPrefixVersioner(keyPrefix, getRedisClient);
166
+ const buildKey = (prefix, sessionId) => `${prefix}${sessionId}`;
126
167
  const fetchTokenData = async (sessionId) => {
127
168
  try {
128
169
  const client = getRedisClient();
129
- const payload = await client.get(buildKey(sessionId));
170
+ const prefix = await getEffectivePrefix();
171
+ const payload = await client.get(buildKey(prefix, sessionId));
130
172
  if (payload === null || payload === '')
131
173
  return null;
132
174
  const parsed = JSON.parse(payload);
@@ -140,13 +182,14 @@ const createRedisTokenOperations = (keyPrefix, tokenTtl, getRedisClient) => {
140
182
  const saveTokenData = async (data) => {
141
183
  try {
142
184
  const client = getRedisClient();
185
+ const prefix = await getEffectivePrefix();
143
186
  const stored = {
144
187
  token: data.token,
145
188
  sessionId: data.sessionId,
146
189
  createdAt: data.createdAt.getTime(),
147
190
  expiresAt: data.expiresAt.getTime(),
148
191
  };
149
- await client.set(buildKey(data.sessionId), JSON.stringify(stored), 'PX', tokenTtl);
192
+ await client.set(buildKey(prefix, data.sessionId), JSON.stringify(stored), 'PX', tokenTtl);
150
193
  }
151
194
  catch (error) {
152
195
  Logger.error('CSRF Redis save failed', error);
@@ -155,37 +198,30 @@ const createRedisTokenOperations = (keyPrefix, tokenTtl, getRedisClient) => {
155
198
  const deleteToken = async (sessionId) => {
156
199
  try {
157
200
  const client = getRedisClient();
158
- await client.del(buildKey(sessionId));
201
+ const prefix = await getEffectivePrefix();
202
+ await client.del(buildKey(prefix, sessionId));
159
203
  }
160
204
  catch (error) {
161
205
  Logger.error('CSRF Redis delete failed', error);
162
206
  }
163
207
  };
164
- const scanKeys = async () => {
208
+ const scanKeys = async (effectivePrefix) => {
165
209
  const client = getRedisClient();
166
- const keys = [];
167
- const stream = client.scanStream({ match: `${keyPrefix}*`, count: 200 });
168
- return new Promise((resolve, reject) => {
169
- stream.on('data', (resultKeys) => {
170
- if (Array.isArray(resultKeys) && resultKeys.length) {
171
- keys.push(...resultKeys);
172
- }
173
- });
174
- stream.on('end', () => resolve(keys));
175
- stream.on('error', (err) => reject(err));
176
- });
210
+ return scanRedisKeys(client, `${effectivePrefix}*`);
177
211
  };
178
212
  return {
179
213
  fetchTokenData,
180
214
  saveTokenData,
181
215
  deleteToken,
182
216
  scanKeys,
217
+ getEffectivePrefix,
218
+ bumpPrefixVersion,
183
219
  };
184
220
  };
185
221
  const createRedisManager = (tokenLength, tokenTtl, options) => {
186
222
  const keyPrefix = options?.keyPrefix ?? RedisKeys.getCsrfPrefix();
187
223
  const getRedisClient = createRedisClientFactory(options);
188
- const { fetchTokenData, saveTokenData, deleteToken, scanKeys } = createRedisTokenOperations(keyPrefix, tokenTtl, getRedisClient);
224
+ const { fetchTokenData, saveTokenData, deleteToken, scanKeys, getEffectivePrefix, bumpPrefixVersion, } = createRedisTokenOperations(keyPrefix, tokenTtl, getRedisClient);
189
225
  return {
190
226
  async generateToken(sessionId) {
191
227
  const token = randomBytes(tokenLength).toString('hex');
@@ -232,11 +268,8 @@ const createRedisManager = (tokenLength, tokenTtl, options) => {
232
268
  },
233
269
  async clear() {
234
270
  try {
235
- const keys = await scanKeys();
236
- if (keys.length === 0)
237
- return;
238
- const client = getRedisClient();
239
- await client.del(...keys);
271
+ // Logical clear: bump the version so future operations use a new prefix.
272
+ await bumpPrefixVersion();
240
273
  }
241
274
  catch (error) {
242
275
  Logger.error('CSRF Redis clear failed', error);
@@ -244,7 +277,8 @@ const createRedisManager = (tokenLength, tokenTtl, options) => {
244
277
  },
245
278
  async getTokenCount() {
246
279
  try {
247
- const keys = await scanKeys();
280
+ const prefix = await getEffectivePrefix();
281
+ const keys = await scanKeys(prefix);
248
282
  return keys.length;
249
283
  }
250
284
  catch (error) {
@@ -3,6 +3,7 @@
3
3
  * JSON Web Token generation, verification, and claims management
4
4
  * Uses native Node.js crypto module (zero external dependencies)
5
5
  */
6
+ import type { AuthorizationHeader } from './JwtSessions';
6
7
  export type JwtAlgorithm = 'HS256' | 'HS512' | 'RS256';
7
8
  export interface JwtPayload {
8
9
  sub?: string;
@@ -33,7 +34,9 @@ export interface IJwtManager {
33
34
  }
34
35
  export interface JwtManagerType {
35
36
  create(): IJwtManager;
36
- signAccessToken: (payload: JwtPayload, expiresIn?: number) => string;
37
+ signAccessToken: (payload: JwtPayload, expiresIn?: number) => Promise<string>;
38
+ logout: (authHeader: AuthorizationHeader) => Promise<void>;
39
+ logoutAll: (sub: string) => Promise<void>;
37
40
  }
38
41
  /**
39
42
  * JwtManager namespace - sealed for immutability
@@ -1 +1 @@
1
- {"version":3,"file":"JwtManager.d.ts","sourceRoot":"","sources":["../../../src/security/JwtManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAC5D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,aAAa,IAAI,MAAM,CAAC;CACzB;AAQD,MAAM,WAAW,cAAc;IAC7B,MAAM,IAAI,WAAW,CAAC;IACtB,eAAe,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;CACtE;AA6ED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAGvB,CAAC"}
1
+ {"version":3,"file":"JwtManager.d.ts","sourceRoot":"","sources":["../../../src/security/JwtManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGjE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IACxD,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IAC5D,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;IAClC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,aAAa,IAAI,MAAM,CAAC;CACzB;AAQD,MAAM,WAAW,cAAc;IAC7B,MAAM,IAAI,WAAW,CAAC;IACtB,eAAe,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9E,MAAM,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAyFD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,cAKvB,CAAC"}