@zintrust/core 0.1.42 → 0.1.43

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 (365) 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 +201 -0
  4. package/app/Controllers/UserController.d.ts +9 -0
  5. package/app/Controllers/UserController.d.ts.map +1 -0
  6. package/app/Controllers/UserController.js +8 -0
  7. package/app/Controllers/UserQueryBuilderController.d.ts +16 -0
  8. package/app/Controllers/UserQueryBuilderController.d.ts.map +1 -0
  9. package/app/Controllers/UserQueryBuilderController.js +404 -0
  10. package/app/Middleware/ProfilerMiddleware.d.ts +12 -0
  11. package/app/Middleware/ProfilerMiddleware.d.ts.map +1 -0
  12. package/app/Middleware/ProfilerMiddleware.js +47 -0
  13. package/app/Middleware/index.d.ts +59 -0
  14. package/app/Middleware/index.d.ts.map +1 -0
  15. package/app/Middleware/index.js +215 -0
  16. package/app/Models/Post.d.ts +14 -0
  17. package/app/Models/Post.d.ts.map +1 -0
  18. package/app/Models/Post.js +27 -0
  19. package/app/Models/User.d.ts +14 -0
  20. package/app/Models/User.d.ts.map +1 -0
  21. package/app/Models/User.js +44 -0
  22. package/app/Schedules/JobTracking.d.ts +3 -0
  23. package/app/Schedules/JobTracking.d.ts.map +1 -0
  24. package/app/Schedules/JobTracking.js +13 -0
  25. package/app/Schedules/index.d.ts +2 -0
  26. package/app/Schedules/index.d.ts.map +1 -0
  27. package/app/Schedules/index.js +1 -0
  28. package/app/Toolkit/Broadcast/sendBroadcast.d.ts +6 -0
  29. package/app/Toolkit/Broadcast/sendBroadcast.d.ts.map +1 -0
  30. package/app/Toolkit/Broadcast/sendBroadcast.js +5 -0
  31. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts +6 -0
  32. package/app/Toolkit/Mail/sendWelcomeEmail.d.ts.map +1 -0
  33. package/app/Toolkit/Mail/sendWelcomeEmail.js +20 -0
  34. package/app/Toolkit/Notification/sendSlackNotification.d.ts +8 -0
  35. package/app/Toolkit/Notification/sendSlackNotification.d.ts.map +1 -0
  36. package/app/Toolkit/Notification/sendSlackNotification.js +5 -0
  37. package/app/Toolkit/Notification/sendSms.d.ts +6 -0
  38. package/app/Toolkit/Notification/sendSms.d.ts.map +1 -0
  39. package/app/Toolkit/Notification/sendSms.js +5 -0
  40. package/app/Types/controller.d.ts +42 -0
  41. package/app/Types/controller.d.ts.map +1 -0
  42. package/app/Types/controller.js +1 -0
  43. package/config/broadcast.d.ts +38 -0
  44. package/config/broadcast.d.ts.map +1 -0
  45. package/config/broadcast.js +37 -0
  46. package/config/cache.d.ts +40 -0
  47. package/config/cache.d.ts.map +1 -0
  48. package/config/cache.js +39 -0
  49. package/config/database.d.ts +58 -0
  50. package/config/database.d.ts.map +1 -0
  51. package/config/database.js +65 -0
  52. package/config/mail.d.ts +51 -0
  53. package/config/mail.d.ts.map +1 -0
  54. package/config/mail.js +69 -0
  55. package/config/middleware.d.ts +11 -0
  56. package/config/middleware.d.ts.map +1 -0
  57. package/config/middleware.js +30 -0
  58. package/config/notification.d.ts +33 -0
  59. package/config/notification.d.ts.map +1 -0
  60. package/config/notification.js +33 -0
  61. package/config/queue.d.ts +55 -0
  62. package/config/queue.d.ts.map +1 -0
  63. package/config/queue.js +87 -0
  64. package/config/storage.d.ts +59 -0
  65. package/config/storage.d.ts.map +1 -0
  66. package/config/storage.js +59 -0
  67. package/config/workers.d.ts +54 -0
  68. package/config/workers.d.ts.map +1 -0
  69. package/config/workers.js +83 -0
  70. package/package.json +11 -5
  71. package/packages/cloudflare-d1-proxy/src/index.d.ts +48 -0
  72. package/packages/cloudflare-d1-proxy/src/index.d.ts.map +1 -0
  73. package/packages/cloudflare-d1-proxy/src/index.js +387 -0
  74. package/packages/cloudflare-kv-proxy/src/index.d.ts +44 -0
  75. package/packages/cloudflare-kv-proxy/src/index.d.ts.map +1 -0
  76. package/packages/cloudflare-kv-proxy/src/index.js +325 -0
  77. package/packages/queue-monitor/src/QueueMonitoringService.d.ts +35 -0
  78. package/packages/queue-monitor/src/QueueMonitoringService.d.ts.map +1 -0
  79. package/packages/queue-monitor/src/QueueMonitoringService.js +194 -0
  80. package/packages/queue-monitor/src/connection.d.ts +3 -0
  81. package/packages/queue-monitor/src/connection.d.ts.map +1 -0
  82. package/packages/queue-monitor/src/connection.js +1 -0
  83. package/packages/queue-monitor/src/dashboard-ui.d.ts +7 -0
  84. package/packages/queue-monitor/src/dashboard-ui.d.ts.map +1 -0
  85. package/packages/queue-monitor/src/dashboard-ui.js +997 -0
  86. package/packages/queue-monitor/src/driver.d.ts +15 -0
  87. package/packages/queue-monitor/src/driver.d.ts.map +1 -0
  88. package/packages/queue-monitor/src/driver.js +115 -0
  89. package/packages/queue-monitor/src/index.d.ts +71 -0
  90. package/packages/queue-monitor/src/index.d.ts.map +1 -0
  91. package/packages/queue-monitor/src/index.js +296 -0
  92. package/packages/queue-monitor/src/metrics.d.ts +27 -0
  93. package/packages/queue-monitor/src/metrics.d.ts.map +1 -0
  94. package/packages/queue-monitor/src/metrics.js +92 -0
  95. package/packages/queue-monitor/src/worker.d.ts +8 -0
  96. package/packages/queue-monitor/src/worker.d.ts.map +1 -0
  97. package/packages/queue-monitor/src/worker.js +35 -0
  98. package/packages/queue-redis/src/BullMQRedisQueue.d.ts +26 -0
  99. package/packages/queue-redis/src/BullMQRedisQueue.d.ts.map +1 -0
  100. package/packages/queue-redis/src/BullMQRedisQueue.js +463 -0
  101. package/packages/queue-redis/src/HttpQueueDriver.d.ts +18 -0
  102. package/packages/queue-redis/src/HttpQueueDriver.d.ts.map +1 -0
  103. package/packages/queue-redis/src/HttpQueueDriver.js +249 -0
  104. package/packages/queue-redis/src/QueueHttpGateway.d.ts +16 -0
  105. package/packages/queue-redis/src/QueueHttpGateway.d.ts.map +1 -0
  106. package/packages/queue-redis/src/QueueHttpGateway.js +217 -0
  107. package/packages/queue-redis/src/RedisPublishClient.d.ts +14 -0
  108. package/packages/queue-redis/src/RedisPublishClient.d.ts.map +1 -0
  109. package/packages/queue-redis/src/RedisPublishClient.js +251 -0
  110. package/packages/queue-redis/src/index.d.ts +12 -0
  111. package/packages/queue-redis/src/index.d.ts.map +1 -0
  112. package/packages/queue-redis/src/index.js +10 -0
  113. package/packages/queue-redis/src/register.d.ts +6 -0
  114. package/packages/queue-redis/src/register.d.ts.map +1 -0
  115. package/packages/queue-redis/src/register.js +21 -0
  116. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts +11 -0
  117. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.d.ts.map +1 -0
  118. package/packages/workers/migrations/20260119100000_create_zintrust_workers_table.js +32 -0
  119. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts +11 -0
  120. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.d.ts.map +1 -0
  121. package/packages/workers/migrations/20260123180000_create_queue_jobs_table.js +46 -0
  122. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts +7 -0
  123. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.d.ts.map +1 -0
  124. package/packages/workers/migrations/20260213142000_create_zintrust_job_tracking_tables.js +44 -0
  125. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts +7 -0
  126. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.d.ts.map +1 -0
  127. package/packages/workers/migrations/20260213183000_expand_zintrust_job_tracking_reliability_tables.js +104 -0
  128. package/packages/workers/src/AnomalyDetection.d.ts +107 -0
  129. package/packages/workers/src/AnomalyDetection.d.ts.map +1 -0
  130. package/packages/workers/src/AnomalyDetection.js +329 -0
  131. package/packages/workers/src/AutoScaler.d.ts +128 -0
  132. package/packages/workers/src/AutoScaler.d.ts.map +1 -0
  133. package/packages/workers/src/AutoScaler.js +425 -0
  134. package/packages/workers/src/BroadcastWorker.d.ts +24 -0
  135. package/packages/workers/src/BroadcastWorker.d.ts.map +1 -0
  136. package/packages/workers/src/BroadcastWorker.js +24 -0
  137. package/packages/workers/src/CanaryController.d.ts +104 -0
  138. package/packages/workers/src/CanaryController.d.ts.map +1 -0
  139. package/packages/workers/src/CanaryController.js +424 -0
  140. package/packages/workers/src/ChaosEngineering.d.ts +80 -0
  141. package/packages/workers/src/ChaosEngineering.d.ts.map +1 -0
  142. package/packages/workers/src/ChaosEngineering.js +229 -0
  143. package/packages/workers/src/CircuitBreaker.d.ts +107 -0
  144. package/packages/workers/src/CircuitBreaker.d.ts.map +1 -0
  145. package/packages/workers/src/CircuitBreaker.js +374 -0
  146. package/packages/workers/src/ClusterLock.d.ts +91 -0
  147. package/packages/workers/src/ClusterLock.d.ts.map +1 -0
  148. package/packages/workers/src/ClusterLock.js +397 -0
  149. package/packages/workers/src/ComplianceManager.d.ts +178 -0
  150. package/packages/workers/src/ComplianceManager.d.ts.map +1 -0
  151. package/packages/workers/src/ComplianceManager.js +556 -0
  152. package/packages/workers/src/DatacenterOrchestrator.d.ts +134 -0
  153. package/packages/workers/src/DatacenterOrchestrator.d.ts.map +1 -0
  154. package/packages/workers/src/DatacenterOrchestrator.js +404 -0
  155. package/packages/workers/src/DeadLetterQueue.d.ts +123 -0
  156. package/packages/workers/src/DeadLetterQueue.d.ts.map +1 -0
  157. package/packages/workers/src/DeadLetterQueue.js +544 -0
  158. package/packages/workers/src/HealthMonitor.d.ts +43 -0
  159. package/packages/workers/src/HealthMonitor.d.ts.map +1 -0
  160. package/packages/workers/src/HealthMonitor.js +312 -0
  161. package/packages/workers/src/MultiQueueWorker.d.ts +90 -0
  162. package/packages/workers/src/MultiQueueWorker.d.ts.map +1 -0
  163. package/packages/workers/src/MultiQueueWorker.js +282 -0
  164. package/packages/workers/src/NotificationWorker.d.ts +24 -0
  165. package/packages/workers/src/NotificationWorker.d.ts.map +1 -0
  166. package/packages/workers/src/NotificationWorker.js +23 -0
  167. package/packages/workers/src/Observability.d.ts +154 -0
  168. package/packages/workers/src/Observability.d.ts.map +1 -0
  169. package/packages/workers/src/Observability.js +538 -0
  170. package/packages/workers/src/PluginManager.d.ts +124 -0
  171. package/packages/workers/src/PluginManager.d.ts.map +1 -0
  172. package/packages/workers/src/PluginManager.js +392 -0
  173. package/packages/workers/src/PriorityQueue.d.ts +118 -0
  174. package/packages/workers/src/PriorityQueue.d.ts.map +1 -0
  175. package/packages/workers/src/PriorityQueue.js +276 -0
  176. package/packages/workers/src/ResourceMonitor.d.ts +165 -0
  177. package/packages/workers/src/ResourceMonitor.d.ts.map +1 -0
  178. package/packages/workers/src/ResourceMonitor.js +632 -0
  179. package/packages/workers/src/SLAMonitor.d.ts +111 -0
  180. package/packages/workers/src/SLAMonitor.d.ts.map +1 -0
  181. package/packages/workers/src/SLAMonitor.js +274 -0
  182. package/packages/workers/src/WorkerFactory.d.ts +218 -0
  183. package/packages/workers/src/WorkerFactory.d.ts.map +1 -0
  184. package/packages/workers/src/WorkerFactory.js +2253 -0
  185. package/packages/workers/src/WorkerInit.d.ts +86 -0
  186. package/packages/workers/src/WorkerInit.d.ts.map +1 -0
  187. package/packages/workers/src/WorkerInit.js +307 -0
  188. package/packages/workers/src/WorkerMetrics.d.ts +116 -0
  189. package/packages/workers/src/WorkerMetrics.d.ts.map +1 -0
  190. package/packages/workers/src/WorkerMetrics.js +570 -0
  191. package/packages/workers/src/WorkerRegistry.d.ts +152 -0
  192. package/packages/workers/src/WorkerRegistry.d.ts.map +1 -0
  193. package/packages/workers/src/WorkerRegistry.js +396 -0
  194. package/packages/workers/src/WorkerShutdown.d.ts +70 -0
  195. package/packages/workers/src/WorkerShutdown.d.ts.map +1 -0
  196. package/packages/workers/src/WorkerShutdown.js +185 -0
  197. package/packages/workers/src/WorkerVersioning.d.ts +108 -0
  198. package/packages/workers/src/WorkerVersioning.d.ts.map +1 -0
  199. package/packages/workers/src/WorkerVersioning.js +300 -0
  200. package/packages/workers/src/config/workerConfig.d.ts +5 -0
  201. package/packages/workers/src/config/workerConfig.d.ts.map +1 -0
  202. package/packages/workers/src/config/workerConfig.js +25 -0
  203. package/packages/workers/src/createQueueWorker.d.ts +26 -0
  204. package/packages/workers/src/createQueueWorker.d.ts.map +1 -0
  205. package/packages/workers/src/createQueueWorker.js +367 -0
  206. package/packages/workers/src/dashboard/index.d.ts +2 -0
  207. package/packages/workers/src/dashboard/index.d.ts.map +1 -0
  208. package/packages/workers/src/dashboard/index.js +1 -0
  209. package/packages/workers/src/dashboard/types.d.ts +123 -0
  210. package/packages/workers/src/dashboard/types.d.ts.map +1 -0
  211. package/packages/workers/src/dashboard/types.js +1 -0
  212. package/packages/workers/src/dashboard/workers-api.d.ts +5 -0
  213. package/packages/workers/src/dashboard/workers-api.d.ts.map +1 -0
  214. package/packages/workers/src/dashboard/workers-api.js +738 -0
  215. package/packages/workers/src/helper/index.d.ts +6 -0
  216. package/packages/workers/src/helper/index.d.ts.map +1 -0
  217. package/packages/workers/src/helper/index.js +10 -0
  218. package/packages/workers/src/http/WorkerApiController.d.ts +39 -0
  219. package/packages/workers/src/http/WorkerApiController.d.ts.map +1 -0
  220. package/packages/workers/src/http/WorkerApiController.js +313 -0
  221. package/packages/workers/src/http/WorkerController.d.ts +375 -0
  222. package/packages/workers/src/http/WorkerController.d.ts.map +1 -0
  223. package/packages/workers/src/http/WorkerController.js +1454 -0
  224. package/packages/workers/src/http/WorkerMonitoringService.d.ts +12 -0
  225. package/packages/workers/src/http/WorkerMonitoringService.d.ts.map +1 -0
  226. package/packages/workers/src/http/WorkerMonitoringService.js +89 -0
  227. package/packages/workers/src/http/middleware/CustomValidation.d.ts +93 -0
  228. package/packages/workers/src/http/middleware/CustomValidation.d.ts.map +1 -0
  229. package/packages/workers/src/http/middleware/CustomValidation.js +270 -0
  230. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts +4 -0
  231. package/packages/workers/src/http/middleware/DatacenterValidator.d.ts.map +1 -0
  232. package/packages/workers/src/http/middleware/DatacenterValidator.js +94 -0
  233. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts +8 -0
  234. package/packages/workers/src/http/middleware/EditWorkerValidation.d.ts.map +1 -0
  235. package/packages/workers/src/http/middleware/EditWorkerValidation.js +56 -0
  236. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts +4 -0
  237. package/packages/workers/src/http/middleware/FeaturesValidator.d.ts.map +1 -0
  238. package/packages/workers/src/http/middleware/FeaturesValidator.js +60 -0
  239. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts +32 -0
  240. package/packages/workers/src/http/middleware/InfrastructureValidator.d.ts.map +1 -0
  241. package/packages/workers/src/http/middleware/InfrastructureValidator.js +226 -0
  242. package/packages/workers/src/http/middleware/OptionsValidator.d.ts +4 -0
  243. package/packages/workers/src/http/middleware/OptionsValidator.d.ts.map +1 -0
  244. package/packages/workers/src/http/middleware/OptionsValidator.js +112 -0
  245. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts +8 -0
  246. package/packages/workers/src/http/middleware/PayloadSanitizer.d.ts.map +1 -0
  247. package/packages/workers/src/http/middleware/PayloadSanitizer.js +42 -0
  248. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts +4 -0
  249. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.d.ts.map +1 -0
  250. package/packages/workers/src/http/middleware/ProcessorPathSanitizer.js +140 -0
  251. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts +4 -0
  252. package/packages/workers/src/http/middleware/QueueNameSanitizer.d.ts.map +1 -0
  253. package/packages/workers/src/http/middleware/QueueNameSanitizer.js +45 -0
  254. package/packages/workers/src/http/middleware/ValidateDriver.d.ts +8 -0
  255. package/packages/workers/src/http/middleware/ValidateDriver.d.ts.map +1 -0
  256. package/packages/workers/src/http/middleware/ValidateDriver.js +20 -0
  257. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts +4 -0
  258. package/packages/workers/src/http/middleware/VersionSanitizer.d.ts.map +1 -0
  259. package/packages/workers/src/http/middleware/VersionSanitizer.js +25 -0
  260. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts +4 -0
  261. package/packages/workers/src/http/middleware/WorkerNameSanitizer.d.ts.map +1 -0
  262. package/packages/workers/src/http/middleware/WorkerNameSanitizer.js +46 -0
  263. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts +28 -0
  264. package/packages/workers/src/http/middleware/WorkerValidationChain.d.ts.map +1 -0
  265. package/packages/workers/src/http/middleware/WorkerValidationChain.js +186 -0
  266. package/packages/workers/src/index.d.ts +47 -0
  267. package/packages/workers/src/index.d.ts.map +1 -0
  268. package/packages/workers/src/index.js +48 -0
  269. package/packages/workers/src/routes/workers.d.ts +13 -0
  270. package/packages/workers/src/routes/workers.d.ts.map +1 -0
  271. package/packages/workers/src/routes/workers.js +126 -0
  272. package/packages/workers/src/storage/WorkerStore.d.ts +52 -0
  273. package/packages/workers/src/storage/WorkerStore.d.ts.map +1 -0
  274. package/packages/workers/src/storage/WorkerStore.js +259 -0
  275. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts +47 -0
  276. package/packages/workers/src/telemetry/api/TelemetryAPI.d.ts.map +1 -0
  277. package/packages/workers/src/telemetry/api/TelemetryAPI.js +219 -0
  278. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts +18 -0
  279. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.d.ts.map +1 -0
  280. package/packages/workers/src/telemetry/api/TelemetryMonitoringService.js +140 -0
  281. package/packages/workers/src/telemetry/components/AlertPanel.d.ts +2 -0
  282. package/packages/workers/src/telemetry/components/AlertPanel.d.ts.map +1 -0
  283. package/packages/workers/src/telemetry/components/AlertPanel.js +13 -0
  284. package/packages/workers/src/telemetry/components/CostTracking.d.ts +2 -0
  285. package/packages/workers/src/telemetry/components/CostTracking.d.ts.map +1 -0
  286. package/packages/workers/src/telemetry/components/CostTracking.js +14 -0
  287. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts +2 -0
  288. package/packages/workers/src/telemetry/components/ResourceUsageChart.d.ts.map +1 -0
  289. package/packages/workers/src/telemetry/components/ResourceUsageChart.js +11 -0
  290. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts +2 -0
  291. package/packages/workers/src/telemetry/components/WorkerHealthChart.d.ts.map +1 -0
  292. package/packages/workers/src/telemetry/components/WorkerHealthChart.js +11 -0
  293. package/packages/workers/src/telemetry/index.d.ts +16 -0
  294. package/packages/workers/src/telemetry/index.d.ts.map +1 -0
  295. package/packages/workers/src/telemetry/index.js +60 -0
  296. package/packages/workers/src/telemetry/routes/dashboard.d.ts +7 -0
  297. package/packages/workers/src/telemetry/routes/dashboard.d.ts.map +1 -0
  298. package/packages/workers/src/telemetry/routes/dashboard.js +608 -0
  299. package/packages/workers/src/type.d.ts +77 -0
  300. package/packages/workers/src/type.d.ts.map +1 -0
  301. package/packages/workers/src/type.js +1 -0
  302. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts +5 -0
  303. package/packages/workers/src/ui/router/EmbeddedAssets.d.ts.map +1 -0
  304. package/packages/workers/src/ui/router/EmbeddedAssets.js +13 -0
  305. package/packages/workers/src/ui/router/ui.d.ts +4 -0
  306. package/packages/workers/src/ui/router/ui.d.ts.map +1 -0
  307. package/packages/workers/src/ui/router/ui.js +208 -0
  308. package/packages/workers/src/ui/types/worker-ui.d.ts +230 -0
  309. package/packages/workers/src/ui/types/worker-ui.d.ts.map +1 -0
  310. package/packages/workers/src/ui/types/worker-ui.js +5 -0
  311. package/routes/api.d.ts +7 -0
  312. package/routes/api.d.ts.map +1 -0
  313. package/routes/api.js +129 -0
  314. package/routes/broadcast.d.ts +9 -0
  315. package/routes/broadcast.d.ts.map +1 -0
  316. package/routes/broadcast.js +27 -0
  317. package/routes/storage.d.ts +4 -0
  318. package/routes/storage.d.ts.map +1 -0
  319. package/routes/storage.js +35 -0
  320. package/src/cache/Cache.d.ts.map +1 -1
  321. package/src/cache/Cache.js +40 -8
  322. package/src/cache/drivers/KVRemoteDriver.d.ts +1 -1
  323. package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
  324. package/src/cache/drivers/KVRemoteDriver.js +259 -44
  325. package/src/cache/drivers/MemoryDriver.d.ts.map +1 -1
  326. package/src/cache/drivers/MemoryDriver.js +10 -2
  327. package/src/cache/drivers/RedisDriver.d.ts.map +1 -1
  328. package/src/cache/drivers/RedisDriver.js +256 -33
  329. package/src/cli/commands/InitContainerCommand.js +10 -10
  330. package/src/cli/commands/NewCommand.d.ts.map +1 -1
  331. package/src/cli/commands/NewCommand.js +33 -0
  332. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  333. package/src/cli/commands/StartCommand.js +23 -1
  334. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  335. package/src/cli/scaffolding/ProjectScaffolder.js +65 -73
  336. package/src/cli/utils/DistPackager.d.ts.map +1 -1
  337. package/src/cli/utils/DistPackager.js +25 -0
  338. package/src/cli/utils/EnvFileLoader.d.ts +1 -0
  339. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
  340. package/src/cli/utils/EnvFileLoader.js +14 -0
  341. package/src/common/RemoteSignedJson.d.ts.map +1 -1
  342. package/src/common/RemoteSignedJson.js +9 -2
  343. package/src/config/cache.js +1 -1
  344. package/src/config/env.d.ts +7 -0
  345. package/src/config/env.d.ts.map +1 -1
  346. package/src/config/env.js +8 -0
  347. package/src/config/queue.js +1 -1
  348. package/src/functions/cloudflare.d.ts.map +1 -1
  349. package/src/functions/cloudflare.js +4 -2
  350. package/src/index.js +3 -3
  351. package/src/middleware/JwtAuthMiddleware.d.ts.map +1 -1
  352. package/src/middleware/JwtAuthMiddleware.js +11 -5
  353. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  354. package/src/runtime/RuntimeAdapter.js +30 -12
  355. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  356. package/src/runtime/adapters/CloudflareAdapter.js +15 -4
  357. package/src/scheduler/Schedule.js +1 -1
  358. package/src/scheduler/leader/SchedulerLeader.js +1 -1
  359. package/src/schedules/job-tracking-cleanup.js +1 -1
  360. package/src/security/TokenRevocation.d.ts +19 -2
  361. package/src/security/TokenRevocation.d.ts.map +1 -1
  362. package/src/security/TokenRevocation.js +558 -30
  363. package/src/templates/project/basic/app/Controllers/AuthController.ts.tpl +11 -3
  364. package/src/templates/project/basic/config/middleware.ts.tpl +23 -22
  365. package/src/templates/project/basic/wrangler.jsonc.tpl +28 -0
