alepha 0.19.1 → 0.19.2

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 (530) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +6 -9
  3. package/dist/api/audits/index.d.ts +378 -346
  4. package/dist/api/audits/index.d.ts.map +1 -1
  5. package/dist/api/files/index.d.ts +216 -184
  6. package/dist/api/files/index.d.ts.map +1 -1
  7. package/dist/api/jobs/index.d.ts +528 -496
  8. package/dist/api/jobs/index.d.ts.map +1 -1
  9. package/dist/api/jobs/index.js +3 -3
  10. package/dist/api/jobs/index.js.map +1 -1
  11. package/dist/api/keys/index.d.ts +207 -207
  12. package/dist/api/keys/index.d.ts.map +1 -1
  13. package/dist/api/notifications/index.d.ts +152 -152
  14. package/dist/api/notifications/index.d.ts.map +1 -1
  15. package/dist/api/organizations/index.browser.js +48 -0
  16. package/dist/api/organizations/index.browser.js.map +1 -0
  17. package/dist/api/organizations/index.d.ts +516 -0
  18. package/dist/api/organizations/index.d.ts.map +1 -0
  19. package/dist/api/organizations/index.js +202 -0
  20. package/dist/api/organizations/index.js.map +1 -0
  21. package/dist/api/parameters/index.d.ts +391 -358
  22. package/dist/api/parameters/index.d.ts.map +1 -1
  23. package/dist/api/parameters/index.js +5 -1
  24. package/dist/api/parameters/index.js.map +1 -1
  25. package/dist/api/users/index.browser.js +7 -5
  26. package/dist/api/users/index.browser.js.map +1 -1
  27. package/dist/api/users/index.d.ts +978 -913
  28. package/dist/api/users/index.d.ts.map +1 -1
  29. package/dist/api/users/index.js +160 -112
  30. package/dist/api/users/index.js.map +1 -1
  31. package/dist/api/verifications/index.d.ts +135 -135
  32. package/dist/api/verifications/index.d.ts.map +1 -1
  33. package/dist/api/verifications/index.js +2 -2
  34. package/dist/api/verifications/index.js.map +1 -1
  35. package/dist/batch/index.d.ts +6 -6
  36. package/dist/batch/index.d.ts.map +1 -1
  37. package/dist/billing/index.d.ts +1048 -0
  38. package/dist/billing/index.d.ts.map +1 -0
  39. package/dist/billing/index.js +713 -0
  40. package/dist/billing/index.js.map +1 -0
  41. package/dist/bin/index.js +0 -2
  42. package/dist/bin/index.js.map +1 -1
  43. package/dist/bucket/index.d.ts +10 -10
  44. package/dist/bucket/index.d.ts.map +1 -1
  45. package/dist/bucket/index.js +2 -2
  46. package/dist/bucket/index.js.map +1 -1
  47. package/dist/cache/core/index.d.ts +9 -9
  48. package/dist/cache/core/index.d.ts.map +1 -1
  49. package/dist/cache/core/index.js +2 -2
  50. package/dist/cache/core/index.js.map +1 -1
  51. package/dist/cache/core/index.workerd.js +2 -2
  52. package/dist/cache/core/index.workerd.js.map +1 -1
  53. package/dist/cache/redis/index.d.ts +6 -6
  54. package/dist/cache/redis/index.d.ts.map +1 -1
  55. package/dist/cache/redis/index.js +2 -2
  56. package/dist/cache/redis/index.js.map +1 -1
  57. package/dist/cli/config/index.d.ts +12 -2
  58. package/dist/cli/config/index.d.ts.map +1 -1
  59. package/dist/cli/config/index.js +4 -0
  60. package/dist/cli/config/index.js.map +1 -1
  61. package/dist/cli/core/index.d.ts +183 -140
  62. package/dist/cli/core/index.d.ts.map +1 -1
  63. package/dist/cli/core/index.js +279 -89
  64. package/dist/cli/core/index.js.map +1 -1
  65. package/dist/cli/devtools/index.d.ts +45 -0
  66. package/dist/cli/devtools/index.d.ts.map +1 -0
  67. package/dist/cli/devtools/index.js +170 -0
  68. package/dist/cli/devtools/index.js.map +1 -0
  69. package/dist/cli/platform/index.d.ts +383 -492
  70. package/dist/cli/platform/index.d.ts.map +1 -1
  71. package/dist/cli/platform/index.js +42 -511
  72. package/dist/cli/platform/index.js.map +1 -1
  73. package/dist/cli/vendor/index.d.ts +196 -0
  74. package/dist/cli/vendor/index.d.ts.map +1 -0
  75. package/dist/cli/vendor/index.js +384 -0
  76. package/dist/cli/vendor/index.js.map +1 -0
  77. package/dist/command/index.d.ts +18 -18
  78. package/dist/command/index.d.ts.map +1 -1
  79. package/dist/command/index.js +2 -2
  80. package/dist/command/index.js.map +1 -1
  81. package/dist/core/index.browser.js +4 -4
  82. package/dist/core/index.browser.js.map +1 -1
  83. package/dist/core/index.d.ts +10 -10
  84. package/dist/core/index.d.ts.map +1 -1
  85. package/dist/core/index.js +4 -4
  86. package/dist/core/index.js.map +1 -1
  87. package/dist/core/index.native.js +4 -4
  88. package/dist/core/index.native.js.map +1 -1
  89. package/dist/core/index.workerd.js +4 -4
  90. package/dist/core/index.workerd.js.map +1 -1
  91. package/dist/crypto/index.d.ts +7 -7
  92. package/dist/crypto/index.d.ts.map +1 -1
  93. package/dist/datetime/index.d.ts +4 -4
  94. package/dist/datetime/index.d.ts.map +1 -1
  95. package/dist/email/brevo/index.d.ts +4 -4
  96. package/dist/email/brevo/index.d.ts.map +1 -1
  97. package/dist/email/core/index.d.ts +15 -11
  98. package/dist/email/core/index.d.ts.map +1 -1
  99. package/dist/email/core/index.js +12 -35
  100. package/dist/email/core/index.js.map +1 -1
  101. package/dist/email/smtp/index.d.ts +12 -12
  102. package/dist/email/smtp/index.d.ts.map +1 -1
  103. package/dist/email/smtp/index.js +7 -4
  104. package/dist/email/smtp/index.js.map +1 -1
  105. package/dist/fake/index.d.ts +4 -8
  106. package/dist/fake/index.d.ts.map +1 -1
  107. package/dist/fake/index.js +55 -889
  108. package/dist/fake/index.js.map +1 -1
  109. package/dist/lock/core/index.d.ts +13 -13
  110. package/dist/lock/core/index.d.ts.map +1 -1
  111. package/dist/lock/core/index.js +2 -2
  112. package/dist/lock/core/index.js.map +1 -1
  113. package/dist/lock/redis/index.d.ts +4 -4
  114. package/dist/lock/redis/index.d.ts.map +1 -1
  115. package/dist/logger/index.d.ts +16 -15
  116. package/dist/logger/index.d.ts.map +1 -1
  117. package/dist/logger/index.js +5 -2
  118. package/dist/logger/index.js.map +1 -1
  119. package/dist/mcp/index.d.ts +11 -11
  120. package/dist/mcp/index.d.ts.map +1 -1
  121. package/dist/mcp/index.js +2 -2
  122. package/dist/mcp/index.js.map +1 -1
  123. package/dist/orm/core/index.browser.js +11 -1
  124. package/dist/orm/core/index.browser.js.map +1 -1
  125. package/dist/orm/core/index.bun.js +53 -16
  126. package/dist/orm/core/index.bun.js.map +1 -1
  127. package/dist/orm/core/index.d.ts +95 -51
  128. package/dist/orm/core/index.d.ts.map +1 -1
  129. package/dist/orm/core/index.js +55 -14
  130. package/dist/orm/core/index.js.map +1 -1
  131. package/dist/orm/postgres/index.d.ts +18 -17
  132. package/dist/orm/postgres/index.d.ts.map +1 -1
  133. package/dist/queue/core/index.d.ts +14 -14
  134. package/dist/queue/core/index.d.ts.map +1 -1
  135. package/dist/queue/core/index.js +2 -2
  136. package/dist/queue/core/index.js.map +1 -1
  137. package/dist/queue/core/index.workerd.js +2 -2
  138. package/dist/queue/core/index.workerd.js.map +1 -1
  139. package/dist/queue/redis/index.d.ts +4 -4
  140. package/dist/queue/redis/index.d.ts.map +1 -1
  141. package/dist/queue/redis/index.js +2 -2
  142. package/dist/queue/redis/index.js.map +1 -1
  143. package/dist/react/auth/index.d.ts +9 -9
  144. package/dist/react/auth/index.d.ts.map +1 -1
  145. package/dist/react/core/index.d.ts +6 -6
  146. package/dist/react/core/index.d.ts.map +1 -1
  147. package/dist/react/core/index.js +5 -4
  148. package/dist/react/core/index.js.map +1 -1
  149. package/dist/react/form/index.d.ts +4 -4
  150. package/dist/react/form/index.d.ts.map +1 -1
  151. package/dist/react/head/index.d.ts +4 -4
  152. package/dist/react/head/index.d.ts.map +1 -1
  153. package/dist/react/i18n/index.d.ts +9 -9
  154. package/dist/react/i18n/index.d.ts.map +1 -1
  155. package/dist/react/intro/index.d.ts +2 -2
  156. package/dist/react/intro/index.d.ts.map +1 -1
  157. package/dist/react/intro/index.js +1 -1
  158. package/dist/react/intro/index.js.map +1 -1
  159. package/dist/react/router/index.browser.js +4 -5
  160. package/dist/react/router/index.browser.js.map +1 -1
  161. package/dist/react/router/index.d.ts +215 -215
  162. package/dist/react/router/index.d.ts.map +1 -1
  163. package/dist/react/router/index.js +6 -7
  164. package/dist/react/router/index.js.map +1 -1
  165. package/dist/react/testing/index.d.ts +2 -2
  166. package/dist/react/testing/index.d.ts.map +1 -1
  167. package/dist/react/testing/index.js +2 -4
  168. package/dist/react/testing/index.js.map +1 -1
  169. package/dist/redis/index.d.ts +19 -19
  170. package/dist/redis/index.d.ts.map +1 -1
  171. package/dist/retry/index.d.ts +4 -4
  172. package/dist/retry/index.d.ts.map +1 -1
  173. package/dist/scheduler/index.d.ts +13 -13
  174. package/dist/scheduler/index.d.ts.map +1 -1
  175. package/dist/scheduler/index.js +2 -2
  176. package/dist/scheduler/index.js.map +1 -1
  177. package/dist/scheduler/index.workerd.js +2 -2
  178. package/dist/scheduler/index.workerd.js.map +1 -1
  179. package/dist/security/index.browser.js +1 -1
  180. package/dist/security/index.browser.js.map +1 -1
  181. package/dist/security/index.d.ts +47 -47
  182. package/dist/security/index.d.ts.map +1 -1
  183. package/dist/security/index.js +9 -12
  184. package/dist/security/index.js.map +1 -1
  185. package/dist/server/auth/index.d.ts +170 -169
  186. package/dist/server/auth/index.d.ts.map +1 -1
  187. package/dist/server/auth/index.js +16 -2
  188. package/dist/server/auth/index.js.map +1 -1
  189. package/dist/server/cookies/index.d.ts +7 -7
  190. package/dist/server/cookies/index.d.ts.map +1 -1
  191. package/dist/server/core/index.d.ts +76 -76
  192. package/dist/server/core/index.d.ts.map +1 -1
  193. package/dist/server/core/index.js +23 -17
  194. package/dist/server/core/index.js.map +1 -1
  195. package/dist/server/cors/index.d.ts +13 -13
  196. package/dist/server/cors/index.d.ts.map +1 -1
  197. package/dist/server/cors/index.js +2 -2
  198. package/dist/server/cors/index.js.map +1 -1
  199. package/dist/server/etag/index.d.ts +9 -9
  200. package/dist/server/etag/index.d.ts.map +1 -1
  201. package/dist/server/health/index.d.ts +20 -20
  202. package/dist/server/health/index.d.ts.map +1 -1
  203. package/dist/server/links/index.browser.js +2 -2
  204. package/dist/server/links/index.browser.js.map +1 -1
  205. package/dist/server/links/index.d.ts +66 -66
  206. package/dist/server/links/index.d.ts.map +1 -1
  207. package/dist/server/links/index.js +4 -4
  208. package/dist/server/links/index.js.map +1 -1
  209. package/dist/server/metrics/index.d.ts +7 -7
  210. package/dist/server/metrics/index.d.ts.map +1 -1
  211. package/dist/server/proxy/index.d.ts +5 -5
  212. package/dist/server/proxy/index.d.ts.map +1 -1
  213. package/dist/server/rate-limit/index.d.ts +12 -12
  214. package/dist/server/rate-limit/index.d.ts.map +1 -1
  215. package/dist/server/rate-limit/index.js +2 -2
  216. package/dist/server/rate-limit/index.js.map +1 -1
  217. package/dist/server/static/index.d.ts +5 -5
  218. package/dist/server/static/index.d.ts.map +1 -1
  219. package/dist/server/swagger/index.d.ts +7 -7
  220. package/dist/server/swagger/index.d.ts.map +1 -1
  221. package/dist/server/swagger/index.js +2 -2
  222. package/dist/server/swagger/index.js.map +1 -1
  223. package/dist/sms/index.d.ts +11 -7
  224. package/dist/sms/index.d.ts.map +1 -1
  225. package/dist/sms/index.js +9 -15
  226. package/dist/sms/index.js.map +1 -1
  227. package/dist/system/index.d.ts +4 -4
  228. package/dist/system/index.d.ts.map +1 -1
  229. package/dist/topic/core/index.d.ts +6 -6
  230. package/dist/topic/core/index.d.ts.map +1 -1
  231. package/dist/topic/redis/index.d.ts +7 -7
  232. package/dist/topic/redis/index.d.ts.map +1 -1
  233. package/dist/topic/redis/index.js +2 -2
  234. package/dist/topic/redis/index.js.map +1 -1
  235. package/dist/websocket/index.d.ts +36 -36
  236. package/dist/websocket/index.d.ts.map +1 -1
  237. package/dist/websocket/index.js +2 -2
  238. package/dist/websocket/index.js.map +1 -1
  239. package/package.json +36 -14
  240. package/src/api/jobs/{services → __tests__}/JobService.spec.ts +1 -1
  241. package/src/api/jobs/providers/JobProvider.ts +3 -3
  242. package/src/api/keys/{services → __tests__}/ApiKeyService.spec.ts +1 -1
  243. package/src/api/organizations/__tests__/OrganizationService.spec.ts +193 -0
  244. package/src/api/organizations/controllers/AdminOrganizationController.ts +103 -0
  245. package/src/api/organizations/entities/organizations.ts +20 -0
  246. package/src/api/organizations/index.browser.ts +10 -0
  247. package/src/api/organizations/index.ts +31 -0
  248. package/src/api/organizations/schemas/createOrganizationSchema.ts +10 -0
  249. package/src/api/organizations/schemas/organizationQuerySchema.ts +10 -0
  250. package/src/api/organizations/schemas/organizationResourceSchema.ts +6 -0
  251. package/src/api/organizations/schemas/updateOrganizationSchema.ts +7 -0
  252. package/src/api/organizations/services/OrganizationService.ts +75 -0
  253. package/src/api/parameters/services/ParameterProvider.ts +6 -1
  254. package/src/api/users/{services → __tests__}/SessionService.spec.ts +67 -0
  255. package/src/api/users/{jobs → __tests__}/UserJobs.spec.ts +1 -1
  256. package/src/api/users/entities/users.ts +9 -3
  257. package/src/api/users/index.ts +23 -4
  258. package/src/api/users/primitives/$realm.ts +6 -4
  259. package/src/api/users/providers/RealmProvider.ts +1 -1
  260. package/src/api/users/services/RegistrationService.ts +1 -1
  261. package/src/api/users/services/SessionService.ts +92 -5
  262. package/src/api/users/services/UserService.ts +1 -1
  263. package/src/api/verifications/{jobs → __tests__}/VerificationJobs.spec.ts +4 -2
  264. package/src/api/verifications/parameters/VerificationParameters.ts +2 -2
  265. package/src/billing/__tests__/BillingService.spec.ts +136 -0
  266. package/src/billing/__tests__/PaymentMethodService.spec.ts +78 -0
  267. package/src/billing/controllers/AdminBillingController.ts +149 -0
  268. package/src/billing/controllers/BillingController.ts +108 -0
  269. package/src/billing/entities/paymentIntents.ts +34 -0
  270. package/src/billing/entities/paymentMethods.ts +24 -0
  271. package/src/billing/entities/refunds.ts +22 -0
  272. package/src/billing/errors/BillingError.ts +5 -0
  273. package/src/billing/index.ts +76 -0
  274. package/src/billing/providers/BillingProvider.ts +79 -0
  275. package/src/billing/providers/MemoryBillingProvider.ts +139 -0
  276. package/src/billing/schemas/intentSchemas.ts +60 -0
  277. package/src/billing/schemas/paymentMethodSchemas.ts +13 -0
  278. package/src/billing/schemas/refundSchemas.ts +6 -0
  279. package/src/billing/services/BillingService.ts +325 -0
  280. package/src/billing/services/PaymentMethodService.ts +82 -0
  281. package/src/bin/index.ts +0 -2
  282. package/src/bucket/providers/LocalFileStorageProvider.ts +2 -2
  283. package/src/cache/core/{primitives → __tests__}/$cache.middleware.spec.ts +1 -1
  284. package/src/cache/core/{providers → __tests__}/MemoryCacheProvider.spec.ts +1 -1
  285. package/src/cache/core/primitives/$cache.ts +2 -2
  286. package/src/cache/redis/providers/RedisCacheProvider.ts +2 -2
  287. package/src/cli/config/defineConfig.ts +20 -0
  288. package/src/cli/core/{services → __tests__}/ProjectScaffolder.spec.ts +1 -1
  289. package/src/cli/core/{commands/gen → __tests__}/changelog.spec.ts +1 -1
  290. package/src/cli/core/{commands → __tests__}/init.spec.ts +2 -8
  291. package/src/cli/core/atoms/devOptions.ts +0 -5
  292. package/src/cli/core/commands/build.ts +2 -2
  293. package/src/cli/core/commands/dev.ts +165 -30
  294. package/src/cli/core/commands/gen/changelog.ts +2 -2
  295. package/src/cli/core/commands/init.ts +2 -7
  296. package/src/cli/core/commands/verify.ts +0 -1
  297. package/src/cli/core/providers/AppEntryProvider.ts +2 -2
  298. package/src/cli/core/providers/ViteDevServerProvider.ts +54 -66
  299. package/src/cli/core/services/PackageManagerUtils.ts +8 -3
  300. package/src/cli/core/services/ProjectScaffolder.ts +18 -18
  301. package/src/cli/core/tasks/BuildClientTask.ts +8 -0
  302. package/src/cli/core/tasks/BuildServerTask.ts +17 -4
  303. package/src/cli/core/templates/alephaConfigTs.ts +0 -6
  304. package/src/cli/core/templates/webAdminDashboardTsx.ts +17 -0
  305. package/src/cli/core/templates/webAppRouterTs.ts +85 -2
  306. package/src/cli/devtools/atoms/devtoolsOptions.ts +26 -0
  307. package/src/cli/devtools/index.ts +194 -0
  308. package/src/cli/platform/{adapters → __tests__}/CloudflareAdapter.spec.ts +2 -2
  309. package/src/cli/platform/{providers → __tests__}/GitHubSecretStore.spec.ts +1 -1
  310. package/src/cli/platform/{services → __tests__}/NamingService.spec.ts +1 -1
  311. package/src/cli/platform/{providers → __tests__}/PlatformCacheProvider.spec.ts +1 -1
  312. package/src/cli/platform/{services → __tests__}/PlatformInspector.spec.ts +1 -1
  313. package/src/cli/platform/{services → __tests__}/PlatformOrchestrator.spec.ts +3 -3
  314. package/src/cli/platform/{services → __tests__}/SecretFilterService.spec.ts +1 -1
  315. package/src/cli/platform/{commands → __tests__}/SecretsCommand.spec.ts +1 -1
  316. package/src/cli/platform/{adapters → __tests__}/VercelAdapter.spec.ts +2 -2
  317. package/src/cli/platform/atoms/platformOptions.ts +2 -10
  318. package/src/cli/platform/commands/SecretsCommand.ts +2 -2
  319. package/src/cli/platform/commands/platform.ts +2 -11
  320. package/src/cli/platform/index.ts +34 -11
  321. package/src/cli/platform/services/PlatformInspector.ts +2 -2
  322. package/src/cli/platform/services/PlatformOrchestrator.ts +0 -9
  323. package/src/cli/vendor/__tests__/VendorService.spec.ts +407 -0
  324. package/src/cli/vendor/atoms/vendorOptions.ts +41 -0
  325. package/src/cli/vendor/commands/VendorCommand.ts +204 -0
  326. package/src/cli/vendor/index.ts +43 -0
  327. package/src/cli/vendor/services/VendorService.ts +338 -0
  328. package/src/command/{providers → __tests__}/CliProvider.spec.ts +1 -1
  329. package/src/command/{helpers → __tests__}/EnvUtils.spec.ts +1 -1
  330. package/src/command/providers/CliProvider.ts +2 -2
  331. package/src/core/{primitives → __tests__}/$atom.spec.ts +2 -2
  332. package/src/core/{primitives → __tests__}/$memoize.spec.ts +1 -1
  333. package/src/core/{primitives → __tests__}/$mode.spec.ts +1 -1
  334. package/src/core/{primitives → __tests__}/$pipeline.spec.ts +1 -1
  335. package/src/core/{primitives → __tests__}/$scope.spec.ts +2 -2
  336. package/src/core/{providers → __tests__}/KeylessJsonSchemaCodec.spec.ts +1 -1
  337. package/src/core/{providers → __tests__}/SchemaValidator.spec.ts +1 -1
  338. package/src/core/{helpers → __tests__}/jsonSchemaToTypeBox.spec.ts +1 -1
  339. package/src/core/index.shared.ts +1 -1
  340. package/src/core/primitives/{$use.ts → $state.ts} +4 -4
  341. package/src/crypto/{providers → __tests__}/BrowserCryptoProvider.browser.spec.ts +1 -1
  342. package/src/crypto/{providers → __tests__}/CryptoProvider.spec.ts +1 -1
  343. package/src/datetime/{primitives → __tests__}/$debounce.spec.ts +1 -1
  344. package/src/datetime/{primitives → __tests__}/$throttle.spec.ts +1 -1
  345. package/src/datetime/{primitives → __tests__}/$timeout.spec.ts +1 -1
  346. package/src/email/brevo/{providers → __tests__}/BrevoEmailProvider.spec.ts +1 -1
  347. package/src/email/core/{providers → __tests__}/LocalEmailProvider.spec.ts +39 -150
  348. package/src/email/core/providers/LocalEmailProvider.ts +13 -51
  349. package/src/email/smtp/providers/NodemailerEmailProvider.ts +2 -2
  350. package/src/lock/core/{primitives → __tests__}/$lock.middleware.spec.ts +1 -1
  351. package/src/lock/core/primitives/$lock.ts +2 -2
  352. package/src/logger/index.ts +10 -4
  353. package/src/mcp/transports/SseMcpTransport.ts +2 -2
  354. package/src/orm/__tests__/ModelBuilder-tests.ts +53 -0
  355. package/src/orm/__tests__/ModelBuilder.spec.ts +80 -0
  356. package/src/orm/__tests__/organization-tests.ts +200 -0
  357. package/src/orm/__tests__/organization.spec.ts +103 -0
  358. package/src/orm/core/{providers/drivers → __tests__}/BunSqliteProvider.bun.spec.ts +5 -2
  359. package/src/orm/core/constants/PG_SYMBOLS.ts +2 -0
  360. package/src/orm/core/index.shared.ts +1 -0
  361. package/src/orm/core/primitives/$entity.ts +31 -0
  362. package/src/orm/core/providers/DatabaseTypeProvider.ts +11 -0
  363. package/src/orm/core/providers/DrizzleKitProvider.ts +1 -1
  364. package/src/orm/core/providers/drivers/BunSqliteProvider.ts +2 -2
  365. package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +3 -3
  366. package/src/orm/core/services/ModelBuilder.ts +11 -0
  367. package/src/orm/core/services/QueryManager.ts +16 -2
  368. package/src/orm/core/services/Repository.ts +70 -10
  369. package/src/orm/postgres/{providers → __tests__}/BunPostgresProvider.bun.spec.ts +1 -1
  370. package/src/queue/core/providers/WorkerProvider.ts +2 -2
  371. package/src/queue/redis/providers/RedisQueueProvider.ts +2 -2
  372. package/src/react/core/{hooks → __tests__}/useAction.browser.spec.tsx +1 -1
  373. package/src/react/core/hooks/useAction.ts +7 -6
  374. package/src/react/head/{providers → __tests__}/BrowserHeadProvider.browser.spec.ts +1 -1
  375. package/src/react/head/{helpers → __tests__}/SeoExpander.spec.ts +1 -1
  376. package/src/react/i18n/{providers → __tests__}/I18nProvider.spec.ts +1 -1
  377. package/src/react/i18n/{hooks → __tests__}/useI18n.browser.spec.tsx +1 -1
  378. package/src/react/intro/components/GettingStartedDevtoolsSlide.tsx +1 -1
  379. package/src/react/router/{providers → __tests__}/ReactBrowserProvider.browser.spec.ts +1 -1
  380. package/src/react/router/providers/ReactBrowserProvider.ts +2 -2
  381. package/src/react/router/providers/ReactPageProvider.ts +2 -2
  382. package/src/react/router/providers/ReactServerProvider.ts +3 -3
  383. package/src/redis/{providers → __tests__}/BunRedisProvider.bun.spec.ts +4 -4
  384. package/src/retry/{primitives → __tests__}/$retry.middleware.spec.ts +1 -1
  385. package/src/router/{TemplatedPathParser.spec.ts → __tests__/TemplatedPathParser.spec.ts} +1 -1
  386. package/src/scheduler/primitives/$scheduler.ts +2 -2
  387. package/src/security/{primitives → __tests__}/$secure-browser.spec.ts +1 -1
  388. package/src/security/{primitives → __tests__}/$secure.spec.ts +1 -1
  389. package/src/security/primitives/$issuer.ts +1 -1
  390. package/src/security/providers/JwtProvider.ts +6 -10
  391. package/src/security/providers/SecurityProvider.ts +6 -11
  392. package/src/security/schemas/userAccountInfoSchema.ts +3 -3
  393. package/src/server/auth/providers/ServerAuthProvider.ts +24 -2
  394. package/src/server/cookies/{services → __tests__}/CookieParser.spec.ts +1 -1
  395. package/src/server/core/{primitives → __tests__}/$circuit.spec.ts +1 -1
  396. package/src/server/core/{providers → __tests__}/NodeHttpServerProvider.spec.ts +1 -1
  397. package/src/server/core/{providers → __tests__}/ServerBodyParserProvider.spec.ts +31 -1
  398. package/src/server/core/{providers → __tests__}/ServerCompressProvider.spec.ts +1 -1
  399. package/src/server/core/{providers → __tests__}/ServerHelmetProvider.spec.ts +4 -1
  400. package/src/server/core/{providers → __tests__}/ServerMultipartProvider.spec.ts +1 -1
  401. package/src/server/core/{services → __tests__}/ServerRequestParser.spec.ts +1 -1
  402. package/src/server/core/primitives/$action.ts +2 -2
  403. package/src/server/core/primitives/$sse.ts +2 -2
  404. package/src/server/core/providers/ServerBodyParserProvider.ts +21 -12
  405. package/src/server/core/providers/ServerCompressProvider.ts +2 -2
  406. package/src/server/core/providers/ServerHelmetProvider.ts +2 -2
  407. package/src/server/core/providers/ServerMultipartProvider.ts +2 -2
  408. package/src/server/core/providers/ServerRouterProvider.ts +1 -5
  409. package/src/server/cors/{primitives → __tests__}/$cors.spec.ts +1 -1
  410. package/src/server/cors/providers/ServerCorsProvider.ts +2 -2
  411. package/src/server/links/{services → __tests__}/BatchCollector.spec.ts +1 -1
  412. package/src/server/links/providers/LinkProvider.ts +2 -2
  413. package/src/server/links/providers/RemotePrimitiveProvider.ts +2 -2
  414. package/src/server/links/providers/ServerLinksProvider.ts +2 -2
  415. package/src/server/rate-limit/{primitives → __tests__}/$rateLimit.spec.ts +1 -1
  416. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +2 -2
  417. package/src/server/swagger/providers/ServerSwaggerProvider.ts +2 -2
  418. package/src/sms/{providers → __tests__}/LocalSmsProvider.spec.ts +35 -29
  419. package/src/sms/providers/LocalSmsProvider.ts +13 -24
  420. package/src/system/{providers → __tests__}/MemoryFileSystemProvider.spec.ts +1 -1
  421. package/src/system/{providers → __tests__}/MemoryShellProvider.spec.ts +1 -1
  422. package/src/topic/redis/providers/RedisTopicProvider.ts +2 -2
  423. package/src/websocket/{services → __tests__}/RoomManager.spec.ts +1 -1
  424. package/src/websocket/providers/NodeWebSocketServerProvider.ts +2 -2
  425. package/tsconfig.base.json +1 -0
  426. package/src/cli/platform/adapters/DockerAdapter.spec.ts +0 -378
  427. package/src/cli/platform/adapters/DockerAdapter.ts +0 -417
  428. package/src/cli/platform/services/DockerComposeGenerator.spec.ts +0 -490
  429. package/src/cli/platform/services/DockerComposeGenerator.ts +0 -353
  430. package/src/cli/platform/services/DockerSshService.spec.ts +0 -47
  431. package/src/cli/platform/services/DockerSshService.ts +0 -61
  432. /package/src/api/audits/{primitives → __tests__}/$audit.spec.ts +0 -0
  433. /package/src/api/audits/{services → __tests__}/AuditService.spec.ts +0 -0
  434. /package/src/api/files/{controllers → __tests__}/AdminFileStatsController.spec.ts +0 -0
  435. /package/src/api/files/{controllers → __tests__}/FileController.spec.ts +0 -0
  436. /package/src/api/files/{jobs → __tests__}/FileJobs.spec.ts +0 -0
  437. /package/src/api/files/{services → __tests__}/FileService.spec.ts +0 -0
  438. /package/src/api/jobs/{primitives → __tests__}/$job-middleware.spec.ts +0 -0
  439. /package/src/api/parameters/{primitives → __tests__}/$parameter.spec.ts +0 -0
  440. /package/src/api/users/{primitives → __tests__}/$realm.spec.ts +0 -0
  441. /package/src/api/users/{controllers → __tests__}/AdminIdentityController.spec.ts +0 -0
  442. /package/src/api/users/{controllers → __tests__}/AdminSessionController.spec.ts +0 -0
  443. /package/src/api/users/{controllers → __tests__}/AdminUserController.spec.ts +0 -0
  444. /package/src/api/users/{services → __tests__}/CredentialService.spec.ts +0 -0
  445. /package/src/api/users/{providers → __tests__}/RealmProvider.spec.ts +0 -0
  446. /package/src/api/users/{services → __tests__}/RegistrationService.spec.ts +0 -0
  447. /package/src/batch/{primitives → __tests__}/$batch.spec.ts +0 -0
  448. /package/src/batch/{providers → __tests__}/BatchProvider.spec.ts +0 -0
  449. /package/src/bucket/{primitives → __tests__}/$bucket.spec.ts +0 -0
  450. /package/src/bucket/{providers → __tests__}/FileStorageProvider.spec.ts +0 -0
  451. /package/src/bucket/{providers → __tests__}/LocalFileStorageProvider.spec.ts +0 -0
  452. /package/src/bucket/{providers → __tests__}/MemoryFileStorageProvider.spec.ts +0 -0
  453. /package/src/cache/core/{primitives → __tests__}/$cache.spec.ts +0 -0
  454. /package/src/cache/redis/{providers → __tests__}/RedisCacheProvider.spec.ts +0 -0
  455. /package/src/command/{primitives → __tests__}/$command.spec.ts +0 -0
  456. /package/src/command/{helpers → __tests__}/Asker.spec.ts +0 -0
  457. /package/src/command/{helpers → __tests__}/Runner.spec.ts +0 -0
  458. /package/src/core/{primitives → __tests__}/$context.spec.ts +0 -0
  459. /package/src/core/{primitives → __tests__}/$env.spec.ts +0 -0
  460. /package/src/core/{primitives → __tests__}/$hook.spec.ts +0 -0
  461. /package/src/core/{primitives → __tests__}/$inject.spec.ts +0 -0
  462. /package/src/core/{primitives → __tests__}/$module.spec.ts +0 -0
  463. /package/src/core/{providers → __tests__}/CodecManager.spec.ts +0 -0
  464. /package/src/core/{providers → __tests__}/EventManager.spec.ts +0 -0
  465. /package/src/core/{providers → __tests__}/StateManager.spec.ts +0 -0
  466. /package/src/core/{providers → __tests__}/TypeProvider.spec.ts +0 -0
  467. /package/src/datetime/{primitives → __tests__}/$interval.spec.ts +0 -0
  468. /package/src/datetime/{providers → __tests__}/DateTimeProvider.spec.ts +0 -0
  469. /package/src/email/core/{primitives → __tests__}/$email.spec.ts +0 -0
  470. /package/src/fake/{providers → __tests__}/FakeProvider.spec.ts +0 -0
  471. /package/src/lock/core/{providers → __tests__}/MemoryLockProvider.spec.ts +0 -0
  472. /package/src/lock/redis/{providers → __tests__}/RedisLockProvider.spec.ts +0 -0
  473. /package/src/logger/{primitives → __tests__}/$logger.spec.ts +0 -0
  474. /package/src/logger/{services → __tests__}/Logger.spec.ts +0 -0
  475. /package/src/mcp/{primitives → __tests__}/$prompt.spec.ts +0 -0
  476. /package/src/mcp/{primitives → __tests__}/$resource.spec.ts +0 -0
  477. /package/src/mcp/{primitives → __tests__}/$tool.spec.ts +0 -0
  478. /package/src/mcp/{providers → __tests__}/McpServerProvider.spec.ts +0 -0
  479. /package/src/mcp/{helpers → __tests__}/jsonrpc.spec.ts +0 -0
  480. /package/src/orm/core/{helpers → __tests__}/parseQueryString.spec.ts +0 -0
  481. /package/src/queue/core/{primitives → __tests__}/$consumer.spec.ts +0 -0
  482. /package/src/queue/core/{providers → __tests__}/MemoryQueueProvider.spec.ts +0 -0
  483. /package/src/queue/core/{providers → __tests__}/WorkerProvider.spec.ts +0 -0
  484. /package/src/queue/redis/{providers → __tests__}/RedisQueueProvider.spec.ts +0 -0
  485. /package/src/react/form/{hooks → __tests__}/useForm.browser.spec.tsx +0 -0
  486. /package/src/react/head/{hooks → __tests__}/useHead.spec.tsx +0 -0
  487. /package/src/react/i18n/{components → __tests__}/Localize.spec.tsx +0 -0
  488. /package/src/react/router/{primitives → __tests__}/$page.browser.spec.tsx +0 -0
  489. /package/src/react/router/{primitives → __tests__}/$page.middleware.spec.tsx +0 -0
  490. /package/src/react/router/{primitives → __tests__}/$page.spec.tsx +0 -0
  491. /package/src/react/router/{providers → __tests__}/ReactPreloadProvider.spec.ts +0 -0
  492. /package/src/react/router/{providers → __tests__}/ReactServerProvider.spec.tsx +0 -0
  493. /package/src/react/router/{providers → __tests__}/ReactServerTemplateProvider.spec.ts +0 -0
  494. /package/src/retry/{primitives → __tests__}/$retry.spec.ts +0 -0
  495. /package/src/retry/{providers → __tests__}/RetryProvider.spec.ts +0 -0
  496. /package/src/router/{providers → __tests__}/RouterProvider.spec.ts +0 -0
  497. /package/src/security/{primitives → __tests__}/$issuer.spec.ts +0 -0
  498. /package/src/security/{primitives → __tests__}/$permission.spec.ts +0 -0
  499. /package/src/security/{primitives → __tests__}/$role.spec.ts +0 -0
  500. /package/src/security/{primitives → __tests__}/$serviceAccount.spec.ts +0 -0
  501. /package/src/security/{providers → __tests__}/SecurityProvider.spec.ts +0 -0
  502. /package/src/server/cookies/{providers → __tests__}/ServerCookiesProvider.spec.ts +0 -0
  503. /package/src/server/core/{primitives → __tests__}/$action.spec.ts +0 -0
  504. /package/src/server/core/{primitives → __tests__}/$middleware.spec.ts +0 -0
  505. /package/src/server/core/{primitives → __tests__}/$route.spec.ts +0 -0
  506. /package/src/server/core/{primitives → __tests__}/$sse.spec.ts +0 -0
  507. /package/src/server/core/{providers → __tests__}/BunHttpServerProvider.bun.spec.ts +0 -0
  508. /package/src/server/core/{services → __tests__}/HttpClient.spec.ts +0 -0
  509. /package/src/server/core/{providers → __tests__}/ServerLoggerProvider.spec.ts +0 -0
  510. /package/src/server/core/{services → __tests__}/UserAgentParser.spec.ts +0 -0
  511. /package/src/server/cors/{providers → __tests__}/ServerCorsProvider.spec.ts +0 -0
  512. /package/src/server/etag/{providers → __tests__}/ServerEtagProvider.spec.ts +0 -0
  513. /package/src/server/health/{providers → __tests__}/ServerHealthProvider.spec.ts +0 -0
  514. /package/src/server/links/{primitives → __tests__}/$remote.spec.ts +0 -0
  515. /package/src/server/links/{services → __tests__}/BatchEndpoint.spec.ts +0 -0
  516. /package/src/server/links/{providers → __tests__}/LinkProvider.spec.ts +0 -0
  517. /package/src/server/links/{providers → __tests__}/ServerLinksProvider.spec.ts +0 -0
  518. /package/src/server/metrics/{providers → __tests__}/ServerMetricsProvider.spec.ts +0 -0
  519. /package/src/server/proxy/{primitives → __tests__}/$proxy.spec.ts +0 -0
  520. /package/src/server/rate-limit/{providers → __tests__}/ServerRateLimitProvider.spec.ts +0 -0
  521. /package/src/server/static/{primitives → __tests__}/$serve.spec.ts +0 -0
  522. /package/src/server/swagger/{primitives → __tests__}/$swagger.spec.ts +0 -0
  523. /package/src/sms/{primitives → __tests__}/$sms.spec.ts +0 -0
  524. /package/src/sms/{providers → __tests__}/MemorySmsProvider.spec.ts +0 -0
  525. /package/src/system/{services → __tests__}/FileDetector.spec.ts +0 -0
  526. /package/src/system/{providers → __tests__}/NodeFileSystemProvider.spec.ts +0 -0
  527. /package/src/topic/core/{primitives → __tests__}/$subscriber.spec.ts +0 -0
  528. /package/src/topic/core/{providers → __tests__}/MemoryTopicProvider.spec.ts +0 -0
  529. /package/src/topic/redis/{providers → __tests__}/RedisTopicProvider.spec.ts +0 -0
  530. /package/src/websocket/{primitives → __tests__}/$channel.spec.ts +0 -0
