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 { $atom, $context, $hook, $inject, $module, Alepha, AlephaError, AppNotStartedError, ContainerLockedError, KIND, Primitive, createMiddleware, createPrimitive, t } from "alepha";
1
+ import { $atom, $context, $hook, $inject, $module, Alepha, AlephaError, AppNotStartedError, ContainerLockedError, KIND, Primitive, createMiddleware, createPrimitive, z } from "alepha";
2
2
  import { DateTimeProvider } from "alepha/datetime";
3
3
  import { $logger } from "alepha/logger";
4
4
  import { createSecretKey, timingSafeEqual } from "node:crypto";
@@ -30,23 +30,25 @@ export * from "alepha/crypto";
30
30
  */
31
31
  const currentTenantAtom = $atom({
32
32
  name: "alepha.security.tenant",
33
- schema: t.optional(t.object({ id: t.text({ description: "Tenant identifier (slug, UUID, or composite)." }) }))
33
+ schema: z.object({ id: z.text({ description: "Tenant identifier (slug, UUID, or composite)." }) }).optional()
34
34
  });
35
35
  //#endregion
36
36
  //#region ../../src/security/schemas/userAccountInfoSchema.ts
37
- const userAccountInfoSchema = t.object({
38
- id: t.text({ description: "Unique identifier for the user." }),
39
- name: t.optional(t.text({ description: "Full name of the user." })),
40
- email: t.optional(t.text({
37
+ const userAccountInfoSchema = z.object({
38
+ id: z.text({ description: "Unique identifier for the user." }),
39
+ name: z.text({ description: "Full name of the user." }).optional(),
40
+ firstName: z.text({ description: "Given name of the user (OIDC `given_name`)." }).optional(),
41
+ lastName: z.text({ description: "Family name of the user (OIDC `family_name`)." }).optional(),
42
+ email: z.text({
41
43
  description: "Email address of the user.",
42
44
  format: "email"
43
- })),
44
- username: t.optional(t.text({ description: "Preferred username of the user." })),
45
- picture: t.optional(t.text({ description: "URL to the user's profile picture." })),
46
- sessionId: t.optional(t.text({ description: "Session identifier for the user, if applicable." })),
47
- organization: t.optional(t.uuid({ description: "Organization the user belongs to." })),
48
- roles: t.optional(t.array(t.text(), { description: "List of roles assigned to the user." })),
49
- realm: t.optional(t.text({ description: "The realm (issuer) the user was authenticated from." }))
45
+ }).optional(),
46
+ username: z.text({ description: "Preferred username of the user." }).optional(),
47
+ picture: z.text({ description: "URL to the user's profile picture." }).optional(),
48
+ sessionId: z.text({ description: "Session identifier for the user, if applicable." }).optional(),
49
+ organization: z.uuid().describe("Organization the user belongs to.").optional(),
50
+ roles: z.array(z.text()).describe("List of roles assigned to the user.").optional(),
51
+ realm: z.text({ description: "The realm (issuer) the user was authenticated from." }).optional()
50
52
  });
51
53
  //#endregion
52
54
  //#region ../../src/security/atoms/currentUserAtom.ts
@@ -58,7 +60,7 @@ const userAccountInfoSchema = t.object({
58
60
  */
59
61
  const currentUserAtom = $atom({
60
62
  name: "alepha.security.user",
61
- schema: t.optional(userAccountInfoSchema)
63
+ schema: userAccountInfoSchema.optional()
62
64
  });
63
65
  //#endregion
64
66
  //#region ../../src/security/errors/SecurityError.ts
@@ -617,11 +619,11 @@ const handleKeyObject = (keyObject, alg) => {
617
619
  }, extractable, [isPublic ? "verify" : "sign"]);
618
620
  }
619
621
  if (keyObject.asymmetricKeyType === "ec") {
620
- const namedCurve = new Map([
622
+ const namedCurve = (/* @__PURE__ */ new Map([
621
623
  ["prime256v1", "P-256"],
622
624
  ["secp384r1", "P-384"],
623
625
  ["secp521r1", "P-521"]
624
- ]).get(keyObject.asymmetricKeyDetails?.namedCurve);
626
+ ])).get(keyObject.asymmetricKeyDetails?.namedCurve);
625
627
  if (!namedCurve) throw new TypeError(unusableForAlg);
626
628
  const expectedCurve = {
627
629
  ES256: "P-256",
@@ -652,7 +654,8 @@ async function normalizeKey(key, alg) {
652
654
  } catch (err) {
653
655
  if (err instanceof TypeError) throw err;
654
656
  }
655
- return handleJWK(key, key.export({ format: "jwk" }), alg);
657
+ let jwk = key.export({ format: "jwk" });
658
+ return handleJWK(key, jwk, alg);
656
659
  }
657
660
  if (isJWK(key)) {
658
661
  if (key.k) return decode(key.k);
@@ -661,7 +664,208 @@ async function normalizeKey(key, alg) {
661
664
  throw new Error("unreachable");
662
665
  }
663
666
  //#endregion
667
+ //#region ../../../../node_modules/jose/dist/webapi/lib/asn1.js
668
+ const bytesEqual = (a, b) => {
669
+ if (a.byteLength !== b.length) return false;
670
+ for (let i = 0; i < a.byteLength; i++) if (a[i] !== b[i]) return false;
671
+ return true;
672
+ };
673
+ const createASN1State = (data) => ({
674
+ data,
675
+ pos: 0
676
+ });
677
+ const parseLength = (state) => {
678
+ const first = state.data[state.pos++];
679
+ if (first & 128) {
680
+ const lengthOfLen = first & 127;
681
+ let length = 0;
682
+ for (let i = 0; i < lengthOfLen; i++) length = length << 8 | state.data[state.pos++];
683
+ return length;
684
+ }
685
+ return first;
686
+ };
687
+ const expectTag = (state, expectedTag, errorMessage) => {
688
+ if (state.data[state.pos++] !== expectedTag) throw new Error(errorMessage);
689
+ };
690
+ const getSubarray = (state, length) => {
691
+ const result = state.data.subarray(state.pos, state.pos + length);
692
+ state.pos += length;
693
+ return result;
694
+ };
695
+ const parseAlgorithmOID = (state) => {
696
+ expectTag(state, 6, "Expected algorithm OID");
697
+ const oidLen = parseLength(state);
698
+ return getSubarray(state, oidLen);
699
+ };
700
+ function parsePKCS8Header(state) {
701
+ expectTag(state, 48, "Invalid PKCS#8 structure");
702
+ parseLength(state);
703
+ expectTag(state, 2, "Expected version field");
704
+ const verLen = parseLength(state);
705
+ state.pos += verLen;
706
+ expectTag(state, 48, "Expected algorithm identifier");
707
+ const algIdLen = parseLength(state);
708
+ return {
709
+ algIdStart: state.pos,
710
+ algIdLength: algIdLen
711
+ };
712
+ }
713
+ const parseECAlgorithmIdentifier = (state) => {
714
+ const algOid = parseAlgorithmOID(state);
715
+ if (bytesEqual(algOid, [
716
+ 43,
717
+ 101,
718
+ 110
719
+ ])) return "X25519";
720
+ if (!bytesEqual(algOid, [
721
+ 42,
722
+ 134,
723
+ 72,
724
+ 206,
725
+ 61,
726
+ 2,
727
+ 1
728
+ ])) throw new Error("Unsupported key algorithm");
729
+ expectTag(state, 6, "Expected curve OID");
730
+ const curveOidLen = parseLength(state);
731
+ const curveOid = getSubarray(state, curveOidLen);
732
+ for (const { name, oid } of [
733
+ {
734
+ name: "P-256",
735
+ oid: [
736
+ 42,
737
+ 134,
738
+ 72,
739
+ 206,
740
+ 61,
741
+ 3,
742
+ 1,
743
+ 7
744
+ ]
745
+ },
746
+ {
747
+ name: "P-384",
748
+ oid: [
749
+ 43,
750
+ 129,
751
+ 4,
752
+ 0,
753
+ 34
754
+ ]
755
+ },
756
+ {
757
+ name: "P-521",
758
+ oid: [
759
+ 43,
760
+ 129,
761
+ 4,
762
+ 0,
763
+ 35
764
+ ]
765
+ }
766
+ ]) if (bytesEqual(curveOid, oid)) return name;
767
+ throw new Error("Unsupported named curve");
768
+ };
769
+ const genericImport = async (keyFormat, keyData, alg, options) => {
770
+ let algorithm;
771
+ let keyUsages;
772
+ const isPublic = keyFormat === "spki";
773
+ const getSigUsages = () => isPublic ? ["verify"] : ["sign"];
774
+ const getEncUsages = () => isPublic ? ["encrypt", "wrapKey"] : ["decrypt", "unwrapKey"];
775
+ switch (alg) {
776
+ case "PS256":
777
+ case "PS384":
778
+ case "PS512":
779
+ algorithm = {
780
+ name: "RSA-PSS",
781
+ hash: `SHA-${alg.slice(-3)}`
782
+ };
783
+ keyUsages = getSigUsages();
784
+ break;
785
+ case "RS256":
786
+ case "RS384":
787
+ case "RS512":
788
+ algorithm = {
789
+ name: "RSASSA-PKCS1-v1_5",
790
+ hash: `SHA-${alg.slice(-3)}`
791
+ };
792
+ keyUsages = getSigUsages();
793
+ break;
794
+ case "RSA-OAEP":
795
+ case "RSA-OAEP-256":
796
+ case "RSA-OAEP-384":
797
+ case "RSA-OAEP-512":
798
+ algorithm = {
799
+ name: "RSA-OAEP",
800
+ hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`
801
+ };
802
+ keyUsages = getEncUsages();
803
+ break;
804
+ case "ES256":
805
+ case "ES384":
806
+ case "ES512":
807
+ algorithm = {
808
+ name: "ECDSA",
809
+ namedCurve: {
810
+ ES256: "P-256",
811
+ ES384: "P-384",
812
+ ES512: "P-521"
813
+ }[alg]
814
+ };
815
+ keyUsages = getSigUsages();
816
+ break;
817
+ case "ECDH-ES":
818
+ case "ECDH-ES+A128KW":
819
+ case "ECDH-ES+A192KW":
820
+ case "ECDH-ES+A256KW":
821
+ try {
822
+ const namedCurve = options.getNamedCurve(keyData);
823
+ algorithm = namedCurve === "X25519" ? { name: "X25519" } : {
824
+ name: "ECDH",
825
+ namedCurve
826
+ };
827
+ } catch (cause) {
828
+ throw new JOSENotSupported("Invalid or unsupported key format");
829
+ }
830
+ keyUsages = isPublic ? [] : ["deriveBits"];
831
+ break;
832
+ case "Ed25519":
833
+ case "EdDSA":
834
+ algorithm = { name: "Ed25519" };
835
+ keyUsages = getSigUsages();
836
+ break;
837
+ case "ML-DSA-44":
838
+ case "ML-DSA-65":
839
+ case "ML-DSA-87":
840
+ algorithm = { name: alg };
841
+ keyUsages = getSigUsages();
842
+ break;
843
+ default: throw new JOSENotSupported("Invalid or unsupported \"alg\" (Algorithm) value");
844
+ }
845
+ return crypto.subtle.importKey(keyFormat, keyData, algorithm, options?.extractable ?? (isPublic ? true : false), keyUsages);
846
+ };
847
+ const processPEMData = (pem, pattern) => {
848
+ return decodeBase64(pem.replace(pattern, ""));
849
+ };
850
+ const fromPKCS8 = (pem, alg, options) => {
851
+ const keyData = processPEMData(pem, /(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g);
852
+ let opts = options;
853
+ if (alg?.startsWith?.("ECDH-ES")) {
854
+ opts ||= {};
855
+ opts.getNamedCurve = (keyData) => {
856
+ const state = createASN1State(keyData);
857
+ parsePKCS8Header(state);
858
+ return parseECAlgorithmIdentifier(state);
859
+ };
860
+ }
861
+ return genericImport("pkcs8", keyData, alg, opts);
862
+ };
863
+ //#endregion
664
864
  //#region ../../../../node_modules/jose/dist/webapi/key/import.js
865
+ async function importPKCS8(pkcs8, alg, options) {
866
+ if (typeof pkcs8 !== "string" || pkcs8.indexOf("-----BEGIN PRIVATE KEY-----") !== 0) throw new TypeError("\"pkcs8\" must be PKCS#8 formatted string");
867
+ return fromPKCS8(pkcs8, alg, options);
868
+ }
665
869
  async function importJWK(jwk, alg, options) {
666
870
  if (!isObject(jwk)) throw new TypeError("JWK must be an object");
667
871
  let ext;
@@ -695,6 +899,26 @@ async function importJWK(jwk, alg, options) {
695
899
  }
696
900
  }
697
901
  //#endregion
902
+ //#region ../../../../node_modules/jose/dist/webapi/lib/key_to_jwk.js
903
+ async function keyToJWK(key) {
904
+ if (isKeyObject(key)) if (key.type === "secret") key = key.export();
905
+ else return key.export({ format: "jwk" });
906
+ if (key instanceof Uint8Array) return {
907
+ kty: "oct",
908
+ k: encode(key)
909
+ };
910
+ if (!isCryptoKey(key)) throw new TypeError(invalidKeyInput(key, "CryptoKey", "KeyObject", "Uint8Array"));
911
+ if (!key.extractable) throw new TypeError("non-extractable CryptoKey cannot be exported as a JWK");
912
+ const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey("jwk", key);
913
+ if (jwk.kty === "AKP") jwk.alg = alg;
914
+ return jwk;
915
+ }
916
+ //#endregion
917
+ //#region ../../../../node_modules/jose/dist/webapi/key/export.js
918
+ async function exportJWK(key) {
919
+ return keyToJWK(key);
920
+ }
921
+ //#endregion
698
922
  //#region ../../../../node_modules/jose/dist/webapi/lib/validate_crit.js
699
923
  function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {
700
924
  if (joseHeader.crit !== void 0 && protectedHeader?.crit === void 0) throw new Err("\"crit\" (Critical) Header Parameter MUST be integrity protected");
@@ -826,7 +1050,7 @@ async function flattenedVerify(jws, key, options) {
826
1050
  ...parsedProt,
827
1051
  ...jws.header
828
1052
  };
829
- const extensions = validateCrit(JWSInvalid, new Map([["b64", true]]), options?.crit, parsedProt, joseHeader);
1053
+ const extensions = validateCrit(JWSInvalid, /* @__PURE__ */ new Map([["b64", true]]), options?.crit, parsedProt, joseHeader);
830
1054
  let b64 = true;
831
1055
  if (extensions.has("b64")) {
832
1056
  b64 = parsedProt.b64;
@@ -845,7 +1069,7 @@ async function flattenedVerify(jws, key, options) {
845
1069
  resolvedKey = true;
846
1070
  }
847
1071
  checkKeyType(alg, key, "verify");
848
- const data = concat(jws.protected !== void 0 ? encode$1(jws.protected) : new Uint8Array(), encode$1("."), typeof jws.payload === "string" ? b64 ? encode$1(jws.payload) : encoder.encode(jws.payload) : jws.payload);
1072
+ const data = concat(jws.protected !== void 0 ? encode$1(jws.protected) : /* @__PURE__ */ new Uint8Array(), encode$1("."), typeof jws.payload === "string" ? b64 ? encode$1(jws.payload) : encoder.encode(jws.payload) : jws.payload);
849
1073
  const signature = decodeBase64url(jws.signature, "signature", JWSInvalid);
850
1074
  const k = await normalizeKey(key, alg);
851
1075
  if (!await verify(alg, k, signature, data)) throw new JWSSignatureVerificationFailed();
@@ -1090,7 +1314,7 @@ var FlattenedSign = class {
1090
1314
  ...this.#protectedHeader,
1091
1315
  ...this.#unprotectedHeader
1092
1316
  };
1093
- const extensions = validateCrit(JWSInvalid, new Map([["b64", true]]), options?.crit, this.#protectedHeader, joseHeader);
1317
+ const extensions = validateCrit(JWSInvalid, /* @__PURE__ */ new Map([["b64", true]]), options?.crit, this.#protectedHeader, joseHeader);
1094
1318
  let b64 = true;
1095
1319
  if (extensions.has("b64")) {
1096
1320
  b64 = this.#protectedHeader.b64;
@@ -1115,7 +1339,7 @@ var FlattenedSign = class {
1115
1339
  protectedHeaderBytes = encode$1(protectedHeaderString);
1116
1340
  } else {
1117
1341
  protectedHeaderString = "";
1118
- protectedHeaderBytes = new Uint8Array();
1342
+ protectedHeaderBytes = /* @__PURE__ */ new Uint8Array();
1119
1343
  }
1120
1344
  const data = concat(protectedHeaderBytes, encode$1("."), payloadB);
1121
1345
  const jws = {
@@ -1428,6 +1652,114 @@ function createRemoteJWKSet(url, options) {
1428
1652
  return remoteJWKSet;
1429
1653
  }
1430
1654
  //#endregion
1655
+ //#region ../../../../node_modules/jose/dist/webapi/key/generate_key_pair.js
1656
+ function getModulusLengthOption(options) {
1657
+ const modulusLength = options?.modulusLength ?? 2048;
1658
+ if (typeof modulusLength !== "number" || modulusLength < 2048) throw new JOSENotSupported("Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used");
1659
+ return modulusLength;
1660
+ }
1661
+ async function generateKeyPair(alg, options) {
1662
+ let algorithm;
1663
+ let keyUsages;
1664
+ switch (alg) {
1665
+ case "PS256":
1666
+ case "PS384":
1667
+ case "PS512":
1668
+ algorithm = {
1669
+ name: "RSA-PSS",
1670
+ hash: `SHA-${alg.slice(-3)}`,
1671
+ publicExponent: Uint8Array.of(1, 0, 1),
1672
+ modulusLength: getModulusLengthOption(options)
1673
+ };
1674
+ keyUsages = ["sign", "verify"];
1675
+ break;
1676
+ case "RS256":
1677
+ case "RS384":
1678
+ case "RS512":
1679
+ algorithm = {
1680
+ name: "RSASSA-PKCS1-v1_5",
1681
+ hash: `SHA-${alg.slice(-3)}`,
1682
+ publicExponent: Uint8Array.of(1, 0, 1),
1683
+ modulusLength: getModulusLengthOption(options)
1684
+ };
1685
+ keyUsages = ["sign", "verify"];
1686
+ break;
1687
+ case "RSA-OAEP":
1688
+ case "RSA-OAEP-256":
1689
+ case "RSA-OAEP-384":
1690
+ case "RSA-OAEP-512":
1691
+ algorithm = {
1692
+ name: "RSA-OAEP",
1693
+ hash: `SHA-${parseInt(alg.slice(-3), 10) || 1}`,
1694
+ publicExponent: Uint8Array.of(1, 0, 1),
1695
+ modulusLength: getModulusLengthOption(options)
1696
+ };
1697
+ keyUsages = [
1698
+ "decrypt",
1699
+ "unwrapKey",
1700
+ "encrypt",
1701
+ "wrapKey"
1702
+ ];
1703
+ break;
1704
+ case "ES256":
1705
+ algorithm = {
1706
+ name: "ECDSA",
1707
+ namedCurve: "P-256"
1708
+ };
1709
+ keyUsages = ["sign", "verify"];
1710
+ break;
1711
+ case "ES384":
1712
+ algorithm = {
1713
+ name: "ECDSA",
1714
+ namedCurve: "P-384"
1715
+ };
1716
+ keyUsages = ["sign", "verify"];
1717
+ break;
1718
+ case "ES512":
1719
+ algorithm = {
1720
+ name: "ECDSA",
1721
+ namedCurve: "P-521"
1722
+ };
1723
+ keyUsages = ["sign", "verify"];
1724
+ break;
1725
+ case "Ed25519":
1726
+ case "EdDSA":
1727
+ keyUsages = ["sign", "verify"];
1728
+ algorithm = { name: "Ed25519" };
1729
+ break;
1730
+ case "ML-DSA-44":
1731
+ case "ML-DSA-65":
1732
+ case "ML-DSA-87":
1733
+ keyUsages = ["sign", "verify"];
1734
+ algorithm = { name: alg };
1735
+ break;
1736
+ case "ECDH-ES":
1737
+ case "ECDH-ES+A128KW":
1738
+ case "ECDH-ES+A192KW":
1739
+ case "ECDH-ES+A256KW": {
1740
+ keyUsages = ["deriveBits"];
1741
+ const crv = options?.crv ?? "P-256";
1742
+ switch (crv) {
1743
+ case "P-256":
1744
+ case "P-384":
1745
+ case "P-521":
1746
+ algorithm = {
1747
+ name: "ECDH",
1748
+ namedCurve: crv
1749
+ };
1750
+ break;
1751
+ case "X25519":
1752
+ algorithm = { name: "X25519" };
1753
+ break;
1754
+ default: throw new JOSENotSupported("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519");
1755
+ }
1756
+ break;
1757
+ }
1758
+ default: throw new JOSENotSupported("Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value");
1759
+ }
1760
+ return crypto.subtle.generateKey(algorithm, options?.extractable ?? false, keyUsages);
1761
+ }
1762
+ //#endregion
1431
1763
  //#region ../../src/security/providers/JwtProvider.ts
1432
1764
  /**
1433
1765
  * Provides utilities for working with JSON Web Tokens (JWT).
@@ -1435,6 +1767,7 @@ function createRemoteJWKSet(url, options) {
1435
1767
  var JwtProvider = class {
1436
1768
  log = $logger();
1437
1769
  keystore = [];
1770
+ signers = /* @__PURE__ */ new Map();
1438
1771
  dateTimeProvider = $inject(DateTimeProvider);
1439
1772
  encoder = new TextEncoder();
1440
1773
  /**
@@ -1467,6 +1800,50 @@ var JwtProvider = class {
1467
1800
  }
1468
1801
  }
1469
1802
  /**
1803
+ * Configure an asymmetric signing key for a realm/issuer. Tokens minted for
1804
+ * `name` are then signed with `alg` + `kid`, and a local verify loader is
1805
+ * registered so this process can verify its own tokens (refresh tokens,
1806
+ * authorization codes, id_tokens). Public keys are published via `getJwks`.
1807
+ *
1808
+ * `privateKey` is a PKCS#8 PEM (from env). When it is empty/undefined an
1809
+ * **ephemeral per-process keypair** is generated so dev/test work with no env
1810
+ * key configured — the published JWKS still resolves; tokens just don't
1811
+ * survive a restart. Additive: realms without a signing key keep the HS256
1812
+ * path untouched.
1813
+ */
1814
+ async setSigningKey(name, signing) {
1815
+ const key = signing.privateKey ? await importPKCS8(signing.privateKey, signing.alg, { extractable: true }) : (await generateKeyPair(signing.alg, { extractable: true })).privateKey;
1816
+ const { d, p, q, dp, dq, qi, ...pub } = await exportJWK(key);
1817
+ const publicJwk = {
1818
+ ...pub,
1819
+ kid: signing.kid,
1820
+ use: "sig",
1821
+ alg: signing.alg
1822
+ };
1823
+ this.signers.set(name, {
1824
+ alg: signing.alg,
1825
+ kid: signing.kid,
1826
+ key,
1827
+ publicJwk
1828
+ });
1829
+ this.log.debug(`will sign + verify JWTs for '${name}'`, {
1830
+ alg: signing.alg,
1831
+ kid: signing.kid
1832
+ });
1833
+ this.keystore.push({
1834
+ name,
1835
+ keyLoader: createLocalJWKSet({ keys: [publicJwk] })
1836
+ });
1837
+ }
1838
+ /**
1839
+ * Public JWK Set for a realm/issuer configured with an asymmetric signing
1840
+ * key. Returns an empty set for HS256 / external (URL-based) realms.
1841
+ */
1842
+ async getJwks(name) {
1843
+ const signer = this.signers.get(name);
1844
+ return { keys: signer ? [signer.publicJwk] : [] };
1845
+ }
1846
+ /**
1470
1847
  * Retrieves the payload from a JSON Web Token (JWT).
1471
1848
  *
1472
1849
  * @param token - The JWT to extract the payload from.
@@ -1509,6 +1886,17 @@ var JwtProvider = class {
1509
1886
  * @returns The signed JWT token.
1510
1887
  */
1511
1888
  async create(payload, keyName, signOptions) {
1889
+ const signerName = keyName ?? this.keystore[0]?.name;
1890
+ const signer = signerName ? this.signers.get(signerName) : void 0;
1891
+ if (signer) {
1892
+ const signJwt = new SignJWT(payload);
1893
+ signJwt.setProtectedHeader({
1894
+ alg: signer.alg,
1895
+ kid: signer.kid,
1896
+ ...signOptions?.header
1897
+ });
1898
+ return await signJwt.sign(signer.key);
1899
+ }
1512
1900
  const secretKey = keyName ? this.keystore.find((it) => it.name === keyName)?.secretKey : this.keystore[0]?.secretKey;
1513
1901
  if (!secretKey) throw new AlephaError("No secret key found in the keystore");
1514
1902
  const signJwt = new SignJWT(payload);
@@ -1579,7 +1967,8 @@ var SecurityProvider = class {
1579
1967
  on: "start",
1580
1968
  handler: async () => {
1581
1969
  for (const realm of this.realms) {
1582
- if (realm.secret) {
1970
+ if (realm.signing) await this.jwt.setSigningKey(realm.name, realm.signing);
1971
+ else if (realm.secret) {
1583
1972
  const secret = typeof realm.secret === "function" ? realm.secret() : realm.secret;
1584
1973
  this.jwt.setKeyLoader(realm.name, secret);
1585
1974
  }
@@ -1710,6 +2099,8 @@ var SecurityProvider = class {
1710
2099
  const username = this.getUsernameFromPayload(payload);
1711
2100
  const picture = this.getPictureFromPayload(payload);
1712
2101
  const name = this.getNameFromPayload(payload);
2102
+ const firstName = typeof payload.given_name === "string" ? payload.given_name : void 0;
2103
+ const lastName = typeof payload.family_name === "string" ? payload.family_name : void 0;
1713
2104
  const organization = this.getOrganizationFromPayload(payload);
1714
2105
  const rolesFromSystem = this.getRoles(realmName);
1715
2106
  const roles = rolesFromPayload.reduce((arr, roleName) => arr.concat(rolesFromSystem.filter((it) => it.name === roleName)), []).map((it) => it.name);
@@ -1719,6 +2110,8 @@ var SecurityProvider = class {
1719
2110
  id,
1720
2111
  roles,
1721
2112
  name,
2113
+ firstName,
2114
+ lastName,
1722
2115
  email,
1723
2116
  username,
1724
2117
  picture,
@@ -1925,6 +2318,24 @@ var SecurityProvider = class {
1925
2318
  return this.realms;
1926
2319
  }
1927
2320
  /**
2321
+ * Resolve the realm an authenticated admin action is allowed to operate on.
2322
+ *
2323
+ * Admin endpoints accept a client-supplied target realm (e.g. a
2324
+ * `userRealmName` query param). Without scoping, a realm-A admin could act on
2325
+ * realm-B resources by simply naming realm B — a cross-tenant escalation
2326
+ * whenever realms are used as tenant boundaries. This binds the target realm
2327
+ * to the caller's own realm: omitting the target means "my realm"; naming a
2328
+ * *different* realm than the caller's is refused.
2329
+ *
2330
+ * Returns the effective realm to use (may be `undefined` in single-realm apps
2331
+ * where neither the caller nor the request carries a realm).
2332
+ */
2333
+ assertRealmScope(user, requestedRealm) {
2334
+ const callerRealm = user?.realm;
2335
+ if (requestedRealm && callerRealm && requestedRealm !== callerRealm) throw new ForbiddenError(`Cross-realm access denied: authenticated in realm '${callerRealm}', requested realm '${requestedRealm}'.`);
2336
+ return requestedRealm ?? callerRealm;
2337
+ }
2338
+ /**
1928
2339
  * Retrieves the user account from the provided user ID.
1929
2340
  *
1930
2341
  * @param realm
@@ -2095,6 +2506,7 @@ var IssuerPrimitive = class extends Primitive {
2095
2506
  name: this.name,
2096
2507
  profile: this.options.profile,
2097
2508
  secret: "jwks" in this.options ? this.options.jwks : this.options.secret,
2509
+ signing: this.options.signing,
2098
2510
  roles,
2099
2511
  resolvers: []
2100
2512
  });
@@ -2188,6 +2600,7 @@ var IssuerPrimitive = class extends Primitive {
2188
2600
  aud: this.name
2189
2601
  });
2190
2602
  const tenant = this.alepha.store.get(currentTenantAtom)?.id;
2603
+ const composedName = user.name ?? ([user.firstName, user.lastName].filter((s) => !!s?.trim()).join(" ").trim() || void 0);
2191
2604
  return {
2192
2605
  access_token: await this.jwt.create({
2193
2606
  sub: user.id,
@@ -2195,7 +2608,9 @@ var IssuerPrimitive = class extends Primitive {
2195
2608
  iat,
2196
2609
  aud: this.name,
2197
2610
  sid,
2198
- name: user.name,
2611
+ name: composedName,
2612
+ given_name: user.firstName,
2613
+ family_name: user.lastName,
2199
2614
  email: user.email,
2200
2615
  preferred_username: user.username,
2201
2616
  picture: user.picture,
@@ -2661,23 +3076,23 @@ const $serviceAccount = (options) => {
2661
3076
  };
2662
3077
  //#endregion
2663
3078
  //#region ../../src/security/schemas/permissionSchema.ts
2664
- const permissionSchema = t.object({
2665
- name: t.text({ description: "Name of the permission." }),
2666
- group: t.optional(t.text({ description: "Group of the permission." })),
2667
- description: t.optional(t.text({ description: "Describe the permission." })),
2668
- method: t.optional(t.text({ description: "HTTP method of the permission. When available." })),
2669
- path: t.optional(t.text({ description: "Pathname of the permission. When available." }))
3079
+ const permissionSchema = z.object({
3080
+ name: z.text({ description: "Name of the permission." }),
3081
+ group: z.text({ description: "Group of the permission." }).optional(),
3082
+ description: z.text({ description: "Describe the permission." }).optional(),
3083
+ method: z.text({ description: "HTTP method of the permission. When available." }).optional(),
3084
+ path: z.text({ description: "Pathname of the permission. When available." }).optional()
2670
3085
  });
2671
3086
  //#endregion
2672
3087
  //#region ../../src/security/schemas/roleSchema.ts
2673
- const roleSchema = t.object({
2674
- name: t.text({ description: "Name of the role." }),
2675
- description: t.optional(t.text({ description: "Describe the role." })),
2676
- default: t.optional(t.boolean({ description: "If true, this role will be assigned to all users by default." })),
2677
- permissions: t.array(t.object({
2678
- name: t.text({ description: "Name of the permission." }),
2679
- ownership: t.optional(t.boolean({ description: "If true, user will only have access to it's own resources." })),
2680
- exclude: t.optional(t.array(t.text(), { description: "Exclude some permissions. Useful when 'name' is a wildcard." }))
3088
+ const roleSchema = z.object({
3089
+ name: z.text({ description: "Name of the role." }),
3090
+ description: z.text({ description: "Describe the role." }).optional(),
3091
+ default: z.boolean().describe("If true, this role will be assigned to all users by default.").optional(),
3092
+ permissions: z.array(z.object({
3093
+ name: z.text({ description: "Name of the permission." }),
3094
+ ownership: z.boolean().describe("If true, user will only have access to it's own resources.").optional(),
3095
+ exclude: z.array(z.text()).describe("Exclude some permissions. Useful when 'name' is a wildcard.").optional()
2681
3096
  }))
2682
3097
  });
2683
3098
  //#endregion