alepha 0.13.7 → 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 (424) 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 → api/audits}/index.browser.js +4 -4
  6. package/dist/api/audits/index.browser.js.map +1 -0
  7. package/dist/{api-audits → api/audits}/index.d.ts +8 -8
  8. package/dist/{api-audits → api/audits}/index.js +8 -8
  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 → api/parameters}/index.browser.js +2 -2
  26. package/dist/api/parameters/index.browser.js.map +1 -0
  27. package/dist/{api-parameters → api/parameters}/index.d.ts +7 -7
  28. package/dist/{api-parameters → api/parameters}/index.js +7 -7
  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 +844 -845
  33. package/dist/{api-users → api/users}/index.js +99 -766
  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 +11 -11
  39. package/dist/api/verifications/index.js.map +1 -0
  40. package/dist/cache/{index.d.ts → core/index.d.ts} +4 -4
  41. package/dist/cache/{index.js → core/index.js} +5 -5
  42. package/dist/cache/core/index.js.map +1 -0
  43. package/dist/{cache-redis → cache/redis}/index.d.ts +2 -2
  44. package/dist/{cache-redis → cache/redis}/index.js +2 -2
  45. package/dist/cache/redis/index.js.map +1 -0
  46. package/dist/cli/index.d.ts +34 -26
  47. package/dist/cli/index.js +75 -46
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/command/index.d.ts +4 -4
  50. package/dist/core/index.browser.js.map +1 -1
  51. package/dist/core/index.js.map +1 -1
  52. package/dist/core/index.native.js.map +1 -1
  53. package/dist/lock/{index.d.ts → core/index.d.ts} +5 -5
  54. package/dist/lock/{index.js → core/index.js} +5 -5
  55. package/dist/lock/core/index.js.map +1 -0
  56. package/dist/{lock-redis → lock/redis}/index.d.ts +2 -2
  57. package/dist/{lock-redis → lock/redis}/index.js +2 -2
  58. package/dist/lock/redis/index.js.map +1 -0
  59. package/dist/queue/core/index.d.ts +548 -0
  60. package/dist/queue/core/index.js +391 -0
  61. package/dist/queue/core/index.js.map +1 -0
  62. package/dist/queue/redis/index.d.ts +28 -0
  63. package/dist/queue/redis/index.js +43 -0
  64. package/dist/queue/redis/index.js.map +1 -0
  65. package/dist/scheduler/index.d.ts +1 -1
  66. package/dist/scheduler/index.js +1 -393
  67. package/dist/scheduler/index.js.map +1 -1
  68. package/dist/security/index.d.ts +1 -1
  69. package/dist/security/index.js +2 -1413
  70. package/dist/security/index.js.map +1 -1
  71. package/dist/{server-auth → server/auth}/index.browser.js +6 -6
  72. package/dist/server/auth/index.browser.js.map +1 -0
  73. package/dist/{server-auth → server/auth}/index.d.ts +167 -167
  74. package/dist/server/auth/index.js +742 -0
  75. package/dist/server/auth/index.js.map +1 -0
  76. package/dist/{server-cache → server/cache}/index.d.ts +2 -2
  77. package/dist/{server-cache → server/cache}/index.js +2 -2
  78. package/dist/server/cache/index.js.map +1 -0
  79. package/dist/{server-compress → server/compress}/index.d.ts +2 -2
  80. package/dist/{server-compress → server/compress}/index.js +2 -2
  81. package/dist/server/compress/index.js.map +1 -0
  82. package/dist/{server-cookies → server/cookies}/index.browser.js +3 -3
  83. package/dist/server/cookies/index.browser.js.map +1 -0
  84. package/dist/{server-cookies → server/cookies}/index.d.ts +4 -4
  85. package/dist/{server-cookies → server/cookies}/index.js +4 -4
  86. package/dist/server/cookies/index.js.map +1 -0
  87. package/dist/server/{index.browser.js → core/index.browser.js} +14 -14
  88. package/dist/server/core/index.browser.js.map +1 -0
  89. package/dist/server/{index.d.ts → core/index.d.ts} +36 -36
  90. package/dist/server/{index.js → core/index.js} +27 -27
  91. package/dist/server/core/index.js.map +1 -0
  92. package/dist/{server-cors → server/cors}/index.d.ts +3 -3
  93. package/dist/{server-cors → server/cors}/index.js +3 -3
  94. package/dist/server/cors/index.js.map +1 -0
  95. package/dist/{server-health → server/health}/index.d.ts +3 -3
  96. package/dist/{server-health → server/health}/index.js +3 -3
  97. package/dist/server/health/index.js.map +1 -0
  98. package/dist/{server-helmet → server/helmet}/index.d.ts +2 -2
  99. package/dist/{server-helmet → server/helmet}/index.js +2 -2
  100. package/dist/server/helmet/index.js.map +1 -0
  101. package/dist/{server-links → server/links}/index.browser.js +5 -5
  102. package/dist/server/links/index.browser.js.map +1 -0
  103. package/dist/{server-links → server/links}/index.d.ts +7 -7
  104. package/dist/{server-links → server/links}/index.js +7 -7
  105. package/dist/server/links/index.js.map +1 -0
  106. package/dist/{server-metrics → server/metrics}/index.d.ts +2 -2
  107. package/dist/server/metrics/index.js +74 -0
  108. package/dist/server/metrics/index.js.map +1 -0
  109. package/dist/{server-multipart → server/multipart}/index.d.ts +2 -2
  110. package/dist/{server-multipart → server/multipart}/index.js +2 -2
  111. package/dist/server/multipart/index.js.map +1 -0
  112. package/dist/{server-proxy → server/proxy}/index.d.ts +3 -3
  113. package/dist/{server-proxy → server/proxy}/index.js +3 -3
  114. package/dist/server/proxy/index.js.map +1 -0
  115. package/dist/{server-rate-limit → server/rate-limit}/index.d.ts +4 -4
  116. package/dist/{server-rate-limit → server/rate-limit}/index.js +4 -4
  117. package/dist/server/rate-limit/index.js.map +1 -0
  118. package/dist/{server-security → server/security}/index.browser.js +1 -1
  119. package/dist/server/security/index.browser.js.map +1 -0
  120. package/dist/{server-security → server/security}/index.d.ts +13 -13
  121. package/dist/{server-security → server/security}/index.js +4 -4
  122. package/dist/server/security/index.js.map +1 -0
  123. package/dist/{server-static → server/static}/index.d.ts +3 -3
  124. package/dist/{server-static → server/static}/index.js +3 -3
  125. package/dist/server/static/index.js.map +1 -0
  126. package/dist/{server-swagger → server/swagger}/index.d.ts +3 -3
  127. package/dist/{server-swagger → server/swagger}/index.js +4 -4
  128. package/dist/server/swagger/index.js.map +1 -0
  129. package/dist/topic/{index.d.ts → core/index.d.ts} +6 -6
  130. package/dist/topic/{index.js → core/index.js} +6 -6
  131. package/dist/topic/core/index.js.map +1 -0
  132. package/dist/{topic-redis → topic/redis}/index.d.ts +2 -2
  133. package/dist/{topic-redis → topic/redis}/index.js +2 -2
  134. package/dist/topic/redis/index.js.map +1 -0
  135. package/dist/vite/index.d.ts +11 -0
  136. package/dist/vite/index.js +12 -5
  137. package/dist/vite/index.js.map +1 -1
  138. package/package.json +156 -157
  139. package/src/{api-files → api/files}/index.ts +1 -0
  140. package/src/{api-parameters → api/parameters}/index.ts +1 -1
  141. package/src/{api-users → api/users}/primitives/$userRealm.ts +1 -1
  142. package/src/{api-users → api/users}/providers/UserRealmProvider.ts +6 -7
  143. package/src/{api-verifications → api/verifications}/index.ts +2 -0
  144. package/src/cli/apps/AlephaPackageBuilderCli.ts +73 -48
  145. package/src/cli/assets/appRouterTs.ts +1 -1
  146. package/src/cli/assets/biomeJson.ts +1 -1
  147. package/src/cli/assets/indexHtml.ts +1 -1
  148. package/src/cli/assets/mainBrowserTs.ts +1 -1
  149. package/src/cli/assets/viteConfigTs.ts +1 -1
  150. package/src/cli/commands/CoreCommands.ts +10 -6
  151. package/src/cli/commands/VerifyCommands.ts +4 -1
  152. package/src/cli/commands/ViteCommands.ts +20 -9
  153. package/src/cli/services/AlephaCliUtils.ts +29 -14
  154. package/src/core/providers/SchemaValidator.ts +1 -1
  155. package/src/queue/{index.ts → core/index.ts} +2 -3
  156. package/src/queue/{primitives → core/primitives}/$queue.ts +17 -162
  157. package/src/queue/core/providers/MemoryQueueProvider.ts +19 -0
  158. package/src/queue/core/providers/QueueProvider.ts +23 -0
  159. package/src/queue/core/providers/WorkerProvider.ts +244 -0
  160. package/src/queue/redis/providers/RedisQueueProvider.ts +31 -0
  161. package/src/server/{index.ts → core/index.ts} +1 -0
  162. package/src/{server-rate-limit → server/rate-limit}/index.ts +1 -1
  163. package/src/{server-swagger → server/swagger}/providers/ServerSwaggerProvider.ts +1 -0
  164. package/src/vite/tasks/copyAssets.ts +32 -8
  165. package/dist/api-audits/index.browser.js.map +0 -1
  166. package/dist/api-audits/index.js.map +0 -1
  167. package/dist/api-files/index.browser.js.map +0 -1
  168. package/dist/api-files/index.js.map +0 -1
  169. package/dist/api-jobs/index.browser.js.map +0 -1
  170. package/dist/api-jobs/index.js.map +0 -1
  171. package/dist/api-notifications/index.browser.js.map +0 -1
  172. package/dist/api-notifications/index.d.ts +0 -327
  173. package/dist/api-notifications/index.js.map +0 -1
  174. package/dist/api-parameters/index.browser.js.map +0 -1
  175. package/dist/api-parameters/index.js.map +0 -1
  176. package/dist/api-users/index.browser.js.map +0 -1
  177. package/dist/api-users/index.js.map +0 -1
  178. package/dist/api-verifications/index.browser.js.map +0 -1
  179. package/dist/api-verifications/index.d.ts +0 -229
  180. package/dist/api-verifications/index.js.map +0 -1
  181. package/dist/cache/index.js.map +0 -1
  182. package/dist/cache-redis/index.js.map +0 -1
  183. package/dist/lock/index.js.map +0 -1
  184. package/dist/lock-redis/index.js.map +0 -1
  185. package/dist/queue/index.d.ts +0 -1265
  186. package/dist/queue/index.js +0 -1037
  187. package/dist/queue/index.js.map +0 -1
  188. package/dist/queue-redis/index.d.ts +0 -82
  189. package/dist/queue-redis/index.js +0 -872
  190. package/dist/queue-redis/index.js.map +0 -1
  191. package/dist/server/index.browser.js.map +0 -1
  192. package/dist/server/index.js.map +0 -1
  193. package/dist/server-auth/index.browser.js.map +0 -1
  194. package/dist/server-auth/index.js +0 -1973
  195. package/dist/server-auth/index.js.map +0 -1
  196. package/dist/server-cache/index.js.map +0 -1
  197. package/dist/server-compress/index.js.map +0 -1
  198. package/dist/server-cookies/index.browser.js.map +0 -1
  199. package/dist/server-cookies/index.js.map +0 -1
  200. package/dist/server-cors/index.js.map +0 -1
  201. package/dist/server-health/index.js.map +0 -1
  202. package/dist/server-helmet/index.js.map +0 -1
  203. package/dist/server-links/index.browser.js.map +0 -1
  204. package/dist/server-links/index.js.map +0 -1
  205. package/dist/server-metrics/index.js +0 -4532
  206. package/dist/server-metrics/index.js.map +0 -1
  207. package/dist/server-multipart/index.js.map +0 -1
  208. package/dist/server-proxy/index.js.map +0 -1
  209. package/dist/server-rate-limit/index.js.map +0 -1
  210. package/dist/server-security/index.browser.js.map +0 -1
  211. package/dist/server-security/index.js.map +0 -1
  212. package/dist/server-static/index.js.map +0 -1
  213. package/dist/server-swagger/index.js.map +0 -1
  214. package/dist/topic/index.js.map +0 -1
  215. package/dist/topic-redis/index.js.map +0 -1
  216. package/src/queue/interfaces/QueueJob.ts +0 -459
  217. package/src/queue/providers/MemoryQueueProvider.ts +0 -850
  218. package/src/queue/providers/QueueProvider.ts +0 -319
  219. package/src/queue/providers/WorkerProvider.ts +0 -344
  220. package/src/queue-redis/providers/RedisQueueProvider.ts +0 -1209
  221. /package/src/{api-audits → api/audits}/controllers/AuditController.ts +0 -0
  222. /package/src/{api-audits → api/audits}/entities/audits.ts +0 -0
  223. /package/src/{api-audits → api/audits}/index.browser.ts +0 -0
  224. /package/src/{api-audits → api/audits}/index.ts +0 -0
  225. /package/src/{api-audits → api/audits}/primitives/$audit.ts +0 -0
  226. /package/src/{api-audits → api/audits}/schemas/auditQuerySchema.ts +0 -0
  227. /package/src/{api-audits → api/audits}/schemas/auditResourceSchema.ts +0 -0
  228. /package/src/{api-audits → api/audits}/schemas/createAuditSchema.ts +0 -0
  229. /package/src/{api-audits → api/audits}/services/AuditService.ts +0 -0
  230. /package/src/{api-files → api/files}/controllers/FileController.ts +0 -0
  231. /package/src/{api-files → api/files}/controllers/StorageStatsController.ts +0 -0
  232. /package/src/{api-files → api/files}/entities/files.ts +0 -0
  233. /package/src/{api-files → api/files}/index.browser.ts +0 -0
  234. /package/src/{api-files → api/files}/jobs/FileJobs.ts +0 -0
  235. /package/src/{api-files → api/files}/schemas/fileQuerySchema.ts +0 -0
  236. /package/src/{api-files → api/files}/schemas/fileResourceSchema.ts +0 -0
  237. /package/src/{api-files → api/files}/schemas/storageStatsSchema.ts +0 -0
  238. /package/src/{api-files → api/files}/services/FileService.ts +0 -0
  239. /package/src/{api-jobs → api/jobs}/controllers/JobController.ts +0 -0
  240. /package/src/{api-jobs → api/jobs}/entities/jobExecutions.ts +0 -0
  241. /package/src/{api-jobs → api/jobs}/index.browser.ts +0 -0
  242. /package/src/{api-jobs → api/jobs}/index.ts +0 -0
  243. /package/src/{api-jobs → api/jobs}/primitives/$job.ts +0 -0
  244. /package/src/{api-jobs → api/jobs}/providers/JobProvider.ts +0 -0
  245. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionQuerySchema.ts +0 -0
  246. /package/src/{api-jobs → api/jobs}/schemas/jobExecutionResourceSchema.ts +0 -0
  247. /package/src/{api-jobs → api/jobs}/schemas/triggerJobSchema.ts +0 -0
  248. /package/src/{api-jobs → api/jobs}/services/JobService.ts +0 -0
  249. /package/src/{api-notifications → api/notifications}/controllers/NotificationController.ts +0 -0
  250. /package/src/{api-notifications → api/notifications}/entities/notifications.ts +0 -0
  251. /package/src/{api-notifications → api/notifications}/index.browser.ts +0 -0
  252. /package/src/{api-notifications → api/notifications}/index.ts +0 -0
  253. /package/src/{api-notifications → api/notifications}/jobs/NotificationJobs.ts +0 -0
  254. /package/src/{api-notifications → api/notifications}/primitives/$notification.ts +0 -0
  255. /package/src/{api-notifications → api/notifications}/queues/NotificationQueues.ts +0 -0
  256. /package/src/{api-notifications → api/notifications}/schemas/notificationContactPreferencesSchema.ts +0 -0
  257. /package/src/{api-notifications → api/notifications}/schemas/notificationContactSchema.ts +0 -0
  258. /package/src/{api-notifications → api/notifications}/schemas/notificationCreateSchema.ts +0 -0
  259. /package/src/{api-notifications → api/notifications}/schemas/notificationQuerySchema.ts +0 -0
  260. /package/src/{api-notifications → api/notifications}/services/NotificationSenderService.ts +0 -0
  261. /package/src/{api-notifications → api/notifications}/services/NotificationService.ts +0 -0
  262. /package/src/{api-parameters → api/parameters}/controllers/ConfigController.ts +0 -0
  263. /package/src/{api-parameters → api/parameters}/entities/parameters.ts +0 -0
  264. /package/src/{api-parameters → api/parameters}/index.browser.ts +0 -0
  265. /package/src/{api-parameters → api/parameters}/primitives/$config.ts +0 -0
  266. /package/src/{api-parameters → api/parameters}/schedulers/ConfigActivationScheduler.ts +0 -0
  267. /package/src/{api-parameters → api/parameters}/services/ConfigStore.ts +0 -0
  268. /package/src/{api-users → api/users}/atoms/realmAuthSettingsAtom.ts +0 -0
  269. /package/src/{api-users → api/users}/controllers/IdentityController.ts +0 -0
  270. /package/src/{api-users → api/users}/controllers/SessionController.ts +0 -0
  271. /package/src/{api-users → api/users}/controllers/UserController.ts +0 -0
  272. /package/src/{api-users → api/users}/controllers/UserRealmController.ts +0 -0
  273. /package/src/{api-users → api/users}/entities/identities.ts +0 -0
  274. /package/src/{api-users → api/users}/entities/sessions.ts +0 -0
  275. /package/src/{api-users → api/users}/entities/users.ts +0 -0
  276. /package/src/{api-users → api/users}/index.browser.ts +0 -0
  277. /package/src/{api-users → api/users}/index.ts +0 -0
  278. /package/src/{api-users → api/users}/notifications/UserNotifications.ts +0 -0
  279. /package/src/{api-users → api/users}/schemas/completePasswordResetRequestSchema.ts +0 -0
  280. /package/src/{api-users → api/users}/schemas/completeRegistrationRequestSchema.ts +0 -0
  281. /package/src/{api-users → api/users}/schemas/createUserSchema.ts +0 -0
  282. /package/src/{api-users → api/users}/schemas/identityQuerySchema.ts +0 -0
  283. /package/src/{api-users → api/users}/schemas/identityResourceSchema.ts +0 -0
  284. /package/src/{api-users → api/users}/schemas/loginSchema.ts +0 -0
  285. /package/src/{api-users → api/users}/schemas/passwordResetIntentResponseSchema.ts +0 -0
  286. /package/src/{api-users → api/users}/schemas/registerQuerySchema.ts +0 -0
  287. /package/src/{api-users → api/users}/schemas/registerRequestSchema.ts +0 -0
  288. /package/src/{api-users → api/users}/schemas/registerResponseSchema.ts +0 -0
  289. /package/src/{api-users → api/users}/schemas/registerSchema.ts +0 -0
  290. /package/src/{api-users → api/users}/schemas/registrationIntentResponseSchema.ts +0 -0
  291. /package/src/{api-users → api/users}/schemas/resetPasswordSchema.ts +0 -0
  292. /package/src/{api-users → api/users}/schemas/sessionQuerySchema.ts +0 -0
  293. /package/src/{api-users → api/users}/schemas/sessionResourceSchema.ts +0 -0
  294. /package/src/{api-users → api/users}/schemas/updateUserSchema.ts +0 -0
  295. /package/src/{api-users → api/users}/schemas/userQuerySchema.ts +0 -0
  296. /package/src/{api-users → api/users}/schemas/userRealmConfigSchema.ts +0 -0
  297. /package/src/{api-users → api/users}/schemas/userResourceSchema.ts +0 -0
  298. /package/src/{api-users → api/users}/services/CredentialService.ts +0 -0
  299. /package/src/{api-users → api/users}/services/IdentityService.ts +0 -0
  300. /package/src/{api-users → api/users}/services/RegistrationService.ts +0 -0
  301. /package/src/{api-users → api/users}/services/SessionCrudService.ts +0 -0
  302. /package/src/{api-users → api/users}/services/SessionService.ts +0 -0
  303. /package/src/{api-users → api/users}/services/UserService.ts +0 -0
  304. /package/src/{api-verifications → api/verifications}/controllers/VerificationController.ts +0 -0
  305. /package/src/{api-verifications → api/verifications}/entities/verifications.ts +0 -0
  306. /package/src/{api-verifications → api/verifications}/index.browser.ts +0 -0
  307. /package/src/{api-verifications → api/verifications}/jobs/VerificationJobs.ts +0 -0
  308. /package/src/{api-verifications → api/verifications}/parameters/VerificationParameters.ts +0 -0
  309. /package/src/{api-verifications → api/verifications}/schemas/requestVerificationCodeResponseSchema.ts +0 -0
  310. /package/src/{api-verifications → api/verifications}/schemas/validateVerificationCodeResponseSchema.ts +0 -0
  311. /package/src/{api-verifications → api/verifications}/schemas/verificationSettingsSchema.ts +0 -0
  312. /package/src/{api-verifications → api/verifications}/schemas/verificationTypeEnumSchema.ts +0 -0
  313. /package/src/{api-verifications → api/verifications}/services/VerificationService.ts +0 -0
  314. /package/src/cache/{errors → core/errors}/CacheError.ts +0 -0
  315. /package/src/cache/{index.ts → core/index.ts} +0 -0
  316. /package/src/cache/{primitives → core/primitives}/$cache.ts +0 -0
  317. /package/src/cache/{providers → core/providers}/CacheProvider.ts +0 -0
  318. /package/src/cache/{providers → core/providers}/MemoryCacheProvider.ts +0 -0
  319. /package/src/{cache-redis → cache/redis}/index.ts +0 -0
  320. /package/src/{cache-redis → cache/redis}/providers/RedisCacheProvider.ts +0 -0
  321. /package/src/lock/{index.ts → core/index.ts} +0 -0
  322. /package/src/lock/{primitives → core/primitives}/$lock.ts +0 -0
  323. /package/src/lock/{providers → core/providers}/LockProvider.ts +0 -0
  324. /package/src/lock/{providers → core/providers}/LockTopicProvider.ts +0 -0
  325. /package/src/lock/{providers → core/providers}/MemoryLockProvider.ts +0 -0
  326. /package/src/{lock-redis → lock/redis}/index.ts +0 -0
  327. /package/src/{lock-redis → lock/redis}/providers/RedisLockProvider.ts +0 -0
  328. /package/src/queue/{primitives → core/primitives}/$consumer.ts +0 -0
  329. /package/src/{queue-redis → queue/redis}/index.ts +0 -0
  330. /package/src/{server-auth → server/auth}/constants/routes.ts +0 -0
  331. /package/src/{server-auth → server/auth}/index.browser.ts +0 -0
  332. /package/src/{server-auth → server/auth}/index.shared.ts +0 -0
  333. /package/src/{server-auth → server/auth}/index.ts +0 -0
  334. /package/src/{server-auth → server/auth}/primitives/$auth.ts +0 -0
  335. /package/src/{server-auth → server/auth}/primitives/$authApple.ts +0 -0
  336. /package/src/{server-auth → server/auth}/primitives/$authCredentials.ts +0 -0
  337. /package/src/{server-auth → server/auth}/primitives/$authGithub.ts +0 -0
  338. /package/src/{server-auth → server/auth}/primitives/$authGoogle.ts +0 -0
  339. /package/src/{server-auth → server/auth}/providers/ServerAuthProvider.ts +0 -0
  340. /package/src/{server-auth → server/auth}/schemas/authenticationProviderSchema.ts +0 -0
  341. /package/src/{server-auth → server/auth}/schemas/tokenResponseSchema.ts +0 -0
  342. /package/src/{server-auth → server/auth}/schemas/tokensSchema.ts +0 -0
  343. /package/src/{server-auth → server/auth}/schemas/userinfoResponseSchema.ts +0 -0
  344. /package/src/{server-cache → server/cache}/index.ts +0 -0
  345. /package/src/{server-cache → server/cache}/providers/ServerCacheProvider.ts +0 -0
  346. /package/src/{server-compress → server/compress}/index.ts +0 -0
  347. /package/src/{server-compress → server/compress}/providers/ServerCompressProvider.ts +0 -0
  348. /package/src/{server-cookies → server/cookies}/index.browser.ts +0 -0
  349. /package/src/{server-cookies → server/cookies}/index.ts +0 -0
  350. /package/src/{server-cookies → server/cookies}/primitives/$cookie.browser.ts +0 -0
  351. /package/src/{server-cookies → server/cookies}/primitives/$cookie.ts +0 -0
  352. /package/src/{server-cookies → server/cookies}/providers/ServerCookiesProvider.ts +0 -0
  353. /package/src/{server-cookies → server/cookies}/services/CookieParser.ts +0 -0
  354. /package/src/server/{constants → core/constants}/routeMethods.ts +0 -0
  355. /package/src/server/{errors → core/errors}/BadRequestError.ts +0 -0
  356. /package/src/server/{errors → core/errors}/ConflictError.ts +0 -0
  357. /package/src/server/{errors → core/errors}/ForbiddenError.ts +0 -0
  358. /package/src/server/{errors → core/errors}/HttpError.ts +0 -0
  359. /package/src/server/{errors → core/errors}/NotFoundError.ts +0 -0
  360. /package/src/server/{errors → core/errors}/UnauthorizedError.ts +0 -0
  361. /package/src/server/{errors → core/errors}/ValidationError.ts +0 -0
  362. /package/src/server/{helpers → core/helpers}/ServerReply.ts +0 -0
  363. /package/src/server/{helpers → core/helpers}/isMultipart.ts +0 -0
  364. /package/src/server/{index.browser.ts → core/index.browser.ts} +0 -0
  365. /package/src/server/{index.shared.ts → core/index.shared.ts} +0 -0
  366. /package/src/server/{interfaces → core/interfaces}/ServerRequest.ts +0 -0
  367. /package/src/server/{primitives → core/primitives}/$action.ts +0 -0
  368. /package/src/server/{primitives → core/primitives}/$route.ts +0 -0
  369. /package/src/server/{providers → core/providers}/BunHttpServerProvider.ts +0 -0
  370. /package/src/server/{providers → core/providers}/NodeHttpServerProvider.ts +0 -0
  371. /package/src/server/{providers → core/providers}/ServerBodyParserProvider.ts +0 -0
  372. /package/src/server/{providers → core/providers}/ServerLoggerProvider.ts +0 -0
  373. /package/src/server/{providers → core/providers}/ServerNotReadyProvider.ts +0 -0
  374. /package/src/server/{providers → core/providers}/ServerProvider.ts +0 -0
  375. /package/src/server/{providers → core/providers}/ServerRouterProvider.ts +0 -0
  376. /package/src/server/{providers → core/providers}/ServerTimingProvider.ts +0 -0
  377. /package/src/server/{schemas → core/schemas}/errorSchema.ts +0 -0
  378. /package/src/server/{schemas → core/schemas}/okSchema.ts +0 -0
  379. /package/src/server/{services → core/services}/HttpClient.ts +0 -0
  380. /package/src/server/{services → core/services}/ServerRequestParser.ts +0 -0
  381. /package/src/server/{services → core/services}/UserAgentParser.ts +0 -0
  382. /package/src/{server-cors → server/cors}/index.ts +0 -0
  383. /package/src/{server-cors → server/cors}/primitives/$cors.ts +0 -0
  384. /package/src/{server-cors → server/cors}/providers/ServerCorsProvider.ts +0 -0
  385. /package/src/{server-health → server/health}/index.ts +0 -0
  386. /package/src/{server-health → server/health}/providers/ServerHealthProvider.ts +0 -0
  387. /package/src/{server-health → server/health}/schemas/healthSchema.ts +0 -0
  388. /package/src/{server-helmet → server/helmet}/index.ts +0 -0
  389. /package/src/{server-helmet → server/helmet}/providers/ServerHelmetProvider.ts +0 -0
  390. /package/src/{server-links → server/links}/index.browser.ts +0 -0
  391. /package/src/{server-links → server/links}/index.ts +0 -0
  392. /package/src/{server-links → server/links}/primitives/$client.ts +0 -0
  393. /package/src/{server-links → server/links}/primitives/$remote.ts +0 -0
  394. /package/src/{server-links → server/links}/providers/LinkProvider.ts +0 -0
  395. /package/src/{server-links → server/links}/providers/RemotePrimitiveProvider.ts +0 -0
  396. /package/src/{server-links → server/links}/providers/ServerLinksProvider.ts +0 -0
  397. /package/src/{server-links → server/links}/schemas/apiLinksResponseSchema.ts +0 -0
  398. /package/src/{server-metrics → server/metrics}/index.ts +0 -0
  399. /package/src/{server-metrics → server/metrics}/providers/ServerMetricsProvider.ts +0 -0
  400. /package/src/{server-multipart → server/multipart}/index.ts +0 -0
  401. /package/src/{server-multipart → server/multipart}/providers/ServerMultipartProvider.ts +0 -0
  402. /package/src/{server-proxy → server/proxy}/index.ts +0 -0
  403. /package/src/{server-proxy → server/proxy}/primitives/$proxy.ts +0 -0
  404. /package/src/{server-proxy → server/proxy}/providers/ServerProxyProvider.ts +0 -0
  405. /package/src/{server-rate-limit → server/rate-limit}/primitives/$rateLimit.ts +0 -0
  406. /package/src/{server-rate-limit → server/rate-limit}/providers/ServerRateLimitProvider.ts +0 -0
  407. /package/src/{server-security → server/security}/index.browser.ts +0 -0
  408. /package/src/{server-security → server/security}/index.ts +0 -0
  409. /package/src/{server-security → server/security}/primitives/$basicAuth.ts +0 -0
  410. /package/src/{server-security → server/security}/providers/ServerBasicAuthProvider.ts +0 -0
  411. /package/src/{server-security → server/security}/providers/ServerSecurityProvider.ts +0 -0
  412. /package/src/{server-static → server/static}/index.ts +0 -0
  413. /package/src/{server-static → server/static}/primitives/$serve.ts +0 -0
  414. /package/src/{server-static → server/static}/providers/ServerStaticProvider.ts +0 -0
  415. /package/src/{server-swagger → server/swagger}/index.ts +0 -0
  416. /package/src/{server-swagger → server/swagger}/primitives/$swagger.ts +0 -0
  417. /package/src/topic/{errors → core/errors}/TopicTimeoutError.ts +0 -0
  418. /package/src/topic/{index.ts → core/index.ts} +0 -0
  419. /package/src/topic/{primitives → core/primitives}/$subscriber.ts +0 -0
  420. /package/src/topic/{primitives → core/primitives}/$topic.ts +0 -0
  421. /package/src/topic/{providers → core/providers}/MemoryTopicProvider.ts +0 -0
  422. /package/src/topic/{providers → core/providers}/TopicProvider.ts +0 -0
  423. /package/src/{topic-redis → topic/redis}/index.ts +0 -0
  424. /package/src/{topic-redis → topic/redis}/providers/RedisTopicProvider.ts +0 -0
