@archlast/server 0.1.8 → 0.1.9

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 (347) hide show
  1. package/README.md +104 -100
  2. package/dist/admin/auth.d.ts +24 -5
  3. package/dist/admin/auth.js +49 -25
  4. package/dist/admin/schema.d.ts +122 -32
  5. package/dist/admin/schema.js +131 -95
  6. package/dist/admin/seed.d.ts +1 -1
  7. package/dist/admin/seed.js +79 -47
  8. package/dist/auth/api-key-resolver.d.ts +1 -1
  9. package/dist/auth/api-key-resolver.js +7 -3
  10. package/dist/auth/archlast-auth-adapter.d.ts +2 -5
  11. package/dist/auth/archlast-auth-adapter.js +1 -1
  12. package/dist/auth/better-auth-adapter.d.ts.map +1 -1
  13. package/dist/auth/better-auth-adapter.js +41 -26
  14. package/dist/auth/better-auth-adapter.js.map +1 -1
  15. package/dist/auth/better-auth-admin.d.ts.map +1 -1
  16. package/dist/auth/better-auth-admin.js +1 -1
  17. package/dist/auth/better-auth-admin.js.map +1 -1
  18. package/dist/auth/better-auth-api-key-resolver.js +1 -1
  19. package/dist/auth/better-auth-api-key-resolver.js.map +1 -1
  20. package/dist/auth/better-auth-instance.d.ts +249 -301
  21. package/dist/auth/better-auth-instance.d.ts.map +1 -1
  22. package/dist/auth/better-auth-instance.js +11 -0
  23. package/dist/auth/better-auth-instance.js.map +1 -1
  24. package/dist/auth/better-auth-seed.d.ts +5 -2
  25. package/dist/auth/better-auth-seed.js +31 -22
  26. package/dist/auth/better-auth-session-adapter.d.ts.map +1 -1
  27. package/dist/auth/better-auth-session-adapter.js +14 -10
  28. package/dist/auth/better-auth-session-adapter.js.map +1 -1
  29. package/dist/auth/errors.d.ts.map +1 -1
  30. package/dist/auth/errors.js +11 -11
  31. package/dist/auth/errors.js.map +1 -1
  32. package/dist/auth/oauth-proxy.d.ts +5 -2
  33. package/dist/auth/oauth-proxy.js +23 -27
  34. package/dist/auth/resolver.d.ts.map +1 -1
  35. package/dist/auth/resolver.js.map +1 -1
  36. package/dist/auth/role-helpers.d.ts +1 -1
  37. package/dist/auth/role-helpers.d.ts.map +1 -1
  38. package/dist/auth/role-helpers.js.map +1 -1
  39. package/dist/auth/session-manager.d.ts +2 -5
  40. package/dist/auth/session-manager.js +16 -6
  41. package/dist/auth/system/better-auth-schema.d.ts.map +1 -1
  42. package/dist/auth/system/better-auth-schema.js +6 -23
  43. package/dist/auth/system/better-auth-schema.js.map +1 -1
  44. package/dist/cache/circuit-breaker.d.ts +81 -0
  45. package/dist/cache/circuit-breaker.d.ts.map +1 -0
  46. package/dist/cache/circuit-breaker.js +170 -0
  47. package/dist/cache/circuit-breaker.js.map +1 -0
  48. package/dist/cache/client.d.ts +6 -3
  49. package/dist/cache/client.d.ts.map +1 -1
  50. package/dist/cache/client.js +12 -53
  51. package/dist/cache/client.js.map +1 -1
  52. package/dist/cache/index.d.ts +2 -0
  53. package/dist/cache/index.d.ts.map +1 -1
  54. package/dist/cache/index.js +5 -1
  55. package/dist/cache/index.js.map +1 -1
  56. package/dist/cache/invalidation-queue.d.ts +63 -0
  57. package/dist/cache/invalidation-queue.d.ts.map +1 -0
  58. package/dist/cache/invalidation-queue.js +196 -0
  59. package/dist/cache/invalidation-queue.js.map +1 -0
  60. package/dist/cache/layers.d.ts +14 -4
  61. package/dist/cache/layers.d.ts.map +1 -1
  62. package/dist/cache/layers.js +66 -72
  63. package/dist/cache/layers.js.map +1 -1
  64. package/dist/cache/manager.d.ts.map +1 -1
  65. package/dist/cache/manager.js +6 -41
  66. package/dist/cache/manager.js.map +1 -1
  67. package/dist/cache/protocol.d.ts +4 -39
  68. package/dist/cache/protocol.d.ts.map +1 -1
  69. package/dist/cache/protocol.js.map +1 -1
  70. package/dist/cache/redis-adapter.d.ts +103 -0
  71. package/dist/cache/redis-adapter.d.ts.map +1 -0
  72. package/dist/cache/redis-adapter.js +424 -0
  73. package/dist/cache/redis-adapter.js.map +1 -0
  74. package/dist/cache/run-sidecar.js +10 -1
  75. package/dist/cache/run-sidecar.js.map +1 -1
  76. package/dist/cache/sidecar-server.d.ts +51 -1
  77. package/dist/cache/sidecar-server.d.ts.map +1 -1
  78. package/dist/cache/sidecar-server.js +368 -22
  79. package/dist/cache/sidecar-server.js.map +1 -1
  80. package/dist/cache/store.d.ts +43 -0
  81. package/dist/cache/store.d.ts.map +1 -1
  82. package/dist/cache/store.js +69 -76
  83. package/dist/cache/store.js.map +1 -1
  84. package/dist/cache/strategies.d.ts +2 -9
  85. package/dist/cache/strategies.d.ts.map +1 -1
  86. package/dist/cache/types.d.ts +130 -0
  87. package/dist/cache/types.d.ts.map +1 -0
  88. package/dist/cache/types.js +60 -0
  89. package/dist/cache/types.js.map +1 -0
  90. package/dist/config/bullmq.d.ts +16 -0
  91. package/dist/config/bullmq.d.ts.map +1 -0
  92. package/dist/config/bullmq.js +103 -0
  93. package/dist/config/bullmq.js.map +1 -0
  94. package/dist/config/index.d.ts +1 -0
  95. package/dist/config/index.d.ts.map +1 -1
  96. package/dist/config/index.js +1 -0
  97. package/dist/config/index.js.map +1 -1
  98. package/dist/config/schema.d.ts +80 -6
  99. package/dist/config/schema.d.ts.map +1 -1
  100. package/dist/config/schema.js +71 -6
  101. package/dist/config/schema.js.map +1 -1
  102. package/dist/config/service.d.ts +54 -4
  103. package/dist/config/service.d.ts.map +1 -1
  104. package/dist/config/service.js +56 -2
  105. package/dist/config/service.js.map +1 -1
  106. package/dist/controllers/admin/admin-tokens.controller.d.ts +131 -115
  107. package/dist/controllers/admin/admin-tokens.controller.js +117 -98
  108. package/dist/controllers/admin/api-keys.controller.d.ts +1 -1
  109. package/dist/controllers/admin/api-keys.controller.d.ts.map +1 -1
  110. package/dist/controllers/admin/api-keys.controller.js.map +1 -1
  111. package/dist/controllers/admin/app-users.controller.d.ts +274 -243
  112. package/dist/controllers/admin/app-users.controller.js +301 -257
  113. package/dist/controllers/admin/auth.controller.d.ts +260 -236
  114. package/dist/controllers/admin/auth.controller.js +197 -174
  115. package/dist/controllers/admin/backup.controller.d.ts.map +1 -1
  116. package/dist/controllers/admin/backup.controller.js.map +1 -1
  117. package/dist/controllers/admin/settings.controller.d.ts +1 -1
  118. package/dist/controllers/admin/storage-stats.controller.d.ts +63 -0
  119. package/dist/controllers/admin/storage-stats.controller.d.ts.map +1 -0
  120. package/dist/controllers/admin/storage-stats.controller.js +33 -0
  121. package/dist/controllers/admin/storage-stats.controller.js.map +1 -0
  122. package/dist/controllers/admin/tenants.controller.d.ts.map +1 -1
  123. package/dist/controllers/admin/tenants.controller.js.map +1 -1
  124. package/dist/controllers/admin/users.controller.d.ts +1 -1
  125. package/dist/controllers/admin/users.controller.d.ts.map +1 -1
  126. package/dist/controllers/admin/users.controller.js.map +1 -1
  127. package/dist/controllers/auth.controller.d.ts +289 -271
  128. package/dist/controllers/auth.controller.js +275 -226
  129. package/dist/controllers/crud-generator.controller.d.ts.map +1 -1
  130. package/dist/controllers/crud-generator.controller.js +127 -125
  131. package/dist/controllers/crud-generator.controller.js.map +1 -1
  132. package/dist/controllers/index.d.ts +1 -1
  133. package/dist/controllers/index.d.ts.map +1 -1
  134. package/dist/controllers/index.js.map +1 -1
  135. package/dist/controllers/introspection.controller.d.ts +642 -0
  136. package/dist/controllers/introspection.controller.d.ts.map +1 -1
  137. package/dist/controllers/introspection.controller.js +611 -0
  138. package/dist/controllers/introspection.controller.js.map +1 -1
  139. package/dist/controllers/invite.controller.d.ts +190 -170
  140. package/dist/controllers/invite.controller.js +183 -164
  141. package/dist/controllers/mfa.controller.d.ts +205 -183
  142. package/dist/controllers/mfa.controller.js +131 -111
  143. package/dist/controllers/otp.controller.d.ts +194 -171
  144. package/dist/controllers/otp.controller.js +192 -175
  145. package/dist/controllers/storage.controller.d.ts.map +1 -1
  146. package/dist/controllers/storage.controller.js.map +1 -1
  147. package/dist/controllers/system.controller.d.ts +5 -3
  148. package/dist/controllers/system.controller.d.ts.map +1 -1
  149. package/dist/controllers/system.controller.js +4 -2
  150. package/dist/controllers/system.controller.js.map +1 -1
  151. package/dist/controllers/tenant.controller.d.ts +258 -227
  152. package/dist/controllers/tenant.controller.js +224 -200
  153. package/dist/db/cachedclient.d.ts +6 -11
  154. package/dist/db/cachedclient.d.ts.map +1 -1
  155. package/dist/db/cachedclient.js +79 -43
  156. package/dist/db/cachedclient.js.map +1 -1
  157. package/dist/db/distributed-client.d.ts +79 -24
  158. package/dist/db/distributed-client.js +23 -24
  159. package/dist/db/factory.d.ts +3 -8
  160. package/dist/db/factory.d.ts.map +1 -1
  161. package/dist/db/factory.js +3 -22
  162. package/dist/db/factory.js.map +1 -1
  163. package/dist/db/socket-client.d.ts +7 -0
  164. package/dist/db/socket-client.d.ts.map +1 -1
  165. package/dist/db/socket-client.js +140 -11
  166. package/dist/db/socket-client.js.map +1 -1
  167. package/dist/deployment/handler.d.ts +10 -2
  168. package/dist/deployment/handler.d.ts.map +1 -1
  169. package/dist/deployment/handler.js +70 -15
  170. package/dist/deployment/handler.js.map +1 -1
  171. package/dist/deployment/persistence.d.ts.map +1 -1
  172. package/dist/deployment/persistence.js +6 -1
  173. package/dist/deployment/persistence.js.map +1 -1
  174. package/dist/docker/compose.d.ts.map +1 -1
  175. package/dist/docker/compose.js +76 -0
  176. package/dist/docker/compose.js.map +1 -1
  177. package/dist/engine/runner.d.ts.map +1 -1
  178. package/dist/engine/runner.js +0 -43
  179. package/dist/engine/runner.js.map +1 -1
  180. package/dist/functions/built-in/auth-apikey.d.ts.map +1 -1
  181. package/dist/functions/built-in/auth-apikey.js.map +1 -1
  182. package/dist/functions/built-in/system-cache.d.ts.map +1 -1
  183. package/dist/functions/built-in/system-cache.js +6 -31
  184. package/dist/functions/built-in/system-cache.js.map +1 -1
  185. package/dist/functions/built-in/system-data.d.ts.map +1 -1
  186. package/dist/functions/built-in/system-data.js +4 -2
  187. package/dist/functions/built-in/system-data.js.map +1 -1
  188. package/dist/functions/definition.d.ts.map +1 -1
  189. package/dist/functions/definition.js +6 -2
  190. package/dist/functions/definition.js.map +1 -1
  191. package/dist/http/routes/metrics.d.ts +42 -0
  192. package/dist/http/routes/metrics.d.ts.map +1 -0
  193. package/dist/http/routes/metrics.js +29 -0
  194. package/dist/http/routes/metrics.js.map +1 -0
  195. package/dist/http/server.d.ts +1 -0
  196. package/dist/http/server.d.ts.map +1 -1
  197. package/dist/http/server.js +41 -3
  198. package/dist/http/server.js.map +1 -1
  199. package/dist/ipc/socket-bridge.d.ts +1 -0
  200. package/dist/ipc/socket-bridge.d.ts.map +1 -1
  201. package/dist/ipc/socket-bridge.js +5 -1
  202. package/dist/ipc/socket-bridge.js.map +1 -1
  203. package/dist/jobs/bullmq-adapter.d.ts +154 -0
  204. package/dist/jobs/bullmq-adapter.d.ts.map +1 -0
  205. package/dist/jobs/bullmq-adapter.js +688 -0
  206. package/dist/jobs/bullmq-adapter.js.map +1 -0
  207. package/dist/jobs/bullmq-circuit-breaker.d.ts +133 -0
  208. package/dist/jobs/bullmq-circuit-breaker.d.ts.map +1 -0
  209. package/dist/jobs/bullmq-circuit-breaker.js +323 -0
  210. package/dist/jobs/bullmq-circuit-breaker.js.map +1 -0
  211. package/dist/jobs/bullmq-dlq-manager.d.ts +155 -0
  212. package/dist/jobs/bullmq-dlq-manager.d.ts.map +1 -0
  213. package/dist/jobs/bullmq-dlq-manager.js +325 -0
  214. package/dist/jobs/bullmq-dlq-manager.js.map +1 -0
  215. package/dist/jobs/bullmq-metrics.d.ts +104 -0
  216. package/dist/jobs/bullmq-metrics.d.ts.map +1 -0
  217. package/dist/jobs/bullmq-metrics.js +323 -0
  218. package/dist/jobs/bullmq-metrics.js.map +1 -0
  219. package/dist/jobs/bullmq-priority-service.d.ts +173 -0
  220. package/dist/jobs/bullmq-priority-service.d.ts.map +1 -0
  221. package/dist/jobs/bullmq-priority-service.js +390 -0
  222. package/dist/jobs/bullmq-priority-service.js.map +1 -0
  223. package/dist/jobs/bullmq-scheduler.d.ts +111 -0
  224. package/dist/jobs/bullmq-scheduler.d.ts.map +1 -0
  225. package/dist/jobs/bullmq-scheduler.js +300 -0
  226. package/dist/jobs/bullmq-scheduler.js.map +1 -0
  227. package/dist/jobs/bullmq-worker.d.ts +155 -0
  228. package/dist/jobs/bullmq-worker.d.ts.map +1 -0
  229. package/dist/jobs/bullmq-worker.js +651 -0
  230. package/dist/jobs/bullmq-worker.js.map +1 -0
  231. package/dist/jobs/circuit-breaker.d.ts +120 -0
  232. package/dist/jobs/circuit-breaker.d.ts.map +1 -0
  233. package/dist/jobs/circuit-breaker.js +262 -0
  234. package/dist/jobs/circuit-breaker.js.map +1 -0
  235. package/dist/jobs/index.d.ts +1 -1
  236. package/dist/jobs/index.d.ts.map +1 -1
  237. package/dist/jobs/index.js.map +1 -1
  238. package/dist/jobs/queue.d.ts +120 -1
  239. package/dist/jobs/queue.d.ts.map +1 -1
  240. package/dist/jobs/queue.js +487 -9
  241. package/dist/jobs/queue.js.map +1 -1
  242. package/dist/jobs/redis-connection.d.ts +50 -0
  243. package/dist/jobs/redis-connection.d.ts.map +1 -0
  244. package/dist/jobs/redis-connection.js +123 -0
  245. package/dist/jobs/redis-connection.js.map +1 -0
  246. package/dist/jobs/run-scheduler.js +163 -10
  247. package/dist/jobs/run-scheduler.js.map +1 -1
  248. package/dist/jobs/run-worker.js +101 -9
  249. package/dist/jobs/run-worker.js.map +1 -1
  250. package/dist/jobs/worker-thread.d.ts +6 -0
  251. package/dist/jobs/worker-thread.d.ts.map +1 -1
  252. package/dist/jobs/worker-thread.js +37 -8
  253. package/dist/jobs/worker-thread.js.map +1 -1
  254. package/dist/jobs/worker.d.ts +33 -0
  255. package/dist/jobs/worker.d.ts.map +1 -1
  256. package/dist/jobs/worker.js +358 -115
  257. package/dist/jobs/worker.js.map +1 -1
  258. package/dist/linq/async-enumerable.d.ts.map +1 -1
  259. package/dist/linq/async-enumerable.js.map +1 -1
  260. package/dist/linq/enumerable.d.ts.map +1 -1
  261. package/dist/linq/enumerable.js +10 -10
  262. package/dist/linq/enumerable.js.map +1 -1
  263. package/dist/metrics/collector.d.ts +26 -0
  264. package/dist/metrics/collector.d.ts.map +1 -0
  265. package/dist/metrics/collector.js +103 -0
  266. package/dist/metrics/collector.js.map +1 -0
  267. package/dist/polling/updates.controller.d.ts +57 -0
  268. package/dist/polling/updates.controller.d.ts.map +1 -0
  269. package/dist/polling/updates.controller.js +70 -0
  270. package/dist/polling/updates.controller.js.map +1 -0
  271. package/dist/repository/db-set.d.ts.map +1 -1
  272. package/dist/repository/db-set.js +12 -8
  273. package/dist/repository/db-set.js.map +1 -1
  274. package/dist/repository/ef-core.d.ts.map +1 -1
  275. package/dist/repository/ef-core.js +6 -6
  276. package/dist/repository/ef-core.js.map +1 -1
  277. package/dist/repository/factory.d.ts +1 -1
  278. package/dist/repository/factory.d.ts.map +1 -1
  279. package/dist/repository/factory.js.map +1 -1
  280. package/dist/repository/interfaces.d.ts.map +1 -1
  281. package/dist/repository/interfaces.js.map +1 -1
  282. package/dist/repository/queryable.d.ts.map +1 -1
  283. package/dist/repository/queryable.js.map +1 -1
  284. package/dist/rpc/adapter.d.ts.map +1 -1
  285. package/dist/rpc/adapter.js.map +1 -1
  286. package/dist/rpc/router.d.ts +2 -2
  287. package/dist/rpc/router.d.ts.map +1 -1
  288. package/dist/rpc/router.js +1 -1
  289. package/dist/rpc/router.js.map +1 -1
  290. package/dist/schema/relationship-types.d.ts +7 -2
  291. package/dist/schema/relationship-types.js +1 -1
  292. package/dist/schema/types.d.ts.map +1 -1
  293. package/dist/services/admin/app-users.service.d.ts +1 -1
  294. package/dist/services/admin/app-users.service.js +31 -38
  295. package/dist/services/admin/auth.service.d.ts +1 -1
  296. package/dist/services/admin/auth.service.js +11 -5
  297. package/dist/services/admin/backup/BackupOrchestrator.d.ts.map +1 -1
  298. package/dist/services/admin/backup/BackupOrchestrator.js +4 -7
  299. package/dist/services/admin/backup/BackupOrchestrator.js.map +1 -1
  300. package/dist/services/admin/backup/SqliteGenerator.js +8 -8
  301. package/dist/services/admin/backup/StorageStreamer.d.ts +3 -3
  302. package/dist/services/admin/backup/StorageStreamer.d.ts.map +1 -1
  303. package/dist/services/admin/backup/StorageStreamer.js +16 -55
  304. package/dist/services/admin/backup/StorageStreamer.js.map +1 -1
  305. package/dist/services/admin/backup/ZipComposer.d.ts +2 -0
  306. package/dist/services/admin/backup/ZipComposer.d.ts.map +1 -1
  307. package/dist/services/admin/backup/ZipComposer.js +23 -0
  308. package/dist/services/admin/backup/ZipComposer.js.map +1 -1
  309. package/dist/services/admin/backup.service.d.ts.map +1 -1
  310. package/dist/services/admin/backup.service.js.map +1 -1
  311. package/dist/services/admin/data.service.d.ts.map +1 -1
  312. package/dist/services/admin/data.service.js +287 -286
  313. package/dist/services/admin/data.service.js.map +1 -1
  314. package/dist/services/admin/tenants.service.d.ts.map +1 -1
  315. package/dist/services/admin/tenants.service.js.map +1 -1
  316. package/dist/services/auth.service.d.ts +2 -3
  317. package/dist/services/auth.service.js +16 -16
  318. package/dist/services/invite.service.d.ts +1 -1
  319. package/dist/services/invite.service.js +17 -15
  320. package/dist/services/storage.service.d.ts.map +1 -1
  321. package/dist/services/storage.service.js +35 -4
  322. package/dist/services/storage.service.js.map +1 -1
  323. package/dist/services/system.service.d.ts.map +1 -1
  324. package/dist/services/system.service.js +1 -1
  325. package/dist/services/system.service.js.map +1 -1
  326. package/dist/services/tenant.service.d.ts +1 -1
  327. package/dist/services/tenant.service.js +43 -31
  328. package/dist/sse/subscriptions.controller.d.ts +57 -0
  329. package/dist/sse/subscriptions.controller.d.ts.map +1 -0
  330. package/dist/sse/subscriptions.controller.js +127 -0
  331. package/dist/sse/subscriptions.controller.js.map +1 -0
  332. package/dist/startup/bootstrap.d.ts +13 -2
  333. package/dist/startup/bootstrap.d.ts.map +1 -1
  334. package/dist/startup/bootstrap.js +85 -13
  335. package/dist/startup/bootstrap.js.map +1 -1
  336. package/dist/storage/s3-backend.d.ts.map +1 -1
  337. package/dist/storage/s3-backend.js +3 -3
  338. package/dist/storage/s3-backend.js.map +1 -1
  339. package/dist/websocket/server.d.ts.map +1 -1
  340. package/dist/websocket/server.js +14 -3
  341. package/dist/websocket/server.js.map +1 -1
  342. package/docker/README.md +309 -11
  343. package/package.json +214 -210
  344. package/templates/.env.example +115 -55
  345. package/templates/archlast.config.js +51 -37
  346. package/templates/docker-compose.prod.yml +32 -15
  347. package/templates/docker-compose.yml +117 -33
