alepha 0.14.4 → 0.15.1

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 (322) hide show
  1. package/README.md +44 -102
  2. package/dist/api/audits/index.d.ts +331 -443
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/audits/index.js +2 -2
  5. package/dist/api/audits/index.js.map +1 -1
  6. package/dist/api/files/index.d.ts +0 -113
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +2 -3
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +151 -262
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/notifications/index.browser.js +4 -4
  13. package/dist/api/notifications/index.browser.js.map +1 -1
  14. package/dist/api/notifications/index.d.ts +164 -276
  15. package/dist/api/notifications/index.d.ts.map +1 -1
  16. package/dist/api/notifications/index.js +4 -4
  17. package/dist/api/notifications/index.js.map +1 -1
  18. package/dist/api/parameters/index.d.ts +265 -377
  19. package/dist/api/parameters/index.d.ts.map +1 -1
  20. package/dist/api/users/index.browser.js +1 -2
  21. package/dist/api/users/index.browser.js.map +1 -1
  22. package/dist/api/users/index.d.ts +195 -301
  23. package/dist/api/users/index.d.ts.map +1 -1
  24. package/dist/api/users/index.js +203 -184
  25. package/dist/api/users/index.js.map +1 -1
  26. package/dist/api/verifications/index.d.ts.map +1 -1
  27. package/dist/batch/index.d.ts.map +1 -1
  28. package/dist/batch/index.js +1 -2
  29. package/dist/batch/index.js.map +1 -1
  30. package/dist/bucket/index.d.ts.map +1 -1
  31. package/dist/cache/core/index.d.ts.map +1 -1
  32. package/dist/cache/redis/index.d.ts.map +1 -1
  33. package/dist/cache/redis/index.js +2 -2
  34. package/dist/cache/redis/index.js.map +1 -1
  35. package/dist/cli/index.d.ts +5900 -165
  36. package/dist/cli/index.d.ts.map +1 -1
  37. package/dist/cli/index.js +1481 -639
  38. package/dist/cli/index.js.map +1 -1
  39. package/dist/command/index.d.ts +8 -4
  40. package/dist/command/index.d.ts.map +1 -1
  41. package/dist/command/index.js +29 -25
  42. package/dist/command/index.js.map +1 -1
  43. package/dist/core/index.browser.js +563 -54
  44. package/dist/core/index.browser.js.map +1 -1
  45. package/dist/core/index.d.ts +175 -8
  46. package/dist/core/index.d.ts.map +1 -1
  47. package/dist/core/index.js +564 -54
  48. package/dist/core/index.js.map +1 -1
  49. package/dist/core/index.native.js +563 -54
  50. package/dist/core/index.native.js.map +1 -1
  51. package/dist/datetime/index.d.ts.map +1 -1
  52. package/dist/datetime/index.js +4 -4
  53. package/dist/datetime/index.js.map +1 -1
  54. package/dist/email/index.d.ts +89 -42
  55. package/dist/email/index.d.ts.map +1 -1
  56. package/dist/email/index.js +129 -33
  57. package/dist/email/index.js.map +1 -1
  58. package/dist/fake/index.d.ts +7969 -2
  59. package/dist/fake/index.d.ts.map +1 -1
  60. package/dist/fake/index.js +22 -22
  61. package/dist/fake/index.js.map +1 -1
  62. package/dist/file/index.d.ts +134 -1
  63. package/dist/file/index.d.ts.map +1 -1
  64. package/dist/file/index.js +253 -1
  65. package/dist/file/index.js.map +1 -1
  66. package/dist/lock/core/index.d.ts.map +1 -1
  67. package/dist/lock/redis/index.d.ts.map +1 -1
  68. package/dist/logger/index.d.ts +1 -2
  69. package/dist/logger/index.d.ts.map +1 -1
  70. package/dist/logger/index.js +1 -5
  71. package/dist/logger/index.js.map +1 -1
  72. package/dist/mcp/index.d.ts +19 -1
  73. package/dist/mcp/index.d.ts.map +1 -1
  74. package/dist/mcp/index.js +28 -4
  75. package/dist/mcp/index.js.map +1 -1
  76. package/dist/orm/chunk-DH6iiROE.js +38 -0
  77. package/dist/orm/index.browser.js +9 -9
  78. package/dist/orm/index.browser.js.map +1 -1
  79. package/dist/orm/index.bun.js +2821 -0
  80. package/dist/orm/index.bun.js.map +1 -0
  81. package/dist/orm/index.d.ts +318 -169
  82. package/dist/orm/index.d.ts.map +1 -1
  83. package/dist/orm/index.js +2086 -1776
  84. package/dist/orm/index.js.map +1 -1
  85. package/dist/queue/core/index.d.ts +4 -4
  86. package/dist/queue/core/index.d.ts.map +1 -1
  87. package/dist/queue/redis/index.d.ts.map +1 -1
  88. package/dist/redis/index.bun.js +285 -0
  89. package/dist/redis/index.bun.js.map +1 -0
  90. package/dist/redis/index.d.ts +13 -31
  91. package/dist/redis/index.d.ts.map +1 -1
  92. package/dist/redis/index.js +18 -38
  93. package/dist/redis/index.js.map +1 -1
  94. package/dist/retry/index.d.ts.map +1 -1
  95. package/dist/router/index.d.ts.map +1 -1
  96. package/dist/scheduler/index.d.ts +83 -1
  97. package/dist/scheduler/index.d.ts.map +1 -1
  98. package/dist/scheduler/index.js +393 -1
  99. package/dist/scheduler/index.js.map +1 -1
  100. package/dist/security/index.browser.js +5 -1
  101. package/dist/security/index.browser.js.map +1 -1
  102. package/dist/security/index.d.ts +598 -112
  103. package/dist/security/index.d.ts.map +1 -1
  104. package/dist/security/index.js +1808 -97
  105. package/dist/security/index.js.map +1 -1
  106. package/dist/server/auth/index.d.ts +1200 -175
  107. package/dist/server/auth/index.d.ts.map +1 -1
  108. package/dist/server/auth/index.js +1268 -37
  109. package/dist/server/auth/index.js.map +1 -1
  110. package/dist/server/cache/index.d.ts +6 -3
  111. package/dist/server/cache/index.d.ts.map +1 -1
  112. package/dist/server/cache/index.js +1 -1
  113. package/dist/server/cache/index.js.map +1 -1
  114. package/dist/server/compress/index.d.ts.map +1 -1
  115. package/dist/server/cookies/index.d.ts.map +1 -1
  116. package/dist/server/cookies/index.js +3 -3
  117. package/dist/server/cookies/index.js.map +1 -1
  118. package/dist/server/core/index.d.ts +115 -13
  119. package/dist/server/core/index.d.ts.map +1 -1
  120. package/dist/server/core/index.js +321 -139
  121. package/dist/server/core/index.js.map +1 -1
  122. package/dist/server/cors/index.d.ts +0 -1
  123. package/dist/server/cors/index.d.ts.map +1 -1
  124. package/dist/server/health/index.d.ts +0 -1
  125. package/dist/server/health/index.d.ts.map +1 -1
  126. package/dist/server/helmet/index.d.ts.map +1 -1
  127. package/dist/server/links/index.browser.js +9 -1
  128. package/dist/server/links/index.browser.js.map +1 -1
  129. package/dist/server/links/index.d.ts +1 -2
  130. package/dist/server/links/index.d.ts.map +1 -1
  131. package/dist/server/links/index.js +14 -7
  132. package/dist/server/links/index.js.map +1 -1
  133. package/dist/server/metrics/index.d.ts +514 -1
  134. package/dist/server/metrics/index.d.ts.map +1 -1
  135. package/dist/server/metrics/index.js +4462 -4
  136. package/dist/server/metrics/index.js.map +1 -1
  137. package/dist/server/multipart/index.d.ts.map +1 -1
  138. package/dist/server/proxy/index.d.ts +0 -1
  139. package/dist/server/proxy/index.d.ts.map +1 -1
  140. package/dist/server/rate-limit/index.d.ts.map +1 -1
  141. package/dist/server/static/index.d.ts.map +1 -1
  142. package/dist/server/swagger/index.d.ts +1 -2
  143. package/dist/server/swagger/index.d.ts.map +1 -1
  144. package/dist/server/swagger/index.js +1 -2
  145. package/dist/server/swagger/index.js.map +1 -1
  146. package/dist/sms/index.d.ts +3 -1
  147. package/dist/sms/index.d.ts.map +1 -1
  148. package/dist/sms/index.js +10 -10
  149. package/dist/sms/index.js.map +1 -1
  150. package/dist/thread/index.d.ts +0 -1
  151. package/dist/thread/index.d.ts.map +1 -1
  152. package/dist/thread/index.js +2 -2
  153. package/dist/thread/index.js.map +1 -1
  154. package/dist/topic/core/index.d.ts.map +1 -1
  155. package/dist/topic/redis/index.d.ts.map +1 -1
  156. package/dist/vite/index.d.ts +6315 -149
  157. package/dist/vite/index.d.ts.map +1 -1
  158. package/dist/vite/index.js +140 -469
  159. package/dist/vite/index.js.map +1 -1
  160. package/dist/websocket/index.browser.js +9 -9
  161. package/dist/websocket/index.browser.js.map +1 -1
  162. package/dist/websocket/index.d.ts +28 -28
  163. package/dist/websocket/index.d.ts.map +1 -1
  164. package/dist/websocket/index.js +9 -9
  165. package/dist/websocket/index.js.map +1 -1
  166. package/package.json +13 -18
  167. package/src/api/files/controllers/AdminFileStatsController.ts +0 -1
  168. package/src/api/users/atoms/realmAuthSettingsAtom.ts +5 -0
  169. package/src/api/users/controllers/{UserRealmController.ts → RealmController.ts} +11 -11
  170. package/src/api/users/entities/users.ts +1 -1
  171. package/src/api/users/index.ts +8 -8
  172. package/src/api/users/primitives/{$userRealm.ts → $realm.ts} +17 -19
  173. package/src/api/users/providers/{UserRealmProvider.ts → RealmProvider.ts} +26 -30
  174. package/src/api/users/schemas/{userRealmConfigSchema.ts → realmConfigSchema.ts} +2 -2
  175. package/src/api/users/services/CredentialService.ts +7 -7
  176. package/src/api/users/services/IdentityService.ts +4 -4
  177. package/src/api/users/services/RegistrationService.spec.ts +25 -27
  178. package/src/api/users/services/RegistrationService.ts +38 -27
  179. package/src/api/users/services/SessionCrudService.ts +3 -3
  180. package/src/api/users/services/SessionService.spec.ts +3 -3
  181. package/src/api/users/services/SessionService.ts +27 -18
  182. package/src/api/users/services/UserService.ts +7 -7
  183. package/src/batch/providers/BatchProvider.ts +1 -2
  184. package/src/cli/apps/AlephaCli.ts +2 -2
  185. package/src/cli/apps/AlephaPackageBuilderCli.ts +47 -20
  186. package/src/cli/assets/apiHelloControllerTs.ts +19 -0
  187. package/src/cli/assets/apiIndexTs.ts +16 -0
  188. package/src/cli/assets/biomeJson.ts +2 -1
  189. package/src/cli/assets/claudeMd.ts +308 -0
  190. package/src/cli/assets/dummySpecTs.ts +2 -1
  191. package/src/cli/assets/editorconfig.ts +2 -1
  192. package/src/cli/assets/mainBrowserTs.ts +4 -3
  193. package/src/cli/assets/mainCss.ts +24 -0
  194. package/src/cli/assets/mainServerTs.ts +24 -0
  195. package/src/cli/assets/tsconfigJson.ts +2 -1
  196. package/src/cli/assets/webAppRouterTs.ts +16 -0
  197. package/src/cli/assets/webHelloComponentTsx.ts +20 -0
  198. package/src/cli/assets/webIndexTs.ts +16 -0
  199. package/src/cli/atoms/appEntryOptions.ts +13 -0
  200. package/src/cli/atoms/buildOptions.ts +1 -1
  201. package/src/cli/atoms/changelogOptions.ts +1 -1
  202. package/src/cli/commands/build.ts +97 -61
  203. package/src/cli/commands/db.ts +21 -18
  204. package/src/cli/commands/deploy.ts +17 -5
  205. package/src/cli/commands/dev.ts +26 -47
  206. package/src/cli/commands/gen/env.ts +1 -1
  207. package/src/cli/commands/init.ts +79 -25
  208. package/src/cli/commands/lint.ts +9 -3
  209. package/src/cli/commands/test.ts +8 -2
  210. package/src/cli/commands/typecheck.ts +5 -1
  211. package/src/cli/commands/verify.ts +4 -2
  212. package/src/cli/defineConfig.ts +9 -0
  213. package/src/cli/index.ts +2 -1
  214. package/src/cli/providers/AppEntryProvider.ts +131 -0
  215. package/src/cli/providers/ViteBuildProvider.ts +82 -0
  216. package/src/cli/providers/ViteDevServerProvider.ts +350 -0
  217. package/src/cli/providers/ViteTemplateProvider.ts +27 -0
  218. package/src/cli/services/AlephaCliUtils.ts +72 -602
  219. package/src/cli/services/PackageManagerUtils.ts +308 -0
  220. package/src/cli/services/ProjectScaffolder.ts +329 -0
  221. package/src/command/helpers/Runner.ts +15 -3
  222. package/src/core/Alepha.ts +2 -8
  223. package/src/core/__tests__/Alepha-graph.spec.ts +4 -0
  224. package/src/core/index.shared.ts +1 -0
  225. package/src/core/index.ts +2 -0
  226. package/src/core/primitives/$hook.ts +6 -2
  227. package/src/core/primitives/$module.spec.ts +4 -0
  228. package/src/core/primitives/$module.ts +12 -0
  229. package/src/core/providers/AlsProvider.ts +1 -1
  230. package/src/core/providers/CodecManager.spec.ts +12 -6
  231. package/src/core/providers/CodecManager.ts +26 -6
  232. package/src/core/providers/EventManager.ts +169 -13
  233. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +878 -0
  234. package/src/core/providers/KeylessJsonSchemaCodec.ts +789 -0
  235. package/src/core/providers/SchemaValidator.spec.ts +236 -0
  236. package/src/core/providers/StateManager.spec.ts +27 -16
  237. package/src/email/providers/LocalEmailProvider.spec.ts +111 -87
  238. package/src/email/providers/LocalEmailProvider.ts +52 -15
  239. package/src/email/providers/NodemailerEmailProvider.ts +167 -56
  240. package/src/file/errors/FileError.ts +7 -0
  241. package/src/file/index.ts +9 -1
  242. package/src/file/providers/MemoryFileSystemProvider.ts +393 -0
  243. package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
  244. package/src/mcp/errors/McpError.ts +30 -0
  245. package/src/mcp/index.ts +3 -0
  246. package/src/mcp/transports/SseMcpTransport.ts +16 -6
  247. package/src/orm/index.browser.ts +1 -19
  248. package/src/orm/index.bun.ts +77 -0
  249. package/src/orm/index.shared-server.ts +22 -0
  250. package/src/orm/index.shared.ts +15 -0
  251. package/src/orm/index.ts +19 -39
  252. package/src/orm/providers/DrizzleKitProvider.ts +3 -5
  253. package/src/orm/providers/drivers/BunPostgresProvider.ts +3 -5
  254. package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -1
  255. package/src/orm/providers/drivers/CloudflareD1Provider.ts +4 -0
  256. package/src/orm/providers/drivers/DatabaseProvider.ts +4 -0
  257. package/src/orm/providers/drivers/PglitePostgresProvider.ts +4 -0
  258. package/src/orm/services/Repository.ts +19 -0
  259. package/src/redis/index.bun.ts +35 -0
  260. package/src/redis/providers/BunRedisProvider.ts +12 -43
  261. package/src/redis/providers/BunRedisSubscriberProvider.ts +2 -3
  262. package/src/redis/providers/NodeRedisProvider.ts +16 -34
  263. package/src/{server/security → security}/__tests__/BasicAuth.spec.ts +11 -11
  264. package/src/{server/security → security}/__tests__/ServerSecurityProvider-realm.spec.ts +21 -16
  265. package/src/{server/security/providers → security/__tests__}/ServerSecurityProvider.spec.ts +5 -5
  266. package/src/security/index.browser.ts +5 -0
  267. package/src/security/index.ts +90 -7
  268. package/src/security/primitives/{$realm.spec.ts → $issuer.spec.ts} +11 -11
  269. package/src/security/primitives/{$realm.ts → $issuer.ts} +20 -17
  270. package/src/security/primitives/$role.ts +5 -5
  271. package/src/security/primitives/$serviceAccount.spec.ts +5 -5
  272. package/src/security/primitives/$serviceAccount.ts +3 -3
  273. package/src/{server/security → security}/providers/ServerSecurityProvider.ts +5 -7
  274. package/src/server/auth/primitives/$auth.ts +10 -10
  275. package/src/server/auth/primitives/$authCredentials.ts +3 -3
  276. package/src/server/auth/primitives/$authGithub.ts +3 -3
  277. package/src/server/auth/primitives/$authGoogle.ts +3 -3
  278. package/src/server/auth/providers/ServerAuthProvider.ts +13 -13
  279. package/src/server/cache/providers/ServerCacheProvider.ts +1 -1
  280. package/src/server/cookies/providers/ServerCookiesProvider.ts +3 -3
  281. package/src/server/core/index.ts +1 -1
  282. package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
  283. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
  284. package/src/server/core/providers/NodeHttpServerProvider.ts +92 -24
  285. package/src/server/core/providers/ServerBodyParserProvider.ts +19 -23
  286. package/src/server/core/providers/ServerLoggerProvider.ts +23 -19
  287. package/src/server/core/providers/ServerProvider.ts +144 -24
  288. package/src/server/core/providers/ServerRouterProvider.ts +259 -115
  289. package/src/server/core/providers/ServerTimingProvider.ts +2 -2
  290. package/src/server/links/atoms/apiLinksAtom.ts +7 -0
  291. package/src/server/links/index.browser.ts +2 -0
  292. package/src/server/links/index.ts +3 -1
  293. package/src/server/links/providers/LinkProvider.ts +1 -1
  294. package/src/server/swagger/index.ts +1 -1
  295. package/src/sms/providers/LocalSmsProvider.spec.ts +153 -111
  296. package/src/sms/providers/LocalSmsProvider.ts +8 -7
  297. package/src/vite/index.ts +3 -2
  298. package/src/vite/tasks/buildClient.ts +0 -1
  299. package/src/vite/tasks/buildServer.ts +80 -22
  300. package/src/vite/tasks/copyAssets.ts +5 -4
  301. package/src/vite/tasks/generateCloudflare.ts +7 -0
  302. package/src/vite/tasks/generateSitemap.ts +64 -23
  303. package/src/vite/tasks/index.ts +0 -2
  304. package/src/vite/tasks/prerenderPages.ts +49 -24
  305. package/dist/server/security/index.browser.js +0 -13
  306. package/dist/server/security/index.browser.js.map +0 -1
  307. package/dist/server/security/index.d.ts +0 -173
  308. package/dist/server/security/index.d.ts.map +0 -1
  309. package/dist/server/security/index.js +0 -311
  310. package/dist/server/security/index.js.map +0 -1
  311. package/src/cli/assets/appRouterTs.ts +0 -9
  312. package/src/cli/assets/indexHtml.ts +0 -15
  313. package/src/cli/assets/mainTs.ts +0 -13
  314. package/src/cli/commands/format.ts +0 -17
  315. package/src/server/security/index.browser.ts +0 -10
  316. package/src/server/security/index.ts +0 -94
  317. package/src/vite/helpers/boot.ts +0 -106
  318. package/src/vite/plugins/viteAlephaDev.ts +0 -177
  319. package/src/vite/tasks/devServer.ts +0 -69
  320. package/src/vite/tasks/runAlepha.ts +0 -270
  321. /package/src/{server/security → security}/primitives/$basicAuth.ts +0 -0
  322. /package/src/{server/security → security}/providers/ServerBasicAuthProvider.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  import * as alepha1 from "alepha";
