alepha 0.13.0 → 0.13.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 (461) hide show
  1. package/README.md +1 -1
  2. package/dist/api-files/index.d.ts +28 -91
  3. package/dist/api-files/index.js +10 -755
  4. package/dist/api-files/index.js.map +1 -1
  5. package/dist/api-jobs/index.d.ts +67 -67
  6. package/dist/api-jobs/index.js +13 -13
  7. package/dist/api-jobs/index.js.map +1 -1
  8. package/dist/api-notifications/index.d.ts +129 -146
  9. package/dist/api-notifications/index.js +17 -39
  10. package/dist/api-notifications/index.js.map +1 -1
  11. package/dist/api-parameters/index.d.ts +21 -22
  12. package/dist/api-parameters/index.js +22 -22
  13. package/dist/api-parameters/index.js.map +1 -1
  14. package/dist/api-users/index.d.ts +224 -2001
  15. package/dist/api-users/index.js +914 -4787
  16. package/dist/api-users/index.js.map +1 -1
  17. package/dist/api-verifications/index.d.ts +96 -96
  18. package/dist/batch/index.d.ts +13 -13
  19. package/dist/batch/index.js +8 -8
  20. package/dist/batch/index.js.map +1 -1
  21. package/dist/bucket/index.d.ts +14 -14
  22. package/dist/bucket/index.js +12 -12
  23. package/dist/bucket/index.js.map +1 -1
  24. package/dist/cache/index.d.ts +11 -11
  25. package/dist/cache/index.js +9 -9
  26. package/dist/cache/index.js.map +1 -1
  27. package/dist/cli/{dist-Sz2EXvQX.cjs → dist-Dl9Vl7Ur.js} +17 -13
  28. package/dist/cli/{dist-BBPjuQ56.js.map → dist-Dl9Vl7Ur.js.map} +1 -1
  29. package/dist/cli/index.d.ts +31 -37
  30. package/dist/cli/index.js +152 -83
  31. package/dist/cli/index.js.map +1 -1
  32. package/dist/command/index.d.ts +19 -19
  33. package/dist/command/index.js +25 -25
  34. package/dist/command/index.js.map +1 -1
  35. package/dist/core/index.browser.js +218 -218
  36. package/dist/core/index.browser.js.map +1 -1
  37. package/dist/core/index.d.ts +232 -232
  38. package/dist/core/index.js +218 -218
  39. package/dist/core/index.js.map +1 -1
  40. package/dist/core/{index.cjs → index.native.js} +304 -455
  41. package/dist/core/index.native.js.map +1 -0
  42. package/dist/datetime/index.d.ts +9 -9
  43. package/dist/datetime/index.js +7 -7
  44. package/dist/datetime/index.js.map +1 -1
  45. package/dist/email/index.d.ts +16 -16
  46. package/dist/email/index.js +80 -82
  47. package/dist/email/index.js.map +1 -1
  48. package/dist/file/index.js +1 -1
  49. package/dist/file/index.js.map +1 -1
  50. package/dist/lock/index.d.ts +9 -9
  51. package/dist/lock/index.js +8 -8
  52. package/dist/lock/index.js.map +1 -1
  53. package/dist/lock-redis/index.js +3 -66
  54. package/dist/lock-redis/index.js.map +1 -1
  55. package/dist/logger/index.d.ts +5 -5
  56. package/dist/logger/index.js +8 -8
  57. package/dist/logger/index.js.map +1 -1
  58. package/dist/orm/index.browser.js +114 -114
  59. package/dist/orm/index.browser.js.map +1 -1
  60. package/dist/orm/index.d.ts +219 -219
  61. package/dist/orm/index.js +46 -46
  62. package/dist/orm/index.js.map +1 -1
  63. package/dist/queue/index.d.ts +25 -25
  64. package/dist/queue/index.js +20 -20
  65. package/dist/queue/index.js.map +1 -1
  66. package/dist/queue-redis/index.d.ts +2 -2
  67. package/dist/redis/index.d.ts +10 -10
  68. package/dist/retry/index.d.ts +20 -20
  69. package/dist/retry/index.js +9 -9
  70. package/dist/retry/index.js.map +1 -1
  71. package/dist/scheduler/index.d.ts +12 -12
  72. package/dist/scheduler/index.js +9 -9
  73. package/dist/scheduler/index.js.map +1 -1
  74. package/dist/security/index.d.ts +53 -53
  75. package/dist/security/index.js +32 -32
  76. package/dist/security/index.js.map +1 -1
  77. package/dist/server/index.browser.js +1 -1
  78. package/dist/server/index.browser.js.map +1 -1
  79. package/dist/server/index.d.ts +101 -101
  80. package/dist/server/index.js +17 -17
  81. package/dist/server/index.js.map +1 -1
  82. package/dist/server-auth/index.browser.js +4 -982
  83. package/dist/server-auth/index.browser.js.map +1 -1
  84. package/dist/server-auth/index.d.ts +204 -785
  85. package/dist/server-auth/index.js +47 -1239
  86. package/dist/server-auth/index.js.map +1 -1
  87. package/dist/server-cache/index.d.ts +10 -10
  88. package/dist/server-cache/index.js +2 -2
  89. package/dist/server-cache/index.js.map +1 -1
  90. package/dist/server-compress/index.d.ts +4 -4
  91. package/dist/server-compress/index.js +1 -1
  92. package/dist/server-compress/index.js.map +1 -1
  93. package/dist/server-cookies/index.browser.js +8 -8
  94. package/dist/server-cookies/index.browser.js.map +1 -1
  95. package/dist/server-cookies/index.d.ts +17 -17
  96. package/dist/server-cookies/index.js +10 -10
  97. package/dist/server-cookies/index.js.map +1 -1
  98. package/dist/server-cors/index.d.ts +17 -17
  99. package/dist/server-cors/index.js +9 -9
  100. package/dist/server-cors/index.js.map +1 -1
  101. package/dist/server-health/index.d.ts +2 -2
  102. package/dist/server-helmet/index.d.ts +1 -1
  103. package/dist/server-links/index.browser.js +12 -12
  104. package/dist/server-links/index.browser.js.map +1 -1
  105. package/dist/server-links/index.d.ts +59 -251
  106. package/dist/server-links/index.js +23 -502
  107. package/dist/server-links/index.js.map +1 -1
  108. package/dist/server-metrics/index.d.ts +4 -4
  109. package/dist/server-metrics/index.js +170 -174
  110. package/dist/server-metrics/index.js.map +1 -1
  111. package/dist/server-multipart/index.d.ts +2 -2
  112. package/dist/server-proxy/index.d.ts +12 -12
  113. package/dist/server-proxy/index.js +10 -10
  114. package/dist/server-proxy/index.js.map +1 -1
  115. package/dist/server-rate-limit/index.d.ts +22 -22
  116. package/dist/server-rate-limit/index.js +12 -12
  117. package/dist/server-rate-limit/index.js.map +1 -1
  118. package/dist/server-security/index.d.ts +24 -24
  119. package/dist/server-security/index.js +15 -15
  120. package/dist/server-security/index.js.map +1 -1
  121. package/dist/server-static/index.d.ts +14 -14
  122. package/dist/server-static/index.js +8 -8
  123. package/dist/server-static/index.js.map +1 -1
  124. package/dist/server-swagger/index.d.ts +25 -184
  125. package/dist/server-swagger/index.js +21 -724
  126. package/dist/server-swagger/index.js.map +1 -1
  127. package/dist/sms/index.d.ts +14 -14
  128. package/dist/sms/index.js +9 -9
  129. package/dist/sms/index.js.map +1 -1
  130. package/dist/thread/index.d.ts +11 -11
  131. package/dist/thread/index.js +17 -17
  132. package/dist/thread/index.js.map +1 -1
  133. package/dist/topic/index.d.ts +26 -26
  134. package/dist/topic/index.js +16 -16
  135. package/dist/topic/index.js.map +1 -1
  136. package/dist/topic-redis/index.d.ts +1 -1
  137. package/dist/vite/index.d.ts +3 -3
  138. package/dist/vite/index.js +12 -13
  139. package/dist/vite/index.js.map +1 -1
  140. package/dist/websocket/index.browser.js +11 -11
  141. package/dist/websocket/index.browser.js.map +1 -1
  142. package/dist/websocket/index.d.ts +51 -51
  143. package/dist/websocket/index.js +13 -13
  144. package/dist/websocket/index.js.map +1 -1
  145. package/package.json +62 -52
  146. package/src/api-files/services/FileService.ts +5 -7
  147. package/src/api-jobs/index.ts +1 -1
  148. package/src/api-jobs/{descriptors → primitives}/$job.ts +8 -8
  149. package/src/api-jobs/providers/JobProvider.ts +9 -9
  150. package/src/api-jobs/services/JobService.ts +5 -5
  151. package/src/api-notifications/index.ts +5 -15
  152. package/src/api-notifications/{descriptors → primitives}/$notification.ts +10 -10
  153. package/src/api-notifications/services/NotificationSenderService.ts +3 -3
  154. package/src/api-parameters/index.ts +1 -1
  155. package/src/api-parameters/{descriptors → primitives}/$config.ts +7 -12
  156. package/src/api-users/index.ts +1 -1
  157. package/src/api-users/{descriptors → primitives}/$userRealm.ts +8 -8
  158. package/src/api-users/providers/UserRealmProvider.ts +1 -1
  159. package/src/batch/index.ts +3 -3
  160. package/src/batch/{descriptors → primitives}/$batch.ts +13 -16
  161. package/src/bucket/index.ts +8 -8
  162. package/src/bucket/{descriptors → primitives}/$bucket.ts +8 -8
  163. package/src/bucket/providers/LocalFileStorageProvider.ts +3 -3
  164. package/src/cache/index.ts +4 -4
  165. package/src/cache/{descriptors → primitives}/$cache.ts +15 -15
  166. package/src/cli/apps/AlephaPackageBuilderCli.ts +30 -3
  167. package/src/cli/assets/appRouterTs.ts +9 -0
  168. package/src/cli/assets/indexHtml.ts +2 -1
  169. package/src/cli/assets/mainBrowserTs.ts +10 -0
  170. package/src/cli/commands/CoreCommands.ts +6 -5
  171. package/src/cli/commands/DrizzleCommands.ts +69 -61
  172. package/src/cli/commands/VerifyCommands.ts +2 -2
  173. package/src/cli/commands/ViteCommands.ts +6 -1
  174. package/src/cli/services/ProjectUtils.ts +78 -41
  175. package/src/command/index.ts +5 -5
  176. package/src/command/{descriptors → primitives}/$command.ts +9 -12
  177. package/src/command/providers/CliProvider.ts +10 -10
  178. package/src/core/Alepha.ts +30 -33
  179. package/src/core/constants/KIND.ts +1 -1
  180. package/src/core/constants/OPTIONS.ts +1 -1
  181. package/src/core/helpers/{descriptor.ts → primitive.ts} +18 -18
  182. package/src/core/helpers/ref.ts +1 -1
  183. package/src/core/index.shared.ts +8 -8
  184. package/src/core/{descriptors → primitives}/$context.ts +5 -5
  185. package/src/core/{descriptors → primitives}/$hook.ts +4 -4
  186. package/src/core/{descriptors → primitives}/$inject.ts +2 -2
  187. package/src/core/{descriptors → primitives}/$module.ts +9 -9
  188. package/src/core/{descriptors → primitives}/$use.ts +2 -2
  189. package/src/core/providers/CodecManager.ts +1 -1
  190. package/src/core/providers/JsonSchemaCodec.ts +1 -1
  191. package/src/core/providers/StateManager.ts +2 -2
  192. package/src/datetime/index.ts +3 -3
  193. package/src/datetime/{descriptors → primitives}/$interval.ts +6 -6
  194. package/src/email/index.ts +4 -4
  195. package/src/email/{descriptors → primitives}/$email.ts +8 -8
  196. package/src/file/index.ts +1 -1
  197. package/src/lock/index.ts +3 -3
  198. package/src/lock/{descriptors → primitives}/$lock.ts +10 -10
  199. package/src/logger/index.ts +8 -8
  200. package/src/logger/{descriptors → primitives}/$logger.ts +2 -2
  201. package/src/logger/services/Logger.ts +1 -1
  202. package/src/orm/constants/PG_SYMBOLS.ts +2 -2
  203. package/src/orm/index.browser.ts +2 -2
  204. package/src/orm/index.ts +8 -8
  205. package/src/orm/{descriptors → primitives}/$entity.ts +11 -11
  206. package/src/orm/{descriptors → primitives}/$repository.ts +2 -2
  207. package/src/orm/{descriptors → primitives}/$sequence.ts +8 -8
  208. package/src/orm/{descriptors → primitives}/$transaction.ts +4 -4
  209. package/src/orm/providers/DrizzleKitProvider.ts +1 -1
  210. package/src/orm/providers/PostgresTypeProvider.ts +3 -3
  211. package/src/orm/providers/RepositoryProvider.ts +4 -4
  212. package/src/orm/providers/drivers/DatabaseProvider.ts +7 -7
  213. package/src/orm/services/ModelBuilder.ts +9 -9
  214. package/src/orm/services/PgRelationManager.ts +2 -2
  215. package/src/orm/services/PostgresModelBuilder.ts +5 -5
  216. package/src/orm/services/Repository.ts +7 -7
  217. package/src/orm/services/SqliteModelBuilder.ts +5 -5
  218. package/src/queue/index.ts +7 -7
  219. package/src/queue/{descriptors → primitives}/$consumer.ts +15 -15
  220. package/src/queue/{descriptors → primitives}/$queue.ts +12 -12
  221. package/src/queue/providers/WorkerProvider.ts +7 -7
  222. package/src/retry/index.ts +3 -3
  223. package/src/retry/{descriptors → primitives}/$retry.ts +19 -17
  224. package/src/scheduler/index.ts +3 -3
  225. package/src/scheduler/{descriptors → primitives}/$scheduler.ts +9 -9
  226. package/src/scheduler/providers/CronProvider.ts +1 -1
  227. package/src/security/index.ts +9 -9
  228. package/src/security/{descriptors → primitives}/$permission.ts +7 -7
  229. package/src/security/{descriptors → primitives}/$realm.ts +6 -12
  230. package/src/security/{descriptors → primitives}/$role.ts +12 -12
  231. package/src/security/{descriptors → primitives}/$serviceAccount.ts +8 -8
  232. package/src/server/index.browser.ts +1 -1
  233. package/src/server/index.ts +14 -14
  234. package/src/server/{descriptors → primitives}/$action.ts +13 -13
  235. package/src/server/{descriptors → primitives}/$route.ts +9 -9
  236. package/src/server/providers/NodeHttpServerProvider.ts +2 -2
  237. package/src/server/services/HttpClient.ts +1 -1
  238. package/src/server-auth/index.browser.ts +1 -1
  239. package/src/server-auth/index.ts +6 -6
  240. package/src/server-auth/{descriptors → primitives}/$auth.ts +10 -10
  241. package/src/server-auth/{descriptors → primitives}/$authCredentials.ts +4 -4
  242. package/src/server-auth/{descriptors → primitives}/$authGithub.ts +4 -4
  243. package/src/server-auth/{descriptors → primitives}/$authGoogle.ts +4 -4
  244. package/src/server-auth/providers/ServerAuthProvider.ts +4 -4
  245. package/src/server-cache/providers/ServerCacheProvider.ts +7 -7
  246. package/src/server-compress/providers/ServerCompressProvider.ts +3 -3
  247. package/src/server-cookies/index.browser.ts +2 -2
  248. package/src/server-cookies/index.ts +5 -5
  249. package/src/server-cookies/{descriptors → primitives}/$cookie.browser.ts +12 -12
  250. package/src/server-cookies/{descriptors → primitives}/$cookie.ts +13 -13
  251. package/src/server-cookies/providers/ServerCookiesProvider.ts +4 -4
  252. package/src/server-cookies/services/CookieParser.ts +1 -1
  253. package/src/server-cors/index.ts +3 -3
  254. package/src/server-cors/{descriptors → primitives}/$cors.ts +11 -13
  255. package/src/server-cors/providers/ServerCorsProvider.ts +5 -5
  256. package/src/server-links/index.browser.ts +5 -5
  257. package/src/server-links/index.ts +9 -9
  258. package/src/server-links/{descriptors → primitives}/$remote.ts +11 -11
  259. package/src/server-links/providers/LinkProvider.ts +7 -7
  260. package/src/server-links/providers/{RemoteDescriptorProvider.ts → RemotePrimitiveProvider.ts} +6 -6
  261. package/src/server-links/providers/ServerLinksProvider.ts +3 -3
  262. package/src/server-proxy/index.ts +3 -3
  263. package/src/server-proxy/{descriptors → primitives}/$proxy.ts +8 -8
  264. package/src/server-proxy/providers/ServerProxyProvider.ts +4 -4
  265. package/src/server-rate-limit/index.ts +6 -6
  266. package/src/server-rate-limit/{descriptors → primitives}/$rateLimit.ts +13 -13
  267. package/src/server-rate-limit/providers/ServerRateLimitProvider.ts +5 -5
  268. package/src/server-security/index.ts +3 -3
  269. package/src/server-security/{descriptors → primitives}/$basicAuth.ts +13 -13
  270. package/src/server-security/providers/ServerBasicAuthProvider.ts +5 -5
  271. package/src/server-security/providers/ServerSecurityProvider.ts +4 -4
  272. package/src/server-static/index.ts +3 -3
  273. package/src/server-static/{descriptors → primitives}/$serve.ts +8 -10
  274. package/src/server-static/providers/ServerStaticProvider.ts +6 -6
  275. package/src/server-swagger/index.ts +5 -5
  276. package/src/server-swagger/{descriptors → primitives}/$swagger.ts +9 -9
  277. package/src/server-swagger/providers/ServerSwaggerProvider.ts +11 -10
  278. package/src/sms/index.ts +4 -4
  279. package/src/sms/{descriptors → primitives}/$sms.ts +8 -8
  280. package/src/thread/index.ts +3 -3
  281. package/src/thread/{descriptors → primitives}/$thread.ts +13 -13
  282. package/src/thread/providers/ThreadProvider.ts +7 -9
  283. package/src/topic/index.ts +5 -5
  284. package/src/topic/{descriptors → primitives}/$subscriber.ts +14 -14
  285. package/src/topic/{descriptors → primitives}/$topic.ts +10 -10
  286. package/src/topic/providers/TopicProvider.ts +4 -4
  287. package/src/vite/helpers/boot.ts +3 -3
  288. package/src/vite/tasks/copyAssets.ts +1 -1
  289. package/src/vite/tasks/generateSitemap.ts +3 -3
  290. package/src/vite/tasks/prerenderPages.ts +2 -2
  291. package/src/vite/tasks/runAlepha.ts +2 -2
  292. package/src/websocket/index.browser.ts +3 -3
  293. package/src/websocket/index.shared.ts +2 -2
  294. package/src/websocket/index.ts +4 -4
  295. package/src/websocket/interfaces/WebSocketInterfaces.ts +3 -3
  296. package/src/websocket/{descriptors → primitives}/$channel.ts +10 -10
  297. package/src/websocket/{descriptors → primitives}/$websocket.ts +8 -8
  298. package/src/websocket/providers/NodeWebSocketServerProvider.ts +7 -7
  299. package/src/websocket/providers/WebSocketServerProvider.ts +3 -3
  300. package/src/websocket/services/WebSocketClient.ts +5 -5
  301. package/dist/api-files/index.cjs +0 -1293
  302. package/dist/api-files/index.cjs.map +0 -1
  303. package/dist/api-files/index.d.cts +0 -829
  304. package/dist/api-jobs/index.cjs +0 -274
  305. package/dist/api-jobs/index.cjs.map +0 -1
  306. package/dist/api-jobs/index.d.cts +0 -654
  307. package/dist/api-notifications/index.cjs +0 -380
  308. package/dist/api-notifications/index.cjs.map +0 -1
  309. package/dist/api-notifications/index.d.cts +0 -289
  310. package/dist/api-parameters/index.cjs +0 -66
  311. package/dist/api-parameters/index.cjs.map +0 -1
  312. package/dist/api-parameters/index.d.cts +0 -84
  313. package/dist/api-users/index.cjs +0 -6009
  314. package/dist/api-users/index.cjs.map +0 -1
  315. package/dist/api-users/index.d.cts +0 -4740
  316. package/dist/api-verifications/index.cjs +0 -407
  317. package/dist/api-verifications/index.cjs.map +0 -1
  318. package/dist/api-verifications/index.d.cts +0 -207
  319. package/dist/batch/index.cjs +0 -408
  320. package/dist/batch/index.cjs.map +0 -1
  321. package/dist/batch/index.d.cts +0 -330
  322. package/dist/bin/index.cjs +0 -17
  323. package/dist/bin/index.cjs.map +0 -1
  324. package/dist/bin/index.d.cts +0 -1
  325. package/dist/bucket/index.cjs +0 -303
  326. package/dist/bucket/index.cjs.map +0 -1
  327. package/dist/bucket/index.d.cts +0 -355
  328. package/dist/cache/index.cjs +0 -241
  329. package/dist/cache/index.cjs.map +0 -1
  330. package/dist/cache/index.d.cts +0 -202
  331. package/dist/cache-redis/index.cjs +0 -84
  332. package/dist/cache-redis/index.cjs.map +0 -1
  333. package/dist/cache-redis/index.d.cts +0 -40
  334. package/dist/cli/chunk-DSlc6foC.cjs +0 -43
  335. package/dist/cli/dist-BBPjuQ56.js +0 -2778
  336. package/dist/cli/dist-Sz2EXvQX.cjs.map +0 -1
  337. package/dist/cli/index.cjs +0 -1241
  338. package/dist/cli/index.cjs.map +0 -1
  339. package/dist/cli/index.d.cts +0 -422
  340. package/dist/command/index.cjs +0 -693
  341. package/dist/command/index.cjs.map +0 -1
  342. package/dist/command/index.d.cts +0 -340
  343. package/dist/core/index.cjs.map +0 -1
  344. package/dist/core/index.d.cts +0 -1927
  345. package/dist/datetime/index.cjs +0 -318
  346. package/dist/datetime/index.cjs.map +0 -1
  347. package/dist/datetime/index.d.cts +0 -145
  348. package/dist/email/index.cjs +0 -10874
  349. package/dist/email/index.cjs.map +0 -1
  350. package/dist/email/index.d.cts +0 -186
  351. package/dist/fake/index.cjs +0 -34641
  352. package/dist/fake/index.cjs.map +0 -1
  353. package/dist/fake/index.d.cts +0 -74
  354. package/dist/file/index.cjs +0 -1212
  355. package/dist/file/index.cjs.map +0 -1
  356. package/dist/file/index.d.cts +0 -698
  357. package/dist/lock/index.cjs +0 -226
  358. package/dist/lock/index.cjs.map +0 -1
  359. package/dist/lock/index.d.cts +0 -361
  360. package/dist/lock-redis/index.cjs +0 -113
  361. package/dist/lock-redis/index.cjs.map +0 -1
  362. package/dist/lock-redis/index.d.cts +0 -24
  363. package/dist/logger/index.cjs +0 -521
  364. package/dist/logger/index.cjs.map +0 -1
  365. package/dist/logger/index.d.cts +0 -281
  366. package/dist/orm/index.cjs +0 -2986
  367. package/dist/orm/index.cjs.map +0 -1
  368. package/dist/orm/index.d.cts +0 -2213
  369. package/dist/queue/index.cjs +0 -1044
  370. package/dist/queue/index.cjs.map +0 -1
  371. package/dist/queue/index.d.cts +0 -1265
  372. package/dist/queue-redis/index.cjs +0 -873
  373. package/dist/queue-redis/index.cjs.map +0 -1
  374. package/dist/queue-redis/index.d.cts +0 -82
  375. package/dist/redis/index.cjs +0 -153
  376. package/dist/redis/index.cjs.map +0 -1
  377. package/dist/redis/index.d.cts +0 -82
  378. package/dist/retry/index.cjs +0 -146
  379. package/dist/retry/index.cjs.map +0 -1
  380. package/dist/retry/index.d.cts +0 -172
  381. package/dist/router/index.cjs +0 -111
  382. package/dist/router/index.cjs.map +0 -1
  383. package/dist/router/index.d.cts +0 -46
  384. package/dist/scheduler/index.cjs +0 -576
  385. package/dist/scheduler/index.cjs.map +0 -1
  386. package/dist/scheduler/index.d.cts +0 -145
  387. package/dist/security/index.cjs +0 -2402
  388. package/dist/security/index.cjs.map +0 -1
  389. package/dist/security/index.d.cts +0 -598
  390. package/dist/server/index.cjs +0 -1680
  391. package/dist/server/index.cjs.map +0 -1
  392. package/dist/server/index.d.cts +0 -810
  393. package/dist/server-auth/index.cjs +0 -3146
  394. package/dist/server-auth/index.cjs.map +0 -1
  395. package/dist/server-auth/index.d.cts +0 -1164
  396. package/dist/server-cache/index.cjs +0 -252
  397. package/dist/server-cache/index.cjs.map +0 -1
  398. package/dist/server-cache/index.d.cts +0 -164
  399. package/dist/server-compress/index.cjs +0 -141
  400. package/dist/server-compress/index.cjs.map +0 -1
  401. package/dist/server-compress/index.d.cts +0 -38
  402. package/dist/server-cookies/index.cjs +0 -234
  403. package/dist/server-cookies/index.cjs.map +0 -1
  404. package/dist/server-cookies/index.d.cts +0 -144
  405. package/dist/server-cors/index.cjs +0 -201
  406. package/dist/server-cors/index.cjs.map +0 -1
  407. package/dist/server-cors/index.d.cts +0 -140
  408. package/dist/server-health/index.cjs +0 -62
  409. package/dist/server-health/index.cjs.map +0 -1
  410. package/dist/server-health/index.d.cts +0 -58
  411. package/dist/server-helmet/index.cjs +0 -131
  412. package/dist/server-helmet/index.cjs.map +0 -1
  413. package/dist/server-helmet/index.d.cts +0 -97
  414. package/dist/server-links/index.cjs +0 -992
  415. package/dist/server-links/index.cjs.map +0 -1
  416. package/dist/server-links/index.d.cts +0 -513
  417. package/dist/server-metrics/index.cjs +0 -4535
  418. package/dist/server-metrics/index.cjs.map +0 -1
  419. package/dist/server-metrics/index.d.cts +0 -35
  420. package/dist/server-multipart/index.cjs +0 -237
  421. package/dist/server-multipart/index.cjs.map +0 -1
  422. package/dist/server-multipart/index.d.cts +0 -50
  423. package/dist/server-proxy/index.cjs +0 -186
  424. package/dist/server-proxy/index.cjs.map +0 -1
  425. package/dist/server-proxy/index.d.cts +0 -234
  426. package/dist/server-rate-limit/index.cjs +0 -241
  427. package/dist/server-rate-limit/index.cjs.map +0 -1
  428. package/dist/server-rate-limit/index.d.cts +0 -183
  429. package/dist/server-security/index.cjs +0 -316
  430. package/dist/server-security/index.cjs.map +0 -1
  431. package/dist/server-security/index.d.cts +0 -173
  432. package/dist/server-static/index.cjs +0 -170
  433. package/dist/server-static/index.cjs.map +0 -1
  434. package/dist/server-static/index.d.cts +0 -121
  435. package/dist/server-swagger/index.cjs +0 -1021
  436. package/dist/server-swagger/index.cjs.map +0 -1
  437. package/dist/server-swagger/index.d.cts +0 -382
  438. package/dist/sms/index.cjs +0 -221
  439. package/dist/sms/index.cjs.map +0 -1
  440. package/dist/sms/index.d.cts +0 -130
  441. package/dist/thread/index.cjs +0 -350
  442. package/dist/thread/index.cjs.map +0 -1
  443. package/dist/thread/index.d.cts +0 -260
  444. package/dist/topic/index.cjs +0 -282
  445. package/dist/topic/index.cjs.map +0 -1
  446. package/dist/topic/index.d.cts +0 -523
  447. package/dist/topic-redis/index.cjs +0 -71
  448. package/dist/topic-redis/index.cjs.map +0 -1
  449. package/dist/topic-redis/index.d.cts +0 -42
  450. package/dist/vite/index.cjs +0 -1077
  451. package/dist/vite/index.cjs.map +0 -1
  452. package/dist/vite/index.d.cts +0 -542
  453. package/dist/websocket/index.cjs +0 -1117
  454. package/dist/websocket/index.cjs.map +0 -1
  455. package/dist/websocket/index.d.cts +0 -861
  456. package/src/api-notifications/providers/MemorySmsProvider.ts +0 -20
  457. package/src/api-notifications/providers/SmsProvider.ts +0 -8
  458. /package/src/core/{descriptors → primitives}/$atom.ts +0 -0
  459. /package/src/core/{descriptors → primitives}/$env.ts +0 -0
  460. /package/src/server-auth/{descriptors → primitives}/$authApple.ts +0 -0
  461. /package/src/server-links/{descriptors → primitives}/$client.ts +0 -0
