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
@@ -3,16 +3,14 @@ import {
3
3
  LogDestinationProvider,
4
4
  MemoryDestinationProvider,
5
5
  } from "alepha/logger";
6
- import { MemoryShellProvider } from "alepha/system";
6
+ import {
7
+ MemoryShellProvider,
8
+ NodeShellProvider,
9
+ ShellProvider,
10
+ } from "alepha/system";
7
11
  import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
8
12
  import { Runner } from "../index.ts";
9
13
 
10
- class TestRunner extends Runner {
11
- public override get useDynamicLogger() {
12
- return true;
13
- }
14
- }
15
-
16
14
  describe("Runner", () => {
17
15
  let mockLogger: MemoryDestinationProvider;
18
16
  let mockShell: MemoryShellProvider;
@@ -37,26 +35,6 @@ describe("Runner", () => {
37
35
  vi.clearAllMocks();
38
36
  });
39
37
 
40
- test("useDynamicLogger: state overrides disable the stylish UI even with LOG_FORMAT=raw", () => {
41
- // env says "raw" (stylish), but a runtime state override (what the CLI
42
- // `--verbose` flag sets) must win. Asserting the *false* direction is
43
- // deterministic across CI/non-CI (the dynamic-on path is gated on isCI).
44
- const alepha = Alepha.create({
45
- env: { LOG_LEVEL: "info", LOG_FORMAT: "raw" },
46
- }).with({
47
- provide: LogDestinationProvider,
48
- use: MemoryDestinationProvider,
49
- });
50
- const r = alepha.inject(Runner);
51
-
52
- alepha.store.set("alepha.logger.format", "pretty");
53
- expect(r.useDynamicLogger).toBe(false);
54
-
55
- alepha.store.set("alepha.logger.format", undefined);
56
- alepha.store.set("alepha.logger.level", "debug");
57
- expect(r.useDynamicLogger).toBe(false);
58
- });
59
-
60
38
  test("should execute a single shell command via run.sh", async () => {
61
39
  await runner.run(`echo "hello"`);
62
40
 
@@ -135,19 +113,18 @@ describe("Runner", () => {
135
113
  );
136
114
  });
137
115
 
138
- test("summary() should print a formatted table of executed tasks", async () => {
116
+ test("end() should print a total-time summary line after tasks run", async () => {
139
117
  await runner.run(`echo "Task 1"`);
140
118
  await runner.run("A slightly longer task name", () => {});
141
119
 
120
+ mockLogger.clear();
142
121
  runner.end();
143
122
 
144
- const logs = mockLogger.logs
145
- .slice(4)
146
- .map((l) => l.message)
147
- .join("\n");
123
+ const messages = mockLogger.logs.map((l) => l.message);
124
+ expect(messages.some((m) => m.startsWith("Total time:"))).toBe(true);
148
125
  });
149
126
 
150
- test("summary() should not print a table if no tasks were run", () => {
127
+ test("end() should print nothing if no tasks were run", () => {
151
128
  runner.end();
152
129
 
153
130
  const logs = mockLogger.logs.map((l) => l.message);
@@ -195,91 +172,90 @@ describe("Runner", () => {
195
172
  expect(mockLogger.logs[1].message).toMatch(/^Finished 'clean' after/);
196
173
  });
197
174
 
198
- test("should reset firstTaskStarted with PrettyPrint (LOG_FORMAT=raw)", async () => {
199
- // Use TestRunner to force useDynamicLogger=true (bypasses isCI check)
200
- const alepha = Alepha.create({
201
- env: {
202
- LOG_LEVEL: "info",
203
- LOG_FORMAT: "raw",
204
- },
205
- })
206
- .with({ provide: LogDestinationProvider, use: MemoryDestinationProvider })
207
- .with({ provide: Runner, use: TestRunner });
208
-
209
- const prettyRunner = alepha.inject(Runner);
210
-
211
- // Capture stdout to verify PrettyPrint output
212
- const output: string[] = [];
213
- const originalWrite = process.stdout.write.bind(process.stdout);
214
- process.stdout.write = (chunk: any) => {
215
- output.push(String(chunk));
216
- return true;
217
- };
175
+ test("should log start and finish for duplicate task names in one command", async () => {
176
+ runner.startCommand("cli", "verify");
177
+ await runner.run("clean", () => {});
178
+ await runner.run("lint", () => {});
179
+ await runner.run("typecheck", () => {});
180
+ await runner.run("clean", () => {}); // Same name as first task
181
+ runner.end();
218
182
 
219
- try {
220
- // Run command A
221
- prettyRunner.startCommand("cli", "commandA");
222
- await prettyRunner.run("task A", () => {});
223
- prettyRunner.end();
183
+ const messages = mockLogger.logs.map((l) => l.message).join("\n");
184
+ const cleanStarts = messages.match(/Starting 'clean'/g) ?? [];
185
+ expect(cleanStarts.length).toBe(2);
186
+ expect(messages).toContain("Starting 'lint' ...");
187
+ expect(messages).toContain("Starting 'typecheck' ...");
188
+ });
224
189
 
225
- // Verify command A header was printed
226
- expect(output.some((line) => line.includes("cli commandA"))).toBe(true);
190
+ describe("sub-process output gating", () => {
191
+ const build = (level: string) => {
192
+ const alepha = Alepha.create({ env: { LOG_LEVEL: level } }).with({
193
+ provide: LogDestinationProvider,
194
+ use: MemoryDestinationProvider,
195
+ });
196
+ return {
197
+ runner: alepha.inject(Runner),
198
+ shell: alepha.inject(MemoryShellProvider),
199
+ };
200
+ };
227
201
 
228
- // Clear output for command B
229
- output.length = 0;
202
+ test("captures child output (capture:true) when below DEBUG", async () => {
203
+ const { runner, shell } = build("info");
204
+ await runner.run("echo hi");
205
+ expect(shell.calls[0].options.capture).toBe(true);
206
+ });
207
+
208
+ test("streams child output (capture:false) when DEBUG is enabled", async () => {
209
+ const { runner, shell } = build("debug");
210
+ await runner.run("echo hi");
211
+ expect(shell.calls[0].options.capture).toBe(false);
212
+ });
230
213
 
231
- // Run command B - should get its own header
232
- prettyRunner.startCommand("cli", "commandB");
233
- await prettyRunner.run("task B", () => {});
234
- prettyRunner.end();
214
+ test("streams child output (capture:false) at trace level too", async () => {
215
+ const { runner, shell } = build("trace");
216
+ await runner.run("echo hi");
217
+ expect(shell.calls[0].options.capture).toBe(false);
218
+ });
235
219
 
236
- // Verify command B header was printed (not reusing A's state)
237
- expect(output.some((line) => line.includes("cli commandB"))).toBe(true);
238
- } finally {
239
- process.stdout.write = originalWrite;
240
- }
220
+ test("surfaces captured stdout and stderr when a task fails", async () => {
221
+ const failing = () => {
222
+ throw Object.assign(new Error("boom"), {
223
+ stdout: "OUT_TEXT",
224
+ stderr: "ERR_TEXT",
225
+ });
226
+ };
227
+
228
+ await expect(runner.run("failing", failing)).rejects.toThrow(
229
+ "Task 'failing' failed",
230
+ );
231
+
232
+ const messages = mockLogger.logs.map((l) => l.message).join("\n");
233
+ expect(messages).toContain("OUT_TEXT");
234
+ expect(messages).toContain("ERR_TEXT");
235
+ });
241
236
  });
242
237
 
243
- test("should display duplicate task names in same command with PrettyPrint", async () => {
244
- // Use TestRunner to force useDynamicLogger=true (bypasses isCI check)
245
- const alepha = Alepha.create({
246
- env: {
247
- LOG_LEVEL: "info",
248
- LOG_FORMAT: "raw",
249
- },
250
- })
251
- .with({ provide: LogDestinationProvider, use: MemoryDestinationProvider })
252
- .with({ provide: Runner, use: TestRunner });
253
-
254
- const prettyRunner = alepha.inject(Runner);
255
-
256
- // Capture stdout to verify PrettyPrint output
257
- const output: string[] = [];
258
- const originalWrite = process.stdout.write.bind(process.stdout);
259
- process.stdout.write = (chunk: any) => {
260
- output.push(String(chunk));
261
- return true;
238
+ describe("sub-process output gating (integration, real shell)", () => {
239
+ const build = (level: string) => {
240
+ const alepha = Alepha.create({ env: { LOG_LEVEL: level } })
241
+ .with({
242
+ provide: LogDestinationProvider,
243
+ use: MemoryDestinationProvider,
244
+ })
245
+ .with({ provide: ShellProvider, use: NodeShellProvider });
246
+ return alepha.inject(Runner);
262
247
  };
263
248
 
264
- try {
265
- // Run command with duplicate task names (like "alepha verify" does with "clean")
266
- prettyRunner.startCommand("cli", "verify");
267
- await prettyRunner.run("clean", () => {});
268
- await prettyRunner.run("lint", () => {});
269
- await prettyRunner.run("typecheck", () => {});
270
- await prettyRunner.run("clean", () => {}); // Same name as first task
271
- prettyRunner.end();
272
-
273
- // Count occurrences of "clean" in output (should appear twice)
274
- const fullOutput = output.join("");
275
- const cleanMatches = fullOutput.match(/clean/g) || [];
276
- expect(cleanMatches.length).toBeGreaterThanOrEqual(2);
277
-
278
- // Verify all tasks were logged
279
- expect(fullOutput).toContain("lint");
280
- expect(fullOutput).toContain("typecheck");
281
- } finally {
282
- process.stdout.write = originalWrite;
283
- }
249
+ test("captures and returns child stdout when below DEBUG", async () => {
250
+ const runner = build("info");
251
+ const out = await runner.run("echo MARKER_INFO");
252
+ expect(out).toContain("MARKER_INFO");
253
+ });
254
+
255
+ test("streams child output (returns empty) when DEBUG is enabled", async () => {
256
+ const runner = build("debug");
257
+ const out = await runner.run("echo MARKER_DEBUG");
258
+ expect(out).toBe("");
259
+ });
284
260
  });
285
261
  });
@@ -4,29 +4,29 @@ import {
4
4
  $inject,
5
5
  Alepha,
6
6
  AlephaError,
7
+ coerceScalar,
7
8
  type Static,
8
9
  type TSchema,
9
10
  type TString,
10
- t,
11
+ z,
11
12
  } from "alepha";
12
13
  import { $logger } from "alepha/logger";
13
- import { PrettyAsker } from "./PrettyAsker.ts";
14
14
 
15
15
  export interface AskOptions<T extends TSchema = TString> {
16
16
  /**
17
17
  * Response schema expected.
18
18
  *
19
19
  * Recommended schemas:
20
- * - t.text() - for free text input
21
- * - t.number() - for numeric input
22
- * - t.boolean() - for yes/no input (accepts "true", "false", "1", "0")
23
- * - t.enum(["option1", "option2"]) - for predefined options
20
+ * - z.text() - for free text input
21
+ * - z.number() - for numeric input
22
+ * - z.boolean() - for yes/no input (accepts "true", "false", "1", "0")
23
+ * - z.enum(["option1", "option2"]) - for predefined options
24
24
  *
25
25
  * You can use schema.default to provide a default value.
26
26
  *
27
27
  * @example
28
28
  * ```ts
29
- * ask("What is your name?", { schema: t.text({ default: "John Doe" }) })
29
+ * ask("What is your name?", { schema: z.text({ default: "John Doe" }) })
30
30
  * ```
31
31
  *
32
32
  * @default TString
@@ -51,11 +51,18 @@ export interface AskMethod {
51
51
  outro: (message: string) => void;
52
52
  }
53
53
 
54
+ /**
55
+ * Reads interactive input from the terminal using plain readline prompts.
56
+ *
57
+ * One straightforward code path: questions are printed through the logger
58
+ * and answers are read with Node's `readline`. No raw-mode cursor control,
59
+ * no ANSI framing — output stays greppable and works the same in a TTY,
60
+ * under CI, or when piped.
61
+ */
54
62
  export class Asker {
55
63
  protected readonly log = $logger();
56
64
  public readonly ask: AskMethod;
57
65
  protected readonly alepha = $inject(Alepha);
58
- protected readonly pretty = $inject(PrettyAsker);
59
66
 
60
67
  constructor() {
61
68
  this.ask = this.createAskMethod();
@@ -70,25 +77,18 @@ export class Asker {
70
77
  };
71
78
 
72
79
  askFn.permission = async (question: string) => {
73
- if (this.pretty.enabled) {
74
- return this.pretty.confirm(question);
75
- }
76
80
  const response = await this.prompt(`${question} [Y/n]`, {
77
- schema: t.enum(["Y", "y", "n", "no", "yes"], { default: "Y" }),
81
+ schema: z.enum(["Y", "y", "n", "no", "yes"]).default("Y"),
78
82
  });
79
83
  return response.charAt(0).toLowerCase() === "y";
80
84
  };
81
85
 
82
86
  askFn.intro = (title: string) => {
83
- if (this.pretty.enabled) {
84
- this.pretty.intro(title);
85
- }
87
+ this.log.info(title);
86
88
  };
87
89
 
88
90
  askFn.outro = (message: string) => {
89
- if (this.pretty.enabled) {
90
- this.pretty.outro(message);
91
- }
91
+ if (message) this.log.info(message);
92
92
  };
93
93
 
94
94
  return askFn;
@@ -97,45 +97,6 @@ export class Asker {
97
97
  protected async prompt<T extends TSchema = TString>(
98
98
  question: string,
99
99
  options: AskOptions<T>,
100
- ): Promise<Static<T>> {
101
- if (this.pretty.enabled) {
102
- return this.prettyPrompt(question, options);
103
- }
104
- return this.plainPrompt(question, options);
105
- }
106
-
107
- /**
108
- * Pretty mode: delegate to PrettyAsker based on schema type.
109
- */
110
- protected async prettyPrompt<T extends TSchema = TString>(
111
- question: string,
112
- options: AskOptions<T>,
113
- ): Promise<Static<T>> {
114
- const schema = options.schema as any;
115
-
116
- // Enum schema → arrow-key select
117
- if (schema?.enum && Array.isArray(schema.enum)) {
118
- const value = await this.pretty.select(question, schema.enum);
119
- if (options.validate) {
120
- options.validate(value as Static<T>);
121
- }
122
- return value as Static<T>;
123
- }
124
-
125
- // Text/other schema → text input
126
- const value = await this.pretty.text(question, schema);
127
- if (options.validate) {
128
- options.validate(value as Static<T>);
129
- }
130
- return value as Static<T>;
131
- }
132
-
133
- /**
134
- * Plain mode: readline-based prompts (CI, Claude Code, debug).
135
- */
136
- protected async plainPrompt<T extends TSchema = TString>(
137
- question: string,
138
- options: AskOptions<T>,
139
100
  ): Promise<Static<T>> {
140
101
  const rl = this.createPromptInterface();
141
102
  let value: any;
@@ -145,9 +106,13 @@ export class Asker {
145
106
  this.log.info(question);
146
107
  const answer = await rl.question("> ");
147
108
  if (options.schema) {
109
+ // The terminal is a string-only boundary (like HTTP query/env), so
110
+ // coerce the answer to the schema's scalar type before strict
111
+ // decoding — otherwise `z.number()` would reject the string "41".
112
+ const raw = answer ? answer.trim() : undefined;
148
113
  value = this.alepha.codec.decode(
149
114
  options.schema,
150
- answer ? answer.trim() : undefined,
115
+ raw === undefined ? undefined : coerceScalar(options.schema, raw),
151
116
  );
152
117
  } else {
153
118
  value = String(answer.trim());
@@ -4,7 +4,6 @@ import { DateTimeProvider } from "alepha/datetime";
4
4
  import { $logger } from "alepha/logger";
5
5
  import { ShellProvider } from "alepha/system";
6
6
  import { CommandError } from "../errors/CommandError.ts";
7
- import { PrettyPrint } from "./PrettyPrint.ts";
8
7
 
9
8
  export type Task = {
10
9
  name: string;
@@ -43,80 +42,43 @@ export interface RunnerMethod {
43
42
  * > But can be called manually if needed to print more stuff before the command ends.
44
43
  */
45
44
  end: () => void;
46
-
47
- /**
48
- * Pause the spinner so external processes can write to stdout directly.
49
- */
50
- pause: () => void;
51
-
52
- /**
53
- * Resume the spinner after a pause.
54
- */
55
- resume: () => void;
56
45
  }
57
46
 
47
+ /**
48
+ * Runs CLI tasks (shell commands or functions) and logs their lifecycle.
49
+ *
50
+ * Output is intentionally plain and verbose: every task logs a
51
+ * `Starting …` / `Finished … after Ns` line through the standard logger,
52
+ * and shelled commands **stream** their stdout/stderr straight to the
53
+ * terminal (`capture: false`) so tool output — `vite build` warnings,
54
+ * Biome diagnostics, nested `alepha` subcommands — is visible live.
55
+ */
58
56
  export class Runner {
59
57
  protected readonly log = $logger();
60
58
  protected readonly dateTime = $inject(DateTimeProvider);
61
59
  protected timers: Timer[] = [];
62
60
  protected readonly startTime: number = this.dateTime.nowMillis();
63
- protected readonly prettyPrint = $inject(PrettyPrint);
64
61
  protected readonly alepha = $inject(Alepha);
65
62
  protected readonly shell = $inject(ShellProvider);
66
63
  public readonly run: RunnerMethod;
67
- protected cliName = "";
68
- protected commandName = "";
69
- protected firstTaskStarted = false;
70
- protected taskCounter = 0;
71
64
 
72
65
  constructor() {
73
66
  this.run = this.createRunMethod();
74
67
  }
75
68
 
76
- public get useDynamicLogger() {
77
- if (this.alepha.isCI() || this.alepha.env.CLAUDECODE) {
78
- return false;
79
- }
80
-
81
- // Runtime state overrides the env defaults (e.g. the CLI `--verbose`
82
- // flag sets level=debug + format=pretty), so a flag can flip the
83
- // stylish task UI off without restarting with LOG_* env vars.
84
- const logLevel = String(
85
- this.alepha.store.get("alepha.logger.level") ??
86
- this.alepha.env.LOG_LEVEL ??
87
- "",
88
- ).toLowerCase();
89
- if (logLevel === "debug" || logLevel === "trace") {
90
- return false;
91
- }
92
-
93
- const format =
94
- this.alepha.store.get("alepha.logger.format") ??
95
- this.alepha.env.LOG_FORMAT;
96
- return format === "raw";
97
- }
98
-
99
69
  /**
100
- * Start a new command session with header (for pretty print mode)
70
+ * Start a new command session.
71
+ *
72
+ * Retained for API compatibility (the CLI calls it before each command);
73
+ * task lifecycle is now logged statelessly, so there is nothing to reset.
101
74
  */
102
- public startCommand(cliName: string, commandName: string): void {
103
- this.cliName = cliName;
104
- this.commandName = commandName;
105
- this.firstTaskStarted = false;
106
- this.taskCounter = 0;
107
- }
75
+ public startCommand(_cliName: string, _commandName: string): void {}
108
76
 
109
77
  protected createRunMethod() {
110
78
  const runFn: RunnerMethod = async (
111
79
  cmd: string | Task | Array<string | Task>,
112
80
  options?: RunOptions | (() => any),
113
81
  ) => {
114
- if (this.useDynamicLogger && !this.firstTaskStarted) {
115
- this.prettyPrint.startCommand(this.cliName, this.commandName);
116
- }
117
-
118
- this.firstTaskStarted = true;
119
-
120
82
  const root =
121
83
  typeof options === "object" && options.root ? options.root : undefined;
122
84
 
@@ -185,12 +147,6 @@ export class Runner {
185
147
  };
186
148
 
187
149
  runFn.end = () => this.end();
188
- runFn.pause = () => {
189
- if (this.useDynamicLogger) this.prettyPrint.pause();
190
- };
191
- runFn.resume = () => {
192
- if (this.useDynamicLogger) this.prettyPrint.resume();
193
- };
194
150
 
195
151
  return runFn;
196
152
  }
@@ -199,7 +155,13 @@ export class Runner {
199
155
  cmd: string,
200
156
  opts: { root?: string } = {},
201
157
  ): Promise<string> {
202
- return this.shell.run(cmd, { root: opts.root, capture: true });
158
+ // Stream child output straight to the terminal only when DEBUG (or more
159
+ // verbose) is enabled — i.e. under `--verbose`, an agent session
160
+ // (CLAUDECODE), or `LOG_LEVEL=debug`. Otherwise capture it so a quiet run
161
+ // (e.g. `alepha verify`) is not buried under sub-process output; captured
162
+ // output is surfaced on failure by {@link executeTask}.
163
+ const stream = this.log.isLevelEnabled("DEBUG");
164
+ return this.shell.run(cmd, { root: opts.root, capture: !stream });
203
165
  }
204
166
 
205
167
  /**
@@ -220,21 +182,13 @@ export class Runner {
220
182
  * Prints a summary of all executed tasks and their durations.
221
183
  */
222
184
  public end(): void {
223
- if (this.useDynamicLogger && this.firstTaskStarted) {
224
- this.prettyPrint.endCommand();
225
- return;
226
- }
227
-
228
- // Non-dynamic mode: use logging
229
185
  if (this.timers.length === 0) return;
230
186
 
231
- this.log.info("");
232
187
  const totalTime = (
233
188
  (this.dateTime.nowMillis() - this.startTime) /
234
189
  1000
235
190
  ).toFixed(1);
236
191
  this.log.info(`Total time: ${totalTime}s`);
237
- this.log.info(``);
238
192
 
239
193
  // clear timers after rendering
240
194
  this.timers = [];
@@ -242,26 +196,24 @@ export class Runner {
242
196
 
243
197
  protected async executeTask(task: Task): Promise<string> {
244
198
  const now = this.dateTime.nowMillis();
245
- const taskId = `task-${++this.taskCounter}`; // Use unique counter-based ID
246
199
 
247
- // Setup dynamic logger
248
- if (this.useDynamicLogger) {
249
- this.prettyPrint.startSpinner(taskId, task.name);
250
- } else {
251
- this.log.info(`Starting '${task.name}' ...`);
252
- }
200
+ this.log.info(`Starting '${task.name}' ...`);
253
201
 
254
202
  let stdout = "";
255
203
 
256
204
  try {
257
205
  stdout = String((await task.handler()) ?? "");
258
206
  } catch (error) {
259
- // Clear spinner and show error
260
- if (this.useDynamicLogger) {
261
- this.prettyPrint.error(taskId, task.name);
262
- }
263
- if (error instanceof Error && "stdout" in error) {
264
- this.log.info(`\n\n${error.stdout}`);
207
+ // Streamed tasks have already printed their output live and reject
208
+ // without stdout/stderr attached; this surfaces output from captured
209
+ // tasks (capture: true — the default below DEBUG) before throwing.
210
+ const err = error as { stdout?: string; stderr?: string };
211
+ const captured = [err?.stdout, err?.stderr]
212
+ .filter(Boolean)
213
+ .join("\n")
214
+ .trim();
215
+ if (captured) {
216
+ this.log.info(`\n\n${captured}`);
265
217
  }
266
218
  throw new CommandError(`Task '${task.name}' failed`, { cause: error });
267
219
  }
@@ -272,14 +224,8 @@ export class Runner {
272
224
 
273
225
  const message =
274
226
  stdout && !stdout.includes("\n") ? stdout.trim() : undefined;
275
-
276
- // Clear spinner and show completion
277
- if (this.useDynamicLogger) {
278
- this.prettyPrint.success(taskId, task.name, `${duration}s`, message);
279
- } else {
280
- const suffix = message ? ` - ${message}` : "";
281
- this.log.info(`Finished '${task.name}' after ${duration}s${suffix}`);
282
- }
227
+ const suffix = message ? ` - ${message}` : "";
228
+ this.log.info(`Finished '${task.name}' after ${duration}s${suffix}`);
283
229
 
284
230
  this.timers.push({
285
231
  name: task.name,
@@ -288,26 +234,4 @@ export class Runner {
288
234
 
289
235
  return stdout;
290
236
  }
291
-
292
- protected renderTable(data: string[][]): void {
293
- if (data.length === 0) return;
294
-
295
- const col1Width = Math.max(...data.map(([col1]) => col1.length), 7);
296
- const col2Width = Math.max(...data.map(([, col2]) => col2.length), 8);
297
-
298
- const divider = `+${"-".repeat(col1Width + 2)}+${"-".repeat(
299
- col2Width + 2,
300
- )}+`;
301
- this.log.info(divider);
302
- this.log.info(
303
- `| ${"Command".padEnd(col1Width)} | ${"Duration".padEnd(col2Width)} |`,
304
- );
305
- this.log.info(divider);
306
- for (const [col1, col2] of data) {
307
- this.log.info(
308
- `| ${col1.padEnd(col1Width)} | ${col2.padEnd(col2Width)} |`,
309
- );
310
- }
311
- this.log.info(divider);
312
- }
313
237
  }
@@ -1,8 +1,6 @@
1
1
  import { $module } from "alepha";
2
2
  import { Asker } from "./helpers/Asker.ts";
3
3
  import { EnvUtils } from "./helpers/EnvUtils.ts";
4
- import { PrettyAsker } from "./helpers/PrettyAsker.ts";
5
- import { PrettyPrint } from "./helpers/PrettyPrint.ts";
6
4
  import { Runner } from "./helpers/Runner.ts";
7
5
  import { $command } from "./primitives/$command.ts";
8
6
  import { CliProvider } from "./providers/CliProvider.ts";
@@ -12,8 +10,6 @@ import { CliProvider } from "./providers/CliProvider.ts";
12
10
  export * from "./errors/CommandError.ts";
13
11
  export * from "./helpers/Asker.ts";
14
12
  export * from "./helpers/EnvUtils.ts";
15
- export * from "./helpers/PrettyAsker.ts";
16
- export * from "./helpers/PrettyPrint.ts";
17
13
  export * from "./helpers/Runner.ts";
18
14
  export * from "./primitives/$command.ts";
19
15
  export * from "./providers/CliProvider.ts";
@@ -25,9 +21,8 @@ export * from "./providers/CliProvider.ts";
25
21
  *
26
22
  * **Features:**
27
23
  * - CLI command definitions
28
- * - Interactive CLI prompts
29
- * - Command execution
30
- * - Formatted colored output
24
+ * - Interactive CLI prompts (plain readline)
25
+ * - Command execution with streamed, verbose output
31
26
  * - Environment variable utilities
32
27
  * - Schema validation for CLI arguments
33
28
  *
@@ -36,12 +31,12 @@ export * from "./providers/CliProvider.ts";
36
31
  export const AlephaCommand = $module({
37
32
  name: "alepha.command",
38
33
  primitives: [$command],
39
- services: [CliProvider, Runner, Asker, PrettyAsker, PrettyPrint, EnvUtils],
34
+ services: [CliProvider, Runner, Asker, EnvUtils],
40
35
  });
41
36
 
42
37
  // ---------------------------------------------------------------------------------------------------------------------
43
38
 
44
- declare module "typebox" {
39
+ declare module "alepha" {
45
40
  interface StringOptions {
46
41
  /**
47
42
  * Additional aliases for the flags.