2
2
  import { Alepha, KIND, Primitive, Service, Static, TSchema } from "alepha";
3
- import * as alepha_logger1 from "alepha/logger";
3
+ import * as alepha_logger0 from "alepha/logger";
4
4
  import { DateTimeProvider } from "alepha/datetime";
5
5
 
6
6
  //#region ../../src/queue/core/providers/QueueProvider.d.ts
@@ -29,7 +29,7 @@ declare abstract class QueueProvider {
29
29
  //#endregion
30
30
  //#region ../../src/queue/core/providers/MemoryQueueProvider.d.ts
31
31
  declare class MemoryQueueProvider implements QueueProvider {
32
- protected readonly log: alepha_logger1.Logger;
32
+ protected readonly log: alepha_logger0.Logger;
33
33
  protected queueList: Record<string, string[]>;
34
34
  push(queue: string, ...messages: string[]): Promise<void>;
35
35
  pop(queue: string): Promise<string | undefined>;
@@ -55,7 +55,7 @@ declare module "alepha" {
55
55
  interface Env extends Partial<Static<typeof envSchema>> {}
56
56
  }
57
57
  declare class WorkerProvider {
58
- protected readonly log: alepha_logger1.Logger;
58
+ protected readonly log: alepha_logger0.Logger;
59
59
  protected readonly env: {
60
60
  QUEUE_WORKER_INTERVAL: number;
61
61
  QUEUE_WORKER_MAX_INTERVAL: number;
@@ -351,7 +351,7 @@ interface QueuePrimitiveOptions<T extends TSchema> {
351
351
  handler?: (message: QueueMessage<T>) => Promise<void>;
352
352
  }
353
353
  declare class QueuePrimitive<T extends TSchema> extends Primitive<QueuePrimitiveOptions<T>> {
354
- protected readonly log: alepha_logger1.Logger;
354
+ protected readonly log: alepha_logger0.Logger;
355
355
  protected readonly workerProvider: WorkerProvider;
356
356
  readonly provider: QueueProvider | MemoryQueueProvider;
357
357
  push(...payloads: Array<Static<T>>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/queue/core/providers/QueueProvider.ts","../../../src/queue/core/providers/MemoryQueueProvider.ts","../../../src/queue/core/providers/WorkerProvider.ts","../../../src/queue/core/primitives/$queue.ts","../../../src/queue/core/primitives/$consumer.ts","../../../src/queue/core/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/queue/core/providers/QueueProvider.ts","../../../src/queue/core/providers/MemoryQueueProvider.ts","../../../src/queue/core/providers/WorkerProvider.ts","../../../src/queue/core/primitives/$queue.ts","../../../src/queue/core/primitives/$consumer.ts","../../../src/queue/core/index.ts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/queue/redis/providers/RedisQueueProvider.ts","../../../src/queue/redis/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAIM,WAIJ,OAAA,CAJa;sBAIb,OAAA,CAAA;;AAJI,cAMO,kBAAA,YAA8B,aAN5B,CAAA;EAMF,mBAAA,GAAmB,EACN,MADM,CAAA,OACQ,SADR,CAAA;EACQ,mBAAA,aAAA,EACJ,aADI;EAAd,MAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAAA,MAAA;EACU,IAAA,CAAA,KAAA,EAAA,MAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAMiB,OANjB,CAAA,IAAA,CAAA;EAMiB,GAAA,CAAA,KAAA,EAAA,MAAA,CAAA,EAIlB,OAJkB,CAAA,MAAA,GAAA,SAAA,CAAA;;;;;;;;;AAhBR;AAQhC,cCMA,gBDNmB,ECMH,OAAA,CAAA,ODNG,CCiB9B,OAAA,CAX2B,MAAA,CDNG"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/queue/redis/providers/RedisQueueProvider.ts","../../../src/queue/redis/index.ts"],"mappings":";;;;;;cAIM,SAAA,EAIJ,OAAA,CAJa,OAAA;sBAIb,OAAA,CAAA,OAAA;AAAA;AAAA,cAEW,kBAAA,YAA8B,aAAA;EAAA,mBACtB,GAAA,EAAK,MAAA,QAAc,SAAA;EAAA,mBACnB,aAAA,EAAe,aAAA;EAE3B,MAAA,CAAO,KAAA;EAID,IAAA,CAAK,KAAA,UAAe,OAAA,WAAkB,OAAA;EAItC,GAAA,CAAI,KAAA,WAAgB,OAAA;AAAA;;;;;;;;AApBU;cCchC,gBAAA,EAAgB,OAAA,CAAA,OAAA,CAW3B,OAAA,CAX2B,MAAA"}
@@ -0,0 +1,285 @@
1
+ import { $env, $hook, $inject, $module, Alepha, AlephaError, t } from "alepha";
2
+ import { $logger } from "alepha/logger";
3
+
4
+ //#region ../../src/redis/providers/RedisProvider.ts
5
+ /**
6
+ * Abstract Redis provider interface.
7
+ *
8
+ * This abstract class defines the common interface for Redis operations.
9
+ * Implementations include:
10
+ * - {@link NodeRedisProvider} - Uses `@redis/client` for Node.js runtime
11
+ * - {@link BunRedisProvider} - Uses Bun's native `RedisClient` for Bun runtime
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // Inject the abstract provider - runtime selects the implementation
16
+ * const redis = alepha.inject(RedisProvider);
17
+ *
18
+ * // Use common operations
19
+ * await redis.set("key", "value");
20
+ * const value = await redis.get("key");
21
+ * ```
22
+ */
23
+ var RedisProvider = class {};
24
+
25
+ //#endregion
26
+ //#region ../../src/redis/providers/BunRedisProvider.ts
27
+ const envSchema = t.object({ REDIS_URL: t.text({
28
+ default: "redis://localhost:6379",
29
+ description: "Redis connection URL"
30
+ }) });
31
+ /**
32
+ * Bun Redis client provider using Bun's native Redis client.
33
+ *
34
+ * This provider uses Bun's built-in `RedisClient` class for Redis connections,
35
+ * which provides excellent performance (7.9x faster than ioredis) on the Bun runtime.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * // Set REDIS_URL environment variable (default: redis://localhost:6379)
40
+ * // REDIS_URL=redis://:password@myredis.example.com:6379
41
+ *
42
+ * // Or configure programmatically
43
+ * alepha.with({
44
+ * provide: RedisProvider,
45
+ * use: BunRedisProvider,
46
+ * });
47
+ * ```
48
+ */
49
+ var BunRedisProvider = class extends RedisProvider {
50
+ log = $logger();
51
+ alepha = $inject(Alepha);
52
+ env = $env(envSchema);
53
+ client;
54
+ get publisher() {
55
+ if (!this.client?.connected) throw new AlephaError("Redis client is not ready");
56
+ return this.client;
57
+ }
58
+ get isReady() {
59
+ return this.client?.connected ?? false;
60
+ }
61
+ start = $hook({
62
+ on: "start",
63
+ handler: () => this.connect()
64
+ });
65
+ stop = $hook({
66
+ on: "stop",
67
+ handler: () => this.close()
68
+ });
69
+ /**
70
+ * Connect to the Redis server.
71
+ */
72
+ async connect() {
73
+ if (!this.alepha.isBun()) throw new AlephaError("BunRedisProvider requires the Bun runtime. Use NodeRedisProvider for Node.js.");
74
+ this.log.debug("Connecting...");
75
+ this.client = new Bun.RedisClient(this.getUrl(), {
76
+ autoReconnect: true,
77
+ enableAutoPipelining: true
78
+ });
79
+ this.client.onconnect = () => {
80
+ this.log.trace("Redis connected");
81
+ };
82
+ this.client.onclose = (error) => {
83
+ if (this.alepha.isStarted() && error) this.log.error("Redis connection closed", error);
84
+ };
85
+ await this.client.connect();
86
+ this.log.info("Connection OK");
87
+ }
88
+ /**
89
+ * Close the connection to the Redis server.
90
+ */
91
+ async close() {
92
+ if (this.client) {
93
+ this.log.debug("Closing connection...");
94
+ this.client.close();
95
+ this.client = void 0;
96
+ this.log.info("Connection closed");
97
+ }
98
+ }
99
+ /**
100
+ * Create a duplicate connection for pub/sub or other isolated operations.
101
+ */
102
+ async duplicate() {
103
+ if (typeof Bun === "undefined") throw new AlephaError("BunRedisProvider requires the Bun runtime.");
104
+ const client = new Bun.RedisClient(this.getUrl(), {
105
+ autoReconnect: true,
106
+ enableAutoPipelining: true
107
+ });
108
+ client.onclose = (error) => {
109
+ if (this.alepha.isStarted() && error) this.log.error("Redis duplicate connection closed", error);
110
+ };
111
+ await client.connect();
112
+ return client;
113
+ }
114
+ async get(key) {
115
+ this.log.trace(`Getting key ${key}`);
116
+ const resp = await this.publisher.getBuffer(key);
117
+ if (resp === null) return;
118
+ return Buffer.from(resp);
119
+ }
120
+ async set(key, value, options) {
121
+ const buf = Buffer.isBuffer(value) ? value : Buffer.from(value, "utf-8");
122
+ const args = [key, buf.toString("binary")];
123
+ if (options?.expiration) if (options.expiration.type === "KEEPTTL") args.push("KEEPTTL");
124
+ else args.push(options.expiration.type, String(options.expiration.value));
125
+ if (options?.EX !== void 0) args.push("EX", String(options.EX));
126
+ if (options?.PX !== void 0) args.push("PX", String(options.PX));
127
+ if (options?.EXAT !== void 0) args.push("EXAT", String(options.EXAT));
128
+ if (options?.PXAT !== void 0) args.push("PXAT", String(options.PXAT));
129
+ if (options?.KEEPTTL) args.push("KEEPTTL");
130
+ if (options?.condition === "NX") args.push("NX");
131
+ else if (options?.condition === "XX") args.push("XX");
132
+ if (options?.NX) args.push("NX");
133
+ if (options?.XX) args.push("XX");
134
+ if (options?.GET) args.push("GET");
135
+ if (args.length === 2) await this.publisher.set(key, buf);
136
+ else await this.publisher.send("SET", args);
137
+ return buf;
138
+ }
139
+ async has(key) {
140
+ return this.publisher.exists(key);
141
+ }
142
+ async keys(pattern) {
143
+ const keys = await this.publisher.send("KEYS", [pattern]);
144
+ if (!Array.isArray(keys)) return [];
145
+ return keys.map((key) => key instanceof Uint8Array ? Buffer.from(key).toString() : String(key));
146
+ }
147
+ async del(keys) {
148
+ if (keys.length === 0) return;
149
+ await this.publisher.send("DEL", keys);
150
+ }
151
+ async lpush(key, value) {
152
+ await this.publisher.send("LPUSH", [key, value]);
153
+ }
154
+ async rpop(key) {
155
+ const value = await this.publisher.send("RPOP", [key]);
156
+ if (value == null) return;
157
+ if (value instanceof Uint8Array) return Buffer.from(value).toString();
158
+ return String(value);
159
+ }
160
+ async publish(channel, message) {
161
+ await this.publisher.publish(channel, message);
162
+ }
163
+ /**
164
+ * Get the Redis connection URL.
165
+ */
166
+ getUrl() {
167
+ return this.env.REDIS_URL;
168
+ }
169
+ };
170
+
171
+ //#endregion
172
+ //#region ../../src/redis/providers/RedisSubscriberProvider.ts
173
+ /**
174
+ * Abstract Redis subscriber provider interface.
175
+ *
176
+ * This abstract class defines the common interface for Redis pub/sub subscriptions.
177
+ * Implementations include:
178
+ * - {@link NodeRedisSubscriberProvider} - Uses `@redis/client` for Node.js runtime
179
+ * - {@link BunRedisSubscriberProvider} - Uses Bun's native `RedisClient` for Bun runtime
180
+ *
181
+ * Redis requires separate connections for pub/sub operations, so this provider
182
+ * creates a dedicated connection for subscriptions.
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * // Inject the abstract provider - runtime selects the implementation
187
+ * const subscriber = alepha.inject(RedisSubscriberProvider);
188
+ *
189
+ * // Subscribe to a channel
190
+ * await subscriber.subscribe("my-channel", (message, channel) => {
191
+ * console.log(`Received: ${message} on ${channel}`);
192
+ * });
193
+ * ```
194
+ */
195
+ var RedisSubscriberProvider = class {};
196
+
197
+ //#endregion
198
+ //#region ../../src/redis/providers/BunRedisSubscriberProvider.ts
199
+ /**
200
+ * Bun Redis subscriber provider for pub/sub operations.
201
+ *
202
+ * This provider creates a dedicated Redis connection for subscriptions,
203
+ * as Redis requires separate connections for pub/sub operations.
204
+ *
205
+ * @example
206
+ * ```ts
207
+ * const subscriber = alepha.inject(RedisSubscriberProvider);
208
+ * await subscriber.subscribe("channel", (message, channel) => {
209
+ * console.log(`Received: ${message} on ${channel}`);
210
+ * });
211
+ * ```
212
+ */
213
+ var BunRedisSubscriberProvider = class extends RedisSubscriberProvider {
214
+ log = $logger();
215
+ alepha = $inject(Alepha);
216
+ redisProvider = $inject(BunRedisProvider);
217
+ client;
218
+ get subscriber() {
219
+ if (!this.client?.connected) throw new AlephaError("Redis subscriber client is not ready");
220
+ return this.client;
221
+ }
222
+ get isReady() {
223
+ return this.client?.connected ?? false;
224
+ }
225
+ start = $hook({
226
+ on: "start",
227
+ handler: () => this.connect()
228
+ });
229
+ stop = $hook({
230
+ on: "stop",
231
+ handler: () => this.close()
232
+ });
233
+ /**
234
+ * Connect to the Redis server for subscriptions.
235
+ */
236
+ async connect() {
237
+ this.log.debug("Connecting subscriber...");
238
+ this.client = await this.redisProvider.duplicate();
239
+ this.log.info("Subscriber connection OK");
240
+ }
241
+ /**
242
+ * Close the subscriber connection.
243
+ */
244
+ async close() {
245
+ if (this.client) {
246
+ this.log.debug("Closing subscriber connection...");
247
+ this.client.close();
248
+ this.client = void 0;
249
+ this.log.info("Subscriber connection closed");
250
+ }
251
+ }
252
+ async subscribe(channel, callback) {
253
+ await this.subscriber.subscribe(channel, (message, ch) => {
254
+ callback(typeof message === "object" && message !== null ? Buffer.from(message).toString() : String(message), ch);
255
+ });
256
+ }
257
+ async unsubscribe(channel, _callback) {
258
+ await this.subscriber.unsubscribe(channel);
259
+ }
260
+ };
261
+
262
+ //#endregion
263
+ //#region ../../src/redis/index.bun.ts
264
+ const AlephaRedis = $module({
265
+ name: "alepha.redis",
266
+ services: [
267
+ BunRedisProvider,
268
+ BunRedisSubscriberProvider,
269
+ RedisProvider,
270
+ RedisSubscriberProvider
271
+ ],
272
+ register: (alepha) => {
273
+ alepha.with({
274
+ provide: RedisProvider,
275
+ use: BunRedisProvider
276
+ }).with({
277
+ provide: RedisSubscriberProvider,
278
+ use: BunRedisSubscriberProvider
279
+ });
280
+ }
281
+ });
282
+
283
+ //#endregion
284
+ export { AlephaRedis, BunRedisProvider, BunRedisSubscriberProvider, RedisProvider, RedisSubscriberProvider };
285
+ //# sourceMappingURL=index.bun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.bun.js","names":[],"sources":["../../src/redis/providers/RedisProvider.ts","../../src/redis/providers/BunRedisProvider.ts","../../src/redis/providers/RedisSubscriberProvider.ts","../../src/redis/providers/BunRedisSubscriberProvider.ts","../../src/redis/index.bun.ts"],"sourcesContent":["/**\n * Abstract Redis provider interface.\n *\n * This abstract class defines the common interface for Redis operations.\n * Implementations include:\n * - {@link NodeRedisProvider} - Uses `@redis/client` for Node.js runtime\n * - {@link BunRedisProvider} - Uses Bun's native `RedisClient` for Bun runtime\n *\n * @example\n * ```ts\n * // Inject the abstract provider - runtime selects the implementation\n * const redis = alepha.inject(RedisProvider);\n *\n * // Use common operations\n * await redis.set(\"key\", \"value\");\n * const value = await redis.get(\"key\");\n * ```\n */\nexport abstract class RedisProvider {\n /**\n * Whether the Redis client is ready to accept commands.\n */\n public abstract readonly isReady: boolean;\n\n /**\n * Connect to the Redis server.\n */\n public abstract connect(): Promise<void>;\n\n /**\n * Close the connection to the Redis server.\n */\n public abstract close(): Promise<void>;\n\n /**\n * Get the value of a key.\n *\n * @param key The key to get.\n * @returns The value as a Buffer, or undefined if the key does not exist.\n */\n public abstract get(key: string): Promise<Buffer | undefined>;\n\n /**\n * Set the value of a key.\n *\n * @param key The key to set.\n * @param value The value to set (Buffer or string).\n * @param options Optional set options (EX, PX, NX, XX, etc.).\n * @returns The value as a Buffer.\n */\n public abstract set(\n key: string,\n value: Buffer | string,\n options?: RedisSetOptions,\n ): Promise<Buffer>;\n\n /**\n * Check if a key exists.\n *\n * @param key The key to check.\n * @returns True if the key exists.\n */\n public abstract has(key: string): Promise<boolean>;\n\n /**\n * Get all keys matching a pattern.\n *\n * @param pattern The glob-style pattern to match.\n * @returns Array of matching key names.\n */\n public abstract keys(pattern: string): Promise<string[]>;\n\n /**\n * Delete one or more keys.\n *\n * @param keys The keys to delete.\n */\n public abstract del(keys: string[]): Promise<void>;\n\n // ---------------------------------------------------------\n // Queue operations (for alepha/queue-redis)\n // ---------------------------------------------------------\n\n /**\n * Push a value to the left (head) of a list.\n *\n * @param key The list key.\n * @param value The value to push.\n */\n public abstract lpush(key: string, value: string): Promise<void>;\n\n /**\n * Pop a value from the right (tail) of a list.\n *\n * @param key The list key.\n * @returns The value, or undefined if the list is empty.\n */\n public abstract rpop(key: string): Promise<string | undefined>;\n\n // ---------------------------------------------------------\n // Pub/Sub operations (for alepha/topic-redis)\n // ---------------------------------------------------------\n\n /**\n * Publish a message to a channel.\n *\n * @param channel The channel name.\n * @param message The message to publish.\n */\n public abstract publish(channel: string, message: string): Promise<void>;\n}\n\n/**\n * Common Redis SET command options.\n * Compatible with @redis/client SetOptions format.\n */\nexport interface RedisSetOptions {\n /**\n * Set the specified expire time, in seconds.\n */\n EX?: number;\n /**\n * Set the specified expire time, in milliseconds.\n */\n PX?: number;\n /**\n * Set the specified Unix time at which the key will expire, in seconds.\n */\n EXAT?: number;\n /**\n * Set the specified Unix time at which the key will expire, in milliseconds.\n */\n PXAT?: number;\n /**\n * Only set the key if it does not already exist.\n */\n NX?: boolean;\n /**\n * Only set the key if it already exists.\n */\n XX?: boolean;\n /**\n * Retain the time to live associated with the key.\n */\n KEEPTTL?: boolean;\n /**\n * Return the old string stored at key, or nil if key did not exist.\n */\n GET?: boolean;\n /**\n * Alternative expiration format (compatible with @redis/client).\n */\n expiration?: {\n type: \"EX\" | \"PX\" | \"EXAT\" | \"PXAT\" | \"KEEPTTL\";\n value: number;\n };\n /**\n * Alternative condition format (compatible with @redis/client).\n */\n condition?: \"NX\" | \"XX\";\n}\n","import {\n $env,\n $hook,\n $inject,\n Alepha,\n AlephaError,\n type Static,\n t,\n} from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport { RedisProvider, type RedisSetOptions } from \"./RedisProvider.ts\";\n\nconst envSchema = t.object({\n REDIS_URL: t.text({\n default: \"redis://localhost:6379\",\n description: \"Redis connection URL\",\n }),\n});\n\ndeclare module \"alepha\" {\n interface Env extends Partial<Static<typeof envSchema>> {}\n}\n\n/**\n * Bun Redis client provider using Bun's native Redis client.\n *\n * This provider uses Bun's built-in `RedisClient` class for Redis connections,\n * which provides excellent performance (7.9x faster than ioredis) on the Bun runtime.\n *\n * @example\n * ```ts\n * // Set REDIS_URL environment variable (default: redis://localhost:6379)\n * // REDIS_URL=redis://:password@myredis.example.com:6379\n *\n * // Or configure programmatically\n * alepha.with({\n * provide: RedisProvider,\n * use: BunRedisProvider,\n * });\n * ```\n */\nexport class BunRedisProvider extends RedisProvider {\n protected readonly log = $logger();\n protected readonly alepha = $inject(Alepha);\n protected readonly env = $env(envSchema);\n protected client?: Bun.RedisClient;\n\n public get publisher(): Bun.RedisClient {\n if (!this.client?.connected) {\n throw new AlephaError(\"Redis client is not ready\");\n }\n\n return this.client;\n }\n\n public override get isReady(): boolean {\n return this.client?.connected ?? false;\n }\n\n protected readonly start = $hook({\n on: \"start\",\n handler: () => this.connect(),\n });\n\n protected readonly stop = $hook({\n on: \"stop\",\n handler: () => this.close(),\n });\n\n /**\n * Connect to the Redis server.\n */\n public override async connect(): Promise<void> {\n // Check if we're running in Bun\n if (!this.alepha.isBun()) {\n throw new AlephaError(\n \"BunRedisProvider requires the Bun runtime. Use NodeRedisProvider for Node.js.\",\n );\n }\n\n this.log.debug(\"Connecting...\");\n\n this.client = new Bun.RedisClient(this.getUrl(), {\n autoReconnect: true,\n enableAutoPipelining: true,\n });\n\n this.client.onconnect = () => {\n this.log.trace(\"Redis connected\");\n };\n\n this.client.onclose = (error) => {\n if (this.alepha.isStarted() && error) {\n this.log.error(\"Redis connection closed\", error);\n }\n };\n\n await this.client.connect();\n\n this.log.info(\"Connection OK\");\n }\n\n /**\n * Close the connection to the Redis server.\n */\n public override async close(): Promise<void> {\n if (this.client) {\n this.log.debug(\"Closing connection...\");\n this.client.close();\n this.client = undefined;\n this.log.info(\"Connection closed\");\n }\n }\n\n /**\n * Create a duplicate connection for pub/sub or other isolated operations.\n */\n public async duplicate(): Promise<Bun.RedisClient> {\n if (typeof Bun === \"undefined\") {\n throw new AlephaError(\"BunRedisProvider requires the Bun runtime.\");\n }\n\n const client = new Bun.RedisClient(this.getUrl(), {\n autoReconnect: true,\n enableAutoPipelining: true,\n });\n\n client.onclose = (error) => {\n if (this.alepha.isStarted() && error) {\n this.log.error(\"Redis duplicate connection closed\", error);\n }\n };\n\n await client.connect();\n\n return client;\n }\n\n public override async get(key: string): Promise<Buffer | undefined> {\n this.log.trace(`Getting key ${key}`);\n const resp = await this.publisher.getBuffer(key);\n\n if (resp === null) {\n return undefined;\n }\n\n return Buffer.from(resp);\n }\n\n public override async set(\n key: string,\n value: Buffer | string,\n options?: RedisSetOptions,\n ): Promise<Buffer> {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value, \"utf-8\");\n\n // Build SET command arguments\n const args: string[] = [key, buf.toString(\"binary\")];\n\n // Handle expiration object format (from alepha/cache-redis, alepha/lock-redis)\n if (options?.expiration) {\n if (options.expiration.type === \"KEEPTTL\") {\n args.push(\"KEEPTTL\");\n } else {\n args.push(options.expiration.type, String(options.expiration.value));\n }\n }\n\n // Handle direct expiration properties\n if (options?.EX !== undefined) {\n args.push(\"EX\", String(options.EX));\n }\n if (options?.PX !== undefined) {\n args.push(\"PX\", String(options.PX));\n }\n if (options?.EXAT !== undefined) {\n args.push(\"EXAT\", String(options.EXAT));\n }\n if (options?.PXAT !== undefined) {\n args.push(\"PXAT\", String(options.PXAT));\n }\n if (options?.KEEPTTL) {\n args.push(\"KEEPTTL\");\n }\n\n // Handle condition object format\n if (options?.condition === \"NX\") {\n args.push(\"NX\");\n } else if (options?.condition === \"XX\") {\n args.push(\"XX\");\n }\n\n // Handle direct condition properties\n if (options?.NX) {\n args.push(\"NX\");\n }\n if (options?.XX) {\n args.push(\"XX\");\n }\n if (options?.GET) {\n args.push(\"GET\");\n }\n\n if (args.length === 2) {\n // Simple set without options\n await this.publisher.set(key, buf);\n } else {\n // Set with options via raw command\n await this.publisher.send(\"SET\", args);\n }\n\n return buf;\n }\n\n public override async has(key: string): Promise<boolean> {\n return this.publisher.exists(key);\n }\n\n public override async keys(pattern: string): Promise<string[]> {\n const keys = await this.publisher.send(\"KEYS\", [pattern]);\n if (!Array.isArray(keys)) {\n return [];\n }\n return keys.map((key) =>\n key instanceof Uint8Array ? Buffer.from(key).toString() : String(key),\n );\n }\n\n public override async del(keys: string[]): Promise<void> {\n if (keys.length === 0) {\n return;\n }\n\n await this.publisher.send(\"DEL\", keys);\n }\n\n // ---------------------------------------------------------\n // Queue operations\n // ---------------------------------------------------------\n\n public override async lpush(key: string, value: string): Promise<void> {\n await this.publisher.send(\"LPUSH\", [key, value]);\n }\n\n public override async rpop(key: string): Promise<string | undefined> {\n const value = await this.publisher.send(\"RPOP\", [key]);\n if (value == null) {\n return undefined;\n }\n if (value instanceof Uint8Array) {\n return Buffer.from(value).toString();\n }\n return String(value);\n }\n\n // ---------------------------------------------------------\n // Pub/Sub operations\n // ---------------------------------------------------------\n\n public override async publish(\n channel: string,\n message: string,\n ): Promise<void> {\n await this.publisher.publish(channel, message);\n }\n\n /**\n * Get the Redis connection URL.\n */\n protected getUrl(): string {\n return this.env.REDIS_URL;\n }\n}\n","/**\n * Abstract Redis subscriber provider interface.\n *\n * This abstract class defines the common interface for Redis pub/sub subscriptions.\n * Implementations include:\n * - {@link NodeRedisSubscriberProvider} - Uses `@redis/client` for Node.js runtime\n * - {@link BunRedisSubscriberProvider} - Uses Bun's native `RedisClient` for Bun runtime\n *\n * Redis requires separate connections for pub/sub operations, so this provider\n * creates a dedicated connection for subscriptions.\n *\n * @example\n * ```ts\n * // Inject the abstract provider - runtime selects the implementation\n * const subscriber = alepha.inject(RedisSubscriberProvider);\n *\n * // Subscribe to a channel\n * await subscriber.subscribe(\"my-channel\", (message, channel) => {\n * console.log(`Received: ${message} on ${channel}`);\n * });\n * ```\n */\nexport abstract class RedisSubscriberProvider {\n /**\n * Whether the Redis subscriber client is ready to accept commands.\n */\n public abstract readonly isReady: boolean;\n\n /**\n * Connect to the Redis server for subscriptions.\n */\n public abstract connect(): Promise<void>;\n\n /**\n * Close the subscriber connection.\n */\n public abstract close(): Promise<void>;\n\n /**\n * Subscribe to a channel.\n *\n * @param channel The channel name.\n * @param callback The callback to invoke when a message is received.\n */\n public abstract subscribe(\n channel: string,\n callback: SubscribeCallback,\n ): Promise<void>;\n\n /**\n * Unsubscribe from a channel.\n *\n * @param channel The channel name.\n * @param callback Optional specific callback to remove.\n */\n public abstract unsubscribe(\n channel: string,\n callback?: SubscribeCallback,\n ): Promise<void>;\n}\n\n/**\n * Callback for subscription messages.\n */\nexport type SubscribeCallback = (message: string, channel: string) => void;\n","import { $hook, $inject, Alepha, AlephaError } from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport { BunRedisProvider } from \"./BunRedisProvider.ts\";\nimport {\n RedisSubscriberProvider,\n type SubscribeCallback,\n} from \"./RedisSubscriberProvider.ts\";\n\n/**\n * Bun Redis subscriber provider for pub/sub operations.\n *\n * This provider creates a dedicated Redis connection for subscriptions,\n * as Redis requires separate connections for pub/sub operations.\n *\n * @example\n * ```ts\n * const subscriber = alepha.inject(RedisSubscriberProvider);\n * await subscriber.subscribe(\"channel\", (message, channel) => {\n * console.log(`Received: ${message} on ${channel}`);\n * });\n * ```\n */\nexport class BunRedisSubscriberProvider extends RedisSubscriberProvider {\n protected readonly log = $logger();\n protected readonly alepha = $inject(Alepha);\n protected readonly redisProvider = $inject(BunRedisProvider);\n protected client?: Bun.RedisClient;\n\n public get subscriber(): Bun.RedisClient {\n if (!this.client?.connected) {\n throw new AlephaError(\"Redis subscriber client is not ready\");\n }\n\n return this.client;\n }\n\n public override get isReady(): boolean {\n return this.client?.connected ?? false;\n }\n\n protected readonly start = $hook({\n on: \"start\",\n handler: () => this.connect(),\n });\n\n protected readonly stop = $hook({\n on: \"stop\",\n handler: () => this.close(),\n });\n\n /**\n * Connect to the Redis server for subscriptions.\n */\n public override async connect(): Promise<void> {\n this.log.debug(\"Connecting subscriber...\");\n this.client = await this.redisProvider.duplicate();\n this.log.info(\"Subscriber connection OK\");\n }\n\n /**\n * Close the subscriber connection.\n */\n public override async close(): Promise<void> {\n if (this.client) {\n this.log.debug(\"Closing subscriber connection...\");\n this.client.close();\n this.client = undefined;\n this.log.info(\"Subscriber connection closed\");\n }\n }\n\n public override async subscribe(\n channel: string,\n callback: SubscribeCallback,\n ): Promise<void> {\n await this.subscriber.subscribe(channel, (message, ch) => {\n // Bun's callback provides Buffer or string, normalize to string\n const msg =\n typeof message === \"object\" && message !== null\n ? Buffer.from(message as Uint8Array).toString()\n : String(message);\n callback(msg, ch);\n });\n }\n\n public override async unsubscribe(\n channel: string,\n _callback?: SubscribeCallback,\n ): Promise<void> {\n // Bun's unsubscribe doesn't support callback filtering\n await this.subscriber.unsubscribe(channel);\n }\n}\n","import { $module, type Alepha } from \"alepha\";\nimport { BunRedisProvider } from \"./providers/BunRedisProvider.ts\";\nimport { BunRedisSubscriberProvider } from \"./providers/BunRedisSubscriberProvider.ts\";\nimport { RedisProvider } from \"./providers/RedisProvider.ts\";\nimport { RedisSubscriberProvider } from \"./providers/RedisSubscriberProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./providers/BunRedisProvider.ts\";\nexport * from \"./providers/BunRedisSubscriberProvider.ts\";\nexport * from \"./providers/RedisProvider.ts\";\nexport * from \"./providers/RedisSubscriberProvider.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport const AlephaRedis = $module({\n name: \"alepha.redis\",\n services: [\n BunRedisProvider,\n BunRedisSubscriberProvider,\n RedisProvider,\n RedisSubscriberProvider,\n ],\n register: (alepha: Alepha) => {\n alepha\n .with({\n provide: RedisProvider,\n use: BunRedisProvider,\n })\n .with({\n provide: RedisSubscriberProvider,\n use: BunRedisSubscriberProvider,\n });\n },\n});\n"],"mappings":"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"}
@@ -2,10 +2,8 @@ import * as alepha1 from "alepha";
2
2
  import { Alepha, Static } from "alepha";
3
3
  import * as alepha_logger0 from "alepha/logger";
4
4
  import { RedisClientType, createClient } from "@redis/client";
5
- import { RedisClient } from "bun";
6
5
 
7
6
  //#region ../../src/redis/providers/RedisProvider.d.ts
8
-
9
7
  /**
10
8
  * Abstract Redis provider interface.
11
9
  *
@@ -147,10 +145,7 @@ interface RedisSetOptions {
147
145
  //#endregion
148
146
  //#region ../../src/redis/providers/BunRedisProvider.d.ts
149
147
  declare const envSchema$1: alepha1.TObject<{
150
- REDIS_URL: alepha1.TOptional<alepha1.TString>;
151
- REDIS_PORT: alepha1.TInteger;
152
- REDIS_HOST: alepha1.TString;
153
- REDIS_PASSWORD: alepha1.TOptional<alepha1.TString>;
148
+ REDIS_URL: alepha1.TString;
154
149
  }>;
155
150
  declare module "alepha" {
156
151
  interface Env extends Partial<Static<typeof envSchema$1>> {}
@@ -163,10 +158,8 @@ declare module "alepha" {
163
158
  *
164
159
  * @example
165
160
  * ```ts
166
- * // Set REDIS_URL environment variable
167
- * // REDIS_URL=redis://localhost:6379
168
- *
169
- * // Or configure via REDIS_HOST, REDIS_PORT, REDIS_PASSWORD
161
+ * // Set REDIS_URL environment variable (default: redis://localhost:6379)
162
+ * // REDIS_URL=redis://:password@myredis.example.com:6379
170
163
  *
171
164
  * // Or configure programmatically
172
165
  * alepha.with({
@@ -179,13 +172,10 @@ declare class BunRedisProvider extends RedisProvider {
179
172
  protected readonly log: alepha_logger0.Logger;
180
173
  protected readonly alepha: Alepha;
181
174
  protected readonly env: {
182
- REDIS_URL?: string | undefined;
183
- REDIS_PASSWORD?: string | undefined;
184
- REDIS_PORT: number;
185
- REDIS_HOST: string;
175
+ REDIS_URL: string;
186
176
  };
187
- protected client?: RedisClient;
188
- get publisher(): RedisClient;
177
+ protected client?: Bun.RedisClient;
178
+ get publisher(): Bun.RedisClient;
189
179
  get isReady(): boolean;
190
180
  protected readonly start: alepha1.HookPrimitive<"start">;
191
181
  protected readonly stop: alepha1.HookPrimitive<"stop">;
@@ -200,7 +190,7 @@ declare class BunRedisProvider extends RedisProvider {
200
190
  /**
201
191
  * Create a duplicate connection for pub/sub or other isolated operations.
202
192
  */
203
- duplicate(): Promise<RedisClient>;
193
+ duplicate(): Promise<Bun.RedisClient>;
204
194
  get(key: string): Promise<Buffer | undefined>;
205
195
  set(key: string, value: Buffer | string, options?: RedisSetOptions): Promise<Buffer>;
206
196
  has(key: string): Promise<boolean>;
@@ -290,8 +280,8 @@ declare class BunRedisSubscriberProvider extends RedisSubscriberProvider {
290
280
  protected readonly log: alepha_logger0.Logger;
291
281
  protected readonly alepha: Alepha;
292
282
  protected readonly redisProvider: BunRedisProvider;
293
- protected client?: RedisClient;
294
- get subscriber(): RedisClient;
283
+ protected client?: Bun.RedisClient;
284
+ get subscriber(): Bun.RedisClient;
295
285
  get isReady(): boolean;
296
286
  protected readonly start: alepha1.HookPrimitive<"start">;
297
287
  protected readonly stop: alepha1.HookPrimitive<"stop">;
@@ -309,10 +299,7 @@ declare class BunRedisSubscriberProvider extends RedisSubscriberProvider {
309
299
  //#endregion
310
300
  //#region ../../src/redis/providers/NodeRedisProvider.d.ts
311
301
  declare const envSchema: alepha1.TObject<{
312
- REDIS_URL: alepha1.TOptional<alepha1.TString>;
313
- REDIS_PORT: alepha1.TInteger;
314
- REDIS_HOST: alepha1.TString;
315
- REDIS_PASSWORD: alepha1.TOptional<alepha1.TString>;
302
+ REDIS_URL: alepha1.TString;
316
303
  }>;
317
304
  declare module "alepha" {
318
305
  interface Env extends Partial<Static<typeof envSchema>> {}
@@ -328,10 +315,8 @@ type NodeRedisClientOptions = Parameters<typeof createClient>[0];
328
315
  *
329
316
  * @example
330
317
  * ```ts
331
- * // Set REDIS_URL environment variable
332
- * // REDIS_URL=redis://localhost:6379
333
- *
334
- * // Or configure via REDIS_HOST, REDIS_PORT, REDIS_PASSWORD
318
+ * // Set REDIS_URL environment variable (default: redis://localhost:6379)
319
+ * // REDIS_URL=redis://:password@myredis.example.com:6379
335
320
  *
336
321
  * // Or configure programmatically
337
322
  * alepha.with({
@@ -344,10 +329,7 @@ declare class NodeRedisProvider extends RedisProvider {
344
329
  protected readonly log: alepha_logger0.Logger;
345
330
  protected readonly alepha: Alepha;
346
331
  protected readonly env: {
347
- REDIS_URL?: string | undefined;
348
- REDIS_PASSWORD?: string | undefined;
349
- REDIS_PORT: number;
350
- REDIS_HOST: string;
332
+ REDIS_URL: string;
351
333
  };
352
334
  protected readonly client: NodeRedisClient;
353
335
  get publisher(): NodeRedisClient;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/redis/providers/RedisProvider.ts","../../src/redis/providers/BunRedisProvider.ts","../../src/redis/providers/RedisSubscriberProvider.ts","../../src/redis/providers/BunRedisSubscriberProvider.ts","../../src/redis/providers/NodeRedisProvider.ts","../../src/redis/providers/NodeRedisSubscriberProvider.ts","../../src/redis/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/redis/providers/RedisProvider.ts","../../src/redis/providers/BunRedisProvider.ts","../../src/redis/providers/RedisSubscriberProvider.ts","../../src/redis/providers/BunRedisSubscriberProvider.ts","../../src/redis/providers/NodeRedisProvider.ts","../../src/redis/providers/NodeRedisSubscriberProvider.ts","../../src/redis/index.ts"],"mappings":";;;;;;;;;;;;AAkBA;;;;;;;;;;;;uBAAsB,aAAA;EA2DiB;;;EAAA,kBAvDZ,OAAA;EAuFyC;;;EAAA,SAlFlD,OAAA,CAAA,GAAW,OAAA;EAAA;;;EAAA,SAKX,KAAA,CAAA,GAAS,OAAA;EAQL;;;;;;EAAA,SAAJ,GAAA,CAAI,GAAA,WAAc,OAAA,CAAQ,MAAA;EAa9B;;;;;;;;EAAA,SAHI,GAAA,CACd,GAAA,UACA,KAAA,EAAO,MAAA,WACP,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,MAAA;EAgB4B;;;;;;EAAA,SARvB,GAAA,CAAI,GAAA,WAAc,OAAA;EA2BiB;;;;;;EAAA,SAnBnC,IAAA,CAAK,OAAA,WAAkB,OAAA;EAuCoB;;;AAO7D;;EAP6D,SAhC3C,GAAA,CAAI,IAAA,aAAiB,OAAA;EAuCP;;;;;;EAAA,SA3Bd,KAAA,CAAM,GAAA,UAAa,KAAA,WAAgB,OAAA;EAuDnD;;;;;;EAAA,SA/CgB,IAAA,CAAK,GAAA,WAAc,OAAA;EA8D1B;;;;ACrJ8D;;EDqJ9D,SAlDO,OAAA,CAAQ,OAAA,UAAiB,OAAA,WAAkB,OAAA;AAAA;;;;;UAO5C,eAAA;;;;EAIf,EAAA;ECpG8B;;;EDwG9B,EAAA;ECxGU;;;ED4GV,IAAA;EC5GqD;;;EDgHrD,IAAA;EC3F4B;;;ED+F5B,EAAA;EC3FmB;;;ED+FnB,EAAA;ECpEiC;;;EDwEjC,OAAA;ECNgD;;;EDUhD,GAAA;ECKW;;;EDDX,UAAA;IACE,IAAA;IACA,KAAA;EAAA;EC4GC;;;EDvGH,SAAA;AAAA;;;cCnJI,WAAA,EAKJ,OAAA,CALa,OAAA;aAKb,OAAA,CAAA,OAAA;AAAA;AAAA;EAAA,UAGU,GAAA,SAAY,OAAA,CAAQ,MAAA,QAAc,WAAA;AAAA;;;;;;;;;;;;;;;;;;;cAqBjC,gBAAA,SAAyB,aAAA;EAAA,mBACjB,GAAA,EADS,cAAA,CACN,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,GAAA;;;YACT,MAAA,GAAS,GAAA,CAAI,WAAA;EAAA,IAEZ,SAAA,CAAA,GAAa,GAAA,CAAI,WAAA;EAAA,IAQR,OAAA,CAAA;EAAA,mBAID,KAAA,EAZoB,OAAA,CAYf,aAAA;EAAA,mBAKL,IAAA,EALK,OAAA,CAKD,aAAA;EDXX;;;ECmBU,OAAA,CAAA,GAAW,OAAA;EDVjB;;;EC2CM,KAAA,CAAA,GAAS,OAAA;EDnCV;;;EC+CR,SAAA,CAAA,GAAa,OAAA,CAAQ,GAAA,CAAI,WAAA;EAqBhB,GAAA,CAAI,GAAA,WAAc,OAAA,CAAQ,MAAA;EAW1B,GAAA,CACpB,GAAA,UACA,KAAA,EAAO,MAAA,WACP,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,MAAA;EA6DW,GAAA,CAAI,GAAA,WAAc,OAAA;EAIlB,IAAA,CAAK,OAAA,WAAkB,OAAA;EAUvB,GAAA,CAAI,IAAA,aAAiB,OAAA;EAYrB,KAAA,CAAM,GAAA,UAAa,KAAA,WAAgB,OAAA;EAInC,IAAA,CAAK,GAAA,WAAc,OAAA;EAenB,OAAA,CACpB,OAAA,UACA,OAAA,WACC,OAAA;EDzJa;;;EAAA,UCgKN,MAAA,CAAA;AAAA;;;;;;;;;AD3PZ;;;;;;;;;;;;;;;;uBEIsB,uBAAA;EFuF8C;;;EAAA,kBEnFzC,OAAA;EFCE;;;EAAA,SEIX,OAAA,CAAA,GAAW,OAAA;EFSP;;;EAAA,SEJJ,KAAA,CAAA,GAAS,OAAA;EFevB;;;;;;EAAA,SEPc,SAAA,CACd,OAAA,UACA,QAAA,EAAU,iBAAA,GACT,OAAA;EFea;;;;;;EAAA,SEPA,WAAA,CACd,OAAA,UACA,QAAA,GAAW,iBAAA,GACV,OAAA;AAAA;;;;KAMO,iBAAA,IAAqB,OAAA,UAAiB,OAAA;;;;;;AF9ClD;;;;;;;;;;;cGIa,0BAAA,SAAmC,uBAAA;EAAA,mBAC3B,GAAA,EADmB,cAAA,CAChB,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,aAAA,EAAa,gBAAA;EAAA,UACtB,MAAA,GAAS,GAAA,CAAI,WAAA;EAAA,IAEZ,UAAA,CAAA,GAAc,GAAA,CAAI,WAAA;EAAA,IAQT,OAAA,CAAA;EAAA,mBAID,KAAA,EAZqB,OAAA,CAYhB,aAAA;EAAA,mBAKL,IAAA,EALK,OAAA,CAKD,aAAA;EHlBP;;;EG0BM,OAAA,CAAA,GAAW,OAAA;EHbjB;;;EGsBM,KAAA,CAAA,GAAS,OAAA;EAST,SAAA,CACpB,OAAA,UACA,QAAA,EAAU,iBAAA,GACT,OAAA;EAWmB,WAAA,CACpB,OAAA,UACA,SAAA,GAAY,iBAAA,GACX,OAAA;AAAA;;;cCtEC,SAAA,EAKJ,OAAA,CALa,OAAA;aAKb,OAAA,CAAA,OAAA;AAAA;AAAA;EAAA,UAGU,GAAA,SAAY,OAAA,CAAQ,MAAA,QAAc,SAAA;AAAA;AAAA,KAGlC,eAAA,GAAkB,eAAA;EAK1B,EAAA,EAAI,iBAAA;AAAA;AAAA,KAEI,sBAAA,GAAyB,UAAA,QAAkB,YAAA;;;;;;;;;;;;;;;;;;cAmB1C,iBAAA,SAA0B,aAAA;EAAA,mBAClB,GAAA,EADU,cAAA,CACP,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,GAAA;;;qBACA,MAAA,EAAM,eAAA;EAAA,IAEd,SAAA,CAAA,GAAa,eAAA;EAAA,IAQJ,OAAA,CAAA;EAAA,mBAID,KAAA,EAZoB,OAAA,CAYf,aAAA;EAAA,mBAKL,IAAA,EALK,OAAA,CAKD,aAAA;EJhBP;;;EIwBM,OAAA,CAAA,GAAW,OAAA;EJhBZ;;;EIyBC,KAAA,CAAA,GAAS,OAAA;EAMxB,SAAA,CAAU,OAAA,GAAU,OAAA,CAAQ,sBAAA,IAA0B,eAAA;EAWvC,GAAA,CAAI,GAAA,WAAc,OAAA,CAAQ,MAAA;EAW1B,GAAA,CACpB,GAAA,UACA,KAAA,EAAO,MAAA,WACP,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,MAAA;EA+DW,GAAA,CAAI,GAAA,WAAc,OAAA;EAKlB,IAAA,CAAK,OAAA,WAAkB,OAAA;EAKvB,GAAA,CAAI,IAAA,aAAiB,OAAA;EAYrB,KAAA,CAAM,GAAA,UAAa,KAAA,WAAgB,OAAA;EAInC,IAAA,CAAK,GAAA,WAAc,OAAA;EAYnB,OAAA,CACpB,OAAA,UACA,OAAA,WACC,OAAA;EJ1HqB;;;EAAA,UIiId,MAAA,CAAA;EJjIwD;AAOpE;;EAPoE,UIwIxD,YAAA,CAAA,GAAgB,eAAA;AAAA;;;;;;AJnO5B;;;;;;;;;;;cKOa,2BAAA,SAAoC,uBAAA;EAAA,mBAC5B,GAAA,EADoB,cAAA,CACjB,MAAA;EAAA,mBACH,MAAA,EAAM,MAAA;EAAA,mBACN,aAAA,EAAa,iBAAA;EAAA,mBACb,MAAA,EAAQ,eAAA;EAAA,IAEhB,UAAA,CAAA,GAAc,eAAA;EAAA,IAQL,OAAA,CAAA;EAAA,mBAID,KAAA,EAZqB,OAAA,CAYhB,aAAA;EAAA,mBAKL,IAAA,EALK,OAAA,CAKD,aAAA;EAKD,OAAA,CAAA,GAAW,OAAA;EAMX,KAAA,CAAA,GAAS,OAAA;EAMT,SAAA,CACpB,OAAA,UACA,QAAA,EAAU,iBAAA,GACT,OAAA;EAImB,WAAA,CACpB,OAAA,UACA,QAAA,GAAW,iBAAA,GACV,OAAA;ELnCa;;;EAAA,UK0CN,YAAA,CAAA,GAAgB,eAAA;AAAA;;;ALhE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cMgCa,WAAA,EAAW,OAAA,CAAA,OAAA,CAiCtB,OAAA,CAjCsB,MAAA"}