@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
package/README.md CHANGED
@@ -230,7 +230,7 @@ ZinTrust uses a proven layered architecture:
230
230
  - 📚 [Documentation](https://zintrust.com)
231
231
  - 💬 [Discord Community](https://discord.gg/zintrust)
232
232
  - 🐦 [Follow on X](https://x.com/zintrust)
233
- - 🐛 [Issue Tracker](https://github.com/ZinTrust /ZinTrust /issues)
233
+ - 🐛 [Issue Tracker](https://github.com/ZinTrust/ZinTrust/issues)
234
234
  - 🤝 [Contributing Guide](./contributing.md)
235
235
 
236
236
  ## License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zintrust/core",
3
- "version": "0.1.48",
3
+ "version": "0.1.50",
4
4
  "description": "Production-grade TypeScript backend framework for JavaScript",
5
5
  "homepage": "https://zintrust.com",
6
6
  "repository": {
@@ -42,10 +42,6 @@
42
42
  "types": "./src/node.d.ts",
43
43
  "import": "./src/node.js"
44
44
  },
45
- "./routes/*": {
46
- "types": "./routes/*.d.ts",
47
- "import": "./routes/*.js"
48
- },
49
45
  "./package.json": "./package.json"
50
46
  },
51
47
  "dependencies": {
@@ -78,10 +74,6 @@
78
74
  "files": [
79
75
  "bin",
80
76
  "src",
81
- "routes",
82
- "config",
83
- "app",
84
- "packages",
85
77
  "public"
86
78
  ],
87
79
  "engines": {
@@ -1 +1 @@
1
- {"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC;CACvB;AA2PD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
1
+ {"version":3,"file":"CLI.d.ts","sourceRoot":"","sources":["../../../src/cli/CLI.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,WAAW,IAAI;IACnB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,OAAO,CAAC;CACvB;AA4PD;;;;;;;GAOG;AACH,eAAO,MAAM,GAAG;cACJ,IAAI;EAed,CAAC"}
package/src/cli/CLI.js CHANGED
@@ -4,6 +4,7 @@
4
4
  */
5
5
  import { AddCommand } from './commands/AddCommand.js';
6
6
  import { BroadcastWorkCommand } from './commands/BroadcastWorkCommand.js';
7
+ import { BulletproofKeyGenerateCommand } from './commands/BulletproofKeyGenerateCommand.js';
7
8
  import { ConfigCommand } from './commands/ConfigCommand.js';
8
9
  import { ContainerProxiesCommand } from './commands/ContainerProxiesCommand.js';
9
10
  import { ContainerWorkersCommand } from './commands/ContainerWorkersCommand.js';
@@ -119,6 +120,7 @@ const buildCommandRegistry = () => {
119
120
  QACommand(),
120
121
  FixCommand.create(),
121
122
  KeyGenerateCommand.create(),
123
+ BulletproofKeyGenerateCommand.create(),
122
124
  SimulateCommand,
123
125
  TemplatesCommand,
124
126
  MakeMailTemplateCommand.create(),
@@ -33,7 +33,7 @@ const addOptions = (command) => {
33
33
  .option('--port <number>', 'Service port - for services')
34
34
  .option('--service <path>', 'Service path (relative to project root) - for features')
35
35
  .option('--with-test', 'Generate test files - for features')
36
- .option('--controller-type <type>', 'Controller type: crud, resource, api, graphql, websocket, webhook - for controllers')
36
+ .option('--controller-type <type>', 'Controller type: crud, resource, api, graphql, websocket - for controllers')
37
37
  .option('--soft-delete', 'Add soft delete to model')
38
38
  .option('--timestamps', 'Add timestamps to model (default: true)')
39
39
  .option('--resource', 'Generate resource routes')
@@ -304,7 +304,7 @@ const promptControllerConfig = async () => {
304
304
  type: 'list',
305
305
  name: 'type',
306
306
  message: 'Controller type:',
307
- choices: ['crud', 'resource', 'api', 'graphql', 'websocket', 'webhook'],
307
+ choices: ['crud', 'resource', 'api', 'graphql', 'websocket'],
308
308
  default: 'crud',
309
309
  },
310
310
  ]);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Bulletproof Signing Secret Generate Command
3
+ * Generates and sets BULLETPROOF_SIGNING_SECRET (with rotation backups)
4
+ */
5
+ import type { IBaseCommand } from '../BaseCommand';
6
+ export declare const BulletproofKeyGenerateCommand: Readonly<{
7
+ create(): IBaseCommand;
8
+ }>;
9
+ export default BulletproofKeyGenerateCommand;
10
+ //# sourceMappingURL=BulletproofKeyGenerateCommand.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulletproofKeyGenerateCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/BulletproofKeyGenerateCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAgBrE,eAAO,MAAM,6BAA6B;cAC9B,YAAY;EAkEtB,CAAC;AAoFH,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,139 @@
1
+ /**
2
+ * Bulletproof Signing Secret Generate Command
3
+ * Generates and sets BULLETPROOF_SIGNING_SECRET (with rotation backups)
4
+ */
5
+ import { BaseCommand } from '../BaseCommand.js';
6
+ import { Logger } from '../../config/logger.js';
7
+ import * as crypto from '../../node-singletons/crypto.js';
8
+ import { fsPromises as fs } from '../../node-singletons/fs.js';
9
+ import * as path from '../../node-singletons/path.js';
10
+ const ENV_KEY = 'BULLETPROOF_SIGNING_SECRET';
11
+ const ENV_BK_KEY = 'BULLETPROOF_SIGNING_SECRET_BK';
12
+ export const BulletproofKeyGenerateCommand = Object.freeze({
13
+ create() {
14
+ return BaseCommand.create({
15
+ name: 'key:bulletproof',
16
+ description: 'Generate/rotate BULLETPROOF_SIGNING_SECRET (signed-request proof key)',
17
+ aliases: ['bulletproof:key', 'key:signer'],
18
+ addOptions: (command) => {
19
+ command.option('--show', 'Display the key (and suggested env) instead of modifying files');
20
+ command.option('--max-backups <n>', 'Max secrets to keep in BULLETPROOF_SIGNING_SECRET_BK (default: 5)', '5');
21
+ },
22
+ execute: async (options) => {
23
+ const key = generateRandomKey();
24
+ const maxBackups = parseMaxBackups(options.maxBackups);
25
+ if (options.show === true) {
26
+ Logger.info(`${ENV_KEY}=${key}`);
27
+ Logger.info(`${ENV_BK_KEY}=[]`);
28
+ return;
29
+ }
30
+ const envPath = path.resolve(process.cwd(), '.env');
31
+ try {
32
+ let envContent = '';
33
+ try {
34
+ envContent = await fs.readFile(envPath, 'utf-8');
35
+ }
36
+ catch (error) {
37
+ Logger.warn('Could not read .env file, attempting to create from example', { error });
38
+ const examplePath = path.resolve(process.cwd(), '.env.example');
39
+ try {
40
+ envContent = await fs.readFile(examplePath, 'utf-8');
41
+ await fs.writeFile(envPath, envContent);
42
+ Logger.info('.env file created from .env.example');
43
+ }
44
+ catch (copyError) {
45
+ Logger.error('Failed to create .env from example', { error: copyError });
46
+ Logger.warn('.env file not found and .env.example not found. Creating new .env file.');
47
+ envContent = '';
48
+ }
49
+ }
50
+ const currentSecret = readEnvLineValue(envContent, ENV_KEY);
51
+ const currentBackups = parseBackups(readEnvLineValue(envContent, ENV_BK_KEY));
52
+ const nextBackups = rotateBackups({
53
+ currentSecret,
54
+ currentBackups,
55
+ maxBackups,
56
+ });
57
+ envContent = upsertEnvLine(envContent, ENV_BK_KEY, JSON.stringify(nextBackups));
58
+ envContent = upsertEnvLine(envContent, ENV_KEY, key);
59
+ await fs.writeFile(envPath, envContent);
60
+ Logger.info(`Bulletproof signing secret set successfully. [${key}]`);
61
+ }
62
+ catch (error) {
63
+ Logger.error('Failed to update .env file', error);
64
+ }
65
+ },
66
+ });
67
+ },
68
+ });
69
+ const parseMaxBackups = (raw) => {
70
+ const n = typeof raw === 'string' ? Number.parseInt(raw, 10) : Number.NaN;
71
+ if (!Number.isFinite(n) || n < 0)
72
+ return 5;
73
+ return Math.min(50, n);
74
+ };
75
+ const generateRandomKey = () => {
76
+ // 32 bytes = 256-bit (same as APP_KEY default strength).
77
+ return 'base64:' + crypto.randomBytes(32).toString('base64');
78
+ };
79
+ const readEnvLineValue = (envContent, key) => {
80
+ const re = new RegExp(`^${escapeRegExp(key)}=(.*)$`, 'm');
81
+ const match = re.exec(envContent);
82
+ return typeof match?.[1] === 'string' ? match[1].trim() : '';
83
+ };
84
+ const upsertEnvLine = (envContent, key, value) => {
85
+ const line = `${key}=${value}`;
86
+ const re = new RegExp(`^${escapeRegExp(key)}=.*$`, 'm');
87
+ if (re.test(envContent)) {
88
+ return envContent.replace(re, line);
89
+ }
90
+ const trimmed = envContent.trimEnd();
91
+ if (trimmed === '')
92
+ return `${line}\n`;
93
+ return `${trimmed}\n${line}\n`;
94
+ };
95
+ const escapeRegExp = (value) => value.replaceAll(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
96
+ const parseBackups = (raw) => {
97
+ const value = raw.trim();
98
+ if (value === '')
99
+ return [];
100
+ if (value.startsWith('[')) {
101
+ try {
102
+ const parsed = JSON.parse(value);
103
+ if (!Array.isArray(parsed))
104
+ return [];
105
+ return parsed
106
+ .filter((v) => typeof v === 'string')
107
+ .map((s) => s.trim())
108
+ .filter((s) => s !== '');
109
+ }
110
+ catch {
111
+ return [];
112
+ }
113
+ }
114
+ return value
115
+ .split(',')
116
+ .map((s) => s.trim())
117
+ .filter((s) => s !== '');
118
+ };
119
+ const rotateBackups = (params) => {
120
+ const seen = new Set();
121
+ const out = [];
122
+ const pushUnique = (secret) => {
123
+ const s = secret.trim();
124
+ if (s === '')
125
+ return;
126
+ if (seen.has(s))
127
+ return;
128
+ seen.add(s);
129
+ out.push(s);
130
+ };
131
+ if (params.currentSecret !== '') {
132
+ pushUnique(params.currentSecret);
133
+ }
134
+ for (const s of params.currentBackups) {
135
+ pushUnique(s);
136
+ }
137
+ return out.slice(0, Math.max(0, params.maxBackups));
138
+ };
139
+ export default BulletproofKeyGenerateCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"JwtDevCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/JwtDevCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA6FvF,eAAO,MAAM,aAAa,EAAE,YAqD3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"JwtDevCommand.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/JwtDevCommand.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAoC,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAyHvF,eAAO,MAAM,aAAa,EAAE,YAgD3B,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -2,11 +2,54 @@
2
2
  * JWT Dev Command
3
3
  * Mint a local development JWT for quick manual API testing.
4
4
  */
5
+ import { isUndefinedOrNull } from '../../helper/index.js';
5
6
  import { BaseCommand } from '../BaseCommand.js';
6
7
  import { appConfig } from '../../config/app.js';
7
8
  import { securityConfig } from '../../config/security.js';
8
9
  import { ErrorFactory } from '../../exceptions/ZintrustError.js';
10
+ import * as crypto from '../../node-singletons/crypto.js';
9
11
  import { JwtManager } from '../../security/JwtManager.js';
12
+ const sha256Hex = (value) => {
13
+ return crypto.createHash('sha256').update(value).digest('hex');
14
+ };
15
+ const optionalTrimmed = (value) => {
16
+ if (typeof value !== 'string')
17
+ return undefined;
18
+ const trimmed = value.trim();
19
+ return trimmed === '' ? undefined : trimmed;
20
+ };
21
+ const buildPayload = (options) => {
22
+ const payload = {};
23
+ const sub = optionalTrimmed(options.sub);
24
+ if (!isUndefinedOrNull(sub))
25
+ payload.sub = sub;
26
+ const email = optionalTrimmed(options.email);
27
+ if (!isUndefinedOrNull(email))
28
+ payload['email'] = email;
29
+ const role = optionalTrimmed(options.role);
30
+ if (!isUndefinedOrNull(role))
31
+ payload['role'] = role;
32
+ const deviceId = optionalTrimmed(options.deviceId);
33
+ if (!isUndefinedOrNull(deviceId))
34
+ payload['deviceId'] = deviceId;
35
+ const tenantId = optionalTrimmed(options.tenantId);
36
+ if (!isUndefinedOrNull(tenantId))
37
+ payload['tenantId'] = tenantId;
38
+ const tz = optionalTrimmed(options.tz);
39
+ if (!isUndefinedOrNull(tz))
40
+ payload['tz'] = tz;
41
+ const uaHash = optionalTrimmed(options.uaHash);
42
+ if (isUndefinedOrNull(uaHash)) {
43
+ const ua = optionalTrimmed(options.ua);
44
+ if (ua !== undefined) {
45
+ payload['uaHash'] = sha256Hex(ua);
46
+ }
47
+ }
48
+ else {
49
+ payload['uaHash'] = uaHash;
50
+ }
51
+ return payload;
52
+ };
10
53
  const parseExpiresToSeconds = (value) => {
11
54
  const raw = typeof value === 'string' ? value.trim() : '';
12
55
  if (raw === '')
@@ -47,25 +90,6 @@ const assertNotProduction = (allowProduction) => {
47
90
  return;
48
91
  throw ErrorFactory.createCliError("Refusing to mint a dev JWT in production. Use --allow-production only if you know what you're doing.");
49
92
  };
50
- const createJwt = (payload, expiresInSeconds) => {
51
- const algorithm = securityConfig.jwt.algorithm;
52
- const secret = securityConfig.jwt.secret;
53
- const jwt = JwtManager.create();
54
- if (algorithm === 'HS256' || algorithm === 'HS512') {
55
- jwt.setHmacSecret(secret);
56
- }
57
- else {
58
- throw ErrorFactory.createCliError(`JWT algorithm '${algorithm}' is not supported by zin jwt:dev (HS256/HS512 only).`);
59
- }
60
- return jwt.sign(payload, {
61
- algorithm,
62
- expiresIn: expiresInSeconds,
63
- issuer: securityConfig.jwt.issuer,
64
- audience: securityConfig.jwt.audience,
65
- subject: typeof payload.sub === 'string' ? payload.sub : undefined,
66
- jwtId: jwt.generateJwtId(),
67
- });
68
- };
69
93
  export const JwtDevCommand = Object.freeze(BaseCommand.create({
70
94
  name: 'jwt:dev',
71
95
  description: 'Mint a local development JWT (for manual API testing)',
@@ -75,25 +99,20 @@ export const JwtDevCommand = Object.freeze(BaseCommand.create({
75
99
  .option('--sub <sub>', 'JWT subject claim (default: 1)', '1')
76
100
  .option('--email <email>', 'Email claim')
77
101
  .option('--role <role>', 'Role claim')
102
+ .option('--device-id <id>', 'Attach deviceId claim (for bulletproof auth)')
103
+ .option('--tenant-id <id>', 'Attach tenantId claim')
104
+ .option('--tz <tz>', 'Attach timezone claim (tz)')
105
+ .option('--ua <ua>', 'Compute and attach uaHash claim from a User-Agent string')
106
+ .option('--ua-hash <hash>', 'Attach uaHash claim directly (hex)')
78
107
  .option('--expires <duration>', "Expiry: seconds or 30m/1h/7d (default: '1h')", '1h')
79
108
  .option('--json', 'Output machine-readable JSON')
80
109
  .option('--allow-production', 'Allow running in production (dangerous)');
81
110
  },
82
- execute: (options) => {
111
+ execute: async (options) => {
83
112
  assertNotProduction(options.allowProduction);
84
113
  const expiresInSeconds = parseExpiresToSeconds(options.expires);
85
- const payload = {
86
- ...(typeof options.sub === 'string' && options.sub.trim() !== ''
87
- ? { sub: options.sub.trim() }
88
- : {}),
89
- ...(typeof options.email === 'string' && options.email.trim() !== ''
90
- ? { email: options.email.trim() }
91
- : {}),
92
- ...(typeof options.role === 'string' && options.role.trim() !== ''
93
- ? { role: options.role.trim() }
94
- : {}),
95
- };
96
- const token = createJwt(payload, expiresInSeconds);
114
+ const payload = buildPayload(options);
115
+ const token = await JwtManager.signAccessToken(payload, expiresInSeconds);
97
116
  /* eslint-disable no-console */
98
117
  if (options.json === true) {
99
118
  const nowSeconds = Math.floor(Date.now() / 1000);
@@ -2,7 +2,7 @@
2
2
  * ControllerGenerator - Generate controller files
3
3
  * Creates CRUD controllers with validation and error handling
4
4
  */
5
- export type ControllerType = 'crud' | 'resource' | 'api' | 'graphql' | 'websocket' | 'webhook';
5
+ export type ControllerType = 'crud' | 'resource' | 'api' | 'graphql' | 'websocket';
6
6
  export interface ControllerOptions {
7
7
  name: string;
8
8
  controllerPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"ControllerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ControllerGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/F,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAcD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAgChG;AAED;;GAEG;AAEH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA2CjG;AA8eD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAEpD;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC"}
1
+ {"version":3,"file":"ControllerGenerator.d.ts","sourceRoot":"","sources":["../../../../src/cli/scaffolding/ControllerGenerator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAaD;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAgChG;AAED;;GAEG;AAEH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CA2CjG;AAsaD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAEpD;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC"}
@@ -14,7 +14,6 @@ const CONTROLLER_TYPES = {
14
14
  api: (options) => generateApiController(options),
15
15
  graphql: (options) => generateGraphQLController(options),
16
16
  websocket: (options) => generateWebSocketController(options),
17
- webhook: (options) => generateWebhookController(options),
18
17
  };
19
18
  /**
20
19
  * Validate controller options
@@ -101,9 +100,6 @@ function buildControllerCode(options, type) {
101
100
  else if (type === 'websocket') {
102
101
  return generateWebSocketController(options);
103
102
  }
104
- else if (type === 'webhook') {
105
- return generateWebhookController(options);
106
- }
107
103
  return '';
108
104
  }
109
105
  /**
@@ -405,6 +401,14 @@ const controller = Object.freeze({\n ...Controller,
405
401
  return;
406
402
  }
407
403
 
404
+ // Secure-by-default: generated scaffold does not execute GraphQL until implemented.
405
+ res.setStatus(501).json({
406
+ error: 'Not Implemented',
407
+ message:
408
+ 'GraphQL execution is not implemented in this generated controller. Implement executeQuery() and wire a GraphQL engine before enabling this endpoint.',
409
+ });
410
+ return;
411
+
408
412
  const body = req.getBody() as Record<string, unknown>;
409
413
  const query = body.query as string;
410
414
 
@@ -484,81 +488,6 @@ export const ${className} = Object.freeze({
484
488
  export default ${className};
485
489
  `;
486
490
  }
487
- /**
488
- * Generate Webhook controller
489
- */
490
- function generateWebhookController(options) {
491
- const className = options?.name ?? 'WebhookController';
492
- return `/**
493
- * ${className}
494
- * Auto-generated Webhook controller
495
- */
496
-
497
- import { type IRequest, type IResponse, Controller } from '../../index.js';
498
- import { Logger } from '../../config/logger';
499
-
500
- function handleError(res: IResponse, error: unknown): void {
501
- const message = error instanceof Error ? error.message : 'Webhook error';
502
- res.setStatus(500).json({ error: message });
503
- }
504
-
505
- const controller = Object.freeze({\n ...Controller,
506
- ${buildWebhookControllerBody()},
507
- });
508
-
509
- export type ${className}Api = typeof controller;
510
-
511
- export const ${className} = Object.freeze({
512
- create(): ${className}Api {
513
- return controller;
514
- },
515
- });
516
-
517
- export default ${className};
518
- `;
519
- }
520
- /**
521
- * Build Webhook controller body
522
- */
523
- function buildWebhookControllerBody() {
524
- return ` /**
525
- * Handle incoming webhook
526
- */
527
- async handle(req: IRequest, res: IResponse): Promise<void> {
528
- try {
529
- // Verify webhook signature
530
- const signature = req.getHeader('x-webhook-signature');
531
- if (controller.verifySignature(req, signature as string) === false) {
532
- res.setStatus(401).json({ error: 'Invalid signature' });
533
- return;
534
- }
535
-
536
- const body = req.getBody();
537
- await controller.processWebhook(body);
538
-
539
- res.json({ success: true });
540
- } catch (error) {
541
- handleError(res, error);
542
- }
543
- },
544
-
545
- /**
546
- * Verify webhook signature
547
- */
548
- verifySignature(req: IRequest, signature: string): boolean {
549
- // TODO: Implement signature verification
550
- return true;
551
- },
552
-
553
- /**
554
- * Process webhook payload
555
- */
556
- async processWebhook(payload: unknown): Promise<void> {
557
- // TODO: Implement webhook processing
558
- Logger.info('Processing webhook:', { payload });
559
- },
560
- `;
561
- }
562
491
  /**
563
492
  * Get available controller types
564
493
  */
@@ -53,7 +53,6 @@ export declare const SECRETS: Readonly<{
53
53
  readonly ENCRYPTION_KEY: "encryption/key";
54
54
  readonly ENCRYPTION_IV: "encryption/iv";
55
55
  readonly STRIPE_API_KEY: "stripe/api-key";
56
- readonly STRIPE_WEBHOOK_SECRET: "stripe/webhook-secret";
57
56
  readonly SENDGRID_API_KEY: "sendgrid/api-key";
58
57
  readonly GITHUB_TOKEN: "github/token";
59
58
  readonly SESSION_SECRET: "session/secret";
@@ -1 +1 @@
1
- {"version":3,"file":"SecretsManager.d.ts","sourceRoot":"","sources":["../../../src/config/SecretsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAiTtB;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,YAAY,GAAG,sBAAsB;IAY1D;;OAEG;mBACkB,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;mBACkB,MAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;0BACyB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAItD;;OAEG;qBACc,MAAM,GAAG,IAAI;EAG9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;EA0BT,CAAC;AAEZ;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAOzD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB"}
1
+ {"version":3,"file":"SecretsManager.d.ts","sourceRoot":"","sources":["../../../src/config/SecretsManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,cAAc,CAAC;AAiTtB;;;GAGG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;yBACkB,YAAY,GAAG,sBAAsB;IAY1D;;OAEG;mBACkB,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAIzE;;OAEG;mBACkB,MAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;sBACqB,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C;;OAEG;0BACyB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAItD;;OAEG;qBACc,MAAM,GAAG,IAAI;EAG9B,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;EAyBT,CAAC;AAEZ;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAU3E;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC,CAOzD;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -323,7 +323,6 @@ export const SECRETS = Object.freeze({
323
323
  ENCRYPTION_IV: 'encryption/iv',
324
324
  // Third-party APIs
325
325
  STRIPE_API_KEY: 'stripe/api-key',
326
- STRIPE_WEBHOOK_SECRET: 'stripe/webhook-secret',
327
326
  SENDGRID_API_KEY: 'sendgrid/api-key',
328
327
  GITHUB_TOKEN: 'github/token',
329
328
  // Session/CSRF
@@ -18,6 +18,7 @@ export { createRedisConnection } from './workers';
18
18
  * Sealed namespace for immutability
19
19
  */
20
20
  export declare const config: Readonly<{
21
+ readonly middleware: import("./type").MiddlewareConfigType;
21
22
  readonly app: Readonly<{
22
23
  readonly name: string;
23
24
  readonly prefix: string;
@@ -156,7 +157,6 @@ export declare const config: Readonly<{
156
157
  readonly bcryptRounds: number;
157
158
  };
158
159
  }>;
159
- readonly middleware: import("./type").MiddlewareConfigType;
160
160
  readonly microservices: Readonly<{
161
161
  readonly enabled: boolean;
162
162
  readonly services: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;8BAZc,CAAC;;;;;;;;;;;;;;;;;;;;2EAAC,CAAA;;;;;;;;;;;;;;;;;;;;8BAD2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2BomB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EAHzpB,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;8BAZc,CAAC;;;;;;;;;;;;;;;;;;;;2EAAC,CAAA;;;;;;;;;;;;;;;;;;;;8BAD2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA+C8X,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EAHnb,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -28,14 +28,34 @@ export { createRedisConnection } from './workers.js';
28
28
  * Sealed namespace for immutability
29
29
  */
30
30
  export const config = Object.freeze({
31
- app: appConfig,
32
- broadcast: broadcastConfig,
33
- database: databaseConfig,
34
- storage: storageConfig,
35
- notification: notificationConfig,
36
- security: securityConfig,
37
- middleware: middlewareConfig,
38
- microservices: microservicesConfig,
39
- cache: cacheConfig,
40
- queue: queueConfig,
31
+ get middleware() {
32
+ return middlewareConfig;
33
+ },
34
+ get app() {
35
+ return appConfig;
36
+ },
37
+ get broadcast() {
38
+ return broadcastConfig;
39
+ },
40
+ get database() {
41
+ return databaseConfig;
42
+ },
43
+ get storage() {
44
+ return storageConfig;
45
+ },
46
+ get notification() {
47
+ return notificationConfig;
48
+ },
49
+ get security() {
50
+ return securityConfig;
51
+ },
52
+ get microservices() {
53
+ return microservicesConfig;
54
+ },
55
+ get cache() {
56
+ return cacheConfig;
57
+ },
58
+ get queue() {
59
+ return queueConfig;
60
+ },
41
61
  });
@@ -35,6 +35,7 @@ export declare const MiddlewareKeys: Readonly<{
35
35
  csrf: true;
36
36
  auth: true;
37
37
  jwt: true;
38
+ bulletproof: true;
38
39
  validateLogin: true;
39
40
  validateRegister: true;
40
41
  validateUserStore: true;
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/config/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AA+DzD,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,qBAAqB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;EAiBuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,cAAc,CAAC;AA0MxD,wBAAgB,sBAAsB,IAAI,oBAAoB,CAkC7D;AAID;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,IAE7C,CAAC;AAwBF,eAAO,MAAM,gBAAgB,EAAE,oBAY7B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/config/middleware.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAiEzD,eAAO,MAAM,cAAc;;;;;CAKjB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,aAAa,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,qBAAqB,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;EAkBuB,CAAC;AAEnD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,cAAc,CAAC;AA2MxD,wBAAgB,sBAAsB,IAAI,oBAAoB,CAkC7D;AAID;;;GAGG;AACH,eAAO,MAAM,0BAA0B,QAAO,IAE7C,CAAC;AAwBF,eAAO,MAAM,gBAAgB,EAAE,oBAY7B,CAAC;AAEH,eAAe,gBAAgB,CAAC"}
@@ -2,6 +2,7 @@ import { Env } from './env.js';
2
2
  import { bodyParsingMiddleware } from '../http/middleware/BodyParsingMiddleware.js';
3
3
  import { fileUploadMiddleware } from '../http/middleware/FileUploadMiddleware.js';
4
4
  import { AuthMiddleware } from '../middleware/AuthMiddleware.js';
5
+ import { BulletproofAuthMiddleware } from '../middleware/BulletproofAuthMiddleware.js';
5
6
  import { CsrfMiddleware } from '../middleware/CsrfMiddleware.js';
6
7
  import { ErrorHandlerMiddleware } from '../middleware/ErrorHandlerMiddleware.js';
7
8
  import { JwtAuthMiddleware } from '../middleware/JwtAuthMiddleware.js';
@@ -31,6 +32,7 @@ export const MiddlewareKeys = Object.freeze({
31
32
  csrf: true,
32
33
  auth: true,
33
34
  jwt: true,
35
+ bulletproof: true,
34
36
  validateLogin: true,
35
37
  validateRegister: true,
36
38
  validateUserStore: true,
@@ -151,6 +153,7 @@ function createSharedMiddlewares(loadMiddlewareConfig) {
151
153
  }),
152
154
  auth: AuthMiddleware.create(),
153
155
  jwt: JwtAuthMiddleware.create(),
156
+ bulletproof: BulletproofAuthMiddleware.create(),
154
157
  ...validations,
155
158
  });
156
159
  }
@@ -225,5 +225,11 @@ const fetchAssetsTemplate = async (assets, templateName) => {
225
225
  };
226
226
  const loadNodeTemplate = (publicRoot, templateName) => {
227
227
  const templatePath = resolveTemplatePath(publicRoot, templateName);
228
- return safeReadTemplate(templatePath) ?? DEFAULT_TEMPLATES[templateName];
228
+ const loaded = safeReadTemplate(templatePath);
229
+ const resolved = loaded ?? DEFAULT_TEMPLATES[templateName];
230
+ if (resolved !== undefined) {
231
+ // Cache after first successful resolve to avoid repeated filesystem access.
232
+ setTemplateInStore(templateName, resolved);
233
+ }
234
+ return resolved;
229
235
  };
package/src/index.d.ts CHANGED
@@ -82,8 +82,6 @@ export { ValidationError } from './validation/ValidationError';
82
82
  export type { FieldError } from './validation/ValidationError';
83
83
  export { Schema, Validator } from './validation/Validator';
84
84
  export type { ISchema, SchemaType } from './validation/Validator';
85
- export { ZintrustD1Proxy } from './proxy/d1/ZintrustD1Proxy';
86
- export { ZintrustKvProxy } from './proxy/kv/ZintrustKvProxy';
87
85
  export { CsrfTokenManager } from './security/CsrfTokenManager';
88
86
  export type { CsrfTokenData, CsrfTokenManagerType, ICsrfTokenManager, } from './security/CsrfTokenManager';
89
87
  export { EncryptedEnvelope } from './security/EncryptedEnvelope';
@@ -91,6 +89,7 @@ export { Encryptor } from './security/Encryptor';
91
89
  export { Hash } from './security/Hash';
92
90
  export { JwtManager } from './security/JwtManager';
93
91
  export type { IJwtManager, JwtAlgorithm, JwtManagerType, JwtOptions, JwtPayload, } from './security/JwtManager';
92
+ export { JwtSessions } from './security/JwtSessions';
94
93
  export { PasswordResetTokenBroker } from './security/PasswordResetTokenBroker';
95
94
  export type { IPasswordResetTokenBroker, IPasswordResetTokenStore, PasswordResetTokenBrokerOptions, PasswordResetTokenBrokerType, PasswordResetTokenRecord, } from './security/PasswordResetTokenBroker';
96
95
  export { createSanitizer, Sanitizer, type SanitizerType } from './security/Sanitizer';