alepha 0.13.6 → 0.13.8

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 (487) hide show
  1. package/README.md +5 -2
  2. package/assets/swagger-ui/swagger-ui-bundle.js +1 -1
  3. package/assets/swagger-ui/swagger-ui-standalone-preset.js +1 -1
  4. package/assets/swagger-ui/swagger-ui.css +1 -1
  5. package/dist/api/audits/index.browser.js +116 -0
  6. package/dist/api/audits/index.browser.js.map +1 -0
  7. package/dist/api/audits/index.d.ts +1194 -0
  8. package/dist/api/audits/index.js +674 -0
  9. package/dist/api/audits/index.js.map +1 -0
  10. package/dist/{api-files → api/files}/index.browser.js +5 -5
  11. package/dist/api/files/index.browser.js.map +1 -0
  12. package/dist/{api-files → api/files}/index.d.ts +16 -9
  13. package/dist/{api-files → api/files}/index.js +10 -10
  14. package/dist/api/files/index.js.map +1 -0
  15. package/dist/{api-jobs → api/jobs}/index.browser.js +5 -5
  16. package/dist/api/jobs/index.browser.js.map +1 -0
  17. package/dist/{api-jobs → api/jobs}/index.d.ts +35 -35
  18. package/dist/{api-jobs → api/jobs}/index.js +9 -9
  19. package/dist/api/jobs/index.js.map +1 -0
  20. package/dist/{api-notifications → api/notifications}/index.browser.js +11 -11
  21. package/dist/api/notifications/index.browser.js.map +1 -0
  22. package/dist/api/notifications/index.d.ts +327 -0
  23. package/dist/{api-notifications → api/notifications}/index.js +11 -11
  24. package/dist/api/notifications/index.js.map +1 -0
  25. package/dist/api/parameters/index.browser.js +60 -0
  26. package/dist/api/parameters/index.browser.js.map +1 -0
  27. package/dist/api/parameters/index.d.ts +761 -0
  28. package/dist/api/parameters/index.js +877 -0
  29. package/dist/api/parameters/index.js.map +1 -0
  30. package/dist/{api-users → api/users}/index.browser.js +6 -6
  31. package/dist/api/users/index.browser.js.map +1 -0
  32. package/dist/{api-users → api/users}/index.d.ts +259 -247
  33. package/dist/{api-users → api/users}/index.js +125 -112
  34. package/dist/api/users/index.js.map +1 -0
  35. package/dist/{api-verifications → api/verifications}/index.browser.js +5 -5
  36. package/dist/api/verifications/index.browser.js.map +1 -0
  37. package/dist/api/verifications/index.d.ts +248 -0
  38. package/dist/{api-verifications → api/verifications}/index.js +13 -12
  39. package/dist/api/verifications/index.js.map +1 -0
  40. package/dist/bin/index.js +1 -0
  41. package/dist/bin/index.js.map +1 -1
  42. package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
  43. package/dist/cache/{index.js → core/index.js} +5 -5
  44. package/dist/cache/core/index.js.map +1 -0
  45. package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
  46. package/dist/{cache-redis → cache/redis}/index.js +2 -2
  47. package/dist/cache/redis/index.js.map +1 -0
  48. package/dist/cli/index.d.ts +71 -9
  49. package/dist/cli/index.js +280 -79
  50. package/dist/cli/index.js.map +1 -1
  51. package/dist/command/index.d.ts +63 -2
  52. package/dist/command/index.js +30 -3
  53. package/dist/command/index.js.map +1 -1
  54. package/dist/core/index.browser.js +241 -61
  55. package/dist/core/index.browser.js.map +1 -1
  56. package/dist/core/index.d.ts +170 -90
  57. package/dist/core/index.js +264 -67
  58. package/dist/core/index.js.map +1 -1
  59. package/dist/core/index.native.js +248 -65
  60. package/dist/core/index.native.js.map +1 -1
  61. package/dist/email/index.js +15 -10554
  62. package/dist/email/index.js.map +1 -1
  63. package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
  64. package/dist/lock/{index.js → core/index.js} +5 -5
  65. package/dist/lock/core/index.js.map +1 -0
  66. package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
  67. package/dist/{lock-redis → lock/redis}/index.js +2 -2
  68. package/dist/lock/redis/index.js.map +1 -0
  69. package/dist/logger/index.d.ts +4 -4
  70. package/dist/logger/index.js +77 -72
  71. package/dist/logger/index.js.map +1 -1
  72. package/dist/orm/index.d.ts +5 -1
  73. package/dist/orm/index.js +24 -7
  74. package/dist/orm/index.js.map +1 -1
  75. package/dist/queue/core/index.d.ts +548 -0
  76. package/dist/queue/core/index.js +391 -0
  77. package/dist/queue/core/index.js.map +1 -0
  78. package/dist/queue/redis/index.d.ts +28 -0
  79. package/dist/queue/redis/index.js +43 -0
  80. package/dist/queue/redis/index.js.map +1 -0
  81. package/dist/scheduler/index.d.ts +7 -7
  82. package/dist/scheduler/index.js +1 -393
  83. package/dist/scheduler/index.js.map +1 -1
  84. package/dist/security/index.d.ts +1 -1
  85. package/dist/security/index.js +2 -1413
  86. package/dist/security/index.js.map +1 -1
  87. package/dist/{server-auth → server/auth}/index.browser.js +6 -6
  88. package/dist/server/auth/index.browser.js.map +1 -0
  89. package/dist/{server-auth → server/auth}/index.d.ts +175 -164
  90. package/dist/server/auth/index.js +742 -0
  91. package/dist/server/auth/index.js.map +1 -0
  92. package/dist/{server-cache → server/cache}/index.d.ts +2 -2
  93. package/dist/{server-cache → server/cache}/index.js +2 -2
  94. package/dist/server/cache/index.js.map +1 -0
  95. package/dist/{server-compress → server/compress}/index.d.ts +2 -2
  96. package/dist/{server-compress → server/compress}/index.js +2 -2
  97. package/dist/server/compress/index.js.map +1 -0
  98. package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
  99. package/dist/server/cookies/index.browser.js.map +1 -0
  100. package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
  101. package/dist/{server-cookies → server/cookies}/index.js +9 -5
  102. package/dist/server/cookies/index.js.map +1 -0
  103. package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
  104. package/dist/server/core/index.browser.js.map +1 -0
  105. package/dist/server/{index.d.ts → core/index.d.ts} +46 -37
  106. package/dist/server/{index.js → core/index.js} +47 -33
  107. package/dist/server/core/index.js.map +1 -0
  108. package/dist/{server-cors → server/cors}/index.d.ts +3 -3
  109. package/dist/{server-cors → server/cors}/index.js +3 -3
  110. package/dist/server/cors/index.js.map +1 -0
  111. package/dist/{server-health → server/health}/index.d.ts +3 -3
  112. package/dist/{server-health → server/health}/index.js +3 -3
  113. package/dist/server/health/index.js.map +1 -0
  114. package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
  115. package/dist/{server-helmet → server/helmet}/index.js +2 -2
  116. package/dist/server/helmet/index.js.map +1 -0
  117. package/dist/{server-links → server/links}/index.browser.js +5 -5
  118. package/dist/server/links/index.browser.js.map +1 -0
  119. package/dist/{server-links → server/links}/index.d.ts +40 -40
  120. package/dist/{server-links → server/links}/index.js +7 -7
  121. package/dist/server/links/index.js.map +1 -0
  122. package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
  123. package/dist/server/metrics/index.js +74 -0
  124. package/dist/server/metrics/index.js.map +1 -0
  125. package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
  126. package/dist/{server-multipart → server/multipart}/index.js +2 -2
  127. package/dist/server/multipart/index.js.map +1 -0
  128. package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
  129. package/dist/{server-proxy → server/proxy}/index.js +3 -3
  130. package/dist/server/proxy/index.js.map +1 -0
  131. package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
  132. package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
  133. package/dist/server/rate-limit/index.js.map +1 -0
  134. package/dist/{server-security → server/security}/index.browser.js +1 -1
  135. package/dist/server/security/index.browser.js.map +1 -0
  136. package/dist/{server-security → server/security}/index.d.ts +4 -4
  137. package/dist/{server-security → server/security}/index.js +4 -4
  138. package/dist/server/security/index.js.map +1 -0
  139. package/dist/{server-static → server/static}/index.d.ts +3 -3
  140. package/dist/{server-static → server/static}/index.js +3 -3
  141. package/dist/server/static/index.js.map +1 -0
  142. package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
  143. package/dist/{server-swagger → server/swagger}/index.js +4 -4
  144. package/dist/server/swagger/index.js.map +1 -0
  145. package/dist/thread/index.js +2 -2
  146. package/dist/thread/index.js.map +1 -1
  147. package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
  148. package/dist/topic/{index.js → core/index.js} +6 -6
  149. package/dist/topic/core/index.js.map +1 -0
  150. package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
  151. package/dist/{topic-redis → topic/redis}/index.js +2 -2
  152. package/dist/topic/redis/index.js.map +1 -0
  153. package/dist/vite/index.d.ts +13 -2
  154. package/dist/vite/index.js +114 -50
  155. package/dist/vite/index.js.map +1 -1
  156. package/dist/websocket/index.browser.js +3 -3
  157. package/dist/websocket/index.browser.js.map +1 -1
  158. package/dist/websocket/index.js +4 -4
  159. package/dist/websocket/index.js.map +1 -1
  160. package/package.json +160 -156
  161. package/src/api/audits/controllers/AuditController.ts +186 -0
  162. package/src/api/audits/entities/audits.ts +132 -0
  163. package/src/api/audits/index.browser.ts +18 -0
  164. package/src/api/audits/index.ts +58 -0
  165. package/src/api/audits/primitives/$audit.ts +159 -0
  166. package/src/api/audits/schemas/auditQuerySchema.ts +23 -0
  167. package/src/api/audits/schemas/auditResourceSchema.ts +9 -0
  168. package/src/api/audits/schemas/createAuditSchema.ts +27 -0
  169. package/src/api/audits/services/AuditService.ts +412 -0
  170. package/src/{api-files → api/files}/index.ts +1 -0
  171. package/src/api/parameters/controllers/ConfigController.ts +324 -0
  172. package/src/api/parameters/entities/parameters.ts +113 -0
  173. package/src/api/parameters/index.ts +60 -0
  174. package/src/api/parameters/primitives/$config.ts +351 -0
  175. package/src/api/parameters/schedulers/ConfigActivationScheduler.ts +30 -0
  176. package/src/api/parameters/services/ConfigStore.ts +491 -0
  177. package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +19 -0
  178. package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -2
  179. package/src/{api-users → api/users}/index.ts +2 -0
  180. package/src/{api-users → api/users}/primitives/$userRealm.ts +18 -3
  181. package/src/{api-users → api/users}/providers/UserRealmProvider.ts +12 -10
  182. package/src/{api-users → api/users}/services/RegistrationService.ts +2 -1
  183. package/src/{api-users → api/users}/services/SessionService.ts +4 -0
  184. package/src/{api-users → api/users}/services/UserService.ts +3 -0
  185. package/src/{api-verifications → api/verifications}/index.ts +9 -1
  186. package/src/bin/index.ts +1 -0
  187. package/src/cli/apps/AlephaPackageBuilderCli.ts +73 -48
  188. package/src/cli/assets/appRouterTs.ts +1 -1
  189. package/src/cli/assets/biomeJson.ts +2 -2
  190. package/src/cli/assets/dummySpecTs.ts +7 -0
  191. package/src/cli/assets/editorconfig.ts +13 -0
  192. package/src/cli/assets/indexHtml.ts +1 -1
  193. package/src/cli/assets/mainBrowserTs.ts +1 -1
  194. package/src/cli/assets/mainTs.ts +14 -0
  195. package/src/cli/assets/viteConfigTs.ts +1 -1
  196. package/src/cli/commands/BiomeCommands.ts +2 -0
  197. package/src/cli/commands/CoreCommands.ts +38 -15
  198. package/src/cli/commands/VerifyCommands.ts +6 -2
  199. package/src/cli/commands/ViteCommands.ts +28 -18
  200. package/src/cli/services/AlephaCliUtils.ts +243 -37
  201. package/src/command/helpers/Asker.ts +0 -1
  202. package/src/command/primitives/$command.ts +67 -0
  203. package/src/command/providers/CliProvider.ts +39 -8
  204. package/src/core/Alepha.ts +40 -30
  205. package/src/core/helpers/jsonSchemaToTypeBox.ts +307 -0
  206. package/src/core/index.shared.ts +1 -0
  207. package/src/core/index.ts +30 -3
  208. package/src/core/providers/EventManager.ts +1 -1
  209. package/src/core/providers/SchemaValidator.ts +1 -1
  210. package/src/core/providers/StateManager.ts +23 -12
  211. package/src/core/providers/TypeProvider.ts +26 -34
  212. package/src/logger/index.ts +8 -6
  213. package/src/logger/primitives/$logger.ts +1 -1
  214. package/src/logger/providers/{SimpleFormatterProvider.ts → PrettyFormatterProvider.ts} +10 -1
  215. package/src/orm/index.ts +6 -0
  216. package/src/orm/services/PgRelationManager.ts +2 -2
  217. package/src/orm/services/PostgresModelBuilder.ts +11 -7
  218. package/src/orm/services/Repository.ts +16 -7
  219. package/src/orm/services/SqliteModelBuilder.ts +10 -0
  220. package/src/queue/{index.ts → core/index.ts} +2 -3
  221. package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
  222. package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
  223. package/src/queue/core/providers/QueueProvider.ts +23 -0
  224. package/src/queue/core/providers/WorkerProvider.ts +244 -0
  225. package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
  226. package/src/{server-auth → server/auth}/primitives/$auth.ts +7 -0
  227. package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +51 -8
  228. package/src/{server-cookies → server/cookies}/index.ts +2 -1
  229. package/src/server/{index.ts → core/index.ts} +7 -0
  230. package/src/server/{primitives → core/primitives}/$action.ts +10 -1
  231. package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +11 -5
  232. package/src/server/{providers → core/providers}/ServerRouterProvider.ts +13 -7
  233. package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
  234. package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
  235. package/src/thread/primitives/$thread.ts +2 -2
  236. package/src/vite/index.ts +0 -2
  237. package/src/vite/tasks/buildServer.ts +3 -4
  238. package/src/vite/tasks/copyAssets.ts +32 -8
  239. package/src/vite/tasks/generateCloudflare.ts +35 -19
  240. package/src/vite/tasks/generateDocker.ts +18 -4
  241. package/src/vite/tasks/generateSitemap.ts +5 -7
  242. package/src/vite/tasks/generateVercel.ts +76 -41
  243. package/src/vite/tasks/runAlepha.ts +16 -1
  244. package/src/websocket/providers/NodeWebSocketServerProvider.ts +3 -11
  245. package/src/websocket/services/WebSocketClient.ts +3 -3
  246. package/dist/api-files/index.browser.js.map +0 -1
  247. package/dist/api-files/index.js.map +0 -1
  248. package/dist/api-jobs/index.browser.js.map +0 -1
  249. package/dist/api-jobs/index.js.map +0 -1
  250. package/dist/api-notifications/index.browser.js.map +0 -1
  251. package/dist/api-notifications/index.d.ts +0 -327
  252. package/dist/api-notifications/index.js.map +0 -1
  253. package/dist/api-parameters/index.browser.js +0 -29
  254. package/dist/api-parameters/index.browser.js.map +0 -1
  255. package/dist/api-parameters/index.d.ts +0 -83
  256. package/dist/api-parameters/index.js +0 -63
  257. package/dist/api-parameters/index.js.map +0 -1
  258. package/dist/api-users/index.browser.js.map +0 -1
  259. package/dist/api-users/index.js.map +0 -1
  260. package/dist/api-verifications/index.browser.js.map +0 -1
  261. package/dist/api-verifications/index.d.ts +0 -229
  262. package/dist/api-verifications/index.js.map +0 -1
  263. package/dist/cache/index.js.map +0 -1
  264. package/dist/cache-redis/index.js.map +0 -1
  265. package/dist/cli/dist-BlfFtOk2.js +0 -2770
  266. package/dist/cli/dist-BlfFtOk2.js.map +0 -1
  267. package/dist/lock/index.js.map +0 -1
  268. package/dist/lock-redis/index.js.map +0 -1
  269. package/dist/queue/index.d.ts +0 -1265
  270. package/dist/queue/index.js +0 -1037
  271. package/dist/queue/index.js.map +0 -1
  272. package/dist/queue-redis/index.d.ts +0 -82
  273. package/dist/queue-redis/index.js +0 -872
  274. package/dist/queue-redis/index.js.map +0 -1
  275. package/dist/server/index.browser.js.map +0 -1
  276. package/dist/server/index.js.map +0 -1
  277. package/dist/server-auth/index.browser.js.map +0 -1
  278. package/dist/server-auth/index.js +0 -1943
  279. package/dist/server-auth/index.js.map +0 -1
  280. package/dist/server-cache/index.js.map +0 -1
  281. package/dist/server-compress/index.js.map +0 -1
  282. package/dist/server-cookies/index.browser.js.map +0 -1
  283. package/dist/server-cookies/index.js.map +0 -1
  284. package/dist/server-cors/index.js.map +0 -1
  285. package/dist/server-health/index.js.map +0 -1
  286. package/dist/server-helmet/index.js.map +0 -1
  287. package/dist/server-links/index.browser.js.map +0 -1
  288. package/dist/server-links/index.js.map +0 -1
  289. package/dist/server-metrics/index.js +0 -4532
  290. package/dist/server-metrics/index.js.map +0 -1
  291. package/dist/server-multipart/index.js.map +0 -1
  292. package/dist/server-proxy/index.js.map +0 -1
  293. package/dist/server-rate-limit/index.js.map +0 -1
  294. package/dist/server-security/index.browser.js.map +0 -1
  295. package/dist/server-security/index.js.map +0 -1
  296. package/dist/server-static/index.js.map +0 -1
  297. package/dist/server-swagger/index.js.map +0 -1
  298. package/dist/topic/index.js.map +0 -1
  299. package/dist/topic-redis/index.js.map +0 -1
  300. package/src/api-parameters/controllers/ParameterController.ts +0 -45
  301. package/src/api-parameters/entities/parameters.ts +0 -30
  302. package/src/api-parameters/index.ts +0 -21
  303. package/src/api-parameters/primitives/$config.ts +0 -79
  304. package/src/api-parameters/services/ParameterStore.ts +0 -23
  305. package/src/queue/interfaces/QueueJob.ts +0 -459
  306. package/src/queue/providers/MemoryQueueProvider.ts +0 -850
  307. package/src/queue/providers/QueueProvider.ts +0 -319
  308. package/src/queue/providers/WorkerProvider.ts +0 -344
  309. package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
  310. /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
  311. /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
  312. /package/src/{api-files → api/files}/entities/files.ts +0 -0
  313. /package/src/{api-files → api/files}/index.browser.ts +0 -0
  314. /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
  315. /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
  316. /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
  317. /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
  318. /package/src/{api-files → api/files}/services/FileService.ts +0 -0
  319. /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
  320. /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
  321. /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
  322. /package/src/{api-jobs → api/jobs}/index.ts +0 -0
  323. /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
  324. /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
  325. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
  326. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
  327. /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
  328. /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
  329. /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
  330. /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
  331. /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
  332. /package/src/{api-notifications → api/notifications}/index.ts +0 -0
  333. /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
  334. /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
  335. /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
  336. /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
  337. /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
  338. /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
  339. /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
  340. /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
  341. /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
  342. /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
  343. /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
  344. /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
  345. /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
  346. /package/src/{api-users → api/users}/entities/identities.ts +0 -0
  347. /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
  348. /package/src/{api-users → api/users}/entities/users.ts +0 -0
  349. /package/src/{api-users → api/users}/index.browser.ts +0 -0
  350. /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
  351. /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
  352. /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
  353. /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
  354. /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
  355. /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
  356. /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
  357. /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
  358. /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
  359. /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
  360. /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
  361. /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
  362. /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
  363. /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
  364. /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
  365. /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
  366. /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
  367. /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
  368. /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
  369. /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
  370. /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
  371. /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
  372. /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
  373. /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
  374. /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
  375. /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
  376. /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
  377. /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
  378. /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
  379. /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
  380. /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
  381. /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
  382. /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
  383. /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
  384. /package/src/cache/{index.ts → core/index.ts} +0 -0
  385. /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
  386. /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
  387. /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
  388. /package/src/{cache-redis → cache/redis}/index.ts +0 -0
  389. /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
  390. /package/src/lock/{index.ts → core/index.ts} +0 -0
  391. /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
  392. /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
  393. /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
  394. /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
  395. /package/src/{lock-redis → lock/redis}/index.ts +0 -0
  396. /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
  397. /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
  398. /package/src/{queue-redis → queue/redis}/index.ts +0 -0
  399. /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
  400. /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
  401. /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
  402. /package/src/{server-auth → server/auth}/index.ts +0 -0
  403. /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
  404. /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
  405. /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
  406. /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
  407. /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
  408. /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
  409. /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
  410. /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
  411. /package/src/{server-cache → server/cache}/index.ts +0 -0
  412. /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
  413. /package/src/{server-compress → server/compress}/index.ts +0 -0
  414. /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
  415. /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
  416. /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
  417. /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
  418. /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
  419. /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
  420. /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
  421. /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
  422. /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
  423. /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
  424. /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
  425. /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
  426. /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
  427. /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
  428. /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
  429. /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
  430. /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
  431. /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
  432. /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
  433. /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
  434. /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
  435. /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
  436. /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
  437. /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
  438. /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
  439. /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
  440. /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
  441. /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
  442. /package/src/server/{services → core/services}/HttpClient.ts +0 -0
  443. /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
  444. /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
  445. /package/src/{server-cors → server/cors}/index.ts +0 -0
  446. /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
  447. /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
  448. /package/src/{server-health → server/health}/index.ts +0 -0
  449. /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
  450. /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
  451. /package/src/{server-helmet → server/helmet}/index.ts +0 -0
  452. /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
  453. /package/src/{server-links → server/links}/index.browser.ts +0 -0
  454. /package/src/{server-links → server/links}/index.ts +0 -0
  455. /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
  456. /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
  457. /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
  458. /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
  459. /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
  460. /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
  461. /package/src/{server-metrics → server/metrics}/index.ts +0 -0
  462. /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
  463. /package/src/{server-multipart → server/multipart}/index.ts +0 -0
  464. /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
  465. /package/src/{server-proxy → server/proxy}/index.ts +0 -0
  466. /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
  467. /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
  468. /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
  469. /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
  470. /package/src/{server-security → server/security}/index.browser.ts +0 -0
  471. /package/src/{server-security → server/security}/index.ts +0 -0
  472. /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
  473. /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
  474. /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
  475. /package/src/{server-static → server/static}/index.ts +0 -0
  476. /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
  477. /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
  478. /package/src/{server-swagger → server/swagger}/index.ts +0 -0
  479. /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
  480. /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
  481. /package/src/topic/{index.ts → core/index.ts} +0 -0
  482. /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
  483. /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
  484. /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
  485. /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
  486. /package/src/{topic-redis → topic/redis}/index.ts +0 -0
  487. /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
