alepha 0.14.1 → 0.14.3

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 (402) hide show
  1. package/README.md +3 -3
  2. package/dist/api/audits/index.browser.js +5 -5
  3. package/dist/api/audits/index.browser.js.map +1 -1
  4. package/dist/api/audits/index.d.ts +784 -784
  5. package/dist/api/audits/index.d.ts.map +1 -1
  6. package/dist/api/audits/index.js +13 -13
  7. package/dist/api/audits/index.js.map +1 -1
  8. package/dist/api/files/index.browser.js +5 -5
  9. package/dist/api/files/index.browser.js.map +1 -1
  10. package/dist/api/files/index.d.ts +57 -57
  11. package/dist/api/files/index.d.ts.map +1 -1
  12. package/dist/api/files/index.js +71 -71
  13. package/dist/api/files/index.js.map +1 -1
  14. package/dist/api/jobs/index.browser.js +5 -5
  15. package/dist/api/jobs/index.browser.js.map +1 -1
  16. package/dist/api/jobs/index.d.ts +165 -165
  17. package/dist/api/jobs/index.d.ts.map +1 -1
  18. package/dist/api/jobs/index.js +10 -10
  19. package/dist/api/jobs/index.js.map +1 -1
  20. package/dist/api/notifications/index.browser.js +10 -10
  21. package/dist/api/notifications/index.browser.js.map +1 -1
  22. package/dist/api/notifications/index.d.ts +583 -171
  23. package/dist/api/notifications/index.d.ts.map +1 -1
  24. package/dist/api/notifications/index.js +12 -12
  25. package/dist/api/notifications/index.js.map +1 -1
  26. package/dist/api/parameters/index.browser.js +163 -10
  27. package/dist/api/parameters/index.browser.js.map +1 -1
  28. package/dist/api/parameters/index.d.ts +281 -276
  29. package/dist/api/parameters/index.d.ts.map +1 -1
  30. package/dist/api/parameters/index.js +196 -91
  31. package/dist/api/parameters/index.js.map +1 -1
  32. package/dist/api/users/index.browser.js +19 -19
  33. package/dist/api/users/index.browser.js.map +1 -1
  34. package/dist/api/users/index.d.ts +778 -764
  35. package/dist/api/users/index.d.ts.map +1 -1
  36. package/dist/api/users/index.js +831 -596
  37. package/dist/api/users/index.js.map +1 -1
  38. package/dist/api/verifications/index.browser.js +6 -6
  39. package/dist/api/verifications/index.browser.js.map +1 -1
  40. package/dist/api/verifications/index.d.ts +125 -125
  41. package/dist/api/verifications/index.d.ts.map +1 -1
  42. package/dist/api/verifications/index.js +6 -6
  43. package/dist/api/verifications/index.js.map +1 -1
  44. package/dist/batch/index.js.map +1 -1
  45. package/dist/bin/index.d.ts +1 -2
  46. package/dist/bin/index.js +0 -1
  47. package/dist/bin/index.js.map +1 -1
  48. package/dist/cache/core/index.js.map +1 -1
  49. package/dist/cli/index.d.ts +249 -218
  50. package/dist/cli/index.d.ts.map +1 -1
  51. package/dist/cli/index.js +951 -821
  52. package/dist/cli/index.js.map +1 -1
  53. package/dist/command/index.d.ts +40 -0
  54. package/dist/command/index.d.ts.map +1 -1
  55. package/dist/command/index.js +97 -17
  56. package/dist/command/index.js.map +1 -1
  57. package/dist/core/index.browser.js +14 -18
  58. package/dist/core/index.browser.js.map +1 -1
  59. package/dist/core/index.d.ts +29 -0
  60. package/dist/core/index.d.ts.map +1 -1
  61. package/dist/core/index.js +21 -24
  62. package/dist/core/index.js.map +1 -1
  63. package/dist/core/index.native.js +21 -24
  64. package/dist/core/index.native.js.map +1 -1
  65. package/dist/datetime/index.js.map +1 -1
  66. package/dist/fake/index.js +195 -168
  67. package/dist/fake/index.js.map +1 -1
  68. package/dist/file/index.d.ts +8 -0
  69. package/dist/file/index.d.ts.map +1 -1
  70. package/dist/file/index.js +3 -0
  71. package/dist/file/index.js.map +1 -1
  72. package/dist/lock/redis/index.js.map +1 -1
  73. package/dist/logger/index.js.map +1 -1
  74. package/dist/mcp/index.d.ts.map +1 -1
  75. package/dist/mcp/index.js.map +1 -1
  76. package/dist/orm/index.browser.js +26 -5
  77. package/dist/orm/index.browser.js.map +1 -1
  78. package/dist/orm/index.d.ts +146 -121
  79. package/dist/orm/index.d.ts.map +1 -1
  80. package/dist/orm/index.js +49 -24
  81. package/dist/orm/index.js.map +1 -1
  82. package/dist/redis/index.js.map +1 -1
  83. package/dist/retry/index.js.map +1 -1
  84. package/dist/router/index.js.map +1 -1
  85. package/dist/scheduler/index.d.ts +6 -6
  86. package/dist/scheduler/index.js.map +1 -1
  87. package/dist/security/index.d.ts +29 -29
  88. package/dist/security/index.d.ts.map +1 -1
  89. package/dist/security/index.js +1 -1
  90. package/dist/security/index.js.map +1 -1
  91. package/dist/server/auth/index.d.ts +171 -155
  92. package/dist/server/auth/index.d.ts.map +1 -1
  93. package/dist/server/auth/index.js +0 -1
  94. package/dist/server/auth/index.js.map +1 -1
  95. package/dist/server/cache/index.js.map +1 -1
  96. package/dist/server/compress/index.d.ts.map +1 -1
  97. package/dist/server/compress/index.js +2 -0
  98. package/dist/server/compress/index.js.map +1 -1
  99. package/dist/server/cookies/index.browser.js.map +1 -1
  100. package/dist/server/cookies/index.js.map +1 -1
  101. package/dist/server/core/index.browser.js.map +1 -1
  102. package/dist/server/core/index.d.ts.map +1 -1
  103. package/dist/server/core/index.js +1 -1
  104. package/dist/server/core/index.js.map +1 -1
  105. package/dist/server/health/index.d.ts +17 -17
  106. package/dist/server/helmet/index.js.map +1 -1
  107. package/dist/server/links/index.browser.js +22 -6
  108. package/dist/server/links/index.browser.js.map +1 -1
  109. package/dist/server/links/index.d.ts +46 -44
  110. package/dist/server/links/index.d.ts.map +1 -1
  111. package/dist/server/links/index.js +24 -41
  112. package/dist/server/links/index.js.map +1 -1
  113. package/dist/server/multipart/index.js.map +1 -1
  114. package/dist/server/rate-limit/index.js.map +1 -1
  115. package/dist/server/security/index.js.map +1 -1
  116. package/dist/server/swagger/index.d.ts +2 -1
  117. package/dist/server/swagger/index.d.ts.map +1 -1
  118. package/dist/server/swagger/index.js +8 -3
  119. package/dist/server/swagger/index.js.map +1 -1
  120. package/dist/thread/index.js.map +1 -1
  121. package/dist/topic/core/index.js.map +1 -1
  122. package/dist/vite/index.d.ts.map +1 -1
  123. package/dist/vite/index.js +12 -4
  124. package/dist/vite/index.js.map +1 -1
  125. package/dist/websocket/index.browser.js.map +1 -1
  126. package/dist/websocket/index.js.map +1 -1
  127. package/package.json +7 -7
  128. package/src/api/audits/controllers/{AuditController.ts → AdminAuditController.ts} +5 -6
  129. package/src/api/audits/entities/audits.ts +5 -5
  130. package/src/api/audits/index.browser.ts +1 -1
  131. package/src/api/audits/index.ts +3 -3
  132. package/src/api/audits/primitives/$audit.spec.ts +276 -0
  133. package/src/api/audits/services/AuditService.spec.ts +495 -0
  134. package/src/api/files/__tests__/$bucket.spec.ts +91 -0
  135. package/src/api/files/controllers/AdminFileStatsController.spec.ts +166 -0
  136. package/src/api/files/controllers/{StorageStatsController.ts → AdminFileStatsController.ts} +2 -2
  137. package/src/api/files/controllers/FileController.spec.ts +558 -0
  138. package/src/api/files/controllers/FileController.ts +4 -5
  139. package/src/api/files/entities/files.ts +5 -5
  140. package/src/api/files/index.browser.ts +1 -1
  141. package/src/api/files/index.ts +4 -4
  142. package/src/api/files/jobs/FileJobs.spec.ts +52 -0
  143. package/src/api/files/services/FileService.spec.ts +109 -0
  144. package/src/api/jobs/__tests__/JobController.spec.ts +343 -0
  145. package/src/api/jobs/controllers/{JobController.ts → AdminJobController.ts} +2 -2
  146. package/src/api/jobs/entities/jobExecutions.ts +5 -5
  147. package/src/api/jobs/index.ts +3 -3
  148. package/src/api/jobs/primitives/$job.spec.ts +476 -0
  149. package/src/api/notifications/controllers/{NotificationController.ts → AdminNotificationController.ts} +4 -5
  150. package/src/api/notifications/entities/notifications.ts +5 -5
  151. package/src/api/notifications/index.browser.ts +1 -1
  152. package/src/api/notifications/index.ts +4 -4
  153. package/src/api/parameters/controllers/{ConfigController.ts → AdminConfigController.ts} +46 -107
  154. package/src/api/parameters/entities/parameters.ts +7 -17
  155. package/src/api/parameters/index.ts +3 -3
  156. package/src/api/parameters/primitives/$config.spec.ts +356 -0
  157. package/src/api/parameters/schemas/activateConfigBodySchema.ts +12 -0
  158. package/src/api/parameters/schemas/checkScheduledResponseSchema.ts +8 -0
  159. package/src/api/parameters/schemas/configCurrentResponseSchema.ts +13 -0
  160. package/src/api/parameters/schemas/configHistoryResponseSchema.ts +9 -0
  161. package/src/api/parameters/schemas/configNameParamSchema.ts +10 -0
  162. package/src/api/parameters/schemas/configNamesResponseSchema.ts +8 -0
  163. package/src/api/parameters/schemas/configTreeNodeSchema.ts +13 -0
  164. package/src/api/parameters/schemas/configVersionParamSchema.ts +9 -0
  165. package/src/api/parameters/schemas/configVersionResponseSchema.ts +9 -0
  166. package/src/api/parameters/schemas/configsByStatusResponseSchema.ts +9 -0
  167. package/src/api/parameters/schemas/createConfigVersionBodySchema.ts +24 -0
  168. package/src/api/parameters/schemas/index.ts +15 -0
  169. package/src/api/parameters/schemas/parameterResponseSchema.ts +26 -0
  170. package/src/api/parameters/schemas/parameterStatusSchema.ts +13 -0
  171. package/src/api/parameters/schemas/rollbackConfigBodySchema.ts +15 -0
  172. package/src/api/parameters/schemas/statusParamSchema.ts +9 -0
  173. package/src/api/users/__tests__/EmailVerification.spec.ts +369 -0
  174. package/src/api/users/__tests__/PasswordReset.spec.ts +550 -0
  175. package/src/api/users/controllers/AdminIdentityController.spec.ts +365 -0
  176. package/src/api/users/controllers/{IdentityController.ts → AdminIdentityController.ts} +3 -4
  177. package/src/api/users/controllers/AdminSessionController.spec.ts +274 -0
  178. package/src/api/users/controllers/{SessionController.ts → AdminSessionController.ts} +3 -4
  179. package/src/api/users/controllers/AdminUserController.spec.ts +372 -0
  180. package/src/api/users/controllers/AdminUserController.ts +116 -0
  181. package/src/api/users/controllers/UserController.ts +4 -107
  182. package/src/api/users/controllers/UserRealmController.ts +3 -0
  183. package/src/api/users/entities/identities.ts +6 -6
  184. package/src/api/users/entities/sessions.ts +6 -6
  185. package/src/api/users/entities/users.ts +9 -9
  186. package/src/api/users/index.ts +13 -6
  187. package/src/api/users/primitives/$userRealm.ts +13 -8
  188. package/src/api/users/services/CredentialService.spec.ts +509 -0
  189. package/src/api/users/services/CredentialService.ts +46 -0
  190. package/src/api/users/services/IdentityService.ts +15 -0
  191. package/src/api/users/services/RegistrationService.spec.ts +630 -0
  192. package/src/api/users/services/RegistrationService.ts +18 -0
  193. package/src/api/users/services/SessionService.spec.ts +301 -0
  194. package/src/api/users/services/SessionService.ts +110 -1
  195. package/src/api/users/services/UserService.ts +67 -2
  196. package/src/api/verifications/__tests__/CodeVerification.spec.ts +318 -0
  197. package/src/api/verifications/__tests__/LinkVerification.spec.ts +279 -0
  198. package/src/api/verifications/entities/verifications.ts +6 -6
  199. package/src/api/verifications/jobs/VerificationJobs.spec.ts +50 -0
  200. package/src/batch/__tests__/startup-buffering.spec.ts +458 -0
  201. package/src/batch/primitives/$batch.spec.ts +766 -0
  202. package/src/batch/providers/BatchProvider.spec.ts +786 -0
  203. package/src/bin/index.ts +0 -1
  204. package/src/bucket/__tests__/shared.ts +194 -0
  205. package/src/bucket/primitives/$bucket.spec.ts +104 -0
  206. package/src/bucket/providers/FileStorageProvider.spec.ts +13 -0
  207. package/src/bucket/providers/LocalFileStorageProvider.spec.ts +77 -0
  208. package/src/bucket/providers/MemoryFileStorageProvider.spec.ts +82 -0
  209. package/src/cache/core/__tests__/shared.ts +377 -0
  210. package/src/cache/core/primitives/$cache.spec.ts +111 -0
  211. package/src/cache/redis/__tests__/cache-redis.spec.ts +70 -0
  212. package/src/cli/apps/AlephaCli.ts +54 -16
  213. package/src/cli/apps/AlephaPackageBuilderCli.ts +2 -1
  214. package/src/cli/assets/appRouterTs.ts +1 -1
  215. package/src/cli/commands/{ViteCommands.ts → build.ts} +2 -105
  216. package/src/cli/commands/clean.ts +14 -0
  217. package/src/cli/commands/{DrizzleCommands.ts → db.ts} +10 -117
  218. package/src/cli/commands/{DeployCommands.ts → deploy.ts} +1 -1
  219. package/src/cli/commands/dev.ts +69 -0
  220. package/src/cli/commands/format.ts +17 -0
  221. package/src/cli/commands/gen/changelog.spec.ts +315 -0
  222. package/src/cli/commands/{ChangelogCommands.ts → gen/changelog.ts} +16 -31
  223. package/src/cli/commands/gen/openapi.ts +71 -0
  224. package/src/cli/commands/gen.ts +18 -0
  225. package/src/cli/commands/{CoreCommands.ts → init.ts} +4 -40
  226. package/src/cli/commands/lint.ts +17 -0
  227. package/src/cli/commands/root.ts +41 -0
  228. package/src/cli/commands/run.ts +24 -0
  229. package/src/cli/commands/test.ts +42 -0
  230. package/src/cli/commands/typecheck.ts +24 -0
  231. package/src/cli/commands/{VerifyCommands.ts → verify.ts} +1 -13
  232. package/src/cli/defineConfig.ts +10 -1
  233. package/src/cli/index.ts +17 -7
  234. package/src/cli/services/AlephaCliUtils.ts +71 -32
  235. package/src/cli/services/GitMessageParser.ts +1 -1
  236. package/src/command/helpers/Asker.spec.ts +127 -0
  237. package/src/command/helpers/Runner.spec.ts +126 -0
  238. package/src/command/primitives/$command.spec.ts +1588 -0
  239. package/src/command/providers/CliProvider.ts +74 -24
  240. package/src/core/Alepha.ts +52 -4
  241. package/src/core/__tests__/Alepha-emit.spec.ts +22 -0
  242. package/src/core/__tests__/Alepha-graph.spec.ts +93 -0
  243. package/src/core/__tests__/Alepha-has.spec.ts +41 -0
  244. package/src/core/__tests__/Alepha-inject.spec.ts +93 -0
  245. package/src/core/__tests__/Alepha-register.spec.ts +81 -0
  246. package/src/core/__tests__/Alepha-start.spec.ts +176 -0
  247. package/src/core/__tests__/Alepha-with.spec.ts +14 -0
  248. package/src/core/__tests__/TypeBox-usecases.spec.ts +35 -0
  249. package/src/core/__tests__/TypeBoxLocale.spec.ts +15 -0
  250. package/src/core/__tests__/descriptor.spec.ts +34 -0
  251. package/src/core/__tests__/fixtures/A.ts +5 -0
  252. package/src/core/__tests__/pagination.spec.ts +77 -0
  253. package/src/core/helpers/jsonSchemaToTypeBox.ts +2 -2
  254. package/src/core/primitives/$atom.spec.ts +43 -0
  255. package/src/core/primitives/$hook.spec.ts +130 -0
  256. package/src/core/primitives/$inject.spec.ts +175 -0
  257. package/src/core/primitives/$module.spec.ts +115 -0
  258. package/src/core/providers/CodecManager.spec.ts +740 -0
  259. package/src/core/providers/EventManager.spec.ts +762 -0
  260. package/src/core/providers/EventManager.ts +4 -0
  261. package/src/core/providers/StateManager.spec.ts +365 -0
  262. package/src/core/providers/TypeProvider.spec.ts +1607 -0
  263. package/src/core/providers/TypeProvider.ts +20 -26
  264. package/src/datetime/primitives/$interval.spec.ts +103 -0
  265. package/src/datetime/providers/DateTimeProvider.spec.ts +86 -0
  266. package/src/email/primitives/$email.spec.ts +175 -0
  267. package/src/email/providers/LocalEmailProvider.spec.ts +341 -0
  268. package/src/fake/__tests__/keyName.example.ts +40 -0
  269. package/src/fake/__tests__/keyName.spec.ts +152 -0
  270. package/src/fake/__tests__/module.example.ts +32 -0
  271. package/src/fake/providers/FakeProvider.spec.ts +438 -0
  272. package/src/file/providers/FileSystemProvider.ts +8 -0
  273. package/src/file/providers/NodeFileSystemProvider.spec.ts +418 -0
  274. package/src/file/providers/NodeFileSystemProvider.ts +5 -0
  275. package/src/file/services/FileDetector.spec.ts +591 -0
  276. package/src/lock/core/__tests__/shared.ts +190 -0
  277. package/src/lock/core/providers/MemoryLockProvider.spec.ts +25 -0
  278. package/src/lock/redis/providers/RedisLockProvider.spec.ts +25 -0
  279. package/src/logger/__tests__/SimpleFormatterProvider.spec.ts +109 -0
  280. package/src/logger/primitives/$logger.spec.ts +108 -0
  281. package/src/logger/services/Logger.spec.ts +295 -0
  282. package/src/mcp/__tests__/errors.spec.ts +175 -0
  283. package/src/mcp/__tests__/integration.spec.ts +450 -0
  284. package/src/mcp/helpers/jsonrpc.spec.ts +380 -0
  285. package/src/mcp/primitives/$prompt.spec.ts +468 -0
  286. package/src/mcp/primitives/$resource.spec.ts +390 -0
  287. package/src/mcp/primitives/$tool.spec.ts +406 -0
  288. package/src/mcp/providers/McpServerProvider.spec.ts +797 -0
  289. package/src/orm/__tests__/$repository-crud.spec.ts +276 -0
  290. package/src/orm/__tests__/$repository-hooks.spec.ts +325 -0
  291. package/src/orm/__tests__/$repository-orderBy.spec.ts +128 -0
  292. package/src/orm/__tests__/$repository-pagination-sort.spec.ts +149 -0
  293. package/src/orm/__tests__/$repository-save.spec.ts +37 -0
  294. package/src/orm/__tests__/ModelBuilder-integration.spec.ts +490 -0
  295. package/src/orm/__tests__/ModelBuilder-types.spec.ts +186 -0
  296. package/src/orm/__tests__/PostgresProvider.spec.ts +46 -0
  297. package/src/orm/__tests__/delete-returning.spec.ts +256 -0
  298. package/src/orm/__tests__/deletedAt.spec.ts +80 -0
  299. package/src/orm/__tests__/enums.spec.ts +315 -0
  300. package/src/orm/__tests__/execute.spec.ts +72 -0
  301. package/src/orm/__tests__/fixtures/bigEntitySchema.ts +65 -0
  302. package/src/orm/__tests__/fixtures/userEntitySchema.ts +27 -0
  303. package/src/orm/__tests__/joins.spec.ts +1114 -0
  304. package/src/orm/__tests__/page.spec.ts +287 -0
  305. package/src/orm/__tests__/primaryKey.spec.ts +87 -0
  306. package/src/orm/__tests__/query-date-encoding.spec.ts +402 -0
  307. package/src/orm/__tests__/ref-auto-onDelete.spec.ts +156 -0
  308. package/src/orm/__tests__/references.spec.ts +102 -0
  309. package/src/orm/__tests__/security.spec.ts +710 -0
  310. package/src/orm/__tests__/sqlite.spec.ts +111 -0
  311. package/src/orm/__tests__/string-operators.spec.ts +429 -0
  312. package/src/orm/__tests__/timestamps.spec.ts +388 -0
  313. package/src/orm/__tests__/validation.spec.ts +183 -0
  314. package/src/orm/__tests__/version.spec.ts +64 -0
  315. package/src/orm/helpers/parseQueryString.spec.ts +196 -0
  316. package/src/orm/index.browser.ts +1 -1
  317. package/src/orm/index.ts +10 -6
  318. package/src/orm/primitives/$repository.spec.ts +137 -0
  319. package/src/orm/primitives/$sequence.spec.ts +29 -0
  320. package/src/orm/primitives/$transaction.spec.ts +82 -0
  321. package/src/orm/providers/{PostgresTypeProvider.ts → DatabaseTypeProvider.ts} +25 -3
  322. package/src/orm/providers/drivers/BunPostgresProvider.ts +3 -3
  323. package/src/orm/providers/drivers/BunSqliteProvider.ts +1 -1
  324. package/src/orm/providers/drivers/CloudflareD1Provider.ts +1 -1
  325. package/src/orm/providers/drivers/DatabaseProvider.ts +1 -1
  326. package/src/orm/providers/drivers/NodePostgresProvider.ts +3 -3
  327. package/src/orm/providers/drivers/NodeSqliteProvider.ts +1 -1
  328. package/src/orm/providers/drivers/PglitePostgresProvider.ts +2 -2
  329. package/src/orm/services/ModelBuilder.spec.ts +575 -0
  330. package/src/orm/services/Repository.spec.ts +137 -0
  331. package/src/queue/core/__tests__/shared.ts +143 -0
  332. package/src/queue/core/providers/MemoryQueueProvider.spec.ts +23 -0
  333. package/src/queue/core/providers/WorkerProvider.spec.ts +378 -0
  334. package/src/queue/redis/providers/RedisQueueProvider.spec.ts +23 -0
  335. package/src/redis/__tests__/redis.spec.ts +58 -0
  336. package/src/retry/primitives/$retry.spec.ts +234 -0
  337. package/src/retry/providers/RetryProvider.spec.ts +438 -0
  338. package/src/router/__tests__/match.spec.ts +252 -0
  339. package/src/router/providers/RouterProvider.spec.ts +197 -0
  340. package/src/scheduler/__tests__/$scheduler-cron.spec.ts +25 -0
  341. package/src/scheduler/__tests__/$scheduler-interval.spec.ts +25 -0
  342. package/src/scheduler/__tests__/shared.ts +77 -0
  343. package/src/security/__tests__/bug-1-wildcard-after-start.spec.ts +229 -0
  344. package/src/security/__tests__/bug-2-password-validation.spec.ts +245 -0
  345. package/src/security/__tests__/bug-3-regex-vulnerability.spec.ts +407 -0
  346. package/src/security/__tests__/bug-4-oauth2-validation.spec.ts +439 -0
  347. package/src/security/__tests__/multi-layer-permissions.spec.ts +522 -0
  348. package/src/security/primitives/$permission.spec.ts +30 -0
  349. package/src/security/primitives/$permission.ts +2 -2
  350. package/src/security/primitives/$realm.spec.ts +101 -0
  351. package/src/security/primitives/$role.spec.ts +52 -0
  352. package/src/security/primitives/$serviceAccount.spec.ts +61 -0
  353. package/src/security/providers/SecurityProvider.spec.ts +350 -0
  354. package/src/server/auth/providers/ServerAuthProvider.ts +0 -2
  355. package/src/server/cache/providers/ServerCacheProvider.spec.ts +942 -0
  356. package/src/server/compress/providers/ServerCompressProvider.spec.ts +31 -0
  357. package/src/server/compress/providers/ServerCompressProvider.ts +2 -0
  358. package/src/server/cookies/providers/ServerCookiesProvider.spec.ts +253 -0
  359. package/src/server/core/__tests__/ServerRouterProvider-getRoutes.spec.ts +334 -0
  360. package/src/server/core/__tests__/ServerRouterProvider-requestId.spec.ts +129 -0
  361. package/src/server/core/primitives/$action.spec.ts +191 -0
  362. package/src/server/core/primitives/$route.spec.ts +65 -0
  363. package/src/server/core/providers/ServerBodyParserProvider.spec.ts +93 -0
  364. package/src/server/core/providers/ServerLoggerProvider.spec.ts +100 -0
  365. package/src/server/core/providers/ServerProvider.ts +3 -1
  366. package/src/server/core/services/HttpClient.spec.ts +123 -0
  367. package/src/server/core/services/UserAgentParser.spec.ts +111 -0
  368. package/src/server/cors/providers/ServerCorsProvider.spec.ts +481 -0
  369. package/src/server/health/providers/ServerHealthProvider.spec.ts +22 -0
  370. package/src/server/helmet/providers/ServerHelmetProvider.spec.ts +105 -0
  371. package/src/server/links/__tests__/$action.spec.ts +238 -0
  372. package/src/server/links/__tests__/fixtures/CrudApp.ts +122 -0
  373. package/src/server/links/__tests__/requestId.spec.ts +120 -0
  374. package/src/server/links/primitives/$remote.spec.ts +228 -0
  375. package/src/server/links/providers/LinkProvider.spec.ts +54 -0
  376. package/src/server/links/providers/LinkProvider.ts +49 -3
  377. package/src/server/links/providers/ServerLinksProvider.ts +1 -53
  378. package/src/server/links/schemas/apiLinksResponseSchema.ts +7 -0
  379. package/src/server/metrics/providers/ServerMetricsProvider.spec.ts +25 -0
  380. package/src/server/multipart/providers/ServerMultipartProvider.spec.ts +528 -0
  381. package/src/server/proxy/primitives/$proxy.spec.ts +87 -0
  382. package/src/server/rate-limit/__tests__/ActionRateLimit.spec.ts +211 -0
  383. package/src/server/rate-limit/providers/ServerRateLimitProvider.spec.ts +344 -0
  384. package/src/server/security/__tests__/BasicAuth.spec.ts +684 -0
  385. package/src/server/security/__tests__/ServerSecurityProvider-realm.spec.ts +388 -0
  386. package/src/server/security/providers/ServerSecurityProvider.spec.ts +123 -0
  387. package/src/server/static/primitives/$serve.spec.ts +193 -0
  388. package/src/server/swagger/__tests__/ui.spec.ts +52 -0
  389. package/src/server/swagger/primitives/$swagger.spec.ts +193 -0
  390. package/src/server/swagger/providers/ServerSwaggerProvider.ts +18 -8
  391. package/src/sms/primitives/$sms.spec.ts +165 -0
  392. package/src/sms/providers/LocalSmsProvider.spec.ts +224 -0
  393. package/src/sms/providers/MemorySmsProvider.spec.ts +193 -0
  394. package/src/thread/primitives/$thread.spec.ts +186 -0
  395. package/src/topic/core/__tests__/shared.ts +144 -0
  396. package/src/topic/core/providers/MemoryTopicProvider.spec.ts +23 -0
  397. package/src/topic/redis/providers/RedisTopicProvider.spec.ts +23 -0
  398. package/src/vite/plugins/viteAlephaDev.ts +16 -4
  399. package/src/vite/tasks/runAlepha.ts +7 -1
  400. package/src/websocket/__tests__/$websocket-new.spec.ts +195 -0
  401. package/src/websocket/primitives/$channel.spec.ts +30 -0
  402. package/src/cli/commands/BiomeCommands.ts +0 -29
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/api/audits/entities/audits.ts","../../../src/api/audits/schemas/auditQuerySchema.ts","../../../src/api/audits/schemas/createAuditSchema.ts","../../../src/api/audits/services/AuditService.ts","../../../src/api/audits/controllers/AuditController.ts","../../../src/api/audits/primitives/$audit.ts","../../../src/orm/schemas/insertSchema.ts","../../../src/orm/schemas/updateSchema.ts","../../../src/orm/primitives/$entity.ts","../../../src/orm/constants/PG_SYMBOLS.ts","../../../src/orm/helpers/pgAttr.ts","../../../src/orm/providers/drivers/BunPostgresProvider.ts","../../../src/orm/providers/drivers/BunSqliteProvider.ts","../../../src/orm/providers/drivers/NodePostgresProvider.ts","../../../src/orm/providers/drivers/NodeSqliteProvider.ts","../../../src/orm/index.ts","../../../src/api/audits/schemas/auditResourceSchema.ts","../../../src/api/audits/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/orm/schemas/insertSchema.ts","../../../src/orm/schemas/updateSchema.ts","../../../src/orm/primitives/$entity.ts","../../../src/orm/constants/PG_SYMBOLS.ts","../../../src/orm/helpers/pgAttr.ts","../../../src/orm/providers/drivers/BunPostgresProvider.ts","../../../src/orm/providers/drivers/BunSqliteProvider.ts","../../../src/orm/providers/drivers/NodePostgresProvider.ts","../../../src/orm/providers/drivers/NodeSqliteProvider.ts","../../../src/orm/index.ts","../../../src/api/audits/entities/audits.ts","../../../src/api/audits/schemas/auditQuerySchema.ts","../../../src/api/audits/schemas/createAuditSchema.ts","../../../src/api/audits/services/AuditService.ts","../../../src/api/audits/controllers/AdminAuditController.ts","../../../src/api/audits/primitives/$audit.ts","../../../src/api/audits/schemas/auditResourceSchema.ts","../../../src/api/audits/index.ts"],"sourcesContent":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { $inject, $module, Alepha, KIND, Primitive, createPrimitive, t } from "alepha";
2
- import { $entity, $repository, pageQuerySchema, pg } from "alepha/orm";
3
2
  import { $action } from "alepha/server";