@@ -26,130 +26,150 @@ exports.mfaController = new elysia_1.Elysia({ prefix: "/mfa", tags: ["MFA"] })
26
26
  * POST /_auth/mfa/enroll
27
27
  * Start TOTP enrollment
28
28
  */
29
- .post("/enroll", async (ctx) => {
30
- const { rawDb, user } = (0, context_helper_js_1.getCtx)(ctx);
31
- const { body, set } = (0, context_helper_js_1.getCtx)(ctx);
32
- if (!user) {
33
- set.status = 401;
34
- return { error: "Unauthorized" };
35
- }
36
- const mfaService = (0, index_js_1.createMfaService)(rawDb);
37
- const result = await mfaService.enrollTotp({
38
- userId: user.id,
39
- issuer: body.issuer || "Archlast",
40
- accountName: user.tenantId || user.id,
41
- });
42
- return {
43
- success: true,
44
- secret: result.secret,
45
- uri: result.uri,
46
- qrDataUrl: result.qrDataUrl,
47
- };
48
- }, {
49
- body: EnrollSchema,
50
- detail: {
51
- summary: "Enroll TOTP",
52
- description: "Start TOTP enrollment and get QR code",
53
- },
54
- })
29
+ .post(
30
+ "/enroll",
31
+ async (ctx) => {
32
+ const { rawDb, user } = (0, context_helper_js_1.getCtx)(ctx);
33
+ const { body, set } = (0, context_helper_js_1.getCtx)(ctx);
34
+ if (!user) {
35
+ set.status = 401;
36
+ return { error: "Unauthorized" };
37
+ }
38
+ const mfaService = (0, index_js_1.createMfaService)(rawDb);
39
+ const result = await mfaService.enrollTotp({
40
+ userId: user.id,
41
+ issuer: body.issuer || "Archlast",
42
+ accountName: user.tenantId || user.id,
43
+ });
44
+ return {
45
+ success: true,
46
+ secret: result.secret,
47
+ uri: result.uri,
48
+ qrDataUrl: result.qrDataUrl,
49
+ };
50
+ },
51
+ {
52
+ body: EnrollSchema,
53
+ detail: {
54
+ summary: "Enroll TOTP",
55
+ description: "Start TOTP enrollment and get QR code",
56
+ },
57
+ }
58
+ )
55
59
  /**
56
60
  * POST /_auth/mfa/verify-enrollment
57
61
  * Verify TOTP enrollment with code
58
62
  */
