alepha 0.22.0 → 0.24.0

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 (869) hide show
  1. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  2. package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
  3. package/dist/api/audits/index.browser.js +49 -52
  4. package/dist/api/audits/index.browser.js.map +1 -1
  5. package/dist/api/audits/index.d.ts +629 -565
  6. package/dist/api/audits/index.d.ts.map +1 -1
  7. package/dist/api/audits/index.js +206 -98
  8. package/dist/api/audits/index.js.map +1 -1
  9. package/dist/api/files/index.browser.js +44 -44
  10. package/dist/api/files/index.browser.js.map +1 -1
  11. package/dist/api/files/index.d.ts +292 -293
  12. package/dist/api/files/index.d.ts.map +1 -1
  13. package/dist/api/files/index.js +61 -64
  14. package/dist/api/files/index.js.map +1 -1
  15. package/dist/api/jobs/index.browser.js +61 -59
  16. package/dist/api/jobs/index.browser.js.map +1 -1
  17. package/dist/api/jobs/index.d.ts +546 -347
  18. package/dist/api/jobs/index.d.ts.map +1 -1
  19. package/dist/api/jobs/index.js +165 -86
  20. package/dist/api/jobs/index.js.map +1 -1
  21. package/dist/api/keys/index.d.ts +242 -230
  22. package/dist/api/keys/index.d.ts.map +1 -1
  23. package/dist/api/keys/index.js +63 -66
  24. package/dist/api/keys/index.js.map +1 -1
  25. package/dist/api/notifications/index.browser.js +40 -38
  26. package/dist/api/notifications/index.browser.js.map +1 -1
  27. package/dist/api/notifications/index.d.ts +339 -209
  28. package/dist/api/notifications/index.d.ts.map +1 -1
  29. package/dist/api/notifications/index.js +108 -60
  30. package/dist/api/notifications/index.js.map +1 -1
  31. package/dist/api/oauth/index.d.ts +190 -78
  32. package/dist/api/oauth/index.d.ts.map +1 -1
  33. package/dist/api/oauth/index.js +290 -68
  34. package/dist/api/oauth/index.js.map +1 -1
  35. package/dist/api/organizations/index.browser.js +14 -14
  36. package/dist/api/organizations/index.browser.js.map +1 -1
  37. package/dist/api/organizations/index.d.ts +158 -134
  38. package/dist/api/organizations/index.d.ts.map +1 -1
  39. package/dist/api/organizations/index.js +18 -18
  40. package/dist/api/organizations/index.js.map +1 -1
  41. package/dist/api/parameters/index.browser.js +74 -53
  42. package/dist/api/parameters/index.browser.js.map +1 -1
  43. package/dist/api/parameters/index.d.ts +607 -513
  44. package/dist/api/parameters/index.d.ts.map +1 -1
  45. package/dist/api/parameters/index.js +205 -127
  46. package/dist/api/parameters/index.js.map +1 -1
  47. package/dist/api/payments/index.d.ts +652 -449
  48. package/dist/api/payments/index.d.ts.map +1 -1
  49. package/dist/api/payments/index.js +159 -93
  50. package/dist/api/payments/index.js.map +1 -1
  51. package/dist/api/subscriptions/index.d.ts +1032 -762
  52. package/dist/api/subscriptions/index.d.ts.map +1 -1
  53. package/dist/api/subscriptions/index.js +166 -185
  54. package/dist/api/subscriptions/index.js.map +1 -1
  55. package/dist/api/users/index.browser.js +48 -71
  56. package/dist/api/users/index.browser.js.map +1 -1
  57. package/dist/api/users/index.d.ts +1297 -1109
  58. package/dist/api/users/index.d.ts.map +1 -1
  59. package/dist/api/users/index.js +454 -369
  60. package/dist/api/users/index.js.map +1 -1
  61. package/dist/api/verifications/index.browser.js +17 -17
  62. package/dist/api/verifications/index.browser.js.map +1 -1
  63. package/dist/api/verifications/index.d.ts +169 -157
  64. package/dist/api/verifications/index.d.ts.map +1 -1
  65. package/dist/api/verifications/index.js +47 -95
  66. package/dist/api/verifications/index.js.map +1 -1
  67. package/dist/background/index.d.ts +0 -1
  68. package/dist/background/index.d.ts.map +1 -1
  69. package/dist/background/index.js.map +1 -1
  70. package/dist/background/index.workerd.js.map +1 -1
  71. package/dist/batch/index.d.ts +0 -1
  72. package/dist/batch/index.d.ts.map +1 -1
  73. package/dist/batch/index.js.map +1 -1
  74. package/dist/bin/index.js +1 -1
  75. package/dist/bin/index.js.map +1 -1
  76. package/dist/bucket/index.d.ts +27 -32
  77. package/dist/bucket/index.d.ts.map +1 -1
  78. package/dist/bucket/index.js +56 -26
  79. package/dist/bucket/index.js.map +1 -1
  80. package/dist/bucket/index.workerd.js +52 -24
  81. package/dist/bucket/index.workerd.js.map +1 -1
  82. package/dist/cache/core/index.d.ts +4 -6
  83. package/dist/cache/core/index.d.ts.map +1 -1
  84. package/dist/cache/core/index.js +4 -10
  85. package/dist/cache/core/index.js.map +1 -1
  86. package/dist/cache/core/index.workerd.js +4 -10
  87. package/dist/cache/core/index.workerd.js.map +1 -1
  88. package/dist/cache/database/index.d.ts +22 -23
  89. package/dist/cache/database/index.d.ts.map +1 -1
  90. package/dist/cache/database/index.js +11 -20
  91. package/dist/cache/database/index.js.map +1 -1
  92. package/dist/cache/redis/index.d.ts +3 -4
  93. package/dist/cache/redis/index.d.ts.map +1 -1
  94. package/dist/cache/redis/index.js +2 -2
  95. package/dist/cache/redis/index.js.map +1 -1
  96. package/dist/captcha/index.d.ts.map +1 -1
  97. package/dist/captcha/index.js +4 -4
  98. package/dist/captcha/index.js.map +1 -1
  99. package/dist/cli/config/index.d.ts +0 -1
  100. package/dist/cli/config/index.d.ts.map +1 -1
  101. package/dist/cli/core/index.d.ts +244 -475
  102. package/dist/cli/core/index.d.ts.map +1 -1
  103. package/dist/cli/core/index.js +308 -383
  104. package/dist/cli/core/index.js.map +1 -1
  105. package/dist/cli/devtools/index.d.ts +3 -9
  106. package/dist/cli/devtools/index.d.ts.map +1 -1
  107. package/dist/cli/devtools/index.js +3 -3
  108. package/dist/cli/devtools/index.js.map +1 -1
  109. package/dist/cli/i18n/index.d.ts +20 -39
  110. package/dist/cli/i18n/index.d.ts.map +1 -1
  111. package/dist/cli/i18n/index.js +51 -17
  112. package/dist/cli/i18n/index.js.map +1 -1
  113. package/dist/cli/platform/index.d.ts +89 -82
  114. package/dist/cli/platform/index.d.ts.map +1 -1
  115. package/dist/cli/platform/index.js +27 -33
  116. package/dist/cli/platform/index.js.map +1 -1
  117. package/dist/cli/platform-lib/index.d.ts +383 -410
  118. package/dist/cli/platform-lib/index.d.ts.map +1 -1
  119. package/dist/cli/platform-lib/index.js +300 -258
  120. package/dist/cli/platform-lib/index.js.map +1 -1
  121. package/dist/cli/vendor/index.d.ts +17 -41
  122. package/dist/cli/vendor/index.d.ts.map +1 -1
  123. package/dist/cli/vendor/index.js +10 -13
  124. package/dist/cli/vendor/index.js.map +1 -1
  125. package/dist/command/index.d.ts +82 -194
  126. package/dist/command/index.d.ts.map +1 -1
  127. package/dist/command/index.js +160 -563
  128. package/dist/command/index.js.map +1 -1
  129. package/dist/core/index.browser.js +845 -859
  130. package/dist/core/index.browser.js.map +1 -1
  131. package/dist/core/index.d.ts +787 -527
  132. package/dist/core/index.d.ts.map +1 -1
  133. package/dist/core/index.js +845 -859
  134. package/dist/core/index.js.map +1 -1
  135. package/dist/core/index.native.js +845 -859
  136. package/dist/core/index.native.js.map +1 -1
  137. package/dist/core/index.workerd.js +845 -859
  138. package/dist/core/index.workerd.js.map +1 -1
  139. package/dist/crypto/index.browser.js +1 -1
  140. package/dist/crypto/index.browser.js.map +1 -1
  141. package/dist/crypto/index.d.ts +3 -4
  142. package/dist/crypto/index.d.ts.map +1 -1
  143. package/dist/crypto/index.js +6 -3
  144. package/dist/crypto/index.js.map +1 -1
  145. package/dist/datetime/index.d.ts +12 -2
  146. package/dist/datetime/index.d.ts.map +1 -1
  147. package/dist/datetime/index.js +6 -1
  148. package/dist/datetime/index.js.map +1 -1
  149. package/dist/email/brevo/index.d.ts +0 -1
  150. package/dist/email/brevo/index.d.ts.map +1 -1
  151. package/dist/email/brevo/index.js +4 -4
  152. package/dist/email/brevo/index.js.map +1 -1
  153. package/dist/email/cloudflare/index.d.ts +0 -1
  154. package/dist/email/cloudflare/index.d.ts.map +1 -1
  155. package/dist/email/cloudflare/index.js +2 -2
  156. package/dist/email/cloudflare/index.js.map +1 -1
  157. package/dist/email/core/index.d.ts +15 -7
  158. package/dist/email/core/index.d.ts.map +1 -1
  159. package/dist/email/core/index.js +14 -5
  160. package/dist/email/core/index.js.map +1 -1
  161. package/dist/email/core/index.workerd.js +5 -1
  162. package/dist/email/core/index.workerd.js.map +1 -1
  163. package/dist/email/smtp/index.d.ts +8 -9
  164. package/dist/email/smtp/index.d.ts.map +1 -1
  165. package/dist/email/smtp/index.js +702 -479
  166. package/dist/email/smtp/index.js.map +1 -1
  167. package/dist/fake/index.d.ts +1580 -1238
  168. package/dist/fake/index.d.ts.map +1 -1
  169. package/dist/fake/index.js +11728 -32131
  170. package/dist/fake/index.js.map +1 -1
  171. package/dist/lock/core/index.d.ts +13 -9
  172. package/dist/lock/core/index.d.ts.map +1 -1
  173. package/dist/lock/core/index.js +5 -5
  174. package/dist/lock/core/index.js.map +1 -1
  175. package/dist/lock/redis/index.d.ts +0 -1
  176. package/dist/lock/redis/index.d.ts.map +1 -1
  177. package/dist/lock/redis/index.js.map +1 -1
  178. package/dist/logger/index.d.ts +81 -69
  179. package/dist/logger/index.d.ts.map +1 -1
  180. package/dist/logger/index.js +123 -56
  181. package/dist/logger/index.js.map +1 -1
  182. package/dist/mcp/index.d.ts +36 -90
  183. package/dist/mcp/index.d.ts.map +1 -1
  184. package/dist/mcp/index.js +65 -70
  185. package/dist/mcp/index.js.map +1 -1
  186. package/dist/orm/core/index.browser.js +54 -40
  187. package/dist/orm/core/index.browser.js.map +1 -1
  188. package/dist/orm/core/index.bun.js +140 -106
  189. package/dist/orm/core/index.bun.js.map +1 -1
  190. package/dist/orm/core/index.d.ts +145 -150
  191. package/dist/orm/core/index.d.ts.map +1 -1
  192. package/dist/orm/core/index.js +144 -109
  193. package/dist/orm/core/index.js.map +1 -1
  194. package/dist/orm/postgres/index.bun.js +64 -54
  195. package/dist/orm/postgres/index.bun.js.map +1 -1
  196. package/dist/orm/postgres/index.d.ts +36 -76
  197. package/dist/orm/postgres/index.d.ts.map +1 -1
  198. package/dist/orm/postgres/index.js +67 -57
  199. package/dist/orm/postgres/index.js.map +1 -1
  200. package/dist/queue/core/index.d.ts +62 -75
  201. package/dist/queue/core/index.d.ts.map +1 -1
  202. package/dist/queue/core/index.js +48 -71
  203. package/dist/queue/core/index.js.map +1 -1
  204. package/dist/queue/core/index.workerd.js +48 -71
  205. package/dist/queue/core/index.workerd.js.map +1 -1
  206. package/dist/queue/redis/index.d.ts +3 -4
  207. package/dist/queue/redis/index.d.ts.map +1 -1
  208. package/dist/queue/redis/index.js +2 -2
  209. package/dist/queue/redis/index.js.map +1 -1
  210. package/dist/react/auth/index.browser.js.map +1 -1
  211. package/dist/react/auth/index.d.ts +7 -4
  212. package/dist/react/auth/index.d.ts.map +1 -1
  213. package/dist/react/auth/index.js.map +1 -1
  214. package/dist/react/core/index.d.ts +87 -5
  215. package/dist/react/core/index.d.ts.map +1 -1
  216. package/dist/react/core/index.js +170 -23
  217. package/dist/react/core/index.js.map +1 -1
  218. package/dist/react/form/index.d.ts +4 -6
  219. package/dist/react/form/index.d.ts.map +1 -1
  220. package/dist/react/form/index.js +107 -71
  221. package/dist/react/form/index.js.map +1 -1
  222. package/dist/react/head/index.browser.js.map +1 -1
  223. package/dist/react/head/index.d.ts +0 -1
  224. package/dist/react/head/index.d.ts.map +1 -1
  225. package/dist/react/head/index.js.map +1 -1
  226. package/dist/react/i18n/index.d.ts +47 -5
  227. package/dist/react/i18n/index.d.ts.map +1 -1
  228. package/dist/react/i18n/index.js +116 -12
  229. package/dist/react/i18n/index.js.map +1 -1
  230. package/dist/react/intro/index.d.ts +1 -4
  231. package/dist/react/intro/index.d.ts.map +1 -1
  232. package/dist/react/intro/index.js.map +1 -1
  233. package/dist/react/router/index.browser.js +188 -29
  234. package/dist/react/router/index.browser.js.map +1 -1
  235. package/dist/react/router/index.d.ts +480 -372
  236. package/dist/react/router/index.d.ts.map +1 -1
  237. package/dist/react/router/index.js +261 -47
  238. package/dist/react/router/index.js.map +1 -1
  239. package/dist/react/sitemap/index.browser.js +35 -0
  240. package/dist/react/sitemap/index.browser.js.map +1 -0
  241. package/dist/react/sitemap/index.d.ts +91 -0
  242. package/dist/react/sitemap/index.d.ts.map +1 -0
  243. package/dist/react/sitemap/index.js +131 -0
  244. package/dist/react/sitemap/index.js.map +1 -0
  245. package/dist/react/testing/index.d.ts +4 -5
  246. package/dist/react/testing/index.d.ts.map +1 -1
  247. package/dist/react/testing/index.js +41 -15
  248. package/dist/react/testing/index.js.map +1 -1
  249. package/dist/react/testing/{chunk-BpyX8vjI.js → rolldown-runtime-Bl3dcgcQ.js} +1 -1
  250. package/dist/react/ui/index.d.ts +35 -34
  251. package/dist/react/ui/index.d.ts.map +1 -1
  252. package/dist/react/ui/index.js +12 -17
  253. package/dist/react/ui/index.js.map +1 -1
  254. package/dist/redis/index.bun.js +5 -5
  255. package/dist/redis/index.bun.js.map +1 -1
  256. package/dist/redis/index.d.ts +6 -7
  257. package/dist/redis/index.d.ts.map +1 -1
  258. package/dist/redis/index.js +6 -6
  259. package/dist/redis/index.js.map +1 -1
  260. package/dist/retry/index.d.ts +0 -1
  261. package/dist/retry/index.d.ts.map +1 -1
  262. package/dist/retry/index.js.map +1 -1
  263. package/dist/router/index.d.ts.map +1 -1
  264. package/dist/router/index.js.map +1 -1
  265. package/dist/scheduler/index.d.ts +4 -12
  266. package/dist/scheduler/index.d.ts.map +1 -1
  267. package/dist/scheduler/index.js +9 -4
  268. package/dist/scheduler/index.js.map +1 -1
  269. package/dist/scheduler/index.workerd.js +9 -4
  270. package/dist/scheduler/index.workerd.js.map +1 -1
  271. package/dist/security/index.browser.js +30 -28
  272. package/dist/security/index.browser.js.map +1 -1
  273. package/dist/security/index.d.ts +113 -44
  274. package/dist/security/index.d.ts.map +1 -1
  275. package/dist/security/index.js +452 -37
  276. package/dist/security/index.js.map +1 -1
  277. package/dist/server/auth/index.browser.js +19 -19
  278. package/dist/server/auth/index.browser.js.map +1 -1
  279. package/dist/server/auth/index.d.ts +215 -187
  280. package/dist/server/auth/index.d.ts.map +1 -1
  281. package/dist/server/auth/index.js +1145 -86
  282. package/dist/server/auth/index.js.map +1 -1
  283. package/dist/server/cookies/index.browser.js +103 -5
  284. package/dist/server/cookies/index.browser.js.map +1 -1
  285. package/dist/server/cookies/index.d.ts +86 -4
  286. package/dist/server/cookies/index.d.ts.map +1 -1
  287. package/dist/server/cookies/index.js +121 -8
  288. package/dist/server/cookies/index.js.map +1 -1
  289. package/dist/server/core/index.browser.js +22 -27
  290. package/dist/server/core/index.browser.js.map +1 -1
  291. package/dist/server/core/index.d.ts +134 -85
  292. package/dist/server/core/index.d.ts.map +1 -1
  293. package/dist/server/core/index.js +130 -118
  294. package/dist/server/core/index.js.map +1 -1
  295. package/dist/server/cors/index.d.ts +9 -10
  296. package/dist/server/cors/index.d.ts.map +1 -1
  297. package/dist/server/cors/index.js +14 -26
  298. package/dist/server/cors/index.js.map +1 -1
  299. package/dist/server/etag/index.d.ts +2 -3
  300. package/dist/server/etag/index.d.ts.map +1 -1
  301. package/dist/server/etag/index.js.map +1 -1
  302. package/dist/server/health/index.d.ts +18 -19
  303. package/dist/server/health/index.d.ts.map +1 -1
  304. package/dist/server/health/index.js +6 -6
  305. package/dist/server/health/index.js.map +1 -1
  306. package/dist/server/links/index.browser.js +15 -18
  307. package/dist/server/links/index.browser.js.map +1 -1
  308. package/dist/server/links/index.d.ts +66 -67
  309. package/dist/server/links/index.d.ts.map +1 -1
  310. package/dist/server/links/index.js +29 -32
  311. package/dist/server/links/index.js.map +1 -1
  312. package/dist/server/metrics/index.d.ts +0 -1
  313. package/dist/server/metrics/index.d.ts.map +1 -1
  314. package/dist/server/metrics/index.js +10 -3
  315. package/dist/server/metrics/index.js.map +1 -1
  316. package/dist/server/proxy/index.d.ts +0 -1
  317. package/dist/server/proxy/index.d.ts.map +1 -1
  318. package/dist/server/proxy/index.js.map +1 -1
  319. package/dist/server/rate-limit/index.d.ts +8 -9
  320. package/dist/server/rate-limit/index.d.ts.map +1 -1
  321. package/dist/server/rate-limit/index.js +6 -12
  322. package/dist/server/rate-limit/index.js.map +1 -1
  323. package/dist/server/static/index.d.ts +0 -1
  324. package/dist/server/static/index.d.ts.map +1 -1
  325. package/dist/server/static/index.js.map +1 -1
  326. package/dist/server/swagger/index.d.ts +4 -4
  327. package/dist/server/swagger/index.d.ts.map +1 -1
  328. package/dist/server/swagger/index.js +37 -25
  329. package/dist/server/swagger/index.js.map +1 -1
  330. package/dist/sms/index.d.ts +0 -1
  331. package/dist/sms/index.d.ts.map +1 -1
  332. package/dist/sms/index.js.map +1 -1
  333. package/dist/system/index.browser.js.map +1 -1
  334. package/dist/system/index.d.ts +0 -1
  335. package/dist/system/index.d.ts.map +1 -1
  336. package/dist/system/index.js +2 -1
  337. package/dist/system/index.js.map +1 -1
  338. package/dist/system/index.workerd.js.map +1 -1
  339. package/dist/topic/core/index.d.ts +19 -20
  340. package/dist/topic/core/index.d.ts.map +1 -1
  341. package/dist/topic/core/index.js +8 -8
  342. package/dist/topic/core/index.js.map +1 -1
  343. package/dist/topic/redis/index.d.ts +3 -4
  344. package/dist/topic/redis/index.d.ts.map +1 -1
  345. package/dist/topic/redis/index.js +2 -2
  346. package/dist/topic/redis/index.js.map +1 -1
  347. package/package.json +36 -36
  348. package/src/api/audits/__tests__/AuditJobs.spec.ts +83 -0
  349. package/src/api/audits/__tests__/AuditService.spec.ts +139 -1
  350. package/src/api/audits/controllers/AdminAuditController.ts +41 -41
  351. package/src/api/audits/entities/audits.ts +22 -22
  352. package/src/api/audits/index.ts +6 -1
  353. package/src/api/audits/jobs/AuditJobs.ts +29 -0
  354. package/src/api/audits/parameters/AuditParameters.ts +51 -0
  355. package/src/api/audits/primitives/$audit.ts +24 -0
  356. package/src/api/audits/schemas/auditQuerySchema.ts +13 -13
  357. package/src/api/audits/schemas/createAuditSchema.ts +18 -18
  358. package/src/api/audits/services/AuditService.ts +79 -7
  359. package/src/api/files/__tests__/FileController.spec.ts +5 -5
  360. package/src/api/files/__tests__/FileJobs.spec.ts +6 -0
  361. package/src/api/files/controllers/FileController.ts +25 -25
  362. package/src/api/files/entities/files.ts +15 -15
  363. package/src/api/files/schemas/fileCreatorSummarySchema.ts +7 -7
  364. package/src/api/files/schemas/fileQuerySchema.ts +9 -9
  365. package/src/api/files/schemas/fileResourceSchema.ts +7 -9
  366. package/src/api/files/schemas/storageStatsSchema.ts +13 -13
  367. package/src/api/jobs/__tests__/$job-hardening.spec.ts +289 -0
  368. package/src/api/jobs/__tests__/$job.spec.ts +18 -18
  369. package/src/api/jobs/controllers/AdminJobController.ts +8 -8
  370. package/src/api/jobs/entities/jobExecutionEntity.ts +29 -19
  371. package/src/api/jobs/providers/JobProvider.ts +128 -12
  372. package/src/api/jobs/providers/JobQueueProvider.ts +2 -2
  373. package/src/api/jobs/schemas/jobConfigAtom.ts +22 -22
  374. package/src/api/jobs/schemas/jobExecutionQuerySchema.ts +6 -6
  375. package/src/api/jobs/schemas/jobExecutionResourceSchema.ts +11 -15
  376. package/src/api/jobs/schemas/jobRegistrationSchema.ts +20 -19
  377. package/src/api/jobs/schemas/triggerJobSchema.ts +3 -3
  378. package/src/api/jobs/services/JobService.ts +6 -6
  379. package/src/api/keys/__tests__/ApiKeyService.spec.ts +2 -2
  380. package/src/api/keys/controllers/AdminApiKeyController.ts +10 -10
  381. package/src/api/keys/entities/apiKeyEntity.ts +15 -15
  382. package/src/api/keys/schemas/adminApiKeyQuerySchema.ts +4 -4
  383. package/src/api/keys/schemas/adminApiKeyResourceSchema.ts +15 -15
  384. package/src/api/keys/schemas/createApiKeyBodySchema.ts +5 -5
  385. package/src/api/keys/schemas/createApiKeyResponseSchema.ts +9 -9
  386. package/src/api/keys/schemas/listApiKeyResponseSchema.ts +13 -13
  387. package/src/api/keys/schemas/revokeApiKeyParamsSchema.ts +3 -3
  388. package/src/api/keys/schemas/revokeApiKeyResponseSchema.ts +3 -3
  389. package/src/api/notifications/__tests__/AlephaApiNotifications.spec.ts +2 -2
  390. package/src/api/notifications/controllers/AdminNotificationController.ts +38 -14
  391. package/src/api/notifications/jobs/NotificationJobs.ts +7 -6
  392. package/src/api/notifications/primitives/$notification.ts +43 -4
  393. package/src/api/notifications/schemas/notificationContactPreferencesSchema.ts +4 -4
  394. package/src/api/notifications/schemas/notificationContactSchema.ts +7 -7
  395. package/src/api/notifications/schemas/notificationDetailResourceSchema.ts +9 -11
  396. package/src/api/notifications/schemas/notificationPayloadSchema.ts +11 -9
  397. package/src/api/notifications/schemas/notificationQuerySchema.ts +6 -6
  398. package/src/api/notifications/schemas/notificationResourceSchema.ts +14 -14
  399. package/src/api/notifications/services/NotificationSenderService.ts +38 -2
  400. package/src/api/oauth/__tests__/OAuthClientService.spec.ts +42 -0
  401. package/src/api/oauth/__tests__/OAuthController.spec.ts +128 -0
  402. package/src/api/oauth/controllers/OAuthController.ts +132 -12
  403. package/src/api/oauth/entities/oauthClientEntity.ts +29 -12
  404. package/src/api/oauth/helpers/oauthMetadata.ts +1 -0
  405. package/src/api/oauth/helpers/oidcMetadata.ts +19 -0
  406. package/src/api/oauth/index.ts +1 -0
  407. package/src/api/oauth/schemas/authorizeDecisionBodySchema.ts +12 -11
  408. package/src/api/oauth/schemas/authorizeQuerySchema.ts +12 -10
  409. package/src/api/oauth/schemas/registerClientBodySchema.ts +10 -11
  410. package/src/api/oauth/schemas/tokenRequestBodySchema.ts +9 -8
  411. package/src/api/oauth/services/OAuthClientService.ts +228 -15
  412. package/src/api/organizations/controllers/AdminOrganizationController.ts +8 -8
  413. package/src/api/organizations/entities/organizations.ts +6 -6
  414. package/src/api/organizations/schemas/createOrganizationSchema.ts +5 -5
  415. package/src/api/organizations/schemas/organizationQuerySchema.ts +4 -4
  416. package/src/api/organizations/schemas/updateOrganizationSchema.ts +1 -2
  417. package/src/api/parameters/__tests__/$parameter.spec.ts +229 -50
  418. package/src/api/parameters/controllers/AdminParameterController.ts +9 -12
  419. package/src/api/parameters/entities/parameters.ts +29 -16
  420. package/src/api/parameters/primitives/$parameter.ts +3 -3
  421. package/src/api/parameters/schemas/activateParameterBodySchema.ts +4 -4
  422. package/src/api/parameters/schemas/createParameterVersionBodySchema.ts +15 -15
  423. package/src/api/parameters/schemas/parameterCreatorSummarySchema.ts +7 -7
  424. package/src/api/parameters/schemas/parameterCurrentResponseSchema.ts +7 -7
  425. package/src/api/parameters/schemas/parameterHistoryResponseSchema.ts +3 -3
  426. package/src/api/parameters/schemas/parameterNameParamSchema.ts +2 -3
  427. package/src/api/parameters/schemas/parameterNamesResponseSchema.ts +3 -3
  428. package/src/api/parameters/schemas/parameterResponseSchema.ts +3 -3
  429. package/src/api/parameters/schemas/parameterStatusSchema.ts +2 -2
  430. package/src/api/parameters/schemas/parameterTreeNodeSchema.ts +6 -6
  431. package/src/api/parameters/schemas/parameterVersionParamSchema.ts +5 -6
  432. package/src/api/parameters/schemas/parameterVersionResponseSchema.ts +3 -3
  433. package/src/api/parameters/schemas/rollbackParameterBodySchema.ts +6 -9
  434. package/src/api/parameters/services/ParameterProvider.ts +152 -65
  435. package/src/api/payments/controllers/AdminPaymentController.ts +7 -7
  436. package/src/api/payments/controllers/MockCheckoutController.ts +79 -28
  437. package/src/api/payments/controllers/PaymentController.ts +4 -4
  438. package/src/api/payments/entities/paymentIntents.ts +11 -11
  439. package/src/api/payments/entities/paymentMethods.ts +11 -11
  440. package/src/api/payments/entities/refunds.ts +9 -9
  441. package/src/api/payments/providers/PaymentProvider.ts +18 -0
  442. package/src/api/payments/schemas/intentSchemas.ts +25 -25
  443. package/src/api/payments/schemas/paymentMethodSchemas.ts +3 -3
  444. package/src/api/payments/services/PaymentService.ts +60 -3
  445. package/src/api/subscriptions/__tests__/SubscriptionService.spec.ts +14 -0
  446. package/src/api/subscriptions/controllers/AdminSubscriptionController.ts +11 -11
  447. package/src/api/subscriptions/controllers/SubscriptionController.ts +5 -4
  448. package/src/api/subscriptions/entities/subscriptionEvents.ts +15 -15
  449. package/src/api/subscriptions/entities/subscriptions.ts +22 -22
  450. package/src/api/subscriptions/notifications/SubscriptionNotifications.ts +22 -22
  451. package/src/api/subscriptions/schemas/cancelSubscriptionSchema.ts +4 -4
  452. package/src/api/subscriptions/schemas/changePlanSchema.ts +5 -5
  453. package/src/api/subscriptions/schemas/createSubscriptionSchema.ts +14 -7
  454. package/src/api/subscriptions/schemas/entitlementsSchema.ts +10 -10
  455. package/src/api/subscriptions/schemas/mrrSchema.ts +9 -9
  456. package/src/api/subscriptions/schemas/planDefinitionSchema.ts +21 -21
  457. package/src/api/subscriptions/schemas/planResourceSchema.ts +19 -19
  458. package/src/api/subscriptions/schemas/subscriptionQuerySchema.ts +8 -8
  459. package/src/api/subscriptions/schemas/subscriptionSettingsSchema.ts +7 -7
  460. package/src/api/subscriptions/schemas/subscriptionStatsSchema.ts +17 -17
  461. package/src/api/subscriptions/services/SubscriptionConfig.ts +2 -2
  462. package/src/api/users/__tests__/ApiKeys-integration.spec.ts +11 -11
  463. package/src/api/users/atoms/realmAuthSettingsAtom.ts +111 -119
  464. package/src/api/users/controllers/AdminIdentityController.ts +29 -19
  465. package/src/api/users/controllers/AdminSessionController.ts +37 -27
  466. package/src/api/users/controllers/AdminUserController.ts +75 -53
  467. package/src/api/users/controllers/MySessionController.ts +125 -0
  468. package/src/api/users/controllers/RealmController.ts +9 -9
  469. package/src/api/users/controllers/UserController.ts +55 -55
  470. package/src/api/users/entities/identities.ts +8 -8
  471. package/src/api/users/entities/sessions.ts +17 -17
  472. package/src/api/users/entities/users.ts +17 -17
  473. package/src/api/users/index.ts +3 -0
  474. package/src/api/users/notifications/UserNotifications.ts +76 -24
  475. package/src/api/users/primitives/$realm.ts +12 -0
  476. package/src/api/users/schemas/completePasswordResetRequestSchema.ts +8 -12
  477. package/src/api/users/schemas/completeRegistrationRequestSchema.ts +17 -20
  478. package/src/api/users/schemas/createUserSchema.ts +2 -2
  479. package/src/api/users/schemas/identityQuerySchema.ts +4 -4
  480. package/src/api/users/schemas/identityResourceSchema.ts +3 -2
  481. package/src/api/users/schemas/loginSchema.ts +4 -4
  482. package/src/api/users/schemas/passwordResetIntentResponseSchema.ts +6 -8
  483. package/src/api/users/schemas/realmConfigSchema.ts +10 -10
  484. package/src/api/users/schemas/registerQuerySchema.ts +6 -6
  485. package/src/api/users/schemas/registerRequestSchema.ts +21 -43
  486. package/src/api/users/schemas/registerResponseSchema.ts +2 -2
  487. package/src/api/users/schemas/registerSchema.ts +13 -31
  488. package/src/api/users/schemas/registrationIntentResponseSchema.ts +19 -23
  489. package/src/api/users/schemas/resetPasswordSchema.ts +10 -17
  490. package/src/api/users/schemas/sessionQuerySchema.ts +3 -3
  491. package/src/api/users/schemas/sessionResourceSchema.ts +25 -25
  492. package/src/api/users/schemas/updateUserSchema.ts +3 -4
  493. package/src/api/users/schemas/userQuerySchema.ts +7 -7
  494. package/src/api/users/services/RegistrationService.ts +25 -11
  495. package/src/api/users/services/UserService.ts +12 -6
  496. package/src/api/verifications/__tests__/CodeVerification.spec.ts +63 -101
  497. package/src/api/verifications/__tests__/LinkVerification.spec.ts +23 -92
  498. package/src/api/verifications/controllers/VerificationController.ts +13 -27
  499. package/src/api/verifications/entities/verifications.ts +13 -14
  500. package/src/api/verifications/schemas/requestVerificationCodeResponseSchema.ts +17 -14
  501. package/src/api/verifications/schemas/validateVerificationCodeResponseSchema.ts +9 -10
  502. package/src/api/verifications/schemas/verificationSettingsSchema.ts +65 -66
  503. package/src/api/verifications/schemas/verificationTypeEnumSchema.ts +2 -2
  504. package/src/api/verifications/services/VerificationService.ts +12 -0
  505. package/src/background/__tests__/BackgroundTaskProvider.spec.ts +36 -0
  506. package/src/batch/__tests__/$batch.spec.ts +22 -22
  507. package/src/batch/__tests__/startup-buffering.spec.ts +9 -9
  508. package/src/bin/index.ts +1 -1
  509. package/src/bucket/__tests__/TenantScopedBucket.spec.ts +60 -0
  510. package/src/bucket/providers/LocalFileStorageProvider.ts +14 -6
  511. package/src/bucket/providers/MemoryFileStorageProvider.ts +18 -7
  512. package/src/bucket/providers/R2FileStorageProvider.ts +14 -6
  513. package/src/bucket/providers/S3FileStorageProvider.ts +31 -15
  514. package/src/cache/core/primitives/$cache.ts +7 -10
  515. package/src/cache/database/entities/cacheEntries.ts +16 -27
  516. package/src/cache/database/providers/DatabaseCacheProvider.ts +15 -13
  517. package/src/cache/redis/providers/RedisCacheProvider.ts +6 -6
  518. package/src/captcha/providers/TurnstileCaptchaProvider.ts +4 -4
  519. package/src/cli/core/__tests__/BuildCloudflareTask.spec.ts +178 -0
  520. package/src/cli/core/__tests__/BuildDockerTask.spec.ts +0 -2
  521. package/src/cli/core/__tests__/DbCommand.spec.ts +108 -0
  522. package/src/cli/core/atoms/appEntryOptions.ts +5 -5
  523. package/src/cli/core/atoms/buildOptions.ts +76 -88
  524. package/src/cli/core/atoms/changelogOptions.ts +3 -3
  525. package/src/cli/core/atoms/devOptions.ts +3 -3
  526. package/src/cli/core/commands/build.ts +36 -49
  527. package/src/cli/core/commands/db.ts +171 -83
  528. package/src/cli/core/commands/dev.ts +8 -8
  529. package/src/cli/core/commands/gen/changelog.ts +12 -14
  530. package/src/cli/core/commands/gen/env.ts +6 -6
  531. package/src/cli/core/commands/gen/openapi.ts +6 -6
  532. package/src/cli/core/commands/init.ts +28 -33
  533. package/src/cli/core/commands/pack.ts +10 -10
  534. package/src/cli/core/commands/root.ts +7 -8
  535. package/src/cli/core/commands/test.ts +17 -20
  536. package/src/cli/core/index.ts +0 -3
  537. package/src/cli/core/tasks/BuildCloudflareTask.ts +138 -245
  538. package/src/cli/core/tasks/BuildPrerenderTask.ts +44 -7
  539. package/src/cli/core/templates/apiHelloResponseSchemaTs.ts +4 -4
  540. package/src/cli/devtools/atoms/devtoolsOptions.ts +6 -6
  541. package/src/cli/i18n/__tests__/I18nCheckService.spec.ts +48 -0
  542. package/src/cli/i18n/atoms/i18nOptions.ts +8 -8
  543. package/src/cli/i18n/services/I18nCheckService.ts +65 -11
  544. package/src/cli/platform/commands/SecretsCommand.ts +24 -25
  545. package/src/cli/platform/commands/platform.ts +40 -46
  546. package/src/cli/platform/index.ts +1 -1
  547. package/src/cli/platform-lib/__tests__/CloudflareAdapter.spec.ts +0 -4
  548. package/src/cli/platform-lib/__tests__/PlatformInspector.spec.ts +10 -3
  549. package/src/cli/platform-lib/__tests__/VercelAdapter.spec.ts +0 -2
  550. package/src/cli/platform-lib/adapters/CloudflareAdapter.ts +141 -50
  551. package/src/cli/platform-lib/adapters/VercelAdapter.ts +6 -11
  552. package/src/cli/platform-lib/atoms/platformOptions.ts +46 -25
  553. package/src/cli/platform-lib/schemas/cloudflare.ts +87 -87
  554. package/src/cli/platform-lib/schemas/platform.ts +51 -51
  555. package/src/cli/platform-lib/schemas/vercel.ts +28 -28
  556. package/src/cli/platform-lib/services/CloudflareApi.ts +5 -5
  557. package/src/cli/platform-lib/services/VercelApi.ts +4 -4
  558. package/src/cli/platform-lib/services/VercelCli.ts +6 -15
  559. package/src/cli/platform-lib/services/WranglerApi.ts +6 -15
  560. package/src/cli/vendor/atoms/vendorOptions.ts +9 -9
  561. package/src/cli/vendor/commands/VendorCommand.ts +11 -12
  562. package/src/command/__tests__/$command.spec.ts +82 -83
  563. package/src/command/__tests__/Asker.spec.ts +6 -13
  564. package/src/command/__tests__/CliProvider.spec.ts +136 -149
  565. package/src/command/__tests__/Runner.spec.ts +86 -110
  566. package/src/command/helpers/Asker.ts +23 -58
  567. package/src/command/helpers/Runner.ts +34 -110
  568. package/src/command/index.ts +4 -9
  569. package/src/command/primitives/$command.ts +10 -10
  570. package/src/command/providers/CliProvider.ts +183 -161
  571. package/src/core/Alepha.ts +62 -13
  572. package/src/core/__tests__/$atom.spec.ts +52 -3
  573. package/src/core/__tests__/$computed.spec.ts +129 -0
  574. package/src/core/__tests__/$env.spec.ts +13 -13
  575. package/src/core/__tests__/$inject.spec.ts +4 -4
  576. package/src/core/__tests__/$module.spec.ts +1 -1
  577. package/src/core/__tests__/Alepha-graph.spec.ts +1 -1
  578. package/src/core/__tests__/Alepha-parseEnv.spec.ts +32 -32
  579. package/src/core/__tests__/Alepha-start.spec.ts +3 -3
  580. package/src/core/__tests__/CodecManager.spec.ts +113 -94
  581. package/src/core/__tests__/KeylessJsonSchemaCodec.spec.ts +138 -138
  582. package/src/core/__tests__/SchemaValidator.spec.ts +43 -44
  583. package/src/core/__tests__/StateManager.persist.browser.spec.ts +87 -0
  584. package/src/core/__tests__/StateManager.spec.ts +423 -0
  585. package/src/core/__tests__/TypeBox-usecases.spec.ts +8 -8
  586. package/src/core/__tests__/TypeProvider.spec.ts +314 -309
  587. package/src/core/__tests__/dump.spec.ts +6 -6
  588. package/src/core/__tests__/pagination.spec.ts +4 -4
  589. package/src/core/__tests__/scoped-after-start.spec.ts +43 -0
  590. package/src/core/errors/TypeBoxError.ts +10 -4
  591. package/src/core/helpers/FileLike.ts +5 -5
  592. package/src/core/helpers/coerceStrings.ts +70 -0
  593. package/src/core/helpers/jsonSchemaToZod.ts +112 -0
  594. package/src/core/index.shared.ts +4 -1
  595. package/src/core/primitives/$atom.ts +95 -27
  596. package/src/core/primitives/$computed.ts +148 -0
  597. package/src/core/primitives/$env.ts +5 -5
  598. package/src/core/primitives/$state.ts +1 -1
  599. package/src/core/providers/AlsProvider.ts +26 -0
  600. package/src/core/providers/CodecManager.ts +1 -2
  601. package/src/core/providers/JsonSchemaCodec.ts +1 -2
  602. package/src/core/providers/KeylessJsonSchemaCodec.ts +82 -57
  603. package/src/core/providers/SchemaValidator.ts +48 -158
  604. package/src/core/providers/StateManager.ts +383 -9
  605. package/src/core/providers/TypeProvider.ts +80 -734
  606. package/src/core/providers/ZodProvider.ts +380 -0
  607. package/src/core/providers/zodAugment.ts +69 -0
  608. package/src/core/schemas/pageQuerySchema.ts +19 -21
  609. package/src/core/schemas/pageSchema.ts +47 -57
  610. package/src/crypto/__tests__/SecretProvider.spec.ts +31 -0
  611. package/src/crypto/providers/SecretProvider.ts +16 -10
  612. package/src/datetime/primitives/$throttle.ts +6 -1
  613. package/src/email/brevo/providers/BrevoEmailProvider.ts +4 -4
  614. package/src/email/cloudflare/providers/CloudflareEmailProvider.ts +6 -6
  615. package/src/email/core/index.ts +7 -2
  616. package/src/email/core/primitives/$email.ts +5 -1
  617. package/src/email/core/providers/LocalEmailProvider.ts +5 -5
  618. package/src/email/smtp/providers/NodemailerEmailProvider.ts +41 -52
  619. package/src/fake/__tests__/FakeProvider.spec.ts +110 -110
  620. package/src/fake/__tests__/keyName.example.ts +21 -21
  621. package/src/fake/__tests__/keyName.spec.ts +41 -41
  622. package/src/fake/__tests__/module.example.ts +8 -8
  623. package/src/fake/providers/FakeProvider.ts +122 -121
  624. package/src/lock/core/__tests__/lock-mutual-exclusion.spec.ts +44 -0
  625. package/src/lock/core/index.ts +1 -0
  626. package/src/lock/core/primitives/$lock.ts +13 -6
  627. package/src/logger/__tests__/CliFormatterProvider.spec.ts +76 -0
  628. package/src/logger/__tests__/Logger.spec.ts +49 -0
  629. package/src/logger/index.ts +25 -18
  630. package/src/logger/providers/CliFormatterProvider.ts +75 -0
  631. package/src/logger/schemas/logEntrySchema.ts +10 -10
  632. package/src/logger/services/Logger.ts +18 -0
  633. package/src/mcp/__tests__/$prompt.spec.ts +21 -23
  634. package/src/mcp/__tests__/$tool.spec.ts +22 -22
  635. package/src/mcp/__tests__/McpServerProvider.spec.ts +82 -11
  636. package/src/mcp/__tests__/StreamableHttpMcpTransport.spec.ts +2 -2
  637. package/src/mcp/__tests__/integration.spec.ts +33 -33
  638. package/src/mcp/primitives/$prompt.ts +11 -9
  639. package/src/mcp/primitives/$tool.ts +27 -86
  640. package/src/mcp/providers/McpServerProvider.ts +55 -0
  641. package/src/mcp/transports/StreamableHttpMcpTransport.ts +7 -7
  642. package/src/orm/__tests__/$repository-tests.ts +133 -27
  643. package/src/orm/__tests__/$repository.spec.ts +23 -0
  644. package/src/orm/__tests__/$transactional-tests.ts +4 -4
  645. package/src/orm/__tests__/ModelBuilder-tests.ts +28 -28
  646. package/src/orm/__tests__/ModelBuilder.spec.ts +124 -106
  647. package/src/orm/__tests__/QueryManager.spec.ts +5 -5
  648. package/src/orm/__tests__/delete-returning-tests.ts +11 -11
  649. package/src/orm/__tests__/deletedAt-tests.ts +3 -3
  650. package/src/orm/__tests__/enums.spec.ts +29 -25
  651. package/src/orm/__tests__/execute-tests.ts +8 -8
  652. package/src/orm/__tests__/fixtures/bigEntitySchema.ts +48 -48
  653. package/src/orm/__tests__/fixtures/userEntitySchema.ts +6 -6
  654. package/src/orm/__tests__/joins-tests.ts +30 -30
  655. package/src/orm/__tests__/organization-tests.ts +105 -3
  656. package/src/orm/__tests__/organization.spec.ts +46 -0
  657. package/src/orm/__tests__/orm-errors.spec.ts +10 -10
  658. package/src/orm/__tests__/orm-next-tests.ts +29 -29
  659. package/src/orm/__tests__/orm-showcase-tests.ts +9 -9
  660. package/src/orm/__tests__/primaryKey.spec.ts +4 -4
  661. package/src/orm/__tests__/query-date-encoding-tests.ts +17 -17
  662. package/src/orm/__tests__/ref-auto-onDelete.spec.ts +14 -14
  663. package/src/orm/__tests__/references.spec.ts +7 -7
  664. package/src/orm/__tests__/security.spec.ts +17 -17
  665. package/src/orm/__tests__/string-operators-tests.ts +5 -5
  666. package/src/orm/__tests__/timestamps-tests.ts +14 -14
  667. package/src/orm/__tests__/validation-tests.ts +5 -5
  668. package/src/orm/core/__tests__/BunSqliteProvider.bun.spec.ts +8 -8
  669. package/src/orm/core/constants/PG_SYMBOLS.ts +13 -1
  670. package/src/orm/core/entities/alephaSequences.ts +8 -8
  671. package/src/orm/core/helpers/pgAttr.ts +4 -4
  672. package/src/orm/core/primitives/$entity.ts +10 -6
  673. package/src/orm/core/providers/DatabaseTypeProvider.ts +46 -53
  674. package/src/orm/core/providers/drivers/BunSqliteProvider.ts +8 -8
  675. package/src/orm/core/providers/drivers/CloudflareD1Provider.ts +3 -5
  676. package/src/orm/core/providers/drivers/NodeSqliteProvider.ts +8 -8
  677. package/src/orm/core/schemas/databaseEnvSchema.ts +4 -4
  678. package/src/orm/core/schemas/insertSchema.ts +14 -18
  679. package/src/orm/core/schemas/legacyIdSchema.ts +2 -2
  680. package/src/orm/core/schemas/updateSchema.ts +10 -16
  681. package/src/orm/core/services/PgRelationManager.ts +2 -2
  682. package/src/orm/core/services/QueryManager.ts +13 -2
  683. package/src/orm/core/services/Repository.ts +88 -33
  684. package/src/orm/core/services/SqliteModelBuilder.ts +38 -45
  685. package/src/orm/postgres/__tests__/BunPostgresProvider.bun.spec.ts +4 -4
  686. package/src/orm/postgres/providers/CloudflareHyperdriveProvider.ts +4 -6
  687. package/src/orm/postgres/schemas/postgresEnvSchema.ts +6 -6
  688. package/src/orm/postgres/services/PostgresModelBuilder.ts +127 -114
  689. package/src/queue/core/__tests__/$consumer.spec.ts +4 -4
  690. package/src/queue/core/__tests__/WorkerProvider.spec.ts +4 -4
  691. package/src/queue/core/__tests__/shared.ts +6 -6
  692. package/src/queue/core/primitives/$consumer.ts +5 -5
  693. package/src/queue/core/primitives/$queue.ts +44 -61
  694. package/src/queue/core/providers/CloudflareQueueProvider.ts +6 -0
  695. package/src/queue/core/providers/WorkerProvider.ts +17 -14
  696. package/src/queue/redis/providers/RedisQueueProvider.ts +3 -3
  697. package/src/react/core/__tests__/ErrorBoundary.browser.spec.tsx +92 -0
  698. package/src/react/core/__tests__/Router.spec.tsx +4 -4
  699. package/src/react/core/__tests__/useComputed.browser.spec.tsx +192 -0
  700. package/src/react/core/__tests__/useQuery.browser.spec.tsx +48 -0
  701. package/src/react/core/__tests__/useSelector.browser.spec.tsx +105 -0
  702. package/src/react/core/__tests__/useStore.browser.spec.tsx +113 -0
  703. package/src/react/core/components/ErrorBoundary.tsx +42 -0
  704. package/src/react/core/hooks/useAction.ts +56 -19
  705. package/src/react/core/hooks/useComputed.ts +91 -0
  706. package/src/react/core/hooks/useSelector.ts +67 -0
  707. package/src/react/core/hooks/useStore.ts +36 -17
  708. package/src/react/core/index.ts +3 -0
  709. package/src/react/core/utils/shallowEqual.ts +36 -0
  710. package/src/react/form/__tests__/FormModel-submit-loading.spec.ts +71 -0
  711. package/src/react/form/__tests__/form-submitting-reactive.browser.spec.tsx +96 -0
  712. package/src/react/form/__tests__/useForm.browser.spec.tsx +54 -54
  713. package/src/react/form/errors/FormValidationError.ts +0 -2
  714. package/src/react/form/hooks/useForm.ts +19 -4
  715. package/src/react/form/hooks/useFormQuerySync.ts +0 -0
  716. package/src/react/form/services/FormModel.ts +124 -86
  717. package/src/react/form/services/parseField.ts +66 -27
  718. package/src/react/i18n/__tests__/I18nProvider.spec.ts +89 -0
  719. package/src/react/i18n/__tests__/Localize.spec.tsx +1 -1
  720. package/src/react/i18n/__tests__/locale-routing.spec.ts +107 -0
  721. package/src/react/i18n/providers/I18nProvider.ts +173 -14
  722. package/src/react/router/__tests__/$page.browser.spec.tsx +19 -19
  723. package/src/react/router/__tests__/$page.spec.tsx +21 -21
  724. package/src/react/router/__tests__/ReactBrowserProvider.browser.spec.ts +87 -1
  725. package/src/react/router/__tests__/RouterLocaleProvider.spec.ts +127 -0
  726. package/src/react/router/atoms/ssrManifestAtom.ts +16 -16
  727. package/src/react/router/components/NestedView.tsx +11 -3
  728. package/src/react/router/hooks/useQueryParams.ts +1 -1
  729. package/src/react/router/index.browser.ts +4 -0
  730. package/src/react/router/index.shared.ts +1 -0
  731. package/src/react/router/index.ts +9 -0
  732. package/src/react/router/primitives/$page.ts +2 -2
  733. package/src/react/router/providers/ReactBrowserProvider.ts +64 -13
  734. package/src/react/router/providers/ReactBrowserRouterProvider.ts +15 -1
  735. package/src/react/router/providers/ReactPageProvider.ts +38 -13
  736. package/src/react/router/providers/ReactServerProvider.ts +105 -16
  737. package/src/react/router/providers/RootComponentsProvider.ts +13 -0
  738. package/src/react/router/providers/RouterLocaleProvider.ts +125 -0
  739. package/src/react/router/providers/__tests__/RootComponentsProvider.spec.ts +15 -0
  740. package/src/react/router/providers/__tests__/rootComponents.ssr.browser.spec.tsx +67 -0
  741. package/src/react/sitemap/__tests__/$sitemap.spec.ts +131 -0
  742. package/src/react/sitemap/index.browser.ts +21 -0
  743. package/src/react/sitemap/index.ts +25 -0
  744. package/src/react/sitemap/primitives/$sitemap.browser.ts +26 -0
  745. package/src/react/sitemap/primitives/$sitemap.ts +196 -0
  746. package/src/react/ui/atoms/uiAtom.ts +6 -6
  747. package/src/react/ui/atoms/uiThemeListAtom.ts +7 -7
  748. package/src/react/ui/hooks/useColorMode.ts +11 -4
  749. package/src/react/ui/services/SchemaControl.ts +4 -4
  750. package/src/redis/providers/BunRedisProvider.ts +19 -11
  751. package/src/redis/providers/NodeRedisProvider.ts +3 -3
  752. package/src/scheduler/primitives/$scheduler.ts +21 -8
  753. package/src/security/__tests__/assertRealmScope.spec.ts +29 -0
  754. package/src/security/atoms/currentTenantAtom.ts +6 -6
  755. package/src/security/atoms/currentUserAtom.ts +2 -2
  756. package/src/security/primitives/$issuer.ts +24 -2
  757. package/src/security/providers/JwtProvider.ts +100 -0
  758. package/src/security/providers/SecurityProvider.ts +43 -2
  759. package/src/security/schemas/permissionSchema.ts +19 -19
  760. package/src/security/schemas/roleSchema.ts +22 -28
  761. package/src/security/schemas/userAccountInfoSchema.ts +47 -37
  762. package/src/server/auth/__tests__/appleClientSecret.spec.ts +34 -0
  763. package/src/server/auth/__tests__/federationRedirectReplay.spec.ts +44 -0
  764. package/src/server/auth/helpers/appleClientSecret.ts +24 -0
  765. package/src/server/auth/helpers/jtiReplayGuard.ts +41 -0
  766. package/src/server/auth/helpers/safeRedirectPath.ts +19 -0
  767. package/src/server/auth/index.ts +1 -0
  768. package/src/server/auth/primitives/$auth.ts +6 -6
  769. package/src/server/auth/primitives/$authApple.ts +10 -10
  770. package/src/server/auth/primitives/$authFacebook.ts +10 -10
  771. package/src/server/auth/primitives/$authFranceConnect.ts +10 -10
  772. package/src/server/auth/primitives/$authGithub.ts +10 -10
  773. package/src/server/auth/primitives/$authGoogle.ts +10 -10
  774. package/src/server/auth/primitives/$authMicrosoft.ts +14 -14
  775. package/src/server/auth/providers/ServerAuthProvider.ts +67 -52
  776. package/src/server/auth/schemas/authenticationProviderSchema.ts +9 -12
  777. package/src/server/auth/schemas/tokenResponseSchema.ts +2 -2
  778. package/src/server/auth/schemas/tokensSchema.ts +16 -16
  779. package/src/server/auth/schemas/userinfoResponseSchema.ts +3 -3
  780. package/src/server/cookies/__tests__/AtomCookieBinding.spec.ts +80 -0
  781. package/src/server/cookies/__tests__/AtomCookiePersistence.browser.spec.ts +169 -0
  782. package/src/server/cookies/__tests__/AtomCookiePersistence.spec.ts +294 -0
  783. package/src/server/cookies/__tests__/ServerCookiesProvider.spec.ts +82 -12
  784. package/src/server/cookies/index.browser.ts +4 -1
  785. package/src/server/cookies/index.ts +8 -1
  786. package/src/server/cookies/primitives/$cookie.browser.ts +1 -1
  787. package/src/server/cookies/primitives/$cookie.ts +16 -0
  788. package/src/server/cookies/providers/AtomCookiePersistence.browser.ts +133 -0
  789. package/src/server/cookies/providers/AtomCookiePersistence.ts +148 -0
  790. package/src/server/cookies/providers/ServerCookiesProvider.ts +32 -4
  791. package/src/server/cookies/services/CookieParser.ts +6 -1
  792. package/src/server/core/__tests__/$action.spec.ts +13 -13
  793. package/src/server/core/__tests__/$middleware.spec.ts +10 -10
  794. package/src/server/core/__tests__/$route.spec.ts +9 -9
  795. package/src/server/core/__tests__/$sse.spec.ts +26 -26
  796. package/src/server/core/__tests__/BunHttpServerProvider.bun.spec.ts +6 -6
  797. package/src/server/core/__tests__/HttpClient.spec.ts +2 -2
  798. package/src/server/core/__tests__/NodeHttpServerProvider.spec.ts +15 -3
  799. package/src/server/core/__tests__/ServerBodyParserProvider.spec.ts +14 -14
  800. package/src/server/core/__tests__/ServerMultipartProvider.spec.ts +33 -33
  801. package/src/server/core/__tests__/ServerRouterProvider-errorHandler.spec.ts +5 -1
  802. package/src/server/core/__tests__/ServerRouterProvider-getRoutes.spec.ts +25 -25
  803. package/src/server/core/__tests__/ServerRouterProvider-serializationError.spec.ts +9 -5
  804. package/src/server/core/__tests__/ServerRouterProvider-validationError.spec.ts +56 -24
  805. package/src/server/core/errors/ValidationError.ts +6 -3
  806. package/src/server/core/helpers/isMultipart.ts +2 -1
  807. package/src/server/core/index.ts +5 -2
  808. package/src/server/core/interfaces/ServerRequest.ts +14 -14
  809. package/src/server/core/primitives/$action.ts +26 -36
  810. package/src/server/core/primitives/$route.ts +27 -0
  811. package/src/server/core/primitives/$sse.ts +3 -3
  812. package/src/server/core/providers/BunHttpServerProvider.ts +8 -9
  813. package/src/server/core/providers/NodeHttpServerProvider.ts +8 -9
  814. package/src/server/core/providers/ServerBodyParserProvider.ts +20 -12
  815. package/src/server/core/providers/ServerCompressProvider.ts +9 -10
  816. package/src/server/core/providers/ServerHelmetProvider.ts +26 -27
  817. package/src/server/core/providers/ServerMultipartProvider.ts +19 -19
  818. package/src/server/core/providers/ServerRouterProvider.ts +44 -15
  819. package/src/server/core/schemas/errorSchema.ts +20 -25
  820. package/src/server/core/schemas/okSchema.ts +9 -14
  821. package/src/server/core/services/HttpClient.ts +13 -1
  822. package/src/server/core/services/ServerRequestParser.ts +6 -6
  823. package/src/server/cors/providers/ServerCorsProvider.ts +26 -28
  824. package/src/server/health/schemas/healthSchema.ts +6 -6
  825. package/src/server/links/__tests__/$remote.spec.ts +3 -3
  826. package/src/server/links/__tests__/BatchEndpoint.spec.ts +9 -9
  827. package/src/server/links/__tests__/LinkProvider.spec.ts +9 -9
  828. package/src/server/links/__tests__/ServerLinksProvider.spec.ts +23 -23
  829. package/src/server/links/__tests__/fixtures/CrudApp.ts +21 -21
  830. package/src/server/links/atoms/apiLinksAtom.ts +2 -2
  831. package/src/server/links/atoms/linkOptionsAtom.ts +6 -6
  832. package/src/server/links/primitives/$remote.ts +3 -3
  833. package/src/server/links/providers/LinkProvider.ts +3 -3
  834. package/src/server/links/providers/ServerLinksProvider.ts +20 -20
  835. package/src/server/links/schemas/apiLinksResponseSchema.ts +23 -23
  836. package/src/server/proxy/__tests__/$proxy.spec.ts +9 -9
  837. package/src/server/proxy/providers/ServerProxyProvider.ts +5 -0
  838. package/src/server/rate-limit/providers/ServerRateLimitProvider.ts +18 -20
  839. package/src/server/swagger/__tests__/$swagger.spec.ts +91 -94
  840. package/src/server/swagger/__tests__/ui.spec.ts +3 -3
  841. package/src/server/swagger/providers/ServerSwaggerProvider.ts +66 -43
  842. package/src/system/__tests__/NodeShellProvider.spec.ts +46 -0
  843. package/src/system/providers/NodeShellProvider.ts +4 -1
  844. package/src/topic/core/__tests__/$subscriber.spec.ts +4 -4
  845. package/src/topic/core/__tests__/shared.ts +8 -8
  846. package/src/topic/core/primitives/$subscriber.ts +5 -5
  847. package/src/topic/core/primitives/$topic.ts +14 -14
  848. package/src/topic/redis/providers/RedisTopicProvider.ts +3 -3
  849. package/dist/container/core/index.d.ts +0 -236
  850. package/dist/container/core/index.d.ts.map +0 -1
  851. package/dist/container/core/index.js +0 -231
  852. package/dist/container/core/index.js.map +0 -1
  853. package/dist/container/core/index.workerd.js +0 -192
  854. package/dist/container/core/index.workerd.js.map +0 -1
  855. package/src/cli/core/tasks/BuildSitemapTask.ts +0 -130
  856. package/src/command/helpers/PrettyAsker.ts +0 -256
  857. package/src/command/helpers/PrettyPrint.ts +0 -332
  858. package/src/container/core/__tests__/$container.spec.ts +0 -83
  859. package/src/container/core/index.ts +0 -50
  860. package/src/container/core/index.workerd.ts +0 -53
  861. package/src/container/core/interfaces/ContainerOptions.ts +0 -69
  862. package/src/container/core/primitives/$container.ts +0 -100
  863. package/src/container/core/providers/CloudflareContainerProvider.ts +0 -70
  864. package/src/container/core/providers/ContainerProvider.ts +0 -92
  865. package/src/container/core/providers/MockContainerProvider.ts +0 -62
  866. package/src/container/core/providers/NodeContainerProvider.ts +0 -53
  867. package/src/core/__tests__/jsonSchemaToTypeBox.spec.ts +0 -771
  868. package/src/core/helpers/jsonSchemaToTypeBox.ts +0 -359
  869. /package/dist/orm/core/{chunk-B4FMCO8f.js → rolldown-runtime-B4FMCO8f.js} +0 -0
