@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
@@ -0,0 +1,278 @@
1
+ import * as Common from '../common/index.js';
2
+ import { Logger } from '../config/logger.js';
3
+ import * as fs from '../node-singletons/fs.js';
4
+ import { createRequire } from '../node-singletons/module.js';
5
+ import * as path from '../node-singletons/path.js';
6
+ import { pathToFileURL } from '../node-singletons/url.js';
7
+ const KNOWN_EXTENSIONS = ['.js', '.mjs', '.cjs', '.json', '.node'];
8
+ const isNodeRuntime = () => typeof process !== 'undefined' && Boolean(process.versions?.node);
9
+ const listJsFilesRecursive = (dir) => {
10
+ const out = [];
11
+ const stack = [dir];
12
+ while (stack.length > 0) {
13
+ const current = stack.pop();
14
+ if (current === undefined)
15
+ continue;
16
+ let entries;
17
+ try {
18
+ entries = fs.readdirSync(current, { withFileTypes: true });
19
+ }
20
+ catch {
21
+ continue;
22
+ }
23
+ for (const entry of entries) {
24
+ const full = path.join(current, entry.name);
25
+ if (entry.isDirectory()) {
26
+ stack.push(full);
27
+ continue;
28
+ }
29
+ if (entry.isFile() && full.endsWith('.js')) {
30
+ out.push(full);
31
+ }
32
+ }
33
+ }
34
+ return out;
35
+ };
36
+ const shouldConsiderSpecifier = (specifier) => {
37
+ if (!specifier.startsWith('./') && !specifier.startsWith('../'))
38
+ return false;
39
+ if (specifier.includes('?') || specifier.includes('#'))
40
+ return false;
41
+ const lower = specifier.toLowerCase();
42
+ return !KNOWN_EXTENSIONS.some((ext) => lower.endsWith(ext));
43
+ };
44
+ const resolveSpecifier = (filePath, specifier) => {
45
+ if (!shouldConsiderSpecifier(specifier))
46
+ return null;
47
+ const baseDir = path.dirname(filePath);
48
+ const resolved = path.resolve(baseDir, specifier);
49
+ try {
50
+ if (fs.statSync(resolved).isDirectory()) {
51
+ const indexJs = path.join(resolved, 'index.js');
52
+ if (fs.existsSync(indexJs))
53
+ return `${specifier.endsWith('/') ? specifier.slice(0, -1) : specifier}/index.js`;
54
+ }
55
+ }
56
+ catch {
57
+ // ignore stat errors
58
+ }
59
+ if (fs.existsSync(`${resolved}.js`))
60
+ return `${specifier}.js`;
61
+ return null;
62
+ };
63
+ const patchImportsInFile = (filePath) => {
64
+ let text;
65
+ try {
66
+ text = fs.readFileSync(filePath, 'utf8');
67
+ }
68
+ catch {
69
+ return 0;
70
+ }
71
+ let replacements = 0;
72
+ const rewrite = (match, quote, specifier) => {
73
+ const next = resolveSpecifier(filePath, specifier);
74
+ if (next === null)
75
+ return match;
76
+ replacements += 1;
77
+ return match.replace(`${quote}${specifier}${quote}`, `${quote}${next}${quote}`);
78
+ };
79
+ const updated = text
80
+ .replaceAll(/\bfrom\s+(['"])(\.[^'"]+)\1/g, rewrite)
81
+ .replaceAll(/\bimport\s+(['"])(\.[^'"]+)\1/g, rewrite)
82
+ .replaceAll(/\bimport\s*\(\s*(['"])(\.[^'"]+)\1\s*\)/g, rewrite);
83
+ if (updated !== text) {
84
+ try {
85
+ fs.writeFileSync(filePath, updated, 'utf8');
86
+ }
87
+ catch {
88
+ return 0;
89
+ }
90
+ }
91
+ return replacements;
92
+ };
93
+ const patchPackageDist = (packageName) => {
94
+ if (!isNodeRuntime())
95
+ return { replacements: 0, filesChanged: 0 };
96
+ let entryPath;
97
+ try {
98
+ const require = createRequire(import.meta.url);
99
+ entryPath = require.resolve(packageName);
100
+ }
101
+ catch {
102
+ return { replacements: 0, filesChanged: 0 };
103
+ }
104
+ const distDir = path.dirname(entryPath);
105
+ if (!fs.existsSync(distDir))
106
+ return { replacements: 0, filesChanged: 0 };
107
+ const files = listJsFilesRecursive(distDir);
108
+ let replacements = 0;
109
+ let filesChanged = 0;
110
+ for (const file of files) {
111
+ const changes = patchImportsInFile(file);
112
+ if (changes > 0) {
113
+ replacements += changes;
114
+ filesChanged += 1;
115
+ }
116
+ }
117
+ return { replacements, filesChanged };
118
+ };
119
+ const patchWorkersDist = () => patchPackageDist('@zintrust/workers');
120
+ const patchQueueMonitorDist = () => patchPackageDist('@zintrust/queue-monitor');
121
+ const resolveLocalModuleUrl = (packageDir) => {
122
+ if (!isNodeRuntime())
123
+ return null;
124
+ const root = process.cwd();
125
+ const mode = (process.env['NODE_ENV'] ?? 'development').toString().trim().toLowerCase();
126
+ const isProductionMode = mode === 'production' || mode === 'pro' || mode === 'prod';
127
+ const runFromSource = typeof Common.runFromSource === 'function' ? Common.runFromSource() : false;
128
+ const preferSource = runFromSource || !isProductionMode;
129
+ const candidates = preferSource
130
+ ? [
131
+ path.join(root, 'packages', packageDir, 'src', 'index.ts'),
132
+ path.join(root, 'dist', 'packages', packageDir, 'src', 'index.js'),
133
+ ]
134
+ : [
135
+ path.join(root, 'dist', 'packages', packageDir, 'src', 'index.js'),
136
+ path.join(root, 'packages', packageDir, 'src', 'index.ts'),
137
+ ];
138
+ for (const candidate of candidates) {
139
+ if (fs.existsSync(candidate)) {
140
+ return pathToFileURL(candidate).href;
141
+ }
142
+ }
143
+ return null;
144
+ };
145
+ const importLocalModule = async (packageDir, packageName) => {
146
+ const url = resolveLocalModuleUrl(packageDir);
147
+ if (url === null || url === '' || url === undefined)
148
+ return null;
149
+ try {
150
+ return (await import(url));
151
+ }
152
+ catch (error) {
153
+ Logger.warn(`Failed to import local ${packageName} fallback`, error);
154
+ return null;
155
+ }
156
+ };
157
+ const importLocalWorkersModule = async () => importLocalModule('workers', '@zintrust/workers');
158
+ const importLocalQueueMonitorModule = async () => importLocalModule('queue-monitor', '@zintrust/queue-monitor');
159
+ let workersModulePromise;
160
+ let patchAttempted = false;
161
+ let patchAfterFailureAttempted = false;
162
+ let queueMonitorModulePromise;
163
+ let queueMonitorPatchAfterFailureAttempted = false;
164
+ const applyInitialPatches = () => {
165
+ if (patchAttempted)
166
+ return;
167
+ patchAttempted = true;
168
+ const workersPatch = patchWorkersDist();
169
+ if (workersPatch.filesChanged > 0) {
170
+ Logger.warn('Rewrote @zintrust/workers ESM specifiers before import', workersPatch);
171
+ }
172
+ const monitorPatch = patchQueueMonitorDist();
173
+ if (monitorPatch.filesChanged > 0) {
174
+ Logger.warn('Rewrote @zintrust/queue-monitor ESM specifiers before import', monitorPatch);
175
+ }
176
+ };
177
+ const shouldRetryAfterFailure = (error) => {
178
+ if (patchAfterFailureAttempted)
179
+ return false;
180
+ const message = error instanceof Error ? error.message : String(error);
181
+ const code = error?.code;
182
+ return code === 'ERR_MODULE_NOT_FOUND' && message.includes('@zintrust/workers');
183
+ };
184
+ const handleImportFailure = async (error) => {
185
+ if (shouldRetryAfterFailure(error)) {
186
+ patchAfterFailureAttempted = true;
187
+ const { replacements, filesChanged } = patchWorkersDist();
188
+ if (filesChanged > 0) {
189
+ Logger.warn('Rewrote @zintrust/workers ESM specifiers after import failure', {
190
+ filesChanged,
191
+ replacements,
192
+ });
193
+ workersModulePromise = import('@zintrust/workers');
194
+ return workersModulePromise;
195
+ }
196
+ }
197
+ const localFallback = await importLocalWorkersModule();
198
+ if (localFallback) {
199
+ workersModulePromise = Promise.resolve(localFallback);
200
+ return localFallback;
201
+ }
202
+ throw error;
203
+ };
204
+ const tryLocalFallback = async () => {
205
+ const localFallback = await importLocalWorkersModule();
206
+ if (localFallback) {
207
+ workersModulePromise = Promise.resolve(localFallback);
208
+ return localFallback;
209
+ }
210
+ return null;
211
+ };
212
+ export const loadWorkersModule = async () => {
213
+ applyInitialPatches();
214
+ if (workersModulePromise === undefined) {
215
+ const localFallback = await tryLocalFallback();
216
+ if (localFallback) {
217
+ return localFallback;
218
+ }
219
+ }
220
+ workersModulePromise ??= import('@zintrust/workers');
221
+ try {
222
+ return await workersModulePromise;
223
+ }
224
+ catch (error) {
225
+ return handleImportFailure(error);
226
+ }
227
+ };
228
+ const shouldRetryQueueMonitorAfterFailure = (error) => {
229
+ if (queueMonitorPatchAfterFailureAttempted)
230
+ return false;
231
+ const message = error instanceof Error ? error.message : String(error);
232
+ const code = error?.code;
233
+ return code === 'ERR_MODULE_NOT_FOUND' && message.includes('@zintrust/queue-monitor');
234
+ };
235
+ const handleQueueMonitorImportFailure = async (error) => {
236
+ if (shouldRetryQueueMonitorAfterFailure(error)) {
237
+ queueMonitorPatchAfterFailureAttempted = true;
238
+ const { replacements, filesChanged } = patchQueueMonitorDist();
239
+ if (filesChanged > 0) {
240
+ Logger.warn('Rewrote @zintrust/queue-monitor ESM specifiers after import failure', {
241
+ filesChanged,
242
+ replacements,
243
+ });
244
+ queueMonitorModulePromise = import('@zintrust/queue-monitor');
245
+ return queueMonitorModulePromise;
246
+ }
247
+ }
248
+ const localFallback = await importLocalQueueMonitorModule();
249
+ if (localFallback) {
250
+ queueMonitorModulePromise = Promise.resolve(localFallback);
251
+ return localFallback;
252
+ }
253
+ throw error;
254
+ };
255
+ const tryQueueMonitorLocalFallback = async () => {
256
+ const localFallback = await importLocalQueueMonitorModule();
257
+ if (localFallback) {
258
+ queueMonitorModulePromise = Promise.resolve(localFallback);
259
+ return localFallback;
260
+ }
261
+ return null;
262
+ };
263
+ export const loadQueueMonitorModule = async () => {
264
+ applyInitialPatches();
265
+ if (queueMonitorModulePromise === undefined) {
266
+ const localFallback = await tryQueueMonitorLocalFallback();
267
+ if (localFallback) {
268
+ return localFallback;
269
+ }
270
+ }
271
+ queueMonitorModulePromise ??= import('@zintrust/queue-monitor');
272
+ try {
273
+ return await queueMonitorModulePromise;
274
+ }
275
+ catch (error) {
276
+ return handleQueueMonitorImportFailure(error);
277
+ }
278
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"CloudflareAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/adapters/CloudflareAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,aAAa,GAAG,cAAc;IAoD7C;;;OAGG;qBACc,OAAO;IAKxB;;;OAGG;qBACc,MAAM,GAAG,OAAO;EAIjC,CAAC;AA4IH;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH"}
1
+ {"version":3,"file":"CloudflareAdapter.d.ts","sourceRoot":"","sources":["../../../../src/runtime/adapters/CloudflareAdapter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,aAAa,EAGb,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC;;;;GAIG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;mBACY,aAAa,GAAG,cAAc;IAwD7C;;;OAGG;qBACc,OAAO;IAKxB;;;OAGG;qBACc,MAAM,GAAG,OAAO;EAIjC,CAAC;AAwJH;;;;GAIG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACjC,EAAE,CAAC,EAAE;QACH,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH"}
@@ -2,6 +2,8 @@
2
2
  * Runtime adapter for Cloudflare Workers
3
3
  */
4
4
  import { appConfig } from '../../config/index.js';
5
+ import { Cloudflare } from '../../config/cloudflare.js';
6
+ import { Env } from '../../config/env.js';
5
7
  import { Logger } from '../../config/logger.js';
6
8
  import { createMockHttpObjects, ErrorResponse, HttpResponse } from '../RuntimeAdapter.js';
7
9
  /**
@@ -14,6 +16,10 @@ export const CloudflareAdapter = Object.freeze({
14
16
  * Create a new Cloudflare adapter instance
15
17
  */
16
18
  create(config) {
19
+ const workersEnv = Cloudflare.getWorkersEnv();
20
+ if (workersEnv !== null) {
21
+ Env.setSource(() => workersEnv);
22
+ }
17
23
  const logger = config.logger ?? createDefaultLogger();
18
24
  return {
19
25
  platform: 'cloudflare',
@@ -70,6 +76,7 @@ async function handleCloudflareRequest(adapter, config, logger, event) {
70
76
  const platformRequest = adapter.parseRequest(request);
71
77
  // Read request body
72
78
  const body = request.method !== 'GET' && request.method !== 'HEAD' ? await request.text() : null;
79
+ platformRequest.body = body;
73
80
  // Create mock Node.js request/response objects
74
81
  const { req, res, responseData } = createMockHttpObjects(platformRequest);
75
82
  // Set request timeout
@@ -100,7 +107,11 @@ async function handleCloudflareRequest(adapter, config, logger, event) {
100
107
  return response.toResponse();
101
108
  }
102
109
  catch (error) {
103
- Logger.error('Cloudflare handler error', error);
110
+ const err = error;
111
+ Logger.error('Cloudflare handler error', err);
112
+ if (typeof err?.stack === 'string' && err.stack.trim() !== '') {
113
+ Logger.error('Cloudflare handler stack', err.stack);
114
+ }
104
115
  const errorResponse = ErrorResponse.create(500, 'Internal Server Error', appConfig.isDevelopment() ? { message: error.message } : undefined);
105
116
  return errorResponse.toResponse();
106
117
  }
@@ -121,6 +132,7 @@ function parseCloudflareRequest(event) {
121
132
  headers,
122
133
  query: Object.fromEntries(url.searchParams.entries()),
123
134
  remoteAddr: headers['cf-connecting-ip']?.toString() || '0.0.0.0',
135
+ signal: event.signal,
124
136
  };
125
137
  }
126
138
  /**
@@ -137,11 +149,16 @@ function formatCloudflareResponse(response) {
137
149
  headers.set(key, value);
138
150
  }
139
151
  }
140
- let body = '';
152
+ let body = null;
141
153
  if (response.body !== null && response.body !== undefined) {
142
154
  if (typeof response.body === 'string') {
143
155
  body = response.body;
144
156
  }
157
+ else if (typeof ReadableStream !== 'undefined' &&
158
+ (response.body instanceof ReadableStream ||
159
+ response.body?.constructor?.name === 'ReadableStream')) {
160
+ body = response.body;
161
+ }
145
162
  else {
146
163
  body = response.body.toString();
147
164
  }
@@ -141,6 +141,7 @@ function parseDenoRequest(event) {
141
141
  headers,
142
142
  query: Object.fromEntries(url.searchParams.entries()),
143
143
  remoteAddr: headers['x-forwarded-for']?.toString().split(',')[0] ?? '0.0.0.0',
144
+ signal: event.signal,
144
145
  };
145
146
  }
146
147
  /**
@@ -48,7 +48,7 @@ export function createFargateAdapter(config) {
48
48
  return {
49
49
  nodeEnv: Env.NODE_ENV,
50
50
  runtime: 'fargate',
51
- dbConnection: Env.DB_CONNECTION,
51
+ dbConnection: Env.DB_CONNECTION || 'sqlite',
52
52
  dbHost: Env.DB_HOST,
53
53
  dbPort: Env.DB_PORT,
54
54
  };
@@ -45,7 +45,7 @@ export const LambdaAdapter = Object.freeze({
45
45
  return {
46
46
  nodeEnv: Env.NODE_ENV,
47
47
  runtime: 'lambda',
48
- dbConnection: Env.DB_CONNECTION,
48
+ dbConnection: Env.get('DB_CONNECTION', 'sqlite'),
49
49
  dbHost: Env.DB_HOST,
50
50
  dbPort: Env.DB_PORT,
51
51
  };
@@ -102,7 +102,7 @@ function getNodeEnvironment() {
102
102
  return {
103
103
  nodeEnv: Env.NODE_ENV,
104
104
  runtime: 'nodejs',
105
- dbConnection: Env.DB_CONNECTION,
105
+ dbConnection: Env.get('DB_CONNECTION', 'sqlite'),
106
106
  dbHost: Env.DB_HOST,
107
107
  dbPort: Env.DB_PORT,
108
108
  };
@@ -0,0 +1,10 @@
1
+ export type RuntimeMode = 'cloudflare-workers' | 'containers' | 'node-server';
2
+ export declare const isNodeRuntime: () => boolean;
3
+ export declare const getRuntimeMode: () => RuntimeMode;
4
+ export declare const detectRuntime: () => {
5
+ isCloudflare: boolean;
6
+ isNode: boolean;
7
+ isDeno: boolean;
8
+ isBun: boolean;
9
+ };
10
+ //# sourceMappingURL=detectRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectRuntime.d.ts","sourceRoot":"","sources":["../../../src/runtime/detectRuntime.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,YAAY,GAAG,aAAa,CAAC;AAE9E,eAAO,MAAM,aAAa,QAAO,OAUhC,CAAC;AAUF,eAAO,MAAM,cAAc,QAAO,WA6BjC,CAAC;AAEF,eAAO,MAAM,aAAa,QAAO;IAC/B,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAwBhB,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { ZintrustLang } from '../lang/lang.js';
2
+ export const isNodeRuntime = () => {
3
+ // Avoid importing any `node:*` modules so this file remains Worker-safe.
4
+ // In Workers/Deno, `process` is typically undefined.
5
+ return (typeof process !== ZintrustLang.UNDEFINED &&
6
+ typeof process === ZintrustLang.OBJECT &&
7
+ process !== null &&
8
+ typeof process.versions === ZintrustLang.OBJECT);
9
+ };
10
+ const getGlobalThis = () => {
11
+ if (typeof globalThis === ZintrustLang.UNDEFINED) {
12
+ return undefined;
13
+ }
14
+ return globalThis;
15
+ };
16
+ export const getRuntimeMode = () => {
17
+ // 1. Explicit override via env var (if available)
18
+ if (typeof process !== 'undefined' && process.env?.['RUNTIME_MODE'] !== undefined) {
19
+ return process.env['RUNTIME_MODE'];
20
+ }
21
+ // 2. Detect Cloudflare Workers
22
+ // @ts-ignore - navigator is available in workers
23
+ if (typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers') {
24
+ return 'cloudflare-workers';
25
+ }
26
+ // 3. Detect Container (Docker/Kubernetes)
27
+ // Usually indicated by specific env vars or filesystem characteristics,
28
+ // but simpler to assume Node + invalidating CF check = Node/Container
29
+ if (isNodeRuntime()) {
30
+ // Check for Docker-specific env vars if possible, or default to containers/node-server
31
+ if (typeof process !== 'undefined' &&
32
+ (process.env?.['DOCKER'] !== undefined ||
33
+ process.env?.['KUBERNETES_SERVICE_HOST'] !== undefined)) {
34
+ return 'containers';
35
+ }
36
+ return 'node-server';
37
+ }
38
+ // Default fallback
39
+ return 'node-server';
40
+ };
41
+ export const detectRuntime = () => {
42
+ const globalRef = getGlobalThis();
43
+ const isNode = isNodeRuntime();
44
+ const isCloudflare = typeof globalRef !== ZintrustLang.UNDEFINED &&
45
+ globalRef !== null &&
46
+ ((globalRef.caches !== undefined &&
47
+ typeof globalRef.caches !== ZintrustLang.UNDEFINED) ||
48
+ typeof globalRef.WebSocketPair === 'function' ||
49
+ typeof globalRef.CF !== ZintrustLang.UNDEFINED);
50
+ const isDeno = typeof globalRef !== ZintrustLang.UNDEFINED &&
51
+ globalRef !== null &&
52
+ typeof globalRef.Deno !== ZintrustLang.UNDEFINED;
53
+ const isBun = typeof globalRef !== ZintrustLang.UNDEFINED &&
54
+ globalRef !== null &&
55
+ typeof globalRef.Bun !== ZintrustLang.UNDEFINED;
56
+ return { isCloudflare, isNode, isDeno, isBun };
57
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"useFileLoader.d.ts","sourceRoot":"","sources":["../../../src/runtime/useFileLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACpC,wFAAwF;IACxF,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB;;;;OAIG;IACH,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AAyIH,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,KAAG,UA+DzE,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"useFileLoader.d.ts","sourceRoot":"","sources":["../../../src/runtime/useFileLoader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,4DAA4D;IAC5D,UAAU,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACpC,wFAAwF;IACxF,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB;;;;OAIG;IACH,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAC;AA2IH,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,KAAG,UA8EzE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -71,6 +71,8 @@ const normalizeProjectRelativePath = (raw) => {
71
71
  const resolveWithinProjectRoot = (projectRoot, relativePath) => {
72
72
  const rootAbs = resolve(projectRoot);
73
73
  const candidateAbs = resolve(projectRoot, relativePath);
74
+ if (rootAbs === sep)
75
+ return candidateAbs;
74
76
  if (candidateAbs === rootAbs)
75
77
  return candidateAbs;
76
78
  if (!candidateAbs.startsWith(rootAbs + sep)) {
@@ -127,6 +129,20 @@ const importModule = async (filePath) => {
127
129
  return (await import(url));
128
130
  };
129
131
  export const useFileLoader = (...args) => {
132
+ const isWorkersRuntime = () => {
133
+ const g = globalThis;
134
+ return g.CF !== undefined || g.caches !== undefined || g.WebSocketPair !== undefined;
135
+ };
136
+ if (isWorkersRuntime()) {
137
+ return Object.freeze({
138
+ candidates: () => [],
139
+ path: () => '',
140
+ exists: () => false,
141
+ get() {
142
+ throw ErrorFactory.createConfigError('File loading is not supported in Workers runtime');
143
+ },
144
+ });
145
+ }
130
146
  const relativePath = args.length === 1
131
147
  ? normalizeProjectRelativePath(args[0])
132
148
  : normalizeProjectRelativePath(args.join('/'));
@@ -0,0 +1,36 @@
1
+ import type { ISchedule, IScheduleBackoffPolicy } from './types';
2
+ type CronOptions = {
3
+ timezone?: string;
4
+ };
5
+ type WithoutOverlappingOptions = {
6
+ provider?: string;
7
+ ttlMs?: number;
8
+ key?: string;
9
+ };
10
+ export type ScheduleBuilderApi = Readonly<{
11
+ everyMinute: () => ScheduleBuilderApi;
12
+ everyMinutes: (minutes: number) => ScheduleBuilderApi;
13
+ everyHour: () => ScheduleBuilderApi;
14
+ everyHours: (hours: number) => ScheduleBuilderApi;
15
+ intervalMs: (ms: number) => ScheduleBuilderApi;
16
+ cron: (expr: string, options?: CronOptions) => ScheduleBuilderApi;
17
+ timezone: (tz: string) => ScheduleBuilderApi;
18
+ jitterMs: (ms: number) => ScheduleBuilderApi;
19
+ backoff: (policy: IScheduleBackoffPolicy) => ScheduleBuilderApi;
20
+ leaderOnly: () => ScheduleBuilderApi;
21
+ runOnStart: () => ScheduleBuilderApi;
22
+ enabledWhen: (value: boolean) => ScheduleBuilderApi;
23
+ withoutOverlapping: (options?: WithoutOverlappingOptions) => ScheduleBuilderApi;
24
+ build: () => ISchedule;
25
+ }>;
26
+ export declare const Schedule: Readonly<{
27
+ define(name: string, handler: ISchedule["handler"]): ScheduleBuilderApi;
28
+ }>;
29
+ export declare const ScheduleBuilder: Readonly<{
30
+ create(input: {
31
+ name: string;
32
+ handler: ISchedule["handler"];
33
+ }): ScheduleBuilderApi;
34
+ }>;
35
+ export default Schedule;
36
+ //# sourceMappingURL=Schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Schedule.d.ts","sourceRoot":"","sources":["../../../src/scheduler/Schedule.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1E,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;IACxC,WAAW,EAAE,MAAM,kBAAkB,CAAC;IACtC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,kBAAkB,CAAC;IACtD,SAAS,EAAE,MAAM,kBAAkB,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAClD,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC/C,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,KAAK,kBAAkB,CAAC;IAClE,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC7C,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,kBAAkB,CAAC;IAC7C,OAAO,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,kBAAkB,CAAC;IAChE,UAAU,EAAE,MAAM,kBAAkB,CAAC;IACrC,UAAU,EAAE,MAAM,kBAAkB,CAAC;IACrC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,kBAAkB,CAAC;IACpD,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,yBAAyB,KAAK,kBAAkB,CAAC;IAChF,KAAK,EAAE,MAAM,SAAS,CAAC;CACxB,CAAC,CAAC;AA4HH,eAAO,MAAM,QAAQ;iBACN,MAAM,WAAW,SAAS,CAAC,SAAS,CAAC,GAAG,kBAAkB;EAGvE,CAAC;AAqFH,eAAO,MAAM,eAAe;kBACZ;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;KAAE,GAAG,kBAAkB;EAQlF,CAAC;AAEH,eAAe,QAAQ,CAAC"}