@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,231 @@
1
+ export default `<!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
7
+ <title>Password Reset Request</title>
8
+ <style>
9
+ body {
10
+ margin: 0;
11
+ padding: 0;
12
+ background-color: #0b1220;
13
+ color: #e2e8f0;
14
+ font-family:
15
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
16
+ }
17
+
18
+ .email-container {
19
+ max-width: 600px;
20
+ margin: 40px auto;
21
+ background-color: #0f172a;
22
+ border: 1px solid #334155;
23
+ border-radius: 12px;
24
+ overflow: hidden;
25
+ }
26
+
27
+ .header {
28
+ padding: 40px 40px 30px;
29
+ text-align: center;
30
+ background: linear-gradient(180deg, rgba(239, 68, 68, 0.15), rgba(220, 38, 38, 0.08));
31
+ border-bottom: 1px solid #334155;
32
+ }
33
+
34
+ .icon {
35
+ width: 48px;
36
+ height: 48px;
37
+ margin: 0 auto 20px;
38
+ border-radius: 12px;
39
+ border: 1px solid rgba(239, 68, 68, 0.35);
40
+ background: linear-gradient(180deg, rgba(239, 68, 68, 0.2), rgba(220, 38, 38, 0.1));
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ }
45
+
46
+ .title {
47
+ margin: 0 0 8px;
48
+ font-size: 28px;
49
+ font-weight: 700;
50
+ color: #e2e8f0;
51
+ line-height: 1.2;
52
+ }
53
+
54
+ .subtitle {
55
+ margin: 0;
56
+ font-size: 16px;
57
+ color: #e2e8f0;
58
+ line-height: 1.5;
59
+ }
60
+
61
+ .content {
62
+ padding: 40px;
63
+ }
64
+
65
+ .greeting {
66
+ margin: 0 0 24px;
67
+ font-size: 15px;
68
+ color: #f1f5f9;
69
+ line-height: 1.6;
70
+ }
71
+
72
+ .message {
73
+ margin: 0 0 24px;
74
+ font-size: 15px;
75
+ color: #f1f5f9;
76
+ line-height: 1.6;
77
+ }
78
+
79
+ .button-container {
80
+ margin-bottom: 30px;
81
+ text-align: center;
82
+ }
83
+
84
+ .reset-button {
85
+ display: inline-block;
86
+ padding: 14px 32px;
87
+ background: linear-gradient(135deg, #ef4444, #dc2626);
88
+ color: #ffffff;
89
+ text-decoration: none;
90
+ border-radius: 8px;
91
+ font-weight: 600;
92
+ font-size: 15px;
93
+ border: 1px solid rgba(217, 82, 82, 0.8);
94
+ }
95
+
96
+ .security-notice {
97
+ padding: 16px;
98
+ background: rgba(251, 191, 36, 0.08);
99
+ border-left: 3px solid #fbbf24;
100
+ border-radius: 6px;
101
+ margin-bottom: 30px;
102
+ }
103
+
104
+ .security-notice p {
105
+ margin: 0;
106
+ font-size: 14px;
107
+ color: #e2e8f0;
108
+ line-height: 1.6;
109
+ }
110
+
111
+ .security-notice strong {
112
+ color: #fbbf24;
113
+ }
114
+
115
+ .expiry {
116
+ margin: 0 0 16px;
117
+ font-size: 14px;
118
+ color: #e2e8f0;
119
+ line-height: 1.6;
120
+ }
121
+
122
+ .expiry strong {
123
+ color: #e2e8f0;
124
+ }
125
+
126
+ .alternative-link {
127
+ margin: 0;
128
+ font-size: 13px;
129
+ color: #e2e8f0;
130
+ line-height: 1.6;
131
+ }
132
+
133
+ .alternative-link a {
134
+ color: #bae6fd;
135
+ text-decoration: none;
136
+ word-break: break-all;
137
+ }
138
+
139
+ .divider {
140
+ margin: 30px 0;
141
+ border-top: 1px solid #334155;
142
+ }
143
+
144
+ .support {
145
+ margin: 0;
146
+ font-size: 14px;
147
+ color: #e2e8f0;
148
+ line-height: 1.6;
149
+ }
150
+
151
+ .support a {
152
+ color: #bae6fd;
153
+ text-decoration: none;
154
+ }
155
+
156
+ .footer {
157
+ padding: 30px 40px;
158
+ background: rgba(15, 23, 42, 0.65);
159
+ border-top: 1px solid #334155;
160
+ text-align: center;
161
+ }
162
+
163
+ .footer p {
164
+ margin: 0;
165
+ font-size: 12px;
166
+ color: #64748b;
167
+ }
168
+ </style>
169
+ </head>
170
+ <body>
171
+ <div class="email-container">
172
+ <!-- Header -->
173
+ <div class="header">
174
+ <div class="icon">
175
+ <span style="font-size: 24px">🔒</span>
176
+ </div>
177
+ <h1 class="title">Password Reset Request</h1>
178
+ <p class="subtitle">We received a request to reset your password</p>
179
+ </div>
180
+
181
+ <!-- Main Content -->
182
+ <div class="content">
183
+ <p class="greeting">Hi <strong style="color: #e2e8f0">{{name}}</strong>,</p>
184
+
185
+ <p class="message">
186
+ Someone requested a password reset for your {{APP_NAME}} account (<strong
187
+ style="color: #e2e8f0"
188
+ >{{email}}</strong
189
+ >). If this was you, click the button below to reset your password:
190
+ </p>
191
+
192
+ <!-- CTA Button -->
193
+ <div class="button-container">
194
+ <a href="{{reset_url}}" class="reset-button">Reset Password</a>
195
+ </div>
196
+
197
+ <!-- Security Notice -->
198
+ <div class="security-notice">
199
+ <p>
200
+ <strong>⚠ Security Notice</strong><br />
201
+ If you didn't request this password reset, please ignore this email. Your password will
202
+ remain unchanged.
203
+ </p>
204
+ </div>
205
+
206
+ <p class="expiry">
207
+ For security reasons, this link will expire in <strong>{{expiryMinutes}} minutes</strong>.
208
+ </p>
209
+
210
+ <!-- Alternative Link -->
211
+ <p class="alternative-link">
212
+ If the button above doesn't work, copy and paste this link into your browser:<br />
213
+ <a href="{{reset_url}}">{{reset_url}}</a>
214
+ </p>
215
+
216
+ <!-- Divider -->
217
+ <div class="divider"></div>
218
+
219
+ <p class="support">
220
+ If you continue to have problems, please contact our
221
+ <a href="{{support_url}}">support team</a>.
222
+ </p>
223
+ </div>
224
+
225
+ <!-- Footer -->
226
+ <div class="footer">
227
+ <p>&copy; {{year}} {{APP_NAME}}. All rights reserved.</p>
228
+ </div>
229
+ </div>
230
+ </body>
231
+ </html>`;
@@ -0,0 +1,3 @@
1
+ declare const _default: "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n <title>Welcome to {{APP_NAME}}</title>\n <!--[if mso]>\n <style type=\"text/css\">\n table {\n border-collapse: collapse;\n }\n </style>\n <![endif]-->\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0b1220;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n }\n\n .email-container {\n max-width: 600px;\n margin: 40px auto;\n background-color: #0f172a;\n border: 1px solid #334155;\n border-radius: 12px;\n overflow: hidden;\n }\n\n .header {\n padding: 40px 40px 30px;\n text-align: center;\n background: linear-gradient(180deg, rgba(14, 165, 233, 0.18), rgba(2, 132, 199, 0.1));\n border-bottom: 1px solid #334155;\n }\n\n .icon {\n width: 48px;\n height: 48px;\n margin: 0 auto 20px;\n border-radius: 12px;\n border: 1px solid rgba(14, 165, 233, 0.35);\n background: linear-gradient(180deg, rgba(14, 165, 233, 0.25), rgba(2, 132, 199, 0.15));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .title {\n margin: 0 0 8px;\n font-size: 28px;\n font-weight: 700;\n color: #e2e8f0;\n line-height: 1.2;\n }\n\n .subtitle {\n margin: 0;\n font-size: 16px;\n color: #e2e8f0;\n line-height: 1.5;\n }\n\n .content {\n padding: 40px;\n }\n\n .getting-started {\n margin: 0 0 20px;\n font-size: 20px;\n font-weight: 700;\n color: #f1f5f9;\n }\n\n .steps {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 30px;\n }\n\n .step-item {\n padding: 16px;\n background: rgba(14, 165, 233, 0.08);\n border-left: 3px solid #0ea5e9;\n border-radius: 6px;\n }\n\n .step-item p {\n margin: 0 0 12px;\n font-size: 14px;\n color: #f1f5f9;\n line-height: 1.6;\n }\n\n .message {\n margin: 0 0 24px;\n font-size: 15px;\n color: #f1f5f9;\n line-height: 1.6;\n }\n\n .button-container {\n margin-bottom: 30px;\n text-align: center;\n }\n\n .verify-button {\n display: inline-block;\n padding: 14px 32px;\n background: linear-gradient(135deg, #1e3a8a, #1a2e4a);\n color: #ffffff;\n text-decoration: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 15px;\n border: 1px solid rgba(30, 58, 138, 0.5);\n }\n\n .expiry-notice {\n margin: 0;\n font-size: 13px;\n color: #f1f5f9;\n line-height: 1.5;\n text-align: center;\n }\n\n .expiry-notice em {\n font-style: italic;\n }\n\n .divider {\n margin: 30px 0;\n border-top: 1px solid #334155;\n }\n\n .support {\n margin: 0;\n font-size: 14px;\n color: #e2e8f0;\n line-height: 1.6;\n }\n\n .support a {\n color: #bae6fd;\n text-decoration: none;\n }\n\n .footer {\n padding: 30px 40px;\n background: rgba(15, 23, 42, 0.65);\n border-top: 1px solid #334155;\n text-align: center;\n }\n\n .footer p {\n margin: 0;\n font-size: 12px;\n color: #64748b;\n }\n </style>\n </head>\n <body>\n <div class=\"email-container\">\n <!-- Header with Logo -->\n <div class=\"header\">\n <div class=\"icon\">\n <span style=\"font-size: 24px\">\uD83C\uDF89</span>\n </div>\n <h1 class=\"title\">Welcome, {{name}}!</h1>\n <p class=\"subtitle\">\n Thanks for joining {{APP_NAME}} \u2014 we're excited to have you on board.\n </p>\n </div>\n\n <!-- Main Content -->\n <div class=\"content\">\n <h2 class=\"getting-started\">Getting Started</h2>\n\n <table class=\"steps\">\n <tr>\n <th\n style=\"\n text-align: left;\n padding: 12px;\n background: rgba(14, 165, 233, 0.12);\n border-bottom: 2px solid #0ea5e9;\n color: #ffffff;\n font-weight: 600;\n \"\n >\n Getting Started Steps\n </th>\n </tr>\n <tr>\n <td>\n <div class=\"step-item\">\n <p>\n \u2713 Verify your email<br />\n \u2713 Complete your profile<br />\n \u2713 Explore features\n </p>\n </div>\n </td>\n </tr>\n </table>\n\n <p class=\"message\">To activate your account, please verify your email address:</p>\n\n <!-- CTA Button -->\n <div class=\"button-container\">\n <a href=\"{{confirmLink}}\" class=\"verify-button\">Verify Email Address</a>\n </div>\n\n <p class=\"expiry-notice\">\n <em>This link expires in {{expiryMinutes}} minutes.</em>\n </p>\n\n <!-- Divider -->\n <div class=\"divider\"></div>\n\n <p class=\"support\">\n If you have any questions, reply to this email or contact our\n <a href=\"{{support_url}}\">support team</a>. We're here to help!\n </p>\n </div>\n\n <!-- Footer -->\n <div class=\"footer\">\n <p>&copy; {{year}} {{APP_NAME}}. All rights reserved.</p>\n </div>\n </div>\n </body>\n</html>";
2
+ export default _default;
3
+ //# sourceMappingURL=auth-welcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-welcome.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mail/templates/auth-welcome.ts"],"names":[],"mappings":";AAAA,wBA2OS"}
@@ -0,0 +1,236 @@
1
+ export default `<!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
7
+ <title>Welcome to {{APP_NAME}}</title>
8
+ <!--[if mso]>
9
+ <style type="text/css">
10
+ table {
11
+ border-collapse: collapse;
12
+ }
13
+ </style>
14
+ <![endif]-->
15
+ <style>
16
+ body {
17
+ margin: 0;
18
+ padding: 0;
19
+ background-color: #0b1220;
20
+ font-family:
21
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
22
+ }
23
+
24
+ .email-container {
25
+ max-width: 600px;
26
+ margin: 40px auto;
27
+ background-color: #0f172a;
28
+ border: 1px solid #334155;
29
+ border-radius: 12px;
30
+ overflow: hidden;
31
+ }
32
+
33
+ .header {
34
+ padding: 40px 40px 30px;
35
+ text-align: center;
36
+ background: linear-gradient(180deg, rgba(14, 165, 233, 0.18), rgba(2, 132, 199, 0.1));
37
+ border-bottom: 1px solid #334155;
38
+ }
39
+
40
+ .icon {
41
+ width: 48px;
42
+ height: 48px;
43
+ margin: 0 auto 20px;
44
+ border-radius: 12px;
45
+ border: 1px solid rgba(14, 165, 233, 0.35);
46
+ background: linear-gradient(180deg, rgba(14, 165, 233, 0.25), rgba(2, 132, 199, 0.15));
47
+ display: inline-flex;
48
+ align-items: center;
49
+ justify-content: center;
50
+ }
51
+
52
+ .title {
53
+ margin: 0 0 8px;
54
+ font-size: 28px;
55
+ font-weight: 700;
56
+ color: #e2e8f0;
57
+ line-height: 1.2;
58
+ }
59
+
60
+ .subtitle {
61
+ margin: 0;
62
+ font-size: 16px;
63
+ color: #e2e8f0;
64
+ line-height: 1.5;
65
+ }
66
+
67
+ .content {
68
+ padding: 40px;
69
+ }
70
+
71
+ .getting-started {
72
+ margin: 0 0 20px;
73
+ font-size: 20px;
74
+ font-weight: 700;
75
+ color: #f1f5f9;
76
+ }
77
+
78
+ .steps {
79
+ width: 100%;
80
+ border-collapse: collapse;
81
+ margin-bottom: 30px;
82
+ }
83
+
84
+ .step-item {
85
+ padding: 16px;
86
+ background: rgba(14, 165, 233, 0.08);
87
+ border-left: 3px solid #0ea5e9;
88
+ border-radius: 6px;
89
+ }
90
+
91
+ .step-item p {
92
+ margin: 0 0 12px;
93
+ font-size: 14px;
94
+ color: #f1f5f9;
95
+ line-height: 1.6;
96
+ }
97
+
98
+ .message {
99
+ margin: 0 0 24px;
100
+ font-size: 15px;
101
+ color: #f1f5f9;
102
+ line-height: 1.6;
103
+ }
104
+
105
+ .button-container {
106
+ margin-bottom: 30px;
107
+ text-align: center;
108
+ }
109
+
110
+ .verify-button {
111
+ display: inline-block;
112
+ padding: 14px 32px;
113
+ background: linear-gradient(135deg, #1e3a8a, #1a2e4a);
114
+ color: #ffffff;
115
+ text-decoration: none;
116
+ border-radius: 8px;
117
+ font-weight: 600;
118
+ font-size: 15px;
119
+ border: 1px solid rgba(30, 58, 138, 0.5);
120
+ }
121
+
122
+ .expiry-notice {
123
+ margin: 0;
124
+ font-size: 13px;
125
+ color: #f1f5f9;
126
+ line-height: 1.5;
127
+ text-align: center;
128
+ }
129
+
130
+ .expiry-notice em {
131
+ font-style: italic;
132
+ }
133
+
134
+ .divider {
135
+ margin: 30px 0;
136
+ border-top: 1px solid #334155;
137
+ }
138
+
139
+ .support {
140
+ margin: 0;
141
+ font-size: 14px;
142
+ color: #e2e8f0;
143
+ line-height: 1.6;
144
+ }
145
+
146
+ .support a {
147
+ color: #bae6fd;
148
+ text-decoration: none;
149
+ }
150
+
151
+ .footer {
152
+ padding: 30px 40px;
153
+ background: rgba(15, 23, 42, 0.65);
154
+ border-top: 1px solid #334155;
155
+ text-align: center;
156
+ }
157
+
158
+ .footer p {
159
+ margin: 0;
160
+ font-size: 12px;
161
+ color: #64748b;
162
+ }
163
+ </style>
164
+ </head>
165
+ <body>
166
+ <div class="email-container">
167
+ <!-- Header with Logo -->
168
+ <div class="header">
169
+ <div class="icon">
170
+ <span style="font-size: 24px">🎉</span>
171
+ </div>
172
+ <h1 class="title">Welcome, {{name}}!</h1>
173
+ <p class="subtitle">
174
+ Thanks for joining {{APP_NAME}} — we're excited to have you on board.
175
+ </p>
176
+ </div>
177
+
178
+ <!-- Main Content -->
179
+ <div class="content">
180
+ <h2 class="getting-started">Getting Started</h2>
181
+
182
+ <table class="steps">
183
+ <tr>
184
+ <th
185
+ style="
186
+ text-align: left;
187
+ padding: 12px;
188
+ background: rgba(14, 165, 233, 0.12);
189
+ border-bottom: 2px solid #0ea5e9;
190
+ color: #ffffff;
191
+ font-weight: 600;
192
+ "
193
+ >
194
+ Getting Started Steps
195
+ </th>
196
+ </tr>
197
+ <tr>
198
+ <td>
199
+ <div class="step-item">
200
+ <p>
201
+ ✓ Verify your email<br />
202
+ ✓ Complete your profile<br />
203
+ ✓ Explore features
204
+ </p>
205
+ </div>
206
+ </td>
207
+ </tr>
208
+ </table>
209
+
210
+ <p class="message">To activate your account, please verify your email address:</p>
211
+
212
+ <!-- CTA Button -->
213
+ <div class="button-container">
214
+ <a href="{{confirmLink}}" class="verify-button">Verify Email Address</a>
215
+ </div>
216
+
217
+ <p class="expiry-notice">
218
+ <em>This link expires in {{expiryMinutes}} minutes.</em>
219
+ </p>
220
+
221
+ <!-- Divider -->
222
+ <div class="divider"></div>
223
+
224
+ <p class="support">
225
+ If you have any questions, reply to this email or contact our
226
+ <a href="{{support_url}}">support team</a>. We're here to help!
227
+ </p>
228
+ </div>
229
+
230
+ <!-- Footer -->
231
+ <div class="footer">
232
+ <p>&copy; {{year}} {{APP_NAME}}. All rights reserved.</p>
233
+ </div>
234
+ </div>
235
+ </body>
236
+ </html>`;
@@ -0,0 +1,3 @@
1
+ declare const _default: "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>{{subject}}</title>\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0b1220;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n }\n\n .email-container {\n max-width: 600px;\n margin: 40px auto;\n background-color: #0f172a;\n border: 1px solid #334155;\n border-radius: 12px;\n overflow: hidden;\n }\n\n .header {\n padding: 40px 40px 30px;\n text-align: center;\n border-bottom: 1px solid #334155;\n background: radial-gradient(circle at top, rgba(51, 65, 85, 0.2), transparent 70%);\n }\n\n .headline {\n margin: 0 0 16px;\n font-size: 28px;\n font-weight: 700;\n color: #e2e8f0;\n line-height: 1.25;\n }\n\n .content {\n padding: 40px;\n color: #94a3b8;\n font-size: 16px;\n line-height: 1.6;\n }\n\n .message {\n margin: 0 0 24px;\n color: #cbd5e1;\n }\n\n .button-container {\n text-align: center;\n margin-top: 32px;\n margin-bottom: 16px;\n }\n\n .button {\n display: inline-block;\n padding: 12px 32px;\n background-color: {{primary_color}};\n color: #ffffff;\n text-decoration: none;\n border-radius: 8px;\n font-weight: 600;\n transition: opacity 0.2s;\n border: 1px solid rgba(255, 255, 255, 0.1);\n }\n\n .button:hover {\n opacity: 0.9;\n }\n\n .footer {\n padding: 30px;\n background-color: #0b1220;\n border-top: 1px solid #1e293b;\n text-align: center;\n }\n\n .copyright {\n font-size: 13px;\n color: #64748b;\n margin: 0;\n }\n </style>\n </head>\n <body>\n <div class=\"email-container\">\n <div class=\"header\">\n <h1 class=\"headline\" style=\"color: {{primary_color}}\">{{headline}}</h1>\n </div>\n\n <div class=\"content\">\n <div class=\"message\">{{message}}</div>\n\n {{#if_action_url}}\n <div class=\"button-container\">\n <a href=\"{{action_url}}\" class=\"button\">{{action_text}}</a>\n </div>\n {{/if_action_url}}\n </div>\n\n <div class=\"footer\">\n <p class=\"copyright\">\u00A9 {{year}} {{APP_NAME}}. All rights reserved.</p>\n </div>\n </div>\n </body>\n</html>";
2
+ export default _default;
3
+ //# sourceMappingURL=general.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mail/templates/general.ts"],"names":[],"mappings":";AAAA,wBA4GS"}
@@ -0,0 +1,109 @@
1
+ export default `<!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>{{subject}}</title>
7
+ <style>
8
+ body {
9
+ margin: 0;
10
+ padding: 0;
11
+ background-color: #0b1220;
12
+ font-family:
13
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
14
+ }
15
+
16
+ .email-container {
17
+ max-width: 600px;
18
+ margin: 40px auto;
19
+ background-color: #0f172a;
20
+ border: 1px solid #334155;
21
+ border-radius: 12px;
22
+ overflow: hidden;
23
+ }
24
+
25
+ .header {
26
+ padding: 40px 40px 30px;
27
+ text-align: center;
28
+ border-bottom: 1px solid #334155;
29
+ background: radial-gradient(circle at top, rgba(51, 65, 85, 0.2), transparent 70%);
30
+ }
31
+
32
+ .headline {
33
+ margin: 0 0 16px;
34
+ font-size: 28px;
35
+ font-weight: 700;
36
+ color: #e2e8f0;
37
+ line-height: 1.25;
38
+ }
39
+
40
+ .content {
41
+ padding: 40px;
42
+ color: #94a3b8;
43
+ font-size: 16px;
44
+ line-height: 1.6;
45
+ }
46
+
47
+ .message {
48
+ margin: 0 0 24px;
49
+ color: #cbd5e1;
50
+ }
51
+
52
+ .button-container {
53
+ text-align: center;
54
+ margin-top: 32px;
55
+ margin-bottom: 16px;
56
+ }
57
+
58
+ .button {
59
+ display: inline-block;
60
+ padding: 12px 32px;
61
+ background-color: {{primary_color}};
62
+ color: #ffffff;
63
+ text-decoration: none;
64
+ border-radius: 8px;
65
+ font-weight: 600;
66
+ transition: opacity 0.2s;
67
+ border: 1px solid rgba(255, 255, 255, 0.1);
68
+ }
69
+
70
+ .button:hover {
71
+ opacity: 0.9;
72
+ }
73
+
74
+ .footer {
75
+ padding: 30px;
76
+ background-color: #0b1220;
77
+ border-top: 1px solid #1e293b;
78
+ text-align: center;
79
+ }
80
+
81
+ .copyright {
82
+ font-size: 13px;
83
+ color: #64748b;
84
+ margin: 0;
85
+ }
86
+ </style>
87
+ </head>
88
+ <body>
89
+ <div class="email-container">
90
+ <div class="header">
91
+ <h1 class="headline" style="color: {{primary_color}}">{{headline}}</h1>
92
+ </div>
93
+
94
+ <div class="content">
95
+ <div class="message">{{message}}</div>
96
+
97
+ {{#if_action_url}}
98
+ <div class="button-container">
99
+ <a href="{{action_url}}" class="button">{{action_text}}</a>
100
+ </div>
101
+ {{/if_action_url}}
102
+ </div>
103
+
104
+ <div class="footer">
105
+ <p class="copyright">© {{year}} {{APP_NAME}}. All rights reserved.</p>
106
+ </div>
107
+ </div>
108
+ </body>
109
+ </html>`;
@@ -39,8 +39,8 @@ import { ErrorFactory } from '../../../exceptions/ZintrustError.js';
39
39
  * Mail templates are now pure HTML files.