@@ -1,4 +1,4 @@
1
- import { Alepha, AlephaError, Async, KIND, Middleware, Primitive, Static, TObject, TSchema } from "alepha";
1
+ import { Alepha, AlephaError, Async, KIND, Middleware, Primitive, SchemaValidator, Static, TObject, TSchema } from "alepha";
2
2
  import { DateTimeProvider } from "alepha/datetime";
3
3
  import { BrowserHeadProvider, Head, ServerHeadProvider, SimpleHead } from "alepha/react/head";
4
4
  import { ServerHandler, ServerRequest, ServerRouterProvider } from "alepha/server";
@@ -7,7 +7,6 @@ import { AnchorHTMLAttributes, CSSProperties, FC, ReactNode } from "react";
7
7
  import { ServerStaticProvider } from "alepha/server/static";
8
8
  import { FileSystemProvider } from "alepha/system";
9
9
  import { Route, RouterProvider } from "alepha/router";
10
-
11
10
  //#region ../../src/react/router/constants/PAGE_PRELOAD_KEY.d.ts
12
11
  /**
13
12
  * Symbol key for SSR module preloading path.
@@ -40,23 +39,97 @@ declare class Redirection extends AlephaError {
40
39
  constructor(redirect: string);
41
40
  }
42
41
  //#endregion
43
- //#region ../../src/react/router/providers/ReactPageProvider.d.ts
44
- declare const reactPageOptions: import("alepha").Atom<import("typebox").TObject<{
42
+ //#region ../../src/react/router/providers/RootComponentsProvider.d.ts
43
+ /**
44
+ * Extension point letting any module contribute root-level React nodes that
45
+ * render on every page (siblings of the page view, inside AlephaContext).
46
+ *
47
+ * A module pushes into `rootComponents` from its `register` hook; the array
48
+ * is rendered by `ReactPageProvider.root()`. SSR-safe (same element feeds
49
+ * server render + client hydrate).
50
+ */
51
+ declare class RootComponentsProvider {
52
+ rootComponents: ReactNode[];
53
+ }
54
+ //#endregion
55
+ //#region ../../src/react/router/providers/RouterLocaleProvider.d.ts
56
+ /**
57
+ * Generic locale path-prefix mechanism for the router.
58
+ *
59
+ * This provider knows nothing about i18n — it only deals with URL path
60
+ * segments. It is configured by the i18n module (`I18nProvider`) when
61
+ * `routing: "prefix"` is enabled, which keeps the dependency one-directional
62
+ * (`i18n → router`) and avoids a module cycle.
63
+ *
64
+ * The default locale is served WITHOUT a prefix (`/about` = default,
65
+ * `/fr/about` = French). The active locale is derived from the current
66
+ * request/navigation and stored under `alepha.react.router.locale`, so every
67
+ * URL the router builds (`pathname()`) automatically carries the right prefix.
68
+ */
69
+ declare class RouterLocaleProvider {
70
+ protected readonly alepha: Alepha;
71
+ /**
72
+ * Whether locale path-prefixing is active. Off by default — opt-in via the
73
+ * i18n module.
74
+ */
75
+ enabled: boolean;
76
+ /**
77
+ * The default locale, served without a path prefix (e.g. `"en"` → `/about`).
78
+ */
79
+ defaultLocale: string;
80
+ /**
81
+ * All known locales, including the default one.
82
+ */
83
+ locales: string[];
84
+ /**
85
+ * Configure the provider. Called by the i18n module before the SSR routes
86
+ * are registered.
87
+ */
88
+ configure(options: {
89
+ enabled?: boolean;
90
+ defaultLocale?: string;
91
+ locales?: string[];
92
+ }): void;
45
93
  /**
46
- * Enable React StrictMode wrapper.
94
+ * Locales that carry a URL prefix — every known locale except the default.
47
95
  */
48
- strictMode: import("typebox").TBoolean;
96
+ get prefixedLocales(): string[];
49
97
  /**
50
- * RegExp pattern (as string) to detect file-like URLs (e.g. /hello.txt, /wp-login.php).
51
- * When a request hits the catch-all wildcard route and matches this pattern,
52
- * SSR is skipped and a plain 404 response is returned instead.
98
+ * Splits a leading locale segment off a pathname.
53
99
  *
54
- * Set to empty string to disable this behavior.
100
+ * - `/fr/about` `{ locale: "fr", pathname: "/about" }` when `fr` is a
101
+ * prefixed locale.
102
+ * - `/about` → `{ locale: defaultLocale, pathname: "/about" }`.
55
103
  *
56
- * @default "\\.[a-zA-Z0-9]{1,10}$"
104
+ * When prefixing is disabled the pathname is returned untouched.
105
+ */
106
+ detect(pathname: string): {
107
+ locale: string;
108
+ pathname: string;
109
+ };
110
+ /**
111
+ * Prepends the locale prefix to a pathname when needed. The default locale
112
+ * (and any unknown/disabled case) returns the pathname unchanged.
113
+ */
114
+ withPrefix(pathname: string, locale?: string): string;
115
+ /**
116
+ * The active locale, derived from the current request/navigation. Falls back
117
+ * to the default locale when nothing has been detected.
118
+ */
119
+ get current(): string;
120
+ set current(locale: string);
121
+ /**
122
+ * Normalizes a stripped pathname so it always starts with a single slash and
123
+ * carries no trailing slash (except the root `/`).
57
124
  */
58
- staticFilePattern: import("typebox").TString;
59
- }>, "alepha.react.page.options">;
125
+ protected normalize(pathname: string): string;
126
+ }
127
+ //#endregion
128
+ //#region ../../src/react/router/providers/ReactPageProvider.d.ts
129
+ declare const reactPageOptions: import("alepha").Atom<import("zod").ZodObject<{
130
+ strictMode: import("zod").ZodDefault<import("zod").ZodBoolean>;
131
+ staticFilePattern: import("zod").ZodString;
132
+ }, import("zod/v4/core").$strip>, "alepha.react.page.options">;
60
133
  /**
61
134
  * Handle page routes for React applications. (Browser and Server)
62
135
  */
