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,4 +1,4 @@
1
- import * as alepha1 from "alepha";
1
+ import * as alepha2 from "alepha";
2
2
  import { Alepha, KIND, Primitive, Static, TSchema } from "alepha";
3
3
  import { DateTimeProvider, DurationLike } from "alepha/datetime";
4
4
  import * as alepha_logger0 from "alepha/logger";
@@ -7,69 +7,69 @@ import { RetryBackoffOptions, RetryPrimitiveOptions, RetryProvider } from "aleph
7
7
  //#region ../../src/batch/providers/BatchProvider.d.ts
8
8
  interface BatchOptions<TItem, TResponse = any> {
9
9
  /**
10
- * The batch processing handler function that processes arrays of validated items.
11
- */
10
+ * The batch processing handler function that processes arrays of validated items.
11
+ */
12
12
  handler: (items: TItem[]) => TResponse;
13
13
  /**
14
- * Maximum number of items to collect before automatically flushing the batch.
15
- *
16
- * @default 10
17
- */
14
+ * Maximum number of items to collect before automatically flushing the batch.
15
+ *
16
+ * @default 10
17
+ */
18
18
  maxSize?: number;
19
19
  /**
20
- * Maximum number of items that can be queued in a single partition.
21
- * If exceeded, push() will throw an error.
22
- */
20
+ * Maximum number of items that can be queued in a single partition.
21
+ * If exceeded, push() will throw an error.
22
+ */
23
23
  maxQueueSize?: number;
24
24
  /**
25
- * Maximum time to wait before flushing a batch, even if it hasn't reached maxSize.
26
- *
27
- * @default [1, "second"]
28
- */
25
+ * Maximum time to wait before flushing a batch, even if it hasn't reached maxSize.
26
+ *
27
+ * @default [1, "second"]
28
+ */
29
29
  maxDuration?: DurationLike;
30
30
  /**
31
- * Function to determine partition keys for grouping items into separate batches.
32
- */
31
+ * Function to determine partition keys for grouping items into separate batches.
32
+ */
33
33
  partitionBy?: (item: TItem) => string;
34
34
  /**
35
- * Maximum number of batch handlers that can execute simultaneously.
36
- *
37
- * @default 1
38
- */
35
+ * Maximum number of batch handlers that can execute simultaneously.
36
+ *
37
+ * @default 1
38
+ */
39
39
  concurrency?: number;
40
40
  /**
41
- * Retry configuration for failed batch processing operations.
42
- */
41
+ * Retry configuration for failed batch processing operations.
42
+ */
43
43
  retry?: {
44
44
  /**
45
- * The maximum number of attempts.
46
- *
47
- * @default 3
48
- */
45
+ * The maximum number of attempts.
46
+ *
47
+ * @default 3
48
+ */
49
49
  max?: number;
50
50
  /**
51
- * The backoff strategy for delays between retries.
52
- * Can be a fixed number (in ms) or a configuration object for exponential backoff.
53
- *
54
- * @default { initial: 200, factor: 2, jitter: true }
55
- */
51
+ * The backoff strategy for delays between retries.
52
+ * Can be a fixed number (in ms) or a configuration object for exponential backoff.
53
+ *
54
+ * @default { initial: 200, factor: 2, jitter: true }
55
+ */
56
56
  backoff?: number | RetryBackoffOptions;
57
57
  /**
58
- * An overall time limit for all retry attempts combined.
59
- *
60
- * e.g., `[5, 'seconds']`
61
- */
58
+ * An overall time limit for all retry attempts combined.
59
+ *
60
+ * e.g., `[5, 'seconds']`
61
+ */
62
62
  maxDuration?: DurationLike;
63
63
  /**
64
- * A function that determines if a retry should be attempted based on the error.
65
- *
66
- * @default (error) => true (retries on any error)
67
- */
64
+ * A function that determines if a retry should be attempted based on the error.
65
+ *
66
+ * @default (error) => true (retries on any error)
67
+ */
68
68
  when?: (error: Error) => boolean;
69
69
  /**
70
- * A custom callback for when a retry attempt fails.
71
- * This is called before the delay.
72
- */
70
+ * A custom callback for when a retry attempt fails.
71
+ * This is called before the delay.
72
+ */
73
73
  onError?: (error: Error, attempt: number) => void;
74
74
  };
75
75
  }