@@ -5,7 +5,6 @@ import { AlephaEmail } from "alepha/email";
5
5
  import { $entity, $repository, pageQuerySchema, parseQueryString, pg } from "alepha/orm";
6
6
  import { $action, BadRequestError, ConflictError, HttpError, UnauthorizedError, okSchema } from "alepha/server";
7
7
  import { $logger } from "alepha/logger";
8
- import { DEFAULT_USER_REALM_NAME as DEFAULT_USER_REALM_NAME$1, realmAuthSettingsAtom as realmAuthSettingsAtom$1 } from "alepha/api/users";
9
8
  import { $bucket } from "alepha/bucket";
10
9
  import { randomInt, randomUUID } from "node:crypto";
11
10
  import { $cache } from "alepha/cache";
@@ -14,16 +13,18 @@ import { $realm, CryptoProvider, InvalidCredentialsError, SecurityProvider } fro
14
13
  import { $client } from "alepha/server/links";
15
14
  import { $authCredentials, $authGithub, $authGoogle, ServerAuthProvider, authenticationProviderSchema } from "alepha/server/auth";
16
15
  import { FileSystemProvider } from "alepha/file";
16
+ import { AlephaApiAudits } from "alepha/api/audits";
17
17
  import { AlephaApiFiles } from "alepha/api/files";