@@ -1,861 +0,0 @@
1
- import * as alepha42 from "alepha";
2
- import { Alepha, Descriptor, KIND, Static, TObject, TString, TUnion } from "alepha";
3
- import * as alepha_logger1 from "alepha/logger";
4
- import * as alepha_topic0 from "alepha/topic";
5
- import { IncomingMessage } from "node:http";
6
- import { WebSocket as WebSocket$1, WebSocketServer } from "ws";
7
-
8
- //#region src/websocket/descriptors/$channel.d.ts
9
- type TWSObject = TObject | TUnion;
10
- /**
11
- * Channel descriptor options
12
- */
13
- interface ChannelDescriptorOptions<TClient extends TWSObject, TServer extends TWSObject> {
14
- /**
15
- * WebSocket endpoint path (e.g., "/ws/chat")
16
- */
17
- path: string;
18
- /**
19
- * Optional description for documentation
20
- */
21
- description?: string;
22
- /**
23
- * Message schemas for bidirectional communication
24
- */
25
- schema: {
26
- /**
27
- * Optional room ID schema validation
28
- * Default: t.text() (any string)
29
- * Can be enforced at application level: t.uuid(), t.regex(/^[a-f0-9\-]{36}$/)
30
- */
31
- roomId?: TString;
32
- /**
33
- * Messages from server to client
34
- * This is what clients will receive
35
- */
36
- in: TClient;
37
- /**
38
- * Messages from client to server
39
- * This is what the server will receive
40
- */
41
- out: TServer;
42
- };
43
- }
44
- /**
45
- * Defines a WebSocket channel with specified client and server message schemas.
46
- *
47
- * Channels must be defined as class properties to be registered in the Alepha context.
48
- * They define the "vocabulary" for communication - the schema for messages flowing
49
- * in both directions (server→client and client→server).
50
- *
51
- * @example Server-side with $websocket
52
- * ```typescript
53
- * class ChatController {
54
- * // Channel must be defined inside a class
55
- * chatChannel = $channel({
56
- * path: "/ws/chat",
57
- * description: "Real-time chat channel",
58
- * schema: {
59
- * // Server → Client messages
60
- * in: t.union([
61
- * t.object({
62
- * type: t.const("append"),
63
- * content: t.text(),
64
- * username: t.text()
65
- * }),
66
- * t.object({
67
- * type: t.const("system"),
68
- * message: t.text()
69
- * })
70
- * ]),
71
- * // Client → Server messages
72
- * out: t.object({
73
- * content: t.text()
74
- * })
75
- * }
76
- * });
77
- *
78
- * chat = $websocket({
79
- * channel: this.chatChannel,
80
- * handler: async ({ message, reply }) => {
81
- * await reply({
82
- * message: { type: "append", content: message.content, username: "user" }
83
- * });
84
- * }
85
- * });
86
- * }
87
- * ```
88
- *
89
- * @example Browser-side with useRoom
90
- * ```typescript
91
- * // Define channel in a class for browser context
92
- * class ChatClient {
93
- * chatChannel = $channel({
94
- * path: "/ws/chat",
95
- * schema: { in: inSchema, out: outSchema }
96
- * });
97
- * }
98
- *
99
- * // Use in React component
100
- * function Chat() {
101
- * const client = useInject(ChatClient);
102
- * const chat = useRoom({ roomId: "lobby", channel: client.chatChannel, handler: ... }, []);
103
- * }
104
- * ```
105
- */
106
- declare const $channel: {
107
- <TClient extends TWSObject, TServer extends TWSObject>(options: ChannelDescriptorOptions<TClient, TServer>): ChannelDescriptor<TClient, TServer>;
108
- [KIND]: typeof ChannelDescriptor;
109
- };
110
- declare class ChannelDescriptor<TClient extends TWSObject, TServer extends TWSObject> extends Descriptor<ChannelDescriptorOptions<TClient, TServer>> {}
111
- //#endregion
112
- //#region src/websocket/interfaces/WebSocketInterfaces.d.ts
113
- /**
114
- * WebSocket connection interface
115
- */
116
- interface WebSocketConnection {
117
- /**
118
- * Unique connection ID
119
- */
120
- id: string;
121
- /**
122
- * User ID (if authenticated and security module is used)
123
- */
124
- userId?: string;
125
- /**
126
- * Room IDs that this connection is currently in
127
- */
128
- roomIds: string[];
129
- /**
130
- * Send a message to this connection
131
- */
132
- send(message: any): Promise<void>;
133
- /**
134
- * Close this connection
135
- */
136
- close(code?: number, reason?: string): Promise<void>;
137
- /**
138
- * Connection metadata (custom data)
139
- */
140
- metadata?: Record<string, any>;
141
- /**
142
- * Connection state
143
- */
144
- readyState: WebSocketState;
145
- }
146
- /**
147
- * WebSocket state enum
148
- */
149
- declare enum WebSocketState {
150
- CONNECTING = 0,
151
- OPEN = 1,
152
- CLOSING = 2,
153
- CLOSED = 3,
154
- }
155
- /**
156
- * WebSocket endpoint configuration (server-side)
157
- */
158
- interface WebSocketDescriptorOptions<TClient extends TWSObject, TServer extends TWSObject> {
159
- /**
160
- * Channel definition with schema and path
161
- */
162
- channel: ChannelDescriptor<TClient, TServer>;
163
- /**
164
- * Handler for incoming messages from clients
165
- */
166
- handler: WebSocketHandler<TClient, TServer>;
167
- /**
168
- * Optional connection handler (called when a client connects)
169
- */
170
- onConnect?: (params: {
171
- /**
172
- * Unique connection ID of the client
173
- */
174
- connectionId: string;
175
- /**
176
- * User ID of the connected client (if authenticated and security module is used)
177
- */
178
- userId?: string;
179
- /**
180
- * Room IDs that the client is connecting to
181
- */
182
- roomIds: string[];
183
- }) => Promise<void> | void;
184
- /**
185
- * Optional disconnection handler (called when a client disconnects)
186
- */
187
- onDisconnect?: (params: {
188
- /**
189
- * Unique connection ID of the client
190
- */
191
- connectionId: string;
192
- /**
193
- * User ID of the connected client (if authenticated and security module is used)
194
- */
195
- userId?: string;
196
- /**
197
- * Room IDs that the client was connected to
198
- */
199
- roomIds: string[];
200
- }) => Promise<void> | void;
201
- /**
202
- * Change WebSocket server provider (for custom implementations)
203
- */
204
- provider?: any;
205
- /**
206
- * Whether to enforce security (authentication, authorization) on this WebSocket endpoint
207
- * Requires alepha/security integration
208
- */
209
- secure?: boolean;
210
- /**
211
- * Limit number of connections per user (if authenticated)
212
- */
213
- maxConnectionsPerUser?: number;
214
- }
215
- /**
216
- * WebSocket message handler
217
- */
218
- type WebSocketHandler<TClient extends TWSObject, TServer extends TWSObject> = (context: WebSocketHandlerContext<TClient, TServer>) => Promise<void> | void;
219
- /**
220
- * WebSocket handler context
221
- */
222
- interface WebSocketHandlerContext<TClient extends TWSObject, TServer extends TWSObject> {
223
- /**
224
- * Unique connection ID of the client
225
- */
226
- connectionId: string;
227
- /**
228
- * User ID of the connected client (if authenticated and security module is used)
229
- */
230
- userId?: string;
231
- /**
232
- * Room ID that the client sent the message from
233
- */
234
- roomId: string;
235
- /**
236
- * The parsed and validated message from the client
237
- */
238
- message: Static<TServer>;
239
- /**
240
- * Reply function tailored to current context (connectionId, roomId)
241
- */
242
- reply: (options: {
243
- /**
244
- * Message to send
245
- */
246
- message: Static<TClient>;
247
- /**
248
- * Optional: specify room ID to send to (defaults to sender's room ID)
249
- */
250
- roomId?: string;
251
- /**
252
- * Optional: exclude the sender connection from receiving the message
253
- * Will populate exceptConnectionIds with sender connection ID behind the scenes
254
- */
255
- exceptSelf?: boolean;
256
- /**
257
- * Optional: exclude specific connection IDs from receiving the message
258
- */
259
- exceptConnectionIds?: string[];
260
- /**
261
- * Optional: exclude specific user IDs from receiving the message
262
- * Requires alepha/security integration
263
- */
264
- exceptUserIds?: string[];
265
- }) => Promise<void>;
266
- }
267
- /**
268
- * Emit options for sending messages from the server
269
- */
270
- interface EmitOptions<TClient extends TWSObject> {
271
- /**
272
- * Message to send to clients
273
- */
274
- message: Static<TClient>;
275
- /**
276
- * Room ID to send the message to
277
- */
278
- roomId?: string;
279
- /**
280
- * Room IDs to send the message to
281
- */
282
- roomIds?: string[];
283
- /**
284
- * User ID to send the message to (if authenticated)
285
- */
286
- userId?: string;
287
- /**
288
- * User IDs to send the message to (if authenticated)
289
- */
290
- userIds?: string[];
291
- /**
292
- * Connection ID to send the message to
293
- */
294
- connectionId?: string;
295
- /**
296
- * Connection IDs to send the message to
297
- */
298
- connectionIds?: string[];
299
- /**
300
- * Optional: exclude specific connection IDs from receiving the message
301
- */
302
- exceptConnectionIds?: string[];
303
- /**
304
- * Optional: exclude specific user IDs from receiving the message
305
- * Requires alepha/security integration
306
- */
307
- exceptUserIds?: string[];
308
- }
309
- //#endregion
310
- //#region src/websocket/providers/WebSocketServerProvider.d.ts
311
- /**
312
- * Abstract WebSocket server provider
313
- *
314
- * This class provides the base interface that must be implemented by
315
- * platform-specific providers (Node.js, Browser, etc.)
316
- */
317
- declare abstract class WebSocketServerProvider {
318
- /**
319
- * Register a WebSocket endpoint with its channel configuration
320
- */
321
- abstract registerEndpoint<TClient extends TWSObject, TServer extends TWSObject>(config: WebSocketDescriptorOptions<TClient, TServer>): void;
322
- /**
323
- * Emit a message to clients based on targeting criteria
324
- *
325
- * This method distributes messages across all server instances via pub/sub.
326
- */
327
- abstract emit<TClient extends TWSObject>(channelPath: string, options: EmitOptions<TClient>): Promise<void>;
328
- /**
329
- * Get all active connections (local to this server instance)
330
- */
331
- abstract getConnections(): WebSocketConnection[];
332
- /**
333
- * Get connections in a specific room (local to this server instance)
334
- */
335
- abstract getRoomConnections(roomId: string): WebSocketConnection[];
336
- /**
337
- * Get connections for a specific user (local to this server instance)
338
- */
339
- abstract getUserConnections(userId: string): WebSocketConnection[];
340
- /**
341
- * Close a specific connection
342
- */
343
- abstract closeConnection(connectionId: string, code?: number, reason?: string): Promise<void>;
344
- }
345
- //#endregion
346
- //#region src/websocket/descriptors/$websocket.d.ts
347
- /**
348
- * Defines a WebSocket server endpoint for a specific channel.
349
- *
350
- * Server-side only. Creates a WebSocket endpoint that:
351
- * - Accepts connections from clients
352
- * - Validates incoming messages against the channel schema
353
- * - Provides room-based messaging
354
- * - Integrates with alepha/security for authentication (optional)
355
- * - Supports horizontal scaling via alepha/topic
356
- *
357
- * @example
358
- * ```typescript
359
- * class ChatController {
360
- * chat = $websocket({
361
- * channel: chatChannel,
362
- * handler: async ({ connectionId, userId, roomId, message, reply }) => {
363
- * // Broadcast to all in room except sender
364
- * await reply({
365
- * message: {
366
- * type: "append",
367
- * username: userId,
368
- * content: message.content
369
- * },
370
- * exceptSelf: true
371
- * });
372
- * }
373
- * });
374
- *
375
- * async broadcastAnnouncement(roomId: string, text: string) {
376
- * await this.chat.emit({
377
- * roomId,
378
- * message: {
379
- * type: "append",
380
- * username: "System",
381
- * content: text
382
- * }
383
- * });
384
- * }
385
- * }
386
- * ```
387
- */
388
- declare const $websocket: {
389
- <TClient extends TWSObject, TServer extends TWSObject>(options: WebSocketDescriptorOptions<TClient, TServer>): WebSocketDescriptor<TClient, TServer>;
390
- [KIND]: typeof WebSocketDescriptor;
391
- };
392
- declare class WebSocketDescriptor<TClient extends TWSObject, TServer extends TWSObject> extends Descriptor<WebSocketDescriptorOptions<TClient, TServer>> {
393
- protected readonly webSocketServerProvider: WebSocketServerProvider;
394
- protected onInit(): void;
395
- /**
396
- * Emit message to clients
397
- *
398
- * Send messages from the server to connected clients based on targeting criteria.
399
- * Messages are distributed across all server instances via pub/sub.
400
- *
401
- * @example
402
- * ```typescript
403
- * // Send to specific room
404
- * await websocket.emit({
405
- * roomId: "room-123",
406
- * message: { type: "update", data: {...} }
407
- * });
408
- *
409
- * // Send to specific user (all their connections)
410
- * await websocket.emit({
411
- * userId: "user-456",
412
- * message: { type: "notification", text: "Hello!" }
413
- * });
414
- *
415
- * // Send to multiple rooms, except certain users
416
- * await websocket.emit({
417
- * roomIds: ["room-1", "room-2"],
418
- * exceptUserIds: ["user-123"],
419
- * message: { type: "broadcast", content: "System announcement" }
420
- * });
421
- * ```
422
- */
423
- emit(options: EmitOptions<TClient>): Promise<void>;
424
- }
425
- //#endregion
426
- //#region src/websocket/errors/WebSocketError.d.ts
427
- /**
428
- * Base WebSocket error class
429
- */
430
- declare class WebSocketError extends Error {
431
- readonly code?: number | undefined;
432
- constructor(message: string, code?: number | undefined);
433
- }
434
- /**
435
- * Error thrown when WebSocket connection fails
436
- */
437
- declare class WebSocketConnectionError extends WebSocketError {
438
- constructor(message: string, code?: number);
439
- }
440
- /**
441
- * Error thrown when WebSocket message validation fails
442
- */
443
- declare class WebSocketValidationError extends WebSocketError {
444
- constructor(message: string);
445
- }
446
- //#endregion
447
- //#region src/websocket/services/RoomManager.d.ts
448
- /**
449
- * Manages WebSocket room memberships
450
- *
451
- * Rooms are logical groupings of connections. A connection can be in multiple rooms,
452
- * and messages can be targeted to specific rooms.
453
- */
454
- declare class RoomManager {
455
- protected readonly log: alepha_logger1.Logger;
456
- /**
457
- * Maps roomId → Set<connectionId>
458
- */
459
- protected readonly rooms: Map<string, Set<string>>;
460
- /**
461
- * Maps connectionId → Set<roomId>
462
- * Inverse index for fast lookup of connection's rooms
463
- */
464
- protected readonly connectionRooms: Map<string, Set<string>>;
465
- /**
466
- * Join a connection to one or more rooms
467
- */
468
- joinRooms(connectionId: string, roomIds: string[]): void;
469
- /**
470
- * Join a connection to a room
471
- */
472
- joinRoom(connectionId: string, roomId: string): void;
473
- /**
474
- * Leave a connection from a room
475
- */
476
- leaveRoom(connectionId: string, roomId: string): void;
477
- /**
478
- * Remove a connection from all rooms
479
- */
480
- leaveAllRooms(connectionId: string): void;
481
- /**
482
- * Get all connection IDs in a room
483
- */
484
- getRoomConnections(roomId: string): string[];
485
- /**
486
- * Get all room IDs for a connection
487
- */
488
- getConnectionRooms(connectionId: string): string[];
489
- /**
490
- * Check if a connection is in a room
491
- */
492
- isInRoom(connectionId: string, roomId: string): boolean;
493
- /**
494
- * Get all active rooms
495
- */
496
- getAllRooms(): string[];
497
- /**
498
- * Get total number of connections across all rooms
499
- */
500
- getTotalConnections(): number;
501
- /**
502
- * Get room statistics
503
- */
504
- getStats(): {
505
- totalRooms: number;
506
- totalConnections: number;
507
- roomSizes: Map<string, number>;
508
- };
509
- }
510
- //#endregion
511
- //#region src/websocket/services/WebSocketClient.d.ts
512
- declare const envSchema$1: alepha42.TObject<{
513
- WEBSOCKET_URL: alepha42.TString;
514
- WEBSOCKET_RECONNECT_INTERVAL: alepha42.TInteger;
515
- WEBSOCKET_MAX_RECONNECT_ATTEMPTS: alepha42.TInteger;
516
- }>;
517
- declare module "alepha" {
518
- interface Env extends Partial<Static<typeof envSchema$1>> {}
519
- }
520
- /**
521
- * WebSocket channel connection
522
- *
523
- * Manages a single WebSocket connection to a channel with multiple room subscriptions.
524
- * One connection can handle multiple rooms on the same channel.
525
- */
526
- declare class WebSocketChannelConnection<TClient extends TWSObject, TServer extends TWSObject> {
527
- protected readonly channel: ChannelDescriptor<TClient, TServer>;
528
- protected readonly options: {
529
- url?: string;
530
- autoReconnect?: boolean;
531
- reconnectInterval?: number;
532
- maxReconnectAttempts?: number;
533
- };
534
- protected readonly env: Static<typeof envSchema$1>;
535
- protected readonly alepha: Alepha;
536
- protected readonly log: alepha_logger1.Logger;
537
- protected ws?: WebSocket;
538
- protected reconnectAttempts: number;
539
- protected reconnectTimer?: number;
540
- protected messageQueue: Array<{
541
- roomId: string;
542
- message: Static<TServer>;
543
- }>;
544
- protected subscriptions: Map<string, (message: Static<TClient>) => void>;
545
- isConnected: boolean;
546
- isConnecting: boolean;
547
- isError: boolean;
548
- error?: Error;
549
- protected onConnectCallbacks: Set<() => void>;
550
- protected onDisconnectCallbacks: Set<() => void>;
551
- protected onErrorCallbacks: Set<(error: Error) => void>;
552
- constructor(channel: ChannelDescriptor<TClient, TServer>, options: {
553
- url?: string;
554
- autoReconnect?: boolean;
555
- reconnectInterval?: number;
556
- maxReconnectAttempts?: number;
557
- }, env: Static<typeof envSchema$1>);
558
- /**
559
- * Build WebSocket URL
560
- */
561
- protected buildUrl(): string;
562
- /**
563
- * Subscribe to a room on this channel
564
- */
565
- subscribe(roomId: string, handler: (message: Static<TClient>) => void, callbacks?: {
566
- onConnect?: () => void;
567
- onDisconnect?: () => void;
568
- onError?: (error: Error) => void;
569
- }): () => void;
570
- /**
571
- * Connect to WebSocket server
572
- */
573
- protected connect(): Promise<void>;
574
- /**
575
- * Handle incoming message
576
- */
577
- protected handleMessage(data: string): void;
578
- /**
579
- * Send message to a specific room
580
- */
581
- send(roomId: string, message: Static<TServer>): Promise<void>;
582
- /**
583
- * Schedule reconnection
584
- */
585
- protected scheduleReconnect(): void;
586
- /**
587
- * Disconnect from server
588
- */
589
- disconnect(): void;
590
- /**
591
- * Reconnect manually
592
- */
593
- reconnect(): void;
594
- /**
595
- * Check if subscribed to a room
596
- */
597
- hasRoom(roomId: string): boolean;
598
- /**
599
- * Get all subscribed rooms
600
- */
601
- getRooms(): string[];
602
- }
603
- /**
604
- * WebSocket Client Service
605
- *
606
- * Manages WebSocket connections from the client side (browser).
607
- * One connection per channel, multiple rooms per connection.
608
- */
609
- declare class WebSocketClient {
610
- protected readonly log: alepha_logger1.Logger;
611
- protected readonly alepha: Alepha;
612
- protected readonly env: {
613
- WEBSOCKET_URL: string;
614
- WEBSOCKET_RECONNECT_INTERVAL: number;
615
- WEBSOCKET_MAX_RECONNECT_ATTEMPTS: number;
616
- };
617
- protected connections: Map<string, WebSocketChannelConnection<any, any>>;
618
- /**
619
- * Subscribe to a room on a channel
620
- */
621
- subscribe<TClient extends TWSObject, TServer extends TWSObject>(roomId: string, channel: ChannelDescriptor<TClient, TServer>, handler: (message: Static<TClient>) => void, options?: {
622
- url?: string;
623
- autoReconnect?: boolean;
624
- reconnectInterval?: number;
625
- maxReconnectAttempts?: number;
626
- onConnect?: () => void;
627
- onDisconnect?: () => void;
628
- onError?: (error: Error) => void;
629
- }): () => void;
630
- /**
631
- * Send message to a room on a channel
632
- */
633
- send<TClient extends TWSObject, TServer extends TWSObject>(roomId: string, channel: ChannelDescriptor<TClient, TServer>, message: Static<TServer>): Promise<void>;
634
- /**
635
- * Get connection for a channel
636
- */
637
- getConnection<TClient extends TWSObject, TServer extends TWSObject>(channel: ChannelDescriptor<TClient, TServer>): WebSocketChannelConnection<TClient, TServer> | undefined;
638
- /**
639
- * Disconnect all connections
640
- */
641
- disconnectAll(): void;
642
- }
643
- //#endregion
644
- //#region src/websocket/services/WebSocketTopicService.d.ts
645
- /**
646
- * WebSocket message distribution event
647
- */
648
- declare const webSocketMessageSchema: {
649
- payload: alepha42.TObject<{
650
- /**
651
- * Channel path (e.g., "/ws/chat")
652
- */
653
- channelPath: alepha42.TString;
654
- /**
655
- * Target room ID(s)
656
- */
657
- roomIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
658
- /**
659
- * Target user ID(s)
660
- */
661
- userIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
662
- /**
663
- * Target connection ID(s)
664
- */
665
- connectionIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
666
- /**
667
- * Exclude connection ID(s) from receiving the message
668
- */
669
- exceptConnectionIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
670
- /**
671
- * Exclude user ID(s) from receiving the message
672
- */
673
- exceptUserIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
674
- /**
675
- * The message payload to send
676
- */
677
- message: alepha42.TAny;
678
- }>;
679
- };
680
- /**
681
- * WebSocket Topic Service
682
- *
683
- * Manages pub/sub messaging for WebSocket connections across multiple server instances.
684
- * Uses alepha/topic for cross-instance message distribution, enabling horizontal scaling.
685
- *
686
- * When a WebSocket message needs to be sent:
687
- * 1. Server instance A publishes to the topic
688
- * 2. All server instances (A, B, C, etc.) receive the message
689
- * 3. Each instance sends to its local connections that match the criteria
690
- *
691
- * This enables:
692
- * - Multiple server instances handling WebSocket connections
693
- * - Redis-backed message distribution (with alepha/topic/redis)
694
- * - Horizontal scaling without losing messages
695
- */
696
- declare class WebSocketTopicService {
697
- protected readonly log: alepha_logger1.Logger;
698
- /**
699
- * Handler function to be called when a message is received from the topic
700
- * This is set by the WebSocket provider during initialization
701
- */
702
- messageHandler?: (event: Static<(typeof webSocketMessageSchema)["payload"]>) => Promise<void>;
703
- /**
704
- * Topic for distributing WebSocket messages across server instances
705
- */
706
- readonly topic: alepha_topic0.TopicDescriptor<{
707
- payload: alepha42.TObject<{
708
- /**
709
- * Channel path (e.g., "/ws/chat")
710
- */
711
- channelPath: alepha42.TString;
712
- /**
713
- * Target room ID(s)
714
- */
715
- roomIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
716
- /**
717
- * Target user ID(s)
718
- */
719
- userIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
720
- /**
721
- * Target connection ID(s)
722
- */
723
- connectionIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
724
- /**
725
- * Exclude connection ID(s) from receiving the message
726
- */
727
- exceptConnectionIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
728
- /**
729
- * Exclude user ID(s) from receiving the message
730
- */
731
- exceptUserIds: alepha42.TOptional<alepha42.TArray<alepha42.TString>>;
732
- /**
733
- * The message payload to send
734
- */
735
- message: alepha42.TAny;
736
- }>;
737
- }>;
738
- /**
739
- * Publish a message to be distributed across all server instances
740
- */
741
- publish(event: Static<(typeof webSocketMessageSchema)["payload"]>): Promise<void>;
742
- /**
743
- * Set the handler for incoming messages
744
- */
745
- setMessageHandler(handler: (event: Static<(typeof webSocketMessageSchema)["payload"]>) => Promise<void>): void;
746
- }
747
- //#endregion
748
- //#region src/websocket/providers/NodeWebSocketServerProvider.d.ts
749
- declare const envSchema: alepha42.TObject<{
750
- WEBSOCKET_PATH: alepha42.TString;
751
- }>;
752
- declare module "alepha" {
753
- interface Env extends Partial<Static<typeof envSchema>> {}
754
- }
755
- declare class NodeWebSocketServerProvider extends WebSocketServerProvider {
756
- protected readonly alepha: Alepha;
757
- protected readonly roomManager: RoomManager;
758
- protected readonly topicService: WebSocketTopicService;
759
- protected readonly log: alepha_logger1.Logger;
760
- protected readonly env: {
761
- WEBSOCKET_PATH: string;
762
- };
763
- protected wss?: WebSocketServer;
764
- protected endpoints: Map<string, WebSocketDescriptorOptions<any, any>>;
765
- protected connections: Map<string, WebSocketConnection>;
766
- protected userConnections: Map<string, Set<string>>;
767
- protected nextConnectionId: number;
768
- registerEndpoint<TClient extends TWSObject, TServer extends TWSObject>(config: WebSocketDescriptorOptions<TClient, TServer>): void;
769
- emit<TClient extends TWSObject>(channelPath: string, options: EmitOptions<TClient>): Promise<void>;
770
- getConnections(): WebSocketConnection[];
771
- getRoomConnections(roomId: string): WebSocketConnection[];
772
- getUserConnections(userId: string): WebSocketConnection[];
773
- closeConnection(connectionId: string, code?: number, reason?: string): Promise<void>;
774
- protected handleUpgrade(request: IncomingMessage, socket: any, head: Buffer): boolean;
775
- protected handleConnection<TClient extends TWSObject, TServer extends TWSObject>(ws: WebSocket$1, endpoint: WebSocketDescriptorOptions<TClient, TServer>, request: IncomingMessage): void;
776
- protected extractRoomIds(url: URL): string[];
777
- /**
778
- * Send message to local connections based on targeting criteria
779
- * This is called by the topic service when a message is received
780
- */
781
- protected sendToLocalConnections(channelPath: string, message: any, criteria: {
782
- roomIds?: string[];
783
- userIds?: string[];
784
- connectionIds?: string[];
785
- exceptConnectionIds?: string[];
786
- exceptUserIds?: string[];
787
- }): Promise<void>;
788
- protected readonly start: alepha42.HookDescriptor<"start">;
789
- protected readonly ready: alepha42.HookDescriptor<"ready">;
790
- protected readonly stop: alepha42.HookDescriptor<"stop">;
791
- }
792
- declare class NodeWebSocketConnection implements WebSocketConnection {
793
- readonly id: string;
794
- readonly userId: string | undefined;
795
- readonly roomIds: string[];
796
- protected readonly ws: WebSocket$1;
797
- protected readonly provider: NodeWebSocketServerProvider;
798
- protected readonly endpoint: WebSocketDescriptorOptions<any, any>;
799
- protected readonly log: alepha_logger1.Logger;
800
- metadata?: Record<string, any>;
801
- constructor(id: string, userId: string | undefined, roomIds: string[], ws: WebSocket$1, provider: NodeWebSocketServerProvider, endpoint: WebSocketDescriptorOptions<any, any>);
802
- get readyState(): WebSocketState;
803
- send(message: any): Promise<void>;
804
- close(code?: number, reason?: string): Promise<void>;
805
- handleMessage(data: any): Promise<void>;
806
- }
807
- //#endregion
808
- //#region src/websocket/index.d.ts
809
- declare module "alepha" {
810
- interface Hooks {
811
- /**
812
- * Fires when a WebSocket connection is established
813
- */
814
- "websocket:connect": {
815
- connectionId: string;
816
- path: string;
817
- };
818
- /**
819
- * Fires when a WebSocket connection is closed
820
- */
821
- "websocket:disconnect": {
822
- connectionId: string;
823
- path: string;
824
- code?: number;
825
- reason?: string;
826
- };
827
- /**
828
- * Fires when a WebSocket message is received
829
- */
830
- "websocket:message": {
831
- connectionId: string;
832
- path: string;
833
- message: any;
834
- };
835
- /**
836
- * Fires when a WebSocket error occurs
837
- */
838
- "websocket:error": {
839
- connectionId: string;
840
- path: string;
841
- error: Error;
842
- };
843
- }
844
- }
845
- /**
846
- * Provides real-time bidirectional communication using WebSockets.
847
- *
848
- * The WebSockets module enables building real-time applications using the `$websocket` descriptor
849
- * on class properties. It provides automatic connection management, message routing, type-safe
850
- * message handling, and seamless integration with other Alepha modules.
851
- *
852
- * On the server side (Node.js), it uses the 'ws' library to create a WebSocket server.
853
- * On the client side (browser), it uses the native WebSocket API.
854
- *
855
- * @see {@link $websocket}
856
- * @module alepha.websockets
857
- */
858
- declare const AlephaWebSocket: alepha42.Service<alepha42.Module>;
859
- //#endregion
860
- export { $channel, $websocket, AlephaWebSocket, ChannelDescriptor, ChannelDescriptorOptions, EmitOptions, NodeWebSocketConnection, NodeWebSocketServerProvider, RoomManager, TWSObject, WebSocketChannelConnection, WebSocketClient, WebSocketConnection, WebSocketConnectionError, WebSocketDescriptor, WebSocketDescriptorOptions, WebSocketError, WebSocketHandler, WebSocketHandlerContext, WebSocketServerProvider, WebSocketState, WebSocketTopicService, WebSocketValidationError };
861
- //# sourceMappingURL=index.d.cts.map