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,6 +1,6 @@
1
- import { $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, SchemaValidator, createPrimitive, t } from "alepha";
1
+ import { $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, SchemaValidator, createPrimitive, z } from "alepha";
2
2
  import { $audit } from "alepha/api/audits";
3
- import { $secure } from "alepha/security";
3
+ import { $secure, currentTenantAtom, currentUserAtom } from "alepha/security";
4
4
  import { $action, okSchema } from "alepha/server";
5
5
  import { $entity, $repository, RepositoryProvider, db } from "alepha/orm";
6
6
  import { CryptoProvider } from "alepha/crypto";
@@ -41,63 +41,81 @@ var ParameterAudits = class {
41
41
  */
42
42
  const parameters = $entity({
43
43
  name: "parameters",
44
- schema: t.object({
45
- id: db.primaryKey(t.uuid()),
44
+ schema: z.object({
45
+ id: db.primaryKey(z.uuid()),
46
46
  createdAt: db.createdAt(),
47
47
  updatedAt: db.updatedAt(),
48
48
  /**
49
+ * Tenant scope. NULLABLE on purpose (backward compatible): single-tenant
50
+ * apps keep writing org-less (NULL) rows with the historic global
51
+ * semantics. In a MULTI-TENANT process (e.g. one pooled worker serving
52
+ * many orgs), the active tenant is stamped by the Repository
53
+ * (`stampOrganization`) and reads/writes auto-filter by it — so one org's
54
+ * `app.settings`/`portal.site`/… can never be read or overwritten by
55
+ * another. The provider's in-memory value caches are keyed by org too.
56
+ */
57
+ organizationId: db.organization(),
58
+ /**
49
59
  * Configuration name using dot notation for tree hierarchy.
50
60
  * Examples: "app.features", "app.pricing.tiers", "system.limits"
51
61
  */
52
- name: t.text(),
62
+ name: z.text(),
53
63
  /**
54
64
  * The configuration content as JSON.
55
65
  */
56
- content: t.json(),
66
+ content: z.json(),
57
67
  /**
58
68
  * Schema version hash for detecting schema changes.
59
69
  * Used for auto-migration when schema evolves.
60
70
  */
61
- schemaHash: t.text(),
71
+ schemaHash: z.text(),
62
72
  /**
63
73
  * When this version should become active.
64
74
  * Default is immediate (now).
65
75
  */
66
- activationDate: t.datetime(),
76
+ activationDate: z.datetime(),
67
77
  /**
68
78
  * Version number for this configuration.
69
79
  * Auto-incremented per config name.
70
80
  */
71
- version: t.integer(),
81
+ version: z.integer(),
72
82
  /**
73
83
  * Optional description of changes in this version.
74
84
  */
75
- changeDescription: t.optional(t.text()),
85
+ changeDescription: z.text().optional(),
76
86
  /**
77
87
  * Optional tags for filtering/categorization.
78
88
  */
79
- tags: t.optional(t.array(t.text())),
89
+ tags: z.array(z.text()).optional(),
80
90
  /**
81
91
  * Creator user ID (if available).
82
92
  */
83
- creatorId: t.optional(t.uuid()),
93
+ creatorId: z.uuid().optional(),
84
94
  /**
85
95
  * Creator display name for audit trail.
86
96
  */
87
- creatorName: t.optional(t.text()),
97
+ creatorName: z.text().optional(),
88
98
  /**
89
99
  * Previous content before this change (for rollback reference).
90
100
  */
91
- previousContent: t.optional(t.json()),
101
+ previousContent: z.json().optional(),
92
102
  /**
93
103
  * Migration log if schema changed.
94
104
  */
95
- migrationLog: t.optional(t.text())
105
+ migrationLog: z.text().optional()
96
106
  }),
97
107
  indexes: [
98
- { columns: ["name", "activationDate"] },
108
+ { columns: [
109
+ "organizationId",
110
+ "name",
111
+ "activationDate"
112
+ ] },
99
113
  {
100
- columns: ["name", "version"],
114
+ columns: [
115
+ "organizationId",
116
+ "name",
117
+ "version"
118
+ ],
101
119
  unique: true
102
120
  },
103
121
  { columns: ["activationDate"] }
@@ -111,22 +129,22 @@ const parameters = $entity({
111
129
  * Creator fields are omitted; the controller captures the authenticated user
112
130
  * server-side.
113
131
  */
114
- const activateParameterBodySchema = t.pick(parameters.schema, ["version"]);
132
+ const activateParameterBodySchema = parameters.schema.pick({ version: true });
115
133
  //#endregion
116
134
  //#region ../../src/api/parameters/schemas/createParameterVersionBodySchema.ts
117
135
  /**
118
136
  * Create parameter version body schema.
119
- * Uses t.pick to derive from entity, with required fields made non-optional.
137
+ * Uses z.pick to derive from entity, with required fields made non-optional.
120
138
  *
121
139
  * Creator fields are intentionally omitted: the controller captures the
122
140
  * authenticated user server-side, so they cannot be spoofed by the client.
123
141
  */
124
- const createParameterVersionBodySchema = t.extend(t.pick(parameters.schema, [
125
- "content",
126
- "schemaHash",
127
- "changeDescription",
128
- "tags"
129
- ]), { activationDate: t.optional(t.datetime({ description: "When to activate (default: now)" })) });
142
+ const createParameterVersionBodySchema = parameters.schema.pick({
143
+ content: true,
144
+ schemaHash: true,
145
+ changeDescription: true,
146
+ tags: true
147
+ }).extend({ activationDate: z.datetime().describe("When to activate (default: now)").optional() });
130
148
  //#endregion
131
149
  //#region ../../src/api/parameters/schemas/parameterCreatorSummarySchema.ts
132
150
  /**
@@ -141,22 +159,22 @@ const createParameterVersionBodySchema = t.extend(t.pick(parameters.schema, [
141
159
  * realm — comes back with `creator` undefined. Callers fall back to the raw
142
160
  * `creatorId`.
143
161
  */
144
- const parameterCreatorSummarySchema = t.object({
145
- id: t.uuid(),
146
- email: t.optional(t.string({ format: "email" })),
147
- username: t.optional(t.shortText({
162
+ const parameterCreatorSummarySchema = z.object({
163
+ id: z.uuid(),
164
+ email: z.string().meta({ format: "email" }).optional(),
165
+ username: z.shortText({
148
166
  minLength: 3,
149
167
  maxLength: 30
150
- })),
151
- firstName: t.optional(t.string()),
152
- lastName: t.optional(t.string())
168
+ }).optional(),
169
+ firstName: z.string().optional(),
170
+ lastName: z.string().optional()
153
171
  });
154
172
  //#endregion
155
173
  //#region ../../src/api/parameters/schemas/parameterStatusSchema.ts
156
174
  /**
157
175
  * Parameter status enum schema.
158
176
  */
159
- const parameterStatusSchema = t.enum([
177
+ const parameterStatusSchema = z.enum([
160
178
  "expired",
161
179
  "current",
162
180
  "next",
@@ -172,9 +190,9 @@ const parameterStatusSchema = t.enum([
172
190
  * `creator` is embedded on read via a best-effort left join on `creatorId`
173
191
  * (see `parameterCreatorSummarySchema`); it is not a stored column.
174
192
  */
175
- const parameterResponseSchema = t.extend(parameters.schema, {
193
+ const parameterResponseSchema = parameters.schema.extend({
176
194
  status: parameterStatusSchema,
177
- creator: t.optional(parameterCreatorSummarySchema)
195
+ creator: parameterCreatorSummarySchema.optional()
178
196
  });
179
197
  //#endregion
180
198
  //#region ../../src/api/parameters/schemas/parameterCurrentResponseSchema.ts
@@ -182,56 +200,59 @@ const parameterResponseSchema = t.extend(parameters.schema, {
182
200
  * Current parameter response schema.
183
201
  * Includes current version, next scheduled version, and defaults.
184
202
  */
185
- const parameterCurrentResponseSchema = t.object({
186
- current: t.optional(parameterResponseSchema),
187
- next: t.optional(parameterResponseSchema),
188
- defaultValue: t.optional(t.json()),
189
- currentValue: t.optional(t.json()),
190
- schema: t.optional(t.json())
203
+ const parameterCurrentResponseSchema = z.object({
204
+ current: parameterResponseSchema.optional(),
205
+ next: parameterResponseSchema.optional(),
206
+ defaultValue: z.json().optional(),
207
+ currentValue: z.json().optional(),
208
+ schema: z.json().optional()
191
209
  });
192
210
  //#endregion
193
211
  //#region ../../src/api/parameters/schemas/parameterHistoryResponseSchema.ts
194
212
  /**
195
213
  * Parameter history response schema.
196
214
  */
197
- const parameterHistoryResponseSchema = t.object({ versions: t.array(parameterResponseSchema) });
215
+ const parameterHistoryResponseSchema = z.object({ versions: z.array(parameterResponseSchema) });
198
216
  //#endregion
199
217
  //#region ../../src/api/parameters/schemas/parameterNameParamSchema.ts
200
218
  /**
201
219
  * Parameter name param schema.
202
- * Uses t.pick from entity for consistency.
220
+ * Uses z.pick from entity for consistency.
203
221
  */
204
- const parameterNameParamSchema = t.pick(parameters.schema, ["name"]);
222
+ const parameterNameParamSchema = parameters.schema.pick({ name: true });
205
223
  //#endregion
206
224
  //#region ../../src/api/parameters/schemas/parameterNamesResponseSchema.ts
207
225
  /**
208
226
  * Parameter names list response schema.
209
227
  */
210
- const parameterNamesResponseSchema = t.object({ names: t.array(t.text()) });
228
+ const parameterNamesResponseSchema = z.object({ names: z.array(z.text()) });
211
229
  //#endregion
212
230
  //#region ../../src/api/parameters/schemas/parameterTreeNodeSchema.ts
213
231
  /**
214
232
  * Tree node schema for parameter tree navigation.
215
233
  */
216
- const parameterTreeNodeSchema = t.object({
217
- name: t.text(),
218
- path: t.text(),
219
- isLeaf: t.boolean(),
220
- children: t.array(t.any())
234
+ const parameterTreeNodeSchema = z.object({
235
+ name: z.text(),
236
+ path: z.text(),
237
+ isLeaf: z.boolean(),
238
+ children: z.array(z.any())
221
239
  });
222
240
  //#endregion
223
241
  //#region ../../src/api/parameters/schemas/parameterVersionParamSchema.ts
224
242
  /**
225
243
  * Parameter name and version param schema.
226
- * Uses t.pick from entity for consistency.
244
+ * Uses z.pick from entity for consistency.
227
245
  */
228
- const parameterVersionParamSchema = t.pick(parameters.schema, ["name", "version"]);
246
+ const parameterVersionParamSchema = parameters.schema.pick({
247
+ name: true,
248
+ version: true
249
+ });
229
250
  //#endregion
230
251
  //#region ../../src/api/parameters/schemas/parameterVersionResponseSchema.ts
231
252
  /**
232
253
  * Parameter version response schema.
233
254
  */
234
- const parameterVersionResponseSchema = t.object({ parameter: t.optional(parameterResponseSchema) });
255
+ const parameterVersionResponseSchema = z.object({ parameter: parameterResponseSchema.optional() });
235
256
  //#endregion
236
257
  //#region ../../src/api/parameters/schemas/rollbackParameterBodySchema.ts
237
258
  /**
@@ -240,7 +261,7 @@ const parameterVersionResponseSchema = t.object({ parameter: t.optional(paramete
240
261
  * Creator fields are omitted; the controller captures the authenticated user
241
262
  * server-side.
242
263
  */
243
- const rollbackParameterBodySchema = t.extend(t.pick(parameters.schema, ["changeDescription"]), { targetVersion: t.integer({ description: "Version number to rollback to" }) });
264
+ const rollbackParameterBodySchema = parameters.schema.pick({ changeDescription: true }).extend({ targetVersion: z.integer().describe("Version number to rollback to") });
244
265
  //#endregion
245
266
  //#region ../../src/api/parameters/services/ParameterProvider.ts
246
267
  /**
@@ -272,7 +293,32 @@ var ParameterProvider = class {
272
293
  }
273
294
  _instanceId;
274
295
  /**
275
- * In-memory cache of registered parameter primitives.
296
+ * Resolve the active tenant for cache keying MIRRORS the Repository's
297
+ * `resolveOrganizationValue` (tenant atom → user org) so the in-memory
298
+ * value caches partition exactly the way the DB rows do. Returns a sentinel
299
+ * for the org-less (single-tenant / no-request) case.
300
+ *
301
+ * Why this matters: the DB table is now org-scoped, but these process-global
302
+ * Maps are keyed by parameter NAME — without folding the org into the key, a
303
+ * pooled multi-tenant worker would hand org A's cached `club.settings` to a
304
+ * request for org B. (Cross-instance topic sync + the `ready` preload run
305
+ * with no request atom → the sentinel key; they refresh only org-less rows,
306
+ * leaving per-org caches to lazy-load + the immediate local update on `set`.
307
+ * That is bounded staleness, never a cross-tenant read.)
308
+ */
309
+ orgKey() {
310
+ const tenant = this.alepha.store.get(currentTenantAtom);
311
+ if (tenant?.id) return tenant.id;
312
+ return this.alepha.store.get(currentUserAtom)?.organization ?? "~global";
313
+ }
314
+ /** Per-org cache key for the value caches (`${org}:${name}`). */
315
+ cacheKey(name) {
316
+ return `${this.orgKey()}:${name}`;
317
+ }
318
+ /**
319
+ * In-memory cache of registered parameter primitives. Keyed by NAME only —
320
+ * the `$parameter` definition (schema + default) is identical for every
321
+ * tenant; only the stored VALUE is per-org (see the value caches below).
276
322
  */
277
323
  primitives = /* @__PURE__ */ new Map();
278
324
  /**
@@ -288,6 +334,28 @@ var ParameterProvider = class {
288
334
  */
289
335
  loaded = /* @__PURE__ */ new Set();
290
336
  /**
337
+ * Epoch millis of the last successful load (or local set) per cache key.
338
+ * Drives the serverless revalidation TTL (see `revalidateAfterMs`).
339
+ */
340
+ loadedAt = /* @__PURE__ */ new Map();
341
+ /**
342
+ * How long a cached value may serve before `get()` re-reads the DB.
343
+ *
344
+ * The in-memory caches are PER ISOLATE. On serverless runtimes
345
+ * (Cloudflare Workers) many isolates serve the same app and the
346
+ * cross-instance `syncTopic` rides the queue provider — in-memory by
347
+ * default, so a `set()` handled by one isolate never reaches the others:
348
+ * without a TTL they serve the stale value until they are recycled.
349
+ *
350
+ * Defaults: 30 s on serverless, 0 (= never revalidate, the historical
351
+ * behaviour) elsewhere. Override with the `PARAMETERS_CACHE_TTL_MS` env.
352
+ */
353
+ get revalidateAfterMs() {
354
+ const raw = this.alepha.env.PARAMETERS_CACHE_TTL_MS;
355
+ if (raw !== void 0 && raw !== "") return Number(raw);
356
+ return this.alepha.isServerless() ? 3e4 : 0;
357
+ }
358
+ /**
291
359
  * Shared promises for deduplicating concurrent load() calls.
292
360
  */
293
361
  loadPromises = /* @__PURE__ */ new Map();
@@ -324,9 +392,9 @@ var ParameterProvider = class {
324
392
  */
325
393
  syncTopic = $topic({
326
394
  name: "parameter:sync",
327
- schema: { payload: t.object({
328
- name: t.text(),
329
- instanceId: t.text()
395
+ schema: { payload: z.object({
396
+ name: z.text(),
397
+ instanceId: z.text()
330
398
  }) },
331
399
  handler: async ({ payload }) => {
332
400
  await this.handleChangeNotification(payload);
@@ -346,21 +414,22 @@ var ParameterProvider = class {
346
414
  * Checks if a cached next version has become current.
347
415
  */
348
416
  async get(name) {
349
- if (!this.loaded.has(name)) {
350
- if (!this.loadPromises.has(name)) this.loadPromises.set(name, this.doLoad(name));
351
- await this.loadPromises.get(name);
417
+ const ck = this.cacheKey(name);
418
+ if (!this.loaded.has(ck) || this.isStale(ck)) {
419
+ if (!this.loadPromises.has(ck)) this.loadPromises.set(ck, this.doLoad(name));
420
+ await this.loadPromises.get(ck);
352
421
  }
353
- const cachedNext = this.cachedNext.get(name);
422
+ const cachedNext = this.cachedNext.get(ck);
354
423
  if (cachedNext) {
355
424
  const now = this.dateTimeProvider.now().toDate();
356
425
  if (new Date(cachedNext.activationDate) <= now) {
357
- this.cachedCurrent.set(name, cachedNext.content);
358
- this.cachedNext.delete(name);
426
+ this.cachedCurrent.set(ck, cachedNext.content);
427
+ this.cachedNext.delete(ck);
359
428
  this.reloadNextInBackground(name);
360
429
  }
361
430
  }
362
431
  const param = this.primitives.get(name);
363
- return this.cachedCurrent.has(name) ? this.cachedCurrent.get(name) : param?.options.default;
432
+ return this.cachedCurrent.has(ck) ? this.cachedCurrent.get(ck) : param?.options.default;
364
433
  }
365
434
  /**
366
435
  * Set a new parameter value.
@@ -374,25 +443,35 @@ var ParameterProvider = class {
374
443
  creatorId: options.creatorId,
375
444
  creatorName: options.creatorName
376
445
  });
446
+ const ck = this.cacheKey(name);
377
447
  const now = this.dateTimeProvider.now().toDate();
378
448
  if (!options.activationDate || options.activationDate <= now) {
379
- const prev = this.cachedCurrent.get(name);
380
- this.cachedCurrent.set(name, value);
449
+ const prev = this.cachedCurrent.get(ck);
450
+ this.cachedCurrent.set(ck, value);
381
451
  if (JSON.stringify(prev) !== JSON.stringify(value)) this.notifySubscribers(name);
382
- } else this.cachedNext.set(name, {
452
+ } else this.cachedNext.set(ck, {
383
453
  content: value,
384
454
  activationDate: options.activationDate.toISOString()
385
455
  });
456
+ this.loadedAt.set(ck, this.dateTimeProvider.nowMillis());
457
+ }
458
+ /** Whether the cached value outlived the revalidation TTL. */
459
+ isStale(ck) {
460
+ const ttl = this.revalidateAfterMs;
461
+ if (ttl <= 0) return false;
462
+ const at = this.loadedAt.get(ck);
463
+ return at === void 0 ? true : this.dateTimeProvider.nowMillis() - at > ttl;
386
464
  }
387
465
  /**
388
466
  * Subscribe to parameter changes.
389
467
  * Returns an unsubscribe function.
390
468
  */
391
469
  sub(name, fn) {
392
- if (!this.subscribers.has(name)) this.subscribers.set(name, []);
393
- this.subscribers.get(name).push(fn);
470
+ const ck = this.cacheKey(name);
471
+ if (!this.subscribers.has(ck)) this.subscribers.set(ck, []);
472
+ this.subscribers.get(ck).push(fn);
394
473
  return () => {
395
- const subs = this.subscribers.get(name);
474
+ const subs = this.subscribers.get(ck);
396
475
  if (subs) {
397
476
  const idx = subs.indexOf(fn);
398
477
  if (idx >= 0) subs.splice(idx, 1);
@@ -404,22 +483,24 @@ var ParameterProvider = class {
404
483
  * Deduplicates concurrent calls via shared promise.
405
484
  */
406
485
  async load(name) {
407
- this.loadPromises.set(name, this.doLoad(name));
408
- await this.loadPromises.get(name);
486
+ const ck = this.cacheKey(name);
487
+ this.loadPromises.set(ck, this.doLoad(name));
488
+ await this.loadPromises.get(ck);
409
489
  }
410
490
  /**
411
491
  * Get the cached current content, falling back to default.
412
492
  * Synchronous access for admin API.
413
493
  */
414
494
  getCachedCurrentContent(name) {
415
- if (this.cachedCurrent.has(name)) return this.cachedCurrent.get(name);
495
+ const ck = this.cacheKey(name);
496
+ if (this.cachedCurrent.has(ck)) return this.cachedCurrent.get(ck);
416
497
  return this.primitives.get(name)?.options.default;
417
498
  }
418
499
  /**
419
500
  * Whether the parameter is using its default value (no DB value loaded).
420
501
  */
421
502
  isUsingDefault(name) {
422
- return !this.cachedCurrent.has(name);
503
+ return !this.cachedCurrent.has(this.cacheKey(name));
423
504
  }
424
505
  /**
425
506
  * Load the current and next parameter values from database.
@@ -583,12 +664,7 @@ var ParameterProvider = class {
583
664
  */
584
665
  async delete(name) {
585
666
  await this.repo.deleteMany({ name: { eq: name } });
586
- this.cachedCurrent.delete(name);
587
- this.cachedNext.delete(name);
588
- this.loaded.delete(name);
589
- this.loadPromises.delete(name);
590
- this.loadGeneration.delete(name);
591
- this.migrationChecked.delete(name);
667
+ this.evictCaches(name);
592
668
  this.log.info("Parameter deleted", { name });
593
669
  }
594
670
  /**
@@ -597,17 +673,20 @@ var ParameterProvider = class {
597
673
  async deleteMany(names) {
598
674
  if (names.length === 0) return [];
599
675
  await this.repo.deleteMany({ name: { inArray: names } });
600
- for (const name of names) {
601
- this.cachedCurrent.delete(name);
602
- this.cachedNext.delete(name);
603
- this.loaded.delete(name);
604
- this.loadPromises.delete(name);
605
- this.loadGeneration.delete(name);
606
- this.migrationChecked.delete(name);
607
- }
676
+ for (const name of names) this.evictCaches(name);
608
677
  this.log.info("Parameters deleted", { count: names.length });
609
678
  return names;
610
679
  }
680
+ /** Drop every per-org value cache entry for `name` in the active org. */
681
+ evictCaches(name) {
682
+ const ck = this.cacheKey(name);
683
+ this.cachedCurrent.delete(ck);
684
+ this.cachedNext.delete(ck);
685
+ this.loaded.delete(ck);
686
+ this.loadPromises.delete(ck);
687
+ this.loadGeneration.delete(ck);
688
+ this.migrationChecked.delete(ck);
689
+ }
611
690
  /**
612
691
  * Get a specific version of a parameter.
613
692
  */
@@ -662,7 +741,7 @@ var ParameterProvider = class {
662
741
  }
663
742
  const defaultValue = param?.options.default ?? null;
664
743
  const currentValue = this.getCachedCurrentContent(name) ?? null;
665
- const schema = param?.schema ?? null;
744
+ const schema = param?.schema ? z.toJSONSchema(param.schema) : null;
666
745
  return {
667
746
  current: current ? {
668
747
  ...current,
@@ -697,7 +776,7 @@ var ParameterProvider = class {
697
776
  async getParameterTree() {
698
777
  const dbNames = await this.getParameterNames();
699
778
  const registeredNames = Array.from(this.primitives.keys());
700
- const allNames = [...new Set([...dbNames, ...registeredNames])].sort();
779
+ const allNames = [.../* @__PURE__ */ new Set([...dbNames, ...registeredNames])].sort();
701
780
  return this.buildTree(allNames);
702
781
  }
703
782
  /**
@@ -705,13 +784,14 @@ var ParameterProvider = class {
705
784
  * Fetches current and next from database, updates cache.
706
785
  */
707
786
  async doLoad(name) {
708
- const gen = (this.loadGeneration.get(name) ?? 0) + 1;
709
- this.loadGeneration.set(name, gen);
787
+ const ck = this.cacheKey(name);
788
+ const gen = (this.loadGeneration.get(ck) ?? 0) + 1;
789
+ this.loadGeneration.set(ck, gen);
710
790
  const { current, next } = await this.loadCurrentAndNext(name);
711
791
  const schemaHash = this.schemaHashes.get(name) ?? "";
712
- if (this.loadGeneration.get(name) !== gen) return;
713
- if (current && !this.migrationChecked.has(name)) {
714
- this.migrationChecked.add(name);
792
+ if (this.loadGeneration.get(ck) !== gen) return;
793
+ if (current && !this.migrationChecked.has(ck)) {
794
+ this.migrationChecked.add(ck);
715
795
  const migration = this.migrateValue(name, current.content, current.schemaHash);
716
796
  if (migration) {
717
797
  this.log.info("Auto-migrating parameter", {
@@ -720,31 +800,33 @@ var ParameterProvider = class {
720
800
  });
721
801
  await this.save(name, migration.value, schemaHash, { changeDescription: migration.description });
722
802
  const updated = await this.loadCurrentAndNext(name);
723
- if (updated.current) this.cachedCurrent.set(name, updated.current.content);
724
- else this.cachedCurrent.delete(name);
725
- if (updated.next) this.cachedNext.set(name, {
803
+ if (updated.current) this.cachedCurrent.set(ck, updated.current.content);
804
+ else this.cachedCurrent.delete(ck);
805
+ if (updated.next) this.cachedNext.set(ck, {
726
806
  content: updated.next.content,
727
807
  activationDate: updated.next.activationDate
728
808
  });
729
- else this.cachedNext.delete(name);
730
- this.loaded.add(name);
731
- this.loadPromises.delete(name);
809
+ else this.cachedNext.delete(ck);
810
+ this.loaded.add(ck);
811
+ this.loadedAt.set(ck, this.dateTimeProvider.nowMillis());
812
+ this.loadPromises.delete(ck);
732
813
  this.notifySubscribers(name);
733
814
  return;
734
815
  }
735
816
  }
736
- const prev = this.cachedCurrent.get(name);
737
- const hadPrev = this.cachedCurrent.has(name);
738
- if (current) this.cachedCurrent.set(name, current.content);
739
- else this.cachedCurrent.delete(name);
740
- if (next) this.cachedNext.set(name, {
817
+ const prev = this.cachedCurrent.get(ck);
818
+ const hadPrev = this.cachedCurrent.has(ck);
819
+ if (current) this.cachedCurrent.set(ck, current.content);
820
+ else this.cachedCurrent.delete(ck);
821
+ if (next) this.cachedNext.set(ck, {
741
822
  content: next.content,
742
823
  activationDate: next.activationDate
743
824
  });
744
- else this.cachedNext.delete(name);
745
- this.loaded.add(name);
746
- this.loadPromises.delete(name);
747
- if (hadPrev && JSON.stringify(prev) !== JSON.stringify(this.cachedCurrent.get(name))) this.notifySubscribers(name);
825
+ else this.cachedNext.delete(ck);
826
+ this.loaded.add(ck);
827
+ this.loadedAt.set(ck, this.dateTimeProvider.nowMillis());
828
+ this.loadPromises.delete(ck);
829
+ if (hadPrev && JSON.stringify(prev) !== JSON.stringify(this.cachedCurrent.get(ck))) this.notifySubscribers(name);
748
830
  }
749
831
  /**
750
832
  * Run migration with a distributed lock (Node.js only).
@@ -837,12 +919,13 @@ var ParameterProvider = class {
837
919
  * Reload next version info in background (non-blocking).
838
920
  */
839
921
  reloadNextInBackground(name) {
922
+ const ck = this.cacheKey(name);
840
923
  this.loadCurrentAndNext(name).then(({ next }) => {
841
- if (next) this.cachedNext.set(name, {
924
+ if (next) this.cachedNext.set(ck, {
842
925
  content: next.content,
843
926
  activationDate: next.activationDate
844
927
  });
845
- else this.cachedNext.delete(name);
928
+ else this.cachedNext.delete(ck);
846
929
  }).catch((err) => {
847
930
  this.log.warn("Failed to reload next parameter version", {
848
931
  name,
@@ -854,10 +937,11 @@ var ParameterProvider = class {
854
937
  * Notify all subscribers of a value change.
855
938
  */
856
939
  notifySubscribers(name) {
857
- const subs = this.subscribers.get(name);
940
+ const ck = this.cacheKey(name);
941
+ const subs = this.subscribers.get(ck);
858
942
  if (!subs) return;
859
943
  const param = this.primitives.get(name);
860
- const value = this.cachedCurrent.has(name) ? this.cachedCurrent.get(name) : param?.options.default;
944
+ const value = this.cachedCurrent.has(ck) ? this.cachedCurrent.get(ck) : param?.options.default;
861
945
  for (const fn of subs) fn(value);
862
946
  }
863
947
  /**
@@ -965,7 +1049,7 @@ var AdminParameterController = class {
965
1049
  description: "Get tree structure of all parameter names for navigation.",
966
1050
  path: "/parameters/tree",
967
1051
  method: "GET",
968
- schema: { response: t.array(parameterTreeNodeSchema) },
1052
+ schema: { response: z.array(parameterTreeNodeSchema) },
969
1053
  handler: async () => {
970
1054
  return this.provider.getParameterTree();
971
1055
  }
@@ -996,12 +1080,9 @@ var AdminParameterController = class {
996
1080
  method: "GET",
997
1081
  schema: {
998
1082
  params: parameterNameParamSchema,
999
- query: t.object({
1000
- limit: t.optional(t.integer({
1001
- minimum: 1,
1002
- maximum: 100
1003
- })),
1004
- offset: t.optional(t.integer({ minimum: 0 }))
1083
+ query: z.object({
1084
+ limit: z.integer().min(1).max(100).optional(),
1085
+ offset: z.integer().min(0).optional()
1005
1086
  }),
1006
1087
  response: parameterHistoryResponseSchema
1007
1088
  },
@@ -1177,11 +1258,8 @@ var AdminParameterController = class {
1177
1258
  path: "/parameters/delete",
1178
1259
  method: "POST",
1179
1260
  schema: {
1180
- body: t.object({ names: t.array(t.string({ minLength: 1 }), {
1181
- minItems: 1,
1182
- maxItems: 1e3
1183
- }) }),
1184
- response: t.object({ deleted: t.array(t.string()) })
1261
+ body: z.object({ names: z.array(z.string().min(1)).min(1).max(1e3) }),
1262
+ response: z.object({ deleted: z.array(z.string()) })
1185
1263
  },
1186
1264
  handler: async ({ body }) => {
1187
1265
  const deleted = await this.provider.deleteMany(body.names);