59
- .post("/verify-enrollment", async (ctx) => {
60
- const { rawDb, user } = ctx;
61
- const { body, set } = (0, context_helper_js_1.getCtx)(ctx);
62
- if (!user) {
63
- set.status = 401;
64
- return { error: "Unauthorized" };
65
- }
66
- const mfaService = (0, index_js_1.createMfaService)(rawDb);
67
- const result = await mfaService.verifyTotpEnrollment({
68
- userId: user.id,
69
- code: body.code,
70
- });
71
- if (!result.valid) {
72
- return { valid: false, error: "Invalid code" };
73
- }
74
- // Generate backup codes after successful enrollment
75
- const backupCodes = await mfaService.generateBackupCodes(user.id);
76
- return {
77
- valid: true,
78
- backupCodes: backupCodes.codes,
79
- };
80
- }, {
81
- body: VerifyEnrollmentSchema,
82
- detail: {
83
- summary: "Verify TOTP enrollment",
84
- description: "Complete TOTP enrollment with verification code",
85
- },
86
- })
63
+ .post(
64
+ "/verify-enrollment",
65
+ async (ctx) => {
66
+ const { rawDb, user } = ctx;
67
+ const { body, set } = (0, context_helper_js_1.getCtx)(ctx);
68
+ if (!user) {
69
+ set.status = 401;
70
+ return { error: "Unauthorized" };
71
+ }
72
+ const mfaService = (0, index_js_1.createMfaService)(rawDb);
73
+ const result = await mfaService.verifyTotpEnrollment({
74
+ userId: user.id,
75
+ code: body.code,
76
+ });
77
+ if (!result.valid) {
78
+ return { valid: false, error: "Invalid code" };
79
+ }
80
+ // Generate backup codes after successful enrollment
81
+ const backupCodes = await mfaService.generateBackupCodes(user.id);
82
+ return {
83
+ valid: true,
84
+ backupCodes: backupCodes.codes,
85
+ };
86
+ },
87
+ {
88
+ body: VerifyEnrollmentSchema,
89
+ detail: {
90
+ summary: "Verify TOTP enrollment",
91
+ description: "Complete TOTP enrollment with verification code",
92
+ },
93
+ }
94
+ )
87
95
  /**
88
96
  * POST /_auth/mfa/challenge
89
97
  * Verify TOTP code during login
90
98
  */
