alepha 0.15.0 → 0.15.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 (551) hide show
  1. package/README.md +43 -98
  2. package/dist/api/audits/index.d.ts +630 -653
  3. package/dist/api/audits/index.d.ts.map +1 -1
  4. package/dist/api/audits/index.js +12 -35
  5. package/dist/api/audits/index.js.map +1 -1
  6. package/dist/api/files/index.d.ts +365 -358
  7. package/dist/api/files/index.d.ts.map +1 -1
  8. package/dist/api/files/index.js +12 -5
  9. package/dist/api/files/index.js.map +1 -1
  10. package/dist/api/jobs/index.d.ts +255 -248
  11. package/dist/api/jobs/index.d.ts.map +1 -1
  12. package/dist/api/jobs/index.js +10 -3
  13. package/dist/api/jobs/index.js.map +1 -1
  14. package/dist/api/keys/index.d.ts +413 -0
  15. package/dist/api/keys/index.d.ts.map +1 -0
  16. package/dist/api/keys/index.js +476 -0
  17. package/dist/api/keys/index.js.map +1 -0
  18. package/dist/api/notifications/index.browser.js +4 -4
  19. package/dist/api/notifications/index.browser.js.map +1 -1
  20. package/dist/api/notifications/index.d.ts +84 -78
  21. package/dist/api/notifications/index.d.ts.map +1 -1
  22. package/dist/api/notifications/index.js +14 -8
  23. package/dist/api/notifications/index.js.map +1 -1
  24. package/dist/api/parameters/index.d.ts +528 -535
  25. package/dist/api/parameters/index.d.ts.map +1 -1
  26. package/dist/api/parameters/index.js +30 -37
  27. package/dist/api/parameters/index.js.map +1 -1
  28. package/dist/api/users/index.d.ts +1221 -910
  29. package/dist/api/users/index.d.ts.map +1 -1
  30. package/dist/api/users/index.js +2556 -248
  31. package/dist/api/users/index.js.map +1 -1
  32. package/dist/api/verifications/index.d.ts +142 -136
  33. package/dist/api/verifications/index.d.ts.map +1 -1
  34. package/dist/api/verifications/index.js +12 -4
  35. package/dist/api/verifications/index.js.map +1 -1
  36. package/dist/batch/index.d.ts +142 -162
  37. package/dist/batch/index.d.ts.map +1 -1
  38. package/dist/batch/index.js +31 -44
  39. package/dist/batch/index.js.map +1 -1
  40. package/dist/bucket/index.d.ts +595 -171
  41. package/dist/bucket/index.d.ts.map +1 -1
  42. package/dist/bucket/index.js +1856 -12
  43. package/dist/bucket/index.js.map +1 -1
  44. package/dist/cache/core/index.d.ts +225 -53
  45. package/dist/cache/core/index.d.ts.map +1 -1
  46. package/dist/cache/core/index.js +213 -7
  47. package/dist/cache/core/index.js.map +1 -1
  48. package/dist/cache/redis/index.d.ts +1 -0
  49. package/dist/cache/redis/index.d.ts.map +1 -1
  50. package/dist/cache/redis/index.js +6 -2
  51. package/dist/cache/redis/index.js.map +1 -1
  52. package/dist/cli/index.d.ts +834 -226
  53. package/dist/cli/index.d.ts.map +1 -1
  54. package/dist/cli/index.js +2872 -417
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/command/index.d.ts +458 -310
  57. package/dist/command/index.d.ts.map +1 -1
  58. package/dist/command/index.js +2011 -76
  59. package/dist/command/index.js.map +1 -1
  60. package/dist/core/index.browser.js +309 -97
  61. package/dist/core/index.browser.js.map +1 -1
  62. package/dist/core/index.d.ts +796 -701
  63. package/dist/core/index.d.ts.map +1 -1
  64. package/dist/core/index.js +329 -97
  65. package/dist/core/index.js.map +1 -1
  66. package/dist/core/index.native.js +309 -97
  67. package/dist/core/index.native.js.map +1 -1
  68. package/dist/datetime/index.d.ts +59 -44
  69. package/dist/datetime/index.d.ts.map +1 -1
  70. package/dist/datetime/index.js +15 -0
  71. package/dist/datetime/index.js.map +1 -1
  72. package/dist/email/index.d.ts +314 -19
  73. package/dist/email/index.d.ts.map +1 -1
  74. package/dist/email/index.js +1852 -7
  75. package/dist/email/index.js.map +1 -1
  76. package/dist/fake/index.d.ts +5500 -5418
  77. package/dist/fake/index.d.ts.map +1 -1
  78. package/dist/fake/index.js +113 -42
  79. package/dist/fake/index.js.map +1 -1
  80. package/dist/lock/core/index.d.ts +219 -212
  81. package/dist/lock/core/index.d.ts.map +1 -1
  82. package/dist/lock/core/index.js +11 -4
  83. package/dist/lock/core/index.js.map +1 -1
  84. package/dist/lock/redis/index.d.ts.map +1 -1
  85. package/dist/logger/index.d.ts +41 -90
  86. package/dist/logger/index.d.ts.map +1 -1
  87. package/dist/logger/index.js +15 -68
  88. package/dist/logger/index.js.map +1 -1
  89. package/dist/mcp/index.d.ts +228 -230
  90. package/dist/mcp/index.d.ts.map +1 -1
  91. package/dist/mcp/index.js +32 -31
  92. package/dist/mcp/index.js.map +1 -1
  93. package/dist/orm/index.browser.js +12 -12
  94. package/dist/orm/index.browser.js.map +1 -1
  95. package/dist/orm/index.bun.js +90 -80
  96. package/dist/orm/index.bun.js.map +1 -1
  97. package/dist/orm/index.d.ts +1434 -1459
  98. package/dist/orm/index.d.ts.map +1 -1
  99. package/dist/orm/index.js +112 -130
  100. package/dist/orm/index.js.map +1 -1
  101. package/dist/queue/core/index.d.ts +262 -254
  102. package/dist/queue/core/index.d.ts.map +1 -1
  103. package/dist/queue/core/index.js +14 -6
  104. package/dist/queue/core/index.js.map +1 -1
  105. package/dist/queue/redis/index.d.ts.map +1 -1
  106. package/dist/react/auth/index.browser.js +108 -0
  107. package/dist/react/auth/index.browser.js.map +1 -0
  108. package/dist/react/auth/index.d.ts +100 -0
  109. package/dist/react/auth/index.d.ts.map +1 -0
  110. package/dist/react/auth/index.js +145 -0
  111. package/dist/react/auth/index.js.map +1 -0
  112. package/dist/react/core/index.d.ts +469 -0
  113. package/dist/react/core/index.d.ts.map +1 -0
  114. package/dist/react/core/index.js +464 -0
  115. package/dist/react/core/index.js.map +1 -0
  116. package/dist/react/form/index.d.ts +232 -0
  117. package/dist/react/form/index.d.ts.map +1 -0
  118. package/dist/react/form/index.js +432 -0
  119. package/dist/react/form/index.js.map +1 -0
  120. package/dist/react/head/index.browser.js +423 -0
  121. package/dist/react/head/index.browser.js.map +1 -0
  122. package/dist/react/head/index.d.ts +288 -0
  123. package/dist/react/head/index.d.ts.map +1 -0
  124. package/dist/react/head/index.js +465 -0
  125. package/dist/react/head/index.js.map +1 -0
  126. package/dist/react/i18n/index.d.ts +175 -0
  127. package/dist/react/i18n/index.d.ts.map +1 -0
  128. package/dist/react/i18n/index.js +224 -0
  129. package/dist/react/i18n/index.js.map +1 -0
  130. package/dist/react/router/index.browser.js +1980 -0
  131. package/dist/react/router/index.browser.js.map +1 -0
  132. package/dist/react/router/index.d.ts +2068 -0
  133. package/dist/react/router/index.d.ts.map +1 -0
  134. package/dist/react/router/index.js +4932 -0
  135. package/dist/react/router/index.js.map +1 -0
  136. package/dist/react/websocket/index.d.ts +117 -0
  137. package/dist/react/websocket/index.d.ts.map +1 -0
  138. package/dist/react/websocket/index.js +107 -0
  139. package/dist/react/websocket/index.js.map +1 -0
  140. package/dist/redis/index.bun.js +4 -0
  141. package/dist/redis/index.bun.js.map +1 -1
  142. package/dist/redis/index.d.ts +127 -130
  143. package/dist/redis/index.d.ts.map +1 -1
  144. package/dist/redis/index.js +16 -25
  145. package/dist/redis/index.js.map +1 -1
  146. package/dist/retry/index.d.ts +80 -71
  147. package/dist/retry/index.d.ts.map +1 -1
  148. package/dist/retry/index.js +11 -2
  149. package/dist/retry/index.js.map +1 -1
  150. package/dist/router/index.d.ts +6 -6
  151. package/dist/router/index.d.ts.map +1 -1
  152. package/dist/scheduler/index.d.ts +119 -28
  153. package/dist/scheduler/index.d.ts.map +1 -1
  154. package/dist/scheduler/index.js +404 -3
  155. package/dist/scheduler/index.js.map +1 -1
  156. package/dist/security/index.d.ts +642 -228
  157. package/dist/security/index.d.ts.map +1 -1
  158. package/dist/security/index.js +1579 -37
  159. package/dist/security/index.js.map +1 -1
  160. package/dist/server/auth/index.d.ts +1141 -111
  161. package/dist/server/auth/index.d.ts.map +1 -1
  162. package/dist/server/auth/index.js +1261 -25
  163. package/dist/server/auth/index.js.map +1 -1
  164. package/dist/server/cache/index.d.ts +63 -78
  165. package/dist/server/cache/index.d.ts.map +1 -1
  166. package/dist/server/cache/index.js +7 -22
  167. package/dist/server/cache/index.js.map +1 -1
  168. package/dist/server/compress/index.d.ts +13 -5
  169. package/dist/server/compress/index.d.ts.map +1 -1
  170. package/dist/server/compress/index.js +10 -2
  171. package/dist/server/compress/index.js.map +1 -1
  172. package/dist/server/cookies/index.d.ts +46 -22
  173. package/dist/server/cookies/index.d.ts.map +1 -1
  174. package/dist/server/cookies/index.js +7 -5
  175. package/dist/server/cookies/index.js.map +1 -1
  176. package/dist/server/core/index.d.ts +307 -196
  177. package/dist/server/core/index.d.ts.map +1 -1
  178. package/dist/server/core/index.js +271 -38
  179. package/dist/server/core/index.js.map +1 -1
  180. package/dist/server/cors/index.d.ts +24 -34
  181. package/dist/server/cors/index.d.ts.map +1 -1
  182. package/dist/server/cors/index.js +7 -21
  183. package/dist/server/cors/index.js.map +1 -1
  184. package/dist/server/health/index.d.ts +25 -19
  185. package/dist/server/health/index.d.ts.map +1 -1
  186. package/dist/server/health/index.js +8 -2
  187. package/dist/server/health/index.js.map +1 -1
  188. package/dist/server/helmet/index.d.ts +13 -5
  189. package/dist/server/helmet/index.d.ts.map +1 -1
  190. package/dist/server/helmet/index.js +11 -3
  191. package/dist/server/helmet/index.js.map +1 -1
  192. package/dist/server/links/index.browser.js +9 -1
  193. package/dist/server/links/index.browser.js.map +1 -1
  194. package/dist/server/links/index.d.ts +133 -128
  195. package/dist/server/links/index.d.ts.map +1 -1
  196. package/dist/server/links/index.js +24 -11
  197. package/dist/server/links/index.js.map +1 -1
  198. package/dist/server/metrics/index.d.ts +524 -4
  199. package/dist/server/metrics/index.d.ts.map +1 -1
  200. package/dist/server/metrics/index.js +4472 -7
  201. package/dist/server/metrics/index.js.map +1 -1
  202. package/dist/server/multipart/index.d.ts +15 -9
  203. package/dist/server/multipart/index.d.ts.map +1 -1
  204. package/dist/server/multipart/index.js +9 -3
  205. package/dist/server/multipart/index.js.map +1 -1
  206. package/dist/server/proxy/index.d.ts +110 -104
  207. package/dist/server/proxy/index.d.ts.map +1 -1
  208. package/dist/server/proxy/index.js +8 -2
  209. package/dist/server/proxy/index.js.map +1 -1
  210. package/dist/server/rate-limit/index.d.ts +46 -51
  211. package/dist/server/rate-limit/index.d.ts.map +1 -1
  212. package/dist/server/rate-limit/index.js +18 -55
  213. package/dist/server/rate-limit/index.js.map +1 -1
  214. package/dist/server/static/index.d.ts +181 -48
  215. package/dist/server/static/index.d.ts.map +1 -1
  216. package/dist/server/static/index.js +1848 -5
  217. package/dist/server/static/index.js.map +1 -1
  218. package/dist/server/swagger/index.d.ts +348 -53
  219. package/dist/server/swagger/index.d.ts.map +1 -1
  220. package/dist/server/swagger/index.js +1849 -6
  221. package/dist/server/swagger/index.js.map +1 -1
  222. package/dist/sms/index.d.ts +312 -18
  223. package/dist/sms/index.d.ts.map +1 -1
  224. package/dist/sms/index.js +1854 -10
  225. package/dist/sms/index.js.map +1 -1
  226. package/dist/system/index.browser.js +496 -0
  227. package/dist/system/index.browser.js.map +1 -0
  228. package/dist/system/index.d.ts +1158 -0
  229. package/dist/system/index.d.ts.map +1 -0
  230. package/dist/{file → system}/index.js +412 -20
  231. package/dist/system/index.js.map +1 -0
  232. package/dist/thread/index.d.ts +82 -73
  233. package/dist/thread/index.d.ts.map +1 -1
  234. package/dist/thread/index.js +13 -4
  235. package/dist/thread/index.js.map +1 -1
  236. package/dist/topic/core/index.d.ts +330 -323
  237. package/dist/topic/core/index.d.ts.map +1 -1
  238. package/dist/topic/core/index.js +12 -5
  239. package/dist/topic/core/index.js.map +1 -1
  240. package/dist/topic/redis/index.d.ts +6 -6
  241. package/dist/topic/redis/index.d.ts.map +1 -1
  242. package/dist/vite/index.d.ts +163 -5825
  243. package/dist/vite/index.d.ts.map +1 -1
  244. package/dist/vite/index.js +130 -477
  245. package/dist/vite/index.js.map +1 -1
  246. package/dist/websocket/index.browser.js +3 -3
  247. package/dist/websocket/index.browser.js.map +1 -1
  248. package/dist/websocket/index.d.ts +287 -283
  249. package/dist/websocket/index.d.ts.map +1 -1
  250. package/dist/websocket/index.js +15 -11
  251. package/dist/websocket/index.js.map +1 -1
  252. package/package.json +86 -17
  253. package/src/api/audits/index.ts +10 -33
  254. package/src/api/files/__tests__/$bucket.spec.ts +1 -1
  255. package/src/api/files/controllers/AdminFileStatsController.spec.ts +1 -1
  256. package/src/api/files/controllers/FileController.spec.ts +1 -1
  257. package/src/api/files/index.ts +10 -3
  258. package/src/api/files/jobs/FileJobs.spec.ts +1 -1
  259. package/src/api/files/services/FileService.spec.ts +1 -1
  260. package/src/api/jobs/index.ts +10 -3
  261. package/src/api/keys/controllers/AdminApiKeyController.ts +75 -0
  262. package/src/api/keys/controllers/ApiKeyController.ts +103 -0
  263. package/src/api/keys/entities/apiKeyEntity.ts +41 -0
  264. package/src/api/keys/index.ts +49 -0
  265. package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +7 -0
  266. package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +17 -0
  267. package/src/api/keys/schemas/createApiKeyBodySchema.ts +7 -0
  268. package/src/api/keys/schemas/createApiKeyResponseSchema.ts +11 -0
  269. package/src/api/keys/schemas/listApiKeyResponseSchema.ts +15 -0
  270. package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +5 -0
  271. package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +5 -0
  272. package/src/api/keys/services/ApiKeyService.spec.ts +553 -0
  273. package/src/api/keys/services/ApiKeyService.ts +306 -0
  274. package/src/api/logs/TODO.md +52 -0
  275. package/src/api/notifications/index.ts +10 -4
  276. package/src/api/parameters/index.ts +9 -30
  277. package/src/api/parameters/primitives/$config.ts +12 -4
  278. package/src/api/parameters/services/ConfigStore.ts +9 -3
  279. package/src/api/users/__tests__/ApiKeys-integration.spec.ts +1035 -0
  280. package/src/api/users/__tests__/ApiKeys.spec.ts +401 -0
  281. package/src/api/users/index.ts +14 -3
  282. package/src/api/users/primitives/$realm.ts +33 -5
  283. package/src/api/users/providers/RealmProvider.ts +1 -12
  284. package/src/api/users/services/SessionService.ts +1 -11
  285. package/src/api/verifications/controllers/VerificationController.ts +2 -0
  286. package/src/api/verifications/index.ts +10 -4
  287. package/src/batch/index.ts +9 -36
  288. package/src/batch/primitives/$batch.ts +0 -8
  289. package/src/batch/providers/BatchProvider.ts +29 -2
  290. package/src/bucket/__tests__/shared.ts +1 -1
  291. package/src/bucket/index.ts +13 -6
  292. package/src/bucket/primitives/$bucket.ts +1 -1
  293. package/src/bucket/providers/LocalFileStorageProvider.ts +1 -1
  294. package/src/bucket/providers/MemoryFileStorageProvider.ts +1 -1
  295. package/src/cache/core/__tests__/shared.ts +30 -0
  296. package/src/cache/core/index.ts +11 -6
  297. package/src/cache/core/primitives/$cache.spec.ts +5 -0
  298. package/src/cache/core/providers/CacheProvider.ts +17 -0
  299. package/src/cache/core/providers/MemoryCacheProvider.ts +300 -1
  300. package/src/cache/redis/__tests__/cache-redis.spec.ts +5 -0
  301. package/src/cache/redis/providers/RedisCacheProvider.ts +9 -0
  302. package/src/cli/apps/AlephaCli.ts +3 -16
  303. package/src/cli/apps/AlephaPackageBuilderCli.ts +10 -2
  304. package/src/cli/atoms/appEntryOptions.ts +13 -0
  305. package/src/cli/atoms/buildOptions.ts +1 -1
  306. package/src/cli/atoms/changelogOptions.ts +1 -1
  307. package/src/cli/commands/build.ts +64 -52
  308. package/src/cli/commands/db.ts +17 -11
  309. package/src/cli/commands/deploy.ts +1 -1
  310. package/src/cli/commands/dev.ts +13 -49
  311. package/src/cli/commands/gen/env.ts +6 -3
  312. package/src/cli/commands/gen/openapi.ts +5 -2
  313. package/src/cli/commands/init.spec.ts +544 -0
  314. package/src/cli/commands/init.ts +101 -58
  315. package/src/cli/commands/lint.ts +8 -2
  316. package/src/cli/commands/typecheck.ts +11 -0
  317. package/src/cli/defineConfig.ts +9 -0
  318. package/src/cli/index.ts +2 -1
  319. package/src/cli/providers/AppEntryProvider.ts +131 -0
  320. package/src/cli/providers/ViteBuildProvider.ts +40 -0
  321. package/src/cli/providers/ViteDevServerProvider.ts +378 -0
  322. package/src/cli/services/AlephaCliUtils.ts +39 -93
  323. package/src/cli/services/PackageManagerUtils.ts +140 -17
  324. package/src/cli/services/ProjectScaffolder.ts +169 -101
  325. package/src/cli/services/ViteUtils.ts +82 -0
  326. package/src/cli/{assets/claudeMd.ts → templates/agentMd.ts} +41 -28
  327. package/src/cli/{assets → templates}/apiHelloControllerTs.ts +2 -1
  328. package/src/cli/{assets → templates}/biomeJson.ts +2 -1
  329. package/src/cli/{assets → templates}/dummySpecTs.ts +2 -1
  330. package/src/cli/{assets → templates}/editorconfig.ts +2 -1
  331. package/src/cli/templates/gitignore.ts +39 -0
  332. package/src/cli/{assets → templates}/mainBrowserTs.ts +2 -1
  333. package/src/cli/templates/mainCss.ts +33 -0
  334. package/src/cli/templates/mainServerTs.ts +33 -0
  335. package/src/cli/{assets → templates}/tsconfigJson.ts +2 -1
  336. package/src/cli/templates/webAppRouterTs.ts +50 -0
  337. package/src/cli/templates/webHelloComponentTsx.ts +20 -0
  338. package/src/command/helpers/Runner.spec.ts +4 -0
  339. package/src/command/helpers/Runner.ts +3 -21
  340. package/src/command/index.ts +12 -4
  341. package/src/command/providers/CliProvider.spec.ts +1067 -0
  342. package/src/command/providers/CliProvider.ts +203 -40
  343. package/src/core/Alepha.ts +3 -9
  344. package/src/core/__tests__/Alepha-start.spec.ts +4 -4
  345. package/src/core/helpers/jsonSchemaToTypeBox.spec.ts +771 -0
  346. package/src/core/helpers/jsonSchemaToTypeBox.ts +62 -10
  347. package/src/core/index.shared.ts +1 -0
  348. package/src/core/index.ts +20 -0
  349. package/src/core/primitives/$module.ts +12 -0
  350. package/src/core/providers/EventManager.spec.ts +0 -71
  351. package/src/core/providers/EventManager.ts +3 -15
  352. package/src/core/providers/Json.ts +2 -14
  353. package/src/core/providers/KeylessJsonSchemaCodec.spec.ts +257 -0
  354. package/src/core/providers/KeylessJsonSchemaCodec.ts +396 -14
  355. package/src/core/providers/SchemaValidator.spec.ts +236 -0
  356. package/src/datetime/index.ts +15 -0
  357. package/src/email/index.ts +10 -5
  358. package/src/email/providers/LocalEmailProvider.spec.ts +1 -1
  359. package/src/email/providers/LocalEmailProvider.ts +1 -1
  360. package/src/fake/__tests__/keyName.example.ts +1 -1
  361. package/src/fake/__tests__/keyName.spec.ts +5 -5
  362. package/src/fake/index.ts +9 -6
  363. package/src/fake/providers/FakeProvider.spec.ts +258 -40
  364. package/src/fake/providers/FakeProvider.ts +133 -19
  365. package/src/lock/core/index.ts +11 -4
  366. package/src/logger/index.ts +17 -66
  367. package/src/logger/providers/PrettyFormatterProvider.ts +0 -9
  368. package/src/mcp/errors/McpError.ts +30 -0
  369. package/src/mcp/index.ts +13 -27
  370. package/src/mcp/transports/SseMcpTransport.ts +6 -7
  371. package/src/orm/__tests__/PostgresProvider.spec.ts +2 -2
  372. package/src/orm/index.browser.ts +2 -2
  373. package/src/orm/index.bun.ts +4 -2
  374. package/src/orm/index.ts +21 -47
  375. package/src/orm/providers/DrizzleKitProvider.ts +3 -5
  376. package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -0
  377. package/src/orm/services/Repository.ts +18 -3
  378. package/src/queue/core/index.ts +14 -6
  379. package/src/react/auth/__tests__/$auth.spec.ts +202 -0
  380. package/src/react/auth/hooks/useAuth.ts +32 -0
  381. package/src/react/auth/index.browser.ts +13 -0
  382. package/src/react/auth/index.shared.ts +2 -0
  383. package/src/react/auth/index.ts +48 -0
  384. package/src/react/auth/providers/ReactAuthProvider.ts +16 -0
  385. package/src/react/auth/services/ReactAuth.ts +135 -0
  386. package/src/react/core/__tests__/Router.spec.tsx +169 -0
  387. package/src/react/core/components/ClientOnly.tsx +49 -0
  388. package/src/react/core/components/ErrorBoundary.tsx +73 -0
  389. package/src/react/core/contexts/AlephaContext.ts +7 -0
  390. package/src/react/core/contexts/AlephaProvider.tsx +42 -0
  391. package/src/react/core/hooks/useAction.browser.spec.tsx +569 -0
  392. package/src/react/core/hooks/useAction.ts +480 -0
  393. package/src/react/core/hooks/useAlepha.ts +26 -0
  394. package/src/react/core/hooks/useClient.ts +17 -0
  395. package/src/react/core/hooks/useEvents.ts +51 -0
  396. package/src/react/core/hooks/useInject.ts +12 -0
  397. package/src/react/core/hooks/useStore.ts +52 -0
  398. package/src/react/core/index.ts +90 -0
  399. package/src/react/form/components/FormState.tsx +17 -0
  400. package/src/react/form/errors/FormValidationError.ts +18 -0
  401. package/src/react/form/hooks/useForm.browser.spec.tsx +366 -0
  402. package/src/react/form/hooks/useForm.ts +47 -0
  403. package/src/react/form/hooks/useFormState.ts +130 -0
  404. package/src/react/form/index.ts +44 -0
  405. package/src/react/form/services/FormModel.ts +614 -0
  406. package/src/react/head/helpers/SeoExpander.spec.ts +203 -0
  407. package/src/react/head/helpers/SeoExpander.ts +142 -0
  408. package/src/react/head/hooks/useHead.spec.tsx +288 -0
  409. package/src/react/head/hooks/useHead.ts +62 -0
  410. package/src/react/head/index.browser.ts +26 -0
  411. package/src/react/head/index.ts +44 -0
  412. package/src/react/head/interfaces/Head.ts +105 -0
  413. package/src/react/head/primitives/$head.ts +25 -0
  414. package/src/react/head/providers/BrowserHeadProvider.browser.spec.ts +196 -0
  415. package/src/react/head/providers/BrowserHeadProvider.ts +212 -0
  416. package/src/react/head/providers/HeadProvider.ts +168 -0
  417. package/src/react/head/providers/ServerHeadProvider.ts +31 -0
  418. package/src/react/i18n/__tests__/integration.spec.tsx +239 -0
  419. package/src/react/i18n/components/Localize.spec.tsx +357 -0
  420. package/src/react/i18n/components/Localize.tsx +35 -0
  421. package/src/react/i18n/hooks/useI18n.browser.spec.tsx +438 -0
  422. package/src/react/i18n/hooks/useI18n.ts +18 -0
  423. package/src/react/i18n/index.ts +41 -0
  424. package/src/react/i18n/primitives/$dictionary.ts +69 -0
  425. package/src/react/i18n/providers/I18nProvider.spec.ts +389 -0
  426. package/src/react/i18n/providers/I18nProvider.ts +278 -0
  427. package/src/react/router/__tests__/page-head-browser.browser.spec.ts +95 -0
  428. package/src/react/router/__tests__/page-head.spec.ts +48 -0
  429. package/src/react/router/__tests__/seo-head.spec.ts +125 -0
  430. package/src/react/router/atoms/ssrManifestAtom.ts +58 -0
  431. package/src/react/router/components/ErrorViewer.tsx +872 -0
  432. package/src/react/router/components/Link.tsx +23 -0
  433. package/src/react/router/components/NestedView.tsx +223 -0
  434. package/src/react/router/components/NotFound.tsx +30 -0
  435. package/src/react/router/constants/PAGE_PRELOAD_KEY.ts +6 -0
  436. package/src/react/router/contexts/RouterLayerContext.ts +12 -0
  437. package/src/react/router/errors/Redirection.ts +28 -0
  438. package/src/react/router/hooks/useActive.ts +52 -0
  439. package/src/react/router/hooks/useQueryParams.ts +63 -0
  440. package/src/react/router/hooks/useRouter.ts +20 -0
  441. package/src/react/router/hooks/useRouterState.ts +11 -0
  442. package/src/react/router/index.browser.ts +45 -0
  443. package/src/react/router/index.shared.ts +19 -0
  444. package/src/react/router/index.ts +142 -0
  445. package/src/react/router/primitives/$page.browser.spec.tsx +851 -0
  446. package/src/react/router/primitives/$page.spec.tsx +708 -0
  447. package/src/react/router/primitives/$page.ts +497 -0
  448. package/src/react/router/providers/ReactBrowserProvider.ts +309 -0
  449. package/src/react/router/providers/ReactBrowserRendererProvider.ts +25 -0
  450. package/src/react/router/providers/ReactBrowserRouterProvider.ts +168 -0
  451. package/src/react/router/providers/ReactPageProvider.ts +726 -0
  452. package/src/react/router/providers/ReactServerProvider.spec.tsx +316 -0
  453. package/src/react/router/providers/ReactServerProvider.ts +558 -0
  454. package/src/react/router/providers/ReactServerTemplateProvider.ts +979 -0
  455. package/src/react/router/providers/SSRManifestProvider.ts +334 -0
  456. package/src/react/router/services/ReactPageServerService.ts +48 -0
  457. package/src/react/router/services/ReactPageService.ts +27 -0
  458. package/src/react/router/services/ReactRouter.ts +262 -0
  459. package/src/react/websocket/hooks/useRoom.tsx +242 -0
  460. package/src/react/websocket/index.ts +7 -0
  461. package/src/redis/__tests__/redis.spec.ts +13 -0
  462. package/src/redis/index.ts +9 -25
  463. package/src/redis/providers/BunRedisProvider.ts +9 -0
  464. package/src/redis/providers/NodeRedisProvider.ts +8 -0
  465. package/src/redis/providers/RedisProvider.ts +16 -0
  466. package/src/retry/index.ts +11 -2
  467. package/src/router/index.ts +15 -0
  468. package/src/scheduler/index.ts +11 -2
  469. package/src/security/__tests__/BasicAuth.spec.ts +2 -0
  470. package/src/security/__tests__/ServerSecurityProvider.spec.ts +13 -5
  471. package/src/security/index.ts +15 -10
  472. package/src/security/interfaces/IssuerResolver.ts +27 -0
  473. package/src/security/primitives/$issuer.ts +55 -0
  474. package/src/security/providers/SecurityProvider.ts +179 -0
  475. package/src/security/providers/ServerBasicAuthProvider.ts +6 -2
  476. package/src/security/providers/ServerSecurityProvider.ts +36 -22
  477. package/src/server/auth/index.ts +12 -7
  478. package/src/server/cache/index.ts +7 -22
  479. package/src/server/compress/index.ts +10 -2
  480. package/src/server/cookies/index.ts +7 -5
  481. package/src/server/cookies/primitives/$cookie.ts +33 -11
  482. package/src/server/core/index.ts +17 -7
  483. package/src/server/core/interfaces/ServerRequest.ts +83 -1
  484. package/src/server/core/primitives/$action.spec.ts +1 -1
  485. package/src/server/core/primitives/$action.ts +8 -3
  486. package/src/server/core/providers/BunHttpServerProvider.ts +1 -1
  487. package/src/server/core/providers/NodeHttpServerProvider.spec.ts +125 -0
  488. package/src/server/core/providers/NodeHttpServerProvider.ts +77 -22
  489. package/src/server/core/providers/ServerLoggerProvider.ts +2 -2
  490. package/src/server/core/providers/ServerProvider.ts +9 -12
  491. package/src/server/core/services/ServerRequestParser.spec.ts +520 -0
  492. package/src/server/core/services/ServerRequestParser.ts +306 -13
  493. package/src/server/cors/index.ts +7 -21
  494. package/src/server/cors/primitives/$cors.ts +6 -2
  495. package/src/server/health/index.ts +8 -2
  496. package/src/server/helmet/index.ts +11 -3
  497. package/src/server/links/atoms/apiLinksAtom.ts +7 -0
  498. package/src/server/links/index.browser.ts +2 -0
  499. package/src/server/links/index.ts +13 -6
  500. package/src/server/metrics/index.ts +10 -3
  501. package/src/server/multipart/index.ts +9 -3
  502. package/src/server/proxy/index.ts +8 -2
  503. package/src/server/rate-limit/index.ts +21 -25
  504. package/src/server/rate-limit/primitives/$rateLimit.ts +6 -2
  505. package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +38 -14
  506. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +22 -56
  507. package/src/server/static/index.ts +8 -2
  508. package/src/server/static/providers/ServerStaticProvider.ts +1 -1
  509. package/src/server/swagger/index.ts +9 -4
  510. package/src/server/swagger/providers/ServerSwaggerProvider.ts +1 -1
  511. package/src/sms/index.ts +9 -5
  512. package/src/sms/providers/LocalSmsProvider.spec.ts +1 -1
  513. package/src/sms/providers/LocalSmsProvider.ts +1 -1
  514. package/src/system/index.browser.ts +11 -0
  515. package/src/system/index.ts +62 -0
  516. package/src/{file → system}/providers/FileSystemProvider.ts +16 -0
  517. package/src/{file → system}/providers/MemoryFileSystemProvider.ts +116 -3
  518. package/src/system/providers/MemoryShellProvider.ts +164 -0
  519. package/src/{file → system}/providers/NodeFileSystemProvider.spec.ts +2 -2
  520. package/src/{file → system}/providers/NodeFileSystemProvider.ts +36 -0
  521. package/src/system/providers/NodeShellProvider.ts +184 -0
  522. package/src/system/providers/ShellProvider.ts +74 -0
  523. package/src/{file → system}/services/FileDetector.spec.ts +2 -2
  524. package/src/thread/index.ts +11 -2
  525. package/src/topic/core/index.ts +12 -5
  526. package/src/vite/index.ts +3 -2
  527. package/src/vite/tasks/buildClient.ts +2 -8
  528. package/src/vite/tasks/buildServer.ts +84 -21
  529. package/src/vite/tasks/copyAssets.ts +5 -4
  530. package/src/vite/tasks/generateSitemap.ts +64 -23
  531. package/src/vite/tasks/index.ts +0 -2
  532. package/src/vite/tasks/prerenderPages.ts +49 -24
  533. package/src/websocket/index.ts +12 -8
  534. package/dist/file/index.d.ts +0 -839
  535. package/dist/file/index.d.ts.map +0 -1
  536. package/dist/file/index.js.map +0 -1
  537. package/src/cli/assets/indexHtml.ts +0 -15
  538. package/src/cli/assets/mainServerTs.ts +0 -24
  539. package/src/cli/assets/webAppRouterTs.ts +0 -15
  540. package/src/cli/assets/webHelloComponentTsx.ts +0 -16
  541. package/src/cli/commands/format.ts +0 -23
  542. package/src/file/index.ts +0 -43
  543. package/src/vite/helpers/boot.ts +0 -117
  544. package/src/vite/plugins/viteAlephaDev.ts +0 -177
  545. package/src/vite/tasks/devServer.ts +0 -71
  546. package/src/vite/tasks/runAlepha.ts +0 -270
  547. /package/dist/orm/{chunk-DtkW-qnP.js → chunk-DH6iiROE.js} +0 -0
  548. /package/src/cli/{assets → templates}/apiIndexTs.ts +0 -0
  549. /package/src/cli/{assets → templates}/webIndexTs.ts +0 -0
  550. /package/src/{file → system}/errors/FileError.ts +0 -0
  551. /package/src/{file → system}/services/FileDetector.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_logger0 from "alepha/logger";