40
40
  * These exports provide backward compatibility for CLI and node.ts exports.
41
41
  */
42
- import { readdirSync, readFileSync } from 'node:fs';
43
- import { join } from 'node:path';
42
+ import { readdirSync, readFileSync } from '../../../node-singletons/fs.js';
43
+ import { join } from '../../../node-singletons/path.js';
44
44
  /**
45
45
  * List all available HTML mail templates.
46
46
  * Returns template names without the .html extension.
@@ -0,0 +1,3 @@
1
+ declare const _default: "<!doctype html>\n<html lang=\"en\">\n <head>\n <meta charset=\"UTF-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n <title>Job Completed</title>\n <style>\n body {\n margin: 0;\n padding: 0;\n background-color: #0b1220;\n font-family:\n -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\n }\n\n .email-container {\n max-width: 600px;\n margin: 40px auto;\n background-color: #0f172a;\n border: 1px solid #334155;\n border-radius: 12px;\n overflow: hidden;\n }\n\n .header {\n padding: 40px 40px 30px;\n text-align: center;\n background: linear-gradient(180deg, rgba(34, 197, 94, 0.15), rgba(22, 163, 74, 0.08));\n border-bottom: 1px solid #334155;\n }\n\n .icon {\n width: 48px;\n height: 48px;\n margin: 0 auto 20px;\n border-radius: 12px;\n border: 1px solid rgba(34, 197, 94, 0.35);\n background: linear-gradient(180deg, rgba(34, 197, 94, 0.2), rgba(22, 163, 74, 0.1));\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .title {\n margin: 0 0 8px;\n font-size: 28px;\n font-weight: 700;\n color: #e2e8f0;\n line-height: 1.2;\n }\n\n .subtitle {\n margin: 0;\n font-size: 16px;\n color: #e2e8f0;\n line-height: 1.5;\n }\n\n .content {\n padding: 40px;\n }\n\n .greeting {\n margin: 0 0 24px;\n font-size: 15px;\n color: #e2e8f0;\n line-height: 1.6;\n }\n\n .job-details {\n margin-bottom: 30px;\n }\n\n .job-details table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .job-details th {\n text-align: left;\n padding: 12px;\n background: rgba(34, 197, 94, 0.12);\n border-bottom: 2px solid #22c55e;\n color: #e2e8f0;\n font-weight: 600;\n }\n\n .job-details td {\n padding: 8px 0;\n color: #e2e8f0;\n font-size: 14px;\n font-family: 'Courier New', monospace;\n }\n\n .status-badge {\n display: inline-block;\n padding: 4px 12px;\n background-color: #22c55e;\n color: #ffffff;\n border-radius: 4px;\n font-size: 12px;\n font-weight: 600;\n }\n\n .button-container {\n margin-bottom: 30px;\n text-align: center;\n }\n\n .dashboard-button {\n display: inline-block;\n padding: 14px 32px;\n background: linear-gradient(135deg, #22c55e, #16a34a);\n color: #ffffff;\n text-decoration: none;\n border-radius: 8px;\n font-weight: 600;\n font-size: 15px;\n border: 1px solid rgba(34, 197, 94, 0.5);\n }\n\n .footer {\n padding: 30px 40px;\n background: rgba(15, 23, 42, 0.65);\n border-top: 1px solid #334155;\n text-align: center;\n }\n\n .footer p {\n margin: 0;\n font-size: 12px;\n color: #64748b;\n }\n </style>\n </head>\n <body>\n <div class=\"email-container\">\n <!-- Header -->\n <div class=\"header\">\n <div class=\"icon\">\n <span style=\"font-size: 24px\">\u2705</span>\n </div>\n <h1 class=\"title\">Job Completed</h1>\n <p class=\"subtitle\">Your worker job has finished processing</p>\n </div>\n\n <!-- Main Content -->\n <div class=\"content\">\n <p class=\"greeting\">Hi <strong style=\"color: #e2e8f0\">{{name}}</strong>,</p>\n\n <div class=\"job-details\">\n <table class=\"job-details table\">\n <tr>\n <th>Job ID:</th>\n <td>{{job_id}}</td>\n </tr>\n <tr>\n <th>Worker:</th>\n <td>{{worker_name}}</td>\n </tr>\n <tr>\n <th>Queue:</th>\n <td>{{queue_name}}</td>\n </tr>\n <tr>\n <th>Completed:</th>\n <td>{{processed_at}}</td>\n </tr>\n <tr>\n <th>Status:</th>\n <td><span class=\"status-badge\">{{status}}</span></td>\n </tr>\n </table>\n </div>\n\n <!-- CTA Button -->\n <div class=\"button-container\">\n <a href=\"{{dashboard_url}}\" class=\"dashboard-button\">View Dashboard</a>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"footer\">\n <p>&copy; {{year}} {{APP_NAME}}. All rights reserved.</p>\n </div>\n </div>\n </body>\n</html>";
2
+ export default _default;
3
+ //# sourceMappingURL=job-completed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job-completed.d.ts","sourceRoot":"","sources":["../../../../../src/tools/mail/templates/job-completed.ts"],"names":[],"mappings":";AAAA,wBA2LS"}