91
- .post("/challenge", async (ctx) => {
92
- const { rawDb } = ctx;
93
- const { body, set } = (0, context_helper_js_1.getCtx)(ctx);
94
- const mfaService = (0, index_js_1.createMfaService)(rawDb);
95
- // Try TOTP first
96
- let result = await mfaService.verifyTotp({
97
- userId: body.userId,
98
- code: body.code,
99
- });
100
- // If TOTP fails, try backup code
101
- if (!result.valid) {
102
- result = await mfaService.verifyBackupCode({
103
- userId: body.userId,
104
- code: body.code,
105
- });
106
- }
107
- return { valid: result.valid };
108
- }, {
109
- body: ChallengeSchema,
110
- detail: {
111
- summary: "MFA challenge",
112
- description: "Verify TOTP or backup code during login",
113
- },
114
- })
99
+ .post(
100
+ "/challenge",
101
+ async (ctx) => {
102
+ const { rawDb } = ctx;
103
+ const { body, set } = (0, context_helper_js_1.getCtx)(ctx);
104
+ const mfaService = (0, index_js_1.createMfaService)(rawDb);
105
+ // Try TOTP first
106
+ let result = await mfaService.verifyTotp({
107
+ userId: body.userId,
108
+ code: body.code,
109
+ });
110
+ // If TOTP fails, try backup code
111
+ if (!result.valid) {
112
+ result = await mfaService.verifyBackupCode({
113
+ userId: body.userId,
114
+ code: body.code,
115
+ });
116
+ }
117
+ return { valid: result.valid };
118
+ },
119
+ {
120
+ body: ChallengeSchema,
121
+ detail: {
122
+ summary: "MFA challenge",
123
+ description: "Verify TOTP or backup code during login",
124
+ },
125
+ }
126
+ )
115
127
  /**
116
128
  * GET /_auth/mfa/status
117
129
  * Check if MFA is enabled
118
130
  */