@@ -68,6 +141,8 @@ declare class ReactPageProvider {
68
141
  staticFilePattern: string;
69
142
  }>;
70
143
  protected readonly alepha: Alepha;
144
+ protected readonly rootComponentsProvider: RootComponentsProvider;
145
+ protected readonly localeProvider: RouterLocaleProvider;
71
146
  protected readonly pages: PageRoute[];
72
147
  protected nextIdCursor: number;
73
148
  protected readonly configure: import("alepha").HookPrimitive<"configure">;
@@ -269,8 +344,8 @@ declare abstract class ReactPageService {
269
344
  * const userProfile = $page({
270
345
  * path: "/users/:id",
271
346
  * schema: {
272
- * params: t.object({ id: t.integer() }),
273
- * query: t.object({ tab: t.optional(t.text()) })
347
+ * params: z.object({ id: z.integer() }),
348
+ * query: z.object({ tab: z.text().optional() })
274
349
  * },
275
350
  * loader: async ({ params }) => {
276
351
  * const user = await userApi.getUser(params.id);
@@ -770,13 +845,219 @@ type CssAnimation = {
770
845
  timing?: string;
771
846
  };
772
847
  //#endregion
848
+ //#region ../../src/react/router/services/ReactRouter.d.ts
849
+ interface RouterPushOptions {
850
+ replace?: boolean;
851
+ params?: Record<string, string>;
852
+ query?: Record<string, string>;
853
+ meta?: Record<string, any>;
854
+ /**
855
+ * Recreate the whole page, ignoring the current state.
856
+ */
857
+ force?: boolean;
858
+ }
859
+ /**
860
+ * Friendly browser router API.
861
+ *
862
+ * Can be safely used server-side, but most methods will be no-op.
863
+ */
864
+ declare class ReactRouter<T extends object> {
865
+ protected readonly alepha: Alepha;
866
+ protected readonly pageApi: ReactPageProvider;
867
+ get state(): ReactRouterState;
868
+ get pages(): import("alepha/react/router").PageRoute[];
869
+ get concretePages(): import("alepha/react/router").ConcretePageRoute[];
870
+ get browser(): ReactBrowserProvider | undefined;
871
+ isActive(href: string, options?: {
872
+ startWith?: boolean;
873
+ }): boolean;
874
+ node(name: keyof VirtualRouter<T> | string, config?: {
875
+ params?: Record<string, any>;
876
+ query?: Record<string, any>;
877
+ }): any;
878
+ path(name: keyof VirtualRouter<T> | string, config?: {
879
+ params?: Record<string, any>;
880
+ query?: Record<string, any>;
881
+ }): string;
882
+ /**
883
+ * Reload the current page.
884
+ * This is equivalent to calling `go()` with the current pathname and search.
885
+ */
886
+ reload(): Promise<void>;
887
+ getURL(): URL;
888
+ get location(): Location;
889
+ get current(): ReactRouterState;
890
+ get pathname(): string;
891
+ get query(): Record<string, string>;
892
+ back(): Promise<void>;
893
+ forward(): Promise<void>;
894
+ invalidate(props?: Record<string, any>): Promise<void>;
895
+ push(path: string, options?: RouterPushOptions): Promise<void>;
896
+ push(path: keyof VirtualRouter<T>, options?: RouterPushOptions): Promise<void>;
897
+ anchor(path: string, options?: RouterPushOptions): AnchorProps;
898
+ anchor(path: keyof VirtualRouter<T>, options?: RouterPushOptions): AnchorProps;
899
+ /**
900
+ * Prepend the base URL to the given path.
901
+ */
902
+ base(path: string): string;
903
+ /**
904
+ * Set query params.
905
+ *
906
+ * @param record
907
+ * @param options
908
+ */
909
+ setQueryParams(record: Record<string, any> | ((queryParams: Record<string, any>) => Record<string, any>), options?: {
910
+ /**
911
+ * If true, this will add a new entry to the history stack.
912
+ */
913
+ push?: boolean;
914
+ }): void;
915
+ }
916
+ type VirtualRouter<T> = { [K in keyof T as T[K] extends PagePrimitive ? K : never]: T[K]; };
917
+ //#endregion
918
+ //#region ../../src/react/router/providers/ReactBrowserRouterProvider.d.ts
919
+ interface BrowserRoute extends Route {
920
+ page: PageRoute;
921
+ }
922
+ /**
923
+ * Implementation of AlephaRouter for React in browser environment.
924
+ */
925
+ declare class ReactBrowserRouterProvider extends RouterProvider<BrowserRoute> {
926
+ protected readonly log: import("alepha/logger").Logger;
927
+ protected readonly alepha: Alepha;
928
+ protected readonly pageApi: ReactPageProvider;
929
+ protected readonly browserHeadProvider: BrowserHeadProvider;
930
+ protected readonly localeProvider: RouterLocaleProvider;
931
+ add(entry: PageRouteEntry): void;
932
+ protected readonly configure: import("alepha").HookPrimitive<"configure">;
933
+ transition(url: URL, previous?: PreviousLayerData[], meta?: {}, isStale?: () => boolean): Promise<string | undefined>;
934
+ root(state: ReactRouterState): ReactNode;
935
+ }
936
+ //#endregion
937
+ //#region ../../src/react/router/providers/ReactBrowserProvider.d.ts
938
+ /**
939
+ * React browser renderer configuration atom
940
+ */
941
+ declare const reactBrowserOptions: import("alepha").Atom<import("zod").ZodObject<{
942
+ scrollRestoration: import("zod").ZodEnum<{
943
+ manual: "manual";
944
+ top: "top";
945
+ }>;
946
+ interceptAnchorClicks: import("zod").ZodDefault<import("zod").ZodBoolean>;
947
+ }, import("zod/v4/core").$strip>, "alepha.react.browser.options">;
948
+ type ReactBrowserRendererOptions = Static<typeof reactBrowserOptions.schema>;
949
+ declare module "alepha" {
950
+ interface State {
951
+ [reactBrowserOptions.key]: ReactBrowserRendererOptions;
952
+ }
953
+ }
954
+ declare class ReactBrowserProvider {
955
+ protected readonly log: import("alepha/logger").Logger;
956
+ protected readonly client: LinkProvider;
957
+ protected readonly alepha: Alepha;
958
+ protected readonly router: ReactBrowserRouterProvider;
959
+ protected readonly dateTimeProvider: DateTimeProvider;
960
+ protected readonly browserHeadProvider: BrowserHeadProvider;
961
+ protected readonly validator: SchemaValidator;
962
+ protected readonly options: Readonly<{
963
+ scrollRestoration: "manual" | "top";
964
+ interceptAnchorClicks: boolean;
965
+ }>;
966
+ get rootId(): string;
967
+ protected getRootElement(): HTMLElement;
968
+ transitioning?: {
969
+ to: string;
970
+ from?: string;
971
+ };
972
+ /**
973
+ * Monotonic counter used to detect stale (superseded) transitions.
974
+ *
975
+ * Each call to `render()` captures `++this.transitionId` and any
976
+ * subsequent `render()` invalidates older in-flight transitions.
977
+ * This prevents a slow page from racing past a newer navigation
978
+ * (e.g. user clicks /pageA which has a 2s loader, then clicks /pageB
979
+ * — pageB must remain the committed page).
980
+ */
981
+ protected transitionId: number;
982
+ get state(): ReactRouterState;
983
+ /**
984
+ * Accessor for Document DOM API.
985
+ */
986
+ get document(): Document;
987
+ /**
988
+ * Accessor for History DOM API.
989
+ */
990
+ get history(): History;
991
+ /**
992
+ * Accessor for Location DOM API.
993
+ */
994
+ get location(): Location;
995
+ get base(): string;
996
+ get url(): string;
997
+ pushState(path: string, replace?: boolean): void;
998
+ invalidate(props?: Record<string, any>): Promise<void>;
999
+ push(url: string, options?: RouterPushOptions): Promise<void>;
1000
+ protected render(options?: RouterRenderOptions): Promise<void>;
1001
+ /**
1002
+ * Get embedded layers from the server.
1003
+ */
1004
+ protected getHydrationState(): ReactHydrationState | undefined;
1005
+ /**
1006
+ * Apply the SSR hydration payload (the `#__ssr` script tag) to the atom
1007
+ * store.
1008
+ *
1009
+ * Every key except `alepha.react.router.layers` is treated as an atom
1010
+ * value. A registered atom's value is explicitly schema-validated: an
1011
+ * invalid value is dropped (warn + keep the atom's default) instead of
1012
+ * being trusted, so a tampered payload can't smuggle bad data into a
1013
+ * validated atom. Atoms not registered yet fall through to
1014
+ * `Alepha.set()`, which lets `StateManager.register()` decode them
1015
+ * against the schema the moment they first get used.
1016
+ *
1017
+ * `alepha.react.router.layers` is deliberately skipped by this loop: it
1018
+ * carries render instructions (`part`, `name`, `config`, `props`,
1019
+ * `error`), not atom values. Those are NOT hardened here and are trusted
1020
+ * as-is from the SSR payload — a tampered payload can still influence
1021
+ * rendering through this key. Validating router layers is separate,
1022
+ * future work; this method only guarantees atom values.
1023
+ */
1024
+ protected applyHydration(hydration: ReactHydrationState): void;
1025
+ protected readonly onTransitionEnd: import("alepha").HookPrimitive<"react:transition:end">;
1026
+ readonly ready: import("alepha").HookPrimitive<"ready">;
1027
+ /**
1028
+ * Attach a delegated click listener that routes plain `<a href="/...">`
1029
+ * clicks through the SPA router. Returns a detach function (used in tests).
1030
+ *
1031
+ * Bails out on modifier keys, non-primary mouse buttons, `target`, `download`,
1032
+ * `data-no-router`, hash-only/external/non-http hrefs, and already-prevented
1033
+ * events. Honors the runtime `interceptAnchorClicks` flag.
1034
+ */
1035
+ protected attachAnchorInterceptor(): () => void;
1036
+ protected stripBase(path: string): string;
1037
+ }
1038
+ type ReactHydrationState = {
1039
+ "alepha.react.router.layers"?: Array<PreviousLayerData>;
1040
+ } & {
1041
+ [key: string]: any;
1042
+ };
1043
+ interface RouterRenderOptions {
1044
+ url?: string;
1045
+ previous?: PreviousLayerData[];
1046
+ meta?: Record<string, any>;
1047
+ /**
1048
+ * Transition id used to detect supersession by a newer navigation.
1049
+ * When omitted, render() allocates a fresh id internally.
1050
+ */
1051
+ transitionId?: number;
1052
+ }
1053
+ //#endregion
773
1054
  //#region ../../src/react/router/components/ErrorViewer.d.ts
774
1055
  interface ErrorViewerProps {
775
1056
  error: Error;
776
1057
  alepha: Alepha;
777
1058
  onRetry?: () => void;
778
1059
  }
779
- declare const ErrorViewer: (props: ErrorViewerProps) => import("react/jsx-runtime").JSX.Element;
1060
+ declare const ErrorViewer: (props: ErrorViewerProps) => import("react").JSX.Element;
780
1061
  //#endregion
781
1062
  //#region ../../src/react/router/components/Link.d.ts
782
1063
  interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
@@ -788,123 +1069,6 @@ interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {
788
1069
  * It's a simple wrapper around an anchor (`<a>`) element using the `useRouter` hook.
789
1070
  */
790
1071
  declare const Link: (props: LinkProps) => import("react").DetailedReactHTMLElement<{
791
- href: string;
792
- onClick: (ev?: any) => any;
793
- download?: any;
794
- hrefLang?: string | undefined;
795
- media?: string | undefined;
796
- ping?: string | undefined;
797
- target?: import("react").HTMLAttributeAnchorTarget | undefined;
798
- type?: string | undefined;
799
- referrerPolicy?: import("react").HTMLAttributeReferrerPolicy | undefined;
800
- defaultChecked?: boolean | undefined;
801
- defaultValue?: string | number | readonly string[] | undefined;
802
- suppressContentEditableWarning?: boolean | undefined;
803
- suppressHydrationWarning?: boolean | undefined;
804
- accessKey?: string | undefined;
805
- autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
806
- autoFocus?: boolean | undefined;
807
- className?: string | undefined;
808
- contentEditable?: (boolean | "true" | "false") | "inherit" | "plaintext-only" | undefined;
809
- contextMenu?: string | undefined;
810
- dir?: string | undefined;
811
- draggable?: (boolean | "true" | "false") | undefined;
812
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
813
- hidden?: boolean | undefined;
814
- id?: string | undefined;
815
- lang?: string | undefined;
816
- nonce?: string | undefined;
817
- slot?: string | undefined;
818
- spellCheck?: (boolean | "true" | "false") | undefined;
819
- style?: import("react").CSSProperties | undefined;
820
- tabIndex?: number | undefined;
821
- title?: string | undefined;
822
- translate?: "yes" | "no" | undefined;
823
- radioGroup?: string | undefined;
824
- role?: import("react").AriaRole | undefined;
825
- about?: string | undefined;
826
- content?: string | undefined;
827
- datatype?: string | undefined;
828
- inlist?: any;
829
- prefix?: string | undefined;
830
- property?: string | undefined;
831
- rel?: string | undefined;
832
- resource?: string | undefined;
833
- rev?: string | undefined;
834
- typeof?: string | undefined;
835
- vocab?: string | undefined;
836
- autoCorrect?: string | undefined;
837
- autoSave?: string | undefined;
838
- color?: string | undefined;
839
- itemProp?: string | undefined;
840
- itemScope?: boolean | undefined;
841
- itemType?: string | undefined;
842
- itemID?: string | undefined;
843
- itemRef?: string | undefined;
844
- results?: number | undefined;
845
- security?: string | undefined;
846
- unselectable?: "on" | "off" | undefined;
847
- popover?: "" | "auto" | "manual" | "hint" | undefined;
848
- popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
849
- popoverTarget?: string | undefined;
850
- inert?: boolean | undefined;
851
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
852
- is?: string | undefined;
853
- exportparts?: string | undefined;
854
- part?: string | undefined;
855
- "aria-activedescendant"?: string | undefined;
856
- "aria-atomic"?: (boolean | "true" | "false") | undefined;
857
- "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
858
- "aria-braillelabel"?: string | undefined;
859
- "aria-brailleroledescription"?: string | undefined;
860
- "aria-busy"?: (boolean | "true" | "false") | undefined;
861
- "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
862
- "aria-colcount"?: number | undefined;
863
- "aria-colindex"?: number | undefined;
864
- "aria-colindextext"?: string | undefined;
865
- "aria-colspan"?: number | undefined;
866
- "aria-controls"?: string | undefined;
867
- "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
868
- "aria-describedby"?: string | undefined;
869
- "aria-description"?: string | undefined;
870
- "aria-details"?: string | undefined;
871
- "aria-disabled"?: (boolean | "true" | "false") | undefined;
872
- "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
873
- "aria-errormessage"?: string | undefined;
874
- "aria-expanded"?: (boolean | "true" | "false") | undefined;
875
- "aria-flowto"?: string | undefined;
876
- "aria-grabbed"?: (boolean | "true" | "false") | undefined;
877
- "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
878
- "aria-hidden"?: (boolean | "true" | "false") | undefined;
879
- "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
880
- "aria-keyshortcuts"?: string | undefined;
881
- "aria-label"?: string | undefined;
882
- "aria-labelledby"?: string | undefined;
883
- "aria-level"?: number | undefined;
884
- "aria-live"?: "off" | "assertive" | "polite" | undefined;
885
- "aria-modal"?: (boolean | "true" | "false") | undefined;
886
- "aria-multiline"?: (boolean | "true" | "false") | undefined;
887
- "aria-multiselectable"?: (boolean | "true" | "false") | undefined;
888
- "aria-orientation"?: "horizontal" | "vertical" | undefined;
889
- "aria-owns"?: string | undefined;
890
- "aria-placeholder"?: string | undefined;
891
- "aria-posinset"?: number | undefined;
892
- "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
893
- "aria-readonly"?: (boolean | "true" | "false") | undefined;
894
- "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
895
- "aria-required"?: (boolean | "true" | "false") | undefined;
896
- "aria-roledescription"?: string | undefined;
897
- "aria-rowcount"?: number | undefined;
898
- "aria-rowindex"?: number | undefined;
899
- "aria-rowindextext"?: string | undefined;
900
- "aria-rowspan"?: number | undefined;
901
- "aria-selected"?: (boolean | "true" | "false") | undefined;
902
- "aria-setsize"?: number | undefined;
903
- "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
904
- "aria-valuemax"?: number | undefined;
905
- "aria-valuemin"?: number | undefined;
906
- "aria-valuenow"?: number | undefined;
907
- "aria-valuetext"?: string | undefined;
908
1072
  children?: import("react").ReactNode | undefined;
909
1073
  dangerouslySetInnerHTML?: {
910
1074
  __html: string | TrustedHTML;
@@ -1076,6 +1240,123 @@ declare const Link: (props: LinkProps) => import("react").DetailedReactHTMLEleme
1076
1240
  onTransitionRunCapture?: import("react").TransitionEventHandler<HTMLAnchorElement> | undefined;
1077
1241
  onTransitionStart?: import("react").TransitionEventHandler<HTMLAnchorElement> | undefined;
1078
1242
  onTransitionStartCapture?: import("react").TransitionEventHandler<HTMLAnchorElement> | undefined;
1243
+ "aria-activedescendant"?: string | undefined;
1244
+ "aria-atomic"?: ("false" | "true" | boolean) | undefined;
1245
+ "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined;
1246
+ "aria-braillelabel"?: string | undefined;
1247
+ "aria-brailleroledescription"?: string | undefined;
1248
+ "aria-busy"?: ("false" | "true" | boolean) | undefined;
1249
+ "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined;
1250
+ "aria-colcount"?: number | undefined;
1251
+ "aria-colindex"?: number | undefined;
1252
+ "aria-colindextext"?: string | undefined;
1253
+ "aria-colspan"?: number | undefined;
1254
+ "aria-controls"?: string | undefined;
1255
+ "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined;
1256
+ "aria-describedby"?: string | undefined;
1257
+ "aria-description"?: string | undefined;
1258
+ "aria-details"?: string | undefined;
1259
+ "aria-disabled"?: ("false" | "true" | boolean) | undefined;
1260
+ "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined;
1261
+ "aria-errormessage"?: string | undefined;
1262
+ "aria-expanded"?: ("false" | "true" | boolean) | undefined;
1263
+ "aria-flowto"?: string | undefined;
1264
+ "aria-grabbed"?: ("false" | "true" | boolean) | undefined;
1265
+ "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined;
1266
+ "aria-hidden"?: ("false" | "true" | boolean) | undefined;
1267
+ "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
1268
+ "aria-keyshortcuts"?: string | undefined;
1269
+ "aria-label"?: string | undefined;
1270
+ "aria-labelledby"?: string | undefined;
1271
+ "aria-level"?: number | undefined;
1272
+ "aria-live"?: "off" | "assertive" | "polite" | undefined;
1273
+ "aria-modal"?: ("false" | "true" | boolean) | undefined;
1274
+ "aria-multiline"?: ("false" | "true" | boolean) | undefined;
1275
+ "aria-multiselectable"?: ("false" | "true" | boolean) | undefined;
1276
+ "aria-orientation"?: "horizontal" | "vertical" | undefined;
1277
+ "aria-owns"?: string | undefined;
1278
+ "aria-placeholder"?: string | undefined;
1279
+ "aria-posinset"?: number | undefined;
1280
+ "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined;
1281
+ "aria-readonly"?: ("false" | "true" | boolean) | undefined;
1282
+ "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined;
1283
+ "aria-required"?: ("false" | "true" | boolean) | undefined;
1284
+ "aria-roledescription"?: string | undefined;
1285
+ "aria-rowcount"?: number | undefined;
1286
+ "aria-rowindex"?: number | undefined;
1287
+ "aria-rowindextext"?: string | undefined;
1288
+ "aria-rowspan"?: number | undefined;
1289
+ "aria-selected"?: ("false" | "true" | boolean) | undefined;
1290
+ "aria-setsize"?: number | undefined;
1291
+ "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined;
1292
+ "aria-valuemax"?: number | undefined;
1293
+ "aria-valuemin"?: number | undefined;
1294
+ "aria-valuenow"?: number | undefined;
1295
+ "aria-valuetext"?: string | undefined;
1296
+ defaultChecked?: boolean | undefined;
1297
+ defaultValue?: string | number | readonly string[] | undefined;
1298
+ suppressContentEditableWarning?: boolean | undefined;
1299
+ suppressHydrationWarning?: boolean | undefined;
1300
+ accessKey?: string | undefined;
1301
+ autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {});
1302
+ autoFocus?: boolean | undefined;
1303
+ className?: string | undefined;
1304
+ contentEditable?: ("false" | "true" | boolean) | "inherit" | "plaintext-only" | undefined;
1305
+ contextMenu?: string | undefined;
1306
+ dir?: string | undefined;
1307
+ draggable?: ("false" | "true" | boolean) | undefined;
1308
+ enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined;
1309
+ hidden?: boolean | undefined;
1310
+ id?: string | undefined;
1311
+ lang?: string | undefined;
1312
+ nonce?: string | undefined;
1313
+ slot?: string | undefined;
1314
+ spellCheck?: ("false" | "true" | boolean) | undefined;
1315
+ style?: import("react").CSSProperties | undefined;
1316
+ tabIndex?: number | undefined;
1317
+ title?: string | undefined;
1318
+ translate?: "yes" | "no" | undefined;
1319
+ radioGroup?: string | undefined;
1320
+ role?: import("react").AriaRole | undefined;
1321
+ about?: string | undefined;
1322
+ content?: string | undefined;
1323
+ datatype?: string | undefined;
1324
+ inlist?: any;
1325
+ prefix?: string | undefined;
1326
+ property?: string | undefined;
1327
+ rel?: string | undefined;
1328
+ resource?: string | undefined;
1329
+ rev?: string | undefined;
1330
+ typeof?: string | undefined;
1331
+ vocab?: string | undefined;
1332
+ autoCorrect?: string | undefined;
1333
+ autoSave?: string | undefined;
1334
+ color?: string | undefined;
1335
+ itemProp?: string | undefined;
1336
+ itemScope?: boolean | undefined;
1337
+ itemType?: string | undefined;
1338
+ itemID?: string | undefined;
1339
+ itemRef?: string | undefined;
1340
+ results?: number | undefined;
1341
+ security?: string | undefined;
1342
+ unselectable?: "on" | "off" | undefined;
1343
+ popover?: "" | "auto" | "manual" | "hint" | undefined;
1344
+ popoverTargetAction?: "toggle" | "show" | "hide" | undefined;
1345
+ popoverTarget?: string | undefined;
1346
+ inert?: boolean | undefined;
1347
+ inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined;
1348
+ is?: string | undefined;
1349
+ exportparts?: string | undefined;
1350
+ part?: string | undefined;
1351
+ download?: any;
1352
+ hrefLang?: string | undefined;
1353
+ media?: string | undefined;
1354
+ ping?: string | undefined;
1355
+ target?: import("react").HTMLAttributeAnchorTarget | undefined;
1356
+ type?: string | undefined;
1357
+ referrerPolicy?: import("react").HTMLAttributeReferrerPolicy | undefined;
1358
+ href: string;
1359
+ onClick: (ev?: any) => any;
1079
1360
  }, HTMLElement>;
1080
1361
  //#endregion
1081
1362
  //#region ../../src/react/router/components/NestedView.d.ts
@@ -1083,7 +1364,29 @@ interface NestedViewProps {
1083
1364
  children?: ReactNode;
1084
1365
  errorBoundary?: false | ((error: Error, reset: () => void) => ReactNode);
1085
1366
  }
1086
- declare const _default: import("react").MemoExoticComponent<(props: NestedViewProps) => import("react/jsx-runtime").JSX.Element>;
1367
+ /**
1368
+ * A component that renders the current view of the nested router layer.
1369
+ *
1370
+ * To be simple, it renders the `element` of the current child page of a parent page.
1371
+ *
1372
+ * @example
1373
+ * ```tsx
1374
+ * import { NestedView } from "alepha/react";
1375
+ *
1376
+ * class App {
1377
+ * parent = $page({
1378
+ * component: () => <NestedView />,
1379
+ * });
1380
+ *
1381
+ * child = $page({
1382
+ * parent: this.root,
1383
+ * component: () => <div>Child Page</div>,
1384
+ * });
1385
+ * }
1386
+ * ```
1387
+ */
1388
+ declare const NestedView: (props: NestedViewProps) => import("react").JSX.Element;
1389
+ declare const _default: import("react").MemoExoticComponent<typeof NestedView>;
1087
1390
  //#endregion
1088
1391
  //#region ../../src/react/router/components/NotFound.d.ts
1089
1392
  /**
@@ -1091,7 +1394,7 @@ declare const _default: import("react").MemoExoticComponent<(props: NestedViewPr
1091
1394
  */
1092
1395
  declare const NotFound: (props: {
1093
1396
  style?: CSSProperties;
1094
- }) => import("react/jsx-runtime").JSX.Element;
1397
+ }) => import("react").JSX.Element;
1095
1398
  //#endregion
1096
1399
  //#region ../../src/react/router/contexts/RouterLayerContext.d.ts
1097
1400
  interface RouterLayerContextValue {
@@ -1133,7 +1436,7 @@ interface UseActiveHook {
1133
1436
  *
1134
1437
  * @example
1135
1438
  * const [params, setParams] = useQueryParams(
1136
- * t.object({ tab: t.optional(t.string()) }),
1439
+ * z.object({ tab: z.string().optional() }),
1137
1440
  * { format: "querystring" },
1138
1441
  * );
1139
1442
  * // params.tab reads from `?tab=…`; setParams({ tab: "security" }) writes it.
@@ -1180,235 +1483,22 @@ declare const useRouter: <T extends object = any>() => ReactRouter<T>;
1180
1483
  //#region ../../src/react/router/hooks/useRouterState.d.ts
1181
1484
  declare const useRouterState: () => ReactRouterState;
1182
1485
  //#endregion
1183
- //#region ../../src/react/router/services/ReactRouter.d.ts
1184
- interface RouterPushOptions {
1185
- replace?: boolean;
1186
- params?: Record<string, string>;
1187
- query?: Record<string, string>;
1188
- meta?: Record<string, any>;
1189
- /**
1190
- * Recreate the whole page, ignoring the current state.
1191
- */
1192
- force?: boolean;
1193
- }
1194
- /**
1195
- * Friendly browser router API.
1196
- *
1197
- * Can be safely used server-side, but most methods will be no-op.
1198
- */
1199
- declare class ReactRouter<T extends object> {
1200
- protected readonly alepha: Alepha;
1201
- protected readonly pageApi: ReactPageProvider;
1202
- get state(): ReactRouterState;
1203
- get pages(): PageRoute[];
1204
- get concretePages(): ConcretePageRoute[];
1205
- get browser(): ReactBrowserProvider | undefined;
1206
- isActive(href: string, options?: {
1207
- startWith?: boolean;
1208
- }): boolean;
1209
- node(name: keyof VirtualRouter<T> | string, config?: {
1210
- params?: Record<string, any>;
1211
- query?: Record<string, any>;
1212
- }): any;
1213
- path(name: keyof VirtualRouter<T> | string, config?: {
1214
- params?: Record<string, any>;
1215
- query?: Record<string, any>;
1216
- }): string;
1217
- /**
1218
- * Reload the current page.
1219
- * This is equivalent to calling `go()` with the current pathname and search.
1220
- */
1221
- reload(): Promise<void>;
1222
- getURL(): URL;
1223
- get location(): Location;
1224
- get current(): ReactRouterState;
1225
- get pathname(): string;
1226
- get query(): Record<string, string>;
1227
- back(): Promise<void>;
1228
- forward(): Promise<void>;
1229
- invalidate(props?: Record<string, any>): Promise<void>;
1230
- push(path: string, options?: RouterPushOptions): Promise<void>;
1231
- push(path: keyof VirtualRouter<T>, options?: RouterPushOptions): Promise<void>;
1232
- anchor(path: string, options?: RouterPushOptions): AnchorProps;
1233
- anchor(path: keyof VirtualRouter<T>, options?: RouterPushOptions): AnchorProps;
1234
- /**
1235
- * Prepend the base URL to the given path.
1236
- */
1237
- base(path: string): string;
1238
- /**
1239
- * Set query params.
1240
- *
1241
- * @param record
1242
- * @param options
1243
- */
1244
- setQueryParams(record: Record<string, any> | ((queryParams: Record<string, any>) => Record<string, any>), options?: {
1245
- /**
1246
- * If true, this will add a new entry to the history stack.
1247
- */
1248
- push?: boolean;
1249
- }): void;
1250
- }
1251
- type VirtualRouter<T> = { [K in keyof T as T[K] extends PagePrimitive ? K : never]: T[K] };
1252
- //#endregion
1253
- //#region ../../src/react/router/providers/ReactBrowserRouterProvider.d.ts
1254
- interface BrowserRoute extends Route {
1255
- page: PageRoute;
1256
- }
1257
- /**
1258
- * Implementation of AlephaRouter for React in browser environment.
1259
- */
1260
- declare class ReactBrowserRouterProvider extends RouterProvider<BrowserRoute> {
1261
- protected readonly log: import("alepha/logger").Logger;
1262
- protected readonly alepha: Alepha;
1263
- protected readonly pageApi: ReactPageProvider;
1264
- protected readonly browserHeadProvider: BrowserHeadProvider;
1265
- add(entry: PageRouteEntry): void;
1266
- protected readonly configure: import("alepha").HookPrimitive<"configure">;
1267
- transition(url: URL, previous?: PreviousLayerData[], meta?: {}, isStale?: () => boolean): Promise<string | undefined>;
1268
- root(state: ReactRouterState): ReactNode;
1269
- }
1270
- //#endregion
1271
- //#region ../../src/react/router/providers/ReactBrowserProvider.d.ts
1272
- /**
1273
- * React browser renderer configuration atom
1274
- */
1275
- declare const reactBrowserOptions: import("alepha").Atom<import("typebox").TObject<{
1276
- scrollRestoration: import("typebox").TUnsafe<"top" | "manual">;
1277
- /**
1278
- * Intercept clicks on plain `<a href="/...">` anchors and route them
1279
- * through the SPA router, so authors don't need `<Link>` everywhere
1280
- * (notably for SSR/Markdown HTML rendered as raw markup).
1281
- *
1282
- * Skips: modifier keys, non-primary mouse buttons, `target` other than
1283
- * `_self`, `download`, `data-no-router`, non-http(s) schemes, hash-only
1284
- * hrefs, external origins, and clicks already `defaultPrevented`.
1285
- */
1286
- interceptAnchorClicks: import("typebox").TBoolean;
1287
- }>, "alepha.react.browser.options">;
1288
- type ReactBrowserRendererOptions = Static<typeof reactBrowserOptions.schema>;
1289
- declare module "alepha" {
1290
- interface State {
1291
- [reactBrowserOptions.key]: ReactBrowserRendererOptions;
1292
- }
1293
- }
1294
- declare class ReactBrowserProvider {
1295
- protected readonly log: import("alepha/logger").Logger;
1296
- protected readonly client: LinkProvider;
1297
- protected readonly alepha: Alepha;
1298
- protected readonly router: ReactBrowserRouterProvider;
1299
- protected readonly dateTimeProvider: DateTimeProvider;
1300
- protected readonly browserHeadProvider: BrowserHeadProvider;
1301
- protected readonly options: Readonly<{
1302
- scrollRestoration: "top" | "manual";
1303
- interceptAnchorClicks: boolean;
1304
- }>;
1305
- get rootId(): string;
1306
- protected getRootElement(): HTMLElement;
1307
- transitioning?: {
1308
- to: string;
1309
- from?: string;
1310
- };
1311
- /**
1312
- * Monotonic counter used to detect stale (superseded) transitions.
1313
- *
1314
- * Each call to `render()` captures `++this.transitionId` and any
1315
- * subsequent `render()` invalidates older in-flight transitions.
1316
- * This prevents a slow page from racing past a newer navigation
1317
- * (e.g. user clicks /pageA which has a 2s loader, then clicks /pageB
1318
- * — pageB must remain the committed page).
1319
- */
1320
- protected transitionId: number;
1321
- get state(): ReactRouterState;
1322
- /**
1323
- * Accessor for Document DOM API.
1324
- */
1325
- get document(): Document;
1326
- /**
1327
- * Accessor for History DOM API.
1328
- */
1329
- get history(): History;
1330
- /**
1331
- * Accessor for Location DOM API.
1332
- */
1333
- get location(): Location;
1334
- get base(): string;
1335
- get url(): string;
1336
- pushState(path: string, replace?: boolean): void;
1337
- invalidate(props?: Record<string, any>): Promise<void>;
1338
- push(url: string, options?: RouterPushOptions): Promise<void>;
1339
- protected render(options?: RouterRenderOptions): Promise<void>;
1340
- /**
1341
- * Get embedded layers from the server.
1342
- */
1343
- protected getHydrationState(): ReactHydrationState | undefined;
1344
- protected readonly onTransitionEnd: import("alepha").HookPrimitive<"react:transition:end">;
1345
- readonly ready: import("alepha").HookPrimitive<"ready">;
1346
- /**
1347
- * Attach a delegated click listener that routes plain `<a href="/...">`
1348
- * clicks through the SPA router. Returns a detach function (used in tests).
1349
- *
1350
- * Bails out on modifier keys, non-primary mouse buttons, `target`, `download`,
1351
- * `data-no-router`, hash-only/external/non-http hrefs, and already-prevented
1352
- * events. Honors the runtime `interceptAnchorClicks` flag.
1353
- */
1354
- protected attachAnchorInterceptor(): () => void;
1355
- protected stripBase(path: string): string;
1356
- }
1357
- type ReactHydrationState = {
1358
- "alepha.react.router.layers"?: Array<PreviousLayerData>;
1359
- } & {
1360
- [key: string]: any;
1361
- };
1362
- interface RouterRenderOptions {
1363
- url?: string;
1364
- previous?: PreviousLayerData[];
1365
- meta?: Record<string, any>;
1366
- /**
1367
- * Transition id used to detect supersession by a newer navigation.
1368
- * When omitted, render() allocates a fresh id internally.
1369
- */
1370
- transitionId?: number;
1371
- }
1372
- //#endregion
1373
1486
  //#region ../../src/react/router/atoms/ssrManifestAtom.d.ts
1374
1487
  /**
1375
1488
  * Schema for the SSR manifest atom.
1376
1489
  */
1377
- declare const ssrManifestAtomSchema: import("typebox").TObject<{
1378
- /**
1379
- * Base path for assets (from Vite's base config).
1380
- * Used to prefix asset URLs when serving from a subpath.
1381
- * @example "/devtools" or "/"
1382
- */
1383
- base: import("typebox").TOptional<import("typebox").TString>;
1384
- /**
1385
- * Preload manifest mapping short keys to source paths.
1386
- * Generated by viteAlephaSsrPreload plugin at build time.
1387
- */
1388
- preload: import("typebox").TOptional<import("typebox").TRecord<"^.*$", import("typebox").TString>>;
1389
- /**
1390
- * Client manifest mapping source files to their output information.
1391
- * Only includes fields actually used for preloading.
1392
- */
1393
- client: import("typebox").TOptional<import("typebox").TRecord<"^.*$", import("typebox").TObject<{
1394
- file: import("typebox").TString;
1395
- isEntry: import("typebox").TOptional<import("typebox").TBoolean>;
1396
- imports: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
1397
- css: import("typebox").TOptional<import("typebox").TArray<import("typebox").TString>>;
1398
- }>>>;
1399
- /**
1400
- * Dev mode head content.
1401
- * Contains pre-transformed scripts injected by Vite and plugins (React, etc.).
1402
- * Only set in dev mode via ViteDevServerProvider.
1403
- */
1404
- devHead: import("typebox").TOptional<import("typebox").TString>;
1405
- /**
1406
- * Auto-detected favicon path and MIME type.
1407
- * Format: "type:path" (e.g., "image/svg+xml:/favicon.svg").
1408
- * Set at build/dev time by scanning the public directory.
1409
- */
1410
- favicon: import("typebox").TOptional<import("typebox").TString>;
1411
- }>;
1490
+ declare const ssrManifestAtomSchema: import("zod").ZodObject<{
1491
+ base: import("zod").ZodOptional<import("zod").ZodString>;
1492
+ preload: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodString>>;
1493
+ client: import("zod").ZodOptional<import("zod").ZodRecord<import("zod").ZodString, import("zod").ZodObject<{
1494
+ file: import("zod").ZodString;
1495
+ isEntry: import("zod").ZodOptional<import("zod").ZodBoolean>;
1496
+ imports: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
1497
+ css: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString>>;
1498
+ }, import("zod/v4/core").$strip>>>;
1499
+ devHead: import("zod").ZodOptional<import("zod").ZodString>;
1500
+ favicon: import("zod").ZodOptional<import("zod").ZodString>;
1501
+ }, import("zod/v4/core").$strip>;
1412
1502
  /**
1413
1503
  * Type for the SSR manifest schema.
1414
1504
  */
@@ -1766,6 +1856,7 @@ declare class ReactServerProvider {
1766
1856
  protected readonly serverStaticProvider: ServerStaticProvider;
1767
1857
  protected readonly serverRouterProvider: ServerRouterProvider;
1768
1858
  protected readonly ssrManifestProvider: SSRManifestProvider;
1859
+ protected readonly localeProvider: RouterLocaleProvider;
1769
1860
  /**
1770
1861
  * Cached check for ServerLinksProvider - avoids has() lookup per request.
1771
1862
  */
@@ -1840,6 +1931,18 @@ declare class ReactServerProvider {
1840
1931
  * @param state - The router state
1841
1932
  * @returns Render result with redirect or React stream
1842
1933
  */
1934
+ /**
1935
+ * Inject SEO `hreflang` alternate links for the current route when
1936
+ * locale-prefix routing is enabled. Each registered locale gets an absolute
1937
+ * alternate URL (the default locale stays unprefixed), plus an `x-default`
1938
+ * pointing at the unprefixed URL — this is what lets crawlers index every
1939
+ * language. Also sets a best-effort `<html lang>` for the non-streaming /
1940
+ * prerender path; the streamed path's `<html lang>` is finalized on the
1941
+ * client (the early HTML head is flushed before the route is known).
1942
+ *
1943
+ * No-op unless `routing: "prefix"` is enabled on the i18n module.
1944
+ */
1945
+ protected injectLocaleHead(state: ReactRouterState): void;
1843
1946
  protected renderPage(route: PageRoute, state: ReactRouterState): Promise<{
1844
1947
  redirect?: string;
1845
1948
  reactStream?: ReadableStream<Uint8Array>;
@@ -1857,9 +1960,9 @@ declare class ReactServerProvider {
1857
1960
  */
1858
1961
  protected streamToString(stream: ReadableStream<Uint8Array>): Promise<string>;
1859
1962
  }
1860
- declare const envSchema: import("alepha").TObject<{
1861
- REACT_SSR_ENABLED: import("alepha").TOptional<import("alepha").TBoolean>;
1862
- }>;
1963
+ declare const envSchema: import("zod").ZodObject<{
1964
+ REACT_SSR_ENABLED: import("zod").ZodOptional<import("zod").ZodBoolean>;
1965
+ }, import("zod/v4/core").$strip>;
1863
1966
  declare module "alepha" {
1864
1967
  interface Env extends Partial<Static<typeof envSchema>> {}
1865
1968
  interface State {
@@ -1874,13 +1977,13 @@ declare module "alepha" {
1874
1977
  * Matches paths whose last segment contains a dot followed by 1-10 alphanumeric characters.
1875
1978
  */
1876
1979
  declare const DEFAULT_STATIC_FILE_PATTERN = "\\.[a-zA-Z0-9]{1,10}$";
1877
- declare const reactServerOptions: import("alepha").Atom<import("alepha").TObject<{
1878
- publicDir: import("typebox").TString;
1879
- staticServer: import("alepha").TObject<{
1880
- disabled: import("alepha").TBoolean;
1881
- path: import("typebox").TString;
1882
- }>;
1883
- }>, "alepha.react.server.options">;
1980
+ declare const reactServerOptions: import("alepha").Atom<import("zod").ZodObject<{
1981
+ publicDir: import("zod").ZodString;
1982
+ staticServer: import("zod").ZodObject<{
1983
+ disabled: import("zod").ZodBoolean;
1984
+ path: import("zod").ZodString;
1985
+ }, import("zod/v4/core").$strip>;
1986
+ }, import("zod/v4/core").$strip>, "alepha.react.server.options">;
1884
1987
  type ReactServerProviderOptions = Static<typeof reactServerOptions.schema>;
1885
1988
  declare module "alepha" {
1886
1989
  interface State {
@@ -1892,6 +1995,11 @@ declare module "alepha" {
1892
1995
  declare module "alepha" {
1893
1996
  interface State {
1894
1997
  "alepha.react.router.state"?: ReactRouterState;
1998
+ /**
1999
+ * The active locale path-prefix (e.g. `"fr"`), when `routing: "prefix"` is
2000
+ * enabled on the i18n module. Empty/absent for the default locale.
2001
+ */
2002
+ "alepha.react.router.locale"?: string;
1895
2003
  }
1896
2004
  interface Hooks {
1897
2005
  /**
@@ -1966,5 +2074,5 @@ declare module "alepha" {
1966
2074
  */
1967
2075
  declare const AlephaReactRouter: import("alepha").Service<import("alepha").Module>;
1968
2076
  //#endregion
1969
- export { $page, AlephaReactRouter, AnchorProps, ClientManifest, ConcretePageRoute, CreateLayersResult, DEFAULT_STATIC_FILE_PATTERN, EntryAssets, ErrorHandler, ErrorViewer, type ErrorViewerProps, HydrationData, Layer, Link, type LinkProps, _default as NestedView, type NestedViewProps, NotFound, PAGE_PRELOAD_KEY, PageAnimation, PageCanContext, PageConfigSchema, PageLoader, PageNav, PagePrimitive, PagePrimitiveOptions, PagePrimitiveRenderOptions, PagePrimitiveRenderResult, PageRequestConfig, PageRoute, PageRouteEntry, PreloadManifest, PreviousLayerData, ReactBrowserProvider, ReactBrowserRendererOptions, ReactHydrationState, ReactPageProvider, ReactPageService, ReactPreloadProvider, ReactRouter, ReactRouterState, ReactServerProvider, ReactServerProviderOptions, ReactServerTemplateProvider, Redirection, RouterLayerContext, RouterLayerContextValue, RouterPushOptions, RouterRenderOptions, RouterStackItem, SSRManifestProvider, TPropsDefault, TPropsParentDefault, UseActiveHook, UseActiveOptions, UseQueryParamsHookOptions, VirtualRouter, isPageRoute, reactBrowserOptions, reactPageOptions, reactServerOptions, useActive, useQueryParams, useRouter, useRouterState };
2077
+ export { $page, AlephaReactRouter, AnchorProps, ClientManifest, ConcretePageRoute, CreateLayersResult, DEFAULT_STATIC_FILE_PATTERN, EntryAssets, ErrorHandler, ErrorViewer, type ErrorViewerProps, HydrationData, Layer, Link, type LinkProps, _default as NestedView, type NestedViewProps, NotFound, PAGE_PRELOAD_KEY, PageAnimation, PageCanContext, PageConfigSchema, PageLoader, PageNav, PagePrimitive, PagePrimitiveOptions, PagePrimitiveRenderOptions, PagePrimitiveRenderResult, PageRequestConfig, PageRoute, PageRouteEntry, PreloadManifest, PreviousLayerData, ReactBrowserProvider, ReactBrowserRendererOptions, ReactHydrationState, ReactPageProvider, ReactPageService, ReactPreloadProvider, ReactRouter, ReactRouterState, ReactServerProvider, ReactServerProviderOptions, ReactServerTemplateProvider, Redirection, RootComponentsProvider, RouterLayerContext, RouterLayerContextValue, RouterLocaleProvider, RouterPushOptions, RouterRenderOptions, RouterStackItem, SSRManifestProvider, TPropsDefault, TPropsParentDefault, UseActiveHook, UseActiveOptions, UseQueryParamsHookOptions, VirtualRouter, isPageRoute, reactBrowserOptions, reactPageOptions, reactServerOptions, useActive, useQueryParams, useRouter, useRouterState };
1970
2078
  //# sourceMappingURL=index.d.ts.map