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
1
  import { describe, expect, it } from "vitest";
2
2
  import { Alepha } from "../Alepha.ts";
3
- import { TypeProvider, t } from "../providers/TypeProvider.ts";
3
+ import { TypeProvider, z } from "../providers/TypeProvider.ts";
4
4
 
5
5
  describe("TypeProvider", () => {
6
6
  describe("Primitive Types", () => {
@@ -8,7 +8,7 @@ describe("TypeProvider", () => {
8
8
  it("should decode valid strings", async () => {
9
9
  const alepha = Alepha.create();
10
10
  await alepha.start();
11
- const schema = t.string();
11
+ const schema = z.string();
12
12
 
13
13
  expect(alepha.codec.decode(schema, "hello")).toBe("hello");
14
14
  expect(alepha.codec.decode(schema, "")).toBe("");
@@ -18,19 +18,19 @@ describe("TypeProvider", () => {
18
18
  it("should encode strings", async () => {
19
19
  const alepha = Alepha.create();
20
20
  await alepha.start();
21
- const schema = t.string();
21
+ const schema = z.string();
22
22
 
23
23
  expect(alepha.codec.encode(schema, "test")).toBe("test");
24
24
  });
25
25
 
26
- it("should handle type coercion", async () => {
26
+ it("should reject non-strings (no coercion)", async () => {
27
27
  const alepha = Alepha.create();
28
28
  await alepha.start();
29
- const schema = t.string();
29
+ const schema = z.string();
30
30
 
31
- // TypeBox's Compile with codecs may coerce some types
32
- expect(alepha.codec.validate(schema, 123)).toBe("123");
33
- expect(alepha.codec.validate(schema, true)).toBe("true");
31
+ // Strict zod: no value coercion non-strings are rejected.
32
+ expect(() => alepha.codec.validate(schema, 123)).toThrow();
33
+ expect(() => alepha.codec.validate(schema, true)).toThrow();
34
34
  });
35
35
  });
36
36
 
@@ -38,7 +38,7 @@ describe("TypeProvider", () => {
38
38
  it("should decode valid numbers", async () => {
39
39
  const alepha = Alepha.create();
40
40
  await alepha.start();
41
- const schema = t.number();
41
+ const schema = z.number();
42
42
 
43
43
  expect(alepha.codec.decode(schema, 123)).toBe(123);
44
44
  expect(alepha.codec.decode(schema, 0)).toBe(0);
@@ -49,26 +49,26 @@ describe("TypeProvider", () => {
49
49
  it("should encode numbers", async () => {
50
50
  const alepha = Alepha.create();
51
51
  await alepha.start();
52
- const schema = t.number();
52
+ const schema = z.number();
53
53
 
54
54
  expect(alepha.codec.encode(schema, 42)).toBe(42);
55
55
  });
56
56
 
57
- it("should handle type coercion", async () => {
57
+ it("should reject non-numbers (no coercion)", async () => {
58
58
  const alepha = Alepha.create();
59
59
  await alepha.start();
60
- const schema = t.number();
60
+ const schema = z.number();
61
61
 
62
- // TypeBox's Compile with codecs may coerce some types
63
- expect(alepha.codec.validate(schema, "123")).toBe(123);
64
- expect(alepha.codec.validate(schema, true)).toBe(1);
65
- expect(alepha.codec.validate(schema, false)).toBe(0);
62
+ // Strict zod: no value coercion strings/booleans are rejected.
63
+ expect(() => alepha.codec.validate(schema, "123")).toThrow();
64
+ expect(() => alepha.codec.validate(schema, true)).toThrow();
65
+ expect(() => alepha.codec.validate(schema, false)).toThrow();
66
66
  });
67
67
 
68
68
  it("should validate constraints", async () => {
69
69
  const alepha = Alepha.create();
70
70
  await alepha.start();
71
- const schema = t.number({ minimum: 0, maximum: 100 });
71
+ const schema = z.number().min(0).max(100);
72
72
 
73
73
  expect(alepha.codec.validate(schema, 0)).toBe(0);
74
74
  expect(alepha.codec.validate(schema, 50)).toBe(50);
@@ -83,7 +83,7 @@ describe("TypeProvider", () => {
83
83
  it("should decode valid booleans", async () => {
84
84
  const alepha = Alepha.create();
85
85
  await alepha.start();
86
- const schema = t.boolean();
86
+ const schema = z.boolean();
87
87
 
88
88
  expect(alepha.codec.decode(schema, true)).toBe(true);
89
89
  expect(alepha.codec.decode(schema, false)).toBe(false);
@@ -92,22 +92,22 @@ describe("TypeProvider", () => {
92
92
  it("should encode booleans", async () => {
93
93
  const alepha = Alepha.create();
94
94
  await alepha.start();
95
- const schema = t.boolean();
95
+ const schema = z.boolean();
96
96
 
97
97
  expect(alepha.codec.encode(schema, true)).toBe(true);
98
98
  expect(alepha.codec.encode(schema, false)).toBe(false);
99
99
  });
100
100
 
101
- it("should handle type coercion", async () => {
101
+ it("should reject non-booleans (no coercion)", async () => {
102
102
  const alepha = Alepha.create();
103
103
  await alepha.start();
104
- const schema = t.boolean();
104
+ const schema = z.boolean();
105
105
 
106
- // TypeBox's Compile with codecs may coerce some types
107
- expect(alepha.codec.validate(schema, "true")).toBe(true);
108
- expect(alepha.codec.validate(schema, "false")).toBe(false);
109
- expect(alepha.codec.validate(schema, 1)).toBe(true);
110
- expect(alepha.codec.validate(schema, 0)).toBe(false);
106
+ // Strict zod: no value coercion strings/numbers are rejected.
107
+ expect(() => alepha.codec.validate(schema, "true")).toThrow();
108
+ expect(() => alepha.codec.validate(schema, "false")).toThrow();
109
+ expect(() => alepha.codec.validate(schema, 1)).toThrow();
110
+ expect(() => alepha.codec.validate(schema, 0)).toThrow();
111
111
  });
112
112
  });
113
113
 
@@ -115,7 +115,7 @@ describe("TypeProvider", () => {
115
115
  it("should decode null", async () => {
116
116
  const alepha = Alepha.create();
117
117
  await alepha.start();
118
- const schema = t.null();
118
+ const schema = z.null();
119
119
 
120
120
  expect(alepha.codec.decode(schema, null)).toBe(null);
121
121
  });
@@ -125,7 +125,7 @@ describe("TypeProvider", () => {
125
125
  it("should decode undefined", async () => {
126
126
  const alepha = Alepha.create();
127
127
  await alepha.start();
128
- const schema = t.undefined();
128
+ const schema = z.undefined();
129
129
 
130
130
  expect(alepha.codec.decode(schema, undefined)).toBe(undefined);
131
131
  });
@@ -135,7 +135,7 @@ describe("TypeProvider", () => {
135
135
  it("should decode void as undefined", async () => {
136
136
  const alepha = Alepha.create();
137
137
  await alepha.start();
138
- const schema = t.void();
138
+ const schema = z.void();
139
139
 
140
140
  expect(alepha.codec.decode(schema, undefined)).toBe(undefined);
141
141
  });
@@ -145,12 +145,13 @@ describe("TypeProvider", () => {
145
145
  it("should accept any value", async () => {
146
146
  const alepha = Alepha.create();
147
147
  await alepha.start();
148
- const schema = t.any();
148
+ const schema = z.any();
149
149
 
150
150
  expect(alepha.codec.decode(schema, "string")).toBe("string");
151
151
  expect(alepha.codec.decode(schema, 123)).toBe(123);
152
152
  expect(alepha.codec.decode(schema, true)).toBe(true);
153
- expect(alepha.codec.decode(schema, null)).toBe(undefined);
153
+ // Strict zod: no null->undefined normalization — null stays null.
154
+ expect(alepha.codec.decode(schema, null)).toBe(null);
154
155
  expect(alepha.codec.decode(schema, undefined)).toBe(undefined);
155
156
  expect(alepha.codec.decode(schema, { key: "value" })).toEqual({
156
157
  key: "value",
@@ -165,7 +166,7 @@ describe("TypeProvider", () => {
165
166
  it("should accept text within 255 chars", async () => {
166
167
  const alepha = Alepha.create();
167
168
  await alepha.start();
168
- const schema = t.text();
169
+ const schema = z.text();
169
170
 
170
171
  const validText = "a".repeat(255);
171
172
  expect(alepha.codec.decode(schema, validText)).toBe(validText);
@@ -174,7 +175,7 @@ describe("TypeProvider", () => {
174
175
  it("should trim whitespace by default", async () => {
175
176
  const alepha = Alepha.create();
176
177
  await alepha.start();
177
- const schema = t.text();
178
+ const schema = z.text();
178
179
 
179
180
  expect(alepha.codec.decode(schema, " hello ")).toBe("hello");
180
181
  });
@@ -182,7 +183,7 @@ describe("TypeProvider", () => {
182
183
  it("should reject text over 255 chars", async () => {
183
184
  const alepha = Alepha.create();
184
185
  await alepha.start();
185
- const schema = t.text();
186
+ const schema = z.text();
186
187
 
187
188
  const tooLong = "a".repeat(256);
188
189
  expect(() => alepha.codec.validate(schema, tooLong)).toThrow();
@@ -191,7 +192,7 @@ describe("TypeProvider", () => {
191
192
  it("should encode text", async () => {
192
193
  const alepha = Alepha.create();
193
194
  await alepha.start();
194
- const schema = t.text();
195
+ const schema = z.text();
195
196
 
196
197
  expect(alepha.codec.encode(schema, "test")).toBe("test");
197
198
  });
@@ -201,7 +202,7 @@ describe("TypeProvider", () => {
201
202
  it("should validate short text (64 chars max)", async () => {
202
203
  const alepha = Alepha.create();
203
204
  await alepha.start();
204
- const shortSchema = t.text({ size: "short" });
205
+ const shortSchema = z.text({ size: "short" });
205
206
 
206
207
  expect(alepha.codec.validate(shortSchema, "a".repeat(64))).toBe(
207
208
  "a".repeat(64),
@@ -214,7 +215,7 @@ describe("TypeProvider", () => {
214
215
  it("should validate regular text (255 chars max)", async () => {
215
216
  const alepha = Alepha.create();
216
217
  await alepha.start();
217
- const regularSchema = t.text({ size: "regular" });
218
+ const regularSchema = z.text({ size: "regular" });
218
219
 
219
220
  expect(alepha.codec.validate(regularSchema, "a".repeat(255))).toBe(
220
221
  "a".repeat(255),
@@ -227,7 +228,7 @@ describe("TypeProvider", () => {
227
228
  it("should validate long text (1024 chars max)", async () => {
228
229
  const alepha = Alepha.create();
229
230
  await alepha.start();
230
- const longSchema = t.text({ size: "long" });
231
+ const longSchema = z.text({ size: "long" });
231
232
 
232
233
  expect(alepha.codec.validate(longSchema, "a".repeat(1024))).toBe(
233
234
  "a".repeat(1024),
@@ -240,7 +241,7 @@ describe("TypeProvider", () => {
240
241
  it("should validate rich text (65535 chars max)", async () => {
241
242
  const alepha = Alepha.create();
242
243
  await alepha.start();
243
- const richSchema = t.text({ size: "rich" });
244
+ const richSchema = z.text({ size: "rich" });
244
245
 
245
246
  expect(alepha.codec.validate(richSchema, "a".repeat(1000))).toBe(
246
247
  "a".repeat(1000),
@@ -258,7 +259,7 @@ describe("TypeProvider", () => {
258
259
  it("should validate shortText (64 chars)", async () => {
259
260
  const alepha = Alepha.create();
260
261
  await alepha.start();
261
- const shortSchema = t.shortText();
262
+ const shortSchema = z.shortText();
262
263
 
263
264
  expect(alepha.codec.validate(shortSchema, "a".repeat(64))).toBe(
264
265
  "a".repeat(64),
@@ -271,7 +272,7 @@ describe("TypeProvider", () => {
271
272
  it("should validate longText (1024 chars)", async () => {
272
273
  const alepha = Alepha.create();
273
274
  await alepha.start();
274
- const longSchema = t.longText();
275
+ const longSchema = z.longText();
275
276
 
276
277
  expect(alepha.codec.validate(longSchema, "a".repeat(1024))).toBe(
277
278
  "a".repeat(1024),
@@ -284,7 +285,7 @@ describe("TypeProvider", () => {
284
285
  it("should validate richText (65535 chars)", async () => {
285
286
  const alepha = Alepha.create();
286
287
  await alepha.start();
287
- const richSchema = t.richText();
288
+ const richSchema = z.richText();
288
289
 
289
290
  expect(alepha.codec.decode(richSchema, "a".repeat(1000))).toBe(
290
291
  "a".repeat(1000),
@@ -296,7 +297,7 @@ describe("TypeProvider", () => {
296
297
  it("should trim when enabled", async () => {
297
298
  const alepha = Alepha.create();
298
299
  await alepha.start();
299
- const trimSchema = t.text({ trim: true });
300
+ const trimSchema = z.text({ trim: true });
300
301
 
301
302
  expect(alepha.codec.decode(trimSchema, " hello ")).toBe("hello");
302
303
  expect(alepha.codec.decode(trimSchema, "\n\ttest\n\t")).toBe("test");
@@ -305,7 +306,7 @@ describe("TypeProvider", () => {
305
306
  it("should not trim when disabled", async () => {
306
307
  const alepha = Alepha.create();
307
308
  await alepha.start();
308
- const noTrimSchema = t.text({ trim: false });
309
+ const noTrimSchema = z.text({ trim: false });
309
310
 
310
311
  expect(alepha.codec.decode(noTrimSchema, " hello ")).toBe(
311
312
  " hello ",
@@ -314,10 +315,10 @@ describe("TypeProvider", () => {
314
315
  });
315
316
 
316
317
  describe("text lowercase option", () => {
317
- it("should lowercase with t.text when enabled", async () => {
318
+ it("should lowercase with z.text when enabled", async () => {
318
319
  const alepha = Alepha.create();
319
320
  await alepha.start();
320
- const schema = t.text({ lowercase: true });
321
+ const schema = z.text({ lowercase: true });
321
322
 
322
323
  expect(alepha.codec.decode(schema, "HELLO")).toBe("hello");
323
324
  expect(alepha.codec.decode(schema, "Hello World")).toBe("hello world");
@@ -326,22 +327,24 @@ describe("TypeProvider", () => {
326
327
  );
327
328
  });
328
329
 
329
- it("should lowercase with t.enum when enabled", async () => {
330
+ it("should not lowercase enum values (no coercion)", async () => {
330
331
  const alepha = Alepha.create();
331
332
  await alepha.start();
332
- const schema = t.enum(["active", "inactive", "pending"], {
333
- lowercase: true,
334
- });
333
+ const schema = z
334
+ .enum(["active", "inactive", "pending"])
335
+ .meta({ lowercase: true });
335
336
 
336
- expect(alepha.codec.decode(schema, "ACTIVE")).toBe("active");
337
- expect(alepha.codec.decode(schema, "Active")).toBe("active");
338
- expect(alepha.codec.validate(schema, "INACTIVE")).toBe("inactive");
337
+ // Strict zod: enum membership is exact — uppercase input is rejected,
338
+ // not lowercased into a matching member.
339
+ expect(alepha.codec.decode(schema, "active")).toBe("active");
340
+ expect(() => alepha.codec.validate(schema, "ACTIVE")).toThrow();
341
+ expect(() => alepha.codec.validate(schema, "INACTIVE")).toThrow();
339
342
  });
340
343
 
341
- it("should combine trim and lowercase with t.text", async () => {
344
+ it("should combine trim and lowercase with z.text", async () => {
342
345
  const alepha = Alepha.create();
343
346
  await alepha.start();
344
- const schema = t.text({ trim: true, lowercase: true });
347
+ const schema = z.text({ trim: true, lowercase: true });
345
348
 
346
349
  expect(alepha.codec.decode(schema, " HELLO ")).toBe("hello");
347
350
  expect(alepha.codec.decode(schema, "\n\tTEST\n\t")).toBe("test");
@@ -350,7 +353,7 @@ describe("TypeProvider", () => {
350
353
  it("should not lowercase when not enabled", async () => {
351
354
  const alepha = Alepha.create();
352
355
  await alepha.start();
353
- const schema = t.text();
356
+ const schema = z.text();
354
357
 
355
358
  expect(alepha.codec.decode(schema, "HELLO")).toBe("HELLO");
356
359
  expect(alepha.codec.decode(schema, "MixedCase")).toBe("MixedCase");
@@ -361,7 +364,7 @@ describe("TypeProvider", () => {
361
364
  it("should accept values matching the pattern", async () => {
362
365
  const alepha = Alepha.create();
363
366
  await alepha.start();
364
- const schema = t.text({ pattern: "^[A-Z]{3}$" });
367
+ const schema = z.text({ pattern: "^[A-Z]{3}$" });
365
368
 
366
369
  expect(alepha.codec.decode(schema, "ABC")).toBe("ABC");
367
370
  expect(alepha.codec.decode(schema, "XYZ")).toBe("XYZ");
@@ -370,7 +373,7 @@ describe("TypeProvider", () => {
370
373
  it("should reject values not matching the pattern", async () => {
371
374
  const alepha = Alepha.create();
372
375
  await alepha.start();
373
- const schema = t.text({ pattern: "^[A-Z]{3}$" });
376
+ const schema = z.text({ pattern: "^[A-Z]{3}$" });
374
377
 
375
378
  expect(() => alepha.codec.validate(schema, "abc")).toThrow();
376
379
  expect(() => alepha.codec.validate(schema, "ABCD")).toThrow();
@@ -381,7 +384,7 @@ describe("TypeProvider", () => {
381
384
  it("should work with alphanumeric pattern", async () => {
382
385
  const alepha = Alepha.create();
383
386
  await alepha.start();
384
- const schema = t.text({ pattern: "^[a-zA-Z0-9]+$" });
387
+ const schema = z.text({ pattern: "^[a-zA-Z0-9]+$" });
385
388
 
386
389
  expect(alepha.codec.decode(schema, "Hello123")).toBe("Hello123");
387
390
  expect(alepha.codec.decode(schema, "test")).toBe("test");
@@ -394,7 +397,7 @@ describe("TypeProvider", () => {
394
397
  it("should work with slug pattern", async () => {
395
398
  const alepha = Alepha.create();
396
399
  await alepha.start();
397
- const schema = t.text({ pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$" });
400
+ const schema = z.text({ pattern: "^[a-z0-9]+(?:-[a-z0-9]+)*$" });
398
401
 
399
402
  expect(alepha.codec.decode(schema, "hello-world")).toBe("hello-world");
400
403
  expect(alepha.codec.decode(schema, "my-blog-post")).toBe(
@@ -410,7 +413,7 @@ describe("TypeProvider", () => {
410
413
  it("should combine pattern with maxLength", async () => {
411
414
  const alepha = Alepha.create();
412
415
  await alepha.start();
413
- const schema = t.text({ pattern: "^[A-Z]+$", maxLength: 5 });
416
+ const schema = z.text({ pattern: "^[A-Z]+$", maxLength: 5 });
414
417
 
415
418
  expect(alepha.codec.decode(schema, "HELLO")).toBe("HELLO");
416
419
  expect(alepha.codec.decode(schema, "AB")).toBe("AB");
@@ -422,7 +425,7 @@ describe("TypeProvider", () => {
422
425
  it("should trim before pattern validation", async () => {
423
426
  const alepha = Alepha.create();
424
427
  await alepha.start();
425
- const schema = t.text({ pattern: "^[A-Z]+$", trim: true });
428
+ const schema = z.text({ pattern: "^[A-Z]+$", trim: true });
426
429
 
427
430
  expect(alepha.codec.decode(schema, " HELLO ")).toBe("HELLO");
428
431
  });
@@ -434,7 +437,7 @@ describe("TypeProvider", () => {
434
437
  it("should decode valid 32-bit integers", async () => {
435
438
  const alepha = Alepha.create();
436
439
  await alepha.start();
437
- const schema = t.integer();
440
+ const schema = z.integer();
438
441
 
439
442
  expect(alepha.codec.decode(schema, 0)).toBe(0);
440
443
  expect(alepha.codec.decode(schema, 123456)).toBe(123456);
@@ -446,15 +449,16 @@ describe("TypeProvider", () => {
446
449
  it("should reject non-integers", async () => {
447
450
  const alepha = Alepha.create();
448
451
  await alepha.start();
449
- const schema = t.integer();
452
+ const schema = z.integer();
450
453
 
451
- expect(alepha.codec.decode(schema, 3.14)).toBe(3);
454
+ // Strict zod: no truncation — a float is rejected, not floored.
455
+ expect(() => alepha.codec.decode(schema, 3.14)).toThrow();
452
456
  });
453
457
 
454
458
  it("should reject values outside 32-bit range", async () => {
455
459
  const alepha = Alepha.create();
456
460
  await alepha.start();
457
- const schema = t.int32();
461
+ const schema = z.int32();
458
462
 
459
463
  expect(() => alepha.codec.validate(schema, 2147483648)).toThrow();
460
464
  expect(() => alepha.codec.validate(schema, -2147483649)).toThrow();
@@ -465,10 +469,11 @@ describe("TypeProvider", () => {
465
469
  it("should work as alias for int", async () => {
466
470
  const alepha = Alepha.create();
467
471
  await alepha.start();
468
- const schema = t.int32();
472
+ const schema = z.int32();
469
473
 
470
474
  expect(alepha.codec.decode(schema, 42)).toBe(42);
471
- expect(alepha.codec.decode(schema, 3.14)).toBe(3);
475
+ // Strict zod: no truncation — a float is rejected.
476
+ expect(() => alepha.codec.decode(schema, 3.14)).toThrow();
472
477
  });
473
478
  });
474
479
 
@@ -476,7 +481,7 @@ describe("TypeProvider", () => {
476
481
  it("should decode valid safe integers", async () => {
477
482
  const alepha = Alepha.create();
478
483
  await alepha.start();
479
- const schema = t.int64();
484
+ const schema = z.int64();
480
485
 
481
486
  expect(alepha.codec.decode(schema, 0)).toBe(0);
482
487
  expect(alepha.codec.decode(schema, 9007199254740991)).toBe(
@@ -490,7 +495,7 @@ describe("TypeProvider", () => {
490
495
  it("should reject non-integers", async () => {
491
496
  const alepha = Alepha.create();
492
497
  await alepha.start();
493
- const schema = t.int64();
498
+ const schema = z.int64();
494
499
 
495
500
  expect(() => alepha.codec.validate(schema, 3.14)).toThrow();
496
501
  });
@@ -498,7 +503,7 @@ describe("TypeProvider", () => {
498
503
  it("should reject values outside safe integer range", async () => {
499
504
  const alepha = Alepha.create();
500
505
  await alepha.start();
501
- const schema = t.int64();
506
+ const schema = z.int64();
502
507
 
503
508
  expect(() => alepha.codec.validate(schema, 9007199254740992)).toThrow();
504
509
  expect(() =>
@@ -508,14 +513,14 @@ describe("TypeProvider", () => {
508
513
  });
509
514
  });
510
515
 
511
- // Codec Types tests removed - t.bigint(), t.url(), t.binary() are now plain strings without transformation
516
+ // Codec Types tests removed - z.bigint(), z.url(), z.binary() are now plain strings without transformation
512
517
 
513
518
  describe("Format Types", () => {
514
519
  describe("uuid", () => {
515
520
  it("should accept valid UUIDs", async () => {
516
521
  const alepha = Alepha.create();
517
522
  await alepha.start();
518
- const schema = t.uuid();
523
+ const schema = z.uuid();
519
524
 
520
525
  const validUuid = "550e8400-e29b-41d4-a716-446655440000";
521
526
  expect(alepha.codec.decode(schema, validUuid)).toBe(validUuid);
@@ -524,7 +529,7 @@ describe("TypeProvider", () => {
524
529
  it("should encode UUIDs", async () => {
525
530
  const alepha = Alepha.create();
526
531
  await alepha.start();
527
- const schema = t.uuid();
532
+ const schema = z.uuid();
528
533
 
529
534
  const validUuid = "550e8400-e29b-41d4-a716-446655440000";
530
535
  expect(alepha.codec.encode(schema, validUuid)).toBe(validUuid);
@@ -533,7 +538,7 @@ describe("TypeProvider", () => {
533
538
  it("should reject invalid UUIDs", async () => {
534
539
  const alepha = Alepha.create();
535
540
  await alepha.start();
536
- const schema = t.uuid();
541
+ const schema = z.uuid();
537
542
 
538
543
  expect(() => alepha.codec.validate(schema, "not-a-uuid")).toThrow();
539
544
  expect(() =>
@@ -547,7 +552,7 @@ describe("TypeProvider", () => {
547
552
  it("should accept valid emails", async () => {
548
553
  const alepha = Alepha.create();
549
554
  await alepha.start();
550
- const schema = t.email();
555
+ const schema = z.email();
551
556
 
552
557
  expect(alepha.codec.decode(schema, "user@example.com")).toBe(
553
558
  "user@example.com",
@@ -557,43 +562,45 @@ describe("TypeProvider", () => {
557
562
  ).toBe("test.user+tag@subdomain.example.co.uk");
558
563
  });
559
564
 
560
- it("should trim emails", async () => {
565
+ it("should not trim emails (whitespace rejected)", async () => {
561
566
  const alepha = Alepha.create();
562
567
  await alepha.start();
563
- const schema = t.email();
568
+ const schema = z.email();
564
569
 
565
- expect(alepha.codec.decode(schema, " user@example.com ")).toBe(
566
- "user@example.com",
567
- );
570
+ // Strict zod: no auto-trim — surrounding whitespace makes it invalid.
571
+ expect(() =>
572
+ alepha.codec.validate(schema, " user@example.com "),
573
+ ).toThrow();
568
574
  });
569
575
 
570
- it("should lowercase emails", async () => {
576
+ it("should not lowercase emails", async () => {
571
577
  const alepha = Alepha.create();
572
578
  await alepha.start();
573
- const schema = t.email();
579
+ const schema = z.email();
574
580
 
581
+ // Strict zod: no auto-lowercase — case is preserved as-is.
575
582
  expect(alepha.codec.decode(schema, "User@Example.COM")).toBe(
576
- "user@example.com",
583
+ "User@Example.COM",
577
584
  );
578
585
  expect(alepha.codec.decode(schema, "JOHN.DOE@GMAIL.COM")).toBe(
579
- "john.doe@gmail.com",
586
+ "JOHN.DOE@GMAIL.COM",
580
587
  );
581
588
  });
582
589
 
583
- it("should trim and lowercase emails together", async () => {
590
+ it("should not trim or lowercase emails (whitespace rejected)", async () => {
584
591
  const alepha = Alepha.create();
585
592
  await alepha.start();
586
- const schema = t.email();
593
+ const schema = z.email();
587
594
 
588
- expect(alepha.codec.decode(schema, " User@Example.COM ")).toBe(
589
- "user@example.com",
590
- );
595
+ expect(() =>
596
+ alepha.codec.validate(schema, " User@Example.COM "),
597
+ ).toThrow();
591
598
  });
592
599
 
593
600
  it("should reject invalid emails", async () => {
594
601
  const alepha = Alepha.create();
595
602
  await alepha.start();
596
- const schema = t.email();
603
+ const schema = z.email();
597
604
 
598
605
  expect(() => alepha.codec.validate(schema, "not an email")).toThrow();
599
606
  expect(() => alepha.codec.validate(schema, "@example.com")).toThrow();
@@ -606,7 +613,7 @@ describe("TypeProvider", () => {
606
613
  it("should accept valid E.164 phone numbers", async () => {
607
614
  const alepha = Alepha.create();
608
615
  await alepha.start();
609
- const schema = t.e164();
616
+ const schema = z.e164();
610
617
 
611
618
  expect(alepha.codec.decode(schema, "+1234567890")).toBe("+1234567890");
612
619
  expect(alepha.codec.decode(schema, "+12025551234")).toBe(
@@ -620,7 +627,7 @@ describe("TypeProvider", () => {
620
627
  it("should reject invalid E.164 phone numbers", async () => {
621
628
  const alepha = Alepha.create();
622
629
  await alepha.start();
623
- const schema = t.e164();
630
+ const schema = z.e164();
624
631
 
625
632
  expect(() => alepha.codec.validate(schema, "1234567890")).toThrow(); // Missing +
626
633
  expect(() => alepha.codec.validate(schema, "+0123456789")).toThrow(); // Starts with 0
@@ -636,7 +643,7 @@ describe("TypeProvider", () => {
636
643
  it("should accept valid BCP 47 language tags", async () => {
637
644
  const alepha = Alepha.create();
638
645
  await alepha.start();
639
- const schema = t.bcp47();
646
+ const schema = z.bcp47();
640
647
 
641
648
  expect(alepha.codec.decode(schema, "en")).toBe("en");
642
649
  expect(alepha.codec.decode(schema, "en-US")).toBe("en-US");
@@ -648,7 +655,7 @@ describe("TypeProvider", () => {
648
655
  it("should reject invalid BCP 47 tags", async () => {
649
656
  const alepha = Alepha.create();
650
657
  await alepha.start();
651
- const schema = t.bcp47();
658
+ const schema = z.bcp47();
652
659
 
653
660
  expect(() => alepha.codec.validate(schema, "EN")).toThrow(); // Uppercase language
654
661
  expect(() => alepha.codec.validate(schema, "en-us")).toThrow(); // Lowercase region
@@ -662,7 +669,7 @@ describe("TypeProvider", () => {
662
669
  it("should accept valid constantCase strings", async () => {
663
670
  const alepha = Alepha.create();
664
671
  await alepha.start();
665
- const schema = t.constantCase();
672
+ const schema = z.constantCase();
666
673
 
667
674
  expect(alepha.codec.decode(schema, "HELLO")).toBe("HELLO");
668
675
  expect(alepha.codec.decode(schema, "HELLO_WORLD")).toBe("HELLO_WORLD");
@@ -673,7 +680,7 @@ describe("TypeProvider", () => {
673
680
  it("should reject invalid constantCase", async () => {
674
681
  const alepha = Alepha.create();
675
682
  await alepha.start();
676
- const schema = t.constantCase();
683
+ const schema = z.constantCase();
677
684
 
678
685
  expect(() => alepha.codec.validate(schema, "hello")).toThrow(); // Lowercase
679
686
  expect(() => alepha.codec.validate(schema, "Hello_World")).toThrow(); // Mixed case
@@ -688,10 +695,10 @@ describe("TypeProvider", () => {
688
695
  it("should decode valid objects", async () => {
689
696
  const alepha = Alepha.create();
690
697
  await alepha.start();
691
- const schema = t.object({
692
- name: t.text(),
693
- age: t.integer(),
694
- active: t.boolean(),
698
+ const schema = z.object({
699
+ name: z.text(),
700
+ age: z.integer(),
701
+ active: z.boolean(),
695
702
  });
696
703
 
697
704
  const valid = { name: "John", age: 30, active: true };
@@ -702,10 +709,10 @@ describe("TypeProvider", () => {
702
709
  it("should encode objects", async () => {
703
710
  const alepha = Alepha.create();
704
711
  await alepha.start();
705
- const schema = t.object({
706
- name: t.text(),
707
- age: t.integer(),
708
- active: t.boolean(),
712
+ const schema = z.object({
713
+ name: z.text(),
714
+ age: z.integer(),
715
+ active: z.boolean(),
709
716
  });
710
717
 
711
718
  const valid = { name: "John", age: 30, active: true };
@@ -716,10 +723,10 @@ describe("TypeProvider", () => {
716
723
  it("should reject missing required fields", async () => {
717
724
  const alepha = Alepha.create();
718
725
  await alepha.start();
719
- const schema = t.object({
720
- name: t.text(),
721
- age: t.integer(),
722
- active: t.boolean(),
726
+ const schema = z.object({
727
+ name: z.text(),
728
+ age: z.integer(),
729
+ active: z.boolean(),
723
730
  });
724
731
 
725
732
  expect(() =>
@@ -727,35 +734,32 @@ describe("TypeProvider", () => {
727
734
  ).toThrow();
728
735
  });
729
736
 
730
- it("should fix invalid field types", async () => {
737
+ it("should reject invalid field types (no coercion)", async () => {
731
738
  const alepha = Alepha.create();
732
739
  await alepha.start();
733
- const schema = t.object({
734
- name: t.text(),
735
- age: t.integer(),
736
- active: t.boolean(),
740
+ const schema = z.object({
741
+ name: z.text(),
742
+ age: z.integer(),
743
+ active: z.boolean(),
737
744
  });
738
745
 
739
- expect(
746
+ // Strict zod: a string `age` is rejected, not coerced to a number.
747
+ expect(() =>
740
748
  alepha.codec.decode(schema, {
741
749
  name: "John",
742
750
  age: "30",
743
751
  active: true,
744
752
  }),
745
- ).toEqual({
746
- name: "John",
747
- age: 30,
748
- active: true,
749
- });
753
+ ).toThrow();
750
754
  });
751
755
 
752
756
  it("should fix additional properties by default", async () => {
753
757
  const alepha = Alepha.create();
754
758
  await alepha.start();
755
- const schema = t.object({
756
- name: t.text(),
757
- age: t.integer(),
758
- active: t.boolean(),
759
+ const schema = z.object({
760
+ name: z.text(),
761
+ age: z.integer(),
762
+ active: z.boolean(),
759
763
  });
760
764
 
761
765
  expect(
@@ -775,14 +779,14 @@ describe("TypeProvider", () => {
775
779
  it("should support nested objects", async () => {
776
780
  const alepha = Alepha.create();
777
781
  await alepha.start();
778
- const schema = t.object({
779
- user: t.object({
780
- name: t.text(),
781
- email: t.email(),
782
+ const schema = z.object({
783
+ user: z.object({
784
+ name: z.text(),
785
+ email: z.email(),
782
786
  }),
783
- metadata: t.object({
784
- createdAt: t.string(),
785
- updatedAt: t.string(),
787
+ metadata: z.object({
788
+ createdAt: z.string(),
789
+ updatedAt: z.string(),
786
790
  }),
787
791
  });
788
792
 
@@ -805,7 +809,7 @@ describe("TypeProvider", () => {
805
809
  it("should decode valid arrays", async () => {
806
810
  const alepha = Alepha.create();
807
811
  await alepha.start();
808
- const schema = t.array(t.text());
812
+ const schema = z.array(z.text());
809
813
 
810
814
  expect(alepha.codec.decode(schema, [])).toEqual([]);
811
815
  expect(alepha.codec.decode(schema, ["a", "b", "c"])).toEqual([
@@ -815,22 +819,21 @@ describe("TypeProvider", () => {
815
819
  ]);
816
820
  });
817
821
 
818
- it("should enforce default max items (1000)", async () => {
822
+ it("does not cap array length by default (native zod arrays are unbounded)", async () => {
819
823
  const alepha = Alepha.create();
820
824
  await alepha.start();
821
- const schema = t.array(t.text());
822
-
823
- const maxArray = new Array(1000).fill("x");
824
- expect(alepha.codec.decode(schema, maxArray)).toEqual(maxArray);
825
+ // Native `z.array(...)` IS `zod.array(...)` — no implicit max-items cap.
826
+ // Bounds must be set explicitly via `.max()` (see next test).
827
+ const schema = z.array(z.text());
825
828
 
826
- const tooManyItems = new Array(1001).fill("x");
827
- expect(() => alepha.codec.validate(schema, tooManyItems)).toThrow();
829
+ const big = new Array(1001).fill("x");
830
+ expect(alepha.codec.decode(schema, big)).toEqual(big);
828
831
  });
829
832
 
830
833
  it("should support custom maxItems", async () => {
831
834
  const alepha = Alepha.create();
832
835
  await alepha.start();
833
- const schema = t.array(t.integer(), { maxItems: 5 });
836
+ const schema = z.array(z.integer()).max(5);
834
837
 
835
838
  expect(alepha.codec.decode(schema, [1, 2, 3, 4, 5])).toEqual([
836
839
  1, 2, 3, 4, 5,
@@ -840,33 +843,33 @@ describe("TypeProvider", () => {
840
843
  ).toThrow();
841
844
  });
842
845
 
843
- it("should reject invalid item types", async () => {
846
+ it("should reject invalid item types (no coercion)", async () => {
844
847
  const alepha = Alepha.create();
845
848
  await alepha.start();
846
- const schema = t.array(t.text());
849
+ const schema = z.array(z.text());
847
850
 
848
- expect(
851
+ // Strict zod: a numeric item is rejected, not coerced to a string.
852
+ expect(() =>
849
853
  alepha.codec.decode(schema, ["valid", 123, "also valid"]),
850
- ).toEqual(["valid", "123", "also valid"]);
854
+ ).toThrow();
851
855
  });
852
856
 
853
- it("should auto-cast non-array values to single-element array", async () => {
857
+ it("should not auto-cast non-array values to a single-element array", async () => {
854
858
  const alepha = Alepha.create();
855
859
  await alepha.start();
856
- const schema = t.array(t.text());
860
+ const schema = z.array(z.text());
857
861
 
858
- expect(alepha.codec.validate(schema, "not an array")).toEqual([
859
- "not an array",
860
- ]);
862
+ // Strict zod: a scalar is rejected, not wrapped into `[value]`.
863
+ expect(() => alepha.codec.validate(schema, "not an array")).toThrow();
861
864
  });
862
865
 
863
866
  it("should support array of objects", async () => {
864
867
  const alepha = Alepha.create();
865
868
  await alepha.start();
866
- const schema = t.array(
867
- t.object({
868
- id: t.integer(),
869
- name: t.text(),
869
+ const schema = z.array(
870
+ z.object({
871
+ id: z.integer(),
872
+ name: z.text(),
870
873
  }),
871
874
  );
872
875
 
@@ -883,7 +886,7 @@ describe("TypeProvider", () => {
883
886
  it("should accept any type in the union", async () => {
884
887
  const alepha = Alepha.create();
885
888
  await alepha.start();
886
- const schema = t.union([t.text(), t.integer()]);
889
+ const schema = z.union([z.text(), z.integer()]);
887
890
 
888
891
  expect(alepha.codec.decode(schema, "hello")).toBe("hello");
889
892
  expect(alepha.codec.decode(schema, 123)).toBe(123);
@@ -892,7 +895,7 @@ describe("TypeProvider", () => {
892
895
  it("should reject types not in the union", async () => {
893
896
  const alepha = Alepha.create();
894
897
  await alepha.start();
895
- const schema = t.union([t.text(), t.integer()]);
898
+ const schema = z.union([z.text(), z.integer()]);
896
899
 
897
900
  expect(() => alepha.codec.validate(schema, {})).toThrow();
898
901
  });
@@ -900,9 +903,9 @@ describe("TypeProvider", () => {
900
903
  it("should support union of object types", async () => {
901
904
  const alepha = Alepha.create();
902
905
  await alepha.start();
903
- const schema = t.union([
904
- t.object({ type: t.const("A"), value: t.text() }),
905
- t.object({ type: t.const("B"), count: t.integer() }),
906
+ const schema = z.union([
907
+ z.object({ type: z.const("A"), value: z.text() }),
908
+ z.object({ type: z.const("B"), count: z.integer() }),
906
909
  ]);
907
910
 
908
911
  expect(
@@ -922,7 +925,7 @@ describe("TypeProvider", () => {
922
925
  it("should decode valid records", async () => {
923
926
  const alepha = Alepha.create();
924
927
  await alepha.start();
925
- const schema = t.record(t.text(), t.integer());
928
+ const schema = z.record(z.text(), z.integer());
926
929
 
927
930
  const valid = { a: 1, b: 2, c: 3 };
928
931
  expect(alepha.codec.decode(schema, valid)).toEqual(valid);
@@ -931,7 +934,7 @@ describe("TypeProvider", () => {
931
934
  it("should accept empty records", async () => {
932
935
  const alepha = Alepha.create();
933
936
  await alepha.start();
934
- const schema = t.record(t.text(), t.integer());
937
+ const schema = z.record(z.text(), z.integer());
935
938
 
936
939
  expect(alepha.codec.decode(schema, {})).toEqual({});
937
940
  });
@@ -939,7 +942,7 @@ describe("TypeProvider", () => {
939
942
  it("should reject invalid value types", async () => {
940
943
  const alepha = Alepha.create();
941
944
  await alepha.start();
942
- const schema = t.record(t.text(), t.integer());
945
+ const schema = z.record(z.text(), z.integer());
943
946
 
944
947
  expect(() =>
945
948
  alepha.codec.validate(schema, { a: "not a number" }),
@@ -951,7 +954,7 @@ describe("TypeProvider", () => {
951
954
  it("should accept any JSON object", async () => {
952
955
  const alepha = Alepha.create();
953
956
  await alepha.start();
954
- const schema = t.json();
957
+ const schema = z.json();
955
958
 
956
959
  expect(alepha.codec.decode(schema, { key: "value" })).toEqual({
957
960
  key: "value",
@@ -969,7 +972,7 @@ describe("TypeProvider", () => {
969
972
  it("should decode valid tuples", async () => {
970
973
  const alepha = Alepha.create();
971
974
  await alepha.start();
972
- const schema = t.tuple([t.text(), t.integer(), t.boolean()]);
975
+ const schema = z.tuple([z.text(), z.integer(), z.boolean()]);
973
976
 
974
977
  expect(alepha.codec.decode(schema, ["hello", 42, true])).toEqual([
975
978
  "hello",
@@ -981,24 +984,25 @@ describe("TypeProvider", () => {
981
984
  it("should reject tuples with wrong length", async () => {
982
985
  const alepha = Alepha.create();
983
986
  await alepha.start();
984
- const schema = t.tuple([
985
- t.text(),
986
- t.integer(),
987
- t.object({
988
- flag: t.boolean(),
987
+ const schema = z.tuple([
988
+ z.text(),
989
+ z.integer(),
990
+ z.object({
991
+ flag: z.boolean(),
989
992
  }),
990
993
  ]);
991
994
 
992
995
  expect(() => alepha.codec.validate(schema, ["hello", 42])).toThrow();
993
- expect(
996
+ // Strict zod: an over-long tuple is rejected, not truncated.
997
+ expect(() =>
994
998
  alepha.codec.decode(schema, ["hello", 42, { flag: true }, "extra"]),
995
- ).toEqual(["hello", 42, { flag: true }]);
999
+ ).toThrow();
996
1000
  });
997
1001
 
998
1002
  it("should reject tuples with wrong types", async () => {
999
1003
  const alepha = Alepha.create();
1000
1004
  await alepha.start();
1001
- const schema = t.tuple([t.text(), t.integer(), t.boolean()]);
1005
+ const schema = z.tuple([z.text(), z.integer(), z.boolean()]);
1002
1006
 
1003
1007
  expect(() =>
1004
1008
  alepha.codec.validate(schema, ["hello", "not a number", true]),
@@ -1012,9 +1016,9 @@ describe("TypeProvider", () => {
1012
1016
  it("should make fields optional", async () => {
1013
1017
  const alepha = Alepha.create();
1014
1018
  await alepha.start();
1015
- const schema = t.object({
1016
- required: t.text(),
1017
- optional: t.optional(t.text()),
1019
+ const schema = z.object({
1020
+ required: z.text(),
1021
+ optional: z.text().optional(),
1018
1022
  });
1019
1023
 
1020
1024
  expect(
@@ -1044,8 +1048,8 @@ describe("TypeProvider", () => {
1044
1048
  it("should allow null values", async () => {
1045
1049
  const alepha = Alepha.create();
1046
1050
  await alepha.start();
1047
- const schema = t.object({
1048
- value: t.nullable(t.text()),
1051
+ const schema = z.object({
1052
+ value: z.text().nullable(),
1049
1053
  });
1050
1054
 
1051
1055
  expect(alepha.codec.decode(schema, { value: "test" })).toEqual({
@@ -1059,8 +1063,8 @@ describe("TypeProvider", () => {
1059
1063
  it("should require field to be present", async () => {
1060
1064
  const alepha = Alepha.create();
1061
1065
  await alepha.start();
1062
- const schema = t.object({
1063
- value: t.nullable(t.text()),
1066
+ const schema = z.object({
1067
+ value: z.text().nullable(),
1064
1068
  });
1065
1069
 
1066
1070
  expect(() => alepha.codec.validate(schema, {})).toThrow();
@@ -1071,8 +1075,8 @@ describe("TypeProvider", () => {
1071
1075
  it("should allow string, null, or omitted", async () => {
1072
1076
  const alepha = Alepha.create();
1073
1077
  await alepha.start();
1074
- const schema = t.object({
1075
- value: t.optional(t.nullable(t.text())),
1078
+ const schema = z.object({
1079
+ value: z.text().nullable().optional(),
1076
1080
  });
1077
1081
 
1078
1082
  expect(alepha.codec.decode(schema, { value: "test" })).toEqual({
@@ -1089,13 +1093,13 @@ describe("TypeProvider", () => {
1089
1093
  it("should make all fields optional", async () => {
1090
1094
  const alepha = Alepha.create();
1091
1095
  await alepha.start();
1092
- const baseSchema = t.object({
1093
- name: t.text(),
1094
- age: t.integer(),
1095
- email: t.email(),
1096
+ const baseSchema = z.object({
1097
+ name: z.text(),
1098
+ age: z.integer(),
1099
+ email: z.email(),
1096
1100
  });
1097
1101
 
1098
- const partialSchema = t.partial(baseSchema);
1102
+ const partialSchema = baseSchema.partial();
1099
1103
 
1100
1104
  expect(alepha.codec.decode(partialSchema, {})).toEqual({});
1101
1105
  expect(alepha.codec.decode(partialSchema, { name: "John" })).toEqual({
@@ -1125,14 +1129,14 @@ describe("TypeProvider", () => {
1125
1129
  it("should pick only specified fields", async () => {
1126
1130
  const alepha = Alepha.create();
1127
1131
  await alepha.start();
1128
- const baseSchema = t.object({
1129
- id: t.integer(),
1130
- name: t.text(),
1131
- email: t.email(),
1132
- age: t.integer(),
1132
+ const baseSchema = z.object({
1133
+ id: z.integer(),
1134
+ name: z.text(),
1135
+ email: z.email(),
1136
+ age: z.integer(),
1133
1137
  });
1134
1138
 
1135
- const pickedSchema = t.pick(baseSchema, ["name", "email"]);
1139
+ const pickedSchema = baseSchema.pick({ name: true, email: true });
1136
1140
 
1137
1141
  expect(
1138
1142
  alepha.codec.decode(pickedSchema, {
@@ -1148,14 +1152,14 @@ describe("TypeProvider", () => {
1148
1152
  it("should reject unpicked fields", async () => {
1149
1153
  const alepha = Alepha.create();
1150
1154
  await alepha.start();
1151
- const baseSchema = t.object({
1152
- id: t.integer(),
1153
- name: t.text(),
1154
- email: t.email(),
1155
- age: t.integer(),
1155
+ const baseSchema = z.object({
1156
+ id: z.integer(),
1157
+ name: z.text(),
1158
+ email: z.email(),
1159
+ age: z.integer(),
1156
1160
  });
1157
1161
 
1158
- const pickedSchema = t.pick(baseSchema, ["name", "email"]);
1162
+ const pickedSchema = baseSchema.pick({ name: true, email: true });
1159
1163
 
1160
1164
  expect(
1161
1165
  alepha.codec.decode(pickedSchema, {
@@ -1172,14 +1176,14 @@ describe("TypeProvider", () => {
1172
1176
  it("should require all picked fields", async () => {
1173
1177
  const alepha = Alepha.create();
1174
1178
  await alepha.start();
1175
- const baseSchema = t.object({
1176
- id: t.integer(),
1177
- name: t.text(),
1178
- email: t.email(),
1179
- age: t.integer(),
1179
+ const baseSchema = z.object({
1180
+ id: z.integer(),
1181
+ name: z.text(),
1182
+ email: z.email(),
1183
+ age: z.integer(),
1180
1184
  });
1181
1185
 
1182
- const pickedSchema = t.pick(baseSchema, ["name", "email"]);
1186
+ const pickedSchema = baseSchema.pick({ name: true, email: true });
1183
1187
 
1184
1188
  expect(() =>
1185
1189
  alepha.codec.validate(pickedSchema, { name: "John" }),
@@ -1191,14 +1195,14 @@ describe("TypeProvider", () => {
1191
1195
  it("should omit specified fields", async () => {
1192
1196
  const alepha = Alepha.create();
1193
1197
  await alepha.start();
1194
- const baseSchema = t.object({
1195
- id: t.integer(),
1196
- name: t.text(),
1197
- email: t.email(),
1198
- password: t.text(),
1198
+ const baseSchema = z.object({
1199
+ id: z.integer(),
1200
+ name: z.text(),
1201
+ email: z.email(),
1202
+ password: z.text(),
1199
1203
  });
1200
1204
 
1201
- const omittedSchema = t.omit(baseSchema, ["password"]);
1205
+ const omittedSchema = baseSchema.omit({ password: true });
1202
1206
 
1203
1207
  expect(
1204
1208
  alepha.codec.decode(omittedSchema, {
@@ -1216,14 +1220,14 @@ describe("TypeProvider", () => {
1216
1220
  it("should reject omitted fields", async () => {
1217
1221
  const alepha = Alepha.create();
1218
1222
  await alepha.start();
1219
- const baseSchema = t.object({
1220
- id: t.integer(),
1221
- name: t.text(),
1222
- email: t.email(),
1223
- password: t.text(),
1223
+ const baseSchema = z.object({
1224
+ id: z.integer(),
1225
+ name: z.text(),
1226
+ email: z.email(),
1227
+ password: z.text(),
1224
1228
  });
1225
1229
 
1226
- const omittedSchema = t.omit(baseSchema, ["password"]);
1230
+ const omittedSchema = baseSchema.omit({ password: true });
1227
1231
 
1228
1232
  expect(
1229
1233
  alepha.codec.decode(omittedSchema, {
@@ -1246,7 +1250,7 @@ describe("TypeProvider", () => {
1246
1250
  it("should accept valid enum values", async () => {
1247
1251
  const alepha = Alepha.create();
1248
1252
  await alepha.start();
1249
- const schema = t.enum(["ACTIVE", "INACTIVE", "PENDING"]);
1253
+ const schema = z.enum(["ACTIVE", "INACTIVE", "PENDING"]);
1250
1254
 
1251
1255
  expect(alepha.codec.decode(schema, "ACTIVE")).toBe("ACTIVE");
1252
1256
  expect(alepha.codec.decode(schema, "INACTIVE")).toBe("INACTIVE");
@@ -1256,7 +1260,7 @@ describe("TypeProvider", () => {
1256
1260
  it("should reject invalid enum values", async () => {
1257
1261
  const alepha = Alepha.create();
1258
1262
  await alepha.start();
1259
- const schema = t.enum(["ACTIVE", "INACTIVE", "PENDING"]);
1263
+ const schema = z.enum(["ACTIVE", "INACTIVE", "PENDING"]);
1260
1264
 
1261
1265
  expect(() => alepha.codec.validate(schema, "INVALID")).toThrow();
1262
1266
  expect(() => alepha.codec.validate(schema, "active")).toThrow(); // Case sensitive
@@ -1268,7 +1272,7 @@ describe("TypeProvider", () => {
1268
1272
  it("should accept only the literal value", async () => {
1269
1273
  const alepha = Alepha.create();
1270
1274
  await alepha.start();
1271
- const schema = t.const("FIXED_VALUE");
1275
+ const schema = z.const("FIXED_VALUE");
1272
1276
 
1273
1277
  expect(alepha.codec.decode(schema, "FIXED_VALUE")).toBe("FIXED_VALUE");
1274
1278
  });
@@ -1276,7 +1280,7 @@ describe("TypeProvider", () => {
1276
1280
  it("should reject non-matching values", async () => {
1277
1281
  const alepha = Alepha.create();
1278
1282
  await alepha.start();
1279
- const schema = t.const("FIXED_VALUE");
1283
+ const schema = z.const("FIXED_VALUE");
1280
1284
 
1281
1285
  expect(() => alepha.codec.validate(schema, "OTHER_VALUE")).toThrow();
1282
1286
  expect(() => alepha.codec.validate(schema, "")).toThrow();
@@ -1285,7 +1289,7 @@ describe("TypeProvider", () => {
1285
1289
  it("should support number literals", async () => {
1286
1290
  const alepha = Alepha.create();
1287
1291
  await alepha.start();
1288
- const schema = t.const(42);
1292
+ const schema = z.const(42);
1289
1293
 
1290
1294
  expect(alepha.codec.decode(schema, 42)).toBe(42);
1291
1295
  expect(() => alepha.codec.decode(schema, 43)).toThrow();
@@ -1298,7 +1302,7 @@ describe("TypeProvider", () => {
1298
1302
  it("should decode valid valueLabel objects", async () => {
1299
1303
  const alepha = Alepha.create();
1300
1304
  await alepha.start();
1301
- const schema = t.valueLabel();
1305
+ const schema = z.valueLabel();
1302
1306
 
1303
1307
  const valid = {
1304
1308
  value: "ACTIVE",
@@ -1310,7 +1314,7 @@ describe("TypeProvider", () => {
1310
1314
  it("should support optional description", async () => {
1311
1315
  const alepha = Alepha.create();
1312
1316
  await alepha.start();
1313
- const schema = t.valueLabel();
1317
+ const schema = z.valueLabel();
1314
1318
 
1315
1319
  const withDesc = {
1316
1320
  value: "PENDING",
@@ -1323,7 +1327,7 @@ describe("TypeProvider", () => {
1323
1327
  it("should validate value is constantCase", async () => {
1324
1328
  const alepha = Alepha.create();
1325
1329
  await alepha.start();
1326
- const schema = t.valueLabel();
1330
+ const schema = z.valueLabel();
1327
1331
 
1328
1332
  expect(() =>
1329
1333
  alepha.codec.decode(schema, {
@@ -1340,19 +1344,20 @@ describe("TypeProvider", () => {
1340
1344
  it("should create file schema with binary format", async () => {
1341
1345
  const alepha = Alepha.create();
1342
1346
  await alepha.start();
1343
- const schema = t.file();
1347
+ const schema = z.file();
1344
1348
 
1345
1349
  expect(schema).toBeDefined();
1346
- expect((schema as any).format).toBe("binary");
1350
+ // Format tag now lives in zod `.meta()`, read via `z.schema.format`.
1351
+ expect(z.schema.format(schema)).toBe("binary");
1347
1352
  });
1348
1353
 
1349
1354
  it("should support maxSize option", async () => {
1350
1355
  const alepha = Alepha.create();
1351
1356
  await alepha.start();
1352
- const schema = t.file({ maxSize: 1024 * 1024 }); // 1MB
1357
+ const schema = z.file({ maxSize: 1024 * 1024 }); // 1MB
1353
1358
 
1354
1359
  expect(schema).toBeDefined();
1355
- expect((schema as any).format).toBe("binary");
1360
+ expect(z.schema.format(schema)).toBe("binary");
1356
1361
  });
1357
1362
  });
1358
1363
 
@@ -1360,10 +1365,10 @@ describe("TypeProvider", () => {
1360
1365
  it("should create stream schema", async () => {
1361
1366
  const alepha = Alepha.create();
1362
1367
  await alepha.start();
1363
- const schema = t.stream();
1368
+ const schema = z.stream();
1364
1369
 
1365
1370
  expect(schema).toBeDefined();
1366
- expect((schema as any).format).toBe("stream");
1371
+ expect(z.schema.format(schema)).toBe("stream");
1367
1372
  });
1368
1373
  });
1369
1374
  });
@@ -1373,21 +1378,21 @@ describe("TypeProvider", () => {
1373
1378
  const alepha = Alepha.create();
1374
1379
  await alepha.start();
1375
1380
 
1376
- const schema = t.object({
1377
- id: t.uuid(),
1378
- user: t.object({
1379
- name: t.shortText(),
1380
- email: t.email(),
1381
- age: t.optional(t.integer()),
1382
- roles: t.array(t.enum(["ADMIN", "USER", "GUEST"])),
1381
+ const schema = z.object({
1382
+ id: z.uuid(),
1383
+ user: z.object({
1384
+ name: z.shortText(),
1385
+ email: z.email(),
1386
+ age: z.integer().optional(),
1387
+ roles: z.array(z.enum(["ADMIN", "USER", "GUEST"])),
1383
1388
  }),
1384
- metadata: t.nullable(
1385
- t.object({
1386
- createdAt: t.string(),
1387
- tags: t.array(t.text()),
1388
- }),
1389
- ),
1390
- settings: t.record(t.text(), t.boolean()),
1389
+ metadata: z
1390
+ .object({
1391
+ createdAt: z.string(),
1392
+ tags: z.array(z.text()),
1393
+ })
1394
+ .nullable(),
1395
+ settings: z.record(z.text(), z.boolean()),
1391
1396
  });
1392
1397
 
1393
1398
  const valid = {
@@ -1422,13 +1427,13 @@ describe("TypeProvider", () => {
1422
1427
  const alepha = Alepha.create();
1423
1428
  await alepha.start();
1424
1429
 
1425
- const schema = t.object({
1426
- text: t.text(),
1427
- number: t.number(),
1428
- bool: t.boolean(),
1429
- array: t.array(t.integer()),
1430
- nested: t.object({
1431
- key: t.text(),
1430
+ const schema = z.object({
1431
+ text: z.text(),
1432
+ number: z.number(),
1433
+ bool: z.boolean(),
1434
+ array: z.array(z.integer()),
1435
+ nested: z.object({
1436
+ key: z.text(),
1432
1437
  }),
1433
1438
  });
1434
1439
 
@@ -1452,9 +1457,9 @@ describe("TypeProvider", () => {
1452
1457
  const alepha = Alepha.create();
1453
1458
  await alepha.start();
1454
1459
 
1455
- const schema = t.object({
1456
- name: t.text(),
1457
- age: t.integer(),
1460
+ const schema = z.object({
1461
+ name: z.text(),
1462
+ age: z.integer(),
1458
1463
  });
1459
1464
 
1460
1465
  try {
@@ -1468,126 +1473,126 @@ describe("TypeProvider", () => {
1468
1473
 
1469
1474
  describe("TypeGuard", () => {
1470
1475
  it("should correctly identify string schemas", () => {
1471
- const { schema } = t;
1476
+ const { schema } = z;
1472
1477
 
1473
- expect(schema.isString(t.text())).toBe(true);
1474
- expect(schema.isString(t.integer())).toBe(false);
1478
+ expect(schema.isString(z.text())).toBe(true);
1479
+ expect(schema.isString(z.integer())).toBe(false);
1475
1480
  });
1476
1481
 
1477
1482
  it("should correctly identify number schemas", () => {
1478
- const { schema } = t;
1483
+ const { schema } = z;
1479
1484
 
1480
- expect(schema.isNumber(t.number())).toBe(true);
1481
- expect(schema.isNumber(t.text())).toBe(false);
1485
+ expect(schema.isNumber(z.number())).toBe(true);
1486
+ expect(schema.isNumber(z.text())).toBe(false);
1482
1487
  });
1483
1488
 
1484
1489
  it("should correctly identify integer schemas", () => {
1485
- const { schema } = t;
1490
+ const { schema } = z;
1486
1491
 
1487
- expect(schema.isInteger(t.integer())).toBe(true);
1488
- expect(schema.isInteger(t.number())).toBe(false);
1492
+ expect(schema.isInteger(z.integer())).toBe(true);
1493
+ expect(schema.isInteger(z.number())).toBe(false);
1489
1494
  });
1490
1495
 
1491
1496
  it("should correctly identify boolean schemas", () => {
1492
- const { schema } = t;
1497
+ const { schema } = z;
1493
1498
 
1494
- expect(schema.isBoolean(t.boolean())).toBe(true);
1495
- expect(schema.isBoolean(t.text())).toBe(false);
1499
+ expect(schema.isBoolean(z.boolean())).toBe(true);
1500
+ expect(schema.isBoolean(z.text())).toBe(false);
1496
1501
  });
1497
1502
 
1498
1503
  it("should correctly identify object schemas", () => {
1499
- const { schema } = t;
1504
+ const { schema } = z;
1500
1505
 
1501
- expect(schema.isObject(t.object({ key: t.text() }))).toBe(true);
1502
- expect(schema.isObject(t.array(t.text()))).toBe(false);
1506
+ expect(schema.isObject(z.object({ key: z.text() }))).toBe(true);
1507
+ expect(schema.isObject(z.array(z.text()))).toBe(false);
1503
1508
  });
1504
1509
 
1505
1510
  it("should correctly identify array schemas", () => {
1506
- const { schema } = t;
1511
+ const { schema } = z;
1507
1512
 
1508
- expect(schema.isArray(t.array(t.text()))).toBe(true);
1509
- expect(schema.isArray(t.text())).toBe(false);
1513
+ expect(schema.isArray(z.array(z.text()))).toBe(true);
1514
+ expect(schema.isArray(z.text())).toBe(false);
1510
1515
  });
1511
1516
 
1512
1517
  it("should correctly identify union schemas", () => {
1513
- const { schema } = t;
1518
+ const { schema } = z;
1514
1519
 
1515
- expect(schema.isUnion(t.union([t.text(), t.integer()]))).toBe(true);
1516
- expect(schema.isUnion(t.text())).toBe(false);
1520
+ expect(schema.isUnion(z.union([z.text(), z.integer()]))).toBe(true);
1521
+ expect(schema.isUnion(z.text())).toBe(false);
1517
1522
  });
1518
1523
 
1519
1524
  it("should correctly identify optional schemas", () => {
1520
- const { schema } = t;
1525
+ const { schema } = z;
1521
1526
 
1522
- expect(schema.isOptional(t.optional(t.text()))).toBe(true);
1523
- expect(schema.isOptional(t.text())).toBe(false);
1527
+ expect(schema.isOptional(z.text().optional())).toBe(true);
1528
+ expect(schema.isOptional(z.text())).toBe(false);
1524
1529
  });
1525
1530
 
1526
1531
  it("should correctly identify null schemas", () => {
1527
- const { schema } = t;
1532
+ const { schema } = z;
1528
1533
 
1529
- expect(schema.isNull(t.null())).toBe(true);
1530
- expect(schema.isNull(t.undefined())).toBe(false);
1534
+ expect(schema.isNull(z.null())).toBe(true);
1535
+ expect(schema.isNull(z.undefined())).toBe(false);
1531
1536
  });
1532
1537
 
1533
1538
  it("should correctly identify undefined schemas", () => {
1534
- const { schema } = t;
1539
+ const { schema } = z;
1535
1540
 
1536
- expect(schema.isUndefined(t.undefined())).toBe(true);
1537
- expect(schema.isUndefined(t.null())).toBe(false);
1541
+ expect(schema.isUndefined(z.undefined())).toBe(true);
1542
+ expect(schema.isUndefined(z.null())).toBe(false);
1538
1543
  });
1539
1544
 
1540
1545
  it("should correctly identify any schemas", () => {
1541
- const { schema } = t;
1546
+ const { schema } = z;
1542
1547
 
1543
- expect(schema.isAny(t.any())).toBe(true);
1544
- expect(schema.isAny(t.text())).toBe(false);
1548
+ expect(schema.isAny(z.any())).toBe(true);
1549
+ expect(schema.isAny(z.text())).toBe(false);
1545
1550
  });
1546
1551
 
1547
1552
  it("should correctly identify record schemas", () => {
1548
- const { schema } = t;
1553
+ const { schema } = z;
1549
1554
 
1550
- expect(schema.isRecord(t.record(t.text(), t.integer()))).toBe(true);
1551
- expect(schema.isRecord(t.object({}))).toBe(false);
1555
+ expect(schema.isRecord(z.record(z.text(), z.integer()))).toBe(true);
1556
+ expect(schema.isRecord(z.object({}))).toBe(false);
1552
1557
  });
1553
1558
 
1554
1559
  it("should correctly identify tuple schemas", () => {
1555
- const { schema } = t;
1560
+ const { schema } = z;
1556
1561
 
1557
- expect(schema.isTuple(t.tuple([t.text(), t.integer()]))).toBe(true);
1558
- expect(schema.isTuple(t.array(t.text()))).toBe(false);
1562
+ expect(schema.isTuple(z.tuple([z.text(), z.integer()]))).toBe(true);
1563
+ expect(schema.isTuple(z.array(z.text()))).toBe(false);
1559
1564
  });
1560
1565
 
1561
1566
  it("should correctly identify void schemas", () => {
1562
- const { schema } = t;
1567
+ const { schema } = z;
1563
1568
 
1564
- expect(schema.isVoid(t.void())).toBe(true);
1565
- expect(schema.isVoid(t.undefined())).toBe(false);
1569
+ expect(schema.isVoid(z.void())).toBe(true);
1570
+ expect(schema.isVoid(z.undefined())).toBe(false);
1566
1571
  });
1567
1572
 
1568
1573
  it("should correctly identify uuid schemas", () => {
1569
- const { schema } = t;
1574
+ const { schema } = z;
1570
1575
 
1571
- expect(schema.isUUID(t.uuid())).toBe(true);
1572
- expect(schema.isUUID(t.text())).toBe(false);
1576
+ expect(schema.isUUID(z.uuid())).toBe(true);
1577
+ expect(schema.isUUID(z.text())).toBe(false);
1573
1578
  });
1574
1579
 
1575
1580
  it("should correctly identify bigint schemas", () => {
1576
- const { schema } = t;
1581
+ const { schema } = z;
1577
1582
 
1578
- expect(schema.isBigInt(t.bigint())).toBe(true);
1579
- expect(schema.isBigInt(t.integer())).toBe(false);
1583
+ expect(schema.isBigInt(z.bigint())).toBe(true);
1584
+ expect(schema.isBigInt(z.integer())).toBe(false);
1580
1585
  });
1581
1586
 
1582
1587
  it("should correctly identify scalar schemas", () => {
1583
- const { schema } = t;
1584
-
1585
- expect(schema.isScalar(t.string())).toBe(true);
1586
- expect(schema.isScalar(t.number())).toBe(true);
1587
- expect(schema.isScalar(t.integer())).toBe(true);
1588
- expect(schema.isScalar(t.boolean())).toBe(true);
1589
- expect(schema.isScalar(t.object({}))).toBe(false);
1590
- expect(schema.isScalar(t.array(t.string()))).toBe(false);
1588
+ const { schema } = z;
1589
+
1590
+ expect(schema.isScalar(z.string())).toBe(true);
1591
+ expect(schema.isScalar(z.number())).toBe(true);
1592
+ expect(schema.isScalar(z.integer())).toBe(true);
1593
+ expect(schema.isScalar(z.boolean())).toBe(true);
1594
+ expect(schema.isScalar(z.object({}))).toBe(false);
1595
+ expect(schema.isScalar(z.array(z.string()))).toBe(false);
1591
1596
  });
1592
1597
  });
1593
1598