119
- .get("/status", async (ctx) => {
120
- const { rawDb, user } = ctx;
121
- const { set } = (0, context_helper_js_1.getCtx)(ctx);
122
- if (!user) {
123
- set.status = 401;
124
- return { error: "Unauthorized" };
125
- }
126
- const mfaService = (0, index_js_1.createMfaService)(rawDb);
127
- const hasMfa = await mfaService.hasMfaEnabled(user.id);
128
- return { enabled: hasMfa };
129
- }, {
130
- detail: {
131
- summary: "MFA status",
132
- description: "Check if MFA is enabled for current user",
133
- },
134
- })
131
+ .get(
132
+ "/status",
133
+ async (ctx) => {
134
+ const { rawDb, user } = ctx;
135
+ const { set } = (0, context_helper_js_1.getCtx)(ctx);
136
+ if (!user) {
137
+ set.status = 401;
138
+ return { error: "Unauthorized" };
139
+ }
140
+ const mfaService = (0, index_js_1.createMfaService)(rawDb);
141
+ const hasMfa = await mfaService.hasMfaEnabled(user.id);
142
+ return { enabled: hasMfa };
143
+ },
144
+ {
145
+ detail: {
146
+ summary: "MFA status",
147
+ description: "Check if MFA is enabled for current user",
148
+ },
149
+ }
150
+ )
135
151
  /**
136
152
  * DELETE /_auth/mfa
137
153
  * Disable MFA for user
138
154
  */
