@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
@@ -43,306 +43,350 @@ exports.adminAppUsersController = new elysia_1.Elysia({
43
43
  * GET /_archlast/admin/app-users
44
44
  * List all application users (with pagination support)
45
45
  */
46
- .get("/", async (ctx) => {
47
- const { rawDb, db, request, set, query } = (0, context_helper_js_1.getCtx)(ctx);
48
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
49
- if (!auth) {
50
- set.status = 401;
51
- return { error: "Unauthorized" };
52
- }
53
- const page = Number(query.page ?? 0);
54
- const pageSize = Number(query.pageSize ?? 25);
55
- const search = query.search?.trim();
56
- const filterParam = query.filter;
57
- const result = await adminAppUsersService.listUsers({
58
- db,
59
- page,
60
- pageSize,
61
- search,
62
- filterParam,
63
- });
64
- // When no pagination params are provided (default non-paginated call),
65
- // return just the users array for backward compatibility with useAppUsers hook
66
- const isPaginated = query.page !== undefined || query.pageSize !== undefined ||
67
- query.search?.trim() || query.filter;
68
- if (!isPaginated) {
69
- return result.users;
70
- }
71
- return result;
72
- }, {
73
- detail: { summary: "List app users" },
74
- query: elysia_1.t.Object({
75
- page: elysia_1.t.Optional(elysia_1.t.String()),
76
- pageSize: elysia_1.t.Optional(elysia_1.t.String()),
77
- search: elysia_1.t.Optional(elysia_1.t.String()),
78
- filter: elysia_1.t.Optional(elysia_1.t.String()),
79
- }),
80
- })
46
+ .get(
47
+ "/",
48
+ async (ctx) => {
49
+ const { rawDb, db, request, set, query } = (0, context_helper_js_1.getCtx)(ctx);
50
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
51
+ if (!auth) {
52
+ set.status = 401;
53
+ return { error: "Unauthorized" };
54
+ }
55
+ const page = Number(query.page ?? 0);
56
+ const pageSize = Number(query.pageSize ?? 25);
57
+ const search = query.search?.trim();
58
+ const filterParam = query.filter;
59
+ const result = await adminAppUsersService.listUsers({
60
+ db,
61
+ page,
62
+ pageSize,
63
+ search,
64
+ filterParam,
65
+ });
66
+ // When no pagination params are provided (default non-paginated call),
67
+ // return just the users array for backward compatibility with useAppUsers hook
68
+ const isPaginated =
69
+ query.page !== undefined ||
70
+ query.pageSize !== undefined ||
71
+ query.search?.trim() ||
72
+ query.filter;
73
+ if (!isPaginated) {
74
+ return result.users;
75
+ }
76
+ return result;
77
+ },
78
+ {
79
+ detail: { summary: "List app users" },
80
+ query: elysia_1.t.Object({
81
+ page: elysia_1.t.Optional(elysia_1.t.String()),
82
+ pageSize: elysia_1.t.Optional(elysia_1.t.String()),
83
+ search: elysia_1.t.Optional(elysia_1.t.String()),
84
+ filter: elysia_1.t.Optional(elysia_1.t.String()),
85
+ }),
86
+ }
87
+ )
81
88
  /**
82
89
  * GET /_archlast/admin/app-users/:id
83
90
  * Get single user details
84
91
  */
85
- .get("/:id", async (ctx) => {
86
- const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
87
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
88
- if (!auth) {
89
- set.status = 401;
90
- return { error: "Unauthorized" };
91
- }
92
- const user = await adminAppUsersService.getUser({ db, userId: params.id });
93
- if (!user) {
94
- set.status = 404;
95
- return { error: "User not found" };
96
- }
97
- return user;
98
- }, {
99
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
100
- detail: { summary: "Get app user" },
101
- })
92
+ .get(
93
+ "/:id",
94
+ async (ctx) => {
95
+ const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
96
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
97
+ if (!auth) {
98
+ set.status = 401;
99
+ return { error: "Unauthorized" };
100
+ }
101
+ const user = await adminAppUsersService.getUser({ db, userId: params.id });
102
+ if (!user) {
103
+ set.status = 404;
104
+ return { error: "User not found" };
105
+ }
106
+ return user;
107
+ },
108
+ {
109
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
110
+ detail: { summary: "Get app user" },
111
+ }
112
+ )
102
113
  /**
103
114
  * POST /_archlast/admin/app-users
104
115
  * Create application user
105
116
  */
106
- .post("/", async (ctx) => {
107
- const { rawDb, db, body, request, set } = (0, context_helper_js_1.getCtx)(ctx);
108
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
109
- if (!auth) {
110
- set.status = 401;
111
- return { error: "Unauthorized" };
112
- }
113
- try {
114
- const result = await adminAppUsersService.createUser({
115
- db,
116
- email: body.email,
117
- password: body.password,
118
- name: body.name,
119
- emailVerified: body.emailVerified,
120
- imageUrl: body.imageUrl,
121
- });
122
- set.status = 201;
123
- return result;
124
- }
125
- catch (error) {
126
- if (error instanceof app_users_service_js_1.AdminAppUsersError) {
127
- set.status = error.statusCode;
128
- return { error: error.message };
117
+ .post(
118
+ "/",
119
+ async (ctx) => {
120
+ const { rawDb, db, body, request, set } = (0, context_helper_js_1.getCtx)(ctx);
121
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
122
+ if (!auth) {
123
+ set.status = 401;
124
+ return { error: "Unauthorized" };
125
+ }
126
+ try {
127
+ const result = await adminAppUsersService.createUser({
128
+ db,
129
+ email: body.email,
130
+ password: body.password,
131
+ name: body.name,
132
+ emailVerified: body.emailVerified,
133
+ imageUrl: body.imageUrl,
134
+ });
135
+ set.status = 201;
136
+ return result;
137
+ } catch (error) {
138
+ if (error instanceof app_users_service_js_1.AdminAppUsersError) {
139
+ set.status = error.statusCode;
140
+ return { error: error.message };
141
+ }
142
+ throw error;
143
+ }
144
+ },
145
+ {
146
+ body: CreateUserSchema,
147
+ detail: { summary: "Create app user" },
129
148
  }
130
- throw error;
131
- }
132
- }, {
133
- body: CreateUserSchema,
134
- detail: { summary: "Create app user" },
135
- })
149
+ )
136
150
  /**
137
151
  * PATCH /_archlast/admin/app-users/:id
138
152
  * Update application user
139
153
  */
140
- .patch("/:id", async (ctx) => {
141
- const { rawDb, db, params, body, request, set } = (0, context_helper_js_1.getCtx)(ctx);
142
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
143
- if (!auth) {
144
- set.status = 401;
145
- return { error: "Unauthorized" };
146
- }
147
- try {
148
- return await adminAppUsersService.updateUser({
149
- db,
150
- userId: params.id,
151
- email: body.email,
152
- password: body.password,
153
- name: body.name,
154
- emailVerified: body.emailVerified,
155
- imageUrl: body.imageUrl,
156
- });
157
- }
158
- catch (error) {
159
- if (error instanceof app_users_service_js_1.AdminAppUsersError) {
160
- set.status = error.statusCode;
161
- return { error: error.message };
154
+ .patch(
155
+ "/:id",
156
+ async (ctx) => {
157
+ const { rawDb, db, params, body, request, set } = (0, context_helper_js_1.getCtx)(ctx);
158
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
159
+ if (!auth) {
160
+ set.status = 401;
161
+ return { error: "Unauthorized" };
162
+ }
163
+ try {
164
+ return await adminAppUsersService.updateUser({
165
+ db,
166
+ userId: params.id,
167
+ email: body.email,
168
+ password: body.password,
169
+ name: body.name,
170
+ emailVerified: body.emailVerified,
171
+ imageUrl: body.imageUrl,
172
+ });
173
+ } catch (error) {
174
+ if (error instanceof app_users_service_js_1.AdminAppUsersError) {
175
+ set.status = error.statusCode;
176
+ return { error: error.message };
177
+ }
178
+ throw error;
179
+ }
180
+ },
181
+ {
182
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
183
+ body: UpdateUserSchema,
184
+ detail: { summary: "Update app user" },
162
185
  }
163
- throw error;
164
- }
165
- }, {
166
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
167
- body: UpdateUserSchema,
168
- detail: { summary: "Update app user" },
169
- })
186
+ )
170
187
  /**
171
188
  * DELETE /_archlast/admin/app-users/:id
172
189
  * Delete application user
173
190
  */
174
- .delete("/:id", async (ctx) => {
175
- const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
176
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
177
- if (!auth) {
178
- set.status = 401;
179
- return { error: "Unauthorized" };
180
- }
181
- try {
182
- await adminAppUsersService.deleteUser({ db, userId: params.id });
183
- return { success: true };
184
- }
185
- catch (error) {
186
- if (error instanceof app_users_service_js_1.AdminAppUsersError) {
187
- set.status = error.statusCode;
188
- return { error: error.message };
191
+ .delete(
192
+ "/:id",
193
+ async (ctx) => {
194
+ const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
195
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
196
+ if (!auth) {
197
+ set.status = 401;
198
+ return { error: "Unauthorized" };
199
+ }
200
+ try {
201
+ await adminAppUsersService.deleteUser({ db, userId: params.id });
202
+ return { success: true };
203
+ } catch (error) {
204
+ if (error instanceof app_users_service_js_1.AdminAppUsersError) {
205
+ set.status = error.statusCode;
206
+ return { error: error.message };
207
+ }
208
+ throw error;
209
+ }
210
+ },
211
+ {
212
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
213
+ detail: { summary: "Delete app user" },
189
214
  }
190
- throw error;
191
- }
192
- }, {
193
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
194
- detail: { summary: "Delete app user" },
195
- })
215
+ )
196
216
  /**
197
217
  * GET /_archlast/admin/app-users/:id/sessions
198
218
  * List user's sessions
199
219
  */
200
- .get("/:id/sessions", async (ctx) => {
201
- const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
202
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
203
- if (!auth) {
204
- set.status = 401;
205
- return { error: "Unauthorized" };
206
- }
207
- const sessions = await adminAppUsersService.listUserSessions({
208
- db,
209
- userId: params.id,
210
- });
211
- return sessions;
212
- }, {
213
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
214
- detail: { summary: "List user sessions" },
215
- })
220
+ .get(
221
+ "/:id/sessions",
222
+ async (ctx) => {
223
+ const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
224
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
225
+ if (!auth) {
226
+ set.status = 401;
227
+ return { error: "Unauthorized" };
228
+ }
229
+ const sessions = await adminAppUsersService.listUserSessions({
230
+ db,
231
+ userId: params.id,
232
+ });
233
+ return sessions;
234
+ },
235
+ {
236
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
237
+ detail: { summary: "List user sessions" },
238
+ }
239
+ )
216
240
  /**
217
241
  * POST /_archlast/admin/app-users/:id/sessions/revoke-all
218
242
  * Revoke all user sessions
219
243
  */
220
- .post("/:id/sessions/revoke-all", async (ctx) => {
221
- const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
222
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
223
- if (!auth) {
224
- set.status = 401;
225
- return { error: "Unauthorized" };
226
- }
227
- const result = await adminAppUsersService.revokeAllUserSessions({
228
- db,
229
- userId: params.id,
230
- });
231
- return result;
232
- }, {
233
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
234
- detail: { summary: "Revoke all user sessions" },
235
- })
244
+ .post(
245
+ "/:id/sessions/revoke-all",
246
+ async (ctx) => {
247
+ const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
248
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
249
+ if (!auth) {
250
+ set.status = 401;
251
+ return { error: "Unauthorized" };
252
+ }
253
+ const result = await adminAppUsersService.revokeAllUserSessions({
254
+ db,
255
+ userId: params.id,
256
+ });
257
+ return result;
258
+ },
259
+ {
260
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
261
+ detail: { summary: "Revoke all user sessions" },
262
+ }
263
+ )
236
264
  /**
237
265
  * POST /_archlast/admin/app-users/:id/reset-password
238
266
  * Trigger password reset
239
267
  */
240
- .post("/:id/reset-password", async (ctx) => {
241
- const { rawDb, db, email, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
242
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
243
- if (!auth) {
244
- set.status = 401;
245
- return { error: "Unauthorized" };
246
- }
247
- try {
248
- const result = await adminAppUsersService.triggerPasswordReset({
249
- db,
250
- emailService: (0, service_js_1.getEmailService)(),
251
- userId: params.id,
252
- });
253
- return result;
254
- }
255
- catch (error) {
256
- if (error instanceof app_users_service_js_1.AdminAppUsersError) {
257
- set.status = error.statusCode;
258
- return { error: error.message };
268
+ .post(
269
+ "/:id/reset-password",
270
+ async (ctx) => {
271
+ const { rawDb, db, email, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
272
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
273
+ if (!auth) {
274
+ set.status = 401;
275
+ return { error: "Unauthorized" };
276
+ }
277
+ try {
278
+ const result = await adminAppUsersService.triggerPasswordReset({
279
+ db,
280
+ emailService: (0, service_js_1.getEmailService)(),
281
+ userId: params.id,
282
+ });
283
+ return result;
284
+ } catch (error) {
285
+ if (error instanceof app_users_service_js_1.AdminAppUsersError) {
286
+ set.status = error.statusCode;
287
+ return { error: error.message };
288
+ }
289
+ throw error;
290
+ }
291
+ },
292
+ {
293
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
294
+ detail: { summary: "Trigger password reset" },
259
295
  }
260
- throw error;
261
- }
262
- }, {
263
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
264
- detail: { summary: "Trigger password reset" },
265
- })
296
+ )
266
297
  /**
267
298
  * GET /_archlast/admin/app-users/:id/memberships
268
299
  * List user memberships
269
300
  */
270
- .get("/:id/memberships", async (ctx) => {
271
- const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
272
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
273
- if (!auth) {
274
- set.status = 401;
275
- return { error: "Unauthorized" };
276
- }
277
- const memberships = await adminAppUsersService.listUserMemberships({
278
- db,
279
- userId: params.id,
280
- });
281
- return { memberships };
282
- }, {
283
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
284
- detail: { summary: "List user memberships" },
285
- })
301
+ .get(
302
+ "/:id/memberships",
303
+ async (ctx) => {
304
+ const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
305
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
306
+ if (!auth) {
307
+ set.status = 401;
308
+ return { error: "Unauthorized" };
309
+ }
310
+ const memberships = await adminAppUsersService.listUserMemberships({
311
+ db,
312
+ userId: params.id,
313
+ });
314
+ return { memberships };
315
+ },
316
+ {
317
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
318
+ detail: { summary: "List user memberships" },
319
+ }
320
+ )
286
321
  /**
287
322
  * POST /_archlast/admin/app-users/:id/memberships
288
323
  * Add user to tenant
289
324
  */
290
- .post("/:id/memberships", async (ctx) => {
291
- const { rawDb, db, params, body, request, set } = (0, context_helper_js_1.getCtx)(ctx);
292
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
293
- if (!auth) {
294
- set.status = 401;
295
- return { error: "Unauthorized" };
296
- }
297
- try {
298
- const result = await adminAppUsersService.addUserMembership({
299
- db,
300
- userId: params.id,
301
- tenantId: body.tenantId,
302
- role: body.role,
303
- });
304
- set.status = 201;
305
- return result;
306
- }
307
- catch (error) {
308
- if (error instanceof app_users_service_js_1.AdminAppUsersError) {
309
- set.status = error.statusCode;
310
- return { error: error.message };
325
+ .post(
326
+ "/:id/memberships",
327
+ async (ctx) => {
328
+ const { rawDb, db, params, body, request, set } = (0, context_helper_js_1.getCtx)(ctx);
329
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
330
+ if (!auth) {
331
+ set.status = 401;
332
+ return { error: "Unauthorized" };
333
+ }
334
+ try {
335
+ const result = await adminAppUsersService.addUserMembership({
336
+ db,
337
+ userId: params.id,
338
+ tenantId: body.tenantId,
339
+ role: body.role,
340
+ });
341
+ set.status = 201;
342
+ return result;
343
+ } catch (error) {
344
+ if (error instanceof app_users_service_js_1.AdminAppUsersError) {
345
+ set.status = error.statusCode;
346
+ return { error: error.message };
347
+ }
348
+ throw error;
349
+ }
350
+ },
351
+ {
352
+ params: elysia_1.t.Object({ id: elysia_1.t.String() }),
353
+ body: AddMembershipSchema,
354
+ detail: { summary: "Add user to tenant" },
311
355
  }
312
- throw error;
313
- }
314
- }, {
315
- params: elysia_1.t.Object({ id: elysia_1.t.String() }),
316
- body: AddMembershipSchema,
317
- detail: { summary: "Add user to tenant" },
318
- })
356
+ )
319
357
  /**
320
358
  * DELETE /_archlast/admin/app-users/:id/memberships/:membershipId
321
359
  * Remove membership
322
360
  */
323
- .delete("/:id/memberships/:membershipId", async (ctx) => {
324
- const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
325
- const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
326
- if (!auth) {
327
- set.status = 401;
328
- return { error: "Unauthorized" };
329
- }
330
- try {
331
- await adminAppUsersService.removeUserMembership({
332
- db,
333
- membershipId: params.membershipId,
334
- });
335
- return { success: true };
336
- }
337
- catch (error) {
338
- if (error instanceof app_users_service_js_1.AdminAppUsersError) {
339
- set.status = error.statusCode;
340
- return { error: error.message };
361
+ .delete(
362
+ "/:id/memberships/:membershipId",
363
+ async (ctx) => {
364
+ const { rawDb, db, params, request, set } = (0, context_helper_js_1.getCtx)(ctx);
365
+ const auth = await (0, auth_js_1.requireAdminAuth)(rawDb, request);
366
+ if (!auth) {
367
+ set.status = 401;
368
+ return { error: "Unauthorized" };
369
+ }
370
+ try {
371
+ await adminAppUsersService.removeUserMembership({
372
+ db,
373
+ membershipId: params.membershipId,
374
+ });
375
+ return { success: true };
376
+ } catch (error) {
377
+ if (error instanceof app_users_service_js_1.AdminAppUsersError) {
378
+ set.status = error.statusCode;
379
+ return { error: error.message };
380
+ }
381
+ throw error;
382
+ }
383
+ },
384
+ {
385
+ params: elysia_1.t.Object({
386
+ id: elysia_1.t.String(),
387
+ membershipId: elysia_1.t.String(),
388
+ }),
389
+ detail: { summary: "Remove membership" },
341
390
  }
342
- throw error;
343
- }
344
- }, {
345
- params: elysia_1.t.Object({ id: elysia_1.t.String(), membershipId: elysia_1.t.String() }),
346
- detail: { summary: "Remove membership" },
347
- });
348
- //# sourceMappingURL=app-users.controller.js.map
391
+ );
392
+ //# sourceMappingURL=app-users.controller.js.map