@@ -1,11 +1,10 @@
1
- import { $atom, $context, $hook, $inject, $module, Alepha, AlephaError, KIND, Primitive, createPrimitive, t } from "alepha";
1
+ import { $atom, $context, $hook, $inject, $module, Alepha, AlephaError, t } from "alepha";
2
2
  import { $notification, AlephaApiNotifications } from "alepha/api/notifications";
3
3
  import { AlephaApiVerification } from "alepha/api/verifications";
4
4
  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,17 +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
18
  import { AlephaApiJobs } from "alepha/api/jobs";
19
19
 
20
- //#region ../../src/api-users/schemas/identityQuerySchema.ts
20
+ //#region ../../src/api/users/schemas/identityQuerySchema.ts
21
21
  const identityQuerySchema = t.extend(pageQuerySchema, {
22
22
  userId: t.optional(t.uuid()),
23
23
  provider: t.optional(t.string())
24
24
  });
25
25
 
26
26
  //#endregion
27
- //#region ../../src/api-users/entities/users.ts
27
+ //#region ../../src/api/users/entities/users.ts
28
28
  const DEFAULT_USER_REALM_NAME = "default";
29
29
  const users = $entity({
30
30
  name: "users",
@@ -65,7 +65,7 @@ const users = $entity({
65
65
  });
66
66
 
67
67
  //#endregion
68
- //#region ../../src/api-users/entities/identities.ts
68
+ //#region ../../src/api/users/entities/identities.ts
69
69
  const identities = $entity({
70
70
  name: "identities",
71
71
  schema: t.object({
@@ -82,11 +82,66 @@ const identities = $entity({
82
82
  });
83
83
 
84
84
  //#endregion
85
- //#region ../../src/api-users/schemas/identityResourceSchema.ts
85
+ //#region ../../src/api/users/schemas/identityResourceSchema.ts
86
86
  const identityResourceSchema = t.omit(identities.schema, ["password"]);
87
87
 
88
88
  //#endregion
89
- //#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
90
145
  const sessions = $entity({
91
146
  name: "sessions",
92
147
  schema: t.object({
@@ -111,7 +166,7 @@ const sessions = $entity({
111
166
  });
112
167
 
113
168
  //#endregion
114
- //#region ../../src/api-users/providers/UserRealmProvider.ts
169
+ //#region ../../src/api/users/providers/UserRealmProvider.ts
115
170
  var UserRealmProvider = class {
116
171
  alepha = $inject(Alepha);
117
172
  defaultIdentities = $repository(identities);
@@ -146,10 +201,10 @@ var UserRealmProvider = class {
146
201
  users: userRealmOptions.entities?.users ?? this.defaultUsers
147
202
  },
148
203
  settings: {
149
- ...realmAuthSettingsAtom$1.options.default,
204
+ ...realmAuthSettingsAtom.options.default,
150
205
  ...userRealmOptions.settings,
151
206
  passwordPolicy: {
152
- ...realmAuthSettingsAtom$1.options.default.passwordPolicy,
207
+ ...realmAuthSettingsAtom.options.default.passwordPolicy,
153
208
  ...userRealmOptions.settings?.passwordPolicy
154
209
  }
155
210
  }
@@ -159,29 +214,29 @@ var UserRealmProvider = class {
159
214
  /**
160
215
  * Gets a registered realm by name, auto-creating default if needed.
161
216
  */
162
- getRealm(userRealmName = DEFAULT_USER_REALM_NAME$1) {
217
+ getRealm(userRealmName = DEFAULT_USER_REALM_NAME) {
163
218
  let realm = this.realms.get(userRealmName);
164
219
  if (!realm) {
165
220
  const firstRealm = Array.from(this.realms.values())[0];
166
- if (userRealmName === DEFAULT_USER_REALM_NAME$1 && firstRealm) realm = firstRealm;
221
+ if (userRealmName === DEFAULT_USER_REALM_NAME && firstRealm) realm = firstRealm;
167
222
  else if (this.alepha.isTest()) realm = this.register(userRealmName);
168
223
  else throw new AlephaError(`Missing user realm '${userRealmName}', please declare $userRealm in your application.`);
169
224
  }
170
225
  return realm;
171
226
  }
172
- identityRepository(userRealmName = DEFAULT_USER_REALM_NAME$1) {
227
+ identityRepository(userRealmName = DEFAULT_USER_REALM_NAME) {
173
228
  return this.getRealm(userRealmName).repositories.identities;
174
229
  }
175
- sessionRepository(userRealmName = DEFAULT_USER_REALM_NAME$1) {
230
+ sessionRepository(userRealmName = DEFAULT_USER_REALM_NAME) {
176
231
  return this.getRealm(userRealmName).repositories.sessions;
177
232
  }
178
- userRepository(userRealmName = DEFAULT_USER_REALM_NAME$1) {
233
+ userRepository(userRealmName = DEFAULT_USER_REALM_NAME) {
179
234
  return this.getRealm(userRealmName).repositories.users;
180
235
  }
181
236
  };
182
237
 
183
238
  //#endregion
184
- //#region ../../src/api-users/services/IdentityService.ts
239
+ //#region ../../src/api/users/services/IdentityService.ts
185
240
  var IdentityService = class {
186
241
  log = $logger();
187
242
  userRealmProvider = $inject(UserRealmProvider);
@@ -242,7 +297,7 @@ var IdentityService = class {
242
297
  };
243
298
 
244
299
  //#endregion
245
- //#region ../../src/api-users/controllers/IdentityController.ts
300
+ //#region ../../src/api/users/controllers/IdentityController.ts
246
301
  var IdentityController = class {
247
302
  url = "/identities";
248
303
  group = "identities";
@@ -301,11 +356,11 @@ var IdentityController = class {
301
356
  };
302
357
 
303
358
  //#endregion
304
- //#region ../../src/api-users/schemas/sessionQuerySchema.ts
359
+ //#region ../../src/api/users/schemas/sessionQuerySchema.ts
305
360
  const sessionQuerySchema = t.extend(pageQuerySchema, { userId: t.optional(t.uuid()) });
306
361
 
307
362
  //#endregion
308
- //#region ../../src/api-users/schemas/sessionResourceSchema.ts
363
+ //#region ../../src/api/users/schemas/sessionResourceSchema.ts
309
364
  const sessionResourceSchema = t.object({
310
365
  id: t.uuid(),
311
366
  version: t.number(),
@@ -327,7 +382,7 @@ const sessionResourceSchema = t.object({
327
382
  });
328
383
 
329
384
  //#endregion
330
- //#region ../../src/api-users/services/SessionCrudService.ts
385
+ //#region ../../src/api/users/services/SessionCrudService.ts
331
386
  var SessionCrudService = class {
332
387
  log = $logger();
333
388
  userRealmProvider = $inject(UserRealmProvider);
@@ -382,7 +437,7 @@ var SessionCrudService = class {
382
437
  };
383
438
 
384
439
  //#endregion
385
- //#region ../../src/api-users/controllers/SessionController.ts
440
+ //#region ../../src/api/users/controllers/SessionController.ts
386
441
  var SessionController = class {
387
442
  url = "/sessions";
388
443
  group = "sessions";
@@ -441,7 +496,7 @@ var SessionController = class {
441
496
  };
442
497
 
443
498
  //#endregion
444
- //#region ../../src/api-users/schemas/completePasswordResetRequestSchema.ts
499
+ //#region ../../src/api/users/schemas/completePasswordResetRequestSchema.ts
445
500
  /**
446
501
  * Request schema for completing a password reset.
447
502
  *
@@ -458,7 +513,7 @@ const completePasswordResetRequestSchema = t.object({
458
513
  });
459
514
 
460
515
  //#endregion
461
- //#region ../../src/api-users/schemas/completeRegistrationRequestSchema.ts
516
+ //#region ../../src/api/users/schemas/completeRegistrationRequestSchema.ts
462
517
  const completeRegistrationRequestSchema = t.object({
463
518
  intentId: t.uuid({ description: "The registration intent ID from the first phase" }),
464
519
  emailCode: t.optional(t.string({ description: "Email verification code (if email verification required)" })),
@@ -467,11 +522,11 @@ const completeRegistrationRequestSchema = t.object({
467
522
  });
468
523
 
469
524
  //#endregion
470
- //#region ../../src/api-users/schemas/createUserSchema.ts
525
+ //#region ../../src/api/users/schemas/createUserSchema.ts
471
526
  const createUserSchema = t.omit(users.insertSchema, ["realm"]);
472
527
 
473
528
  //#endregion
474
- //#region ../../src/api-users/schemas/passwordResetIntentResponseSchema.ts
529
+ //#region ../../src/api/users/schemas/passwordResetIntentResponseSchema.ts
475
530
  /**
476
531
  * Response schema for password reset intent creation.
477
532
  *
@@ -484,7 +539,7 @@ const passwordResetIntentResponseSchema = t.object({
484
539
  });
485
540
 
486
541
  //#endregion
487
- //#region ../../src/api-users/schemas/registerQuerySchema.ts
542
+ //#region ../../src/api/users/schemas/registerQuerySchema.ts
488
543
  /**
489
544
  * Schema for user registration query parameters.
490
545
  * Allows specifying a custom user realm.
@@ -492,7 +547,7 @@ const passwordResetIntentResponseSchema = t.object({
492
547
  const registerQuerySchema = t.object({ userRealmName: t.optional(t.text({ description: "The user realm to register the user in (defaults to 'default')" })) });
493
548
 
494
549
  //#endregion
495
- //#region ../../src/api-users/schemas/registerRequestSchema.ts
550
+ //#region ../../src/api/users/schemas/registerRequestSchema.ts
496
551
  /**
497
552
  * Schema for user registration request body.
498
553
  * Password is always required, other fields depend on realm settings.
@@ -517,7 +572,7 @@ const registerRequestSchema = t.object({
517
572
  });
518
573
 
519
574
  //#endregion
520
- //#region ../../src/api-users/schemas/registrationIntentResponseSchema.ts
575
+ //#region ../../src/api/users/schemas/registrationIntentResponseSchema.ts
521
576
  const registrationIntentResponseSchema = t.object({
522
577
  intentId: t.uuid({ description: "Unique identifier for the registration intent" }),
523
578
  expectCaptcha: t.boolean({ description: "Whether captcha verification is required" }),
@@ -527,7 +582,7 @@ const registrationIntentResponseSchema = t.object({
527
582
  });
528
583
 
529
584
  //#endregion
530
- //#region ../../src/api-users/schemas/updateUserSchema.ts
585
+ //#region ../../src/api/users/schemas/updateUserSchema.ts
531
586
  const updateUserSchema = t.partial(t.omit(users.insertSchema, [
532
587
  "id",
533
588
  "version",
@@ -538,7 +593,7 @@ const updateUserSchema = t.partial(t.omit(users.insertSchema, [
538
593
  ]));
539
594
 
540
595
  //#endregion
541
- //#region ../../src/api-users/schemas/userQuerySchema.ts
596
+ //#region ../../src/api/users/schemas/userQuerySchema.ts
542
597
  const userQuerySchema = t.extend(pageQuerySchema, {
543
598
  email: t.optional(t.string()),
544
599
  enabled: t.optional(t.boolean()),
@@ -548,11 +603,11 @@ const userQuerySchema = t.extend(pageQuerySchema, {
548
603
  });
549
604
 
550
605
  //#endregion
551
- //#region ../../src/api-users/schemas/userResourceSchema.ts
606
+ //#region ../../src/api/users/schemas/userResourceSchema.ts
552
607
  const userResourceSchema = users.schema;
553
608
 
554
609
  //#endregion
555
- //#region ../../src/api-users/notifications/UserNotifications.ts
610
+ //#region ../../src/api/users/notifications/UserNotifications.ts
556
611
  var UserNotifications = class {
557
612
  passwordReset = $notification({
558
613
  category: "security",
@@ -681,7 +736,7 @@ var UserNotifications = class {
681
736
  };
682
737
 
683
738
  //#endregion
684
- //#region ../../src/api-users/services/CredentialService.ts
739
+ //#region ../../src/api/users/services/CredentialService.ts
685
740
  const INTENT_TTL_MINUTES$1 = 10;
686
741
  var CredentialService = class {
687
742
  log = $logger();
@@ -864,7 +919,7 @@ var CredentialService = class {
864
919
  };
865
920
 
866
921
  //#endregion
867
- //#region ../../src/api-users/services/RegistrationService.ts
922
+ //#region ../../src/api/users/services/RegistrationService.ts
868
923
  const INTENT_TTL_MINUTES = 10;
869
924
  var RegistrationService = class {
870
925
  log = $logger();
@@ -1128,7 +1183,7 @@ var RegistrationService = class {
1128
1183
  };
1129
1184
 
1130
1185
  //#endregion
1131
- //#region ../../src/api-users/services/UserService.ts
1186
+ //#region ../../src/api/users/services/UserService.ts
1132
1187
  var UserService = class {
1133
1188
  log = $logger();
1134
1189
  verificationController = $client();
@@ -1350,7 +1405,7 @@ var UserService = class {
1350
1405
  };
1351
1406
 
1352
1407
  //#endregion
1353
- //#region ../../src/api-users/controllers/UserController.ts
1408
+ //#region ../../src/api/users/controllers/UserController.ts
1354
1409
  var UserController = class {
1355
1410
  url = "/users";
1356
1411
  group = "users";
@@ -1655,62 +1710,7 @@ var UserController = class {
1655
1710
  };
1656
1711
 
1657
1712
  //#endregion
1658
- //#region ../../src/api-users/atoms/realmAuthSettingsAtom.ts
1659
- const realmAuthSettingsAtom = $atom({
1660
- name: "alepha.api.users.realmAuthSettings",
1661
- schema: t.object({
1662
- displayName: t.optional(t.string({ description: "Display name shown on auth pages (e.g., 'Customer Portal')" })),
1663
- description: t.optional(t.string({ description: "Description shown on auth pages" })),
1664
- logoUrl: t.optional(t.string({ description: "Logo URL for auth pages" })),
1665
- registrationAllowed: t.boolean({ description: "Enable user self-registration" }),
1666
- emailEnabled: t.boolean({ description: "Enable email address as a login/registration credential" }),
1667
- emailRequired: t.boolean({ description: "Require email address for user accounts" }),
1668
- usernameEnabled: t.boolean({ description: "Enable username as a login/registration credential" }),
1669
- usernameRequired: t.boolean({ description: "Require username for user accounts" }),
1670
- phoneEnabled: t.boolean({ description: "Enable phone number as a login/registration credential" }),
1671
- phoneRequired: t.boolean({ description: "Require phone number for user accounts" }),
1672
- verifyEmailRequired: t.boolean({ description: "Require email verification for user accounts" }),
1673
- verifyPhoneRequired: t.boolean({ description: "Require phone verification for user accounts" }),
1674
- firstNameLastNameEnabled: t.boolean({ description: "Enable first and last name for user accounts" }),
1675
- firstNameLastNameRequired: t.boolean({ description: "Require first and last name for user accounts" }),
1676
- resetPasswordAllowed: t.boolean({ description: "Enable forgot password functionality" }),
1677
- passwordPolicy: t.object({
1678
- minLength: t.integer({
1679
- description: "Minimum password length",
1680
- default: 8,
1681
- minimum: 1
1682
- }),
1683
- requireUppercase: t.boolean({ description: "Require at least one uppercase letter" }),
1684
- requireLowercase: t.boolean({ description: "Require at least one lowercase letter" }),
1685
- requireNumbers: t.boolean({ description: "Require at least one number" }),
1686
- requireSpecialCharacters: t.boolean({ description: "Require at least one special character" })
1687
- })
1688
- }),
1689
- default: {
1690
- registrationAllowed: true,
1691
- emailEnabled: true,
1692
- emailRequired: true,
1693
- usernameEnabled: false,
1694
- usernameRequired: false,
1695
- phoneEnabled: false,
1696
- phoneRequired: false,
1697
- verifyEmailRequired: false,
1698
- verifyPhoneRequired: false,
1699
- resetPasswordAllowed: false,
1700
- firstNameLastNameEnabled: false,
1701
- firstNameLastNameRequired: false,
1702
- passwordPolicy: {
1703
- minLength: 8,
1704
- requireUppercase: true,
1705
- requireLowercase: true,
1706
- requireNumbers: true,
1707
- requireSpecialCharacters: false
1708
- }
1709
- }
1710
- });
1711
-
1712
- //#endregion
1713
- //#region ../../src/api-users/schemas/userRealmConfigSchema.ts
1713
+ //#region ../../src/api/users/schemas/userRealmConfigSchema.ts
1714
1714
  const userRealmConfigSchema = t.object({
1715
1715
  settings: realmAuthSettingsAtom.schema,
1716
1716
  realmName: t.string(),
@@ -1718,7 +1718,7 @@ const userRealmConfigSchema = t.object({
1718
1718
  });
1719
1719
 
1720
1720
  //#endregion
1721
- //#region ../../src/api-users/controllers/UserRealmController.ts
1721
+ //#region ../../src/api/users/controllers/UserRealmController.ts
1722
1722
  /**
1723
1723
  * Controller for exposing realm configuration.
1724
1724
  * Uses $route instead of $action to keep endpoints hidden from API documentation.
@@ -1768,7 +1768,7 @@ var UserRealmController = class {
1768
1768
  };
1769
1769
 
1770
1770
  //#endregion
1771
- //#region ../../src/api-users/services/SessionService.ts
1771
+ //#region ../../src/api/users/services/SessionService.ts
1772
1772
  var SessionService = class {
1773
1773
  alepha = $inject(Alepha);
1774
1774
  fsp = $inject(FileSystemProvider);
@@ -1995,674 +1995,7 @@ var SessionService = class {
1995
1995
  };
1996
1996
 
1997
1997
  //#endregion
1998
- //#region ../../src/api-audits/entities/audits.ts
1999
- /**
2000
- * Audit severity levels for categorizing events.
2001
- */
2002
- const auditSeveritySchema = t.enum([
2003
- "info",
2004
- "warning",
2005
- "critical"
2006
- ], {
2007
- default: "info",
2008
- description: "Severity level of the audit event"
2009
- });
2010
- /**
2011
- * Audit log entity for tracking important system events.
2012
- *
2013
- * Stores comprehensive audit information including:
2014
- * - Who performed the action (userId, userRealm)
2015
- * - What happened (type, action, resource)
2016
- * - When it happened (createdAt)
2017
- * - Context and details (metadata, ipAddress, userAgent)
2018
- */
2019
- const audits = $entity({
2020
- name: "audits",
2021
- schema: t.object({
2022
- id: pg.primaryKey(t.bigint()),
2023
- createdAt: pg.createdAt(),
2024
- type: t.text({ description: "Audit event type (e.g., auth, user, payment, system)" }),
2025
- action: t.text({ description: "Specific action performed (e.g., login, create, update)" }),
2026
- severity: pg.default(auditSeveritySchema, "info"),
2027
- userId: t.optional(t.uuid()),
2028
- userRealm: t.optional(t.text()),
2029
- userEmail: t.optional(t.email()),
2030
- resourceType: t.optional(t.text()),
2031
- resourceId: t.optional(t.text()),
2032
- description: t.optional(t.text()),
2033
- metadata: t.optional(t.json()),
2034
- ipAddress: t.optional(t.text()),
2035
- userAgent: t.optional(t.text()),
2036
- sessionId: t.optional(t.uuid()),
2037
- requestId: t.optional(t.text()),
2038
- success: pg.default(t.boolean(), true),
2039
- errorMessage: t.optional(t.text())
2040
- }),
2041
- indexes: [
2042
- "createdAt",
2043
- "type",
2044
- "action",
2045
- "userId",
2046
- "userRealm",
2047
- "resourceType",
2048
- "resourceId",
2049
- "severity",
2050
- { columns: ["type", "action"] },
2051
- { columns: ["userId", "createdAt"] },
2052
- { columns: ["userRealm", "createdAt"] }
2053
- ]
2054
- });
2055
- const auditEntitySchema = audits.schema;
2056
- const auditEntityInsertSchema = audits.insertSchema;
2057
-
2058
- //#endregion
2059
- //#region ../../src/api-audits/schemas/auditQuerySchema.ts
2060
- /**
2061
- * Query schema for searching and filtering audit logs.
2062
- */
2063
- const auditQuerySchema = t.extend(pageQuerySchema, {
2064
- type: t.optional(t.text({ description: "Filter by audit type" })),
2065
- action: t.optional(t.text({ description: "Filter by action" })),
2066
- severity: t.optional(auditSeveritySchema),
2067
- userId: t.optional(t.uuid({ description: "Filter by user ID" })),
2068
- userRealm: t.optional(t.text({ description: "Filter by user realm" })),
2069
- resourceType: t.optional(t.text({ description: "Filter by resource type" })),
2070
- resourceId: t.optional(t.text({ description: "Filter by resource ID" })),
2071
- success: t.optional(t.boolean({ description: "Filter by success status" })),
2072
- from: t.optional(t.datetime({ description: "Start date filter" })),
2073
- to: t.optional(t.datetime({ description: "End date filter" })),
2074
- search: t.optional(t.text({ description: "Search in description" }))
2075
- });
2076
-
2077
- //#endregion
2078
- //#region ../../src/api-audits/schemas/auditResourceSchema.ts
2079
- /**
2080
- * Resource schema for audit log responses.
2081
- */
2082
- const auditResourceSchema = audits.schema;
2083
-
2084
- //#endregion
2085
- //#region ../../src/api-audits/schemas/createAuditSchema.ts
2086
- /**
2087
- * Schema for creating a new audit log entry.
2088
- */
2089
- const createAuditSchema = t.object({
2090
- type: t.text({ description: "Audit event type" }),
2091
- action: t.text({ description: "Specific action performed" }),
2092
- severity: t.optional(auditSeveritySchema),
2093
- userId: t.optional(t.uuid()),
2094
- userRealm: t.optional(t.text()),
2095
- userEmail: t.optional(t.email()),
2096
- resourceType: t.optional(t.text()),
2097
- resourceId: t.optional(t.text()),
2098
- description: t.optional(t.text()),
2099
- metadata: t.optional(t.json()),
2100
- ipAddress: t.optional(t.text()),
2101
- userAgent: t.optional(t.text()),
2102
- sessionId: t.optional(t.uuid()),
2103
- requestId: t.optional(t.text()),
2104
- success: t.optional(t.boolean()),
2105
- errorMessage: t.optional(t.text())
2106
- });
2107
-
2108
- //#endregion
2109
- //#region ../../src/api-audits/services/AuditService.ts
2110
- /**
2111
- * Service for managing audit logs.
2112
- *
2113
- * Provides methods for:
2114
- * - Creating audit entries
2115
- * - Querying audit history
2116
- * - Aggregating audit statistics
2117
- * - Managing registered audit types
2118
- */
2119
- var AuditService = class {
2120
- alepha = $inject(Alepha);
2121
- log = $logger();
2122
- repo = $repository(audits);
2123
- /**
2124
- * Registry of audit types and their allowed actions.
2125
- */
2126
- auditTypes = /* @__PURE__ */ new Map();
2127
- /**
2128
- * Register an audit type with its allowed actions.
2129
- */
2130
- registerType(definition) {
2131
- this.auditTypes.set(definition.type, definition);
2132
- this.log.debug("Audit type registered", {
2133
- type: definition.type,
2134
- actions: definition.actions
2135
- });
2136
- }
2137
- /**
2138
- * Get all registered audit types.
2139
- */
2140
- getRegisteredTypes() {
2141
- return Array.from(this.auditTypes.values());
2142
- }
2143
- /**
2144
- * Get current request context if available.
2145
- */
2146
- getRequestContext() {
2147
- return this.alepha.context.get("request");
2148
- }
2149
- /**
2150
- * Create a new audit log entry.
2151
- * Automatically populates ipAddress, userAgent, and requestId from the current request context.
2152
- */
2153
- async create(data) {
2154
- const request = this.getRequestContext();
2155
- const contextData = {};
2156
- if (request) {
2157
- if (!data.ipAddress && request.ip) contextData.ipAddress = request.ip;
2158
- if (!data.userAgent && request.headers["user-agent"]) contextData.userAgent = request.headers["user-agent"];
2159
- if (!data.requestId && request.requestId) contextData.requestId = request.requestId;
2160
- if (!data.sessionId && request.metadata?.sessionId) contextData.sessionId = request.metadata.sessionId;
2161
- const user = request.user;
2162
- if (user) {
2163
- if (!data.userId && user.id) contextData.userId = user.id;
2164
- if (!data.userEmail && user.email) contextData.userEmail = user.email;
2165
- if (!data.userRealm && user.realm) contextData.userRealm = user.realm;
2166
- }
2167
- }
2168
- this.log.trace("Creating audit entry", {
2169
- type: data.type,
2170
- action: data.action,
2171
- userId: data.userId ?? contextData.userId
2172
- });
2173
- const entry = await this.repo.create({
2174
- ...contextData,
2175
- ...data,
2176
- severity: data.severity ?? "info",
2177
- success: data.success ?? true
2178
- });
2179
- this.log.debug("Audit entry created", {
2180
- id: entry.id,
2181
- type: data.type,
2182
- action: data.action
2183
- });
2184
- return entry;
2185
- }
2186
- /**
2187
- * Record an audit event (convenience method).
2188
- */
2189
- async record(type, action, options = {}) {
2190
- return this.create({
2191
- type,
2192
- action,
2193
- ...options
2194
- });
2195
- }
2196
- /**
2197
- * Record an authentication event.
2198
- */
2199
- async recordAuth(action, options = {}) {
2200
- return this.create({
2201
- type: "auth",
2202
- action,
2203
- severity: action === "login_failed" ? "warning" : "info",
2204
- ...options
2205
- });
2206
- }
2207
- /**
2208
- * Record a user management event.
2209
- */
2210
- async recordUser(action, options = {}) {
2211
- return this.create({
2212
- type: "user",
2213
- action,
2214
- resourceType: "user",
2215
- ...options
2216
- });
2217
- }
2218
- /**
2219
- * Record a data access event.
2220
- */
2221
- async recordAccess(action, options = {}) {
2222
- return this.create({
2223
- type: "access",
2224
- action,
2225
- ...options
2226
- });
2227
- }
2228
- /**
2229
- * Record a security event.
2230
- */
2231
- async recordSecurity(action, options = {}) {
2232
- return this.create({
2233
- type: "security",
2234
- action,
2235
- severity: "warning",
2236
- ...options
2237
- });
2238
- }
2239
- /**
2240
- * Record a system event.
2241
- */
2242
- async recordSystem(action, options = {}) {
2243
- return this.create({
2244
- type: "system",
2245
- action,
2246
- severity: action === "error" ? "critical" : "info",
2247
- ...options
2248
- });
2249
- }
2250
- /**
2251
- * Find audit entries with filtering and pagination.
2252
- */
2253
- async find(query = {}) {
2254
- this.log.trace("Finding audit entries", { query });
2255
- query.sort ??= "-createdAt";
2256
- const where = this.repo.createQueryWhere();
2257
- if (query.type) where.type = { eq: query.type };
2258
- if (query.action) where.action = { eq: query.action };
2259
- if (query.severity) where.severity = { eq: query.severity };
2260
- if (query.userId) where.userId = { eq: query.userId };
2261
- if (query.userRealm) where.userRealm = { eq: query.userRealm };
2262
- if (query.resourceType) where.resourceType = { eq: query.resourceType };
2263
- if (query.resourceId) where.resourceId = { eq: query.resourceId };
2264
- if (query.success !== void 0) where.success = { eq: query.success };
2265
- if (query.from) where.createdAt = {
2266
- ...where.createdAt,
2267
- gte: query.from
2268
- };
2269
- if (query.to) where.createdAt = {
2270
- ...where.createdAt,
2271
- lte: query.to
2272
- };
2273
- if (query.search) where.description = { like: `%${query.search}%` };
2274
- const result = await this.repo.paginate(query, { where }, { count: true });
2275
- this.log.debug("Audit entries found", {
2276
- count: result.content.length,
2277
- total: result.page.totalElements
2278
- });
2279
- return result;
2280
- }
2281
- /**
2282
- * Get audit entry by ID.
2283
- */
2284
- async getById(id) {
2285
- return this.repo.findById(id);
2286
- }
2287
- /**
2288
- * Get audit entries for a specific user.
2289
- */
2290
- async findByUser(userId, query = {}) {
2291
- return this.find({
2292
- ...query,
2293
- userId
2294
- });
2295
- }
2296
- /**
2297
- * Get audit entries for a specific resource.
2298
- */
2299
- async findByResource(resourceType, resourceId, query = {}) {
2300
- return this.find({
2301
- ...query,
2302
- resourceType,
2303
- resourceId
2304
- });
2305
- }
2306
- /**
2307
- * Get audit statistics for a time period.
2308
- */
2309
- async getStats(options = {}) {
2310
- this.log.trace("Getting audit stats", options);
2311
- const where = this.repo.createQueryWhere();
2312
- if (options.from) where.createdAt = { gte: options.from.toISOString() };
2313
- if (options.to) where.createdAt = {
2314
- ...where.createdAt,
2315
- lte: options.to.toISOString()
2316
- };
2317
- if (options.userRealm) where.userRealm = { eq: options.userRealm };
2318
- const all = await this.repo.findMany({ where });
2319
- const stats = {
2320
- total: all.length,
2321
- byType: {},
2322
- bySeverity: {
2323
- info: 0,
2324
- warning: 0,
2325
- critical: 0
2326
- },
2327
- successRate: 0,
2328
- recentFailures: []
2329
- };
2330
- let successCount = 0;
2331
- for (const entry of all) {
2332
- stats.byType[entry.type] = (stats.byType[entry.type] || 0) + 1;
2333
- const severity = entry.severity;
2334
- stats.bySeverity[severity]++;
2335
- if (entry.success) successCount++;
2336
- }
2337
- stats.successRate = stats.total > 0 ? successCount / stats.total : 1;
2338
- stats.recentFailures = all.filter((e) => !e.success).sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime()).slice(0, 10);
2339
- return stats;
2340
- }
2341
- /**
2342
- * Delete old audit entries (for retention policy).
2343
- */
2344
- async deleteOlderThan(date) {
2345
- this.log.info("Deleting old audit entries", { olderThan: date });
2346
- const old = await this.repo.findMany({ where: { createdAt: { lt: date.toISOString() } } });
2347
- for (const entry of old) await this.repo.deleteById(entry.id);
2348
- this.log.info("Old audit entries deleted", { count: old.length });
2349
- return old.length;
2350
- }
2351
- };
2352
-
2353
- //#endregion
2354
- //#region ../../src/api-audits/controllers/AuditController.ts
2355
- /**
2356
- * REST API controller for audit log management.
2357
- *
2358
- * Provides endpoints for:
2359
- * - Querying audit logs with filtering
2360
- * - Creating audit entries
2361
- * - Getting audit statistics
2362
- * - Viewing registered audit types
2363
- */
2364
- var AuditController = class {
2365
- url = "/audits";
2366
- group = "audits";
2367
- auditService = $inject(AuditService);
2368
- /**
2369
- * Find audit entries with filtering and pagination.
2370
- */
2371
- findAudits = $action({
2372
- path: this.url,
2373
- group: this.group,
2374
- description: "Find audit entries with filtering and pagination",
2375
- schema: {
2376
- query: auditQuerySchema,
2377
- response: pg.page(auditResourceSchema)
2378
- },
2379
- handler: ({ query }) => this.auditService.find(query)
2380
- });
2381
- /**
2382
- * Get a single audit entry by ID.
2383
- */
2384
- getAudit = $action({
2385
- path: `${this.url}/:id`,
2386
- group: this.group,
2387
- description: "Get a single audit entry by ID",
2388
- schema: {
2389
- params: t.object({ id: t.text() }),
2390
- response: auditResourceSchema
2391
- },
2392
- handler: ({ params }) => this.auditService.getById(params.id)
2393
- });
2394
- /**
2395
- * Create a new audit entry.
2396
- */
2397
- createAudit = $action({
2398
- method: "POST",
2399
- path: this.url,
2400
- group: this.group,
2401
- description: "Create a new audit entry",
2402
- schema: {
2403
- body: createAuditSchema,
2404
- response: auditResourceSchema
2405
- },
2406
- handler: ({ body }) => this.auditService.create(body)
2407
- });
2408
- /**
2409
- * Get audit entries for a specific user.
2410
- */
2411
- findByUser = $action({
2412
- path: `${this.url}/user/:userId`,
2413
- group: this.group,
2414
- description: "Get audit entries for a specific user",
2415
- schema: {
2416
- params: t.object({ userId: t.uuid() }),
2417
- query: t.omit(auditQuerySchema, ["userId"]),
2418
- response: pg.page(auditResourceSchema)
2419
- },
2420
- handler: ({ params, query }) => this.auditService.findByUser(params.userId, query)
2421
- });
2422
- /**
2423
- * Get audit entries for a specific resource.
2424
- */
2425
- findByResource = $action({
2426
- path: `${this.url}/resource/:resourceType/:resourceId`,
2427
- group: this.group,
2428
- description: "Get audit entries for a specific resource",
2429
- schema: {
2430
- params: t.object({
2431
- resourceType: t.text(),
2432
- resourceId: t.text()
2433
- }),
2434
- query: t.omit(auditQuerySchema, ["resourceType", "resourceId"]),
2435
- response: pg.page(auditResourceSchema)
2436
- },
2437
- handler: ({ params, query }) => this.auditService.findByResource(params.resourceType, params.resourceId, query)
2438
- });
2439
- /**
2440
- * Get audit statistics.
2441
- */
2442
- getStats = $action({
2443
- path: `${this.url}/stats`,
2444
- group: this.group,
2445
- description: "Get audit statistics for a time period",
2446
- schema: {
2447
- query: t.object({
2448
- from: t.optional(t.datetime()),
2449
- to: t.optional(t.datetime()),
2450
- userRealm: t.optional(t.text())
2451
- }),
2452
- response: t.object({
2453
- total: t.integer(),
2454
- byType: t.record(t.text(), t.integer()),
2455
- bySeverity: t.object({
2456
- info: t.integer(),
2457
- warning: t.integer(),
2458
- critical: t.integer()
2459
- }),
2460
- successRate: t.number(),
2461
- recentFailures: t.array(auditResourceSchema)
2462
- })
2463
- },
2464
- handler: ({ query }) => this.auditService.getStats({
2465
- from: query.from ? new Date(query.from) : void 0,
2466
- to: query.to ? new Date(query.to) : void 0,
2467
- userRealm: query.userRealm
2468
- })
2469
- });
2470
- /**
2471
- * Get registered audit types.
2472
- */
2473
- getTypes = $action({
2474
- path: `${this.url}/types`,
2475
- group: this.group,
2476
- description: "Get all registered audit types",
2477
- schema: { response: t.array(t.object({
2478
- type: t.text(),
2479
- description: t.optional(t.text()),
2480
- actions: t.array(t.text())
2481
- })) },
2482
- handler: () => this.auditService.getRegisteredTypes()
2483
- });
2484
- /**
2485
- * Get distinct values for filters.
2486
- */
2487
- getFilterOptions = $action({
2488
- path: `${this.url}/filters`,
2489
- group: this.group,
2490
- description: "Get distinct values for audit filters",
2491
- schema: { response: t.object({
2492
- types: t.array(t.text()),
2493
- actions: t.array(t.text()),
2494
- resourceTypes: t.array(t.text()),
2495
- userRealms: t.array(t.text())
2496
- }) },
2497
- handler: async () => {
2498
- const types = this.auditService.getRegisteredTypes();
2499
- return {
2500
- types: types.map((t$1) => t$1.type),
2501
- actions: types.flatMap((t$1) => t$1.actions),
2502
- resourceTypes: [
2503
- "user",
2504
- "session",
2505
- "file",
2506
- "order",
2507
- "payment"
2508
- ],
2509
- userRealms: ["default"]
2510
- };
2511
- }
2512
- });
2513
- };
2514
-
2515
- //#endregion
2516
- //#region ../../src/api-audits/primitives/$audit.ts
2517
- /**
2518
- * Audit type primitive for registering domain-specific audit events.
2519
- *
2520
- * Provides a type-safe way to define and log audit events within a specific domain.
2521
- *
2522
- * @example
2523
- * ```ts
2524
- * class PaymentAudits {
2525
- * audit = $audit({
2526
- * type: "payment",
2527
- * description: "Payment-related audit events",
2528
- * actions: ["create", "refund", "cancel", "dispute"],
2529
- * });
2530
- *
2531
- * async logPaymentCreated(paymentId: string, userId: string, amount: number) {
2532
- * await this.audit.log("create", {
2533
- * userId,
2534
- * resourceType: "payment",
2535
- * resourceId: paymentId,
2536
- * description: `Payment of ${amount} created`,
2537
- * metadata: { amount },
2538
- * });
2539
- * }
2540
- * }
2541
- * ```
2542
- */
2543
- var AuditPrimitive = class extends Primitive {
2544
- auditService = $inject(AuditService);
2545
- /**
2546
- * The audit type identifier.
2547
- */
2548
- get type() {
2549
- return this.options.type;
2550
- }
2551
- /**
2552
- * The audit type description.
2553
- */
2554
- get description() {
2555
- return this.options.description;
2556
- }
2557
- /**
2558
- * The allowed actions for this audit type.
2559
- */
2560
- get actions() {
2561
- return this.options.actions;
2562
- }
2563
- /**
2564
- * Log an audit event for this type.
2565
- */
2566
- async log(action, options = {}) {
2567
- await this.auditService.record(this.options.type, action, options);
2568
- }
2569
- /**
2570
- * Log a successful audit event.
2571
- */
2572
- async logSuccess(action, options = {}) {
2573
- await this.log(action, {
2574
- ...options,
2575
- success: true
2576
- });
2577
- }
2578
- /**
2579
- * Log a failed audit event.
2580
- */
2581
- async logFailure(action, errorMessage, options = {}) {
2582
- await this.log(action, {
2583
- ...options,
2584
- success: false,
2585
- errorMessage
2586
- });
2587
- }
2588
- /**
2589
- * Called during initialization to register this audit type.
2590
- */
2591
- onInit() {
2592
- const definition = {
2593
- type: this.options.type,
2594
- description: this.options.description,
2595
- actions: this.options.actions
2596
- };
2597
- this.auditService.registerType(definition);
2598
- }
2599
- };
2600
- /**
2601
- * Create an audit type primitive.
2602
- *
2603
- * @example
2604
- * ```ts
2605
- * class OrderAudits {
2606
- * audit = $audit({
2607
- * type: "order",
2608
- * description: "Order management events",
2609
- * actions: ["create", "update", "cancel", "fulfill", "ship"],
2610
- * });
2611
- * }
2612
- * ```
2613
- */
2614
- const $audit = (options) => {
2615
- return createPrimitive(AuditPrimitive, options);
2616
- };
2617
- $audit[KIND] = AuditPrimitive;
2618
-
2619
- //#endregion
2620
- //#region ../../src/api-audits/index.ts
2621
- /**
2622
- * Provides audit logging API endpoints for Alepha applications.
2623
- *
2624
- * This module includes:
2625
- * - Audit log CRUD operations
2626
- * - Filtering and searching audit events
2627
- * - Audit statistics and analytics
2628
- * - `$audit` primitive for domain-specific audit types
2629
- *
2630
- * @module alepha.api.audits
2631
- *
2632
- * @example
2633
- * ```ts
2634
- * // In your app module
2635
- * import { AlephaApiAudits } from "alepha/api/audits";
2636
- *
2637
- * const App = $module({
2638
- * name: "app",
2639
- * services: [AlephaApiAudits, ...],
2640
- * });
2641
- *
2642
- * // Create domain-specific audit types
2643
- * class PaymentAudits {
2644
- * audit = $audit({
2645
- * type: "payment",
2646
- * actions: ["create", "refund", "cancel"],
2647
- * });
2648
- *
2649
- * async onPaymentCreated(paymentId: string, userId: string) {
2650
- * await this.audit.log("create", {
2651
- * userId,
2652
- * resourceType: "payment",
2653
- * resourceId: paymentId,
2654
- * });
2655
- * }
2656
- * }
2657
- * ```
2658
- */
2659
- const AlephaApiAudits = $module({
2660
- name: "alepha.api.audits",
2661
- services: [AuditService, AuditController]
2662
- });
2663
-
2664
- //#endregion
2665
- //#region ../../src/api-users/primitives/$userRealm.ts
1998
+ //#region ../../src/api/users/primitives/$userRealm.ts
2666
1999
  /**
2667
2000
  * Already configured realm for user management.
2668
2001
  *
@@ -2737,7 +2070,7 @@ const $userRealm = (options = {}) => {
2737
2070
  };
2738
2071
 
2739
2072
  //#endregion
2740
- //#region ../../src/api-users/schemas/loginSchema.ts
2073
+ //#region ../../src/api/users/schemas/loginSchema.ts
2741
2074
  const loginSchema = t.object({
2742
2075
  username: t.text({
2743
2076
  minLength: 3,
@@ -2751,7 +2084,7 @@ const loginSchema = t.object({
2751
2084
  });
2752
2085
 
2753
2086
  //#endregion
2754
- //#region ../../src/api-users/schemas/registerSchema.ts
2087
+ //#region ../../src/api/users/schemas/registerSchema.ts
2755
2088
  const registerSchema = t.object({
2756
2089
  username: t.string({
2757
2090
  minLength: 3,
@@ -2779,7 +2112,7 @@ const registerSchema = t.object({
2779
2112
  });
2780
2113
 
2781
2114
  //#endregion
2782
- //#region ../../src/api-users/schemas/resetPasswordSchema.ts
2115
+ //#region ../../src/api/users/schemas/resetPasswordSchema.ts
2783
2116
  const resetPasswordRequestSchema = t.object({ email: t.email({ description: "Email address to send password reset link" }) });
2784
2117
  const resetPasswordSchema = t.object({
2785
2118
  token: t.string({ description: "Password reset token from email" }),
@@ -2794,7 +2127,7 @@ const resetPasswordSchema = t.object({
2794
2127
  });
2795
2128
 
2796
2129
  //#endregion
2797
- //#region ../../src/api-users/index.ts
2130
+ //#region ../../src/api/users/index.ts
2798
2131
  /**
2799
2132
  * Provides user management API endpoints for Alepha applications.
2800
2133
  *