139
- .delete("/", async (ctx) => {
140
- const { rawDb, user } = ctx;
141
- const { set } = (0, context_helper_js_1.getCtx)(ctx);
142
- if (!user) {
143
- set.status = 401;
144
- return { error: "Unauthorized" };
145
- }
146
- const mfaService = (0, index_js_1.createMfaService)(rawDb);
147
- await mfaService.removeMfa(user.id);
148
- return { success: true };
149
- }, {
150
- detail: {
151
- summary: "Disable MFA",
152
- description: "Remove MFA from current user account",
153
- },
154
- });
155
- //# sourceMappingURL=mfa.controller.js.map
155
+ .delete(
156
+ "/",
157
+ async (ctx) => {
158
+ const { rawDb, user } = ctx;
159
+ const { set } = (0, context_helper_js_1.getCtx)(ctx);
160
+ if (!user) {
161
+ set.status = 401;
162
+ return { error: "Unauthorized" };
163
+ }
164
+ const mfaService = (0, index_js_1.createMfaService)(rawDb);
165
+ await mfaService.removeMfa(user.id);
166
+ return { success: true };
167
+ },
168
+ {
169
+ detail: {
170
+ summary: "Disable MFA",
171
+ description: "Remove MFA from current user account",
172
+ },
173
+ }
174
+ );
175
+ //# sourceMappingURL=mfa.controller.js.map
@@ -3,125 +3,59 @@
3
3
  * Handles /_auth/otp/* endpoints for magic links and email verification
4
4
  */