@@ -0,0 +1,397 @@
1
+ /**
2
+ * Cluster Lock Manager
3
+ * Distributed locking using Redis for multi-instance worker coordination
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { Cloudflare, ErrorFactory, Logger, createRedisConnection, generateUuid, } from '../../../src/index.js';
7
+ let INSTANCE_ID = '';
8
+ const createInstanceId = () => {
9
+ const workers = Cloudflare.getWorkersEnv() !== null;
10
+ const pid = typeof process !== 'undefined' && typeof process.pid === 'number' ? process.pid : 0;
11
+ const prefix = workers ? 'worker-cf' : 'worker';
12
+ return `${prefix}-${pid}-${Date.now()}-${generateUuid()}`;
13
+ };
14
+ const getInstanceId = () => {
15
+ if (INSTANCE_ID !== '')
16
+ return INSTANCE_ID;
17
+ INSTANCE_ID = createInstanceId();
18
+ return INSTANCE_ID;
19
+ };
20
+ // Redis key prefixes
21
+ const LOCK_PREFIX = 'worker:lock:';
22
+ const AUDIT_PREFIX = 'worker:audit:lock:';
23
+ // Internal state
24
+ let redisClient = null;
25
+ let heartbeatInterval = null;
26
+ const activeLocks = new Map();
27
+ /**
28
+ * Helper: Get full Redis key for lock
29
+ */
30
+ const getLockKey = (lockKey) => {
31
+ return `${LOCK_PREFIX}${lockKey}`;
32
+ };
33
+ /**
34
+ * Helper: Get full Redis key for audit log
35
+ */
36
+ const getAuditKey = (lockKey) => {
37
+ return `${AUDIT_PREFIX}${lockKey}`;
38
+ };
39
+ /**
40
+ * Helper: Store audit log entry in Redis
41
+ */
42
+ const auditLockOperation = async (client, entry) => {
43
+ try {
44
+ const auditKey = getAuditKey(entry.lockKey);
45
+ const auditData = JSON.stringify(entry);
46
+ // Store in sorted set with timestamp as score for easy retrieval
47
+ await client.zadd(auditKey, entry.timestamp.getTime(), auditData);
48
+ // Keep only last 1000 entries per lock
49
+ await client.zremrangebyrank(auditKey, 0, -1001);
50
+ // Expire audit logs after 30 days
51
+ await client.expire(auditKey, 30 * 24 * 60 * 60);
52
+ }
53
+ catch (error) {
54
+ Logger.error('Failed to write lock audit log', error);
55
+ // Don't throw - audit failure shouldn't break lock operations
56
+ }
57
+ };
58
+ /**
59
+ * Helper: Extend lock TTL
60
+ */
61
+ const extendLockTTL = async (client, lockKey, ttl) => {
62
+ const redisKey = getLockKey(lockKey);
63
+ const value = await client.get(redisKey);
64
+ if (value === null || value !== getInstanceId()) {
65
+ return false; // Lock not held by this instance
66
+ }
67
+ const result = await client.expire(redisKey, ttl);
68
+ return result === 1;
69
+ };
70
+ /**
71
+ * Helper: Start heartbeat for lock extension
72
+ */
73
+ const startHeartbeat = (client) => {
74
+ if (heartbeatInterval) {
75
+ return; // Already running
76
+ }
77
+ heartbeatInterval = setInterval(async () => {
78
+ const lockEntries = Array.from(activeLocks.entries());
79
+ await Promise.allSettled(lockEntries.map(async ([lockKey, info]) => {
80
+ try {
81
+ const now = new Date();
82
+ const timeUntilExpiry = info.expiresAt.getTime() - now.getTime();
83
+ // Extend if less than 30 seconds until expiry
84
+ if (timeUntilExpiry < 30000) {
85
+ const ttl = Math.ceil(timeUntilExpiry / 1000) + 60; // Extend by 60 more seconds
86
+ const extended = await extendLockTTL(client, lockKey, ttl);
87
+ if (extended) {
88
+ info.expiresAt = new Date(now.getTime() + ttl * 1000);
89
+ Logger.debug(`Extended lock "${lockKey}" TTL to ${ttl}s`);
90
+ await auditLockOperation(client, {
91
+ timestamp: now,
92
+ operation: 'extend',
93
+ lockKey,
94
+ instanceId: getInstanceId(),
95
+ success: true,
96
+ });
97
+ }
98
+ else {
99
+ // Lost the lock
100
+ activeLocks.delete(lockKey);
101
+ Logger.warn(`Lost lock "${lockKey}" - it was released or taken by another instance`);
102
+ }
103
+ }
104
+ }
105
+ catch (error) {
106
+ Logger.error(`Failed to extend lock "${lockKey}"`, error);
107
+ }
108
+ }));
109
+ }, 10000); // Check every 10 seconds
110
+ Logger.debug('Lock heartbeat started');
111
+ };
112
+ /**
113
+ * Helper: Stop heartbeat
114
+ */
115
+ const stopHeartbeat = () => {
116
+ if (heartbeatInterval) {
117
+ clearInterval(heartbeatInterval);
118
+ heartbeatInterval = null;
119
+ Logger.debug('Lock heartbeat stopped');
120
+ }
121
+ };
122
+ /**
123
+ * Cluster Lock Manager - Sealed namespace
124
+ */
125
+ export const ClusterLock = Object.freeze({
126
+ /**
127
+ * Initialize the lock manager with Redis connection
128
+ */
129
+ initialize(config) {
130
+ if (redisClient) {
131
+ Logger.warn('ClusterLock already initialized');
132
+ return;
133
+ }
134
+ const client = createRedisConnection(config);
135
+ redisClient = client;
136
+ startHeartbeat(client);
137
+ Logger.info('ClusterLock initialized', { instanceId: getInstanceId() });
138
+ },
139
+ /**
140
+ * Acquire a distributed lock
141
+ */
142
+ async acquire(options) {
143
+ if (!redisClient) {
144
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized. Call initialize() first.');
145
+ }
146
+ const { lockKey, ttl, region = 'default', userId } = options;
147
+ const redisKey = getLockKey(lockKey);
148
+ const now = new Date();
149
+ try {
150
+ // Try to acquire lock using SET NX EX (set if not exists with expiry)
151
+ const result = await redisClient.set(redisKey, getInstanceId(), 'EX', ttl, 'NX');
152
+ const success = result === 'OK';
153
+ if (success) {
154
+ const lockInfo = {
155
+ lockKey,
156
+ instanceId: getInstanceId(),
157
+ acquiredAt: now,
158
+ expiresAt: new Date(now.getTime() + ttl * 1000),
159
+ region,
160
+ userId,
161
+ };
162
+ activeLocks.set(lockKey, lockInfo);
163
+ Logger.info(`Acquired lock "${lockKey}"`, {
164
+ region,
165
+ userId,
166
+ ttl,
167
+ expiresAt: lockInfo.expiresAt.toISOString(),
168
+ });
169
+ await auditLockOperation(redisClient, {
170
+ timestamp: now,
171
+ operation: 'acquire',
172
+ lockKey,
173
+ instanceId: getInstanceId(),
174
+ userId,
175
+ success: true,
176
+ });
177
+ }
178
+ else {
179
+ Logger.debug(`Failed to acquire lock "${lockKey}" - already held by another instance`);
180
+ await auditLockOperation(redisClient, {
181
+ timestamp: now,
182
+ operation: 'acquire',
183
+ lockKey,
184
+ instanceId: getInstanceId(),
185
+ userId,
186
+ success: false,
187
+ });
188
+ }
189
+ return success;
190
+ }
191
+ catch (error) {
192
+ Logger.error(`Error acquiring lock "${lockKey}"`, error);
193
+ throw error;
194
+ }
195
+ },
196
+ /**
197
+ * Release a distributed lock
198
+ */
199
+ async release(lockKey, userId) {
200
+ if (!redisClient) {
201
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized');
202
+ }
203
+ const redisKey = getLockKey(lockKey);
204
+ const now = new Date();
205
+ try {
206
+ // Only release if we own the lock
207
+ const value = await redisClient.get(redisKey);
208
+ if (value !== INSTANCE_ID) {
209
+ Logger.warn(`Cannot release lock "${lockKey}" - not owned by this instance`);
210
+ return false;
211
+ }
212
+ await redisClient.del(redisKey);
213
+ activeLocks.delete(lockKey);
214
+ Logger.info(`Released lock "${lockKey}"`, { userId });
215
+ await auditLockOperation(redisClient, {
216
+ timestamp: now,
217
+ operation: 'release',
218
+ lockKey,
219
+ instanceId: INSTANCE_ID,
220
+ userId,
221
+ success: true,
222
+ });
223
+ return true;
224
+ }
225
+ catch (error) {
226
+ Logger.error(`Error releasing lock "${lockKey}"`, error);
227
+ throw error;
228
+ }
229
+ },
230
+ /**
231
+ * Extend lock TTL
232
+ */
233
+ async extend(lockKey, ttl) {
234
+ if (!redisClient) {
235
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized');
236
+ }
237
+ const extended = await extendLockTTL(redisClient, lockKey, ttl);
238
+ if (extended) {
239
+ const info = activeLocks.get(lockKey);
240
+ if (info) {
241
+ info.expiresAt = new Date(Date.now() + ttl * 1000);
242
+ }
243
+ Logger.debug(`Extended lock "${lockKey}" TTL to ${ttl}s`);
244
+ }
245
+ return extended;
246
+ },
247
+ /**
248
+ * Check if lock is held by this instance
249
+ */
250
+ async isHeldByMe(lockKey) {
251
+ if (!redisClient) {
252
+ return false;
253
+ }
254
+ const redisKey = getLockKey(lockKey);
255
+ const value = await redisClient.get(redisKey);
256
+ return value === INSTANCE_ID;
257
+ },
258
+ /**
259
+ * Force release a lock (admin operation)
260
+ */
261
+ async forceRelease(lockKey, userId, reason) {
262
+ if (!redisClient) {
263
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized');
264
+ }
265
+ const redisKey = getLockKey(lockKey);
266
+ const now = new Date();
267
+ try {
268
+ const currentOwner = await redisClient.get(redisKey);
269
+ if (currentOwner === null) {
270
+ Logger.warn(`Lock "${lockKey}" does not exist`);
271
+ return false;
272
+ }
273
+ await redisClient.del(redisKey);
274
+ // Remove from active locks if we owned it
275
+ if (currentOwner === INSTANCE_ID) {
276
+ activeLocks.delete(lockKey);
277
+ }
278
+ Logger.warn(`Force released lock "${lockKey}"`, {
279
+ userId,
280
+ reason,
281
+ previousOwner: currentOwner,
282
+ });
283
+ await auditLockOperation(redisClient, {
284
+ timestamp: now,
285
+ operation: 'force-release',
286
+ lockKey,
287
+ instanceId: currentOwner,
288
+ userId,
289
+ reason,
290
+ success: true,
291
+ });
292
+ return true;
293
+ }
294
+ catch (error) {
295
+ Logger.error(`Error force releasing lock "${lockKey}"`, error);
296
+ throw error;
297
+ }
298
+ },
299
+ /**
300
+ * List all locks
301
+ */
302
+ async listLocks() {
303
+ if (!redisClient) {
304
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized');
305
+ }
306
+ try {
307
+ const pattern = `${LOCK_PREFIX}*`;
308
+ const keys = await redisClient.keys(pattern);
309
+ const locks = await Promise.all(keys.map(async (key) => {
310
+ const owner = await redisClient?.get(key);
311
+ const lockKey = key.replace(LOCK_PREFIX, '');
312
+ const info = activeLocks.get(lockKey);
313
+ return {
314
+ key: lockKey,
315
+ owner: owner ?? 'unknown',
316
+ region: info?.region,
317
+ };
318
+ }));
319
+ return locks;
320
+ }
321
+ catch (error) {
322
+ Logger.error('Error listing locks', error);
323
+ throw error;
324
+ }
325
+ },
326
+ /**
327
+ * Get lock owner
328
+ */
329
+ async getLockOwner(lockKey) {
330
+ if (!redisClient) {
331
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized');
332
+ }
333
+ const redisKey = getLockKey(lockKey);
334
+ return redisClient.get(redisKey);
335
+ },
336
+ /**
337
+ * Get locks by region
338
+ */
339
+ getLocksByRegion(region) {
340
+ const locks = [];
341
+ for (const info of activeLocks.values()) {
342
+ if (info.region === region) {
343
+ locks.push({ ...info });
344
+ }
345
+ }
346
+ return locks;
347
+ },
348
+ /**
349
+ * Get audit log for a lock
350
+ */
351
+ async getAuditLog(lockKey, limit = 100) {
352
+ if (!redisClient) {
353
+ throw ErrorFactory.createGeneralError('ClusterLock not initialized');
354
+ }
355
+ try {
356
+ const auditKey = getAuditKey(lockKey);
357
+ // Get latest entries (highest scores = most recent timestamps)
358
+ const entries = await redisClient.zrevrange(auditKey, 0, limit - 1);
359
+ return entries.map((entry) => JSON.parse(entry));
360
+ }
361
+ catch (error) {
362
+ Logger.error(`Error retrieving audit log for "${lockKey}"`, error);
363
+ return [];
364
+ }
365
+ },
366
+ /**
367
+ * Get active locks held by this instance
368
+ */
369
+ getActiveLocks() {
370
+ return Array.from(activeLocks.values()).map((info) => ({ ...info }));
371
+ },
372
+ /**
373
+ * Get instance ID
374
+ */
375
+ getInstanceId() {
376
+ return INSTANCE_ID;
377
+ },
378
+ /**
379
+ * Shutdown and release all locks
380
+ */
381
+ async shutdown() {
382
+ if (!redisClient) {
383
+ return;
384
+ }
385
+ Logger.info('ClusterLock shutting down...');
386
+ stopHeartbeat();
387
+ // Release all active locks
388
+ const releasePromises = Array.from(activeLocks.keys()).map(async (lockKey) => ClusterLock.release(lockKey, 'system-shutdown'));
389
+ await Promise.all(releasePromises);
390
+ if (redisClient !== null) {
391
+ await redisClient.quit();
392
+ redisClient = null;
393
+ }
394
+ Logger.info('ClusterLock shutdown complete');
395
+ },
396
+ });
397
+ // Graceful shutdown handled by WorkerShutdown
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Compliance Manager
3
+ * GDPR, HIPAA, and SOC2 compliance enforcement
4
+ * Sealed namespace for immutability
5
+ */
6
+ import { type RedisConfig } from '../../../src/index.js';
7
+ export type ComplianceStandard = 'gdpr' | 'hipaa' | 'soc2';
8
+ export type DataClassification = 'public' | 'internal' | 'confidential' | 'restricted';
9
+ export type ComplianceConfig = {
10
+ gdpr: {
11
+ enabled: boolean;
12
+ dataRetentionDays: number;
13
+ requireConsent: boolean;
14
+ enableRightToForgotten: boolean;
15
+ enableDataPortability: boolean;
16
+ enableAccessRequest: boolean;
17
+ };
18
+ hipaa: {
19
+ enabled: boolean;
20
+ requireEncryptionAtRest: boolean;
21
+ requireEncryptionInTransit: boolean;
22
+ auditRetentionYears: number;
23
+ requireAccessControls: boolean;
24
+ enableBreachNotification: boolean;
25
+ };
26
+ soc2: {
27
+ enabled: boolean;
28
+ requireChangeLogging: boolean;
29
+ requireAccessReviews: boolean;
30
+ accessReviewIntervalDays: number;
31
+ requireIncidentResponse: boolean;
32
+ requireDisasterRecovery: boolean;
33
+ };
34
+ };
35
+ export type DataSubject = {
36
+ id: string;
37
+ email?: string;
38
+ consentGiven: boolean;
39
+ consentDate?: Date;
40
+ consentWithdrawnDate?: Date;
41
+ dataClassification: DataClassification;
42
+ retentionPeriod?: number;
43
+ deletionScheduled?: Date;
44
+ };
45
+ export type ComplianceAuditLog = {
46
+ id: string;
47
+ timestamp: Date;
48
+ standard: ComplianceStandard;
49
+ action: string;
50
+ userId: string;
51
+ userRole?: string;
52
+ dataSubjectId?: string;
53
+ resourceId: string;
54
+ resourceType: string;
55
+ ipAddress?: string;
56
+ userAgent?: string;
57
+ changes?: Record<string, {
58
+ before: unknown;
59
+ after: unknown;
60
+ }>;
61
+ result: 'success' | 'failure' | 'blocked';
62
+ reason?: string;
63
+ severity: 'info' | 'warning' | 'critical';
64
+ };
65
+ export type AccessRequest = {
66
+ id: string;
67
+ dataSubjectId: string;
68
+ requestType: 'access' | 'deletion' | 'portability' | 'rectification';
69
+ requestDate: Date;
70
+ status: 'pending' | 'approved' | 'rejected' | 'completed';
71
+ requestedBy: string;
72
+ approvedBy?: string;
73
+ completedBy?: string;
74
+ completedDate?: Date;
75
+ reason?: string;
76
+ dataExport?: string;
77
+ };
78
+ export type EncryptionMetadata = {
79
+ algorithm: string;
80
+ keyId: string;
81
+ encryptedAt: Date;
82
+ encryptedBy: string;
83
+ };
84
+ export type ComplianceViolation = {
85
+ id: string;
86
+ timestamp: Date;
87
+ standard: ComplianceStandard;
88
+ violationType: string;
89
+ severity: 'low' | 'medium' | 'high' | 'critical';
90
+ description: string;
91
+ affectedResources: string[];
92
+ remediation: string;
93
+ status: 'open' | 'in-progress' | 'resolved' | 'accepted-risk';
94
+ };
95
+ /**
96
+ * Compliance Manager - Sealed namespace
97
+ */
98
+ export declare const ComplianceManager: Readonly<{
99
+ /**
100
+ * Initialize compliance manager
101
+ */
102
+ initialize(redisConfig: RedisConfig, config?: Partial<ComplianceConfig>): void;
103
+ /**
104
+ * Register data subject
105
+ */
106
+ registerDataSubject(subject: DataSubject): Promise<void>;
107
+ /**
108
+ * Record consent
109
+ */
110
+ recordConsent(dataSubjectId: string, consentGiven: boolean, userId: string): Promise<void>;
111
+ /**
112
+ * Check if action is compliant
113
+ */
114
+ checkCompliance(action: string, userId: string, dataSubjectId?: string, resourceId?: string): Promise<{
115
+ compliant: boolean;
116
+ violations: string[];
117
+ }>;
118
+ /**
119
+ * Create access request (GDPR Right to Access, Deletion, etc.)
120
+ */
121
+ createAccessRequest(request: Omit<AccessRequest, "id" | "requestDate" | "status">): Promise<string>;
122
+ /**
123
+ * Process access request
124
+ */
125
+ processAccessRequest(requestId: string, status: AccessRequest["status"], processedBy: string): Promise<void>;
126
+ /**
127
+ * Encrypt sensitive data (HIPAA compliance)
128
+ */
129
+ encryptSensitiveData(data: string, userId: string, keyId?: string): {
130
+ encrypted: string;
131
+ metadata: EncryptionMetadata;
132
+ };
133
+ /**
134
+ * Decrypt sensitive data
135
+ */
136
+ decryptSensitiveData(encryptedPackage: string, userId: string): string;
137
+ /**
138
+ * Record compliance violation
139
+ */
140
+ recordViolation(violation: Omit<ComplianceViolation, "id" | "timestamp">): Promise<string>;
141
+ /**
142
+ * Get audit logs
143
+ */
144
+ getAuditLogs(standard: ComplianceStandard, startDate?: Date, endDate?: Date, limit?: number): Promise<ReadonlyArray<ComplianceAuditLog>>;
145
+ /**
146
+ * Get compliance summary
147
+ */
148
+ getComplianceSummary(): Promise<{
149
+ gdpr: {
150
+ enabled: boolean;
151
+ dataSubjects: number;
152
+ pendingRequests: number;
153
+ };
154
+ hipaa: {
155
+ enabled: boolean;
156
+ encryptedResources: number;
157
+ auditLogRetention: string;
158
+ };
159
+ soc2: {
160
+ enabled: boolean;
161
+ violations: number;
162
+ lastAccessReview?: Date;
163
+ };
164
+ }>;
165
+ /**
166
+ * Get configuration
167
+ */
168
+ getConfig(): ComplianceConfig | null;
169
+ /**
170
+ * Update configuration
171
+ */
172
+ updateConfig(config: Partial<ComplianceConfig>): void;
173
+ /**
174
+ * Shutdown
175
+ */
176
+ shutdown(): Promise<void>;
177
+ }>;
178
+ //# sourceMappingURL=ComplianceManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComplianceManager.d.ts","sourceRoot":"","sources":["../../../../packages/workers/src/ComplianceManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAwBxB,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;AAEvF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,OAAO,CAAC;QACxB,sBAAsB,EAAE,OAAO,CAAC;QAChC,qBAAqB,EAAE,OAAO,CAAC;QAC/B,mBAAmB,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,KAAK,EAAE;QACL,OAAO,EAAE,OAAO,CAAC;QACjB,uBAAuB,EAAE,OAAO,CAAC;QACjC,0BAA0B,EAAE,OAAO,CAAC;QACpC,mBAAmB,EAAE,MAAM,CAAC;QAC5B,qBAAqB,EAAE,OAAO,CAAC;QAC/B,wBAAwB,EAAE,OAAO,CAAC;KACnC,CAAC;IACF,IAAI,EAAE;QACJ,OAAO,EAAE,OAAO,CAAC;QACjB,oBAAoB,EAAE,OAAO,CAAC;QAC9B,oBAAoB,EAAE,OAAO,CAAC;QAC9B,wBAAwB,EAAE,MAAM,CAAC;QACjC,uBAAuB,EAAE,OAAO,CAAC;QACjC,uBAAuB,EAAE,OAAO,CAAC;KAClC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,oBAAoB,CAAC,EAAE,IAAI,CAAC;IAC5B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,IAAI,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;IACrE,WAAW,EAAE,IAAI,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,CAAC;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,IAAI,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,UAAU,GAAG,eAAe,CAAC;CAC/D,CAAC;AA8MF;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;4BACqB,WAAW,WAAW,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAoB9E;;OAEG;iCACgC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B9D;;OAEG;iCACgC,MAAM,gBAAgB,OAAO,UAAU,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqDhG;;OAEG;4BAEO,MAAM,UACN,MAAM,kBACE,MAAM,eACT,MAAM,GAClB,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiCxD;;OAEG;iCAEQ,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,aAAa,GAAG,QAAQ,CAAC,GAC5D,OAAO,CAAC,MAAM,CAAC;IAsClB;;OAEG;oCAEU,MAAM,UACT,aAAa,CAAC,QAAQ,CAAC,eAClB,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAwChB;;OAEG;+BAEK,MAAM,UACJ,MAAM,mBAEb;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,kBAAkB,CAAC;KAC9B;IA0BD;;OAEG;2CACoC,MAAM,UAAU,MAAM,GAAG,MAAM;IAkCtE;;OAEG;+BAC8B,IAAI,CAAC,mBAAmB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAsChG;;OAEG;2BAES,kBAAkB,cAChB,IAAI,YACN,IAAI,mBAEb,OAAO,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAmB7C;;OAEG;4BAC2B,OAAO,CAAC;QACpC,IAAI,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;QAC1E,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,kBAAkB,EAAE,MAAM,CAAC;YAAC,iBAAiB,EAAE,MAAM,CAAA;SAAE,CAAC;QACnF,IAAI,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,gBAAgB,CAAC,EAAE,IAAI,CAAA;SAAE,CAAC;KACzE,CAAC;IA+CF;;OAEG;iBACU,gBAAgB,GAAG,IAAI;IAIpC;;OAEG;yBACkB,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI;IAcrD;;OAEG;gBACe,OAAO,CAAC,IAAI,CAAC;EAY/B,CAAC"}