3
+ import { $entity, $repository, db, pageQuerySchema } from "alepha/orm";
4
4
  import { $logger } from "alepha/logger";
5
5
 
6
6
  //#region ../../src/api/audits/entities/audits.ts
@@ -27,11 +27,11 @@ const auditSeveritySchema = t.enum([
27
27
  const audits = $entity({
28
28
  name: "audits",
29
29
  schema: t.object({
30
- id: pg.primaryKey(t.bigint()),
31
- createdAt: pg.createdAt(),
30
+ id: db.primaryKey(t.bigint()),
31
+ createdAt: db.createdAt(),
32
32
  type: t.text({ description: "Audit event type (e.g., auth, user, payment, system)" }),
33
33
  action: t.text({ description: "Specific action performed (e.g., login, create, update)" }),
34
- severity: pg.default(auditSeveritySchema, "info"),
34
+ severity: db.default(auditSeveritySchema, "info"),
35
35
  userId: t.optional(t.uuid()),
36
36
  userRealm: t.optional(t.text()),
37
37
  userEmail: t.optional(t.email()),
@@ -43,7 +43,7 @@ const audits = $entity({
43
43
  userAgent: t.optional(t.text()),
44
44
  sessionId: t.optional(t.uuid()),
45
45
  requestId: t.optional(t.text()),
46
- success: pg.default(t.boolean(), true),
46
+ success: db.default(t.boolean(), true),
47
47
  errorMessage: t.optional(t.text())
48
48
  }),
49
49
  indexes: [
@@ -359,7 +359,7 @@ var AuditService = class {
359
359
  };
360
360
 
361
361
  //#endregion
362
- //#region ../../src/api/audits/controllers/AuditController.ts
362
+ //#region ../../src/api/audits/controllers/AdminAuditController.ts
363
363
  /**
364
364
  * REST API controller for audit log management.
365
365
  *
@@ -369,9 +369,9 @@ var AuditService = class {
369
369
  * - Getting audit statistics
370
370
  * - Viewing registered audit types
371
371
  */
372
- var AuditController = class {
372
+ var AdminAuditController = class {
373
373
  url = "/audits";
374
- group = "audits";
374
+ group = "admin:audits";
375
375
  auditService = $inject(AuditService);
376
376
  /**
377
377
  * Find audit entries with filtering and pagination.
@@ -382,7 +382,7 @@ var AuditController = class {
382
382
  description: "Find audit entries with filtering and pagination",
383
383
  schema: {
384
384
  query: auditQuerySchema,
385
- response: pg.page(auditResourceSchema)
385
+ response: t.page(auditResourceSchema)
386
386
  },
387
387
  handler: ({ query }) => this.auditService.find(query)
388
388
  });
@@ -423,7 +423,7 @@ var AuditController = class {
423
423
  schema: {
424
424
  params: t.object({ userId: t.uuid() }),
425
425
  query: t.omit(auditQuerySchema, ["userId"]),
426
- response: pg.page(auditResourceSchema)
426
+ response: t.page(auditResourceSchema)
427
427
  },
428
428
  handler: ({ params, query }) => this.auditService.findByUser(params.userId, query)
429
429
  });
@@ -440,7 +440,7 @@ var AuditController = class {
440
440
  resourceId: t.text()
441
441
  }),
442
442
  query: t.omit(auditQuerySchema, ["resourceType", "resourceId"]),
443
- response: pg.page(auditResourceSchema)
443
+ response: t.page(auditResourceSchema)
444
444
  },
445
445
  handler: ({ params, query }) => this.auditService.findByResource(params.resourceType, params.resourceId, query)
446
446
  });
@@ -666,9 +666,9 @@ $audit[KIND] = AuditPrimitive;
666
666
  */
667
667
  const AlephaApiAudits = $module({
668
668
  name: "alepha.api.audits",
669
- services: [AuditService, AuditController]
669
+ services: [AuditService, AdminAuditController]
670
670
  });
671
671
 
672
672
  //#endregion
673
- export { $audit, AlephaApiAudits, AuditController, AuditPrimitive, AuditService, auditEntityInsertSchema, auditEntitySchema, auditQuerySchema, auditResourceSchema, auditSeveritySchema, audits, createAuditSchema };
673
+ export { $audit, AdminAuditController, AlephaApiAudits, AuditPrimitive, AuditService, auditEntityInsertSchema, auditEntitySchema, auditQuerySchema, auditResourceSchema, auditSeveritySchema, audits, createAuditSchema };
674
674
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["contextData: Partial<CreateAudit>","stats: AuditStats","t","definition: AuditTypeDefinition"],"sources":["../../../src/api/audits/entities/audits.ts","../../../src/api/audits/schemas/auditQuerySchema.ts","../../../src/api/audits/schemas/auditResourceSchema.ts","../../../src/api/audits/schemas/createAuditSchema.ts","../../../src/api/audits/services/AuditService.ts","../../../src/api/audits/controllers/AuditController.ts","../../../src/api/audits/primitives/$audit.ts","../../../src/api/audits/index.ts"],"sourcesContent":["import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { $entity, pg } from \"alepha/orm\";\n\n/**\n * Audit severity levels for categorizing events.\n */\nexport const auditSeveritySchema = t.enum([\"info\", \"warning\", \"critical\"], {\n default: \"info\",\n description: \"Severity level of the audit event\",\n});\n\nexport type AuditSeverity = Static<typeof auditSeveritySchema>;\n\n/**\n * Audit log entity for tracking important system events.\n *\n * Stores comprehensive audit information including:\n * - Who performed the action (userId, userRealm)\n * - What happened (type, action, resource)\n * - When it happened (createdAt)\n * - Context and details (metadata, ipAddress, userAgent)\n */\nexport const audits = $entity({\n name: \"audits\",\n schema: t.object({\n id: pg.primaryKey(t.bigint()),\n createdAt: pg.createdAt(),\n\n /**\n * Audit event type (e.g., \"auth\", \"user\", \"payment\", \"system\").\n * Used for categorizing and filtering audit events.\n */\n type: t.text({\n description: \"Audit event type (e.g., auth, user, payment, system)\",\n }),\n\n /**\n * Specific action performed (e.g., \"login\", \"logout\", \"create\", \"update\", \"delete\").\n */\n action: t.text({\n description: \"Specific action performed (e.g., login, create, update)\",\n }),\n\n /**\n * Severity level of the event.\n */\n severity: pg.default(auditSeveritySchema, \"info\"),\n\n /**\n * User ID who performed the action (null for system events).\n */\n userId: t.optional(t.uuid()),\n\n /**\n * User realm for multi-tenant support.\n */\n userRealm: t.optional(t.text()),\n\n /**\n * User email at the time of the event (denormalized for history).\n */\n userEmail: t.optional(t.email()),\n\n /**\n * Resource type affected (e.g., \"user\", \"order\", \"file\").\n */\n resourceType: t.optional(t.text()),\n\n /**\n * Resource ID affected.\n */\n resourceId: t.optional(t.text()),\n\n /**\n * Human-readable description of the event.\n */\n description: t.optional(t.text()),\n\n /**\n * Additional metadata/context as JSON.\n */\n metadata: t.optional(t.json()),\n\n /**\n * Client IP address.\n */\n ipAddress: t.optional(t.text()),\n\n /**\n * Client user agent.\n */\n userAgent: t.optional(t.text()),\n\n /**\n * Session ID if applicable.\n */\n sessionId: t.optional(t.uuid()),\n\n /**\n * Request ID for correlation.\n */\n requestId: t.optional(t.text()),\n\n /**\n * Whether the action was successful.\n */\n success: pg.default(t.boolean(), true),\n\n /**\n * Error message if the action failed.\n */\n errorMessage: t.optional(t.text()),\n }),\n indexes: [\n \"createdAt\",\n \"type\",\n \"action\",\n \"userId\",\n \"userRealm\",\n \"resourceType\",\n \"resourceId\",\n \"severity\",\n { columns: [\"type\", \"action\"] },\n { columns: [\"userId\", \"createdAt\"] },\n { columns: [\"userRealm\", \"createdAt\"] },\n ],\n});\n\nexport const auditEntitySchema = audits.schema;\nexport const auditEntityInsertSchema = audits.insertSchema;\nexport type AuditEntity = Static<typeof audits.schema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { pageQuerySchema } from \"alepha/orm\";\nimport { auditSeveritySchema } from \"../entities/audits.ts\";\n\n/**\n * Query schema for searching and filtering audit logs.\n */\nexport const auditQuerySchema = t.extend(pageQuerySchema, {\n type: t.optional(t.text({ description: \"Filter by audit type\" })),\n action: t.optional(t.text({ description: \"Filter by action\" })),\n severity: t.optional(auditSeveritySchema),\n userId: t.optional(t.uuid({ description: \"Filter by user ID\" })),\n userRealm: t.optional(t.text({ description: \"Filter by user realm\" })),\n resourceType: t.optional(t.text({ description: \"Filter by resource type\" })),\n resourceId: t.optional(t.text({ description: \"Filter by resource ID\" })),\n success: t.optional(t.boolean({ description: \"Filter by success status\" })),\n from: t.optional(t.datetime({ description: \"Start date filter\" })),\n to: t.optional(t.datetime({ description: \"End date filter\" })),\n search: t.optional(t.text({ description: \"Search in description\" })),\n});\n\nexport type AuditQuery = Static<typeof auditQuerySchema>;\n","import type { Static } from \"alepha\";\nimport { audits } from \"../entities/audits.ts\";\n\n/**\n * Resource schema for audit log responses.\n */\nexport const auditResourceSchema = audits.schema;\n\nexport type AuditResource = Static<typeof auditResourceSchema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { auditSeveritySchema } from \"../entities/audits.ts\";\n\n/**\n * Schema for creating a new audit log entry.\n */\nexport const createAuditSchema = t.object({\n type: t.text({ description: \"Audit event type\" }),\n action: t.text({ description: \"Specific action performed\" }),\n severity: t.optional(auditSeveritySchema),\n userId: t.optional(t.uuid()),\n userRealm: t.optional(t.text()),\n userEmail: t.optional(t.email()),\n resourceType: t.optional(t.text()),\n resourceId: t.optional(t.text()),\n description: t.optional(t.text()),\n metadata: t.optional(t.json()),\n ipAddress: t.optional(t.text()),\n userAgent: t.optional(t.text()),\n sessionId: t.optional(t.uuid()),\n requestId: t.optional(t.text()),\n success: t.optional(t.boolean()),\n errorMessage: t.optional(t.text()),\n});\n\nexport type CreateAudit = Static<typeof createAuditSchema>;\n","import { $inject, Alepha } from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport { $repository, type Page } from \"alepha/orm\";\nimport type { ServerRequest } from \"alepha/server\";\nimport {\n type AuditEntity,\n type AuditSeverity,\n audits,\n} from \"../entities/audits.ts\";\nimport type { AuditQuery } from \"../schemas/auditQuerySchema.ts\";\nimport type { CreateAudit } from \"../schemas/createAuditSchema.ts\";\n\n/**\n * Registered audit type definition.\n */\nexport interface AuditTypeDefinition {\n type: string;\n description?: string;\n actions: string[];\n}\n\n/**\n * Service for managing audit logs.\n *\n * Provides methods for:\n * - Creating audit entries\n * - Querying audit history\n * - Aggregating audit statistics\n * - Managing registered audit types\n */\nexport class AuditService {\n protected readonly alepha = $inject(Alepha);\n protected readonly log = $logger();\n protected readonly repo = $repository(audits);\n\n /**\n * Registry of audit types and their allowed actions.\n */\n protected readonly auditTypes = new Map<string, AuditTypeDefinition>();\n\n /**\n * Register an audit type with its allowed actions.\n */\n public registerType(definition: AuditTypeDefinition): void {\n this.auditTypes.set(definition.type, definition);\n this.log.debug(\"Audit type registered\", {\n type: definition.type,\n actions: definition.actions,\n });\n }\n\n /**\n * Get all registered audit types.\n */\n public getRegisteredTypes(): AuditTypeDefinition[] {\n return Array.from(this.auditTypes.values());\n }\n\n /**\n * Get current request context if available.\n */\n protected getRequestContext(): ServerRequest | undefined {\n return this.alepha.context.get<ServerRequest>(\"request\");\n }\n\n /**\n * Create a new audit log entry.\n * Automatically populates ipAddress, userAgent, and requestId from the current request context.\n */\n public async create(data: CreateAudit): Promise<AuditEntity> {\n const request = this.getRequestContext();\n\n // Auto-populate from request context if not provided\n const contextData: Partial<CreateAudit> = {};\n\n if (request) {\n if (!data.ipAddress && request.ip) {\n contextData.ipAddress = request.ip;\n }\n if (!data.userAgent && request.headers[\"user-agent\"]) {\n contextData.userAgent = request.headers[\"user-agent\"];\n }\n if (!data.requestId && request.requestId) {\n contextData.requestId = request.requestId;\n }\n // Check for session in metadata\n if (!data.sessionId && request.metadata?.sessionId) {\n contextData.sessionId = request.metadata.sessionId;\n }\n // Extract user from request.user (set by ServerSecurityProvider)\n const user = request.user;\n if (user) {\n if (!data.userId && user.id) {\n contextData.userId = user.id;\n }\n if (!data.userEmail && user.email) {\n contextData.userEmail = user.email;\n }\n if (!data.userRealm && user.realm) {\n contextData.userRealm = user.realm;\n }\n }\n }\n\n this.log.trace(\"Creating audit entry\", {\n type: data.type,\n action: data.action,\n userId: data.userId ?? contextData.userId,\n });\n\n const entry = await this.repo.create({\n ...contextData,\n ...data,\n severity: data.severity ?? \"info\",\n success: data.success ?? true,\n });\n\n this.log.debug(\"Audit entry created\", {\n id: entry.id,\n type: data.type,\n action: data.action,\n });\n\n return entry;\n }\n\n /**\n * Record an audit event (convenience method).\n */\n public async record(\n type: string,\n action: string,\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({ type, action, ...options });\n }\n\n /**\n * Record an authentication event.\n */\n public async recordAuth(\n action:\n | \"login\"\n | \"logout\"\n | \"login_failed\"\n | \"token_refresh\"\n | \"mfa_setup\"\n | \"mfa_verify\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"auth\",\n action,\n severity: action === \"login_failed\" ? \"warning\" : \"info\",\n ...options,\n });\n }\n\n /**\n * Record a user management event.\n */\n public async recordUser(\n action:\n | \"create\"\n | \"update\"\n | \"delete\"\n | \"enable\"\n | \"disable\"\n | \"role_change\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"user\",\n action,\n resourceType: \"user\",\n ...options,\n });\n }\n\n /**\n * Record a data access event.\n */\n public async recordAccess(\n action: \"view\" | \"export\" | \"download\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({ type: \"access\", action, ...options });\n }\n\n /**\n * Record a security event.\n */\n public async recordSecurity(\n action:\n | \"permission_denied\"\n | \"suspicious_activity\"\n | \"rate_limited\"\n | \"blocked\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"security\",\n action,\n severity: \"warning\",\n ...options,\n });\n }\n\n /**\n * Record a system event.\n */\n public async recordSystem(\n action: \"startup\" | \"shutdown\" | \"config_change\" | \"maintenance\" | \"error\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"system\",\n action,\n severity: action === \"error\" ? \"critical\" : \"info\",\n ...options,\n });\n }\n\n /**\n * Find audit entries with filtering and pagination.\n */\n public async find(query: AuditQuery = {}): Promise<Page<AuditEntity>> {\n this.log.trace(\"Finding audit entries\", { query });\n\n query.sort ??= \"-createdAt\";\n\n const where = this.repo.createQueryWhere();\n\n if (query.type) {\n where.type = { eq: query.type };\n }\n\n if (query.action) {\n where.action = { eq: query.action };\n }\n\n if (query.severity) {\n where.severity = { eq: query.severity };\n }\n\n if (query.userId) {\n where.userId = { eq: query.userId };\n }\n\n if (query.userRealm) {\n where.userRealm = { eq: query.userRealm };\n }\n\n if (query.resourceType) {\n where.resourceType = { eq: query.resourceType };\n }\n\n if (query.resourceId) {\n where.resourceId = { eq: query.resourceId };\n }\n\n if (query.success !== undefined) {\n where.success = { eq: query.success };\n }\n\n if (query.from) {\n where.createdAt = { ...(where.createdAt as object), gte: query.from };\n }\n\n if (query.to) {\n where.createdAt = { ...(where.createdAt as object), lte: query.to };\n }\n\n if (query.search) {\n where.description = { like: `%${query.search}%` };\n }\n\n const result = await this.repo.paginate(query, { where }, { count: true });\n\n this.log.debug(\"Audit entries found\", {\n count: result.content.length,\n total: result.page.totalElements,\n });\n\n return result;\n }\n\n /**\n * Get audit entry by ID.\n */\n public async getById(id: string): Promise<AuditEntity> {\n return this.repo.findById(id);\n }\n\n /**\n * Get audit entries for a specific user.\n */\n public async findByUser(\n userId: string,\n query: Omit<AuditQuery, \"userId\"> = {},\n ): Promise<Page<AuditEntity>> {\n return this.find({ ...query, userId });\n }\n\n /**\n * Get audit entries for a specific resource.\n */\n public async findByResource(\n resourceType: string,\n resourceId: string,\n query: Omit<AuditQuery, \"resourceType\" | \"resourceId\"> = {},\n ): Promise<Page<AuditEntity>> {\n return this.find({ ...query, resourceType, resourceId });\n }\n\n /**\n * Get audit statistics for a time period.\n */\n public async getStats(\n options: { from?: Date; to?: Date; userRealm?: string } = {},\n ): Promise<AuditStats> {\n this.log.trace(\"Getting audit stats\", options);\n\n const where = this.repo.createQueryWhere();\n\n if (options.from) {\n where.createdAt = { gte: options.from.toISOString() };\n }\n\n if (options.to) {\n where.createdAt = {\n ...(where.createdAt as object),\n lte: options.to.toISOString(),\n };\n }\n\n if (options.userRealm) {\n where.userRealm = { eq: options.userRealm };\n }\n\n const all = await this.repo.findMany({ where });\n\n const stats: AuditStats = {\n total: all.length,\n byType: {},\n bySeverity: { info: 0, warning: 0, critical: 0 },\n successRate: 0,\n recentFailures: [],\n };\n\n let successCount = 0;\n\n for (const entry of all) {\n // Count by type\n stats.byType[entry.type] = (stats.byType[entry.type] || 0) + 1;\n\n // Count by severity\n const severity = entry.severity as AuditSeverity;\n stats.bySeverity[severity]++;\n\n // Count successes\n if (entry.success) {\n successCount++;\n }\n }\n\n stats.successRate = stats.total > 0 ? successCount / stats.total : 1;\n\n // Get recent failures\n const failures = all\n .filter((e) => !e.success)\n .sort(\n (a, b) =>\n new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n )\n .slice(0, 10);\n\n stats.recentFailures = failures;\n\n return stats;\n }\n\n /**\n * Delete old audit entries (for retention policy).\n */\n public async deleteOlderThan(date: Date): Promise<number> {\n this.log.info(\"Deleting old audit entries\", { olderThan: date });\n\n const old = await this.repo.findMany({\n where: { createdAt: { lt: date.toISOString() } },\n });\n\n for (const entry of old) {\n await this.repo.deleteById(entry.id);\n }\n\n this.log.info(\"Old audit entries deleted\", { count: old.length });\n\n return old.length;\n }\n}\n\n/**\n * Audit statistics summary.\n */\nexport interface AuditStats {\n total: number;\n byType: Record<string, number>;\n bySeverity: Record<AuditSeverity, number>;\n successRate: number;\n recentFailures: AuditEntity[];\n}\n","import { $inject, t } from \"alepha\";\nimport { pg } from \"alepha/orm\";\nimport { $action } from \"alepha/server\";\nimport { auditQuerySchema } from \"../schemas/auditQuerySchema.ts\";\nimport { auditResourceSchema } from \"../schemas/auditResourceSchema.ts\";\nimport { createAuditSchema } from \"../schemas/createAuditSchema.ts\";\nimport { AuditService } from \"../services/AuditService.ts\";\n\n/**\n * REST API controller for audit log management.\n *\n * Provides endpoints for:\n * - Querying audit logs with filtering\n * - Creating audit entries\n * - Getting audit statistics\n * - Viewing registered audit types\n */\nexport class AuditController {\n protected readonly url = \"/audits\";\n protected readonly group = \"audits\";\n protected readonly auditService = $inject(AuditService);\n\n /**\n * Find audit entries with filtering and pagination.\n */\n public readonly findAudits = $action({\n path: this.url,\n group: this.group,\n description: \"Find audit entries with filtering and pagination\",\n schema: {\n query: auditQuerySchema,\n response: pg.page(auditResourceSchema),\n },\n handler: ({ query }) => this.auditService.find(query),\n });\n\n /**\n * Get a single audit entry by ID.\n */\n public readonly getAudit = $action({\n path: `${this.url}/:id`,\n group: this.group,\n description: \"Get a single audit entry by ID\",\n schema: {\n params: t.object({\n id: t.text(),\n }),\n response: auditResourceSchema,\n },\n handler: ({ params }) => this.auditService.getById(params.id),\n });\n\n /**\n * Create a new audit entry.\n */\n public readonly createAudit = $action({\n method: \"POST\",\n path: this.url,\n group: this.group,\n description: \"Create a new audit entry\",\n schema: {\n body: createAuditSchema,\n response: auditResourceSchema,\n },\n handler: ({ body }) => this.auditService.create(body),\n });\n\n /**\n * Get audit entries for a specific user.\n */\n public readonly findByUser = $action({\n path: `${this.url}/user/:userId`,\n group: this.group,\n description: \"Get audit entries for a specific user\",\n schema: {\n params: t.object({\n userId: t.uuid(),\n }),\n query: t.omit(auditQuerySchema, [\"userId\"]),\n response: pg.page(auditResourceSchema),\n },\n handler: ({ params, query }) =>\n this.auditService.findByUser(params.userId, query),\n });\n\n /**\n * Get audit entries for a specific resource.\n */\n public readonly findByResource = $action({\n path: `${this.url}/resource/:resourceType/:resourceId`,\n group: this.group,\n description: \"Get audit entries for a specific resource\",\n schema: {\n params: t.object({\n resourceType: t.text(),\n resourceId: t.text(),\n }),\n query: t.omit(auditQuerySchema, [\"resourceType\", \"resourceId\"]),\n response: pg.page(auditResourceSchema),\n },\n handler: ({ params, query }) =>\n this.auditService.findByResource(\n params.resourceType,\n params.resourceId,\n query,\n ),\n });\n\n /**\n * Get audit statistics.\n */\n public readonly getStats = $action({\n path: `${this.url}/stats`,\n group: this.group,\n description: \"Get audit statistics for a time period\",\n schema: {\n query: t.object({\n from: t.optional(t.datetime()),\n to: t.optional(t.datetime()),\n userRealm: t.optional(t.text()),\n }),\n response: t.object({\n total: t.integer(),\n byType: t.record(t.text(), t.integer()),\n bySeverity: t.object({\n info: t.integer(),\n warning: t.integer(),\n critical: t.integer(),\n }),\n successRate: t.number(),\n recentFailures: t.array(auditResourceSchema),\n }),\n },\n handler: ({ query }) =>\n this.auditService.getStats({\n from: query.from ? new Date(query.from) : undefined,\n to: query.to ? new Date(query.to) : undefined,\n userRealm: query.userRealm,\n }),\n });\n\n /**\n * Get registered audit types.\n */\n public readonly getTypes = $action({\n path: `${this.url}/types`,\n group: this.group,\n description: \"Get all registered audit types\",\n schema: {\n response: t.array(\n t.object({\n type: t.text(),\n description: t.optional(t.text()),\n actions: t.array(t.text()),\n }),\n ),\n },\n handler: () => this.auditService.getRegisteredTypes(),\n });\n\n /**\n * Get distinct values for filters.\n */\n public readonly getFilterOptions = $action({\n path: `${this.url}/filters`,\n group: this.group,\n description: \"Get distinct values for audit filters\",\n schema: {\n response: t.object({\n types: t.array(t.text()),\n actions: t.array(t.text()),\n resourceTypes: t.array(t.text()),\n userRealms: t.array(t.text()),\n }),\n },\n handler: async () => {\n const types = this.auditService.getRegisteredTypes();\n return {\n types: types.map((t) => t.type),\n actions: types.flatMap((t) => t.actions),\n resourceTypes: [\"user\", \"session\", \"file\", \"order\", \"payment\"],\n userRealms: [\"default\"],\n };\n },\n });\n}\n","import { $inject, createPrimitive, KIND, Primitive } from \"alepha\";\nimport {\n AuditService,\n type AuditTypeDefinition,\n} from \"../services/AuditService.ts\";\n\n/**\n * Options for creating an audit type primitive.\n */\nexport interface AuditPrimitiveOptions {\n /**\n * Unique audit type identifier (e.g., \"auth\", \"payment\", \"order\").\n */\n type: string;\n\n /**\n * Human-readable description of this audit type.\n */\n description?: string;\n\n /**\n * List of allowed actions for this audit type.\n */\n actions: string[];\n}\n\n/**\n * Audit type primitive for registering domain-specific audit events.\n *\n * Provides a type-safe way to define and log audit events within a specific domain.\n *\n * @example\n * ```ts\n * class PaymentAudits {\n * audit = $audit({\n * type: \"payment\",\n * description: \"Payment-related audit events\",\n * actions: [\"create\", \"refund\", \"cancel\", \"dispute\"],\n * });\n *\n * async logPaymentCreated(paymentId: string, userId: string, amount: number) {\n * await this.audit.log(\"create\", {\n * userId,\n * resourceType: \"payment\",\n * resourceId: paymentId,\n * description: `Payment of ${amount} created`,\n * metadata: { amount },\n * });\n * }\n * }\n * ```\n */\nexport class AuditPrimitive extends Primitive<AuditPrimitiveOptions> {\n protected readonly auditService = $inject(AuditService);\n\n /**\n * The audit type identifier.\n */\n public get type(): string {\n return this.options.type;\n }\n\n /**\n * The audit type description.\n */\n public get description(): string | undefined {\n return this.options.description;\n }\n\n /**\n * The allowed actions for this audit type.\n */\n public get actions(): string[] {\n return this.options.actions;\n }\n\n /**\n * Log an audit event for this type.\n */\n public async log(\n action: string,\n options: AuditLogOptions = {},\n ): Promise<void> {\n await this.auditService.record(this.options.type, action, options);\n }\n\n /**\n * Log a successful audit event.\n */\n public async logSuccess(\n action: string,\n options: Omit<AuditLogOptions, \"success\"> = {},\n ): Promise<void> {\n await this.log(action, { ...options, success: true });\n }\n\n /**\n * Log a failed audit event.\n */\n public async logFailure(\n action: string,\n errorMessage: string,\n options: Omit<AuditLogOptions, \"success\" | \"errorMessage\"> = {},\n ): Promise<void> {\n await this.log(action, { ...options, success: false, errorMessage });\n }\n\n /**\n * Called during initialization to register this audit type.\n */\n protected onInit(): void {\n const definition: AuditTypeDefinition = {\n type: this.options.type,\n description: this.options.description,\n actions: this.options.actions,\n };\n this.auditService.registerType(definition);\n }\n}\n\n/**\n * Options for logging an audit event.\n */\nexport interface AuditLogOptions {\n severity?: \"info\" | \"warning\" | \"critical\";\n userId?: string;\n userRealm?: string;\n userEmail?: string;\n resourceType?: string;\n resourceId?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n ipAddress?: string;\n userAgent?: string;\n sessionId?: string;\n requestId?: string;\n success?: boolean;\n errorMessage?: string;\n}\n\n/**\n * Create an audit type primitive.\n *\n * @example\n * ```ts\n * class OrderAudits {\n * audit = $audit({\n * type: \"order\",\n * description: \"Order management events\",\n * actions: [\"create\", \"update\", \"cancel\", \"fulfill\", \"ship\"],\n * });\n * }\n * ```\n */\nexport const $audit = (options: AuditPrimitiveOptions) => {\n return createPrimitive(AuditPrimitive, options);\n};\n\n$audit[KIND] = AuditPrimitive;\n","import { $module } from \"alepha\";\nimport { AuditController } from \"./controllers/AuditController.ts\";\nimport { AuditService } from \"./services/AuditService.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./controllers/AuditController.ts\";\nexport * from \"./entities/audits.ts\";\nexport * from \"./primitives/$audit.ts\";\nexport * from \"./schemas/auditQuerySchema.ts\";\nexport * from \"./schemas/auditResourceSchema.ts\";\nexport * from \"./schemas/createAuditSchema.ts\";\nexport * from \"./services/AuditService.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Provides audit logging API endpoints for Alepha applications.\n *\n * This module includes:\n * - Audit log CRUD operations\n * - Filtering and searching audit events\n * - Audit statistics and analytics\n * - `$audit` primitive for domain-specific audit types\n *\n * @module alepha.api.audits\n *\n * @example\n * ```ts\n * // In your app module\n * import { AlephaApiAudits } from \"alepha/api/audits\";\n *\n * const App = $module({\n * name: \"app\",\n * services: [AlephaApiAudits, ...],\n * });\n *\n * // Create domain-specific audit types\n * class PaymentAudits {\n * audit = $audit({\n * type: \"payment\",\n * actions: [\"create\", \"refund\", \"cancel\"],\n * });\n *\n * async onPaymentCreated(paymentId: string, userId: string) {\n * await this.audit.log(\"create\", {\n * userId,\n * resourceType: \"payment\",\n * resourceId: paymentId,\n * });\n * }\n * }\n * ```\n */\nexport const AlephaApiAudits = $module({\n name: \"alepha.api.audits\",\n services: [AuditService, AuditController],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["t"],"sources":["../../../src/api/audits/entities/audits.ts","../../../src/api/audits/schemas/auditQuerySchema.ts","../../../src/api/audits/schemas/auditResourceSchema.ts","../../../src/api/audits/schemas/createAuditSchema.ts","../../../src/api/audits/services/AuditService.ts","../../../src/api/audits/controllers/AdminAuditController.ts","../../../src/api/audits/primitives/$audit.ts","../../../src/api/audits/index.ts"],"sourcesContent":["import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { $entity, db } from \"alepha/orm\";\n\n/**\n * Audit severity levels for categorizing events.\n */\nexport const auditSeveritySchema = t.enum([\"info\", \"warning\", \"critical\"], {\n default: \"info\",\n description: \"Severity level of the audit event\",\n});\n\nexport type AuditSeverity = Static<typeof auditSeveritySchema>;\n\n/**\n * Audit log entity for tracking important system events.\n *\n * Stores comprehensive audit information including:\n * - Who performed the action (userId, userRealm)\n * - What happened (type, action, resource)\n * - When it happened (createdAt)\n * - Context and details (metadata, ipAddress, userAgent)\n */\nexport const audits = $entity({\n name: \"audits\",\n schema: t.object({\n id: db.primaryKey(t.bigint()),\n createdAt: db.createdAt(),\n\n /**\n * Audit event type (e.g., \"auth\", \"user\", \"payment\", \"system\").\n * Used for categorizing and filtering audit events.\n */\n type: t.text({\n description: \"Audit event type (e.g., auth, user, payment, system)\",\n }),\n\n /**\n * Specific action performed (e.g., \"login\", \"logout\", \"create\", \"update\", \"delete\").\n */\n action: t.text({\n description: \"Specific action performed (e.g., login, create, update)\",\n }),\n\n /**\n * Severity level of the event.\n */\n severity: db.default(auditSeveritySchema, \"info\"),\n\n /**\n * User ID who performed the action (null for system events).\n */\n userId: t.optional(t.uuid()),\n\n /**\n * User realm for multi-tenant support.\n */\n userRealm: t.optional(t.text()),\n\n /**\n * User email at the time of the event (denormalized for history).\n */\n userEmail: t.optional(t.email()),\n\n /**\n * Resource type affected (e.g., \"user\", \"order\", \"file\").\n */\n resourceType: t.optional(t.text()),\n\n /**\n * Resource ID affected.\n */\n resourceId: t.optional(t.text()),\n\n /**\n * Human-readable description of the event.\n */\n description: t.optional(t.text()),\n\n /**\n * Additional metadata/context as JSON.\n */\n metadata: t.optional(t.json()),\n\n /**\n * Client IP address.\n */\n ipAddress: t.optional(t.text()),\n\n /**\n * Client user agent.\n */\n userAgent: t.optional(t.text()),\n\n /**\n * Session ID if applicable.\n */\n sessionId: t.optional(t.uuid()),\n\n /**\n * Request ID for correlation.\n */\n requestId: t.optional(t.text()),\n\n /**\n * Whether the action was successful.\n */\n success: db.default(t.boolean(), true),\n\n /**\n * Error message if the action failed.\n */\n errorMessage: t.optional(t.text()),\n }),\n indexes: [\n \"createdAt\",\n \"type\",\n \"action\",\n \"userId\",\n \"userRealm\",\n \"resourceType\",\n \"resourceId\",\n \"severity\",\n { columns: [\"type\", \"action\"] },\n { columns: [\"userId\", \"createdAt\"] },\n { columns: [\"userRealm\", \"createdAt\"] },\n ],\n});\n\nexport const auditEntitySchema = audits.schema;\nexport const auditEntityInsertSchema = audits.insertSchema;\nexport type AuditEntity = Static<typeof audits.schema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { pageQuerySchema } from \"alepha/orm\";\nimport { auditSeveritySchema } from \"../entities/audits.ts\";\n\n/**\n * Query schema for searching and filtering audit logs.\n */\nexport const auditQuerySchema = t.extend(pageQuerySchema, {\n type: t.optional(t.text({ description: \"Filter by audit type\" })),\n action: t.optional(t.text({ description: \"Filter by action\" })),\n severity: t.optional(auditSeveritySchema),\n userId: t.optional(t.uuid({ description: \"Filter by user ID\" })),\n userRealm: t.optional(t.text({ description: \"Filter by user realm\" })),\n resourceType: t.optional(t.text({ description: \"Filter by resource type\" })),\n resourceId: t.optional(t.text({ description: \"Filter by resource ID\" })),\n success: t.optional(t.boolean({ description: \"Filter by success status\" })),\n from: t.optional(t.datetime({ description: \"Start date filter\" })),\n to: t.optional(t.datetime({ description: \"End date filter\" })),\n search: t.optional(t.text({ description: \"Search in description\" })),\n});\n\nexport type AuditQuery = Static<typeof auditQuerySchema>;\n","import type { Static } from \"alepha\";\nimport { audits } from \"../entities/audits.ts\";\n\n/**\n * Resource schema for audit log responses.\n */\nexport const auditResourceSchema = audits.schema;\n\nexport type AuditResource = Static<typeof auditResourceSchema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { auditSeveritySchema } from \"../entities/audits.ts\";\n\n/**\n * Schema for creating a new audit log entry.\n */\nexport const createAuditSchema = t.object({\n type: t.text({ description: \"Audit event type\" }),\n action: t.text({ description: \"Specific action performed\" }),\n severity: t.optional(auditSeveritySchema),\n userId: t.optional(t.uuid()),\n userRealm: t.optional(t.text()),\n userEmail: t.optional(t.email()),\n resourceType: t.optional(t.text()),\n resourceId: t.optional(t.text()),\n description: t.optional(t.text()),\n metadata: t.optional(t.json()),\n ipAddress: t.optional(t.text()),\n userAgent: t.optional(t.text()),\n sessionId: t.optional(t.uuid()),\n requestId: t.optional(t.text()),\n success: t.optional(t.boolean()),\n errorMessage: t.optional(t.text()),\n});\n\nexport type CreateAudit = Static<typeof createAuditSchema>;\n","import { $inject, Alepha } from \"alepha\";\nimport { $logger } from \"alepha/logger\";\nimport { $repository, type Page } from \"alepha/orm\";\nimport type { ServerRequest } from \"alepha/server\";\nimport {\n type AuditEntity,\n type AuditSeverity,\n audits,\n} from \"../entities/audits.ts\";\nimport type { AuditQuery } from \"../schemas/auditQuerySchema.ts\";\nimport type { CreateAudit } from \"../schemas/createAuditSchema.ts\";\n\n/**\n * Registered audit type definition.\n */\nexport interface AuditTypeDefinition {\n type: string;\n description?: string;\n actions: string[];\n}\n\n/**\n * Service for managing audit logs.\n *\n * Provides methods for:\n * - Creating audit entries\n * - Querying audit history\n * - Aggregating audit statistics\n * - Managing registered audit types\n */\nexport class AuditService {\n protected readonly alepha = $inject(Alepha);\n protected readonly log = $logger();\n protected readonly repo = $repository(audits);\n\n /**\n * Registry of audit types and their allowed actions.\n */\n protected readonly auditTypes = new Map<string, AuditTypeDefinition>();\n\n /**\n * Register an audit type with its allowed actions.\n */\n public registerType(definition: AuditTypeDefinition): void {\n this.auditTypes.set(definition.type, definition);\n this.log.debug(\"Audit type registered\", {\n type: definition.type,\n actions: definition.actions,\n });\n }\n\n /**\n * Get all registered audit types.\n */\n public getRegisteredTypes(): AuditTypeDefinition[] {\n return Array.from(this.auditTypes.values());\n }\n\n /**\n * Get current request context if available.\n */\n protected getRequestContext(): ServerRequest | undefined {\n return this.alepha.context.get<ServerRequest>(\"request\");\n }\n\n /**\n * Create a new audit log entry.\n * Automatically populates ipAddress, userAgent, and requestId from the current request context.\n */\n public async create(data: CreateAudit): Promise<AuditEntity> {\n const request = this.getRequestContext();\n\n // Auto-populate from request context if not provided\n const contextData: Partial<CreateAudit> = {};\n\n if (request) {\n if (!data.ipAddress && request.ip) {\n contextData.ipAddress = request.ip;\n }\n if (!data.userAgent && request.headers[\"user-agent\"]) {\n contextData.userAgent = request.headers[\"user-agent\"];\n }\n if (!data.requestId && request.requestId) {\n contextData.requestId = request.requestId;\n }\n // Check for session in metadata\n if (!data.sessionId && request.metadata?.sessionId) {\n contextData.sessionId = request.metadata.sessionId;\n }\n // Extract user from request.user (set by ServerSecurityProvider)\n const user = request.user;\n if (user) {\n if (!data.userId && user.id) {\n contextData.userId = user.id;\n }\n if (!data.userEmail && user.email) {\n contextData.userEmail = user.email;\n }\n if (!data.userRealm && user.realm) {\n contextData.userRealm = user.realm;\n }\n }\n }\n\n this.log.trace(\"Creating audit entry\", {\n type: data.type,\n action: data.action,\n userId: data.userId ?? contextData.userId,\n });\n\n const entry = await this.repo.create({\n ...contextData,\n ...data,\n severity: data.severity ?? \"info\",\n success: data.success ?? true,\n });\n\n this.log.debug(\"Audit entry created\", {\n id: entry.id,\n type: data.type,\n action: data.action,\n });\n\n return entry;\n }\n\n /**\n * Record an audit event (convenience method).\n */\n public async record(\n type: string,\n action: string,\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({ type, action, ...options });\n }\n\n /**\n * Record an authentication event.\n */\n public async recordAuth(\n action:\n | \"login\"\n | \"logout\"\n | \"login_failed\"\n | \"token_refresh\"\n | \"mfa_setup\"\n | \"mfa_verify\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"auth\",\n action,\n severity: action === \"login_failed\" ? \"warning\" : \"info\",\n ...options,\n });\n }\n\n /**\n * Record a user management event.\n */\n public async recordUser(\n action:\n | \"create\"\n | \"update\"\n | \"delete\"\n | \"enable\"\n | \"disable\"\n | \"role_change\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"user\",\n action,\n resourceType: \"user\",\n ...options,\n });\n }\n\n /**\n * Record a data access event.\n */\n public async recordAccess(\n action: \"view\" | \"export\" | \"download\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({ type: \"access\", action, ...options });\n }\n\n /**\n * Record a security event.\n */\n public async recordSecurity(\n action:\n | \"permission_denied\"\n | \"suspicious_activity\"\n | \"rate_limited\"\n | \"blocked\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"security\",\n action,\n severity: \"warning\",\n ...options,\n });\n }\n\n /**\n * Record a system event.\n */\n public async recordSystem(\n action: \"startup\" | \"shutdown\" | \"config_change\" | \"maintenance\" | \"error\",\n options: Omit<CreateAudit, \"type\" | \"action\"> = {},\n ): Promise<AuditEntity> {\n return this.create({\n type: \"system\",\n action,\n severity: action === \"error\" ? \"critical\" : \"info\",\n ...options,\n });\n }\n\n /**\n * Find audit entries with filtering and pagination.\n */\n public async find(query: AuditQuery = {}): Promise<Page<AuditEntity>> {\n this.log.trace(\"Finding audit entries\", { query });\n\n query.sort ??= \"-createdAt\";\n\n const where = this.repo.createQueryWhere();\n\n if (query.type) {\n where.type = { eq: query.type };\n }\n\n if (query.action) {\n where.action = { eq: query.action };\n }\n\n if (query.severity) {\n where.severity = { eq: query.severity };\n }\n\n if (query.userId) {\n where.userId = { eq: query.userId };\n }\n\n if (query.userRealm) {\n where.userRealm = { eq: query.userRealm };\n }\n\n if (query.resourceType) {\n where.resourceType = { eq: query.resourceType };\n }\n\n if (query.resourceId) {\n where.resourceId = { eq: query.resourceId };\n }\n\n if (query.success !== undefined) {\n where.success = { eq: query.success };\n }\n\n if (query.from) {\n where.createdAt = { ...(where.createdAt as object), gte: query.from };\n }\n\n if (query.to) {\n where.createdAt = { ...(where.createdAt as object), lte: query.to };\n }\n\n if (query.search) {\n where.description = { like: `%${query.search}%` };\n }\n\n const result = await this.repo.paginate(query, { where }, { count: true });\n\n this.log.debug(\"Audit entries found\", {\n count: result.content.length,\n total: result.page.totalElements,\n });\n\n return result;\n }\n\n /**\n * Get audit entry by ID.\n */\n public async getById(id: string): Promise<AuditEntity> {\n return this.repo.findById(id);\n }\n\n /**\n * Get audit entries for a specific user.\n */\n public async findByUser(\n userId: string,\n query: Omit<AuditQuery, \"userId\"> = {},\n ): Promise<Page<AuditEntity>> {\n return this.find({ ...query, userId });\n }\n\n /**\n * Get audit entries for a specific resource.\n */\n public async findByResource(\n resourceType: string,\n resourceId: string,\n query: Omit<AuditQuery, \"resourceType\" | \"resourceId\"> = {},\n ): Promise<Page<AuditEntity>> {\n return this.find({ ...query, resourceType, resourceId });\n }\n\n /**\n * Get audit statistics for a time period.\n */\n public async getStats(\n options: { from?: Date; to?: Date; userRealm?: string } = {},\n ): Promise<AuditStats> {\n this.log.trace(\"Getting audit stats\", options);\n\n const where = this.repo.createQueryWhere();\n\n if (options.from) {\n where.createdAt = { gte: options.from.toISOString() };\n }\n\n if (options.to) {\n where.createdAt = {\n ...(where.createdAt as object),\n lte: options.to.toISOString(),\n };\n }\n\n if (options.userRealm) {\n where.userRealm = { eq: options.userRealm };\n }\n\n const all = await this.repo.findMany({ where });\n\n const stats: AuditStats = {\n total: all.length,\n byType: {},\n bySeverity: { info: 0, warning: 0, critical: 0 },\n successRate: 0,\n recentFailures: [],\n };\n\n let successCount = 0;\n\n for (const entry of all) {\n // Count by type\n stats.byType[entry.type] = (stats.byType[entry.type] || 0) + 1;\n\n // Count by severity\n const severity = entry.severity as AuditSeverity;\n stats.bySeverity[severity]++;\n\n // Count successes\n if (entry.success) {\n successCount++;\n }\n }\n\n stats.successRate = stats.total > 0 ? successCount / stats.total : 1;\n\n // Get recent failures\n const failures = all\n .filter((e) => !e.success)\n .sort(\n (a, b) =>\n new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n )\n .slice(0, 10);\n\n stats.recentFailures = failures;\n\n return stats;\n }\n\n /**\n * Delete old audit entries (for retention policy).\n */\n public async deleteOlderThan(date: Date): Promise<number> {\n this.log.info(\"Deleting old audit entries\", { olderThan: date });\n\n const old = await this.repo.findMany({\n where: { createdAt: { lt: date.toISOString() } },\n });\n\n for (const entry of old) {\n await this.repo.deleteById(entry.id);\n }\n\n this.log.info(\"Old audit entries deleted\", { count: old.length });\n\n return old.length;\n }\n}\n\n/**\n * Audit statistics summary.\n */\nexport interface AuditStats {\n total: number;\n byType: Record<string, number>;\n bySeverity: Record<AuditSeverity, number>;\n successRate: number;\n recentFailures: AuditEntity[];\n}\n","import { $inject, t } from \"alepha\";\nimport { $action } from \"alepha/server\";\nimport { auditQuerySchema } from \"../schemas/auditQuerySchema.ts\";\nimport { auditResourceSchema } from \"../schemas/auditResourceSchema.ts\";\nimport { createAuditSchema } from \"../schemas/createAuditSchema.ts\";\nimport { AuditService } from \"../services/AuditService.ts\";\n\n/**\n * REST API controller for audit log management.\n *\n * Provides endpoints for:\n * - Querying audit logs with filtering\n * - Creating audit entries\n * - Getting audit statistics\n * - Viewing registered audit types\n */\nexport class AdminAuditController {\n protected readonly url = \"/audits\";\n protected readonly group = \"admin:audits\";\n protected readonly auditService = $inject(AuditService);\n\n /**\n * Find audit entries with filtering and pagination.\n */\n public readonly findAudits = $action({\n path: this.url,\n group: this.group,\n description: \"Find audit entries with filtering and pagination\",\n schema: {\n query: auditQuerySchema,\n response: t.page(auditResourceSchema),\n },\n handler: ({ query }) => this.auditService.find(query),\n });\n\n /**\n * Get a single audit entry by ID.\n */\n public readonly getAudit = $action({\n path: `${this.url}/:id`,\n group: this.group,\n description: \"Get a single audit entry by ID\",\n schema: {\n params: t.object({\n id: t.text(),\n }),\n response: auditResourceSchema,\n },\n handler: ({ params }) => this.auditService.getById(params.id),\n });\n\n /**\n * Create a new audit entry.\n */\n public readonly createAudit = $action({\n method: \"POST\",\n path: this.url,\n group: this.group,\n description: \"Create a new audit entry\",\n schema: {\n body: createAuditSchema,\n response: auditResourceSchema,\n },\n handler: ({ body }) => this.auditService.create(body),\n });\n\n /**\n * Get audit entries for a specific user.\n */\n public readonly findByUser = $action({\n path: `${this.url}/user/:userId`,\n group: this.group,\n description: \"Get audit entries for a specific user\",\n schema: {\n params: t.object({\n userId: t.uuid(),\n }),\n query: t.omit(auditQuerySchema, [\"userId\"]),\n response: t.page(auditResourceSchema),\n },\n handler: ({ params, query }) =>\n this.auditService.findByUser(params.userId, query),\n });\n\n /**\n * Get audit entries for a specific resource.\n */\n public readonly findByResource = $action({\n path: `${this.url}/resource/:resourceType/:resourceId`,\n group: this.group,\n description: \"Get audit entries for a specific resource\",\n schema: {\n params: t.object({\n resourceType: t.text(),\n resourceId: t.text(),\n }),\n query: t.omit(auditQuerySchema, [\"resourceType\", \"resourceId\"]),\n response: t.page(auditResourceSchema),\n },\n handler: ({ params, query }) =>\n this.auditService.findByResource(\n params.resourceType,\n params.resourceId,\n query,\n ),\n });\n\n /**\n * Get audit statistics.\n */\n public readonly getStats = $action({\n path: `${this.url}/stats`,\n group: this.group,\n description: \"Get audit statistics for a time period\",\n schema: {\n query: t.object({\n from: t.optional(t.datetime()),\n to: t.optional(t.datetime()),\n userRealm: t.optional(t.text()),\n }),\n response: t.object({\n total: t.integer(),\n byType: t.record(t.text(), t.integer()),\n bySeverity: t.object({\n info: t.integer(),\n warning: t.integer(),\n critical: t.integer(),\n }),\n successRate: t.number(),\n recentFailures: t.array(auditResourceSchema),\n }),\n },\n handler: ({ query }) =>\n this.auditService.getStats({\n from: query.from ? new Date(query.from) : undefined,\n to: query.to ? new Date(query.to) : undefined,\n userRealm: query.userRealm,\n }),\n });\n\n /**\n * Get registered audit types.\n */\n public readonly getTypes = $action({\n path: `${this.url}/types`,\n group: this.group,\n description: \"Get all registered audit types\",\n schema: {\n response: t.array(\n t.object({\n type: t.text(),\n description: t.optional(t.text()),\n actions: t.array(t.text()),\n }),\n ),\n },\n handler: () => this.auditService.getRegisteredTypes(),\n });\n\n /**\n * Get distinct values for filters.\n */\n public readonly getFilterOptions = $action({\n path: `${this.url}/filters`,\n group: this.group,\n description: \"Get distinct values for audit filters\",\n schema: {\n response: t.object({\n types: t.array(t.text()),\n actions: t.array(t.text()),\n resourceTypes: t.array(t.text()),\n userRealms: t.array(t.text()),\n }),\n },\n handler: async () => {\n const types = this.auditService.getRegisteredTypes();\n return {\n types: types.map((t) => t.type),\n actions: types.flatMap((t) => t.actions),\n resourceTypes: [\"user\", \"session\", \"file\", \"order\", \"payment\"],\n userRealms: [\"default\"],\n };\n },\n });\n}\n","import { $inject, createPrimitive, KIND, Primitive } from \"alepha\";\nimport {\n AuditService,\n type AuditTypeDefinition,\n} from \"../services/AuditService.ts\";\n\n/**\n * Options for creating an audit type primitive.\n */\nexport interface AuditPrimitiveOptions {\n /**\n * Unique audit type identifier (e.g., \"auth\", \"payment\", \"order\").\n */\n type: string;\n\n /**\n * Human-readable description of this audit type.\n */\n description?: string;\n\n /**\n * List of allowed actions for this audit type.\n */\n actions: string[];\n}\n\n/**\n * Audit type primitive for registering domain-specific audit events.\n *\n * Provides a type-safe way to define and log audit events within a specific domain.\n *\n * @example\n * ```ts\n * class PaymentAudits {\n * audit = $audit({\n * type: \"payment\",\n * description: \"Payment-related audit events\",\n * actions: [\"create\", \"refund\", \"cancel\", \"dispute\"],\n * });\n *\n * async logPaymentCreated(paymentId: string, userId: string, amount: number) {\n * await this.audit.log(\"create\", {\n * userId,\n * resourceType: \"payment\",\n * resourceId: paymentId,\n * description: `Payment of ${amount} created`,\n * metadata: { amount },\n * });\n * }\n * }\n * ```\n */\nexport class AuditPrimitive extends Primitive<AuditPrimitiveOptions> {\n protected readonly auditService = $inject(AuditService);\n\n /**\n * The audit type identifier.\n */\n public get type(): string {\n return this.options.type;\n }\n\n /**\n * The audit type description.\n */\n public get description(): string | undefined {\n return this.options.description;\n }\n\n /**\n * The allowed actions for this audit type.\n */\n public get actions(): string[] {\n return this.options.actions;\n }\n\n /**\n * Log an audit event for this type.\n */\n public async log(\n action: string,\n options: AuditLogOptions = {},\n ): Promise<void> {\n await this.auditService.record(this.options.type, action, options);\n }\n\n /**\n * Log a successful audit event.\n */\n public async logSuccess(\n action: string,\n options: Omit<AuditLogOptions, \"success\"> = {},\n ): Promise<void> {\n await this.log(action, { ...options, success: true });\n }\n\n /**\n * Log a failed audit event.\n */\n public async logFailure(\n action: string,\n errorMessage: string,\n options: Omit<AuditLogOptions, \"success\" | \"errorMessage\"> = {},\n ): Promise<void> {\n await this.log(action, { ...options, success: false, errorMessage });\n }\n\n /**\n * Called during initialization to register this audit type.\n */\n protected onInit(): void {\n const definition: AuditTypeDefinition = {\n type: this.options.type,\n description: this.options.description,\n actions: this.options.actions,\n };\n this.auditService.registerType(definition);\n }\n}\n\n/**\n * Options for logging an audit event.\n */\nexport interface AuditLogOptions {\n severity?: \"info\" | \"warning\" | \"critical\";\n userId?: string;\n userRealm?: string;\n userEmail?: string;\n resourceType?: string;\n resourceId?: string;\n description?: string;\n metadata?: Record<string, unknown>;\n ipAddress?: string;\n userAgent?: string;\n sessionId?: string;\n requestId?: string;\n success?: boolean;\n errorMessage?: string;\n}\n\n/**\n * Create an audit type primitive.\n *\n * @example\n * ```ts\n * class OrderAudits {\n * audit = $audit({\n * type: \"order\",\n * description: \"Order management events\",\n * actions: [\"create\", \"update\", \"cancel\", \"fulfill\", \"ship\"],\n * });\n * }\n * ```\n */\nexport const $audit = (options: AuditPrimitiveOptions) => {\n return createPrimitive(AuditPrimitive, options);\n};\n\n$audit[KIND] = AuditPrimitive;\n","import { $module } from \"alepha\";\nimport { AdminAuditController } from \"./controllers/AdminAuditController.ts\";\nimport { AuditService } from \"./services/AuditService.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport * from \"./controllers/AdminAuditController.ts\";\nexport * from \"./entities/audits.ts\";\nexport * from \"./primitives/$audit.ts\";\nexport * from \"./schemas/auditQuerySchema.ts\";\nexport * from \"./schemas/auditResourceSchema.ts\";\nexport * from \"./schemas/createAuditSchema.ts\";\nexport * from \"./services/AuditService.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\n/**\n * Provides audit logging API endpoints for Alepha applications.\n *\n * This module includes:\n * - Audit log CRUD operations\n * - Filtering and searching audit events\n * - Audit statistics and analytics\n * - `$audit` primitive for domain-specific audit types\n *\n * @module alepha.api.audits\n *\n * @example\n * ```ts\n * // In your app module\n * import { AlephaApiAudits } from \"alepha/api/audits\";\n *\n * const App = $module({\n * name: \"app\",\n * services: [AlephaApiAudits, ...],\n * });\n *\n * // Create domain-specific audit types\n * class PaymentAudits {\n * audit = $audit({\n * type: \"payment\",\n * actions: [\"create\", \"refund\", \"cancel\"],\n * });\n *\n * async onPaymentCreated(paymentId: string, userId: string) {\n * await this.audit.log(\"create\", {\n * userId,\n * resourceType: \"payment\",\n * resourceId: paymentId,\n * });\n * }\n * }\n * ```\n */\nexport const AlephaApiAudits = $module({\n name: \"alepha.api.audits\",\n services: [AuditService, AdminAuditController],\n});\n"],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { $module, t } from "alepha";
2
- import { $entity, pageQuerySchema, pg } from "alepha/orm";
2
+ import { $entity, db, pageQuerySchema } from "alepha/orm";
3
3
 
4
4
  //#region ../../src/api/files/entities/files.ts
5
5
  const files = $entity({
6
6
  name: "files",
7
7
  schema: t.object({
8
- id: pg.primaryKey(t.uuid()),
9
- version: pg.version(),
10
- createdAt: pg.createdAt(),
11
- updatedAt: pg.updatedAt(),
8
+ id: db.primaryKey(t.uuid()),
9
+ version: db.version(),
10
+ createdAt: db.createdAt(),
11
+ updatedAt: db.updatedAt(),
12
12
  blobId: t.text(),
13
13
  creator: t.optional(t.uuid()),
14
14
  creatorRealm: t.optional(t.string()),
@@ -1 +1 @@
1
- {"version":3,"file":"index.browser.js","names":[],"sources":["../../../src/api/files/entities/files.ts","../../../src/api/files/schemas/fileQuerySchema.ts","../../../src/api/files/schemas/fileResourceSchema.ts","../../../src/api/files/schemas/storageStatsSchema.ts","../../../src/api/files/index.browser.ts"],"sourcesContent":["import { type Static, t } from \"alepha\";\nimport { $entity, pg } from \"alepha/orm\";\n\nexport const files = $entity({\n name: \"files\",\n schema: t.object({\n id: pg.primaryKey(t.uuid()),\n version: pg.version(),\n createdAt: pg.createdAt(),\n updatedAt: pg.updatedAt(),\n blobId: t.text(),\n creator: t.optional(t.uuid()),\n creatorRealm: t.optional(t.string()),\n creatorName: t.optional(t.string()),\n bucket: t.text(),\n expirationDate: t.optional(t.datetime()),\n name: t.text(),\n size: t.number(),\n mimeType: t.string(),\n tags: t.optional(t.array(t.text())),\n checksum: t.optional(t.string()),\n }),\n indexes: [\n \"expirationDate\",\n \"bucket\",\n \"creator\",\n \"createdAt\",\n \"mimeType\",\n {\n columns: [\"bucket\", \"createdAt\"],\n },\n ],\n});\n\nexport type FileEntity = Static<typeof files.schema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { pageQuerySchema } from \"alepha/orm\";\n\nexport const fileQuerySchema = t.extend(pageQuerySchema, {\n bucket: t.optional(t.string()),\n tags: t.optional(t.array(t.string())),\n name: t.optional(t.string()),\n mimeType: t.optional(t.string()),\n creator: t.optional(t.uuid()),\n createdAfter: t.optional(t.datetime()),\n createdBefore: t.optional(t.datetime()),\n});\n\nexport type FileQuery = Static<typeof fileQuerySchema>;\n","import { type Static, t } from \"alepha\";\nimport { files } from \"../entities/files.ts\";\n\nexport const fileResourceSchema = t.extend(\n files.schema,\n {},\n {\n title: \"FileResource\",\n description: \"A file resource representing a file stored in the system.\",\n },\n);\n\nexport type FileResource = Static<typeof fileResourceSchema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\n\nexport const bucketStatsSchema = t.object({\n bucket: t.string(),\n totalSize: t.number(),\n fileCount: t.number(),\n});\n\nexport const mimeTypeStatsSchema = t.object({\n mimeType: t.string(),\n fileCount: t.number(),\n});\n\nexport const storageStatsSchema = t.object({\n totalSize: t.number(),\n totalFiles: t.number(),\n byBucket: t.array(bucketStatsSchema),\n byMimeType: t.array(mimeTypeStatsSchema),\n});\n\nexport type BucketStats = Static<typeof bucketStatsSchema>;\nexport type MimeTypeStats = Static<typeof mimeTypeStatsSchema>;\nexport type StorageStats = Static<typeof storageStatsSchema>;\n","import { $module } from \"alepha\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type * from \"./controllers/FileController.ts\";\nexport type * from \"./controllers/StorageStatsController.ts\";\nexport * from \"./entities/files.ts\";\nexport * from \"./schemas/fileQuerySchema.ts\";\nexport * from \"./schemas/fileResourceSchema.ts\";\nexport * from \"./schemas/storageStatsSchema.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport const AlephaApiFiles = $module({\n name: \"alepha.api.files\",\n services: [],\n});\n"],"mappings":";;;;AAGA,MAAa,QAAQ,QAAQ;CAC3B,MAAM;CACN,QAAQ,EAAE,OAAO;EACf,IAAI,GAAG,WAAW,EAAE,MAAM,CAAC;EAC3B,SAAS,GAAG,SAAS;EACrB,WAAW,GAAG,WAAW;EACzB,WAAW,GAAG,WAAW;EACzB,QAAQ,EAAE,MAAM;EAChB,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;EAC7B,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC;EACpC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC;EACnC,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC;EACxC,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,QAAQ;EAChB,UAAU,EAAE,QAAQ;EACpB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EACnC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;EACjC,CAAC;CACF,SAAS;EACP;EACA;EACA;EACA;EACA;EACA,EACE,SAAS,CAAC,UAAU,YAAY,EACjC;EACF;CACF,CAAC;;;;AC5BF,MAAa,kBAAkB,EAAE,OAAO,iBAAiB;CACvD,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC9B,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC5B,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;CAChC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;CAC7B,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC;CACtC,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC;CACxC,CAAC;;;;ACTF,MAAa,qBAAqB,EAAE,OAClC,MAAM,QACN,EAAE,EACF;CACE,OAAO;CACP,aAAa;CACd,CACF;;;;ACPD,MAAa,oBAAoB,EAAE,OAAO;CACxC,QAAQ,EAAE,QAAQ;CAClB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,MAAa,sBAAsB,EAAE,OAAO;CAC1C,UAAU,EAAE,QAAQ;CACpB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,MAAa,qBAAqB,EAAE,OAAO;CACzC,WAAW,EAAE,QAAQ;CACrB,YAAY,EAAE,QAAQ;CACtB,UAAU,EAAE,MAAM,kBAAkB;CACpC,YAAY,EAAE,MAAM,oBAAoB;CACzC,CAAC;;;;ACNF,MAAa,iBAAiB,QAAQ;CACpC,MAAM;CACN,UAAU,EAAE;CACb,CAAC"}
1
+ {"version":3,"file":"index.browser.js","names":[],"sources":["../../../src/api/files/entities/files.ts","../../../src/api/files/schemas/fileQuerySchema.ts","../../../src/api/files/schemas/fileResourceSchema.ts","../../../src/api/files/schemas/storageStatsSchema.ts","../../../src/api/files/index.browser.ts"],"sourcesContent":["import { type Static, t } from \"alepha\";\nimport { $entity, db } from \"alepha/orm\";\n\nexport const files = $entity({\n name: \"files\",\n schema: t.object({\n id: db.primaryKey(t.uuid()),\n version: db.version(),\n createdAt: db.createdAt(),\n updatedAt: db.updatedAt(),\n blobId: t.text(),\n creator: t.optional(t.uuid()),\n creatorRealm: t.optional(t.string()),\n creatorName: t.optional(t.string()),\n bucket: t.text(),\n expirationDate: t.optional(t.datetime()),\n name: t.text(),\n size: t.number(),\n mimeType: t.string(),\n tags: t.optional(t.array(t.text())),\n checksum: t.optional(t.string()),\n }),\n indexes: [\n \"expirationDate\",\n \"bucket\",\n \"creator\",\n \"createdAt\",\n \"mimeType\",\n {\n columns: [\"bucket\", \"createdAt\"],\n },\n ],\n});\n\nexport type FileEntity = Static<typeof files.schema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\nimport { pageQuerySchema } from \"alepha/orm\";\n\nexport const fileQuerySchema = t.extend(pageQuerySchema, {\n bucket: t.optional(t.string()),\n tags: t.optional(t.array(t.string())),\n name: t.optional(t.string()),\n mimeType: t.optional(t.string()),\n creator: t.optional(t.uuid()),\n createdAfter: t.optional(t.datetime()),\n createdBefore: t.optional(t.datetime()),\n});\n\nexport type FileQuery = Static<typeof fileQuerySchema>;\n","import { type Static, t } from \"alepha\";\nimport { files } from \"../entities/files.ts\";\n\nexport const fileResourceSchema = t.extend(\n files.schema,\n {},\n {\n title: \"FileResource\",\n description: \"A file resource representing a file stored in the system.\",\n },\n);\n\nexport type FileResource = Static<typeof fileResourceSchema>;\n","import type { Static } from \"alepha\";\nimport { t } from \"alepha\";\n\nexport const bucketStatsSchema = t.object({\n bucket: t.string(),\n totalSize: t.number(),\n fileCount: t.number(),\n});\n\nexport const mimeTypeStatsSchema = t.object({\n mimeType: t.string(),\n fileCount: t.number(),\n});\n\nexport const storageStatsSchema = t.object({\n totalSize: t.number(),\n totalFiles: t.number(),\n byBucket: t.array(bucketStatsSchema),\n byMimeType: t.array(mimeTypeStatsSchema),\n});\n\nexport type BucketStats = Static<typeof bucketStatsSchema>;\nexport type MimeTypeStats = Static<typeof mimeTypeStatsSchema>;\nexport type StorageStats = Static<typeof storageStatsSchema>;\n","import { $module } from \"alepha\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport type * from \"./controllers/AdminFileStatsController.ts\";\nexport type * from \"./controllers/FileController.ts\";\nexport * from \"./entities/files.ts\";\nexport * from \"./schemas/fileQuerySchema.ts\";\nexport * from \"./schemas/fileResourceSchema.ts\";\nexport * from \"./schemas/storageStatsSchema.ts\";\n\n// ---------------------------------------------------------------------------------------------------------------------\n\nexport const AlephaApiFiles = $module({\n name: \"alepha.api.files\",\n services: [],\n});\n"],"mappings":";;;;AAGA,MAAa,QAAQ,QAAQ;CAC3B,MAAM;CACN,QAAQ,EAAE,OAAO;EACf,IAAI,GAAG,WAAW,EAAE,MAAM,CAAC;EAC3B,SAAS,GAAG,SAAS;EACrB,WAAW,GAAG,WAAW;EACzB,WAAW,GAAG,WAAW;EACzB,QAAQ,EAAE,MAAM;EAChB,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;EAC7B,cAAc,EAAE,SAAS,EAAE,QAAQ,CAAC;EACpC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC;EACnC,QAAQ,EAAE,MAAM;EAChB,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC;EACxC,MAAM,EAAE,MAAM;EACd,MAAM,EAAE,QAAQ;EAChB,UAAU,EAAE,QAAQ;EACpB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;EACnC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;EACjC,CAAC;CACF,SAAS;EACP;EACA;EACA;EACA;EACA;EACA,EACE,SAAS,CAAC,UAAU,YAAY,EACjC;EACF;CACF,CAAC;;;;AC5BF,MAAa,kBAAkB,EAAE,OAAO,iBAAiB;CACvD,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC9B,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC;CAC5B,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC;CAChC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC;CAC7B,cAAc,EAAE,SAAS,EAAE,UAAU,CAAC;CACtC,eAAe,EAAE,SAAS,EAAE,UAAU,CAAC;CACxC,CAAC;;;;ACTF,MAAa,qBAAqB,EAAE,OAClC,MAAM,QACN,EAAE,EACF;CACE,OAAO;CACP,aAAa;CACd,CACF;;;;ACPD,MAAa,oBAAoB,EAAE,OAAO;CACxC,QAAQ,EAAE,QAAQ;CAClB,WAAW,EAAE,QAAQ;CACrB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,MAAa,sBAAsB,EAAE,OAAO;CAC1C,UAAU,EAAE,QAAQ;CACpB,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF,MAAa,qBAAqB,EAAE,OAAO;CACzC,WAAW,EAAE,QAAQ;CACrB,YAAY,EAAE,QAAQ;CACtB,UAAU,EAAE,MAAM,kBAAkB;CACpC,YAAY,EAAE,MAAM,oBAAoB;CACzC,CAAC;;;;ACNF,MAAa,iBAAiB,QAAQ;CACpC,MAAM;CACN,UAAU,EAAE;CACb,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import * as alepha160 from "alepha";
2
2
  import { Alepha, FileLike, Static, TNull, TObject, TOptional, TSchema, TUnion } from "alepha";
3
3
  import { BucketPrimitive } from "alepha/bucket";
4
- import * as alepha_orm64 from "alepha/orm";
5
- import { Page } from "alepha/orm";
4
+ import "alepha/server/security";
6
5
  import * as alepha_server0 from "alepha/server";
7
6
  import { Ok } from "alepha/server";
8
7
  import { DateTime, DateTimeProvider, DurationLike } from "alepha/datetime";
9
8
  import * as alepha_logger0 from "alepha/logger";
10
- import "alepha/server/security";
9
+ import * as alepha_orm16 from "alepha/orm";
10
+ import { Page } from "alepha/orm";
11
11
  import * as alepha_scheduler0 from "alepha/scheduler";
12
12
  import "bun";
13
13
  import "bun:sqlite";
@@ -24,11 +24,11 @@ import "drizzle-orm/postgres-js";
24
24
  import "postgres";
25
25
 
26
26
  //#region ../../src/api/files/entities/files.d.ts
27
- declare const files: alepha_orm64.EntityPrimitive<alepha160.TObject<{
28
- id: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_PRIMARY_KEY>, typeof alepha_orm64.PG_DEFAULT>;
29
- version: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TInteger, typeof alepha_orm64.PG_VERSION>, typeof alepha_orm64.PG_DEFAULT>;
30
- createdAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_CREATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
31
- updatedAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_UPDATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
27
+ declare const files: alepha_orm16.EntityPrimitive<alepha160.TObject<{
28
+ id: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TString, typeof alepha_orm16.PG_PRIMARY_KEY>, typeof alepha_orm16.PG_DEFAULT>;
29
+ version: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TInteger, typeof alepha_orm16.PG_VERSION>, typeof alepha_orm16.PG_DEFAULT>;
30
+ createdAt: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TString, typeof alepha_orm16.PG_CREATED_AT>, typeof alepha_orm16.PG_DEFAULT>;
31
+ updatedAt: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TString, typeof alepha_orm16.PG_UPDATED_AT>, typeof alepha_orm16.PG_DEFAULT>;
32
32
  blobId: alepha160.TString;
33
33
  creator: alepha160.TOptional<alepha160.TString>;
34
34
  creatorRealm: alepha160.TOptional<alepha160.TString>;
@@ -509,11 +509,11 @@ type StorageStats = Static<typeof storageStatsSchema>;
509
509
  declare class FileService {
510
510
  protected readonly alepha: Alepha;
511
511
  protected readonly log: alepha_logger0.Logger;
512
- protected readonly fileRepository: alepha_orm64.Repository<alepha160.TObject<{
513
- id: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_PRIMARY_KEY>, typeof alepha_orm64.PG_DEFAULT>;
514
- version: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TInteger, typeof alepha_orm64.PG_VERSION>, typeof alepha_orm64.PG_DEFAULT>;
515
- createdAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_CREATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
516
- updatedAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_UPDATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
512
+ protected readonly fileRepository: alepha_orm16.Repository<alepha160.TObject<{
513
+ id: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TString, typeof alepha_orm16.PG_PRIMARY_KEY>, typeof alepha_orm16.PG_DEFAULT>;
514
+ version: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TInteger, typeof alepha_orm16.PG_VERSION>, typeof alepha_orm16.PG_DEFAULT>;
515
+ createdAt: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TString, typeof alepha_orm16.PG_CREATED_AT>, typeof alepha_orm16.PG_DEFAULT>;
516
+ updatedAt: alepha_orm16.PgAttr<alepha_orm16.PgAttr<alepha160.TString, typeof alepha_orm16.PG_UPDATED_AT>, typeof alepha_orm16.PG_DEFAULT>;
517
517
  blobId: alepha160.TString;
518
518
  creator: alepha160.TOptional<alepha160.TString>;
519
519
  creatorRealm: alepha160.TOptional<alepha160.TString>;
@@ -649,6 +649,37 @@ declare class FileService {
649
649
  entityToResource(entity: FileEntity): FileResource;
650
650
  }
651
651
  //#endregion
652
+ //#region ../../src/api/files/controllers/AdminFileStatsController.d.ts
653
+ /**
654
+ * REST API controller for storage analytics and statistics.
655
+ * Provides endpoints for viewing storage usage metrics.
656
+ */
657
+ declare class AdminFileStatsController {
658
+ protected readonly url = "/files/stats";
659
+ protected readonly group = "admin:files";
660
+ protected readonly fileService: FileService;
661
+ /**
662
+ * GET /files/stats - Gets storage statistics.
663
+ * Returns aggregated data including total size, file count,
664
+ * and breakdowns by bucket and MIME type.
665
+ */
666
+ readonly getStats: alepha_server0.ActionPrimitiveFn<{
667
+ response: alepha160.TObject<{
668
+ totalSize: alepha160.TNumber;
669
+ totalFiles: alepha160.TNumber;
670
+ byBucket: alepha160.TArray<alepha160.TObject<{
671
+ bucket: alepha160.TString;
672
+ totalSize: alepha160.TNumber;
673
+ fileCount: alepha160.TNumber;
674
+ }>>;
675
+ byMimeType: alepha160.TArray<alepha160.TObject<{
676
+ mimeType: alepha160.TString;
677
+ fileCount: alepha160.TNumber;
678
+ }>>;
679
+ }>;
680
+ }>;
681
+ }
682
+ //#endregion
652
683
  //#region ../../src/api/files/controllers/FileController.d.ts
653
684
  /**
654
685
  * REST API controller for file management operations.
@@ -676,10 +707,10 @@ declare class FileController {
676
707
  createdBefore: alepha160.TOptional<alepha160.TString>;
677
708
  }>;
678
709
  response: alepha160.TPage<alepha160.TObject<{
679
- id: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_PRIMARY_KEY>, typeof alepha_orm64.PG_DEFAULT>;
680
- version: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TInteger, typeof alepha_orm64.PG_VERSION>, typeof alepha_orm64.PG_DEFAULT>;
681
- createdAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_CREATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
682
- updatedAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_UPDATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
710
+ id: PgAttr<PgAttr<alepha160.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
711
+ version: PgAttr<PgAttr<alepha160.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
712
+ createdAt: PgAttr<PgAttr<alepha160.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
713
+ updatedAt: PgAttr<PgAttr<alepha160.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
683
714
  blobId: alepha160.TString;
684
715
  creator: alepha160.TOptional<alepha160.TString>;
685
716
  creatorRealm: alepha160.TOptional<alepha160.TString>;
@@ -721,10 +752,10 @@ declare class FileController {
721
752
  bucket: alepha160.TOptional<alepha160.TString>;
722
753
  }>;
723
754
  response: alepha160.TObject<{
724
- id: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_PRIMARY_KEY>, typeof alepha_orm64.PG_DEFAULT>;
725
- version: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TInteger, typeof alepha_orm64.PG_VERSION>, typeof alepha_orm64.PG_DEFAULT>;
726
- createdAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_CREATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
727
- updatedAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_UPDATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
755
+ id: PgAttr<PgAttr<alepha160.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
756
+ version: PgAttr<PgAttr<alepha160.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
757
+ createdAt: PgAttr<PgAttr<alepha160.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
758
+ updatedAt: PgAttr<PgAttr<alepha160.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
728
759
  blobId: alepha160.TString;
729
760
  creator: alepha160.TOptional<alepha160.TString>;
730
761
  creatorRealm: alepha160.TOptional<alepha160.TString>;
@@ -752,10 +783,10 @@ declare class FileController {
752
783
  expirationDate: alepha160.TOptional<alepha160.TString>;
753
784
  }>;
754
785
  response: alepha160.TObject<{
755
- id: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_PRIMARY_KEY>, typeof alepha_orm64.PG_DEFAULT>;
756
- version: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TInteger, typeof alepha_orm64.PG_VERSION>, typeof alepha_orm64.PG_DEFAULT>;
757
- createdAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_CREATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
758
- updatedAt: alepha_orm64.PgAttr<alepha_orm64.PgAttr<alepha160.TString, typeof alepha_orm64.PG_UPDATED_AT>, typeof alepha_orm64.PG_DEFAULT>;
786
+ id: PgAttr<PgAttr<alepha160.TString, typeof PG_PRIMARY_KEY>, typeof PG_DEFAULT>;
787
+ version: PgAttr<PgAttr<alepha160.TInteger, typeof PG_VERSION>, typeof PG_DEFAULT>;
788
+ createdAt: PgAttr<PgAttr<alepha160.TString, typeof PG_CREATED_AT>, typeof PG_DEFAULT>;
789
+ updatedAt: PgAttr<PgAttr<alepha160.TString, typeof PG_UPDATED_AT>, typeof PG_DEFAULT>;
759
790
  blobId: alepha160.TString;
760
791
  creator: alepha160.TOptional<alepha160.TString>;
761
792
  creatorRealm: alepha160.TOptional<alepha160.TString>;
@@ -782,37 +813,6 @@ declare class FileController {
782
813
  }>;
783
814
  }
784
815
  //#endregion
785
- //#region ../../src/api/files/controllers/StorageStatsController.d.ts
786
- /**
787
- * REST API controller for storage analytics and statistics.
788
- * Provides endpoints for viewing storage usage metrics.
789
- */
790
- declare class StorageStatsController {
791
- protected readonly url = "/files/stats";
792
- protected readonly group = "files";
793
- protected readonly fileService: FileService;
794
- /**
795
- * GET /files/stats - Gets storage statistics.
796
- * Returns aggregated data including total size, file count,
797
- * and breakdowns by bucket and MIME type.
798
- */
799
- readonly getStats: alepha_server0.ActionPrimitiveFn<{
800
- response: alepha160.TObject<{
801
- totalSize: alepha160.TNumber;
802
- totalFiles: alepha160.TNumber;
803
- byBucket: alepha160.TArray<alepha160.TObject<{
804
- bucket: alepha160.TString;
805
- totalSize: alepha160.TNumber;
806
- fileCount: alepha160.TNumber;
807
- }>>;
808
- byMimeType: alepha160.TArray<alepha160.TObject<{
809
- mimeType: alepha160.TString;
810
- fileCount: alepha160.TNumber;
811
- }>>;
812
- }>;
813
- }>;
814
- }
815
- //#endregion
816
816
  //#region ../../src/api/files/jobs/FileJobs.d.ts
817
817
  declare class FileJobs {
818
818
  protected readonly fileService: FileService;
@@ -852,5 +852,5 @@ declare module "alepha/bucket" {
852
852
  */
853
853
  declare const AlephaApiFiles: alepha160.Service<alepha160.Module>;
854
854
  //#endregion
855
- export { AlephaApiFiles, BucketStats, FileController, FileEntity, FileJobs, FileService, MimeTypeStats, StorageStats, StorageStatsController, bucketStatsSchema, files, mimeTypeStatsSchema, storageStatsSchema };
855
+ export { AdminFileStatsController, AlephaApiFiles, BucketStats, FileController, FileEntity, FileJobs, FileService, MimeTypeStats, StorageStats, bucketStatsSchema, files, mimeTypeStatsSchema, storageStatsSchema };
856
856
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/api/files/entities/files.ts","../../../src/api/files/schemas/fileQuerySchema.ts","../../../src/orm/schemas/insertSchema.ts","../../../src/orm/schemas/updateSchema.ts","../../../src/orm/primitives/$entity.ts","../../../src/orm/constants/PG_SYMBOLS.ts","../../../src/orm/helpers/pgAttr.ts","../../../src/orm/providers/drivers/BunPostgresProvider.ts","../../../src/orm/providers/drivers/BunSqliteProvider.ts","../../../src/orm/providers/drivers/NodePostgresProvider.ts","../../../src/orm/providers/drivers/NodeSqliteProvider.ts","../../../src/orm/index.ts","../../../src/api/files/schemas/fileResourceSchema.ts","../../../src/api/files/schemas/storageStatsSchema.ts","../../../src/api/files/services/FileService.ts","../../../src/api/files/controllers/FileController.ts","../../../src/api/files/controllers/StorageStatsController.ts","../../../src/api/files/jobs/FileJobs.ts","../../../src/api/files/index.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/api/files/entities/files.ts","../../../src/api/files/schemas/fileQuerySchema.ts","../../../src/orm/schemas/insertSchema.ts","../../../src/orm/schemas/updateSchema.ts","../../../src/orm/primitives/$entity.ts","../../../src/orm/constants/PG_SYMBOLS.ts","../../../src/orm/helpers/pgAttr.ts","../../../src/orm/providers/drivers/BunPostgresProvider.ts","../../../src/orm/providers/drivers/BunSqliteProvider.ts","../../../src/orm/providers/drivers/NodePostgresProvider.ts","../../../src/orm/providers/drivers/NodeSqliteProvider.ts","../../../src/orm/index.ts","../../../src/api/files/schemas/fileResourceSchema.ts","../../../src/api/files/schemas/storageStatsSchema.ts","../../../src/api/files/services/FileService.ts","../../../src/api/files/controllers/AdminFileStatsController.ts","../../../src/api/files/controllers/FileController.ts","../../../src/api/files/jobs/FileJobs.ts","../../../src/api/files/index.ts"],"sourcesContent":[],"mappings":"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"}