3
+ import * as alepha_logger1 from "alepha/logger";
4
4
  import { DateTimeProvider } from "alepha/datetime";
5
5
 
6
6
  //#region ../../src/queue/core/providers/QueueProvider.d.ts
@@ -11,25 +11,25 @@ import { DateTimeProvider } from "alepha/datetime";
11
11
  */
12
12
  declare abstract class QueueProvider {
13
13
  /**
14
- * Push a message to the queue.
15
- *
16
- * @param queue Name of the queue to push the message to.
17
- * @param message String message to be pushed to the queue. Buffer messages are not supported for now.
18
- */
14
+ * Push a message to the queue.
15
+ *
16
+ * @param queue Name of the queue to push the message to.
17
+ * @param message String message to be pushed to the queue. Buffer messages are not supported for now.
18
+ */
19
19
  abstract push(queue: string, message: string): Promise<void>;
20
20
  /**
21
- * Pop a message from the queue.
22
- *
23
- * @param queue Name of the queue to pop the message from.
24
- *
25
- * @returns The message popped or `undefined` if the queue is empty.
26
- */
21
+ * Pop a message from the queue.
22
+ *
23
+ * @param queue Name of the queue to pop the message from.
24
+ *
25
+ * @returns The message popped or `undefined` if the queue is empty.
26
+ */
27
27
  abstract pop(queue: string): Promise<string | undefined>;
28
28
  }
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_logger0.Logger;
32
+ protected readonly log: alepha_logger1.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>;
@@ -38,24 +38,24 @@ declare class MemoryQueueProvider implements QueueProvider {
38
38
  //#region ../../src/queue/core/providers/WorkerProvider.d.ts
39
39
  declare const envSchema: alepha1.TObject<{
40
40
  /**
41
- * The interval in milliseconds to wait before checking for new messages.
42
- */
41
+ * The interval in milliseconds to wait before checking for new messages.
42
+ */
43
43
  QUEUE_WORKER_INTERVAL: alepha1.TInteger;
44
44
  /**
45
- * The maximum interval in milliseconds to wait before checking for new messages.
46
- */
45
+ * The maximum interval in milliseconds to wait before checking for new messages.
46
+ */
47
47
  QUEUE_WORKER_MAX_INTERVAL: alepha1.TInteger;
48
48
  /**
49
- * The number of workers to run concurrently. Defaults to 1.
50
- * Useful only if you are doing a lot of I/O.
51
- */
49
+ * The number of workers to run concurrently. Defaults to 1.
50
+ * Useful only if you are doing a lot of I/O.
51
+ */
52
52
  QUEUE_WORKER_CONCURRENCY: alepha1.TInteger;
53
53
  }>;
54
54
  declare module "alepha" {
55
55
  interface Env extends Partial<Static<typeof envSchema>> {}
56
56
  }
57
57
  declare class WorkerProvider {
58
- protected readonly log: alepha_logger0.Logger;
58
+ protected readonly log: alepha_logger1.Logger;
59
59
  protected readonly env: {
60
60
  QUEUE_WORKER_INTERVAL: number;
61
61
  QUEUE_WORKER_MAX_INTERVAL: number;
@@ -72,37 +72,37 @@ declare class WorkerProvider {
72
72
  get isRunning(): boolean;
73
73
  protected readonly start: alepha1.HookPrimitive<"start">;
74
74
  /**
75
- * Start the workers.
76
- * This method will create an endless loop that will check for new messages!
77
- */
75
+ * Start the workers.
76
+ * This method will create an endless loop that will check for new messages!
77
+ */
78
78
  protected startWorkers(): void;
79
79
  protected readonly stop: alepha1.HookPrimitive<"stop">;
80
80
  /**
81
- * Wait for the next message, where `n` is the worker number.
82
- *
83
- * This method will wait for a certain amount of time, increasing the wait time again if no message is found.
84
- */
81
+ * Wait for the next message, where `n` is the worker number.
82
+ *
83
+ * This method will wait for a certain amount of time, increasing the wait time again if no message is found.
84
+ */
85
85
  protected waitForNextMessage(n: number): Promise<void>;
86
86
  /**
87
- * Get the next message.
88
- */
87
+ * Get the next message.
88
+ */
89
89
  protected getNextMessage(): Promise<undefined | NextMessage>;
90
90
  /**
91
- * Process a message from a queue.
92
- */
91
+ * Process a message from a queue.
92
+ */
93
93
  protected processMessage(response: {
94
94
  message: any;
95
95
  consumer: Consumer;
96
96
  }): Promise<void>;
97
97
  /**
98
- * Stop the workers.
99
- *
100
- * This method will stop the workers and wait for them to finish processing.
101
- */
98
+ * Stop the workers.
99
+ *
100
+ * This method will stop the workers and wait for them to finish processing.
101
+ */
102
102
  protected stopWorkers(): Promise<void>;
103
103
  /**
104
- * Force the workers to get back to work.
105
- */
104
+ * Force the workers to get back to work.
105
+ */
106
106
  wakeUp(): void;
107
107
  }
108
108
  interface Consumer<T extends TSchema = TSchema> {
@@ -232,126 +232,126 @@ declare const $queue: {
232
232
  };
233
233
  interface QueuePrimitiveOptions<T extends TSchema> {
234
234
  /**
235
- * Unique name for the queue.
236
- *
237
- * This name is used for:
238
- * - Queue identification across the system
239
- * - Storage backend key generation
240
- * - Logging and monitoring
241
- * - Worker assignment and routing
242
- *
243
- * If not provided, defaults to the property key where the queue is declared.
244
- *
245
- * @example "email-notifications"
246
- * @example "image-processing"
247
- * @example "order-fulfillment"
248
- */
235
+ * Unique name for the queue.
236
+ *
237
+ * This name is used for:
238
+ * - Queue identification across the system
239
+ * - Storage backend key generation
240
+ * - Logging and monitoring
241
+ * - Worker assignment and routing
242
+ *
243
+ * If not provided, defaults to the property key where the queue is declared.
244
+ *
245
+ * @example "email-notifications"
246
+ * @example "image-processing"
247
+ * @example "order-fulfillment"
248
+ */
249
249
  name?: string;
250
250
  /**
251
- * Human-readable description of the queue's purpose.
252
- *
253
- * Used for:
254
- * - Documentation generation
255
- * - Monitoring dashboards
256
- * - Development team communication
257
- * - Queue management interfaces
258
- *
259
- * @example "Process user registration emails and welcome sequences"
260
- * @example "Handle image uploads, resizing, and thumbnail generation"
261
- * @example "Manage order processing, payment, and shipping workflows"
262
- */
251
+ * Human-readable description of the queue's purpose.
252
+ *
253
+ * Used for:
254
+ * - Documentation generation
255
+ * - Monitoring dashboards
256
+ * - Development team communication
257
+ * - Queue management interfaces
258
+ *
259
+ * @example "Process user registration emails and welcome sequences"
260
+ * @example "Handle image uploads, resizing, and thumbnail generation"
261
+ * @example "Manage order processing, payment, and shipping workflows"
262
+ */
263
263
  description?: string;
264
264
  /**
265
- * Queue storage provider configuration.
266
- *
267
- * Options:
268
- * - **"memory"**: In-memory queue (default for development, lost on restart)
269
- * - **Service<QueueProvider>**: Custom provider class (e.g., RedisQueueProvider)
270
- * - **undefined**: Uses the default queue provider from dependency injection
271
- *
272
- * **Provider Selection Guidelines**:
273
- * - Development: Use "memory" for fast, simple testing
274
- * - Production: Use Redis or database-backed providers for persistence
275
- * - High-throughput: Use specialized providers with connection pooling
276
- * - Distributed systems: Use Redis or message brokers for scalability
277
- *
278
- * @default Uses injected QueueProvider
279
- * @example "memory"
280
- * @example RedisQueueProvider
281
- * @example DatabaseQueueProvider
282
- */
265
+ * Queue storage provider configuration.
266
+ *
267
+ * Options:
268
+ * - **"memory"**: In-memory queue (default for development, lost on restart)
269
+ * - **Service<QueueProvider>**: Custom provider class (e.g., RedisQueueProvider)
270
+ * - **undefined**: Uses the default queue provider from dependency injection
271
+ *
272
+ * **Provider Selection Guidelines**:
273
+ * - Development: Use "memory" for fast, simple testing
274
+ * - Production: Use Redis or database-backed providers for persistence
275
+ * - High-throughput: Use specialized providers with connection pooling
276
+ * - Distributed systems: Use Redis or message brokers for scalability
277
+ *
278
+ * @default Uses injected QueueProvider
279
+ * @example "memory"
280
+ * @example RedisQueueProvider
281
+ * @example DatabaseQueueProvider
282
+ */
283
283
  provider?: "memory" | Service<QueueProvider>;
284
284
  /**
285
- * TypeBox schema defining the structure of messages in this queue.
286
- *
287
- * This schema:
288
- * - Validates all messages pushed to the queue
289
- * - Provides full TypeScript type inference
290
- * - Ensures type safety between producers and consumers
291
- * - Enables automatic serialization/deserialization
292
- *
293
- * **Schema Design Best Practices**:
294
- * - Keep schemas simple and focused on the specific task
295
- * - Use optional fields for data that might not always be available
296
- * - Include version fields for schema evolution
297
- * - Use union types for different message types in the same queue
298
- *
299
- * @example
300
- * ```ts
301
- * t.object({
302
- * userId: t.text(),
303
- * action: t.enum(["create", "update"]),
304
- * data: t.record(t.text(), t.any()),
305
- * timestamp: t.optional(t.number())
306
- * })
307
- * ```
308
- */
285
+ * TypeBox schema defining the structure of messages in this queue.
286
+ *
287
+ * This schema:
288
+ * - Validates all messages pushed to the queue
289
+ * - Provides full TypeScript type inference
290
+ * - Ensures type safety between producers and consumers
291
+ * - Enables automatic serialization/deserialization
292
+ *
293
+ * **Schema Design Best Practices**:
294
+ * - Keep schemas simple and focused on the specific task
295
+ * - Use optional fields for data that might not always be available
296
+ * - Include version fields for schema evolution
297
+ * - Use union types for different message types in the same queue
298
+ *
299
+ * @example
300
+ * ```ts
301
+ * t.object({
302
+ * userId: t.text(),
303
+ * action: t.enum(["create", "update"]),
304
+ * data: t.record(t.text(), t.any()),
305
+ * timestamp: t.optional(t.number())
306
+ * })
307
+ * ```
308
+ */
309
309
  schema: T;
310
310
  /**
311
- * Message handler function that processes queue messages.
312
- *
313
- * This function:
314
- * - Runs in background worker threads for non-blocking processing
315
- * - Receives type-safe message payloads based on the schema
316
- * - Should be idempotent to handle potential retries
317
- * - Can throw errors to trigger retry mechanisms
318
- * - Has access to the full Alepha dependency injection container
319
- *
320
- * **Handler Best Practices**:
321
- * - Keep handlers focused on a single responsibility
322
- * - Use proper error handling and logging
323
- * - Make operations idempotent when possible
324
- * - Validate critical business logic within handlers
325
- * - Consider using transactions for data consistency
326
- *
327
- * @param message - The queue message with validated payload
328
- * @returns Promise that resolves when processing is complete
329
- *
330
- * @example
331
- * ```ts
332
- * handler: async (message) => {
333
- * const { userId, email, template } = message.payload;
334
- *
335
- * try {
336
- * await this.emailService.send({
337
- * to: email,
338
- * template,
339
- * data: { userId }
340
- * });
341
- *
342
- * await this.userService.markEmailSent(userId, template);
343
- * } catch (error) {
344
- * // Log error and let the queue system handle retries
345
- * this.logger.error(`Failed to send email to ${email}`, error);
346
- * throw error;
347
- * }
348
- * }
349
- * ```
350
- */
311
+ * Message handler function that processes queue messages.
312
+ *
313
+ * This function:
314
+ * - Runs in background worker threads for non-blocking processing
315
+ * - Receives type-safe message payloads based on the schema
316
+ * - Should be idempotent to handle potential retries
317
+ * - Can throw errors to trigger retry mechanisms
318
+ * - Has access to the full Alepha dependency injection container
319
+ *
320
+ * **Handler Best Practices**:
321
+ * - Keep handlers focused on a single responsibility
322
+ * - Use proper error handling and logging
323
+ * - Make operations idempotent when possible
324
+ * - Validate critical business logic within handlers
325
+ * - Consider using transactions for data consistency
326
+ *
327
+ * @param message - The queue message with validated payload
328
+ * @returns Promise that resolves when processing is complete
329
+ *
330
+ * @example
331
+ * ```ts
332
+ * handler: async (message) => {
333
+ * const { userId, email, template } = message.payload;
334
+ *
335
+ * try {
336
+ * await this.emailService.send({
337
+ * to: email,
338
+ * template,
339
+ * data: { userId }
340
+ * });
341
+ *
342
+ * await this.userService.markEmailSent(userId, template);
343
+ * } catch (error) {
344
+ * // Log error and let the queue system handle retries
345
+ * this.logger.error(`Failed to send email to ${email}`, error);
346
+ * throw error;
347
+ * }
348
+ * }
349
+ * ```
350
+ */
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_logger0.Logger;
354
+ protected readonly log: alepha_logger1.Logger;
355
355
  protected readonly workerProvider: WorkerProvider;
356
356
  readonly provider: QueueProvider | MemoryQueueProvider;
357
357
  push(...payloads: Array<Static<T>>): Promise<void>;
@@ -421,109 +421,109 @@ declare const $consumer: {
421
421
  };
422
422
  interface ConsumerPrimitiveOptions<T extends TSchema> {
423
423
  /**
424
- * The queue primitive that this consumer will process messages from.
425
- *
426
- * This establishes the connection between the consumer and its source queue:
427
- * - The consumer inherits the queue's message schema for type safety
428
- * - Messages pushed to the queue will be automatically routed to this consumer
429
- * - Multiple consumers can be attached to the same queue for parallel processing
430
- * - The consumer will use the queue's provider and configuration settings
431
- *
432
- * **Queue Integration Benefits**:
433
- * - Type safety: Consumer handler gets fully typed message payloads
434
- * - Schema validation: Messages are validated before reaching the consumer
435
- * - Error handling: Failed messages can be retried or moved to dead letter queues
436
- * - Monitoring: Queue metrics include consumer processing statistics
437
- *
438
- * @example
439
- * ```ts
440
- * // First, define a queue
441
- * emailQueue = $queue({
442
- * name: "emails",
443
- * schema: t.object({ to: t.text(), subject: t.text() })
444
- * });
445
- *
446
- * // Then, create a consumer for that queue
447
- * emailConsumer = $consumer({
448
- * queue: this.emailQueue, // Reference the queue primitive
449
- * handler: async (message) => { } // process email
450
- * });
451
- * ```
452
- */
424
+ * The queue primitive that this consumer will process messages from.
425
+ *
426
+ * This establishes the connection between the consumer and its source queue:
427
+ * - The consumer inherits the queue's message schema for type safety
428
+ * - Messages pushed to the queue will be automatically routed to this consumer
429
+ * - Multiple consumers can be attached to the same queue for parallel processing
430
+ * - The consumer will use the queue's provider and configuration settings
431
+ *
432
+ * **Queue Integration Benefits**:
433
+ * - Type safety: Consumer handler gets fully typed message payloads
434
+ * - Schema validation: Messages are validated before reaching the consumer
435
+ * - Error handling: Failed messages can be retried or moved to dead letter queues
436
+ * - Monitoring: Queue metrics include consumer processing statistics
437
+ *
438
+ * @example
439
+ * ```ts
440
+ * // First, define a queue
441
+ * emailQueue = $queue({
442
+ * name: "emails",
443
+ * schema: t.object({ to: t.text(), subject: t.text() })
444
+ * });
445
+ *
446
+ * // Then, create a consumer for that queue
447
+ * emailConsumer = $consumer({
448
+ * queue: this.emailQueue, // Reference the queue primitive
449
+ * handler: async (message) => { } // process email
450
+ * });
451
+ * ```
452
+ */
453
453
  queue: QueuePrimitive<T>;
454
454
  /**
455
- * Message handler function that processes individual messages from the queue.
456
- *
457
- * This function:
458
- * - Receives fully typed and validated message payloads from the connected queue
459
- * - Runs in the background worker system for non-blocking operation
460
- * - Should implement the core business logic for processing this message type
461
- * - Can throw errors to trigger the queue's retry mechanisms
462
- * - Has access to the full Alepha dependency injection container
463
- * - Should be idempotent to handle potential duplicate deliveries
464
- *
465
- * **Handler Design Guidelines**:
466
- * - Keep handlers focused on a single responsibility
467
- * - Use proper error handling and meaningful error messages
468
- * - Log important processing steps for debugging and monitoring
469
- * - Consider transaction boundaries for data consistency
470
- * - Make operations idempotent when possible
471
- * - Validate business rules within the handler logic
472
- *
473
- * **Error Handling Strategy**:
474
- * - Throw errors for temporary failures that should be retried
475
- * - Log and handle permanent failures gracefully
476
- * - Use specific error types to control retry behavior
477
- * - Consider implementing circuit breakers for external service calls
478
- *
479
- * @param message - The queue message containing the validated payload
480
- * @param message.payload - The typed message data based on the queue's schema
481
- * @returns Promise that resolves when processing is complete
482
- *
483
- * @example
484
- * ```ts
485
- * handler: async (message) => {
486
- * const { userId, action, data } = message.payload;
487
- *
488
- * try {
489
- * // Log processing start
490
- * this.logger.info(`Processing ${action} for user ${userId}`);
491
- *
492
- * // Validate business rules
493
- * if (!await this.userService.exists(userId)) {
494
- * throw new Error(`User ${userId} not found`);
495
- * }
496
- *
497
- * // Perform the main processing logic
498
- * switch (action) {
499
- * case "create":
500
- * await this.processCreation(userId, data);
501
- * break;
502
- * case "update":
503
- * await this.processUpdate(userId, data);
504
- * break;
505
- * default:
506
- * throw new Error(`Unknown action: ${action}`);
507
- * }
508
- *
509
- * // Log successful completion
510
- * this.logger.info(`Successfully processed ${action} for user ${userId}`);
511
- *
512
- * } catch (error) {
513
- * // Log error with context
514
- * this.logger.error(`Failed to process ${action} for user ${userId}`, {
515
- * error: error.message,
516
- * userId,
517
- * action,
518
- * data
519
- * });
520
- *
521
- * // Re-throw to trigger queue retry mechanism
522
- * throw error;
523
- * }
524
- * }
525
- * ```
526
- */
455
+ * Message handler function that processes individual messages from the queue.
456
+ *
457
+ * This function:
458
+ * - Receives fully typed and validated message payloads from the connected queue
459
+ * - Runs in the background worker system for non-blocking operation
460
+ * - Should implement the core business logic for processing this message type
461
+ * - Can throw errors to trigger the queue's retry mechanisms
462
+ * - Has access to the full Alepha dependency injection container
463
+ * - Should be idempotent to handle potential duplicate deliveries
464
+ *
465
+ * **Handler Design Guidelines**:
466
+ * - Keep handlers focused on a single responsibility
467
+ * - Use proper error handling and meaningful error messages
468
+ * - Log important processing steps for debugging and monitoring
469
+ * - Consider transaction boundaries for data consistency
470
+ * - Make operations idempotent when possible
471
+ * - Validate business rules within the handler logic
472
+ *
473
+ * **Error Handling Strategy**:
474
+ * - Throw errors for temporary failures that should be retried
475
+ * - Log and handle permanent failures gracefully
476
+ * - Use specific error types to control retry behavior
477
+ * - Consider implementing circuit breakers for external service calls
478
+ *
479
+ * @param message - The queue message containing the validated payload
480
+ * @param message.payload - The typed message data based on the queue's schema
481
+ * @returns Promise that resolves when processing is complete
482
+ *
483
+ * @example
484
+ * ```ts
485
+ * handler: async (message) => {
486
+ * const { userId, action, data } = message.payload;
487
+ *
488
+ * try {
489
+ * // Log processing start
490
+ * this.logger.info(`Processing ${action} for user ${userId}`);
491
+ *
492
+ * // Validate business rules
493
+ * if (!await this.userService.exists(userId)) {
494
+ * throw new Error(`User ${userId} not found`);
495
+ * }
496
+ *
497
+ * // Perform the main processing logic
498
+ * switch (action) {
499
+ * case "create":
500
+ * await this.processCreation(userId, data);
501
+ * break;
502
+ * case "update":
503
+ * await this.processUpdate(userId, data);
504
+ * break;
505
+ * default:
506
+ * throw new Error(`Unknown action: ${action}`);
507
+ * }
508
+ *
509
+ * // Log successful completion
510
+ * this.logger.info(`Successfully processed ${action} for user ${userId}`);
511
+ *
512
+ * } catch (error) {
513
+ * // Log error with context
514
+ * this.logger.error(`Failed to process ${action} for user ${userId}`, {
515
+ * error: error.message,
516
+ * userId,
517
+ * action,
518
+ * data
519
+ * });
520
+ *
521
+ * // Re-throw to trigger queue retry mechanism
522
+ * throw error;
523
+ * }
524
+ * }
525
+ * ```
526
+ */
527
527
  handler: (message: {
528
528
  payload: Static<T>;
529
529
  }) => Promise<void>;
@@ -532,14 +532,22 @@ declare class ConsumerPrimitive<T extends TSchema> extends Primitive<ConsumerPri
532
532
  //#endregion
533
533
  //#region ../../src/queue/core/index.d.ts
534
534
  /**
535
- * Provides asynchronous message queuing and processing capabilities through declarative queue descriptors.
535
+ * | type | quality | stability |
536
+ * |------|---------|-----------|
537
+ * | backend | epic | stable |
536
538
  *
537
- * The queue module enables reliable background job processing and message passing using the `$queue` descriptor
538
- * on class properties. It supports schema validation, automatic retries, and multiple queue backends for
539
- * building scalable, decoupled applications with robust error handling.
539
+ * Asynchronous message processing with automatic worker management.
540
+ *
541
+ * **Features:**
542
+ * - Background job queues with type-safe payloads
543
+ * - Queue consumer handlers
544
+ * - Automatic worker threads for non-blocking processing
545
+ * - Retry mechanisms with exponential backoff
546
+ * - Dead letter queues for failed messages
547
+ * - Batch processing support
548
+ * - Configurable concurrency and worker pools
549
+ * - Providers: Memory (dev), Redis (production)
540
550
  *
541
- * @see {@link $queue}
542
- * @see {@link $consumer}
543
551
  * @module alepha.queue
544
552
  */
545
553
  declare const AlephaQueue: alepha1.Service<alepha1.Module>;
@@ -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"],"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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"}