@@ -1,7 +1,7 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Alepha } from "alepha";
3
3
  import { ScryptOptions } from "node:crypto";
4
- import * as alepha_logger0 from "alepha/logger";
4
+ import * as _$alepha_logger0 from "alepha/logger";
5
5
 
6
6
  //#region ../../src/crypto/providers/CryptoProvider.d.ts
7
7
  declare class CryptoProvider {
@@ -29,17 +29,17 @@ declare class CryptoProvider {
29
29
  //#endregion
30
30
  //#region ../../src/crypto/providers/SecretProvider.d.ts
31
31
  declare const DEFAULT_SECRET_KEY_VALUE = "change-me-in-production";
32
- declare const alephaSecretEnvSchema: alepha.TObject<{
33
- APP_SECRET: alepha.TString;
32
+ declare const alephaSecretEnvSchema: _$alepha.TObject<{
33
+ APP_SECRET: _$alepha.TString;
34
34
  }>;
35
35
  declare class SecretProvider {
36
- protected readonly log: alepha_logger0.Logger;
36
+ protected readonly log: _$alepha_logger0.Logger;
37
37
  protected readonly alepha: Alepha;
38
38
  protected readonly env: {
39
39
  APP_SECRET: string;
40
40
  };
41
41
  get secretKey(): string;
42
- protected readonly configure: alepha.HookPrimitive<"configure">;
42
+ protected readonly configure: _$alepha.HookPrimitive<"configure">;
43
43
  }
44
44
  //#endregion
45
45
  //#region ../../src/crypto/index.d.ts
@@ -48,7 +48,7 @@ declare class SecretProvider {
48
48
  *
49
49
  * @module alepha.crypto
50
50
  */
51
- declare const AlephaCrypto: alepha.Service<alepha.Module>;
51
+ declare const AlephaCrypto: _$alepha.Service<_$alepha.Module>;
52
52
  //#endregion
53
53
  export { AlephaCrypto, CryptoProvider, DEFAULT_SECRET_KEY_VALUE, SecretProvider, alephaSecretEnvSchema };
54
54
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/crypto/providers/CryptoProvider.ts","../../src/crypto/providers/SecretProvider.ts","../../src/crypto/index.ts"],"mappings":";;;;;;cAca,cAAA;EAAA,0BACe,cAAA,EAAgB,aAAA;EAAA,0BAKhB,iBAAA;EAAA,0BACA,WAAA;EAAA,0BACA,aAAA;EAAA,0BACA,aAAA;EAAA,0BACA,cAAA;EAAA,0BACA,cAAA;EAEb,YAAA,CAAa,QAAA,WAAmB,OAAA;EAWhC,cAAA,CACX,QAAA,UACA,MAAA,WACC,OAAA;EAuCI,IAAA,CAAK,IAAA,UAAc,SAAA;EAInB,IAAA,CAAK,IAAA,UAAc,MAAA,UAAgB,SAAA;EAInC,UAAA,CACL,IAAA,UACA,SAAA,UACA,MAAA,UACA,SAAA;EAMK,OAAA,CAAQ,SAAA,UAAmB,GAAA;EAc3B,OAAA,CAAQ,UAAA,UAAoB,GAAA;EAoB5B,MAAA,CAAO,CAAA,UAAW,CAAA;EAWlB,UAAA,CAAA;EAIA,UAAA,CAAW,MAAA;EAIX,UAAA,CAAW,MAAA;EAAA,UAMR,WAAA,CACR,QAAA,UACA,IAAA,UACA,MAAA,UACA,OAAA,EAAS,aAAA,GACR,OAAA,CAAQ,MAAA;EAAA,UASD,YAAA,CAAa,GAAA,WAAc,MAAA;AAAA;;;cCxK1B,wBAAA;AAAA,cAEA,qBAAA,EAMX,MAAA,CANgC,OAAA;cAMhC,MAAA,CAAA,OAAA;AAAA;AAAA,cAEW,cAAA;EAAA,mBACQ,GAAA,EADM,cAAA,CACH,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,GAAA;;;MAER,SAAA,CAAA;EAAA,mBAIQ,SAAA,EAPM,MAAA,CAOG,aAAA;AAAA;;;;;;;ADR9B;cEFa,YAAA,EAAY,MAAA,CAAA,OAAA,CAMvB,MAAA,CANuB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/crypto/providers/CryptoProvider.ts","../../src/crypto/providers/SecretProvider.ts","../../src/crypto/index.ts"],"mappings":";;;;;;cAca,cAAA;EAAA,0BACe,cAAA,EAAgB,aAAA;EAAA,0BAKhB,iBAAA;EAAA,0BACA,WAAA;EAAA,0BACA,aAAA;EAAA,0BACA,aAAA;EAAA,0BACA,cAAA;EAAA,0BACA,cAAA;EAEb,YAAA,CAAa,QAAA,WAAmB,OAAA;EAWhC,cAAA,CACX,QAAA,UACA,MAAA,WACC,OAAA;EAuCI,IAAA,CAAK,IAAA,UAAc,SAAA;EAInB,IAAA,CAAK,IAAA,UAAc,MAAA,UAAgB,SAAA;EAInC,UAAA,CACL,IAAA,UACA,SAAA,UACA,MAAA,UACA,SAAA;EAMK,OAAA,CAAQ,SAAA,UAAmB,GAAA;EAc3B,OAAA,CAAQ,UAAA,UAAoB,GAAA;EAoB5B,MAAA,CAAO,CAAA,UAAW,CAAA;EAWlB,UAAA,CAAA;EAIA,UAAA,CAAW,MAAA;EAIX,UAAA,CAAW,MAAA;EAAA,UAMR,WAAA,CACR,QAAA,UACA,IAAA,UACA,MAAA,UACA,OAAA,EAAS,aAAA,GACR,OAAA,CAAQ,MAAA;EAAA,UASD,YAAA,CAAa,GAAA,WAAc,MAAA;AAAA;;;cCxK1B,wBAAA;AAAA,cAEA,qBAAA,EAMX,QAAA,CANgC,OAAA;cAMhC,QAAA,CAAA,OAAA;AAAA;AAAA,cAEW,cAAA;EAAA,mBACQ,GAAA,EADM,gBAAA,CACH,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,GAAA;;;MAER,SAAA,CAAA;EAAA,mBAIQ,SAAA,EAPM,QAAA,CAOG,aAAA;AAAA;;;;;;;ADR9B;cEFa,YAAA,EAAY,QAAA,CAAA,OAAA,CAMvB,QAAA,CANuB,MAAA"}
@@ -1,4 +1,4 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Alepha, KIND, Middleware, Primitive } from "alepha";
3
3
  import dayjsDuration from "dayjs/plugin/duration.js";
4
4
  import DayjsApi, { Dayjs, ManipulateType, PluginFunc } from "dayjs";
@@ -16,8 +16,8 @@ declare class DateTimeProvider {
16
16
  protected readonly timeouts: Timeout[];
17
17
  protected readonly intervals: Interval[];
18
18
  constructor();
19
- protected readonly onStart: alepha.HookPrimitive<"start">;
20
- protected readonly onStop: alepha.HookPrimitive<"stop">;
19
+ protected readonly onStart: _$alepha.HookPrimitive<"start">;
20
+ protected readonly onStop: _$alepha.HookPrimitive<"stop">;
21
21
  setLocale(locale: string): void;
22
22
  isDateTime(value: unknown): value is DateTime;
23
23
  /**
@@ -232,7 +232,7 @@ declare const $timeout: (duration: DurationLike) => Middleware;
232
232
  *
233
233
  * @module alepha.datetime
234
234
  */
235
- declare const AlephaDateTime: alepha.Service<alepha.Module>;
235
+ declare const AlephaDateTime: _$alepha.Service<_$alepha.Module>;
236
236
  //#endregion
237
237
  export { $debounce, $interval, $throttle, $timeout, AlephaDateTime, DateTime, DateTimeProvider, DebounceOptions, Duration, DurationLike, Interval, IntervalPrimitive, IntervalPrimitiveOptions, ThrottleOptions, Timeout, dayjs, isDateTime };
238
238
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/datetime/providers/DateTimeProvider.ts","../../src/datetime/primitives/$debounce.ts","../../src/datetime/primitives/$interval.ts","../../src/datetime/primitives/$throttle.ts","../../src/datetime/primitives/$timeout.ts","../../src/datetime/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/datetime/providers/DateTimeProvider.ts","../../src/datetime/primitives/$debounce.ts","../../src/datetime/primitives/$interval.ts","../../src/datetime/primitives/$throttle.ts","../../src/datetime/primitives/$timeout.ts","../../src/datetime/index.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { EmailProvider, EmailSendOptions } from "alepha/email";
3
- import * as alepha_logger0 from "alepha/logger";
3
+ import * as _$alepha_logger0 from "alepha/logger";
4
4
 
5
5
  //#region ../../src/email/brevo/providers/BrevoEmailProvider.d.ts
6
6
  /**
@@ -29,7 +29,7 @@ declare class BrevoEmailProvider implements EmailProvider {
29
29
  BREVO_API_KEY: string;
30
30
  EMAIL_FROM: string;
31
31
  };
32
- protected readonly log: alepha_logger0.Logger;
32
+ protected readonly log: _$alepha_logger0.Logger;
33
33
  send(options: EmailSendOptions): Promise<void>;
34
34
  }
35
35
  //#endregion
@@ -40,7 +40,7 @@ declare class BrevoEmailProvider implements EmailProvider {
40
40
  * @see {@link BrevoEmailProvider}
41
41
  * @module alepha.email.brevo
42
42
  */
43
- declare const AlephaEmailBrevo: alepha.Service<alepha.Module>;
43
+ declare const AlephaEmailBrevo: _$alepha.Service<_$alepha.Module>;
44
44
  //#endregion
45
45
  export { AlephaEmailBrevo, BrevoEmailProvider };
46
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/email/brevo/providers/BrevoEmailProvider.ts","../../../src/email/brevo/index.ts"],"mappings":";;;;;;;;;AAyCA;;;;;;;;;;;;;;;;;cAAa,kBAAA,YAA8B,aAAA;EAAA,mBACtB,GAAA;;;;qBACA,GAAA,EAFW,cAAA,CAER,MAAA;EAET,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;AAAA;;;;;;;AAJhD;;cC5Ba,gBAAA,EAAgB,MAAA,CAAA,OAAA,CAW3B,MAAA,CAX2B,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/email/brevo/providers/BrevoEmailProvider.ts","../../../src/email/brevo/index.ts"],"mappings":";;;;;;;;;AAyCA;;;;;;;;;;;;;;;;;cAAa,kBAAA,YAA8B,aAAA;EAAA,mBACtB,GAAA;;;;qBACA,GAAA,EAFW,gBAAA,CAER,MAAA;EAET,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;AAAA;;;;;;;AAJhD;;cC5Ba,gBAAA,EAAgB,QAAA,CAAA,OAAA,CAW3B,QAAA,CAX2B,MAAA"}
@@ -1,6 +1,6 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { AlephaError, InstantiableClass, KIND, Primitive, Static } from "alepha";
3
- import * as alepha_logger0 from "alepha/logger";
3
+ import * as _$alepha_logger0 from "alepha/logger";
4
4
  import { FileSystemProvider } from "alepha/system";
5
5
 
6
6
  //#region ../../src/email/core/providers/EmailProvider.d.ts
@@ -69,8 +69,8 @@ declare class EmailPrimitive extends Primitive<EmailPrimitiveOptions> {
69
69
  /**
70
70
  * Local email provider configuration atom
71
71
  */
72
- declare const localEmailOptions: alepha.Atom<alepha.TObject<{
73
- directory: alepha.TString;
72
+ declare const localEmailOptions: _$alepha.Atom<_$alepha.TObject<{
73
+ directory: _$alepha.TString;
74
74
  }>, "alepha.email.local.options">;
75
75
  type LocalEmailProviderOptions = Static<typeof localEmailOptions.schema>;
76
76
  declare module "alepha" {
@@ -79,20 +79,24 @@ declare module "alepha" {
79
79
  }
80
80
  }
81
81
  declare class LocalEmailProvider implements EmailProvider {
82
- protected readonly log: alepha_logger0.Logger;
82
+ protected readonly log: _$alepha_logger0.Logger;
83
83
  protected readonly fs: FileSystemProvider;
84
84
  protected readonly options: Readonly<{
85
85
  directory: string;
86
86
  }>;
87
87
  protected get directory(): string;
88
- protected onStart: alepha.HookPrimitive<"start">;
88
+ protected onStart: _$alepha.HookPrimitive<"start">;
89
89
  send(options: EmailSendOptions): Promise<void>;
90
- createEmailHtml(options: {
90
+ createEmailJson(options: {
91
91
  to: string;
92
92
  subject: string;
93
93
  body: string;
94
- }): string;
95
- escapeHtml(text: string): string;
94
+ }): {
95
+ to: string;
96
+ subject: string;
97
+ body: string;
98
+ sentAt: string;
99
+ };
96
100
  }
97
101
  //#endregion
98
102
  //#region ../../src/email/core/providers/MemoryEmailProvider.d.ts
@@ -103,7 +107,7 @@ interface EmailRecord {
103
107
  sentAt: Date;
104
108
  }
105
109
  declare class MemoryEmailProvider implements EmailProvider {
106
- protected readonly log: alepha_logger0.Logger;
110
+ protected readonly log: _$alepha_logger0.Logger;
107
111
  records: EmailRecord[];
108
112
  send(options: EmailSendOptions): Promise<void>;
109
113
  /**
@@ -143,7 +147,7 @@ declare module "alepha" {
143
147
  *
144
148
  * @module alepha.email
145
149
  */
146
- declare const AlephaEmail: alepha.Service<alepha.Module>;
150
+ declare const AlephaEmail: _$alepha.Service<_$alepha.Module>;
147
151
  //#endregion
148
152
  export { $email, AlephaEmail, EmailError, EmailPrimitive, EmailPrimitiveOptions, EmailProvider, EmailRecord, EmailSendOptions, LocalEmailProvider, LocalEmailProviderOptions, MemoryEmailProvider, localEmailOptions };
149
153
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/email/core/providers/EmailProvider.ts","../../../src/email/core/errors/EmailError.ts","../../../src/email/core/primitives/$email.ts","../../../src/email/core/providers/LocalEmailProvider.ts","../../../src/email/core/providers/MemoryEmailProvider.ts","../../../src/email/core/index.ts"],"mappings":";;;;;;;;;;;uBAKsB,aAAA;EAAA;;;;;EAAA,SAMJ,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;AAAA;AAAA,KAGvC,gBAAA;EACV,EAAA;EACA,OAAA;EACA,IAAA;AAAA;;;cCfW,UAAA,SAAmB,WAAA;cAClB,OAAA,UAAiB,KAAA,GAAQ,KAAA;AAAA;;;cCU1B,MAAA;EAAA,WAAmB,qBAAA,GAAqB,cAAA;EAAA;;UAKpC,qBAAA;EACf,IAAA;EACA,QAAA,GAAW,iBAAA,CAAkB,aAAA;AAAA;;;;;;AFN/B;;;;;;;;;;;;ACZA;cCyCa,cAAA,SAAuB,SAAA,CAAU,qBAAA;EAAA,mBACzB,QAAA,EAAQ,aAAA;EAAA,IAEhB,IAAA,CAAA;ED5CmB;;;ECmDjB,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EAAA,UAoBpC,SAAA,CAAA,GAAa,aAAA;AAAA;;;;;;cC9DZ,iBAAA,EAAiB,MAAA,CAAA,IAAA,QAAA,OAAA;aAU5B,MAAA,CAAA,OAAA;AAAA;AAAA,KAEU,yBAAA,GAA4B,MAAA,QAAc,iBAAA,CAAkB,MAAA;AAAA;EAAA,UAG5D,KAAA;IAAA,CACP,iBAAA,CAAkB,GAAA,GAAM,yBAAA;EAAA;AAAA;AAAA,cAMhB,kBAAA,YAA8B,aAAA;EAAA,mBACtB,GAAA,EADW,cAAA,CACR,MAAA;EAAA,mBACH,EAAA,EAAE,kBAAA;EAAA,mBACF,OAAA,EAAO,QAAA;;;gBAEZ,SAAA,CAAA;EAAA,UAIJ,OAAA,EANgB,MAAA,CAMT,aAAA;EAmBJ,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EAoCvC,eAAA,CAAgB,OAAA;IACrB,EAAA;IACA,OAAA;IACA,IAAA;EAAA;EA+BK,UAAA,CAAW,IAAA;AAAA;;;UChIH,WAAA;EACf,EAAA;EACA,OAAA;EACA,IAAA;EACA,MAAA,EAAQ,IAAA;AAAA;AAAA,cAGG,mBAAA,YAA+B,aAAA;EAAA,mBACvB,GAAA,EADY,cAAA,CACT,MAAA;EACf,OAAA,EAAS,WAAA;EAEH,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EJHhB;;;EAAA,IIoBnB,IAAA,CAAA,GAAQ,WAAA;AAAA;;;;YChBT,KAAA;IACR,eAAA;MACE,EAAA;MACA,QAAA;MACA,SAAA,EAAW,MAAA;MACX,QAAA,EAAU,aAAA;MACV,KAAA;IAAA;IAEF,YAAA;MACE,EAAA;MACA,QAAA;MACA,QAAA,EAAU,aAAA;IAAA;EAAA;AAAA;;;;;;;AJxBhB;;;;;;;;cI2Ca,WAAA,EAAW,MAAA,CAAA,OAAA,CAmBtB,MAAA,CAnBsB,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/email/core/providers/EmailProvider.ts","../../../src/email/core/errors/EmailError.ts","../../../src/email/core/primitives/$email.ts","../../../src/email/core/providers/LocalEmailProvider.ts","../../../src/email/core/providers/MemoryEmailProvider.ts","../../../src/email/core/index.ts"],"mappings":";;;;;;;;;;;uBAKsB,aAAA;EAAA;;;;;EAAA,SAMJ,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;AAAA;AAAA,KAGvC,gBAAA;EACV,EAAA;EACA,OAAA;EACA,IAAA;AAAA;;;cCfW,UAAA,SAAmB,WAAA;cAClB,OAAA,UAAiB,KAAA,GAAQ,KAAA;AAAA;;;cCU1B,MAAA;EAAA,WAAmB,qBAAA,GAAqB,cAAA;EAAA;;UAKpC,qBAAA;EACf,IAAA;EACA,QAAA,GAAW,iBAAA,CAAkB,aAAA;AAAA;;;;;;AFN/B;;;;;;;;;;;;ACZA;cCyCa,cAAA,SAAuB,SAAA,CAAU,qBAAA;EAAA,mBACzB,QAAA,EAAQ,aAAA;EAAA,IAEhB,IAAA,CAAA;ED5CmB;;;ECmDjB,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EAAA,UAoBpC,SAAA,CAAA,GAAa,aAAA;AAAA;;;;;;cC9DZ,iBAAA,EAAiB,QAAA,CAAA,IAAA,UAAA,OAAA;aAU5B,QAAA,CAAA,OAAA;AAAA;AAAA,KAEU,yBAAA,GAA4B,MAAA,QAAc,iBAAA,CAAkB,MAAA;AAAA;EAAA,UAG5D,KAAA;IAAA,CACP,iBAAA,CAAkB,GAAA,GAAM,yBAAA;EAAA;AAAA;AAAA,cAMhB,kBAAA,YAA8B,aAAA;EAAA,mBACtB,GAAA,EADW,gBAAA,CACR,MAAA;EAAA,mBACH,EAAA,EAAE,kBAAA;EAAA,mBACF,OAAA,EAAO,QAAA;;;gBAEZ,SAAA,CAAA;EAAA,UAIJ,OAAA,EANgB,QAAA,CAMT,aAAA;EAmBJ,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EA4BvC,eAAA,CAAgB,OAAA;IACrB,EAAA;IACA,OAAA;IACA,IAAA;EAAA;IACI,EAAA;IAAY,OAAA;IAAiB,IAAA;IAAc,MAAA;EAAA;AAAA;;;UC1FlC,WAAA;EACf,EAAA;EACA,OAAA;EACA,IAAA;EACA,MAAA,EAAQ,IAAA;AAAA;AAAA,cAGG,mBAAA,YAA+B,aAAA;EAAA,mBACvB,GAAA,EADY,gBAAA,CACT,MAAA;EACf,OAAA,EAAS,WAAA;EAEH,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EJHhB;;;EAAA,IIoBnB,IAAA,CAAA,GAAQ,WAAA;AAAA;;;;YChBT,KAAA;IACR,eAAA;MACE,EAAA;MACA,QAAA;MACA,SAAA,EAAW,MAAA;MACX,QAAA,EAAU,aAAA;MACV,KAAA;IAAA;IAEF,YAAA;MACE,EAAA;MACA,QAAA;MACA,QAAA,EAAU,aAAA;IAAA;EAAA;AAAA;;;;;;;AJxBhB;;;;;;;;cI2Ca,WAAA,EAAW,QAAA,CAAA,OAAA,CAmBtB,QAAA,CAnBsB,MAAA"}
@@ -1,4 +1,4 @@
1
- import { $atom, $hook, $inject, $module, $use, AlephaError, KIND, Primitive, createPrimitive, t } from "alepha";
1
+ import { $atom, $hook, $inject, $module, $state, AlephaError, KIND, Primitive, createPrimitive, t } from "alepha";
2
2
  import { $logger } from "alepha/logger";
3
3
  import { FileSystemProvider } from "alepha/system";
4
4
  //#region ../../src/email/core/providers/EmailProvider.ts
@@ -108,7 +108,7 @@ const localEmailOptions = $atom({
108
108
  var LocalEmailProvider = class {
109
109
  log = $logger();
110
110
  fs = $inject(FileSystemProvider);
111
- options = $use(localEmailOptions);
111
+ options = $state(localEmailOptions);
112
112
  get directory() {
113
113
  return this.options.directory;
114
114
  }
@@ -135,14 +135,14 @@ var LocalEmailProvider = class {
135
135
  try {
136
136
  const timestamp = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
137
137
  for (const recipient of Array.isArray(to) ? to : [to]) {
138
- const filename = `${recipient.replace(/[^a-zA-Z0-9@.-]/g, "_")}+${timestamp}.html`;
138
+ const filename = `${recipient.replace(/[^a-zA-Z0-9@.-]/g, "_")},${timestamp}.eml.json`;
139
139
  const filepath = this.fs.join(this.directory, filename);
140
- const htmlContent = this.createEmailHtml({
140
+ const content = this.createEmailJson({
141
141
  to: recipient,
142
142
  subject,
143
143
  body
144
144
  });
145
- await this.fs.writeFile(filepath, htmlContent);
145
+ await this.fs.writeFile(filepath, JSON.stringify(content, null, 2));
146
146
  this.log.info("Email saved to local file", {
147
147
  filepath,
148
148
  to,
@@ -159,36 +159,13 @@ var LocalEmailProvider = class {
159
159
  throw new EmailError(message, error instanceof Error ? error : void 0);
160
160
  }
161
161
  }
162
- createEmailHtml(options) {
163
- const { to, subject, body } = options;
164
- const timestamp = (/* @__PURE__ */ new Date()).toISOString();
165
- return `<!DOCTYPE html>
166
- <html lang="en">
167
- <head>
168
- <meta charset="UTF-8">
169
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
170
- <title>${this.escapeHtml(subject)}</title>
171
- <style>
172
- body { font-family: Arial, sans-serif; margin: 20px; }
173
- .email-header { background-color: #f5f5f5; padding: 15px; border-radius: 5px; margin-bottom: 20px; }
174
- .email-body { background-color: #ffffff; padding: 15px; border: 1px solid #ddd; border-radius: 5px; }
175
- .meta { font-size: 12px; color: #666; margin-bottom: 10px; }
176
- </style>
177
- </head>
178
- <body>
179
- <div class="email-header">
180
- <div class="meta">Sent: ${timestamp}</div>
181
- <div class="meta">To: ${this.escapeHtml(to)}</div>
182
- <h1>${this.escapeHtml(subject)}</h1>
183
- </div>
184
- <div class="email-body">
185
- ${body}
186
- </div>
187
- </body>
188
- </html>`;
189
- }
190
- escapeHtml(text) {
191
- return text.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
162
+ createEmailJson(options) {
163
+ return {
164
+ to: options.to,
165
+ subject: options.subject,
166
+ body: options.body,
167
+ sentAt: (/* @__PURE__ */ new Date()).toISOString()
168
+ };
192
169
  }
193
170
  };
194
171
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/email/core/providers/EmailProvider.ts","../../../src/email/core/providers/MemoryEmailProvider.ts","../../../src/email/core/primitives/$email.ts","../../../src/email/core/errors/EmailError.ts","../../../src/email/core/providers/LocalEmailProvider.ts","../../../src/email/core/index.ts"],"sourcesContent":["/**\n * Email provider interface.\n *\n * All methods are asynchronous and return promises.\n */\nexport abstract class EmailProvider {\n /**\n * Send an email.\n *\n * @return Promise that resolves when the email is sent.\n */\n public abstract send(options: EmailSendOptions): Promise<void>;\n}\n\nexport type EmailSendOptions = {\n to: string | string[];\n subject: string;\n body: string;\n};\n","import { $logger } from \"alepha/logger\";\nimport type { EmailProvider, EmailSendOptions } from \"./EmailProvider.ts\";\n\nexport interface EmailRecord {\n to: string;\n subject: string;\n body: string;\n sentAt: Date;\n}\n\nexport class MemoryEmailProvider implements EmailProvider {\n protected readonly log = $logger();\n public records: EmailRecord[] = [];\n\n public async send(options: EmailSendOptions): Promise<void> {\n const { to, subject, body } = options;\n this.log.debug(\"Sending email to memory store\", { to, subject });\n\n for (const recipient of Array.isArray(to) ? to : [to]) {\n this.records.push({\n to: recipient,\n subject,\n body,\n sentAt: new Date(),\n });\n }\n }\n\n /**\n * Get the last email sent (for testing purposes).\n */\n public get last(): EmailRecord | undefined {\n return this.records[this.records.length - 1];\n }\n}\n","import {\n AlephaError,\n createPrimitive,\n type InstantiableClass,\n KIND,\n Primitive,\n} from \"alepha\";\nimport type { EmailSendOptions } from \"../providers/EmailProvider.ts\";\nimport { EmailProvider } from \"../providers/EmailProvider.ts\";\nimport { MemoryEmailProvider } from \"../providers/MemoryEmailProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport const $email = (options: EmailPrimitiveOptions = {}) =>\n createPrimitive(EmailPrimitive, options);\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface EmailPrimitiveOptions {\n name?: string;\n provider?: InstantiableClass<EmailProvider> | \"memory\";\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Email primitive for sending emails through various providers.\n *\n * Usage:\n * ```typescript\n * class MyService {\n * private readonly welcomeEmail = $email({ name: \"welcome\" });\n *\n * async sendWelcome(userEmail: string, userName: string) {\n * await this.welcomeEmail.send({\n * to: userEmail,\n * subject: \"Welcome!\",\n * body: `<p>Hello ${userName}!</p>`\n * });\n * }\n * }\n * ```\n */\nexport class EmailPrimitive extends Primitive<EmailPrimitiveOptions> {\n protected readonly provider = this.$provider();\n\n public get name() {\n return this.options.name ?? `${this.config.propertyKey}`;\n }\n\n /**\n * Send an email using the configured provider.\n */\n public async send(options: EmailSendOptions): Promise<void> {\n await this.alepha.events.emit(\"email:sending\", {\n to: options.to,\n template: this.name,\n variables: {},\n provider: this.provider,\n abort: () => {\n throw new AlephaError(\"Email sending aborted by hook\");\n },\n });\n\n await this.provider.send(options);\n\n await this.alepha.events.emit(\"email:sent\", {\n to: options.to,\n template: this.name,\n provider: this.provider,\n });\n }\n\n protected $provider(): EmailProvider {\n if (!this.options.provider) {\n return this.alepha.inject(EmailProvider);\n }\n if (this.options.provider === \"memory\") {\n return this.alepha.inject(MemoryEmailProvider);\n }\n return this.alepha.inject(this.options.provider);\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n$email[KIND] = EmailPrimitive;\n","import { AlephaError } from \"alepha\";\n\nexport class EmailError extends AlephaError {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = \"EmailError\";\n this.cause = cause;\n }\n}\n","import { $atom, $hook, $inject, $use, type Static, t } from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport { FileSystemProvider } from \"alepha/system\";\nimport { EmailError } from \"../errors/EmailError.ts\";\nimport type { EmailProvider, EmailSendOptions } from \"./EmailProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Local email provider configuration atom\n */\nexport const localEmailOptions = $atom({\n name: \"alepha.email.local.options\",\n schema: t.object({\n directory: t.string({\n description: \"Directory path where email files will be stored\",\n }),\n }),\n default: {\n directory: \"node_modules/.alepha/emails\",\n },\n});\n\nexport type LocalEmailProviderOptions = Static<typeof localEmailOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [localEmailOptions.key]: LocalEmailProviderOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class LocalEmailProvider implements EmailProvider {\n protected readonly log = $logger();\n protected readonly fs = $inject(FileSystemProvider);\n protected readonly options = $use(localEmailOptions);\n\n protected get directory(): string {\n return this.options.directory;\n }\n\n protected onStart = $hook({\n on: \"start\",\n handler: async () => {\n try {\n await this.fs.mkdir(this.directory, { recursive: true });\n this.log.info(\"Email directory OK\", {\n at: this.directory,\n });\n } catch (error) {\n const message = `Failed to create email directory: ${error instanceof Error ? error.message : String(error)}`;\n this.log.error(message, { at: this.directory });\n throw new EmailError(\n message,\n error instanceof Error ? error : undefined,\n );\n }\n },\n });\n\n public async send(options: EmailSendOptions): Promise<void> {\n const { to, subject, body } = options;\n\n this.log.debug(\"Sending email to local file\", {\n to,\n subject,\n directory: this.directory,\n });\n\n try {\n // Create filename: emailcontact+date\n const timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n for (const recipient of Array.isArray(to) ? to : [to]) {\n const sanitizedEmail = recipient.replace(/[^a-zA-Z0-9@.-]/g, \"_\");\n const filename = `${sanitizedEmail}+${timestamp}.html`;\n const filepath = this.fs.join(this.directory, filename);\n\n // Create HTML content\n const htmlContent = this.createEmailHtml({\n to: recipient,\n subject,\n body,\n });\n\n // Write to file\n await this.fs.writeFile(filepath, htmlContent);\n\n this.log.info(\"Email saved to local file\", { filepath, to, subject });\n }\n } catch (error) {\n const message = `Failed to save email to local file: ${error instanceof Error ? error.message : String(error)}`;\n this.log.error(message, { to, subject, directory: this.directory });\n throw new EmailError(message, error instanceof Error ? error : undefined);\n }\n }\n\n public createEmailHtml(options: {\n to: string;\n subject: string;\n body: string;\n }): string {\n const { to, subject, body } = options;\n const timestamp = new Date().toISOString();\n\n return `<!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>${this.escapeHtml(subject)}</title>\n <style>\n body { font-family: Arial, sans-serif; margin: 20px; }\n .email-header { background-color: #f5f5f5; padding: 15px; border-radius: 5px; margin-bottom: 20px; }\n .email-body { background-color: #ffffff; padding: 15px; border: 1px solid #ddd; border-radius: 5px; }\n .meta { font-size: 12px; color: #666; margin-bottom: 10px; }\n </style>\n</head>\n<body>\n <div class=\"email-header\">\n <div class=\"meta\">Sent: ${timestamp}</div>\n <div class=\"meta\">To: ${this.escapeHtml(to)}</div>\n <h1>${this.escapeHtml(subject)}</h1>\n </div>\n <div class=\"email-body\">\n ${body}\n </div>\n</body>\n</html>`;\n }\n\n public escapeHtml(text: string): string {\n return text\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#39;\");\n }\n}\n","import { $module } from \"alepha\";\nimport { $email } from \"./primitives/$email.ts\";\nimport { EmailProvider } from \"./providers/EmailProvider.ts\";\nimport { LocalEmailProvider } from \"./providers/LocalEmailProvider.ts\";\nimport { MemoryEmailProvider } from \"./providers/MemoryEmailProvider.ts\";\n\n// Exports\nexport * from \"./errors/EmailError.ts\";\nexport * from \"./primitives/$email.ts\";\nexport * from \"./providers/EmailProvider.ts\";\nexport * from \"./providers/LocalEmailProvider.ts\";\nexport * from \"./providers/MemoryEmailProvider.ts\";\n\n// Hook declarations\ndeclare module \"alepha\" {\n interface Hooks {\n \"email:sending\": {\n to: string | string[];\n template: string;\n variables: Record<string, unknown>;\n provider: EmailProvider;\n abort(): void;\n };\n \"email:sent\": {\n to: string | string[];\n template: string;\n provider: EmailProvider;\n };\n }\n}\n\n/**\n * Email delivery with template support.\n *\n * **Features:**\n * - Send emails with templates\n * - Multiple recipients\n * - Local file provider for development\n * - Memory provider for testing\n *\n * For SMTP support, use `AlephaEmailSmtp` from `alepha/email/smtp`.\n * For Brevo support, use `AlephaEmailBrevo` from `alepha/email/brevo`.\n *\n * @module alepha.email\n */\nexport const AlephaEmail = $module({\n name: \"alepha.email\",\n primitives: [$email],\n services: [EmailProvider, MemoryEmailProvider, LocalEmailProvider],\n register: (alepha) => {\n if (alepha.isTest()) {\n alepha.with({\n optional: true,\n provide: EmailProvider,\n use: MemoryEmailProvider,\n });\n } else {\n alepha.with({\n optional: true,\n provide: EmailProvider,\n use: LocalEmailProvider,\n });\n }\n },\n});\n"],"mappings":";;;;;;;;;AAKA,IAAsB,gBAAtB,MAAoC;;;ACKpC,IAAa,sBAAb,MAA0D;CACxD,MAAyB,SAAS;CAClC,UAAgC,EAAE;CAElC,MAAa,KAAK,SAA0C;EAC1D,MAAM,EAAE,IAAI,SAAS,SAAS;AAC9B,OAAK,IAAI,MAAM,iCAAiC;GAAE;GAAI;GAAS,CAAC;AAEhE,OAAK,MAAM,aAAa,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,CACnD,MAAK,QAAQ,KAAK;GAChB,IAAI;GACJ;GACA;GACA,wBAAQ,IAAI,MAAM;GACnB,CAAC;;;;;CAON,IAAW,OAAgC;AACzC,SAAO,KAAK,QAAQ,KAAK,QAAQ,SAAS;;;;;ACnB9C,MAAa,UAAU,UAAiC,EAAE,KACxD,gBAAgB,gBAAgB,QAAQ;;;;;;;;;;;;;;;;;;;AA6B1C,IAAa,iBAAb,cAAoC,UAAiC;CACnE,WAA8B,KAAK,WAAW;CAE9C,IAAW,OAAO;AAChB,SAAO,KAAK,QAAQ,QAAQ,GAAG,KAAK,OAAO;;;;;CAM7C,MAAa,KAAK,SAA0C;AAC1D,QAAM,KAAK,OAAO,OAAO,KAAK,iBAAiB;GAC7C,IAAI,QAAQ;GACZ,UAAU,KAAK;GACf,WAAW,EAAE;GACb,UAAU,KAAK;GACf,aAAa;AACX,UAAM,IAAI,YAAY,gCAAgC;;GAEzD,CAAC;AAEF,QAAM,KAAK,SAAS,KAAK,QAAQ;AAEjC,QAAM,KAAK,OAAO,OAAO,KAAK,cAAc;GAC1C,IAAI,QAAQ;GACZ,UAAU,KAAK;GACf,UAAU,KAAK;GAChB,CAAC;;CAGJ,YAAqC;AACnC,MAAI,CAAC,KAAK,QAAQ,SAChB,QAAO,KAAK,OAAO,OAAO,cAAc;AAE1C,MAAI,KAAK,QAAQ,aAAa,SAC5B,QAAO,KAAK,OAAO,OAAO,oBAAoB;AAEhD,SAAO,KAAK,OAAO,OAAO,KAAK,QAAQ,SAAS;;;AAMpD,OAAO,QAAQ;;;ACpFf,IAAa,aAAb,cAAgC,YAAY;CAC1C,YAAY,SAAiB,OAAe;AAC1C,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,QAAQ;;;;;;;;ACKjB,MAAa,oBAAoB,MAAM;CACrC,MAAM;CACN,QAAQ,EAAE,OAAO,EACf,WAAW,EAAE,OAAO,EAClB,aAAa,mDACd,CAAC,EACH,CAAC;CACF,SAAS,EACP,WAAW,+BACZ;CACF,CAAC;AAYF,IAAa,qBAAb,MAAyD;CACvD,MAAyB,SAAS;CAClC,KAAwB,QAAQ,mBAAmB;CACnD,UAA6B,KAAK,kBAAkB;CAEpD,IAAc,YAAoB;AAChC,SAAO,KAAK,QAAQ;;CAGtB,UAAoB,MAAM;EACxB,IAAI;EACJ,SAAS,YAAY;AACnB,OAAI;AACF,UAAM,KAAK,GAAG,MAAM,KAAK,WAAW,EAAE,WAAW,MAAM,CAAC;AACxD,SAAK,IAAI,KAAK,sBAAsB,EAClC,IAAI,KAAK,WACV,CAAC;YACK,OAAO;IACd,MAAM,UAAU,qCAAqC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AAC3G,SAAK,IAAI,MAAM,SAAS,EAAE,IAAI,KAAK,WAAW,CAAC;AAC/C,UAAM,IAAI,WACR,SACA,iBAAiB,QAAQ,QAAQ,KAAA,EAClC;;;EAGN,CAAC;CAEF,MAAa,KAAK,SAA0C;EAC1D,MAAM,EAAE,IAAI,SAAS,SAAS;AAE9B,OAAK,IAAI,MAAM,+BAA+B;GAC5C;GACA;GACA,WAAW,KAAK;GACjB,CAAC;AAEF,MAAI;GAEF,MAAM,6BAAY,IAAI,MAAM,EAAC,aAAa,CAAC,QAAQ,SAAS,IAAI;AAChE,QAAK,MAAM,aAAa,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE;IAErD,MAAM,WAAW,GADM,UAAU,QAAQ,oBAAoB,IAAI,CAC9B,GAAG,UAAU;IAChD,MAAM,WAAW,KAAK,GAAG,KAAK,KAAK,WAAW,SAAS;IAGvD,MAAM,cAAc,KAAK,gBAAgB;KACvC,IAAI;KACJ;KACA;KACD,CAAC;AAGF,UAAM,KAAK,GAAG,UAAU,UAAU,YAAY;AAE9C,SAAK,IAAI,KAAK,6BAA6B;KAAE;KAAU;KAAI;KAAS,CAAC;;WAEhE,OAAO;GACd,MAAM,UAAU,uCAAuC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AAC7G,QAAK,IAAI,MAAM,SAAS;IAAE;IAAI;IAAS,WAAW,KAAK;IAAW,CAAC;AACnE,SAAM,IAAI,WAAW,SAAS,iBAAiB,QAAQ,QAAQ,KAAA,EAAU;;;CAI7E,gBAAuB,SAIZ;EACT,MAAM,EAAE,IAAI,SAAS,SAAS;EAC9B,MAAM,6BAAY,IAAI,MAAM,EAAC,aAAa;AAE1C,SAAO;;;;;aAKE,KAAK,WAAW,QAAQ,CAAC;;;;;;;;;;kCAUJ,UAAU;gCACZ,KAAK,WAAW,GAAG,CAAC;cACtC,KAAK,WAAW,QAAQ,CAAC;;;UAG7B,KAAK;;;;;CAMb,WAAkB,MAAsB;AACtC,SAAO,KACJ,QAAQ,MAAM,QAAQ,CACtB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,OAAO,CACrB,QAAQ,MAAM,SAAS,CACvB,QAAQ,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;AC5F7B,MAAa,cAAc,QAAQ;CACjC,MAAM;CACN,YAAY,CAAC,OAAO;CACpB,UAAU;EAAC;EAAe;EAAqB;EAAmB;CAClE,WAAW,WAAW;AACpB,MAAI,OAAO,QAAQ,CACjB,QAAO,KAAK;GACV,UAAU;GACV,SAAS;GACT,KAAK;GACN,CAAC;MAEF,QAAO,KAAK;GACV,UAAU;GACV,SAAS;GACT,KAAK;GACN,CAAC;;CAGP,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/email/core/providers/EmailProvider.ts","../../../src/email/core/providers/MemoryEmailProvider.ts","../../../src/email/core/primitives/$email.ts","../../../src/email/core/errors/EmailError.ts","../../../src/email/core/providers/LocalEmailProvider.ts","../../../src/email/core/index.ts"],"sourcesContent":["/**\n * Email provider interface.\n *\n * All methods are asynchronous and return promises.\n */\nexport abstract class EmailProvider {\n /**\n * Send an email.\n *\n * @return Promise that resolves when the email is sent.\n */\n public abstract send(options: EmailSendOptions): Promise<void>;\n}\n\nexport type EmailSendOptions = {\n to: string | string[];\n subject: string;\n body: string;\n};\n","import { $logger } from \"alepha/logger\";\nimport type { EmailProvider, EmailSendOptions } from \"./EmailProvider.ts\";\n\nexport interface EmailRecord {\n to: string;\n subject: string;\n body: string;\n sentAt: Date;\n}\n\nexport class MemoryEmailProvider implements EmailProvider {\n protected readonly log = $logger();\n public records: EmailRecord[] = [];\n\n public async send(options: EmailSendOptions): Promise<void> {\n const { to, subject, body } = options;\n this.log.debug(\"Sending email to memory store\", { to, subject });\n\n for (const recipient of Array.isArray(to) ? to : [to]) {\n this.records.push({\n to: recipient,\n subject,\n body,\n sentAt: new Date(),\n });\n }\n }\n\n /**\n * Get the last email sent (for testing purposes).\n */\n public get last(): EmailRecord | undefined {\n return this.records[this.records.length - 1];\n }\n}\n","import {\n AlephaError,\n createPrimitive,\n type InstantiableClass,\n KIND,\n Primitive,\n} from \"alepha\";\nimport type { EmailSendOptions } from \"../providers/EmailProvider.ts\";\nimport { EmailProvider } from \"../providers/EmailProvider.ts\";\nimport { MemoryEmailProvider } from \"../providers/MemoryEmailProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport const $email = (options: EmailPrimitiveOptions = {}) =>\n createPrimitive(EmailPrimitive, options);\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport interface EmailPrimitiveOptions {\n name?: string;\n provider?: InstantiableClass<EmailProvider> | \"memory\";\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Email primitive for sending emails through various providers.\n *\n * Usage:\n * ```typescript\n * class MyService {\n * private readonly welcomeEmail = $email({ name: \"welcome\" });\n *\n * async sendWelcome(userEmail: string, userName: string) {\n * await this.welcomeEmail.send({\n * to: userEmail,\n * subject: \"Welcome!\",\n * body: `<p>Hello ${userName}!</p>`\n * });\n * }\n * }\n * ```\n */\nexport class EmailPrimitive extends Primitive<EmailPrimitiveOptions> {\n protected readonly provider = this.$provider();\n\n public get name() {\n return this.options.name ?? `${this.config.propertyKey}`;\n }\n\n /**\n * Send an email using the configured provider.\n */\n public async send(options: EmailSendOptions): Promise<void> {\n await this.alepha.events.emit(\"email:sending\", {\n to: options.to,\n template: this.name,\n variables: {},\n provider: this.provider,\n abort: () => {\n throw new AlephaError(\"Email sending aborted by hook\");\n },\n });\n\n await this.provider.send(options);\n\n await this.alepha.events.emit(\"email:sent\", {\n to: options.to,\n template: this.name,\n provider: this.provider,\n });\n }\n\n protected $provider(): EmailProvider {\n if (!this.options.provider) {\n return this.alepha.inject(EmailProvider);\n }\n if (this.options.provider === \"memory\") {\n return this.alepha.inject(MemoryEmailProvider);\n }\n return this.alepha.inject(this.options.provider);\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n$email[KIND] = EmailPrimitive;\n","import { AlephaError } from \"alepha\";\n\nexport class EmailError extends AlephaError {\n constructor(message: string, cause?: Error) {\n super(message);\n this.name = \"EmailError\";\n this.cause = cause;\n }\n}\n","import { $atom, $hook, $inject, $state, type Static, t } from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport { FileSystemProvider } from \"alepha/system\";\nimport { EmailError } from \"../errors/EmailError.ts\";\nimport type { EmailProvider, EmailSendOptions } from \"./EmailProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Local email provider configuration atom\n */\nexport const localEmailOptions = $atom({\n name: \"alepha.email.local.options\",\n schema: t.object({\n directory: t.string({\n description: \"Directory path where email files will be stored\",\n }),\n }),\n default: {\n directory: \"node_modules/.alepha/emails\",\n },\n});\n\nexport type LocalEmailProviderOptions = Static<typeof localEmailOptions.schema>;\n\ndeclare module \"alepha\" {\n interface State {\n [localEmailOptions.key]: LocalEmailProviderOptions;\n }\n}\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport class LocalEmailProvider implements EmailProvider {\n protected readonly log = $logger();\n protected readonly fs = $inject(FileSystemProvider);\n protected readonly options = $state(localEmailOptions);\n\n protected get directory(): string {\n return this.options.directory;\n }\n\n protected onStart = $hook({\n on: \"start\",\n handler: async () => {\n try {\n await this.fs.mkdir(this.directory, { recursive: true });\n this.log.info(\"Email directory OK\", {\n at: this.directory,\n });\n } catch (error) {\n const message = `Failed to create email directory: ${error instanceof Error ? error.message : String(error)}`;\n this.log.error(message, { at: this.directory });\n throw new EmailError(\n message,\n error instanceof Error ? error : undefined,\n );\n }\n },\n });\n\n public async send(options: EmailSendOptions): Promise<void> {\n const { to, subject, body } = options;\n\n this.log.debug(\"Sending email to local file\", {\n to,\n subject,\n directory: this.directory,\n });\n\n try {\n const timestamp = new Date().toISOString().replace(/[:.]/g, \"-\");\n for (const recipient of Array.isArray(to) ? to : [to]) {\n const sanitizedEmail = recipient.replace(/[^a-zA-Z0-9@.-]/g, \"_\");\n const filename = `${sanitizedEmail},${timestamp}.eml.json`;\n const filepath = this.fs.join(this.directory, filename);\n\n const content = this.createEmailJson({ to: recipient, subject, body });\n await this.fs.writeFile(filepath, JSON.stringify(content, null, 2));\n\n this.log.info(\"Email saved to local file\", { filepath, to, subject });\n }\n } catch (error) {\n const message = `Failed to save email to local file: ${error instanceof Error ? error.message : String(error)}`;\n this.log.error(message, { to, subject, directory: this.directory });\n throw new EmailError(message, error instanceof Error ? error : undefined);\n }\n }\n\n public createEmailJson(options: {\n to: string;\n subject: string;\n body: string;\n }): { to: string; subject: string; body: string; sentAt: string } {\n return {\n to: options.to,\n subject: options.subject,\n body: options.body,\n sentAt: new Date().toISOString(),\n };\n }\n}\n","import { $module } from \"alepha\";\nimport { $email } from \"./primitives/$email.ts\";\nimport { EmailProvider } from \"./providers/EmailProvider.ts\";\nimport { LocalEmailProvider } from \"./providers/LocalEmailProvider.ts\";\nimport { MemoryEmailProvider } from \"./providers/MemoryEmailProvider.ts\";\n\n// Exports\nexport * from \"./errors/EmailError.ts\";\nexport * from \"./primitives/$email.ts\";\nexport * from \"./providers/EmailProvider.ts\";\nexport * from \"./providers/LocalEmailProvider.ts\";\nexport * from \"./providers/MemoryEmailProvider.ts\";\n\n// Hook declarations\ndeclare module \"alepha\" {\n interface Hooks {\n \"email:sending\": {\n to: string | string[];\n template: string;\n variables: Record<string, unknown>;\n provider: EmailProvider;\n abort(): void;\n };\n \"email:sent\": {\n to: string | string[];\n template: string;\n provider: EmailProvider;\n };\n }\n}\n\n/**\n * Email delivery with template support.\n *\n * **Features:**\n * - Send emails with templates\n * - Multiple recipients\n * - Local file provider for development\n * - Memory provider for testing\n *\n * For SMTP support, use `AlephaEmailSmtp` from `alepha/email/smtp`.\n * For Brevo support, use `AlephaEmailBrevo` from `alepha/email/brevo`.\n *\n * @module alepha.email\n */\nexport const AlephaEmail = $module({\n name: \"alepha.email\",\n primitives: [$email],\n services: [EmailProvider, MemoryEmailProvider, LocalEmailProvider],\n register: (alepha) => {\n if (alepha.isTest()) {\n alepha.with({\n optional: true,\n provide: EmailProvider,\n use: MemoryEmailProvider,\n });\n } else {\n alepha.with({\n optional: true,\n provide: EmailProvider,\n use: LocalEmailProvider,\n });\n }\n },\n});\n"],"mappings":"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"}
@@ -1,19 +1,19 @@
1
- import * as alepha from "alepha";
1
+ import * as _$alepha from "alepha";
2
2
  import { Static } from "alepha";
3
3
  import { EmailProvider, EmailSendOptions } from "alepha/email";
4
- import * as alepha_logger0 from "alepha/logger";
4
+ import * as _$alepha_logger0 from "alepha/logger";
5
5
  import { Transporter } from "nodemailer";
6
6
 
7
7
  //#region ../../src/email/smtp/providers/NodemailerEmailProvider.d.ts
8
8
  /**
9
9
  * Nodemailer connection pooling and rate limiting options
10
10
  */
11
- declare const nodemailerEmailOptions: alepha.Atom<alepha.TObject<{
12
- pool: alepha.TOptional<alepha.TBoolean>;
13
- maxConnections: alepha.TOptional<alepha.TNumber>;
14
- maxMessages: alepha.TOptional<alepha.TNumber>;
15
- rateDelta: alepha.TOptional<alepha.TNumber>;
16
- rateLimit: alepha.TOptional<alepha.TNumber>;
11
+ declare const nodemailerEmailOptions: _$alepha.Atom<_$alepha.TObject<{
12
+ pool: _$alepha.TOptional<_$alepha.TBoolean>;
13
+ maxConnections: _$alepha.TOptional<_$alepha.TNumber>;
14
+ maxMessages: _$alepha.TOptional<_$alepha.TNumber>;
15
+ rateDelta: _$alepha.TOptional<_$alepha.TNumber>;
16
+ rateLimit: _$alepha.TOptional<_$alepha.TNumber>;
17
17
  }>, "alepha.email.nodemailer.options">;
18
18
  type NodemailerEmailProviderOptions = Static<typeof nodemailerEmailOptions.schema>;
19
19
  declare module "alepha" {
@@ -61,7 +61,7 @@ declare class NodemailerEmailProvider implements EmailProvider {
61
61
  EMAIL_PORT: number;
62
62
  EMAIL_SECURE: boolean;
63
63
  };
64
- protected readonly log: alepha_logger0.Logger;
64
+ protected readonly log: _$alepha_logger0.Logger;
65
65
  protected readonly options: Readonly<{
66
66
  pool?: boolean | undefined;
67
67
  maxConnections?: number | undefined;
@@ -87,8 +87,8 @@ declare class NodemailerEmailProvider implements EmailProvider {
87
87
  * Close the transporter connection.
88
88
  */
89
89
  close(): void;
90
- protected readonly onStart: alepha.HookPrimitive<"start">;
91
- protected readonly onStop: alepha.HookPrimitive<"stop">;
90
+ protected readonly onStart: _$alepha.HookPrimitive<"start">;
91
+ protected readonly onStop: _$alepha.HookPrimitive<"stop">;
92
92
  }
93
93
  //#endregion
94
94
  //#region ../../src/email/smtp/index.d.ts
@@ -98,7 +98,7 @@ declare class NodemailerEmailProvider implements EmailProvider {
98
98
  * @see {@link NodemailerEmailProvider}
99
99
  * @module alepha.email.smtp
100
100
  */
101
- declare const AlephaEmailSmtp: alepha.Service<alepha.Module>;
101
+ declare const AlephaEmailSmtp: _$alepha.Service<_$alepha.Module>;
102
102
  //#endregion
103
103
  export { AlephaEmailSmtp, NodemailerEmailProvider, NodemailerEmailProviderOptions, nodemailerEmailOptions };
104
104
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/email/smtp/providers/NodemailerEmailProvider.ts","../../../src/email/smtp/index.ts"],"mappings":";;;;;;;;;;cAmDa,sBAAA,EAAsB,MAAA,CAAA,IAAA,QAAA,OAAA;yBA8BjC,MAAA,CAAA,QAAA;;;;;;KAEU,8BAAA,GAAiC,MAAA,QACpC,sBAAA,CAAuB,MAAA;AAAA;EAAA,UAIpB,KAAA;IAAA,CACP,sBAAA,CAAuB,GAAA,GAAM,8BAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AANlC;;;;;;;cA2Ca,uBAAA,YAAmC,aAAA;EAAA,mBAC3B,GAAA;;;;;;;;qBACA,GAAA,EAFgB,cAAA,CAEb,MAAA;EAAA,mBACH,OAAA,EAAO,QAAA;;;;;;;YAChB,WAAA,EAAa,WAAA;EAAA,cAET,IAAA,CAAA;EAAA,cAUA,IAAA,CAAA;EAAA,cAIA,MAAA,CAAA;EAAA,cAIA,IAAA,CAAA;EAAA,cAIA,IAAA,CAAA;EAAA,cAIA,WAAA,CAAA;EAAA,UAUJ,cAAA,CAAA,GAAkB,WAAA;EAOf,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EAAA,UAyBpC,iBAAA,CAAA,GAAqB,WAAA;EA1Ee;;;EA2GjC,MAAA,CAAA,GAAU,OAAA;EA1GJ;;;EAwHZ,KAAA,CAAA;EAAA,mBAOY,OAAA,EArBW,MAAA,CAqBJ,aAAA;EAAA,mBAKP,MAAA,EALO,MAAA,CAKD,aAAA;AAAA;;;;;;;;;cCtPd,eAAA,EAAe,MAAA,CAAA,OAAA,CAW1B,MAAA,CAX0B,MAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/email/smtp/providers/NodemailerEmailProvider.ts","../../../src/email/smtp/index.ts"],"mappings":";;;;;;;;;;cAmDa,sBAAA,EAAsB,QAAA,CAAA,IAAA,UAAA,OAAA;2BA8BjC,QAAA,CAAA,QAAA;;;;;;KAEU,8BAAA,GAAiC,MAAA,QACpC,sBAAA,CAAuB,MAAA;AAAA;EAAA,UAIpB,KAAA;IAAA,CACP,sBAAA,CAAuB,GAAA,GAAM,8BAAA;EAAA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AANlC;;;;;;;cA2Ca,uBAAA,YAAmC,aAAA;EAAA,mBAC3B,GAAA;;;;;;;;qBACA,GAAA,EAFgB,gBAAA,CAEb,MAAA;EAAA,mBACH,OAAA,EAAO,QAAA;;;;;;;YAChB,WAAA,EAAa,WAAA;EAAA,cAET,IAAA,CAAA;EAAA,cAUA,IAAA,CAAA;EAAA,cAIA,MAAA,CAAA;EAAA,cAIA,IAAA,CAAA;EAAA,cAIA,IAAA,CAAA;EAAA,cAIA,WAAA,CAAA;EAAA,UAUJ,cAAA,CAAA,GAAkB,WAAA;EAOf,IAAA,CAAK,OAAA,EAAS,gBAAA,GAAmB,OAAA;EAAA,UAyBpC,iBAAA,CAAA,GAAqB,WAAA;EA1Ee;;;EA2GjC,MAAA,CAAA,GAAU,OAAA;EA1GJ;;;EAwHZ,KAAA,CAAA;EAAA,mBAOY,OAAA,EArBW,QAAA,CAqBJ,aAAA;EAAA,mBAKP,MAAA,EALO,QAAA,CAKD,aAAA;AAAA;;;;;;;;;cCtPd,eAAA,EAAe,QAAA,CAAA,OAAA,CAW1B,QAAA,CAX0B,MAAA"}
@@ -1,5 +1,5 @@
1
1
  import { createRequire } from "node:module";
2
- import { $atom, $env, $hook, $module, $use, t } from "alepha";
2
+ import { $atom, $env, $hook, $module, $state, t } from "alepha";
3
3
  import { AlephaEmail, EmailError, EmailProvider } from "alepha/email";
4
4
  import { $logger } from "alepha/logger";
5
5
  //#region \0rolldown/runtime.js
@@ -203,7 +203,7 @@ var require_cookies = /* @__PURE__ */ __commonJSMin(((exports, module) => {
203
203
  var require_package = /* @__PURE__ */ __commonJSMin(((exports, module) => {
204
204
  module.exports = {
205
205
  "name": "nodemailer",
206
- "version": "8.0.3",
206
+ "version": "8.0.4",
207
207
  "description": "Easy as cake e-mail sending from your Node.js applications",
208
208
  "main": "lib/nodemailer.js",
209
209
  "scripts": {
@@ -7771,7 +7771,10 @@ var require_smtp_connection = /* @__PURE__ */ __commonJSMin(((exports, module) =
7771
7771
  args.push("BODY=8BITMIME");
7772
7772
  this._using8BitMime = true;
7773
7773
  }
7774
- if (this._envelope.size && this._supportedExtensions.includes("SIZE")) args.push("SIZE=" + this._envelope.size);
7774
+ if (this._envelope.size && this._supportedExtensions.includes("SIZE")) {
7775
+ const sizeValue = Number(this._envelope.size) || 0;
7776
+ if (sizeValue > 0) args.push("SIZE=" + sizeValue);
7777
+ }
7775
7778
  if (this._envelope.dsn && this._supportedExtensions.includes("DSN")) {
7776
7779
  if (this._envelope.dsn.ret) args.push("RET=" + shared.encodeXText(this._envelope.dsn.ret));
7777
7780
  if (this._envelope.dsn.envid) args.push("ENVID=" + shared.encodeXText(this._envelope.dsn.envid));
@@ -10569,7 +10572,7 @@ const nodemailerEmailOptions = $atom({
10569
10572
  var NodemailerEmailProvider = class {
10570
10573
  env = $env(envSchema);
10571
10574
  log = $logger();
10572
- options = $use(nodemailerEmailOptions);
10575
+ options = $state(nodemailerEmailOptions);
10573
10576
  transporter = null;
10574
10577
  get host() {
10575
10578
  const host = this.env.EMAIL_HOST;