@zintrust/core 0.1.40 → 0.1.42

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 (590) hide show
  1. package/bin/zintrust-main.d.ts.map +1 -1
  2. package/bin/zintrust-main.js +22 -1
  3. package/package.json +24 -4
  4. package/public/error-pages/404.html +2 -2
  5. package/src/auth/Auth.js +1 -1
  6. package/src/boot/Application.d.ts +1 -16
  7. package/src/boot/Application.d.ts.map +1 -1
  8. package/src/boot/Application.js +2 -290
  9. package/src/boot/Server.d.ts +1 -1
  10. package/src/boot/Server.d.ts.map +1 -1
  11. package/src/boot/bootstrap.js +50 -16
  12. package/src/boot/registry/registerRoute.d.ts +6 -0
  13. package/src/boot/registry/registerRoute.d.ts.map +1 -0
  14. package/src/boot/registry/registerRoute.js +96 -0
  15. package/src/boot/registry/runtime.d.ts +15 -0
  16. package/src/boot/registry/runtime.d.ts.map +1 -0
  17. package/src/boot/registry/runtime.js +364 -0
  18. package/src/boot/registry/type.d.ts +25 -0
  19. package/src/boot/registry/type.d.ts.map +1 -0
  20. package/src/boot/registry/type.js +1 -0
  21. package/src/boot/registry/worker.d.ts +6 -0
  22. package/src/boot/registry/worker.d.ts.map +1 -0
  23. package/src/boot/registry/worker.js +35 -0
  24. package/src/cache/drivers/KVRemoteDriver.d.ts.map +1 -1
  25. package/src/cache/drivers/KVRemoteDriver.js +14 -1
  26. package/src/cli/CLI.d.ts.map +1 -1
  27. package/src/cli/CLI.js +94 -34
  28. package/src/cli/ErrorHandler.js +1 -1
  29. package/src/cli/commands/ConfigCommand.d.ts.map +1 -1
  30. package/src/cli/commands/ConfigCommand.js +3 -5
  31. package/src/cli/commands/ContainerProxiesCommand.d.ts +5 -0
  32. package/src/cli/commands/ContainerProxiesCommand.d.ts.map +1 -0
  33. package/src/cli/commands/ContainerProxiesCommand.js +77 -0
  34. package/src/cli/commands/ContainerWorkersCommand.d.ts +5 -0
  35. package/src/cli/commands/ContainerWorkersCommand.d.ts.map +1 -0
  36. package/src/cli/commands/ContainerWorkersCommand.js +57 -0
  37. package/src/cli/commands/D1LearnCommand.d.ts +9 -0
  38. package/src/cli/commands/D1LearnCommand.d.ts.map +1 -0
  39. package/src/cli/commands/D1LearnCommand.js +143 -0
  40. package/src/cli/commands/D1MigrateCommand.d.ts.map +1 -1
  41. package/src/cli/commands/D1MigrateCommand.js +55 -16
  42. package/src/cli/commands/DeployCommand.d.ts +16 -0
  43. package/src/cli/commands/DeployCommand.d.ts.map +1 -0
  44. package/src/cli/commands/DeployCommand.js +110 -0
  45. package/src/cli/commands/DeployContainerProxiesCommand.d.ts +5 -0
  46. package/src/cli/commands/DeployContainerProxiesCommand.d.ts.map +1 -0
  47. package/src/cli/commands/DeployContainerProxiesCommand.js +27 -0
  48. package/src/cli/commands/DeployContainerWorkersCommand.d.ts +5 -0
  49. package/src/cli/commands/DeployContainerWorkersCommand.d.ts.map +1 -0
  50. package/src/cli/commands/DeployContainerWorkersCommand.js +27 -0
  51. package/src/cli/commands/DockerComposeCommandUtils.d.ts +3 -0
  52. package/src/cli/commands/DockerComposeCommandUtils.d.ts.map +1 -0
  53. package/src/cli/commands/DockerComposeCommandUtils.js +34 -0
  54. package/src/cli/commands/DoctorArchitectureCommand.d.ts +5 -0
  55. package/src/cli/commands/DoctorArchitectureCommand.d.ts.map +1 -0
  56. package/src/cli/commands/DoctorArchitectureCommand.js +54 -0
  57. package/src/cli/commands/InitContainerCommand.d.ts +5 -0
  58. package/src/cli/commands/InitContainerCommand.d.ts.map +1 -0
  59. package/src/cli/commands/InitContainerCommand.js +231 -0
  60. package/src/cli/commands/InitEcosystemCommand.d.ts +6 -0
  61. package/src/cli/commands/InitEcosystemCommand.d.ts.map +1 -0
  62. package/src/cli/commands/InitEcosystemCommand.js +51 -0
  63. package/src/cli/commands/InitProducerCommand.d.ts +5 -0
  64. package/src/cli/commands/InitProducerCommand.d.ts.map +1 -0
  65. package/src/cli/commands/InitProducerCommand.js +47 -0
  66. package/src/cli/commands/InitProxyCommand.d.ts +5 -0
  67. package/src/cli/commands/InitProxyCommand.d.ts.map +1 -0
  68. package/src/cli/commands/InitProxyCommand.js +442 -0
  69. package/src/cli/commands/MigrateCommand.d.ts.map +1 -1
  70. package/src/cli/commands/MigrateCommand.js +78 -36
  71. package/src/cli/commands/MigrateWorkerCommand.d.ts.map +1 -1
  72. package/src/cli/commands/MigrateWorkerCommand.js +36 -2
  73. package/src/cli/commands/MongoDBProxyCommand.d.ts +5 -0
  74. package/src/cli/commands/MongoDBProxyCommand.d.ts.map +1 -0
  75. package/src/cli/commands/MongoDBProxyCommand.js +98 -0
  76. package/src/cli/commands/MySqlProxyCommand.d.ts +6 -0
  77. package/src/cli/commands/MySqlProxyCommand.d.ts.map +1 -0
  78. package/src/cli/commands/MySqlProxyCommand.js +32 -0
  79. package/src/cli/commands/PostgresProxyCommand.d.ts +6 -0
  80. package/src/cli/commands/PostgresProxyCommand.d.ts.map +1 -0
  81. package/src/cli/commands/PostgresProxyCommand.js +32 -0
  82. package/src/cli/commands/ProxyCommand.d.ts +12 -0
  83. package/src/cli/commands/ProxyCommand.d.ts.map +1 -0
  84. package/src/cli/commands/ProxyCommand.js +80 -0
  85. package/src/cli/commands/ProxyCommandUtils.d.ts +6 -0
  86. package/src/cli/commands/ProxyCommandUtils.d.ts.map +1 -0
  87. package/src/cli/commands/ProxyCommandUtils.js +38 -0
  88. package/src/cli/commands/PutCommand.d.ts +6 -0
  89. package/src/cli/commands/PutCommand.d.ts.map +1 -0
  90. package/src/cli/commands/PutCommand.js +173 -0
  91. package/src/cli/commands/QueueRecoveryCommand.d.ts +6 -0
  92. package/src/cli/commands/QueueRecoveryCommand.d.ts.map +1 -0
  93. package/src/cli/commands/QueueRecoveryCommand.js +612 -0
  94. package/src/cli/commands/RedisProxyCommand.d.ts +6 -0
  95. package/src/cli/commands/RedisProxyCommand.d.ts.map +1 -0
  96. package/src/cli/commands/RedisProxyCommand.js +53 -0
  97. package/src/cli/commands/ScheduleListCommand.d.ts +6 -0
  98. package/src/cli/commands/ScheduleListCommand.d.ts.map +1 -0
  99. package/src/cli/commands/ScheduleListCommand.js +62 -0
  100. package/src/cli/commands/ScheduleRunCommand.d.ts +6 -0
  101. package/src/cli/commands/ScheduleRunCommand.d.ts.map +1 -0
  102. package/src/cli/commands/ScheduleRunCommand.js +32 -0
  103. package/src/cli/commands/ScheduleStartCommand.d.ts +6 -0
  104. package/src/cli/commands/ScheduleStartCommand.d.ts.map +1 -0
  105. package/src/cli/commands/ScheduleStartCommand.js +40 -0
  106. package/src/cli/commands/SecretsCommand.d.ts.map +1 -1
  107. package/src/cli/commands/SecretsCommand.js +2 -2
  108. package/src/cli/commands/SmtpProxyCommand.d.ts +6 -0
  109. package/src/cli/commands/SmtpProxyCommand.d.ts.map +1 -0
  110. package/src/cli/commands/SmtpProxyCommand.js +56 -0
  111. package/src/cli/commands/SqlProxyCommandUtils.d.ts +46 -0
  112. package/src/cli/commands/SqlProxyCommandUtils.d.ts.map +1 -0
  113. package/src/cli/commands/SqlProxyCommandUtils.js +48 -0
  114. package/src/cli/commands/SqlServerProxyCommand.d.ts +5 -0
  115. package/src/cli/commands/SqlServerProxyCommand.d.ts.map +1 -0
  116. package/src/cli/commands/SqlServerProxyCommand.js +85 -0
  117. package/src/cli/commands/StartCommand.d.ts.map +1 -1
  118. package/src/cli/commands/StartCommand.js +132 -17
  119. package/src/cli/commands/WorkerCommands.d.ts +1 -0
  120. package/src/cli/commands/WorkerCommands.d.ts.map +1 -1
  121. package/src/cli/commands/WorkerCommands.js +140 -6
  122. package/src/cli/commands/index.d.ts +2 -0
  123. package/src/cli/commands/index.d.ts.map +1 -1
  124. package/src/cli/commands/index.js +2 -0
  125. package/src/cli/commands/runner/index.d.ts +2 -2
  126. package/src/cli/commands/runner/index.d.ts.map +1 -1
  127. package/src/cli/commands/runner/index.js +15 -4
  128. package/src/cli/commands/schedule/ScheduleCliSupport.d.ts +6 -0
  129. package/src/cli/commands/schedule/ScheduleCliSupport.d.ts.map +1 -0
  130. package/src/cli/commands/schedule/ScheduleCliSupport.js +55 -0
  131. package/src/cli/config/ConfigManager.d.ts.map +1 -1
  132. package/src/cli/config/ConfigManager.js +8 -1
  133. package/src/cli/d1/D1SqlMigrations.d.ts.map +1 -1
  134. package/src/cli/d1/D1SqlMigrations.js +14 -1
  135. package/src/cli/d1/WranglerConfig.d.ts.map +1 -1
  136. package/src/cli/d1/WranglerConfig.js +34 -2
  137. package/src/cli/index.d.ts +4 -0
  138. package/src/cli/index.d.ts.map +1 -1
  139. package/src/cli/index.js +4 -0
  140. package/src/cli/scaffolding/ProjectScaffolder.d.ts.map +1 -1
  141. package/src/cli/scaffolding/ProjectScaffolder.js +2 -0
  142. package/src/cli/scaffolding/ServiceScaffolder.d.ts.map +1 -1
  143. package/src/cli/scaffolding/ServiceScaffolder.js +1 -0
  144. package/src/cli/services/VersionChecker.d.ts.map +1 -1
  145. package/src/cli/services/VersionChecker.js +5 -1
  146. package/src/cli/utils/DatabaseCliUtils.d.ts.map +1 -1
  147. package/src/cli/utils/DatabaseCliUtils.js +6 -1
  148. package/src/cli/utils/EnvFileLoader.d.ts.map +1 -1
  149. package/src/cli/utils/EnvFileLoader.js +35 -15
  150. package/src/cli/workers/QueueWorkRunner.js +1 -1
  151. package/src/cli.d.ts +5 -0
  152. package/src/cli.d.ts.map +1 -0
  153. package/src/cli.js +4 -0
  154. package/src/collections/index.d.ts +2 -2
  155. package/src/collections/index.d.ts.map +1 -1
  156. package/src/collections/index.js +1 -1
  157. package/src/common/HealthRoutes.d.ts.map +1 -1
  158. package/src/common/HealthRoutes.js +50 -2
  159. package/src/common/RemoteSignedJson.d.ts +1 -0
  160. package/src/common/RemoteSignedJson.d.ts.map +1 -1
  161. package/src/common/RemoteSignedJson.js +81 -29
  162. package/src/common/index.d.ts +1 -0
  163. package/src/common/index.d.ts.map +1 -1
  164. package/src/common/index.js +12 -1
  165. package/src/common/utility.d.ts.map +1 -1
  166. package/src/common/utility.js +2 -6
  167. package/src/config/FileLogWriter.d.ts.map +1 -1
  168. package/src/config/FileLogWriter.js +21 -6
  169. package/src/config/app.d.ts +4 -0
  170. package/src/config/app.d.ts.map +1 -1
  171. package/src/config/app.js +4 -0
  172. package/src/config/cache.d.ts.map +1 -1
  173. package/src/config/cache.js +22 -2
  174. package/src/config/cloudflare.d.ts +5 -1
  175. package/src/config/cloudflare.d.ts.map +1 -1
  176. package/src/config/cloudflare.js +67 -8
  177. package/src/config/database.d.ts.map +1 -1
  178. package/src/config/database.js +48 -13
  179. package/src/config/env.d.ts +87 -2
  180. package/src/config/env.d.ts.map +1 -1
  181. package/src/config/env.js +158 -19
  182. package/src/config/index.d.ts +1 -0
  183. package/src/config/index.d.ts.map +1 -1
  184. package/src/config/mail.d.ts.map +1 -1
  185. package/src/config/mail.js +16 -10
  186. package/src/config/middleware.d.ts +5 -0
  187. package/src/config/middleware.d.ts.map +1 -1
  188. package/src/config/middleware.js +19 -1
  189. package/src/config/queue.d.ts.map +1 -1
  190. package/src/config/queue.js +70 -9
  191. package/src/config/redis.d.ts.map +1 -1
  192. package/src/config/redis.js +48 -13
  193. package/src/config/storage.d.ts.map +1 -1
  194. package/src/config/storage.js +1 -0
  195. package/src/config/type.d.ts +18 -0
  196. package/src/config/type.d.ts.map +1 -1
  197. package/src/config/workers.d.ts.map +1 -1
  198. package/src/config/workers.js +122 -16
  199. package/src/functions/cloudflare.d.ts.map +1 -1
  200. package/src/functions/cloudflare.js +55 -1
  201. package/src/health/StartupHealthChecks.js +1 -1
  202. package/src/helper/index.d.ts +225 -0
  203. package/src/helper/index.d.ts.map +1 -0
  204. package/src/helper/index.js +347 -0
  205. package/src/http/FileUpload.d.ts +3 -2
  206. package/src/http/FileUpload.d.ts.map +1 -1
  207. package/src/http/Kernel.d.ts.map +1 -1
  208. package/src/http/Kernel.js +2 -1
  209. package/src/http/error-pages/ErrorPageRenderer.d.ts +4 -0
  210. package/src/http/error-pages/ErrorPageRenderer.d.ts.map +1 -1
  211. package/src/http/error-pages/ErrorPageRenderer.js +141 -1
  212. package/src/http/middleware/BodyParsingMiddleware.d.ts.map +1 -1
  213. package/src/http/middleware/BodyParsingMiddleware.js +33 -6
  214. package/src/index.d.ts +26 -57
  215. package/src/index.d.ts.map +1 -1
  216. package/src/index.js +32 -18
  217. package/src/microservices/ServiceAuthMiddleware.d.ts.map +1 -1
  218. package/src/microservices/ServiceAuthMiddleware.js +12 -4
  219. package/src/middleware/CsrfMiddleware.d.ts.map +1 -1
  220. package/src/middleware/CsrfMiddleware.js +30 -16
  221. package/src/middleware/ErrorHandlerMiddleware.d.ts.map +1 -1
  222. package/src/middleware/ErrorHandlerMiddleware.js +2 -1
  223. package/src/migrations/MigrationDiscovery.d.ts.map +1 -1
  224. package/src/migrations/MigrationDiscovery.js +2 -1
  225. package/src/migrations/MigrationLoader.js +1 -1
  226. package/src/migrations/schema/SchemaCompiler.d.ts.map +1 -1
  227. package/src/migrations/schema/SchemaCompiler.js +6 -3
  228. package/src/node-singletons/crypto.d.ts +1 -1
  229. package/src/node-singletons/crypto.d.ts.map +1 -1
  230. package/src/node-singletons/crypto.js +1 -1
  231. package/src/node-singletons/fs.d.ts +1 -1
  232. package/src/node-singletons/fs.d.ts.map +1 -1
  233. package/src/node-singletons/path.d.ts +1 -1
  234. package/src/node-singletons/path.d.ts.map +1 -1
  235. package/src/node-singletons/path.js +1 -1
  236. package/src/node-singletons/stream.d.ts +11 -0
  237. package/src/node-singletons/stream.d.ts.map +1 -0
  238. package/src/node-singletons/stream.js +8 -0
  239. package/src/observability/OpenTelemetry.d.ts +7 -0
  240. package/src/observability/OpenTelemetry.d.ts.map +1 -1
  241. package/src/observability/OpenTelemetry.js +49 -2
  242. package/src/orm/Database.d.ts +4 -0
  243. package/src/orm/Database.d.ts.map +1 -1
  244. package/src/orm/Database.js +80 -9
  245. package/src/orm/DatabaseAdapter.d.ts +1 -0
  246. package/src/orm/DatabaseAdapter.d.ts.map +1 -1
  247. package/src/orm/DatabaseRuntimeRegistration.d.ts.map +1 -1
  248. package/src/orm/DatabaseRuntimeRegistration.js +2 -0
  249. package/src/orm/QueryBuilder.d.ts +1 -0
  250. package/src/orm/QueryBuilder.d.ts.map +1 -1
  251. package/src/orm/QueryBuilder.js +33 -3
  252. package/src/orm/SchemaCompiler.d.ts.map +1 -1
  253. package/src/orm/SchemaCompiler.js +6 -3
  254. package/src/orm/SchemaStatemenWriter.d.ts +15 -0
  255. package/src/orm/SchemaStatemenWriter.d.ts.map +1 -0
  256. package/src/orm/SchemaStatemenWriter.js +78 -0
  257. package/src/orm/adapters/D1Adapter.d.ts.map +1 -1
  258. package/src/orm/adapters/D1Adapter.js +52 -2
  259. package/src/orm/adapters/D1RemoteAdapter.d.ts.map +1 -1
  260. package/src/orm/adapters/D1RemoteAdapter.js +150 -89
  261. package/src/orm/adapters/MongoDBProxyAdapter.d.ts +3 -0
  262. package/src/orm/adapters/MongoDBProxyAdapter.d.ts.map +1 -0
  263. package/src/orm/adapters/MongoDBProxyAdapter.js +128 -0
  264. package/src/orm/adapters/MySQLProxyAdapter.d.ts +11 -0
  265. package/src/orm/adapters/MySQLProxyAdapter.d.ts.map +1 -0
  266. package/src/orm/adapters/MySQLProxyAdapter.js +162 -0
  267. package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts +11 -0
  268. package/src/orm/adapters/PostgreSQLProxyAdapter.d.ts.map +1 -0
  269. package/src/orm/adapters/PostgreSQLProxyAdapter.js +163 -0
  270. package/src/orm/adapters/ProxyCache.d.ts +9 -0
  271. package/src/orm/adapters/ProxyCache.d.ts.map +1 -0
  272. package/src/orm/adapters/ProxyCache.js +24 -0
  273. package/src/orm/adapters/ProxySignedRequest.d.ts +11 -0
  274. package/src/orm/adapters/ProxySignedRequest.d.ts.map +1 -0
  275. package/src/orm/adapters/ProxySignedRequest.js +30 -0
  276. package/src/orm/adapters/ProxySigningPath.d.ts +3 -0
  277. package/src/orm/adapters/ProxySigningPath.d.ts.map +1 -0
  278. package/src/orm/adapters/ProxySigningPath.js +25 -0
  279. package/src/orm/adapters/SqlProxyAdapterUtils.d.ts +19 -0
  280. package/src/orm/adapters/SqlProxyAdapterUtils.d.ts.map +1 -0
  281. package/src/orm/adapters/SqlProxyAdapterUtils.js +36 -0
  282. package/src/orm/adapters/SqlProxyRegistryMode.d.ts +12 -0
  283. package/src/orm/adapters/SqlProxyRegistryMode.d.ts.map +1 -0
  284. package/src/orm/adapters/SqlProxyRegistryMode.js +24 -0
  285. package/src/orm/adapters/SqlServerProxyAdapter.d.ts +6 -0
  286. package/src/orm/adapters/SqlServerProxyAdapter.d.ts.map +1 -0
  287. package/src/orm/adapters/SqlServerProxyAdapter.js +154 -0
  288. package/src/orm/migrations/MigrationStore.js +1 -1
  289. package/src/performance/Optimizer.d.ts +1 -0
  290. package/src/performance/Optimizer.d.ts.map +1 -1
  291. package/src/performance/Optimizer.js +21 -8
  292. package/src/proxy/ErrorHandler.d.ts +11 -0
  293. package/src/proxy/ErrorHandler.d.ts.map +1 -0
  294. package/src/proxy/ErrorHandler.js +7 -0
  295. package/src/proxy/PoolManager.d.ts +8 -0
  296. package/src/proxy/PoolManager.d.ts.map +1 -0
  297. package/src/proxy/PoolManager.js +18 -0
  298. package/src/proxy/ProxyBackend.d.ts +18 -0
  299. package/src/proxy/ProxyBackend.d.ts.map +1 -0
  300. package/src/proxy/ProxyBackend.js +1 -0
  301. package/src/proxy/ProxyConfig.d.ts +12 -0
  302. package/src/proxy/ProxyConfig.d.ts.map +1 -0
  303. package/src/proxy/ProxyConfig.js +1 -0
  304. package/src/proxy/ProxyRegistry.d.ts +10 -0
  305. package/src/proxy/ProxyRegistry.d.ts.map +1 -0
  306. package/src/proxy/ProxyRegistry.js +11 -0
  307. package/src/proxy/ProxyRequestParsing.d.ts +9 -0
  308. package/src/proxy/ProxyRequestParsing.d.ts.map +1 -0
  309. package/src/proxy/ProxyRequestParsing.js +16 -0
  310. package/src/proxy/ProxyServer.d.ts +21 -0
  311. package/src/proxy/ProxyServer.d.ts.map +1 -0
  312. package/src/proxy/ProxyServer.js +84 -0
  313. package/src/proxy/ProxyServerUtils.d.ts +37 -0
  314. package/src/proxy/ProxyServerUtils.d.ts.map +1 -0
  315. package/src/proxy/ProxyServerUtils.js +42 -0
  316. package/src/proxy/ProxySigningConfigResolver.d.ts +22 -0
  317. package/src/proxy/ProxySigningConfigResolver.d.ts.map +1 -0
  318. package/src/proxy/ProxySigningConfigResolver.js +24 -0
  319. package/src/proxy/ProxySigningRequest.d.ts +12 -0
  320. package/src/proxy/ProxySigningRequest.d.ts.map +1 -0
  321. package/src/proxy/ProxySigningRequest.js +31 -0
  322. package/src/proxy/RequestValidator.d.ts +15 -0
  323. package/src/proxy/RequestValidator.d.ts.map +1 -0
  324. package/src/proxy/RequestValidator.js +26 -0
  325. package/src/proxy/SigningService.d.ts +39 -0
  326. package/src/proxy/SigningService.d.ts.map +1 -0
  327. package/src/proxy/SigningService.js +107 -0
  328. package/src/proxy/SqlPayloadValidator.d.ts +13 -0
  329. package/src/proxy/SqlPayloadValidator.d.ts.map +1 -0
  330. package/src/proxy/SqlPayloadValidator.js +14 -0
  331. package/src/proxy/SqlProxyDbOverrides.d.ts +17 -0
  332. package/src/proxy/SqlProxyDbOverrides.d.ts.map +1 -0
  333. package/src/proxy/SqlProxyDbOverrides.js +1 -0
  334. package/src/proxy/SqlProxyServerDeps.d.ts +12 -0
  335. package/src/proxy/SqlProxyServerDeps.d.ts.map +1 -0
  336. package/src/proxy/SqlProxyServerDeps.js +9 -0
  337. package/src/proxy/StatementPayloadValidator.d.ts +13 -0
  338. package/src/proxy/StatementPayloadValidator.d.ts.map +1 -0
  339. package/src/proxy/StatementPayloadValidator.js +18 -0
  340. package/src/proxy/StatementRegistryLoader.d.ts +2 -0
  341. package/src/proxy/StatementRegistryLoader.d.ts.map +1 -0
  342. package/src/proxy/StatementRegistryLoader.js +36 -0
  343. package/src/proxy/StatementRegistryResolver.d.ts +15 -0
  344. package/src/proxy/StatementRegistryResolver.d.ts.map +1 -0
  345. package/src/proxy/StatementRegistryResolver.js +34 -0
  346. package/src/proxy/d1/ZintrustD1Proxy.d.ts +3 -0
  347. package/src/proxy/d1/ZintrustD1Proxy.d.ts.map +1 -0
  348. package/src/proxy/d1/ZintrustD1Proxy.js +2 -0
  349. package/src/proxy/d1/register.d.ts +2 -0
  350. package/src/proxy/d1/register.d.ts.map +1 -0
  351. package/src/proxy/d1/register.js +5 -0
  352. package/src/proxy/isMutatingSql.d.ts +2 -0
  353. package/src/proxy/isMutatingSql.d.ts.map +1 -0
  354. package/src/proxy/isMutatingSql.js +12 -0
  355. package/src/proxy/kv/ZintrustKvProxy.d.ts +3 -0
  356. package/src/proxy/kv/ZintrustKvProxy.d.ts.map +1 -0
  357. package/src/proxy/kv/ZintrustKvProxy.js +2 -0
  358. package/src/proxy/kv/register.d.ts +2 -0
  359. package/src/proxy/kv/register.d.ts.map +1 -0
  360. package/src/proxy/kv/register.js +5 -0
  361. package/src/proxy/mongodb/MongoDBProxyServer.d.ts +33 -0
  362. package/src/proxy/mongodb/MongoDBProxyServer.d.ts.map +1 -0
  363. package/src/proxy/mongodb/MongoDBProxyServer.js +202 -0
  364. package/src/proxy/mongodb/register.d.ts +2 -0
  365. package/src/proxy/mongodb/register.d.ts.map +1 -0
  366. package/src/proxy/mongodb/register.js +5 -0
  367. package/src/proxy/mysql/MySqlProxyServer.d.ts +8 -0
  368. package/src/proxy/mysql/MySqlProxyServer.d.ts.map +1 -0
  369. package/src/proxy/mysql/MySqlProxyServer.js +202 -0
  370. package/src/proxy/mysql/register.d.ts +2 -0
  371. package/src/proxy/mysql/register.d.ts.map +1 -0
  372. package/src/proxy/mysql/register.js +5 -0
  373. package/src/proxy/postgres/PostgresProxyServer.d.ts +8 -0
  374. package/src/proxy/postgres/PostgresProxyServer.d.ts.map +1 -0
  375. package/src/proxy/postgres/PostgresProxyServer.js +178 -0
  376. package/src/proxy/postgres/register.d.ts +2 -0
  377. package/src/proxy/postgres/register.d.ts.map +1 -0
  378. package/src/proxy/postgres/register.js +5 -0
  379. package/src/proxy/redis/RedisProxyServer.d.ts +12 -0
  380. package/src/proxy/redis/RedisProxyServer.d.ts.map +1 -0
  381. package/src/proxy/redis/RedisProxyServer.js +192 -0
  382. package/src/proxy/redis/register.d.ts +2 -0
  383. package/src/proxy/redis/register.d.ts.map +1 -0
  384. package/src/proxy/redis/register.js +5 -0
  385. package/src/proxy/smtp/SmtpProxyServer.d.ts +19 -0
  386. package/src/proxy/smtp/SmtpProxyServer.d.ts.map +1 -0
  387. package/src/proxy/smtp/SmtpProxyServer.js +290 -0
  388. package/src/proxy/smtp/register.d.ts +2 -0
  389. package/src/proxy/smtp/register.d.ts.map +1 -0
  390. package/src/proxy/smtp/register.js +5 -0
  391. package/src/proxy/sqlserver/SqlServerProxyServer.d.ts +8 -0
  392. package/src/proxy/sqlserver/SqlServerProxyServer.d.ts.map +1 -0
  393. package/src/proxy/sqlserver/SqlServerProxyServer.js +203 -0
  394. package/src/proxy/sqlserver/register.d.ts +2 -0
  395. package/src/proxy/sqlserver/register.d.ts.map +1 -0
  396. package/src/proxy/sqlserver/register.js +5 -0
  397. package/src/proxy.d.ts +4 -0
  398. package/src/proxy.d.ts.map +1 -0
  399. package/src/proxy.js +3 -0
  400. package/src/routes/doc.d.ts.map +1 -1
  401. package/src/routes/doc.js +16 -2
  402. package/src/routes/error.d.ts +5 -4
  403. package/src/routes/error.d.ts.map +1 -1
  404. package/src/routes/error.js +15 -13
  405. package/src/routes/errorPages.d.ts +2 -0
  406. package/src/routes/errorPages.d.ts.map +1 -1
  407. package/src/routes/errorPages.js +144 -4
  408. package/src/runtime/PluginAutoImports.d.ts +1 -0
  409. package/src/runtime/PluginAutoImports.d.ts.map +1 -1
  410. package/src/runtime/PluginAutoImports.js +94 -9
  411. package/src/runtime/RuntimeAdapter.d.ts +8 -9
  412. package/src/runtime/RuntimeAdapter.d.ts.map +1 -1
  413. package/src/runtime/RuntimeAdapter.js +120 -34
  414. package/src/runtime/RuntimeServices.d.ts +47 -0
  415. package/src/runtime/RuntimeServices.d.ts.map +1 -0
  416. package/src/runtime/RuntimeServices.js +164 -0
  417. package/src/runtime/StartupConfigFileRegistry.d.ts +4 -4
  418. package/src/runtime/StartupConfigFileRegistry.d.ts.map +1 -1
  419. package/src/runtime/StartupConfigFileRegistry.js +12 -0
  420. package/src/runtime/WorkerAdapterImports.d.ts +5 -0
  421. package/src/runtime/WorkerAdapterImports.d.ts.map +1 -0
  422. package/src/runtime/WorkerAdapterImports.js +17 -0
  423. package/src/runtime/WorkersModule.d.ts +6 -0
  424. package/src/runtime/WorkersModule.d.ts.map +1 -0
  425. package/src/runtime/WorkersModule.js +278 -0
  426. package/src/runtime/adapters/CloudflareAdapter.d.ts.map +1 -1
  427. package/src/runtime/adapters/CloudflareAdapter.js +19 -2
  428. package/src/runtime/adapters/DenoAdapter.js +1 -0
  429. package/src/runtime/adapters/FargateAdapter.js +1 -1
  430. package/src/runtime/adapters/LambdaAdapter.js +1 -1
  431. package/src/runtime/adapters/NodeServerAdapter.js +1 -1
  432. package/src/runtime/detectRuntime.d.ts +10 -0
  433. package/src/runtime/detectRuntime.d.ts.map +1 -0
  434. package/src/runtime/detectRuntime.js +57 -0
  435. package/src/runtime/useFileLoader.d.ts.map +1 -1
  436. package/src/runtime/useFileLoader.js +16 -0
  437. package/src/scheduler/Schedule.d.ts +36 -0
  438. package/src/scheduler/Schedule.d.ts.map +1 -0
  439. package/src/scheduler/Schedule.js +197 -0
  440. package/src/scheduler/ScheduleHttpGateway.d.ts +8 -0
  441. package/src/scheduler/ScheduleHttpGateway.d.ts.map +1 -0
  442. package/src/scheduler/ScheduleHttpGateway.js +196 -0
  443. package/src/scheduler/ScheduleRunner.d.ts +6 -0
  444. package/src/scheduler/ScheduleRunner.d.ts.map +1 -1
  445. package/src/scheduler/ScheduleRunner.js +166 -29
  446. package/src/scheduler/SchedulerRuntime.d.ts +15 -0
  447. package/src/scheduler/SchedulerRuntime.d.ts.map +1 -0
  448. package/src/scheduler/SchedulerRuntime.js +79 -0
  449. package/src/scheduler/cron/Cron.d.ts +19 -0
  450. package/src/scheduler/cron/Cron.d.ts.map +1 -0
  451. package/src/scheduler/cron/Cron.js +200 -0
  452. package/src/scheduler/leader/SchedulerLeader.d.ts +14 -0
  453. package/src/scheduler/leader/SchedulerLeader.d.ts.map +1 -0
  454. package/src/scheduler/leader/SchedulerLeader.js +187 -0
  455. package/src/scheduler/state/ScheduleStateStore.d.ts +27 -0
  456. package/src/scheduler/state/ScheduleStateStore.d.ts.map +1 -0
  457. package/src/scheduler/state/ScheduleStateStore.js +27 -0
  458. package/src/scheduler/types.d.ts +10 -0
  459. package/src/scheduler/types.d.ts.map +1 -1
  460. package/src/schedules/index.d.ts +1 -0
  461. package/src/schedules/index.d.ts.map +1 -1
  462. package/src/schedules/index.js +1 -0
  463. package/src/schedules/job-tracking-cleanup.d.ts +4 -0
  464. package/src/schedules/job-tracking-cleanup.d.ts.map +1 -0
  465. package/src/schedules/job-tracking-cleanup.js +116 -0
  466. package/src/schedules/log-cleanup.d.ts +1 -2
  467. package/src/schedules/log-cleanup.d.ts.map +1 -1
  468. package/src/schedules/log-cleanup.js +12 -15
  469. package/src/scripts/TemplateImportsCheck.js +2 -2
  470. package/src/scripts/TemplateSync.js +3 -4
  471. package/src/security/CsrfTokenManager.d.ts.map +1 -1
  472. package/src/security/CsrfTokenManager.js +12 -0
  473. package/src/security/Hash.d.ts +1 -1
  474. package/src/security/Hash.d.ts.map +1 -1
  475. package/src/security/Hash.js +31 -36
  476. package/src/security/Sanitizer.d.ts.map +1 -1
  477. package/src/security/Sanitizer.js +1 -9
  478. package/src/security/SignedRequest.d.ts.map +1 -1
  479. package/src/security/SignedRequest.js +2 -2
  480. package/src/seeders/SeederLoader.js +1 -1
  481. package/src/session/SessionManager.d.ts +3 -0
  482. package/src/session/SessionManager.d.ts.map +1 -1
  483. package/src/session/SessionManager.js +49 -10
  484. package/src/sockets/CloudflareSocket.d.ts +24 -0
  485. package/src/sockets/CloudflareSocket.d.ts.map +1 -0
  486. package/src/sockets/CloudflareSocket.js +259 -0
  487. package/src/start.d.ts.map +1 -1
  488. package/src/start.js +1 -8
  489. package/src/templates/docker/docker-compose.ecosystem.yml.tpl +301 -0
  490. package/src/templates/docker/docker-compose.schedules.yml.tpl +84 -0
  491. package/src/templates/project/basic/app/Schedules/index.ts.tpl +0 -0
  492. package/src/templates/project/basic/config/database.ts.tpl +1 -1
  493. package/src/templates/project/basic/src/zintrust.plugins.wg.ts.tpl +8 -0
  494. package/src/toolkit/Secrets/Manifest.d.ts.map +1 -1
  495. package/src/toolkit/Secrets/Manifest.js +5 -7
  496. package/src/tools/mail/drivers/Smtp.d.ts.map +1 -1
  497. package/src/tools/mail/drivers/Smtp.js +229 -18
  498. package/src/tools/mail/index.d.ts.map +1 -1
  499. package/src/tools/mail/index.js +5 -4
  500. package/src/tools/mail/template-loader.d.ts.map +1 -1
  501. package/src/tools/mail/template-loader.js +197 -29
  502. package/src/tools/mail/templates/auth-password-reset.d.ts +3 -0
  503. package/src/tools/mail/templates/auth-password-reset.d.ts.map +1 -0
  504. package/src/tools/mail/templates/auth-password-reset.js +231 -0
  505. package/src/tools/mail/templates/auth-welcome.d.ts +3 -0
  506. package/src/tools/mail/templates/auth-welcome.d.ts.map +1 -0
  507. package/src/tools/mail/templates/auth-welcome.js +236 -0
  508. package/src/tools/mail/templates/general.d.ts +3 -0
  509. package/src/tools/mail/templates/general.d.ts.map +1 -0
  510. package/src/tools/mail/templates/general.js +109 -0
  511. package/src/tools/mail/templates/index.js +2 -2
  512. package/src/tools/mail/templates/job-completed.d.ts +3 -0
  513. package/src/tools/mail/templates/job-completed.d.ts.map +1 -0
  514. package/src/tools/mail/templates/job-completed.js +188 -0
  515. package/src/tools/mail/templates/notifications-new-comment.d.ts +3 -0
  516. package/src/tools/mail/templates/notifications-new-comment.d.ts.map +1 -0
  517. package/src/tools/mail/templates/notifications-new-comment.js +228 -0
  518. package/src/tools/mail/templates/password-reset.d.ts +3 -0
  519. package/src/tools/mail/templates/password-reset.d.ts.map +1 -0
  520. package/src/tools/mail/templates/password-reset.js +221 -0
  521. package/src/tools/mail/templates/performance-report.d.ts +3 -0
  522. package/src/tools/mail/templates/performance-report.d.ts.map +1 -0
  523. package/src/tools/mail/templates/performance-report.js +258 -0
  524. package/src/tools/mail/templates/welcome.d.ts +3 -0
  525. package/src/tools/mail/templates/welcome.d.ts.map +1 -0
  526. package/src/tools/mail/templates/welcome.js +187 -0
  527. package/src/tools/mail/templates/worker-alert.d.ts +3 -0
  528. package/src/tools/mail/templates/worker-alert.d.ts.map +1 -0
  529. package/src/tools/mail/templates/worker-alert.js +229 -0
  530. package/src/tools/notification/Notification.js +1 -1
  531. package/src/tools/notification/testingHelpers.js +6 -5
  532. package/src/tools/queue/AdvancedQueue.js +2 -6
  533. package/src/tools/queue/IdempotencyManager.d.ts +6 -0
  534. package/src/tools/queue/IdempotencyManager.d.ts.map +1 -0
  535. package/src/tools/queue/IdempotencyManager.js +36 -0
  536. package/src/tools/queue/JobHeartbeatStore.d.ts +16 -0
  537. package/src/tools/queue/JobHeartbeatStore.d.ts.map +1 -0
  538. package/src/tools/queue/JobHeartbeatStore.js +67 -0
  539. package/src/tools/queue/JobReconciliationRunner.d.ts +16 -0
  540. package/src/tools/queue/JobReconciliationRunner.d.ts.map +1 -0
  541. package/src/tools/queue/JobReconciliationRunner.js +56 -0
  542. package/src/tools/queue/JobRecoveryDaemon.d.ts +27 -0
  543. package/src/tools/queue/JobRecoveryDaemon.d.ts.map +1 -0
  544. package/src/tools/queue/JobRecoveryDaemon.js +303 -0
  545. package/src/tools/queue/JobStateTracker.d.ts +140 -0
  546. package/src/tools/queue/JobStateTracker.d.ts.map +1 -0
  547. package/src/tools/queue/JobStateTracker.js +409 -0
  548. package/src/tools/queue/JobStateTrackerDbPersistence.d.ts +12 -0
  549. package/src/tools/queue/JobStateTrackerDbPersistence.d.ts.map +1 -0
  550. package/src/tools/queue/JobStateTrackerDbPersistence.js +239 -0
  551. package/src/tools/queue/Queue.d.ts.map +1 -1
  552. package/src/tools/queue/Queue.js +160 -16
  553. package/src/tools/queue/QueueDataRedactor.d.ts +6 -0
  554. package/src/tools/queue/QueueDataRedactor.d.ts.map +1 -0
  555. package/src/tools/queue/QueueDataRedactor.js +45 -0
  556. package/src/tools/queue/QueueExtensions.d.ts.map +1 -1
  557. package/src/tools/queue/QueueExtensions.js +2 -1
  558. package/src/tools/queue/QueueReliabilityMetrics.d.ts +38 -0
  559. package/src/tools/queue/QueueReliabilityMetrics.d.ts.map +1 -0
  560. package/src/tools/queue/QueueReliabilityMetrics.js +131 -0
  561. package/src/tools/queue/QueueReliabilityOrchestrator.d.ts +7 -0
  562. package/src/tools/queue/QueueReliabilityOrchestrator.d.ts.map +1 -0
  563. package/src/tools/queue/QueueReliabilityOrchestrator.js +59 -0
  564. package/src/tools/queue/QueueRuntimeRegistration.d.ts +1 -9
  565. package/src/tools/queue/QueueRuntimeRegistration.d.ts.map +1 -1
  566. package/src/tools/queue/QueueRuntimeRegistration.js +75 -4
  567. package/src/tools/queue/QueueTracing.d.ts +32 -0
  568. package/src/tools/queue/QueueTracing.d.ts.map +1 -0
  569. package/src/tools/queue/QueueTracing.js +151 -0
  570. package/src/tools/queue/StalledJobMonitor.d.ts +5 -0
  571. package/src/tools/queue/StalledJobMonitor.d.ts.map +1 -0
  572. package/src/tools/queue/StalledJobMonitor.js +21 -0
  573. package/src/tools/queue/TimeoutManager.d.ts +14 -0
  574. package/src/tools/queue/TimeoutManager.d.ts.map +1 -0
  575. package/src/tools/queue/TimeoutManager.js +77 -0
  576. package/src/tools/queue/drivers/Redis.d.ts +1 -0
  577. package/src/tools/queue/drivers/Redis.d.ts.map +1 -1
  578. package/src/tools/queue/drivers/Redis.js +1 -0
  579. package/src/tools/queue/index.d.ts +10 -0
  580. package/src/tools/queue/index.d.ts.map +1 -1
  581. package/src/tools/queue/index.js +10 -0
  582. package/src/tools/storage/drivers/R2.d.ts +13 -0
  583. package/src/tools/storage/drivers/R2.d.ts.map +1 -1
  584. package/src/tools/storage/drivers/R2.js +29 -0
  585. package/src/zintrust.plugins.d.ts +9 -0
  586. package/src/zintrust.plugins.d.ts.map +1 -0
  587. package/src/zintrust.plugins.js +7 -0
  588. package/src/zintrust.plugins.wg.d.ts +9 -0
  589. package/src/zintrust.plugins.wg.d.ts.map +1 -0
  590. package/src/zintrust.plugins.wg.js +7 -0