5
5
  import { Elysia } from "elysia";
6
- export declare const otpController: Elysia<"/otp", {
7
- decorator: {};
8
- store: {};
9
- derive: {};
10
- resolve: {};
11
- }, {
12
- typebox: {};
13
- error: {};
14
- }, {
15
- schema: {};
16
- standaloneSchema: {};
17
- macro: {};
18
- macroFn: {};
19
- parser: {};
20
- response: {};
21
- } & {
22
- schema: {};
23
- standaloneSchema: {};
24
- macro: Partial<{}>;
25
- macroFn: ({ onBeforeHandle }: any) => {
26
- requireAuth(enabled: boolean): void;
27
- };
28
- parser: {};
29
- response: {};
30
- }, {
31
- otp: {};
32
- } & {
33
- otp: {
34
- send: {
35
- post: {
36
- body: {
37
- type?: string | undefined;
38
- email: string;
39
- };
40
- params: {};
41
- query: unknown;
42
- headers: unknown;
43
- response: {
44
- 200: {
45
- error: string;
46
- } | {
47
- code?: string | undefined;
48
- success: boolean;
49
- expiresAt: number;
50
- error?: undefined;
51
- };
52
- 422: {
53
- type: "validation";
54
- on: string;
55
- summary?: string;
56
- message?: string;
57
- found?: unknown;
58
- property?: string;
59
- expected?: string;
60
- };
61
- };
62
- };
6
+ export declare const otpController: Elysia<
7
+ "/otp",
8
+ {
9
+ decorator: {};
10
+ store: {};
11
+ derive: {};
12
+ resolve: {};
13
+ },
14
+ {
15
+ typebox: {};
16
+ error: {};
17
+ },
18
+ {
19
+ schema: {};
20
+ standaloneSchema: {};
21
+ macro: {};
22
+ macroFn: {};
23
+ parser: {};
24
+ response: {};
25
+ } & {
26
+ schema: {};
27
+ standaloneSchema: {};
28
+ macro: Partial<{}>;
29
+ macroFn: ({ onBeforeHandle }: any) => {
30
+ requireAuth(enabled: boolean): void;
63
31
  };
64
- };
65
- } & {
66
- otp: {
67
- verify: {
68
- post: {
69
- body: {
70
- type?: string | undefined;
71
- email: string;
72
- code: string;
73
- };
74
- params: {};
75
- query: unknown;
76
- headers: unknown;
77
- response: {
78
- 200: {
79
- error: string;
80
- valid?: undefined;
81
- userId?: undefined;
82
- } | {
83
- valid: boolean;
84
- error: string;
85
- userId?: undefined;
86
- } | {
87
- valid: boolean;
88
- userId: string | undefined;
89
- error?: undefined;
90
- };
91
- 422: {
92
- type: "validation";
93
- on: string;
94
- summary?: string;
95
- message?: string;
96
- found?: unknown;
97
- property?: string;
98
- expected?: string;
99
- };
100
- };
101
- };
102
- };
103
- };
104
- } & {
105
- otp: {
106
- "magic-link": {
32
+ parser: {};
33
+ response: {};
34
+ },
35
+ {
36
+ otp: {};
37
+ } & {
38
+ otp: {
107
39
  send: {
108
40
  post: {
109
41
  body: {
110
- redirectUrl?: string | undefined;
42
+ type?: string | undefined;
111
43
  email: string;
112
44
  };
113
45
  params: {};
114
46
  query: unknown;
115
47
  headers: unknown;
116
48
  response: {
117
- 200: {
118
- error: string;
119
- } | {
120
- url?: string | undefined;
121
- success: boolean;
122
- expiresAt: number;
123
- error?: undefined;
124
- };
49
+ 200:
50
+ | {
51
+ error: string;
52
+ }
53
+ | {
54
+ code?: string | undefined;
55
+ success: boolean;
56
+ expiresAt: number;
57
+ error?: undefined;
58
+ };
125
59
  422: {
126
60
  type: "validation";
127
61
  on: string;
@@ -135,35 +69,35 @@ export declare const otpController: Elysia<"/otp", {
135
69
  };
136
70
  };
137
71
  };
138
- };
139
- } & {
140
- otp: {
141
- "magic-link": {
72
+ } & {
73
+ otp: {
142
74
  verify: {
143
75
  post: {
144
76
  body: {
145
- token: string;
77
+ type?: string | undefined;
78
+ email: string;
79
+ code: string;
146
80
  };
147
81
  params: {};
148
82
  query: unknown;
149
83
  headers: unknown;
150
84
  response: {
151
- 200: {
152
- error: string;
153
- valid?: undefined;
154
- userId?: undefined;
155
- email?: undefined;
156
- } | {
157
- valid: boolean;
158
- error: string;
159
- userId?: undefined;
160
- email?: undefined;
161
- } | {
162
- valid: boolean;
163
- userId: string | undefined;
164
- email: string | undefined;
165
- error?: undefined;
166
- };
85
+ 200:
86
+ | {
87
+ error: string;
88
+ valid?: undefined;
89
+ userId?: undefined;
90
+ }
91
+ | {
92
+ valid: boolean;
93
+ error: string;
94
+ userId?: undefined;
95
+ }
96
+ | {
97
+ valid: boolean;
98
+ userId: string | undefined;
99
+ error?: undefined;
100
+ };
167
101
  422: {
168
102
  type: "validation";
169
103
  on: string;
@@ -177,44 +111,133 @@ export declare const otpController: Elysia<"/otp", {
177
111
  };
178
112
  };
179
113
  };
180
- };
181
- }, {
182
- derive: {};
183
- resolve: {};
184
- schema: {};
185
- standaloneSchema: {};
186
- response: {};
187
- }, {
188
- derive: {};
189
- resolve: {};
190
- schema: {};
191
- standaloneSchema: {};
192
- response: {};
193
- } & {
194
- derive: {
195
- readonly auth: null;
196
- readonly user: null;
197
- } | {
198
- readonly auth: import("../auth/interfaces.js").AuthContext;
199
- readonly user: {
200
- id: string;
201
- tenantId: string | null;
202
- session: import("../auth/interfaces.js").AuthSession | null;
203
- } | null;
204
- };
205
- resolve: {};
206
- schema: {};
207
- standaloneSchema: {};
208
- response: import("elysia").ExtractErrorFromHandle<{
209
- readonly auth: null;
210
- readonly user: null;
211
- } | {
212
- readonly auth: import("../auth/interfaces.js").AuthContext;
213
- readonly user: {
214
- id: string;
215
- tenantId: string | null;
216
- session: import("../auth/interfaces.js").AuthSession | null;
217
- } | null;
218
- }>;
219
- }>;
220
- //# sourceMappingURL=otp.controller.d.ts.map
114
+ } & {
115
+ otp: {
116
+ "magic-link": {
117
+ send: {
118
+ post: {
119
+ body: {
120
+ redirectUrl?: string | undefined;
121
+ email: string;
122
+ };
123
+ params: {};
124
+ query: unknown;
125
+ headers: unknown;
126
+ response: {
127
+ 200:
128
+ | {
129
+ error: string;
130
+ }
131
+ | {
132
+ url?: string | undefined;
133
+ success: boolean;
134
+ expiresAt: number;
135
+ error?: undefined;
136
+ };
137
+ 422: {
138
+ type: "validation";
139
+ on: string;
140
+ summary?: string;
141
+ message?: string;
142
+ found?: unknown;
143
+ property?: string;
144
+ expected?: string;
145
+ };
146
+ };
147
+ };
148
+ };
149
+ };
150
+ };
151
+ } & {
152
+ otp: {
153
+ "magic-link": {
154
+ verify: {
155
+ post: {
156
+ body: {
157
+ token: string;
158
+ };
159
+ params: {};
160
+ query: unknown;
161
+ headers: unknown;
162
+ response: {
163
+ 200:
164
+ | {
165
+ error: string;
166
+ valid?: undefined;
167
+ userId?: undefined;
168
+ email?: undefined;
169
+ }
170
+ | {
171
+ valid: boolean;
172
+ error: string;
173
+ userId?: undefined;
174
+ email?: undefined;
175
+ }
176
+ | {
177
+ valid: boolean;
178
+ userId: string | undefined;
179
+ email: string | undefined;
180
+ error?: undefined;
181
+ };
182
+ 422: {
183
+ type: "validation";
184
+ on: string;
185
+ summary?: string;
186
+ message?: string;
187
+ found?: unknown;
188
+ property?: string;
189
+ expected?: string;
190
+ };
191
+ };
192
+ };
193
+ };
194
+ };
195
+ };
196
+ },
197
+ {
198
+ derive: {};
199
+ resolve: {};
200
+ schema: {};
201
+ standaloneSchema: {};
202
+ response: {};
203
+ },
204
+ {
205
+ derive: {};
206
+ resolve: {};
207
+ schema: {};
208
+ standaloneSchema: {};
209
+ response: {};
210
+ } & {
211
+ derive:
212
+ | {
213
+ readonly auth: null;
214
+ readonly user: null;
215
+ }
216
+ | {
217
+ readonly auth: import("../auth/interfaces.js").AuthContext;
218
+ readonly user: {
219
+ id: string;
220
+ tenantId: string | null;
221
+ session: import("../auth/interfaces.js").AuthSession | null;
222
+ } | null;
223
+ };
224
+ resolve: {};
225
+ schema: {};
226
+ standaloneSchema: {};
227
+ response: import("elysia").ExtractErrorFromHandle<
228
+ | {
229
+ readonly auth: null;
230
+ readonly user: null;
231
+ }
232
+ | {
233
+ readonly auth: import("../auth/interfaces.js").AuthContext;
234
+ readonly user: {
235
+ id: string;
236
+ tenantId: string | null;
237
+ session: import("../auth/interfaces.js").AuthSession | null;
238
+ } | null;
239
+ }
240
+ >;
241
+ }
242
+ >;
243
+ //# sourceMappingURL=otp.controller.d.ts.map