@@ -113,41 +113,49 @@ declare class BatchProvider {
113
113
  protected readonly dateTime: DateTimeProvider;
114
114
  protected readonly retryProvider: RetryProvider;
115
115
  /**
116
- * Creates a new batch context with the given options.
117
- */
116
+ * All active batch contexts managed by this provider.
117
+ */
118
+ protected readonly contexts: Set<BatchContext<any, any>>;
119
+ /**
120
+ * Creates a new batch context with the given options.
121
+ */
118
122
  createContext<TItem, TResponse>(alepha: Alepha, options: BatchOptions<TItem, TResponse>): BatchContext<TItem, TResponse>;
119
123
  /**
120
- * Get the effective maxSize for a context.
121
- */
124
+ * Shutdown hook - flushes all batch contexts on application stop.
125
+ */
126
+ protected readonly onStop: alepha2.HookPrimitive<"stop">;
127
+ /**
128
+ * Get the effective maxSize for a context.
129
+ */
122
130
  protected getMaxSize<TItem, TResponse>(context: BatchContext<TItem, TResponse>): number;
123
131
  /**
124
- * Get the effective concurrency for a context.
125
- */
132
+ * Get the effective concurrency for a context.
133
+ */
126
134
  protected getConcurrency<TItem, TResponse>(context: BatchContext<TItem, TResponse>): number;
127
135
  /**
128
- * Get the effective maxDuration for a context.
129
- */
136
+ * Get the effective maxDuration for a context.
137
+ */
130
138
  protected getMaxDuration<TItem, TResponse>(context: BatchContext<TItem, TResponse>): DurationLike;
131
139
  /**
132
- * Pushes an item into the batch and returns immediately with a unique ID.
133
- * The item will be processed asynchronously with other items when the batch is flushed.
134
- * Use wait(id) to get the processing result.
135
- *
136
- * @throws Error if maxQueueSize is exceeded
137
- */
140
+ * Pushes an item into the batch and returns immediately with a unique ID.
141
+ * The item will be processed asynchronously with other items when the batch is flushed.
142
+ * Use wait(id) to get the processing result.
143
+ *
144
+ * @throws Error if maxQueueSize is exceeded
145
+ */
138
146
  push<TItem, TResponse>(context: BatchContext<TItem, TResponse>, item: TItem): string;
139
147
  /**
140
- * Wait for a specific item to be processed and get its result.
141
- * @param id The item ID returned from push()
142
- * @returns The processing result
143
- * @throws If the item doesn't exist or processing failed
144
- */
148
+ * Wait for a specific item to be processed and get its result.
149
+ * @param id The item ID returned from push()
150
+ * @returns The processing result
151
+ * @throws If the item doesn't exist or processing failed
152
+ */
145
153
  wait<TItem, TResponse>(context: BatchContext<TItem, TResponse>, id: string): Promise<TResponse>;
146
154
  /**
147
- * Get the current status of an item.
148
- * @param id The item ID returned from push()
149
- * @returns Status information or undefined if item doesn't exist
150
- */
155
+ * Get the current status of an item.
156
+ * @param id The item ID returned from push()
157
+ * @returns Status information or undefined if item doesn't exist
158
+ */
151
159
  status<TItem, TResponse>(context: BatchContext<TItem, TResponse>, id: string): {
152
160
  status: "pending" | "processing";
153
161
  } | {
@@ -158,36 +166,36 @@ declare class BatchProvider {
158
166
  error: Error;
159
167
  } | undefined;
160
168
  /**
161
- * Clears completed and failed items from the context to free memory.
162
- * Returns the number of items cleared.
163
- *
164
- * @param context The batch context
165
- * @param status Optional: only clear items with this specific status ('completed' or 'failed')
166
- * @returns The number of items cleared
167
- */
169
+ * Clears completed and failed items from the context to free memory.
170
+ * Returns the number of items cleared.
171
+ *
172
+ * @param context The batch context
173
+ * @param status Optional: only clear items with this specific status ('completed' or 'failed')
174
+ * @returns The number of items cleared
175
+ */
168
176
  clearCompleted<TItem, TResponse>(context: BatchContext<TItem, TResponse>, status?: "completed" | "failed"): number;
169
177
  /**
170
- * Flush all partitions or a specific partition.
171
- */
178
+ * Flush all partitions or a specific partition.
179
+ */
172
180
  flush<TItem, TResponse>(context: BatchContext<TItem, TResponse>, partitionKey?: string): Promise<void>;
173
181
  /**
174
- * Flush a specific partition.
175
- */
182
+ * Flush a specific partition.
183
+ */
176
184
  protected flushPartition<TItem, TResponse>(context: BatchContext<TItem, TResponse>, partitionKey: string, limit?: number): Promise<void>;
177
185
  /**
178
- * Mark the context as ready and start processing buffered items.
179
- * Called after the "ready" hook.
180
- */
186
+ * Mark the context as ready and start processing buffered items.
187
+ * Called after the "ready" hook.
188
+ */
181
189
  markReady<TItem, TResponse>(context: BatchContext<TItem, TResponse>): Promise<void>;
182
190
  /**
183
- * Mark the context as shutting down and flush all remaining items.
184
- */
191
+ * Mark the context as shutting down and flush all remaining items.
192
+ */
185
193
  shutdown<TItem, TResponse>(context: BatchContext<TItem, TResponse>): Promise<void>;
186
194
  /**
187
- * Called after the "ready" hook to start processing buffered items that were
188
- * pushed during startup. This checks all partitions and starts timeouts/flushes
189
- * for items that were accumulated before the app was ready.
190
- */
195
+ * Called after the "ready" hook to start processing buffered items that were
196
+ * pushed during startup. This checks all partitions and starts timeouts/flushes
197
+ * for items that were accumulated before the app was ready.
198
+ */
191
199
  protected startProcessing<TItem, TResponse>(context: BatchContext<TItem, TResponse>): Promise<void>;
192
200
  }
193
201
  //#endregion
@@ -201,37 +209,37 @@ declare const $batch: {
201
209
  };
202
210
  interface BatchPrimitiveOptions<TItem extends TSchema, TResponse = any> {
203
211
  /**
204
- * TypeBox schema for validating each item added to the batch.
205
- */
212
+ * TypeBox schema for validating each item added to the batch.
213
+ */
206
214
  schema: TItem;
207
215
  /**
208
- * The batch processing handler function that processes arrays of validated items.
209
- */
216
+ * The batch processing handler function that processes arrays of validated items.
217
+ */
210
218
  handler: (items: Static<TItem>[]) => TResponse;
211
219
  /**
212
- * Maximum number of items to collect before automatically flushing the batch.
213
- */
220
+ * Maximum number of items to collect before automatically flushing the batch.
221
+ */
214
222
  maxSize?: number;
215
223
  /**
216
- * Maximum number of items that can be queued in a single partition.
217
- * If exceeded, push() will throw an error.
218
- */
224
+ * Maximum number of items that can be queued in a single partition.
225
+ * If exceeded, push() will throw an error.
226
+ */
219
227
  maxQueueSize?: number;
220
228
  /**
221
- * Maximum time to wait before flushing a batch, even if it hasn't reached maxSize.
222
- */
229
+ * Maximum time to wait before flushing a batch, even if it hasn't reached maxSize.
230
+ */
223
231
  maxDuration?: DurationLike;
224
232
  /**
225
- * Function to determine partition keys for grouping items into separate batches.
226
- */
233
+ * Function to determine partition keys for grouping items into separate batches.
234
+ */
227
235
  partitionBy?: (item: Static<TItem>) => string;
228
236
  /**
229
- * Maximum number of batch handlers that can execute simultaneously.
230
- */
237
+ * Maximum number of batch handlers that can execute simultaneously.
238
+ */
231
239
  concurrency?: number;
232
240
  /**
233
- * Retry configuration for failed batch processing operations.
234
- */
241
+ * Retry configuration for failed batch processing operations.
242
+ */
235
243
  retry?: Omit<RetryPrimitiveOptions<() => Array<Static<TItem>>>, "handler">;
236
244
  }
237
245
  declare class BatchPrimitive<TItem extends TSchema, TResponse = any> extends Primitive<BatchPrimitiveOptions<TItem, TResponse>> {
@@ -239,23 +247,23 @@ declare class BatchPrimitive<TItem extends TSchema, TResponse = any> extends Pri
239
247
  protected readonly context: BatchContext<Static<TItem>, TResponse>;
240
248
  constructor(...args: ConstructorParameters<typeof Primitive<BatchPrimitiveOptions<TItem, TResponse>>>);
241
249
  /**
242
- * Pushes an item into the batch and returns immediately with a unique ID.
243
- * The item will be processed asynchronously with other items when the batch is flushed.
244
- * Use wait(id) to get the processing result.
245
- */
250
+ * Pushes an item into the batch and returns immediately with a unique ID.
251
+ * The item will be processed asynchronously with other items when the batch is flushed.
252
+ * Use wait(id) to get the processing result.
253
+ */
246
254
  push(item: Static<TItem>): Promise<string>;
247
255
  /**
248
- * Wait for a specific item to be processed and get its result.
249
- * @param id The item ID returned from push()
250
- * @returns The processing result
251
- * @throws If the item doesn't exist or processing failed
252
- */
256
+ * Wait for a specific item to be processed and get its result.
257
+ * @param id The item ID returned from push()
258
+ * @returns The processing result
259
+ * @throws If the item doesn't exist or processing failed
260
+ */
253
261
  wait(id: string): Promise<TResponse>;
254
262
  /**
255
- * Get the current status of an item.
256
- * @param id The item ID returned from push()
257
- * @returns Status information or undefined if item doesn't exist
258
- */
263
+ * Get the current status of an item.
264
+ * @param id The item ID returned from push()
265
+ * @returns Status information or undefined if item doesn't exist
266
+ */
259
267
  status(id: string): {
260
268
  status: "pending" | "processing";
261
269
  } | {
@@ -266,65 +274,37 @@ declare class BatchPrimitive<TItem extends TSchema, TResponse = any> extends Pri
266
274
  error: Error;
267
275
  } | undefined;
268
276
  /**
269
- * Flush all partitions or a specific partition.
270
- */
277
+ * Flush all partitions or a specific partition.
278
+ */
271
279
  flush(partitionKey?: string): Promise<void>;
272
280
  /**
273
- * Clears completed and failed items from memory.
274
- * Call this periodically in long-running applications to prevent memory leaks.
275
- *
276
- * @param status Optional: only clear items with this specific status ('completed' or 'failed')
277
- * @returns The number of items cleared
278
- */
281
+ * Clears completed and failed items from memory.
282
+ * Call this periodically in long-running applications to prevent memory leaks.
283
+ *
284
+ * @param status Optional: only clear items with this specific status ('completed' or 'failed')
285
+ * @returns The number of items cleared
286
+ */
279
287
  clearCompleted(status?: "completed" | "failed"): number;
280
- protected readonly onReady: alepha1.HookPrimitive<"ready">;
281
- protected readonly dispose: alepha1.HookPrimitive<"stop">;
288
+ protected readonly onReady: alepha2.HookPrimitive<"ready">;
282
289
  }
283
290
  //#endregion
284
291
  //#region ../../src/batch/index.d.ts
285
292
  /**
286
- * This module allows you to group multiple asynchronous operations into a single "batch," which is then processed together.
287
- * This is an essential pattern for improving performance, reducing I/O, and interacting efficiently with rate-limited APIs or databases.
288
- *
289
- * ```ts
290
- * import { Alepha, $hook, run, t } from "alepha";
291
- * import { $batch } from "alepha/batch";
292
- *
293
- * class LoggingService {
294
- * // define the batch processor
295
- * logBatch = $batch({
296
- * schema: t.text(),
297
- * maxSize: 10,
298
- * maxDuration: [5, "seconds"],
299
- * handler: async (items) => {
300
- * console.log(`[BATCH LOG] Processing ${items.length} events:`, items);
301
- * },
302
- * });
303
- *
304
- * // example of how to use it
305
- * onReady = $hook({
306
- * on: "ready",
307
- * handler: async () => {
308
- * // push() returns an ID immediately
309
- * const id1 = await this.logBatch.push("Application started.");
310
- * const id2 = await this.logBatch.push("User authenticated.");
293
+ * | type | quality | stability |
294
+ * |------|---------|-----------|
295
+ * | backend | standard | stable |
311
296
  *
312
- * // optionally wait for processing to complete
313
- * await this.logBatch.wait(id1);
297
+ * Batch accumulation and processing.
314
298
  *
315
- * // or check the status
316
- * const status = this.logBatch.status(id2);
317
- * console.log(status?.status); // "pending" | "processing" | "completed" | "failed"
318
- * },
319
- * });
320
- * }
321
- * ```
299
+ * **Features:**
300
+ * - Batch accumulator with handler
301
+ * - Configurable batch size
302
+ * - Time-based triggers
303
+ * - Status tracking
322
304
  *
323
- * @see {@link $batch}
324
- * @see {@link BatchProvider}
325
305
  * @module alepha.batch
326
306
  */
327
- declare const AlephaBatch: alepha1.Service<alepha1.Module>;
307
+ declare const AlephaBatch: alepha2.Service<alepha2.Module>;
328
308
  //#endregion
329
309
  export { $batch, AlephaBatch, BatchContext, type BatchItemState, type BatchItemStatus, BatchOptions, BatchPrimitive, BatchPrimitiveOptions, BatchProvider, PartitionState };
330
310
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/batch/providers/BatchProvider.ts","../../src/batch/primitives/$batch.ts","../../src/batch/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../src/batch/providers/BatchProvider.ts","../../src/batch/primitives/$batch.ts","../../src/batch/index.ts"],"mappings":"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"}
@@ -13,10 +13,14 @@ var BatchProvider = class {
13
13
  dateTime = $inject(DateTimeProvider);
14
14
  retryProvider = $inject(RetryProvider);
15
15
  /**
16
+ * All active batch contexts managed by this provider.
17
+ */
18
+ contexts = /* @__PURE__ */ new Set();
19
+ /**
16
20
  * Creates a new batch context with the given options.
17
21
  */
18
22
  createContext(alepha, options) {
19
- return {
23
+ const context = {
20
24
  options,
21
25
  itemStates: /* @__PURE__ */ new Map(),
22
26
  partitions: /* @__PURE__ */ new Map(),
@@ -25,8 +29,25 @@ var BatchProvider = class {
25
29
  isReady: false,
26
30
  alepha
27
31
  };
32
+ this.contexts.add(context);
33
+ return context;
28
34
  }
29
35
  /**
36
+ * Shutdown hook - flushes all batch contexts on application stop.
37
+ */
38
+ onStop = $hook({
39
+ on: "stop",
40
+ priority: "first",
41
+ handler: async () => {
42
+ if (this.contexts.size === 0) return;
43
+ this.log.debug(`Shutting down ${this.contexts.size} batch context(s)...`);
44
+ const promises = [];
45
+ for (const context of this.contexts) promises.push(this.shutdown(context));
46
+ await Promise.all(promises);
47
+ this.log.debug("All batch contexts shut down");
48
+ }
49
+ });
50
+ /**
30
51
  * Get the effective maxSize for a context.
31
52
  */
32
53
  getMaxSize(context) {
@@ -334,58 +355,24 @@ var BatchPrimitive = class extends Primitive {
334
355
  await this.batchProvider.markReady(this.context);
335
356
  }
336
357
  });
337
- dispose = $hook({
338
- on: "stop",
339
- priority: "first",
340
- handler: async () => {
341
- await this.batchProvider.shutdown(this.context);
342
- }
343
- });
344
358
  };
345
359
  $batch[KIND] = BatchPrimitive;
346
360
 
347
361
  //#endregion
348
362
  //#region ../../src/batch/index.ts
349
363
  /**
350
- * This module allows you to group multiple asynchronous operations into a single "batch," which is then processed together.
351
- * This is an essential pattern for improving performance, reducing I/O, and interacting efficiently with rate-limited APIs or databases.
352
- *
353
- * ```ts
354
- * import { Alepha, $hook, run, t } from "alepha";
355
- * import { $batch } from "alepha/batch";
356
- *
357
- * class LoggingService {
358
- * // define the batch processor
359
- * logBatch = $batch({
360
- * schema: t.text(),
361
- * maxSize: 10,
362
- * maxDuration: [5, "seconds"],
363
- * handler: async (items) => {
364
- * console.log(`[BATCH LOG] Processing ${items.length} events:`, items);
365
- * },
366
- * });
367
- *
368
- * // example of how to use it
369
- * onReady = $hook({
370
- * on: "ready",
371
- * handler: async () => {
372
- * // push() returns an ID immediately
373
- * const id1 = await this.logBatch.push("Application started.");
374
- * const id2 = await this.logBatch.push("User authenticated.");
364
+ * | type | quality | stability |
365
+ * |------|---------|-----------|
366
+ * | backend | standard | stable |
375
367
  *
376
- * // optionally wait for processing to complete
377
- * await this.logBatch.wait(id1);
368
+ * Batch accumulation and processing.
378
369
  *
379
- * // or check the status
380
- * const status = this.logBatch.status(id2);
381
- * console.log(status?.status); // "pending" | "processing" | "completed" | "failed"
382
- * },
383
- * });
384
- * }
385
- * ```
370
+ * **Features:**
371
+ * - Batch accumulator with handler
372
+ * - Configurable batch size
373
+ * - Time-based triggers
374
+ * - Status tracking
386
375
  *
387
- * @see {@link $batch}
388
- * @see {@link BatchProvider}
389
376
  * @module alepha.batch
390
377
  */
391
378
  const AlephaBatch = $module({