@@ -6,18 +6,28 @@
6
6
  * Safe for both Node.js and serverless runtimes (Cloudflare Workers, Deno, Lambda)
7
7
  */
8
8
  import type { ProcessLike } from './type';
9
+ export type EnvSource = Record<string, unknown> | (() => Record<string, unknown>);
9
10
  export declare const getProcessLike: () => ProcessLike | undefined;
10
11
  export declare const dirnameFromExecPath: (execPath: string, platform?: string) => string;
11
12
  export declare const get: (key: string, defaultValue?: string) => string;
12
- export declare const getInt: (key: string, defaultValue?: number) => number;
13
+ export declare const getInt: (key: string, defaultValue: number) => number;
13
14
  export declare const getFloat: (key: string, defaultValue?: number) => number;
14
15
  export declare const getBool: (key: string, defaultValue?: boolean) => boolean;
16
+ export declare const set: (key: string, value: string) => void;
17
+ export declare const unset: (key: string) => void;
18
+ export declare const setSource: (source: EnvSource | null) => void;
19
+ export declare const snapshot: () => Record<string, string>;
15
20
  export declare const getDefaultLogLevel: () => "debug" | "info" | "warn" | "error";
21
+ export declare const ZT_PROXY_TIMEOUT_MS: number;
16
22
  export declare const Env: Readonly<{
17
23
  get: (key: string, defaultValue?: string) => string;
18
- getInt: (key: string, defaultValue?: number) => number;
24
+ getInt: (key: string, defaultValue: number) => number;
19
25
  getBool: (key: string, defaultValue?: boolean) => boolean;
20
26
  getFloat: (key: string, defaultValue?: number) => number;
27
+ set: (key: string, value: string) => void;
28
+ unset: (key: string) => void;
29
+ setSource: (source: EnvSource | null) => void;
30
+ snapshot: () => Record<string, string>;
21
31
  NODE_ENV: NodeJS.ProcessEnv["NODE_ENV"];
22
32
  PORT: number;
23
33
  HOST: string;
@@ -49,6 +59,67 @@ export declare const Env: Readonly<{
49
59
  D1_REMOTE_KEY_ID: string;
50
60
  D1_REMOTE_SECRET: string;
51
61
  D1_REMOTE_MODE: string;
62
+ MYSQL_PROXY_URL: string;
63
+ MYSQL_PROXY_HOST: string;
64
+ MYSQL_PROXY_PORT: number;
65
+ MYSQL_PROXY_MAX_BODY_BYTES: number;
66
+ MYSQL_PROXY_POOL_LIMIT: number;
67
+ MYSQL_PROXY_KEY_ID: string;
68
+ MYSQL_PROXY_SECRET: string;
69
+ MYSQL_PROXY_TIMEOUT_MS: number;
70
+ MYSQL_PROXY_REQUIRE_SIGNING: boolean;
71
+ MYSQL_PROXY_SIGNING_WINDOW_MS: number;
72
+ POSTGRES_PROXY_URL: string;
73
+ POSTGRES_PROXY_HOST: string;
74
+ POSTGRES_PROXY_PORT: number;
75
+ POSTGRES_PROXY_MAX_BODY_BYTES: number;
76
+ POSTGRES_PROXY_POOL_LIMIT: number;
77
+ POSTGRES_PROXY_KEY_ID: string;
78
+ POSTGRES_PROXY_SECRET: string;
79
+ POSTGRES_PROXY_TIMEOUT_MS: number;
80
+ POSTGRES_PROXY_REQUIRE_SIGNING: boolean;
81
+ POSTGRES_PROXY_SIGNING_WINDOW_MS: number;
82
+ REDIS_PROXY_URL: string;
83
+ REDIS_PROXY_HOST: string;
84
+ REDIS_PROXY_PORT: number;
85
+ REDIS_PROXY_MAX_BODY_BYTES: number;
86
+ REDIS_PROXY_KEY_ID: string;
87
+ REDIS_PROXY_SECRET: string;
88
+ REDIS_PROXY_TIMEOUT_MS: number;
89
+ REDIS_PROXY_REQUIRE_SIGNING: boolean;
90
+ REDIS_PROXY_SIGNING_WINDOW_MS: number;
91
+ USE_REDIS_PROXY: boolean;
92
+ SMTP_PROXY_URL: string;
93
+ SMTP_PROXY_HOST: string;
94
+ SMTP_PROXY_PORT: number;
95
+ SMTP_PROXY_MAX_BODY_BYTES: number;
96
+ SMTP_PROXY_KEY_ID: string;
97
+ SMTP_PROXY_SECRET: string;
98
+ SMTP_PROXY_TIMEOUT_MS: number;
99
+ SMTP_PROXY_REQUIRE_SIGNING: boolean;
100
+ SMTP_PROXY_SIGNING_WINDOW_MS: number;
101
+ USE_SMTP_PROXY: boolean;
102
+ MONGODB_PROXY_URL: string;
103
+ MONGODB_PROXY_HOST: string;
104
+ MONGODB_PROXY_PORT: number;
105
+ MONGODB_PROXY_MAX_BODY_BYTES: number;
106
+ MONGODB_PROXY_KEY_ID: string;
107
+ MONGODB_PROXY_SECRET: string;
108
+ MONGODB_PROXY_TIMEOUT_MS: number;
109
+ MONGODB_PROXY_REQUIRE_SIGNING: boolean;
110
+ MONGODB_PROXY_SIGNING_WINDOW_MS: number;
111
+ USE_MONGODB_PROXY: boolean;
112
+ SQLSERVER_PROXY_URL: string;
113
+ SQLSERVER_PROXY_HOST: string;
114
+ SQLSERVER_PROXY_PORT: number;
115
+ SQLSERVER_PROXY_MAX_BODY_BYTES: number;
116
+ SQLSERVER_PROXY_POOL_LIMIT: number;
117
+ SQLSERVER_PROXY_KEY_ID: string;
118
+ SQLSERVER_PROXY_SECRET: string;
119
+ SQLSERVER_PROXY_TIMEOUT_MS: number;
120
+ SQLSERVER_PROXY_REQUIRE_SIGNING: boolean;
121
+ SQLSERVER_PROXY_SIGNING_WINDOW_MS: number;
122
+ USE_SQLSERVER_PROXY: boolean;
52
123
  KV_REMOTE_URL: string;
53
124
  KV_REMOTE_KEY_ID: string;
54
125
  KV_REMOTE_SECRET: string;
@@ -59,11 +130,22 @@ export declare const Env: Readonly<{
59
130
  REDIS_HOST: string;
60
131
  REDIS_PORT: number;
61
132
  REDIS_PASSWORD: string;
133
+ REDIS_DB: number;
62
134
  REDIS_URL: string;
63
135
  MONGO_URI: string;
64
136
  MONGO_DB: string;
65
137
  QUEUE_CONNECTION: string;
66
138
  QUEUE_DRIVER: string;
139
+ QUEUE_HTTP_PROXY_ENABLED: boolean;
140
+ QUEUE_HTTP_PROXY_GATEWAY_ENABLED: boolean;
141
+ QUEUE_HTTP_PROXY_URL: string;
142
+ QUEUE_HTTP_PROXY_PATH: string;
143
+ QUEUE_HTTP_PROXY_KEY_ID: string;
144
+ QUEUE_HTTP_PROXY_KEY: string;
145
+ QUEUE_HTTP_PROXY_TIMEOUT_MS: number;
146
+ QUEUE_HTTP_PROXY_MAX_SKEW_MS: number;
147
+ QUEUE_HTTP_PROXY_NONCE_TTL_MS: number;
148
+ QUEUE_HTTP_PROXY_MIDDLEWARE: string;
67
149
  RATE_LIMIT_STORE: string;
68
150
  RATE_LIMIT_DRIVER: string;
69
151
  RATE_LIMIT_KEY_PREFIX: string;
@@ -100,6 +182,7 @@ export declare const Env: Readonly<{
100
182
  LOG_LEVEL: "debug" | "info" | "warn" | "error";
101
183
  LOG_FORMAT: string;
102
184
  LOG_CHANNEL: string;
185
+ DOCKER_WORKER: boolean;
103
186
  DISABLE_LOGGING: boolean;
104
187
  LOG_HTTP_REQUEST: boolean;
105
188
  LOG_TO_FILE: boolean;
@@ -112,6 +195,7 @@ export declare const Env: Readonly<{
112
195
  ZINTRUST_ENV_IN_FILE: string;
113
196
  ZINTRUST_SECRETS_PROVIDER: string;
114
197
  ZINTRUST_ALLOW_AUTO_INSTALL: string;
198
+ WORKER_SHUTDOWN_ON_APP_EXIT: boolean;
115
199
  CLOUDFLARE_ACCOUNT_ID: string;
116
200
  CLOUDFLARE_API_TOKEN: string;
117
201
  CLOUDFLARE_KV_NAMESPACE_ID: string;
@@ -130,4 +214,5 @@ export declare const Env: Readonly<{
130
214
  NODE_BIN_DIR: string;
131
215
  SAFE_PATH: string;
132
216
  }>;
217
+ export declare const buildRedisUrl: () => string;
133
218
  //# sourceMappingURL=env.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,eAAO,MAAM,cAAc,QAAO,WAAW,GAAG,SAAwB,CAAC;AAEzE,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,KAAG,MAKzE,CAAC;AAGF,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,MAGxD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,MAM3D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,MAM7D,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,eAAe,OAAO,KAAG,OAK7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAKjE,CAAC;AAGF,eAAO,MAAM,GAAG;eApCS,MAAM,iBAAiB,MAAM,KAAG,MAAM;kBAKnC,MAAM,iBAAiB,MAAM,KAAG,MAAM;mBAgBrC,MAAM,iBAAiB,OAAO,KAAG,OAAO;oBARvC,MAAM,iBAAiB,MAAM,KAAG,MAAM;cA+BtB,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAoHpB,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmExF,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/config/env.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAuBlF,eAAO,MAAM,cAAc,QAAO,WAAW,GAAG,SAAwB,CAAC;AAEzE,eAAO,MAAM,mBAAmB,GAAI,UAAU,MAAM,EAAE,WAAW,MAAM,KAAG,MAKzE,CAAC;AAGF,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,MAIxD,CAAC;AAEF,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,EAAE,cAAc,MAAM,KAAG,MAI1D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,KAAK,MAAM,EAAE,eAAe,MAAM,KAAG,MAI7D,CAAC;AAEF,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,EAAE,eAAe,OAAO,KAAG,OAI7D,CAAC;AAEF,eAAO,MAAM,GAAG,GAAI,KAAK,MAAM,EAAE,OAAO,MAAM,KAAG,IAGhD,CAAC;AAEF,eAAO,MAAM,KAAK,GAAI,KAAK,MAAM,KAAG,IAInC,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,QAAQ,SAAS,GAAG,IAAI,KAAG,IAEpD,CAAC;AAEF,eAAO,MAAM,QAAQ,QAAO,MAAM,CAAC,MAAM,EAAE,MAAM,CAOhD,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAKjE,CAAC;AACF,eAAO,MAAM,mBAAmB,QAAuC,CAAC;AAKxE,eAAO,MAAM,GAAG;eA3DS,MAAM,iBAAiB,MAAM,KAAG,MAAM;kBAMnC,MAAM,gBAAgB,MAAM,KAAG,MAAM;mBAYpC,MAAM,iBAAiB,OAAO,KAAG,OAAO;oBANvC,MAAM,iBAAiB,MAAM,KAAG,MAAM;eAY3C,MAAM,SAAS,MAAM,KAAG,IAAI;iBAK1B,MAAM,KAAG,IAAI;wBAMN,SAAS,GAAG,IAAI,KAAG,IAAI;oBAI7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;cAgCJ,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAuNpB,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgFxF,CAAC;AAEH,eAAO,MAAM,aAAa,QAAO,MAchC,CAAC"}
package/src/config/env.js CHANGED
@@ -7,6 +7,24 @@
7
7
  */
8
8
  // Cache process check once at module load time
9
9
  const processLike = typeof process === 'undefined' ? undefined : process;
10
+ let externalEnvSource = null;
11
+ const getEnvSource = () => {
12
+ if (typeof externalEnvSource === 'function')
13
+ return externalEnvSource();
14
+ if (externalEnvSource !== null)
15
+ return externalEnvSource;
16
+ return processLike?.env ?? {};
17
+ };
18
+ const normalizeEnvValue = (value) => {
19
+ if (value === null || value === undefined)
20
+ return '';
21
+ if (typeof value === 'string')
22
+ return value;
23
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
24
+ return String(value);
25
+ }
26
+ return '';
27
+ };
10
28
  export const getProcessLike = () => processLike;
11
29
  export const dirnameFromExecPath = (execPath, platform) => {
12
30
  const separator = platform === 'win32' ? '\\' : '/';
@@ -17,34 +35,50 @@ export const dirnameFromExecPath = (execPath, platform) => {
17
35
  };
18
36
  // Private helper functions
19
37
  export const get = (key, defaultValue) => {
20
- const env = processLike?.env ?? {};
21
- return env[key] ?? defaultValue ?? '';
38
+ const env = getEnvSource();
39
+ const value = normalizeEnvValue(env[key]);
40
+ return value === '' ? (defaultValue ?? '') : value;
22
41
  };
23
42
  export const getInt = (key, defaultValue) => {
24
- const env = processLike?.env ?? {};
25
- const value = env[key];
26
- if (value === undefined || value === null)
27
- return defaultValue ?? 0;
28
- if (typeof value === 'string' && value.trim() === '')
43
+ const value = get(key, String(defaultValue ?? 0));
44
+ if (value.trim() === '')
29
45
  return defaultValue ?? 0;
30
46
  return Number.parseInt(value, 10);
31
47
  };
32
48
  export const getFloat = (key, defaultValue) => {
33
- const env = processLike?.env ?? {};
34
- const value = env[key];
35
- if (value === undefined || value === null)
36
- return defaultValue ?? 0;
37
- if (typeof value === 'string' && value.trim() === '')
49
+ const value = get(key, String(defaultValue ?? 0));
50
+ if (value.trim() === '')
38
51
  return defaultValue ?? 0;
39
52
  return Number.parseFloat(value);
40
53
  };
41
54
  export const getBool = (key, defaultValue) => {
42
- const env = processLike?.env ?? {};
43
- const value = env[key];
44
- if (value === undefined || value === null)
55
+ const value = get(key, defaultValue === true ? 'true' : 'false');
56
+ if (value.trim() === '')
45
57
  return defaultValue ?? false;
46
58
  return value.toLowerCase() === 'true' || value === '1';
47
59
  };
60
+ export const set = (key, value) => {
61
+ if (processLike?.env === undefined)
62
+ return;
63
+ processLike.env[key] = value;
64
+ };
65
+ export const unset = (key) => {
66
+ if (processLike?.env === undefined)
67
+ return;
68
+ // Use Reflect.deleteProperty to avoid deleting dynamically computed property keys
69
+ Reflect.deleteProperty(processLike.env, key);
70
+ };
71
+ export const setSource = (source) => {
72
+ externalEnvSource = source;
73
+ };
74
+ export const snapshot = () => {
75
+ const env = getEnvSource();
76
+ const out = {};
77
+ for (const [key, value] of Object.entries(env)) {
78
+ out[key] = normalizeEnvValue(value);
79
+ }
80
+ return out;
81
+ };
48
82
  export const getDefaultLogLevel = () => {
49
83
  const NODE_ENV_VALUE = get('NODE_ENV', 'development');
50
84
  if (NODE_ENV_VALUE === 'production')
@@ -53,6 +87,9 @@ export const getDefaultLogLevel = () => {
53
87
  return 'error';
54
88
  return 'debug';
55
89
  };
90
+ export const ZT_PROXY_TIMEOUT_MS = getInt('ZT_PROXY_TIMEOUT_MS', 30000);
91
+ const PROXY_KEY_ID_FALLBACK = get('APP_NAME', 'ZinTrust');
92
+ const PROXY_SECRET_FALLBACK = get('APP_KEY', '');
56
93
  // Sealed namespace with all environment configuration
57
94
  export const Env = Object.freeze({
58
95
  // Helper functions
@@ -60,6 +97,10 @@ export const Env = Object.freeze({
60
97
  getInt,
61
98
  getBool,
62
99
  getFloat,
100
+ set,
101
+ unset,
102
+ setSource,
103
+ snapshot,
63
104
  // Core
64
105
  NODE_ENV: get('NODE_ENV', 'development'),
65
106
  // Prefer PORT, fallback to APP_PORT for compatibility
@@ -97,9 +138,70 @@ export const Env = Object.freeze({
97
138
  KV_NAMESPACE_ID: get('KV_NAMESPACE_ID'),
98
139
  // Cloudflare proxy services (D1/KV outside Cloudflare)
99
140
  D1_REMOTE_URL: get('D1_REMOTE_URL', ''),
100
- D1_REMOTE_KEY_ID: get('D1_REMOTE_KEY_ID', ''),
101
- D1_REMOTE_SECRET: get('D1_REMOTE_SECRET', ''),
141
+ D1_REMOTE_KEY_ID: get('D1_REMOTE_KEY_ID', PROXY_KEY_ID_FALLBACK),
142
+ D1_REMOTE_SECRET: get('D1_REMOTE_SECRET', PROXY_SECRET_FALLBACK),
102
143
  D1_REMOTE_MODE: get('D1_REMOTE_MODE', 'registry'),
144
+ MYSQL_PROXY_URL: get('MYSQL_PROXY_URL', ''),
145
+ MYSQL_PROXY_HOST: get('MYSQL_PROXY_HOST', '127.0.0.1'),
146
+ MYSQL_PROXY_PORT: getInt('MYSQL_PROXY_PORT', 8789),
147
+ MYSQL_PROXY_MAX_BODY_BYTES: getInt('MYSQL_PROXY_MAX_BODY_BYTES', 131072),
148
+ MYSQL_PROXY_POOL_LIMIT: getInt('MYSQL_PROXY_POOL_LIMIT', 10),
149
+ MYSQL_PROXY_KEY_ID: get('MYSQL_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
150
+ MYSQL_PROXY_SECRET: get('MYSQL_PROXY_SECRET', PROXY_SECRET_FALLBACK),
151
+ MYSQL_PROXY_TIMEOUT_MS: getInt('MYSQL_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
152
+ MYSQL_PROXY_REQUIRE_SIGNING: getBool('MYSQL_PROXY_REQUIRE_SIGNING', true),
153
+ MYSQL_PROXY_SIGNING_WINDOW_MS: getInt('MYSQL_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
154
+ POSTGRES_PROXY_URL: get('POSTGRES_PROXY_URL', ''),
155
+ POSTGRES_PROXY_HOST: get('POSTGRES_PROXY_HOST', '127.0.0.1'),
156
+ POSTGRES_PROXY_PORT: getInt('POSTGRES_PROXY_PORT', 8790),
157
+ POSTGRES_PROXY_MAX_BODY_BYTES: getInt('POSTGRES_PROXY_MAX_BODY_BYTES', 131072),
158
+ POSTGRES_PROXY_POOL_LIMIT: getInt('POSTGRES_PROXY_POOL_LIMIT', 10),
159
+ POSTGRES_PROXY_KEY_ID: get('POSTGRES_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
160
+ POSTGRES_PROXY_SECRET: get('POSTGRES_PROXY_SECRET', PROXY_SECRET_FALLBACK),
161
+ POSTGRES_PROXY_TIMEOUT_MS: getInt('POSTGRES_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
162
+ POSTGRES_PROXY_REQUIRE_SIGNING: getBool('POSTGRES_PROXY_REQUIRE_SIGNING', true),
163
+ POSTGRES_PROXY_SIGNING_WINDOW_MS: getInt('POSTGRES_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
164
+ REDIS_PROXY_URL: get('REDIS_PROXY_URL', ''),
165
+ REDIS_PROXY_HOST: get('REDIS_PROXY_HOST', '127.0.0.1'),
166
+ REDIS_PROXY_PORT: getInt('REDIS_PROXY_PORT', 8791),
167
+ REDIS_PROXY_MAX_BODY_BYTES: getInt('REDIS_PROXY_MAX_BODY_BYTES', 131072),
168
+ REDIS_PROXY_KEY_ID: get('REDIS_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
169
+ REDIS_PROXY_SECRET: get('REDIS_PROXY_SECRET', PROXY_SECRET_FALLBACK),
170
+ REDIS_PROXY_TIMEOUT_MS: getInt('REDIS_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
171
+ REDIS_PROXY_REQUIRE_SIGNING: getBool('REDIS_PROXY_REQUIRE_SIGNING', true),
172
+ REDIS_PROXY_SIGNING_WINDOW_MS: getInt('REDIS_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
173
+ USE_REDIS_PROXY: getBool('USE_REDIS_PROXY', false),
174
+ SMTP_PROXY_URL: get('SMTP_PROXY_URL', ''),
175
+ SMTP_PROXY_HOST: get('SMTP_PROXY_HOST', '127.0.0.1'),
176
+ SMTP_PROXY_PORT: getInt('SMTP_PROXY_PORT', 8794),
177
+ SMTP_PROXY_MAX_BODY_BYTES: getInt('SMTP_PROXY_MAX_BODY_BYTES', 131072),
178
+ SMTP_PROXY_KEY_ID: get('SMTP_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
179
+ SMTP_PROXY_SECRET: get('SMTP_PROXY_SECRET', PROXY_SECRET_FALLBACK),
180
+ SMTP_PROXY_TIMEOUT_MS: getInt('SMTP_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
181
+ SMTP_PROXY_REQUIRE_SIGNING: getBool('SMTP_PROXY_REQUIRE_SIGNING', true),
182
+ SMTP_PROXY_SIGNING_WINDOW_MS: getInt('SMTP_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
183
+ USE_SMTP_PROXY: getBool('USE_SMTP_PROXY', false),
184
+ MONGODB_PROXY_URL: get('MONGODB_PROXY_URL', ''),
185
+ MONGODB_PROXY_HOST: get('MONGODB_PROXY_HOST', '127.0.0.1'),
186
+ MONGODB_PROXY_PORT: getInt('MONGODB_PROXY_PORT', 8792),
187
+ MONGODB_PROXY_MAX_BODY_BYTES: getInt('MONGODB_PROXY_MAX_BODY_BYTES', 131072),
188
+ MONGODB_PROXY_KEY_ID: get('MONGODB_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
189
+ MONGODB_PROXY_SECRET: get('MONGODB_PROXY_SECRET', PROXY_SECRET_FALLBACK),
190
+ MONGODB_PROXY_TIMEOUT_MS: getInt('MONGODB_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
191
+ MONGODB_PROXY_REQUIRE_SIGNING: getBool('MONGODB_PROXY_REQUIRE_SIGNING', true),
192
+ MONGODB_PROXY_SIGNING_WINDOW_MS: getInt('MONGODB_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
193
+ USE_MONGODB_PROXY: getBool('USE_MONGODB_PROXY', false),
194
+ SQLSERVER_PROXY_URL: get('SQLSERVER_PROXY_URL', ''),
195
+ SQLSERVER_PROXY_HOST: get('SQLSERVER_PROXY_HOST', '127.0.0.1'),
196
+ SQLSERVER_PROXY_PORT: getInt('SQLSERVER_PROXY_PORT', 8793),
197
+ SQLSERVER_PROXY_MAX_BODY_BYTES: getInt('SQLSERVER_PROXY_MAX_BODY_BYTES', 131072),
198
+ SQLSERVER_PROXY_POOL_LIMIT: getInt('SQLSERVER_PROXY_POOL_LIMIT', 10),
199
+ SQLSERVER_PROXY_KEY_ID: get('SQLSERVER_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
200
+ SQLSERVER_PROXY_SECRET: get('SQLSERVER_PROXY_SECRET', PROXY_SECRET_FALLBACK),
201
+ SQLSERVER_PROXY_TIMEOUT_MS: getInt('SQLSERVER_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
202
+ SQLSERVER_PROXY_REQUIRE_SIGNING: getBool('SQLSERVER_PROXY_REQUIRE_SIGNING', true),
203
+ SQLSERVER_PROXY_SIGNING_WINDOW_MS: getInt('SQLSERVER_PROXY_SIGNING_WINDOW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
204
+ USE_SQLSERVER_PROXY: getBool('USE_SQLSERVER_PROXY', false),
103
205
  KV_REMOTE_URL: get('KV_REMOTE_URL', ''),
104
206
  KV_REMOTE_KEY_ID: get('KV_REMOTE_KEY_ID', ''),
105
207
  KV_REMOTE_SECRET: get('KV_REMOTE_SECRET', ''),
@@ -112,12 +214,23 @@ export const Env = Object.freeze({
112
214
  REDIS_HOST: get('REDIS_HOST', 'localhost'),
113
215
  REDIS_PORT: getInt('REDIS_PORT', 6379),
114
216
  REDIS_PASSWORD: get('REDIS_PASSWORD', ''),
217
+ REDIS_DB: getInt('REDIS_DB', 0),
115
218
  REDIS_URL: get('REDIS_URL', ''),
116
219
  MONGO_URI: get('MONGO_URI'),
117
220
  MONGO_DB: get('MONGO_DB', 'zintrust_cache'),
118
221
  // Queue
119
222
  QUEUE_CONNECTION: get('QUEUE_CONNECTION', ''),
120
223
  QUEUE_DRIVER: get('QUEUE_DRIVER', ''),
224
+ QUEUE_HTTP_PROXY_ENABLED: getBool('QUEUE_HTTP_PROXY_ENABLED', false),
225
+ QUEUE_HTTP_PROXY_GATEWAY_ENABLED: getBool('QUEUE_HTTP_PROXY_GATEWAY_ENABLED', true),
226
+ QUEUE_HTTP_PROXY_URL: get('QUEUE_HTTP_PROXY_URL', ''),
227
+ QUEUE_HTTP_PROXY_PATH: get('QUEUE_HTTP_PROXY_PATH', '/api/_sys/queue/rpc'),
228
+ QUEUE_HTTP_PROXY_KEY_ID: get('QUEUE_HTTP_PROXY_KEY_ID', PROXY_KEY_ID_FALLBACK),
229
+ QUEUE_HTTP_PROXY_KEY: get('QUEUE_HTTP_PROXY_KEY', PROXY_SECRET_FALLBACK),
230
+ QUEUE_HTTP_PROXY_TIMEOUT_MS: getInt('QUEUE_HTTP_PROXY_TIMEOUT_MS', ZT_PROXY_TIMEOUT_MS),
231
+ QUEUE_HTTP_PROXY_MAX_SKEW_MS: getInt('QUEUE_HTTP_PROXY_MAX_SKEW_MS', getInt('ZT_PROXY_SIGNING_WINDOW_MS', 60000)),
232
+ QUEUE_HTTP_PROXY_NONCE_TTL_MS: getInt('QUEUE_HTTP_PROXY_NONCE_TTL_MS', 120000),
233
+ QUEUE_HTTP_PROXY_MIDDLEWARE: get('QUEUE_HTTP_PROXY_MIDDLEWARE', ''),
121
234
  // Rate Limiting
122
235
  RATE_LIMIT_STORE: get('RATE_LIMIT_STORE', ''),
123
236
  RATE_LIMIT_DRIVER: get('RATE_LIMIT_DRIVER', ''),
@@ -163,6 +276,7 @@ export const Env = Object.freeze({
163
276
  LOG_LEVEL: get('LOG_LEVEL', getDefaultLogLevel()),
164
277
  LOG_FORMAT: get('LOG_FORMAT', 'text'),
165
278
  LOG_CHANNEL: get('LOG_CHANNEL', ''),
279
+ DOCKER_WORKER: getBool('DOCKER_WORKER', false),
166
280
  DISABLE_LOGGING: getBool('DISABLE_LOGGING', false),
167
281
  LOG_HTTP_REQUEST: getBool('LOG_HTTP_REQUEST', false),
168
282
  LOG_TO_FILE: getBool('LOG_TO_FILE', false),
@@ -176,6 +290,7 @@ export const Env = Object.freeze({
176
290
  ZINTRUST_ENV_IN_FILE: get('ZINTRUST_ENV_IN_FILE', '.env'),
177
291
  ZINTRUST_SECRETS_PROVIDER: get('ZINTRUST_SECRETS_PROVIDER', ''),
178
292
  ZINTRUST_ALLOW_AUTO_INSTALL: get('ZINTRUST_ALLOW_AUTO_INSTALL', ''),
293
+ WORKER_SHUTDOWN_ON_APP_EXIT: getBool('WORKER_SHUTDOWN_ON_APP_EXIT', true),
179
294
  // Cloudflare Credentials
180
295
  CLOUDFLARE_ACCOUNT_ID: get('CLOUDFLARE_ACCOUNT_ID', ''),
181
296
  CLOUDFLARE_API_TOKEN: get('CLOUDFLARE_API_TOKEN', ''),
@@ -191,7 +306,7 @@ export const Env = Object.freeze({
191
306
  HOME: get('HOME', ''),
192
307
  USERPROFILE: get('USERPROFILE', ''),
193
308
  // Template/Misc
194
- TEMPLATE_COPYRIGHT: get('TEMPLATE_COPYRIGHT', 2025 ZinTrust Framework. All rights reserved.'),
309
+ TEMPLATE_COPYRIGHT: get('TEMPLATE_COPYRIGHT', ${new Date().getFullYear()} ZinTrust Framework. All rights reserved.`),
195
310
  SERVICE_NAME: get('SERVICE_NAME', ''),
196
311
  APP_MODE: get('APP_MODE', get('NODE_ENV', 'development')),
197
312
  APP_PORT: getInt('APP_PORT', 3000),
@@ -216,7 +331,15 @@ export const Env = Object.freeze({
216
331
  if (processLike.platform === 'win32') {
217
332
  return [String.raw `C:\Windows\System32`, String.raw `C:\Windows`, binDir].join(';');
218
333
  }
219
- return ['/usr/bin', '/bin', '/usr/sbin', '/sbin', binDir].join(':');
334
+ return [
335
+ '/opt/homebrew/bin',
336
+ '/usr/local/bin',
337
+ '/usr/bin',
338
+ '/bin',
339
+ '/usr/sbin',
340
+ '/sbin',
341
+ binDir,
342
+ ].join(':');
220
343
  }
221
344
  catch {
222
345
  // Fallback for non-Node environments
@@ -224,3 +347,19 @@ export const Env = Object.freeze({
224
347
  }
225
348
  })(),
226
349
  });
350
+ export const buildRedisUrl = () => {
351
+ const raw = get('REDIS_URL', '').trim();
352
+ if (raw !== '')
353
+ return raw;
354
+ const host = get('REDIS_HOST', 'localhost');
355
+ const port = getInt('REDIS_PORT', 6379);
356
+ const password = get('REDIS_PASSWORD', '');
357
+ const db = getInt('REDIS_QUEUE_DB', 0);
358
+ let url = 'redis://';
359
+ if (password.trim() !== '')
360
+ url += `:${encodeURIComponent(password)}@`;
361
+ url += `${host}:${port}`;
362
+ if (db > 0)
363
+ url += `/${db}`;
364
+ return url;
365
+ };
@@ -28,6 +28,7 @@ export declare const config: Readonly<{
28
28
  readonly isProduction: () => boolean;
29
29
  readonly isTesting: () => boolean;
30
30
  readonly debug: boolean;
31
+ readonly dockerWorker: boolean;
31
32
  readonly timezone: string;
32
33
  readonly requestTimeout: number;
33
34
  readonly maxBodySize: number;
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAmBrD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EAKA,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA2BomB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EAHzpB,CAAC;AAEZ,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../src/config/mail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAItE,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C,CAAC,CAAC;AAmCH,QAAA,MAAM,gBAAgB,QAAO;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,CAAC;CAgGvE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAqB7D,eAAO,MAAM,UAAU,EAAE,UAYvB,CAAC"}
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../../src/config/mail.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAItE,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C,CAAC,CAAC;AA6FH,QAAA,MAAM,gBAAgB,QAAO;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC1C,SAAS,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,CAAC;CA6CvE,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAqB7D,eAAO,MAAM,UAAU,EAAE,UAYvB,CAAC"}
@@ -35,16 +35,11 @@ const getMailDriver = (config, name) => {
35
35
  }
36
36
  throw ErrorFactory.createConfigError(`Mail driver not configured: ${selected}`);
37
37
  };
38
- const createMailConfig = () => {
39
- const overrides = StartupConfigFileRegistry.get(StartupConfigFile.Mail) ?? {};
40
- const baseDefault = Env.get('MAIL_CONNECTION', Env.get('MAIL_DRIVER', 'disabled'))
41
- .trim()
42
- .toLowerCase();
43
- const baseFrom = {
44
- address: Env.get('MAIL_FROM_ADDRESS', ''),
45
- name: Env.get('MAIL_FROM_NAME', ''),
46
- };
47
- const baseDrivers = {
38
+ /**
39
+ * Create base mail drivers configuration
40
+ */
41
+ const createMailDrivers = () => {
42
+ return {
48
43
  disabled: {
49
44
  driver: 'disabled',
50
45
  },
@@ -97,6 +92,17 @@ const createMailConfig = () => {
97
92
  region: Env.get('AWS_REGION', 'us-east-1'),
98
93
  },
99
94
  };
95
+ };
96
+ const createMailConfig = () => {
97
+ const overrides = StartupConfigFileRegistry.get(StartupConfigFile.Mail) ?? {};
98
+ const baseDefault = Env.get('MAIL_CONNECTION', Env.get('MAIL_DRIVER', 'disabled'))
99
+ .trim()
100
+ .toLowerCase();
101
+ const baseFrom = {
102
+ address: Env.get('MAIL_FROM_ADDRESS', ''),
103
+ name: Env.get('MAIL_FROM_NAME', ''),
104
+ };
105
+ const baseDrivers = createMailDrivers();
100
106
  const mailConfigObj = {
101
107
  /**
102
108
  * Default mail driver
@@ -43,6 +43,11 @@ export declare const MiddlewareKeys: Readonly<{
43
43
  }>;
44
44
  export type MiddlewareKey = keyof typeof MiddlewareKeys;
45
45
  export declare function createMiddlewareConfig(): MiddlewareConfigType;
46
+ /**
47
+ * Clear the middleware configuration cache
48
+ * This ensures fresh config loading in watch mode
49
+ */
50
+ export declare const clearMiddlewareConfigCache: () => void;
46
51
  export declare const middlewareConfig: MiddlewareConfigType;
47
52
  export default middlewareConfig;
48
53
  //# sourceMappingURL=middleware.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/config/middleware.ts"],"names":[],"mappings":"AAAA,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,CAqB7D;AA0BD,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;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,3 +1,4 @@
1
+ import { Env } from './env.js';
1
2
  import { bodyParsingMiddleware } from '../http/middleware/BodyParsingMiddleware.js';
2
3
  import { fileUploadMiddleware } from '../http/middleware/FileUploadMiddleware.js';
3
4
  import { AuthMiddleware } from '../middleware/AuthMiddleware.js';
@@ -155,7 +156,17 @@ function createSharedMiddlewares(loadMiddlewareConfig) {
155
156
  }
156
157
  export function createMiddlewareConfig() {
157
158
  const loadMiddlewareConfig = StartupConfigFileRegistry.get(StartupConfigFile.Middleware) ?? {};
158
- const shared = createSharedMiddlewares(loadMiddlewareConfig);
159
+ const skipPathsFromEnv = Env.get('CSRF_SKIP_PATHS', '')
160
+ .split(',')
161
+ .map((path) => path.trim())
162
+ .filter((path) => path.length > 0);
163
+ const effectiveMiddlewareConfig = {
164
+ ...loadMiddlewareConfig,
165
+ skipPaths: Array.isArray(loadMiddlewareConfig.skipPaths) && loadMiddlewareConfig.skipPaths.length > 0
166
+ ? loadMiddlewareConfig.skipPaths
167
+ : skipPathsFromEnv,
168
+ };
169
+ const shared = createSharedMiddlewares(effectiveMiddlewareConfig);
159
170
  const middlewareConfigObj = {
160
171
  global: [
161
172
  shared.log,
@@ -172,6 +183,13 @@ export function createMiddlewareConfig() {
172
183
  return Object.freeze(middlewareConfigObj);
173
184
  }
174
185
  let cached = null;
186
+ /**
187
+ * Clear the middleware configuration cache
188
+ * This ensures fresh config loading in watch mode
189
+ */
190
+ export const clearMiddlewareConfigCache = () => {
191
+ cached = null;
192
+ };
175
193
  // Proxy target must satisfy JS Proxy invariants.
176
194
  // When we lazily create a frozen config object (with non-configurable properties),
177
195
  // we mirror its property descriptors onto this target so reflective operations
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AASH;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,kBAmCnC,CAAC;AAsBH,QAAA,MAAM,iBAAiB,QAAO;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzF,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CAuEH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAqB/D,eAAO,MAAM,WAAW,EAAE,WAYxB,CAAC"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/config/queue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGhG,MAAM,MAAM,oBAAoB,GAAG,OAAO,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH,CAAC,CAAC;AA+EH;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAAO,kBA4DnC,CAAC;AAsBH,QAAA,MAAM,iBAAiB,QAAO;IAC5B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACzF,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACnF,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,OAAO,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CAuEH,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAqB/D,eAAO,MAAM,WAAW,EAAE,WAYxB,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * Background job and message queue settings
4
4
  * Sealed namespace for immutability
5
5
  */
6
+ import { Cloudflare } from './cloudflare.js';
6
7
  import { Env } from './env.js';
7
8
  import { ZintrustLang } from '../lang/lang.js';
8
9
  import { StartupConfigFile, StartupConfigFileRegistry } from '../runtime/StartupConfigFileRegistry.js';
@@ -10,6 +11,59 @@ const getQueueDriver = (driverConfig) => {
10
11
  const driverName = driverConfig.default;
11
12
  return driverConfig.drivers[driverName];
12
13
  };
14
+ const readWorkersEnvString = (key) => {
15
+ const workerValue = Cloudflare.getWorkersVar(key);
16
+ if (workerValue !== null && workerValue.trim() !== '')
17
+ return workerValue;
18
+ return '';
19
+ };
20
+ const readWorkersFallbackString = (workersKey, fallbackKey, fallback = '') => {
21
+ const workerValue = readWorkersEnvString(workersKey);
22
+ if (workerValue.trim() !== '')
23
+ return workerValue;
24
+ return Env.get(fallbackKey, fallback);
25
+ };
26
+ const readWorkersFallbackInt = (workersKey, fallbackKey, fallback) => {
27
+ const raw = readWorkersFallbackString(workersKey, fallbackKey, String(fallback));
28
+ if (raw.trim() === '')
29
+ return fallback;
30
+ const parsed = Number.parseInt(raw, 10);
31
+ return Number.isFinite(parsed) ? parsed : fallback;
32
+ };
33
+ const parseRedisUrl = (rawUrl) => {
34
+ try {
35
+ const url = new URL(rawUrl);
36
+ if (url.protocol !== 'redis:' && url.protocol !== 'rediss:')
37
+ return null;
38
+ const host = url.hostname;
39
+ const port = url.port ? Number.parseInt(url.port, 10) : 6379;
40
+ const password = url.password ? decodeURIComponent(url.password) : undefined;
41
+ const db = url.pathname ? Number.parseInt(url.pathname.replace('/', ''), 10) : undefined;
42
+ return { host, port, password, database: Number.isFinite(db ?? Number.NaN) ? db : undefined };
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ };
48
+ const resolveRedisProxyConfig = () => {
49
+ const isWorkersRuntime = Cloudflare.getWorkersEnv() !== null;
50
+ if (!isWorkersRuntime) {
51
+ return null;
52
+ }
53
+ const proxyUrl = Env.get('REDIS_PROXY_URL', '').trim();
54
+ const parsed = proxyUrl ? parseRedisUrl(proxyUrl) : null;
55
+ if (parsed)
56
+ return parsed;
57
+ if (Env.getBool('USE_REDIS_PROXY', false)) {
58
+ return {
59
+ host: Env.get('REDIS_PROXY_HOST', ''),
60
+ port: Env.getInt('REDIS_PROXY_PORT', 6379),
61
+ password: Env.get('REDIS_PASSWORD', ''),
62
+ database: Env.getInt('REDIS_QUEUE_DB', ZintrustLang.REDIS_DEFAULT_DB),
63
+ };
64
+ }
65
+ return null;
66
+ };
13
67
  /**
14
68
  * Helper: Create base driver configurations from environment
15
69
  */
@@ -28,18 +82,25 @@ export const createBaseDrivers = () => ({
28
82
  },
29
83
  redis: {
30
84
  driver: 'redis',
31
- host: Env.get('REDIS_HOST', 'localhost'),
32
- port: Env.getInt('REDIS_PORT', 6379),
33
- password: Env.get('REDIS_PASSWORD'),
34
- database: Env.getInt('REDIS_QUEUE_DB', ZintrustLang.REDIS_DEFAULT_DB),
85
+ host: resolveRedisProxyConfig()?.host ??
86
+ readWorkersFallbackString('WORKERS_REDIS_HOST', 'REDIS_HOST', 'localhost'),
87
+ port: resolveRedisProxyConfig()?.port ??
88
+ readWorkersFallbackInt('WORKERS_REDIS_PORT', 'REDIS_PORT', 6379),
89
+ password: resolveRedisProxyConfig()?.password ??
90
+ readWorkersFallbackString('WORKERS_REDIS_PASSWORD', 'REDIS_PASSWORD'),
91
+ database: resolveRedisProxyConfig()?.database ??
92
+ readWorkersFallbackInt('WORKERS_REDIS_QUEUE_DB', 'REDIS_QUEUE_DB', ZintrustLang.REDIS_DEFAULT_DB),
35
93
  },
36
94
  rabbitmq: {
37
95
  driver: 'rabbitmq',
38
- host: Env.get('RABBITMQ_HOST', 'localhost'),
39
- port: Env.getInt('RABBITMQ_PORT', 5672),
40
- username: Env.get('RABBITMQ_USER', 'guest'),
41
- password: Env.get('RABBITMQ_PASSWORD', 'guest'),
42
- vhost: Env.get('RABBITMQ_VHOST', '/'),
96
+ host: readWorkersFallbackString('WORKERS_RABBITMQ_HOST', 'RABBITMQ_HOST', 'localhost'),
97
+ port: readWorkersFallbackInt('WORKERS_RABBITMQ_PORT', 'RABBITMQ_PORT', 5672),
98
+ username: readWorkersFallbackString('WORKERS_RABBITMQ_USER', 'RABBITMQ_USER', 'guest'),
99
+ password: readWorkersFallbackString('WORKERS_RABBITMQ_PASSWORD', 'RABBITMQ_PASSWORD', 'guest'),
100
+ vhost: readWorkersFallbackString('WORKERS_RABBITMQ_VHOST', 'RABBITMQ_VHOST', '/'),
101
+ httpGatewayUrl: readWorkersFallbackString('WORKERS_RABBITMQ_HTTP_GATEWAY_URL', 'RABBITMQ_HTTP_GATEWAY_URL'),
102
+ httpGatewayToken: readWorkersFallbackString('WORKERS_RABBITMQ_HTTP_GATEWAY_TOKEN', 'RABBITMQ_HTTP_GATEWAY_TOKEN'),
103
+ httpGatewayTimeoutMs: readWorkersFallbackInt('WORKERS_RABBITMQ_HTTP_GATEWAY_TIMEOUT_MS', 'RABBITMQ_HTTP_GATEWAY_TIMEOUT_MS', 15000),
43
104
  },
44
105
  sqs: {
45
106
  driver: 'sqs',