18
+ import { AlephaApiJobs } from "alepha/api/jobs";
18
19
 
19
- //#region ../../src/api-users/schemas/identityQuerySchema.ts
20
+ //#region ../../src/api/users/schemas/identityQuerySchema.ts
20
21
  const identityQuerySchema = t.extend(pageQuerySchema, {
21
22
  userId: t.optional(t.uuid()),
22
23
  provider: t.optional(t.string())
23
24
  });
24
25
 
25
26
  //#endregion
26
- //#region ../../src/api-users/entities/users.ts
27
+ //#region ../../src/api/users/entities/users.ts
27
28
  const DEFAULT_USER_REALM_NAME = "default";
28
29
  const users = $entity({
29
30
  name: "users",
@@ -64,7 +65,7 @@ const users = $entity({
64
65
  });
65
66
 
66
67
  //#endregion
67
- //#region ../../src/api-users/entities/identities.ts
68
+ //#region ../../src/api/users/entities/identities.ts
68
69
  const identities = $entity({
69
70
  name: "identities",
70
71
  schema: t.object({
@@ -81,11 +82,66 @@ const identities = $entity({
81
82
  });
82
83
 
83
84
  //#endregion
84
- //#region ../../src/api-users/schemas/identityResourceSchema.ts
85
+ //#region ../../src/api/users/schemas/identityResourceSchema.ts
85
86
  const identityResourceSchema = t.omit(identities.schema, ["password"]);
86
87
 
87
88
  //#endregion
88
- //#region ../../src/api-users/entities/sessions.ts
89
+ //#region ../../src/api/users/atoms/realmAuthSettingsAtom.ts
90
+ const realmAuthSettingsAtom = $atom({
91
+ name: "alepha.api.users.realmAuthSettings",
92
+ schema: t.object({
93
+ displayName: t.optional(t.string({ description: "Display name shown on auth pages (e.g., 'Customer Portal')" })),
94
+ description: t.optional(t.string({ description: "Description shown on auth pages" })),
95
+ logoUrl: t.optional(t.string({ description: "Logo URL for auth pages" })),
96
+ registrationAllowed: t.boolean({ description: "Enable user self-registration" }),
97
+ emailEnabled: t.boolean({ description: "Enable email address as a login/registration credential" }),
98
+ emailRequired: t.boolean({ description: "Require email address for user accounts" }),
99
+ usernameEnabled: t.boolean({ description: "Enable username as a login/registration credential" }),
100
+ usernameRequired: t.boolean({ description: "Require username for user accounts" }),
101
+ phoneEnabled: t.boolean({ description: "Enable phone number as a login/registration credential" }),
102
+ phoneRequired: t.boolean({ description: "Require phone number for user accounts" }),
103
+ verifyEmailRequired: t.boolean({ description: "Require email verification for user accounts" }),
104
+ verifyPhoneRequired: t.boolean({ description: "Require phone verification for user accounts" }),
105
+ firstNameLastNameEnabled: t.boolean({ description: "Enable first and last name for user accounts" }),
106
+ firstNameLastNameRequired: t.boolean({ description: "Require first and last name for user accounts" }),
107
+ resetPasswordAllowed: t.boolean({ description: "Enable forgot password functionality" }),
108
+ passwordPolicy: t.object({
109
+ minLength: t.integer({
110
+ description: "Minimum password length",
111
+ default: 8,
112
+ minimum: 1
113
+ }),
114
+ requireUppercase: t.boolean({ description: "Require at least one uppercase letter" }),
115
+ requireLowercase: t.boolean({ description: "Require at least one lowercase letter" }),
116
+ requireNumbers: t.boolean({ description: "Require at least one number" }),
117
+ requireSpecialCharacters: t.boolean({ description: "Require at least one special character" })
118
+ })
119
+ }),
120
+ default: {
121
+ registrationAllowed: true,
122
+ emailEnabled: true,
123
+ emailRequired: true,
124
+ usernameEnabled: false,
125
+ usernameRequired: false,
126
+ phoneEnabled: false,
127
+ phoneRequired: false,
128
+ verifyEmailRequired: false,
129
+ verifyPhoneRequired: false,
130
+ resetPasswordAllowed: false,
131
+ firstNameLastNameEnabled: false,
132
+ firstNameLastNameRequired: false,
133
+ passwordPolicy: {
134
+ minLength: 8,
135
+ requireUppercase: true,
136
+ requireLowercase: true,
137
+ requireNumbers: true,
138
+ requireSpecialCharacters: false
139
+ }
140
+ }
141
+ });
142
+
143
+ //#endregion
144
+ //#region ../../src/api/users/entities/sessions.ts
89
145
  const sessions = $entity({
90
146
  name: "sessions",
91
147
  schema: t.object({
@@ -110,7 +166,7 @@ const sessions = $entity({
110
166
  });
111
167
 
112
168
  //#endregion
113
- //#region ../../src/api-users/providers/UserRealmProvider.ts
169
+ //#region ../../src/api/users/providers/UserRealmProvider.ts
114
170
  var UserRealmProvider = class {
115
171
  alepha = $inject(Alepha);
116
172
  defaultIdentities = $repository(identities);
@@ -145,10 +201,10 @@ var UserRealmProvider = class {
145
201
  users: userRealmOptions.entities?.users ?? this.defaultUsers
146
202
  },
147
203
  settings: {
148
- ...realmAuthSettingsAtom$1.options.default,
204
+ ...realmAuthSettingsAtom.options.default,
149
205
  ...userRealmOptions.settings,
150
206
  passwordPolicy: {
151
- ...realmAuthSettingsAtom$1.options.default.passwordPolicy,
207
+ ...realmAuthSettingsAtom.options.default.passwordPolicy,
152
208
  ...userRealmOptions.settings?.passwordPolicy
153
209
  }
154
210
  }
@@ -158,27 +214,29 @@ var UserRealmProvider = class {
158
214
  /**
159
215
  * Gets a registered realm by name, auto-creating default if needed.
160
216
  */
161
- getRealm(userRealmName = DEFAULT_USER_REALM_NAME$1) {
217
+ getRealm(userRealmName = DEFAULT_USER_REALM_NAME) {
162
218
  let realm = this.realms.get(userRealmName);
163
- if (!realm) if (userRealmName === DEFAULT_USER_REALM_NAME$1) {
164
- this.register(userRealmName);
165
- realm = this.realms.get(userRealmName);
166
- } else throw new AlephaError(`Missing user realm '${userRealmName}', please declare $userRealm in your application.`);
219
+ if (!realm) {
220
+ const firstRealm = Array.from(this.realms.values())[0];
221
+ if (userRealmName === DEFAULT_USER_REALM_NAME && firstRealm) realm = firstRealm;
222
+ else if (this.alepha.isTest()) realm = this.register(userRealmName);
223
+ else throw new AlephaError(`Missing user realm '${userRealmName}', please declare $userRealm in your application.`);
224
+ }
167
225
  return realm;
168
226
  }
169
- identityRepository(userRealmName = DEFAULT_USER_REALM_NAME$1) {
227
+ identityRepository(userRealmName = DEFAULT_USER_REALM_NAME) {
170
228
  return this.getRealm(userRealmName).repositories.identities;
171
229
  }
172
- sessionRepository(userRealmName = DEFAULT_USER_REALM_NAME$1) {
230
+ sessionRepository(userRealmName = DEFAULT_USER_REALM_NAME) {
173
231
  return this.getRealm(userRealmName).repositories.sessions;
174
232
  }
175
- userRepository(userRealmName = DEFAULT_USER_REALM_NAME$1) {
233
+ userRepository(userRealmName = DEFAULT_USER_REALM_NAME) {
176
234
  return this.getRealm(userRealmName).repositories.users;
177
235
  }
178
236
  };
179
237
 
180
238
  //#endregion
181
- //#region ../../src/api-users/services/IdentityService.ts
239
+ //#region ../../src/api/users/services/IdentityService.ts
182
240
  var IdentityService = class {
183
241
  log = $logger();
184
242
  userRealmProvider = $inject(UserRealmProvider);
@@ -239,7 +297,7 @@ var IdentityService = class {
239
297
  };
240
298
 
241
299
  //#endregion
242
- //#region ../../src/api-users/controllers/IdentityController.ts
300
+ //#region ../../src/api/users/controllers/IdentityController.ts
243
301
  var IdentityController = class {
244
302
  url = "/identities";
245
303
  group = "identities";
@@ -298,11 +356,11 @@ var IdentityController = class {
298
356
  };
299
357
 
300
358
  //#endregion
301
- //#region ../../src/api-users/schemas/sessionQuerySchema.ts
359
+ //#region ../../src/api/users/schemas/sessionQuerySchema.ts
302
360
  const sessionQuerySchema = t.extend(pageQuerySchema, { userId: t.optional(t.uuid()) });
303
361
 
304
362
  //#endregion
305
- //#region ../../src/api-users/schemas/sessionResourceSchema.ts
363
+ //#region ../../src/api/users/schemas/sessionResourceSchema.ts
306
364
  const sessionResourceSchema = t.object({
307
365
  id: t.uuid(),
308
366
  version: t.number(),
@@ -324,7 +382,7 @@ const sessionResourceSchema = t.object({
324
382
  });
325
383
 
326
384
  //#endregion
327
- //#region ../../src/api-users/services/SessionCrudService.ts
385
+ //#region ../../src/api/users/services/SessionCrudService.ts
328
386
  var SessionCrudService = class {
329
387
  log = $logger();
330
388
  userRealmProvider = $inject(UserRealmProvider);
@@ -379,7 +437,7 @@ var SessionCrudService = class {
379
437
  };
380
438
 
381
439
  //#endregion
382
- //#region ../../src/api-users/controllers/SessionController.ts
440
+ //#region ../../src/api/users/controllers/SessionController.ts
383
441
  var SessionController = class {
384
442
  url = "/sessions";
385
443
  group = "sessions";
@@ -438,7 +496,7 @@ var SessionController = class {
438
496
  };
439
497
 
440
498
  //#endregion
441
- //#region ../../src/api-users/schemas/completePasswordResetRequestSchema.ts
499
+ //#region ../../src/api/users/schemas/completePasswordResetRequestSchema.ts
442
500
  /**
443
501
  * Request schema for completing a password reset.
444
502
  *
@@ -455,7 +513,7 @@ const completePasswordResetRequestSchema = t.object({
455
513
  });
456
514
 
457
515
  //#endregion
458
- //#region ../../src/api-users/schemas/completeRegistrationRequestSchema.ts
516
+ //#region ../../src/api/users/schemas/completeRegistrationRequestSchema.ts
459
517
  const completeRegistrationRequestSchema = t.object({
460
518
  intentId: t.uuid({ description: "The registration intent ID from the first phase" }),
461
519
  emailCode: t.optional(t.string({ description: "Email verification code (if email verification required)" })),
@@ -464,11 +522,11 @@ const completeRegistrationRequestSchema = t.object({
464
522
  });
465
523
 
466
524
  //#endregion
467
- //#region ../../src/api-users/schemas/createUserSchema.ts
525
+ //#region ../../src/api/users/schemas/createUserSchema.ts
468
526
  const createUserSchema = t.omit(users.insertSchema, ["realm"]);
469
527
 
470
528
  //#endregion
471
- //#region ../../src/api-users/schemas/passwordResetIntentResponseSchema.ts
529
+ //#region ../../src/api/users/schemas/passwordResetIntentResponseSchema.ts
472
530
  /**
473
531
  * Response schema for password reset intent creation.
474
532
  *
@@ -481,7 +539,7 @@ const passwordResetIntentResponseSchema = t.object({
481
539
  });
482
540
 
483
541
  //#endregion
484
- //#region ../../src/api-users/schemas/registerQuerySchema.ts
542
+ //#region ../../src/api/users/schemas/registerQuerySchema.ts
485
543
  /**
486
544
  * Schema for user registration query parameters.
487
545
  * Allows specifying a custom user realm.
@@ -489,7 +547,7 @@ const passwordResetIntentResponseSchema = t.object({
489
547
  const registerQuerySchema = t.object({ userRealmName: t.optional(t.text({ description: "The user realm to register the user in (defaults to 'default')" })) });
490
548
 
491
549
  //#endregion
492
- //#region ../../src/api-users/schemas/registerRequestSchema.ts
550
+ //#region ../../src/api/users/schemas/registerRequestSchema.ts
493
551
  /**
494
552
  * Schema for user registration request body.
495
553
  * Password is always required, other fields depend on realm settings.
@@ -514,7 +572,7 @@ const registerRequestSchema = t.object({
514
572
  });
515
573
 
516
574
  //#endregion
517
- //#region ../../src/api-users/schemas/registrationIntentResponseSchema.ts
575
+ //#region ../../src/api/users/schemas/registrationIntentResponseSchema.ts
518
576
  const registrationIntentResponseSchema = t.object({
519
577
  intentId: t.uuid({ description: "Unique identifier for the registration intent" }),
520
578
  expectCaptcha: t.boolean({ description: "Whether captcha verification is required" }),
@@ -524,7 +582,7 @@ const registrationIntentResponseSchema = t.object({
524
582
  });
525
583
 
526
584
  //#endregion
527
- //#region ../../src/api-users/schemas/updateUserSchema.ts
585
+ //#region ../../src/api/users/schemas/updateUserSchema.ts
528
586
  const updateUserSchema = t.partial(t.omit(users.insertSchema, [
529
587
  "id",
530
588
  "version",
@@ -535,7 +593,7 @@ const updateUserSchema = t.partial(t.omit(users.insertSchema, [
535
593
  ]));
536
594
 
537
595
  //#endregion
538
- //#region ../../src/api-users/schemas/userQuerySchema.ts
596
+ //#region ../../src/api/users/schemas/userQuerySchema.ts
539
597
  const userQuerySchema = t.extend(pageQuerySchema, {
540
598
  email: t.optional(t.string()),
541
599
  enabled: t.optional(t.boolean()),
@@ -545,11 +603,11 @@ const userQuerySchema = t.extend(pageQuerySchema, {
545
603
  });
546
604
 
547
605
  //#endregion
548
- //#region ../../src/api-users/schemas/userResourceSchema.ts
606
+ //#region ../../src/api/users/schemas/userResourceSchema.ts
549
607
  const userResourceSchema = users.schema;
550
608
 
551
609
  //#endregion
552
- //#region ../../src/api-users/notifications/UserNotifications.ts
610
+ //#region ../../src/api/users/notifications/UserNotifications.ts
553
611
  var UserNotifications = class {
554
612
  passwordReset = $notification({
555
613
  category: "security",
@@ -678,7 +736,7 @@ var UserNotifications = class {
678
736
  };
679
737
 
680
738
  //#endregion
681
- //#region ../../src/api-users/services/CredentialService.ts
739
+ //#region ../../src/api/users/services/CredentialService.ts
682
740
  const INTENT_TTL_MINUTES$1 = 10;
683
741
  var CredentialService = class {
684
742
  log = $logger();
@@ -861,7 +919,7 @@ var CredentialService = class {
861
919
  };
862
920
 
863
921
  //#endregion
864
- //#region ../../src/api-users/services/RegistrationService.ts
922
+ //#region ../../src/api/users/services/RegistrationService.ts
865
923
  const INTENT_TTL_MINUTES = 10;
866
924
  var RegistrationService = class {
867
925
  log = $logger();
@@ -990,6 +1048,7 @@ var RegistrationService = class {
990
1048
  }, userRealmName);
991
1049
  await this.intentCache.invalidate(body.intentId);
992
1050
  const user = await userRepository.create({
1051
+ realm: userRealmName,
993
1052
  username: intent.data.username,
994
1053
  email: intent.data.email,
995
1054
  phoneNumber: intent.data.phoneNumber,
@@ -1056,10 +1115,7 @@ var RegistrationService = class {
1056
1115
  });
1057
1116
  this.log.debug("Email verification code sent", { email });
1058
1117
  } catch (error) {
1059
- this.log.warn("Failed to send email verification code", {
1060
- email,
1061
- error
1062
- });
1118
+ this.log.warn("Failed to send email verification code", error);
1063
1119
  }
1064
1120
  }
1065
1121
  /**
@@ -1127,7 +1183,7 @@ var RegistrationService = class {
1127
1183
  };
1128
1184
 
1129
1185
  //#endregion
1130
- //#region ../../src/api-users/services/UserService.ts
1186
+ //#region ../../src/api/users/services/UserService.ts
1131
1187
  var UserService = class {
1132
1188
  log = $logger();
1133
1189
  verificationController = $client();
@@ -1290,6 +1346,7 @@ var UserService = class {
1290
1346
  email: data.email,
1291
1347
  userRealmName
1292
1348
  });
1349
+ const realm = this.userRealmProvider.getRealm(userRealmName);
1293
1350
  if (data.username) {
1294
1351
  if (await this.users(userRealmName).findOne({ where: { username: { eq: data.username } } }).catch(() => void 0)) {
1295
1352
  this.log.debug("Username already taken", { username: data.username });
@@ -1310,7 +1367,8 @@ var UserService = class {
1310
1367
  }
1311
1368
  const user = await this.users(userRealmName).create({
1312
1369
  ...data,
1313
- roles: data.roles ?? ["user"]
1370
+ roles: data.roles ?? ["user"],
1371
+ realm: realm.name
1314
1372
  });
1315
1373
  this.log.info("User created", {
1316
1374
  userId: user.id,
@@ -1347,7 +1405,7 @@ var UserService = class {
1347
1405
  };
1348
1406
 
1349
1407
  //#endregion
1350
- //#region ../../src/api-users/controllers/UserController.ts
1408
+ //#region ../../src/api/users/controllers/UserController.ts
1351
1409
  var UserController = class {
1352
1410
  url = "/users";
1353
1411
  group = "users";
@@ -1652,59 +1710,7 @@ var UserController = class {
1652
1710
  };
1653
1711
 
1654
1712
  //#endregion
1655
- //#region ../../src/api-users/atoms/realmAuthSettingsAtom.ts
1656
- const realmAuthSettingsAtom = $atom({
1657
- name: "alepha.api.users.realmAuthSettings",
1658
- schema: t.object({
1659
- registrationAllowed: t.boolean({ description: "Enable user self-registration" }),
1660
- emailEnabled: t.boolean({ description: "Enable email address as a login/registration credential" }),
1661
- emailRequired: t.boolean({ description: "Require email address for user accounts" }),
1662
- usernameEnabled: t.boolean({ description: "Enable username as a login/registration credential" }),
1663
- usernameRequired: t.boolean({ description: "Require username for user accounts" }),
1664
- phoneEnabled: t.boolean({ description: "Enable phone number as a login/registration credential" }),
1665
- phoneRequired: t.boolean({ description: "Require phone number for user accounts" }),
1666
- verifyEmailRequired: t.boolean({ description: "Require email verification for user accounts" }),
1667
- verifyPhoneRequired: t.boolean({ description: "Require phone verification for user accounts" }),
1668
- firstNameLastNameEnabled: t.boolean({ description: "Enable first and last name for user accounts" }),
1669
- firstNameLastNameRequired: t.boolean({ description: "Require first and last name for user accounts" }),
1670
- resetPasswordAllowed: t.boolean({ description: "Enable forgot password functionality" }),
1671
- passwordPolicy: t.object({
1672
- minLength: t.integer({
1673
- description: "Minimum password length",
1674
- default: 8,
1675
- minimum: 1
1676
- }),
1677
- requireUppercase: t.boolean({ description: "Require at least one uppercase letter" }),
1678
- requireLowercase: t.boolean({ description: "Require at least one lowercase letter" }),
1679
- requireNumbers: t.boolean({ description: "Require at least one number" }),
1680
- requireSpecialCharacters: t.boolean({ description: "Require at least one special character" })
1681
- })
1682
- }),
1683
- default: {
1684
- registrationAllowed: true,
1685
- emailEnabled: true,
1686
- emailRequired: true,
1687
- usernameEnabled: false,
1688
- usernameRequired: false,
1689
- phoneEnabled: false,
1690
- phoneRequired: false,
1691
- verifyEmailRequired: false,
1692
- verifyPhoneRequired: false,
1693
- resetPasswordAllowed: false,
1694
- firstNameLastNameEnabled: false,
1695
- firstNameLastNameRequired: false,
1696
- passwordPolicy: {
1697
- minLength: 8,
1698
- requireUppercase: true,
1699
- requireLowercase: true,
1700
- requireNumbers: true,
1701
- requireSpecialCharacters: false
1702
- }
1703
- }
1704
- });
1705
-
1706
- //#endregion
1707
- //#region ../../src/api-users/schemas/userRealmConfigSchema.ts
1713
+ //#region ../../src/api/users/schemas/userRealmConfigSchema.ts
1708
1714
  const userRealmConfigSchema = t.object({
1709
1715
  settings: realmAuthSettingsAtom.schema,
1710
1716
  realmName: t.string(),
@@ -1712,7 +1718,7 @@ const userRealmConfigSchema = t.object({
1712
1718
  });
1713
1719
 
1714
1720
  //#endregion
1715
- //#region ../../src/api-users/controllers/UserRealmController.ts
1721
+ //#region ../../src/api/users/controllers/UserRealmController.ts
1716
1722
  /**
1717
1723
  * Controller for exposing realm configuration.
1718
1724
  * Uses $route instead of $action to keep endpoints hidden from API documentation.
@@ -1721,7 +1727,6 @@ var UserRealmController = class {
1721
1727
  url = "/realms";
1722
1728
  userRealmProvider = $inject(UserRealmProvider);
1723
1729
  serverAuthProvider = $inject(ServerAuthProvider);
1724
- cryptoProvider = $inject(CryptoProvider);
1725
1730
  /**
1726
1731
  * Get realm configuration settings.
1727
1732
  * This endpoint is not exposed in the API documentation.
@@ -1763,7 +1768,7 @@ var UserRealmController = class {
1763
1768
  };
1764
1769
 
1765
1770
  //#endregion
1766
- //#region ../../src/api-users/services/SessionService.ts
1771
+ //#region ../../src/api/users/services/SessionService.ts
1767
1772
  var SessionService = class {
1768
1773
  alepha = $inject(Alepha);
1769
1774
  fsp = $inject(FileSystemProvider);
@@ -1808,7 +1813,8 @@ var SessionService = class {
1808
1813
  else {
1809
1814
  this.log.warn("Invalid login identifier format", {
1810
1815
  provider,
1811
- username
1816
+ username,
1817
+ realm: name
1812
1818
  });
1813
1819
  throw new InvalidCredentialsError();
1814
1820
  }
@@ -1816,7 +1822,8 @@ var SessionService = class {
1816
1822
  if (!user) {
1817
1823
  this.log.warn("User not found during login attempt", {
1818
1824
  provider,
1819
- username
1825
+ username,
1826
+ realm: name
1820
1827
  });
1821
1828
  throw new InvalidCredentialsError();
1822
1829
  }
@@ -1829,14 +1836,16 @@ var SessionService = class {
1829
1836
  this.log.error("Identity has no password configured", {
1830
1837
  provider,
1831
1838
  username,
1832
- identityId: identity.id
1839
+ identityId: identity.id,
1840
+ realm: name
1833
1841
  });
1834
1842
  throw new InvalidCredentialsError();
1835
1843
  }
1836
1844
  if (!await this.cryptoProvider.verifyPassword(password, storedPassword)) {
1837
1845
  this.log.warn("Invalid password during login attempt", {
1838
1846
  provider,
1839
- username
1847
+ username,
1848
+ realm: name
1840
1849
  });
1841
1850
  throw new InvalidCredentialsError();
1842
1851
  }
@@ -1986,7 +1995,7 @@ var SessionService = class {
1986
1995
  };
1987
1996
 
1988
1997
  //#endregion
1989
- //#region ../../src/api-users/primitives/$userRealm.ts
1998
+ //#region ../../src/api/users/primitives/$userRealm.ts
1990
1999
  /**
1991
2000
  * Already configured realm for user management.
1992
2001
  *
@@ -2007,8 +2016,9 @@ const $userRealm = (options = {}) => {
2007
2016
  const userRealmProvider = alepha.inject(UserRealmProvider);
2008
2017
  const name = options.realm?.name ?? DEFAULT_USER_REALM_NAME;
2009
2018
  const userRealm = userRealmProvider.register(name, options);
2010
- if (options.modules?.audits) {}
2019
+ if (options.modules?.audits) alepha.with(AlephaApiAudits);
2011
2020
  if (options.modules?.files) alepha.with(AlephaApiFiles);
2021
+ if (options.modules?.jobs) alepha.with(AlephaApiJobs);
2012
2022
  const realm = $realm({
2013
2023
  ...options.realm,
2014
2024
  name,
@@ -2040,10 +2050,12 @@ const $userRealm = (options = {}) => {
2040
2050
  }
2041
2051
  });
2042
2052
  realm.link = (name$1) => {
2043
- return (ctx) => sessionService.link(name$1, ctx.user);
2053
+ return (ctx) => sessionService.link(name$1, ctx.user, realm.name);
2044
2054
  };
2045
2055
  realm.login = (name$1) => {
2046
- return (credentials) => sessionService.login(name$1, credentials.username, credentials.password);
2056
+ return (credentials) => {
2057
+ return sessionService.login(name$1, credentials.username, credentials.password, realm.name);
2058
+ };
2047
2059
  };
2048
2060
  const identities$1 = options.identities ?? { credentials: true };
2049
2061
  if (identities$1) {
@@ -2058,7 +2070,7 @@ const $userRealm = (options = {}) => {
2058
2070
  };
2059
2071
 
2060
2072
  //#endregion
2061
- //#region ../../src/api-users/schemas/loginSchema.ts
2073
+ //#region ../../src/api/users/schemas/loginSchema.ts
2062
2074
  const loginSchema = t.object({
2063
2075
  username: t.text({
2064
2076
  minLength: 3,
@@ -2072,7 +2084,7 @@ const loginSchema = t.object({
2072
2084
  });
2073
2085
 
2074
2086
  //#endregion
2075
- //#region ../../src/api-users/schemas/registerSchema.ts
2087
+ //#region ../../src/api/users/schemas/registerSchema.ts
2076
2088
  const registerSchema = t.object({
2077
2089
  username: t.string({
2078
2090
  minLength: 3,
@@ -2100,7 +2112,7 @@ const registerSchema = t.object({
2100
2112
  });
2101
2113
 
2102
2114
  //#endregion
2103
- //#region ../../src/api-users/schemas/resetPasswordSchema.ts
2115
+ //#region ../../src/api/users/schemas/resetPasswordSchema.ts
2104
2116
  const resetPasswordRequestSchema = t.object({ email: t.email({ description: "Email address to send password reset link" }) });
2105
2117
  const resetPasswordSchema = t.object({
2106
2118
  token: t.string({ description: "Password reset token from email" }),
@@ -2115,7 +2127,7 @@ const resetPasswordSchema = t.object({
2115
2127
  });
2116
2128
 
2117
2129
  //#endregion
2118
- //#region ../../src/api-users/index.ts
2130
+ //#region ../../src/api/users/index.ts
2119
2131
  /**
2120
2132
  * Provides user management API endpoints for Alepha applications.
2121
2133
  *
@@ -2140,7 +2152,8 @@ const AlephaApiUsers = $module({
2140
2152
  UserController,
2141
2153
  SessionController,
2142
2154
  IdentityController,
2143
- UserRealmController
2155
+ UserRealmController,
2156
+ UserNotifications
2144
2157
  ]
2145
2158
  });
2146
2159