@vitnode/core 1.2.0-canary.76 → 1.2.0-canary.78

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 (2116) hide show
  1. package/cli.mjs +2 -0
  2. package/dist/scripts/build.d.ts +2 -0
  3. package/dist/scripts/build.d.ts.map +1 -0
  4. package/dist/scripts/dev.d.ts +4 -0
  5. package/dist/scripts/dev.d.ts.map +1 -0
  6. package/dist/scripts/get-config.d.ts +12 -0
  7. package/dist/scripts/get-config.d.ts.map +1 -0
  8. package/dist/scripts/i18n-check.d.ts +2 -0
  9. package/dist/scripts/i18n-check.d.ts.map +1 -0
  10. package/dist/scripts/i18n-create.d.ts +20 -0
  11. package/dist/scripts/i18n-create.d.ts.map +1 -0
  12. package/dist/scripts/i18n-delete.d.ts +4 -0
  13. package/dist/scripts/i18n-delete.d.ts.map +1 -0
  14. package/dist/scripts/i18n-shared.d.ts +51 -0
  15. package/dist/scripts/i18n-shared.d.ts.map +1 -0
  16. package/dist/scripts/i18n-update.d.ts +3 -0
  17. package/dist/scripts/i18n-update.d.ts.map +1 -0
  18. package/dist/scripts/plugin.d.ts +4 -0
  19. package/dist/scripts/plugin.d.ts.map +1 -0
  20. package/dist/scripts/prepare-database.d.ts +8 -0
  21. package/dist/scripts/prepare-database.d.ts.map +1 -0
  22. package/dist/scripts/prepare-plugins-files.d.ts +2 -0
  23. package/dist/scripts/prepare-plugins-files.d.ts.map +1 -0
  24. package/dist/scripts/run-interactive-shell-command.d.ts +2 -0
  25. package/dist/scripts/run-interactive-shell-command.d.ts.map +1 -0
  26. package/dist/scripts/scripts.d.ts +3 -0
  27. package/dist/scripts/scripts.d.ts.map +1 -0
  28. package/dist/scripts/scripts.js +58 -2
  29. package/dist/scripts/shared/file-utils.d.ts +16 -0
  30. package/dist/scripts/shared/file-utils.d.ts.map +1 -0
  31. package/dist/src/api/adapters/events/local.d.ts +3 -0
  32. package/dist/src/api/adapters/events/local.d.ts.map +1 -0
  33. package/dist/src/api/adapters/events/local.js +1 -0
  34. package/dist/src/api/adapters/search/postgres.d.ts +3 -0
  35. package/dist/src/api/adapters/search/postgres.d.ts.map +1 -0
  36. package/dist/src/api/adapters/search/postgres.js +1 -0
  37. package/dist/src/api/adapters/sso/discord.d.ts +4 -7
  38. package/dist/src/api/adapters/sso/discord.d.ts.map +1 -1
  39. package/dist/src/api/adapters/sso/discord.js +1 -2
  40. package/dist/src/api/adapters/sso/facebook.d.ts +4 -7
  41. package/dist/src/api/adapters/sso/facebook.d.ts.map +1 -1
  42. package/dist/src/api/adapters/sso/facebook.js +1 -2
  43. package/dist/src/api/adapters/sso/google.d.ts +4 -7
  44. package/dist/src/api/adapters/sso/google.d.ts.map +1 -1
  45. package/dist/src/api/adapters/sso/google.js +1 -2
  46. package/dist/src/api/adapters/storage/local.d.ts +4 -7
  47. package/dist/src/api/adapters/storage/local.d.ts.map +1 -1
  48. package/dist/src/api/adapters/storage/local.js +1 -2
  49. package/dist/src/api/config.d.ts +16 -18
  50. package/dist/src/api/config.d.ts.map +1 -1
  51. package/dist/src/api/config.js +1 -2
  52. package/dist/src/api/lib/cache-client.d.ts +2 -5
  53. package/dist/src/api/lib/cache-client.d.ts.map +1 -1
  54. package/dist/src/api/lib/cache-client.js +1 -2
  55. package/dist/src/api/lib/cache.d.ts +29 -32
  56. package/dist/src/api/lib/cache.d.ts.map +1 -1
  57. package/dist/src/api/lib/cache.js +1 -2
  58. package/dist/src/api/lib/check-plugin-id.d.ts +13 -16
  59. package/dist/src/api/lib/check-plugin-id.d.ts.map +1 -1
  60. package/dist/src/api/lib/check-plugin-id.js +1 -2
  61. package/dist/src/api/lib/check-staff-permission.d.ts +14 -17
  62. package/dist/src/api/lib/check-staff-permission.d.ts.map +1 -1
  63. package/dist/src/api/lib/check-staff-permission.js +1 -2
  64. package/dist/src/api/lib/cron.d.ts +16 -17
  65. package/dist/src/api/lib/cron.d.ts.map +1 -1
  66. package/dist/src/api/lib/cron.js +1 -2
  67. package/dist/src/api/lib/events.d.ts +15 -0
  68. package/dist/src/api/lib/events.d.ts.map +1 -0
  69. package/dist/src/api/lib/events.js +1 -0
  70. package/dist/src/api/lib/logger-middleware.d.ts +6 -9
  71. package/dist/src/api/lib/logger-middleware.d.ts.map +1 -1
  72. package/dist/src/api/lib/logger-middleware.js +1 -2
  73. package/dist/src/api/lib/module.d.ts +29 -29
  74. package/dist/src/api/lib/module.d.ts.map +1 -1
  75. package/dist/src/api/lib/module.js +1 -2
  76. package/dist/src/api/lib/permission-staff.d.ts +24 -31
  77. package/dist/src/api/lib/permission-staff.d.ts.map +1 -1
  78. package/dist/src/api/lib/permission-staff.js +1 -2
  79. package/dist/src/api/lib/plugin.d.ts +24 -19
  80. package/dist/src/api/lib/plugin.d.ts.map +1 -1
  81. package/dist/src/api/lib/plugin.js +1 -2
  82. package/dist/src/api/lib/queue.d.ts +11 -14
  83. package/dist/src/api/lib/queue.d.ts.map +1 -1
  84. package/dist/src/api/lib/queue.js +1 -2
  85. package/dist/src/api/lib/resolve-role-names.d.ts +5 -8
  86. package/dist/src/api/lib/resolve-role-names.d.ts.map +1 -1
  87. package/dist/src/api/lib/resolve-role-names.js +1 -2
  88. package/dist/src/api/lib/route.d.ts +20 -23
  89. package/dist/src/api/lib/route.d.ts.map +1 -1
  90. package/dist/src/api/lib/route.js +1 -2
  91. package/dist/src/api/lib/save-language-words.d.ts +11 -0
  92. package/dist/src/api/lib/save-language-words.d.ts.map +1 -0
  93. package/dist/src/api/lib/save-language-words.js +1 -0
  94. package/dist/src/api/lib/staff-permission.d.ts +3 -6
  95. package/dist/src/api/lib/staff-permission.d.ts.map +1 -1
  96. package/dist/src/api/lib/staff-permission.js +1 -2
  97. package/dist/src/api/lib/websocket.d.ts +21 -24
  98. package/dist/src/api/lib/websocket.d.ts.map +1 -1
  99. package/dist/src/api/lib/websocket.js +1 -2
  100. package/dist/src/api/lib/with-pagination.d.ts +45 -48
  101. package/dist/src/api/lib/with-pagination.d.ts.map +1 -1
  102. package/dist/src/api/lib/with-pagination.js +1 -2
  103. package/dist/src/api/middlewares/captcha.middleware.d.ts +2 -5
  104. package/dist/src/api/middlewares/captcha.middleware.d.ts.map +1 -1
  105. package/dist/src/api/middlewares/captcha.middleware.js +1 -2
  106. package/dist/src/api/middlewares/cron-auth.middleware.d.ts +2 -5
  107. package/dist/src/api/middlewares/cron-auth.middleware.d.ts.map +1 -1
  108. package/dist/src/api/middlewares/cron-auth.middleware.js +1 -2
  109. package/dist/src/api/middlewares/global.middleware.d.ts +115 -95
  110. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
  111. package/dist/src/api/middlewares/global.middleware.js +1 -2
  112. package/dist/src/api/middlewares/plugin.middleware.d.ts +2 -5
  113. package/dist/src/api/middlewares/plugin.middleware.d.ts.map +1 -1
  114. package/dist/src/api/middlewares/plugin.middleware.js +1 -2
  115. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts +7 -7
  116. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts.map +1 -1
  117. package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -2
  118. package/dist/src/api/models/device.d.ts +11 -14
  119. package/dist/src/api/models/device.d.ts.map +1 -1
  120. package/dist/src/api/models/device.js +1 -2
  121. package/dist/src/api/models/email.d.ts +41 -43
  122. package/dist/src/api/models/email.d.ts.map +1 -1
  123. package/dist/src/api/models/email.js +1 -2
  124. package/dist/src/api/models/events.d.ts +66 -0
  125. package/dist/src/api/models/events.d.ts.map +1 -0
  126. package/dist/src/api/models/events.js +1 -0
  127. package/dist/src/api/models/i18n.d.ts +15 -0
  128. package/dist/src/api/models/i18n.d.ts.map +1 -0
  129. package/dist/src/api/models/i18n.js +1 -0
  130. package/dist/src/api/models/password.d.ts +6 -9
  131. package/dist/src/api/models/password.d.ts.map +1 -1
  132. package/dist/src/api/models/password.js +1 -2
  133. package/dist/src/api/models/queue.d.ts +14 -17
  134. package/dist/src/api/models/queue.d.ts.map +1 -1
  135. package/dist/src/api/models/queue.js +1 -2
  136. package/dist/src/api/models/search.d.ts +102 -0
  137. package/dist/src/api/models/search.d.ts.map +1 -0
  138. package/dist/src/api/models/search.js +1 -0
  139. package/dist/src/api/models/session-admin.d.ts +23 -26
  140. package/dist/src/api/models/session-admin.d.ts.map +1 -1
  141. package/dist/src/api/models/session-admin.js +1 -2
  142. package/dist/src/api/models/session-cache.d.ts +7 -10
  143. package/dist/src/api/models/session-cache.d.ts.map +1 -1
  144. package/dist/src/api/models/session-cache.js +1 -2
  145. package/dist/src/api/models/session.d.ts +22 -25
  146. package/dist/src/api/models/session.d.ts.map +1 -1
  147. package/dist/src/api/models/session.js +1 -2
  148. package/dist/src/api/models/sso.d.ts +34 -37
  149. package/dist/src/api/models/sso.d.ts.map +1 -1
  150. package/dist/src/api/models/sso.js +1 -2
  151. package/dist/src/api/models/storage.d.ts +33 -36
  152. package/dist/src/api/models/storage.d.ts.map +1 -1
  153. package/dist/src/api/models/storage.js +1 -2
  154. package/dist/src/api/models/user/get-user-by-id.d.ts +15 -18
  155. package/dist/src/api/models/user/get-user-by-id.d.ts.map +1 -1
  156. package/dist/src/api/models/user/get-user-by-id.js +1 -2
  157. package/dist/src/api/models/user/get-user-by-name-code.d.ts +15 -18
  158. package/dist/src/api/models/user/get-user-by-name-code.d.ts.map +1 -1
  159. package/dist/src/api/models/user/get-user-by-name-code.js +1 -2
  160. package/dist/src/api/models/user/sign-in-with-passwords.d.ts +7 -10
  161. package/dist/src/api/models/user/sign-in-with-passwords.d.ts.map +1 -1
  162. package/dist/src/api/models/user/sign-in-with-passwords.js +1 -2
  163. package/dist/src/api/models/user/sign-up.d.ts +18 -21
  164. package/dist/src/api/models/user/sign-up.d.ts.map +1 -1
  165. package/dist/src/api/models/user/sign-up.js +1 -2
  166. package/dist/src/api/models/user.d.ts +60 -63
  167. package/dist/src/api/models/user.d.ts.map +1 -1
  168. package/dist/src/api/models/user.js +1 -2
  169. package/dist/src/api/modules/admin/admin.module.d.ts +1510 -1307
  170. package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
  171. package/dist/src/api/modules/admin/admin.module.js +1 -2
  172. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts +150 -155
  173. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts.map +1 -1
  174. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -2
  175. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.d.ts +91 -96
  176. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.d.ts.map +1 -1
  177. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js +1 -2
  178. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.d.ts +49 -53
  179. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.d.ts.map +1 -1
  180. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -2
  181. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.d.ts +42 -46
  182. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.d.ts.map +1 -1
  183. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -2
  184. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts +60 -65
  185. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts.map +1 -1
  186. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.js +1 -2
  187. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts +59 -63
  188. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts.map +1 -1
  189. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.js +1 -2
  190. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts +261 -207
  191. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts.map +1 -1
  192. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -2
  193. package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts +50 -54
  194. package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts.map +1 -1
  195. package/dist/src/api/modules/admin/debug/routes/integrations.route.js +1 -2
  196. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts +60 -64
  197. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts.map +1 -1
  198. package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -2
  199. package/dist/src/api/modules/admin/debug/routes/queue.route.d.ts +36 -40
  200. package/dist/src/api/modules/admin/debug/routes/queue.route.d.ts.map +1 -1
  201. package/dist/src/api/modules/admin/debug/routes/queue.route.js +1 -2
  202. package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.d.ts +36 -0
  203. package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.d.ts.map +1 -0
  204. package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.js +1 -0
  205. package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts +32 -0
  206. package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts.map +1 -0
  207. package/dist/src/api/modules/admin/debug/routes/search-status.route.js +1 -0
  208. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.d.ts +36 -40
  209. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.d.ts.map +1 -1
  210. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.js +1 -2
  211. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.d.ts +30 -34
  212. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.d.ts.map +1 -1
  213. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.js +1 -2
  214. package/dist/src/api/modules/admin/files/files.admin.module.d.ts +116 -121
  215. package/dist/src/api/modules/admin/files/files.admin.module.d.ts.map +1 -1
  216. package/dist/src/api/modules/admin/files/files.admin.module.js +1 -2
  217. package/dist/src/api/modules/admin/files/routes/delete.route.d.ts +22 -26
  218. package/dist/src/api/modules/admin/files/routes/delete.route.d.ts.map +1 -1
  219. package/dist/src/api/modules/admin/files/routes/delete.route.js +1 -2
  220. package/dist/src/api/modules/admin/files/routes/download.route.d.ts +27 -31
  221. package/dist/src/api/modules/admin/files/routes/download.route.d.ts.map +1 -1
  222. package/dist/src/api/modules/admin/files/routes/download.route.js +1 -2
  223. package/dist/src/api/modules/admin/files/routes/list.route.d.ts +66 -70
  224. package/dist/src/api/modules/admin/files/routes/list.route.d.ts.map +1 -1
  225. package/dist/src/api/modules/admin/files/routes/list.route.js +1 -2
  226. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts +6 -0
  227. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts.map +1 -0
  228. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.js +1 -0
  229. package/dist/src/api/modules/admin/roles/roles.admin.module.d.ts +250 -106
  230. package/dist/src/api/modules/admin/roles/roles.admin.module.d.ts.map +1 -1
  231. package/dist/src/api/modules/admin/roles/roles.admin.module.js +1 -2
  232. package/dist/src/api/modules/admin/roles/routes/create.route.d.ts +58 -0
  233. package/dist/src/api/modules/admin/roles/routes/create.route.d.ts.map +1 -0
  234. package/dist/src/api/modules/admin/roles/routes/create.route.js +1 -0
  235. package/dist/src/api/modules/admin/roles/routes/delete.route.d.ts +52 -0
  236. package/dist/src/api/modules/admin/roles/routes/delete.route.d.ts.map +1 -0
  237. package/dist/src/api/modules/admin/roles/routes/delete.route.js +1 -0
  238. package/dist/src/api/modules/admin/roles/routes/list.route.d.ts +61 -61
  239. package/dist/src/api/modules/admin/roles/routes/list.route.d.ts.map +1 -1
  240. package/dist/src/api/modules/admin/roles/routes/list.route.js +1 -2
  241. package/dist/src/api/modules/admin/roles/routes/show.route.d.ts +46 -47
  242. package/dist/src/api/modules/admin/roles/routes/show.route.d.ts.map +1 -1
  243. package/dist/src/api/modules/admin/roles/routes/show.route.js +1 -2
  244. package/dist/src/api/modules/admin/roles/routes/update.route.d.ts +66 -0
  245. package/dist/src/api/modules/admin/roles/routes/update.route.d.ts.map +1 -0
  246. package/dist/src/api/modules/admin/roles/routes/update.route.js +1 -0
  247. package/dist/src/api/modules/admin/routes/notifications.route.d.ts +47 -51
  248. package/dist/src/api/modules/admin/routes/notifications.route.d.ts.map +1 -1
  249. package/dist/src/api/modules/admin/routes/notifications.route.js +1 -2
  250. package/dist/src/api/modules/admin/routes/session.route.d.ts +39 -43
  251. package/dist/src/api/modules/admin/routes/session.route.d.ts.map +1 -1
  252. package/dist/src/api/modules/admin/routes/session.route.js +1 -2
  253. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts +29 -34
  254. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts.map +1 -1
  255. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.js +1 -2
  256. package/dist/src/api/modules/admin/staff/lib/schema.d.ts +82 -85
  257. package/dist/src/api/modules/admin/staff/lib/schema.d.ts.map +1 -1
  258. package/dist/src/api/modules/admin/staff/lib/schema.js +1 -2
  259. package/dist/src/api/modules/admin/staff/routes/admins.route.d.ts +71 -75
  260. package/dist/src/api/modules/admin/staff/routes/admins.route.d.ts.map +1 -1
  261. package/dist/src/api/modules/admin/staff/routes/admins.route.js +1 -2
  262. package/dist/src/api/modules/admin/staff/routes/create.route.d.ts +43 -47
  263. package/dist/src/api/modules/admin/staff/routes/create.route.d.ts.map +1 -1
  264. package/dist/src/api/modules/admin/staff/routes/create.route.js +1 -2
  265. package/dist/src/api/modules/admin/staff/routes/delete.route.d.ts +29 -33
  266. package/dist/src/api/modules/admin/staff/routes/delete.route.d.ts.map +1 -1
  267. package/dist/src/api/modules/admin/staff/routes/delete.route.js +1 -2
  268. package/dist/src/api/modules/admin/staff/routes/moderators.route.d.ts +71 -75
  269. package/dist/src/api/modules/admin/staff/routes/moderators.route.d.ts.map +1 -1
  270. package/dist/src/api/modules/admin/staff/routes/moderators.route.js +1 -2
  271. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.d.ts +26 -30
  272. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.d.ts.map +1 -1
  273. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.js +1 -2
  274. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts +68 -72
  275. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts.map +1 -1
  276. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.js +1 -2
  277. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.d.ts +53 -57
  278. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.d.ts.map +1 -1
  279. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.js +1 -2
  280. package/dist/src/api/modules/admin/staff/staff.admin.module.d.ts +362 -367
  281. package/dist/src/api/modules/admin/staff/staff.admin.module.d.ts.map +1 -1
  282. package/dist/src/api/modules/admin/staff/staff.admin.module.js +1 -2
  283. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts +3 -6
  284. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts.map +1 -1
  285. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.js +1 -2
  286. package/dist/src/api/modules/admin/users/routes/create.route.d.ts +39 -43
  287. package/dist/src/api/modules/admin/users/routes/create.route.d.ts.map +1 -1
  288. package/dist/src/api/modules/admin/users/routes/create.route.js +1 -2
  289. package/dist/src/api/modules/admin/users/routes/list.route.d.ts +68 -72
  290. package/dist/src/api/modules/admin/users/routes/list.route.d.ts.map +1 -1
  291. package/dist/src/api/modules/admin/users/routes/list.route.js +1 -2
  292. package/dist/src/api/modules/admin/users/routes/show.route.d.ts +59 -63
  293. package/dist/src/api/modules/admin/users/routes/show.route.d.ts.map +1 -1
  294. package/dist/src/api/modules/admin/users/routes/show.route.js +1 -2
  295. package/dist/src/api/modules/admin/users/routes/update.route.d.ts +71 -75
  296. package/dist/src/api/modules/admin/users/routes/update.route.d.ts.map +1 -1
  297. package/dist/src/api/modules/admin/users/routes/update.route.js +1 -2
  298. package/dist/src/api/modules/admin/users/routes/users.route.d.ts +55 -59
  299. package/dist/src/api/modules/admin/users/routes/users.route.d.ts.map +1 -1
  300. package/dist/src/api/modules/admin/users/routes/users.route.js +1 -2
  301. package/dist/src/api/modules/admin/users/routes/verify-email.route.d.ts +33 -37
  302. package/dist/src/api/modules/admin/users/routes/verify-email.route.d.ts.map +1 -1
  303. package/dist/src/api/modules/admin/users/routes/verify-email.route.js +1 -2
  304. package/dist/src/api/modules/admin/users/users.admin.module.d.ts +261 -266
  305. package/dist/src/api/modules/admin/users/users.admin.module.d.ts.map +1 -1
  306. package/dist/src/api/modules/admin/users/users.admin.module.js +1 -2
  307. package/dist/src/api/modules/cron/cron/clean.cron.d.ts +1 -5
  308. package/dist/src/api/modules/cron/cron/clean.cron.d.ts.map +1 -1
  309. package/dist/src/api/modules/cron/cron/clean.cron.js +1 -2
  310. package/dist/src/api/modules/cron/cron.module.d.ts +18 -23
  311. package/dist/src/api/modules/cron/cron.module.d.ts.map +1 -1
  312. package/dist/src/api/modules/cron/cron.module.js +1 -2
  313. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts +28 -30
  314. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts.map +1 -1
  315. package/dist/src/api/modules/cron/helpers/process-cron-jobs.js +1 -2
  316. package/dist/src/api/modules/cron/helpers/register-cron-jobs.d.ts +4 -0
  317. package/dist/src/api/modules/cron/helpers/register-cron-jobs.d.ts.map +1 -0
  318. package/dist/src/api/modules/cron/helpers/register-cron-jobs.js +1 -0
  319. package/dist/src/api/modules/cron/routes/cron.route.d.ts +18 -22
  320. package/dist/src/api/modules/cron/routes/cron.route.d.ts.map +1 -1
  321. package/dist/src/api/modules/cron/routes/cron.route.js +1 -2
  322. package/dist/src/api/modules/middleware/middleware.module.d.ts +27 -32
  323. package/dist/src/api/modules/middleware/middleware.module.d.ts.map +1 -1
  324. package/dist/src/api/modules/middleware/middleware.module.js +1 -2
  325. package/dist/src/api/modules/middleware/route.d.ts +41 -45
  326. package/dist/src/api/modules/middleware/route.d.ts.map +1 -1
  327. package/dist/src/api/modules/middleware/route.js +1 -2
  328. package/dist/src/api/modules/queue/cron/process-queue.cron.d.ts +1 -5
  329. package/dist/src/api/modules/queue/cron/process-queue.cron.d.ts.map +1 -1
  330. package/dist/src/api/modules/queue/cron/process-queue.cron.js +1 -2
  331. package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts +3 -6
  332. package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts.map +1 -1
  333. package/dist/src/api/modules/queue/helpers/process-queue-tasks.js +1 -2
  334. package/dist/src/api/modules/queue/queue.module.d.ts +1 -6
  335. package/dist/src/api/modules/queue/queue.module.d.ts.map +1 -1
  336. package/dist/src/api/modules/queue/queue.module.js +1 -2
  337. package/dist/src/api/modules/queue/tasks/send-email.task.d.ts +9 -13
  338. package/dist/src/api/modules/queue/tasks/send-email.task.d.ts.map +1 -1
  339. package/dist/src/api/modules/queue/tasks/send-email.task.js +1 -2
  340. package/dist/src/api/modules/search/routes/search.route.d.ts +91 -0
  341. package/dist/src/api/modules/search/routes/search.route.d.ts.map +1 -0
  342. package/dist/src/api/modules/search/routes/search.route.js +1 -0
  343. package/dist/src/api/modules/search/search.module.d.ts +68 -0
  344. package/dist/src/api/modules/search/search.module.d.ts.map +1 -0
  345. package/dist/src/api/modules/search/search.module.js +1 -0
  346. package/dist/src/api/modules/search/tasks/rebuild-index.task.d.ts +2 -0
  347. package/dist/src/api/modules/search/tasks/rebuild-index.task.d.ts.map +1 -0
  348. package/dist/src/api/modules/search/tasks/rebuild-index.task.js +1 -0
  349. package/dist/src/api/modules/users/avatar-color.d.ts +1 -4
  350. package/dist/src/api/modules/users/avatar-color.d.ts.map +1 -1
  351. package/dist/src/api/modules/users/avatar-color.js +1 -2
  352. package/dist/src/api/modules/users/files/files.module.d.ts +112 -117
  353. package/dist/src/api/modules/users/files/files.module.d.ts.map +1 -1
  354. package/dist/src/api/modules/users/files/files.module.js +1 -2
  355. package/dist/src/api/modules/users/files/routes/delete.route.d.ts +25 -29
  356. package/dist/src/api/modules/users/files/routes/delete.route.d.ts.map +1 -1
  357. package/dist/src/api/modules/users/files/routes/delete.route.js +1 -2
  358. package/dist/src/api/modules/users/files/routes/download.route.d.ts +30 -34
  359. package/dist/src/api/modules/users/files/routes/download.route.d.ts.map +1 -1
  360. package/dist/src/api/modules/users/files/routes/download.route.js +1 -2
  361. package/dist/src/api/modules/users/files/routes/list.route.d.ts +56 -60
  362. package/dist/src/api/modules/users/files/routes/list.route.d.ts.map +1 -1
  363. package/dist/src/api/modules/users/files/routes/list.route.js +1 -2
  364. package/dist/src/api/modules/users/routes/change-password.route.d.ts +27 -31
  365. package/dist/src/api/modules/users/routes/change-password.route.d.ts.map +1 -1
  366. package/dist/src/api/modules/users/routes/change-password.route.js +1 -2
  367. package/dist/src/api/modules/users/routes/devices.route.d.ts +34 -0
  368. package/dist/src/api/modules/users/routes/devices.route.d.ts.map +1 -0
  369. package/dist/src/api/modules/users/routes/devices.route.js +1 -0
  370. package/dist/src/api/modules/users/routes/permissions.route.d.ts +21 -25
  371. package/dist/src/api/modules/users/routes/permissions.route.d.ts.map +1 -1
  372. package/dist/src/api/modules/users/routes/permissions.route.js +1 -2
  373. package/dist/src/api/modules/users/routes/reset-passowrd.route.d.ts +21 -25
  374. package/dist/src/api/modules/users/routes/reset-passowrd.route.d.ts.map +1 -1
  375. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -2
  376. package/dist/src/api/modules/users/routes/revoke-device.route.d.ts +42 -0
  377. package/dist/src/api/modules/users/routes/revoke-device.route.d.ts.map +1 -0
  378. package/dist/src/api/modules/users/routes/revoke-device.route.js +1 -0
  379. package/dist/src/api/modules/users/routes/session.route.d.ts +29 -33
  380. package/dist/src/api/modules/users/routes/session.route.d.ts.map +1 -1
  381. package/dist/src/api/modules/users/routes/session.route.js +1 -2
  382. package/dist/src/api/modules/users/routes/sign-in.route.d.ts +37 -41
  383. package/dist/src/api/modules/users/routes/sign-in.route.d.ts.map +1 -1
  384. package/dist/src/api/modules/users/routes/sign-in.route.js +1 -2
  385. package/dist/src/api/modules/users/routes/sign-out.route.d.ts +21 -25
  386. package/dist/src/api/modules/users/routes/sign-out.route.d.ts.map +1 -1
  387. package/dist/src/api/modules/users/routes/sign-out.route.js +1 -2
  388. package/dist/src/api/modules/users/routes/sign-up.route.d.ts +44 -48
  389. package/dist/src/api/modules/users/routes/sign-up.route.d.ts.map +1 -1
  390. package/dist/src/api/modules/users/routes/sign-up.route.js +1 -2
  391. package/dist/src/api/modules/users/routes/test.route.d.ts +21 -25
  392. package/dist/src/api/modules/users/routes/test.route.d.ts.map +1 -1
  393. package/dist/src/api/modules/users/routes/test.route.js +1 -2
  394. package/dist/src/api/modules/users/sso/routes/callback.route.d.ts +29 -33
  395. package/dist/src/api/modules/users/sso/routes/callback.route.d.ts.map +1 -1
  396. package/dist/src/api/modules/users/sso/routes/callback.route.js +1 -2
  397. package/dist/src/api/modules/users/sso/routes/create-url.route.d.ts +21 -25
  398. package/dist/src/api/modules/users/sso/routes/create-url.route.d.ts.map +1 -1
  399. package/dist/src/api/modules/users/sso/routes/create-url.route.js +1 -2
  400. package/dist/src/api/modules/users/sso/sso.module.d.ts +49 -54
  401. package/dist/src/api/modules/users/sso/sso.module.d.ts.map +1 -1
  402. package/dist/src/api/modules/users/sso/sso.module.js +1 -2
  403. package/dist/src/api/modules/users/users.module.d.ts +439 -374
  404. package/dist/src/api/modules/users/users.module.d.ts.map +1 -1
  405. package/dist/src/api/modules/users/users.module.js +1 -2
  406. package/dist/src/api/plugin.d.ts +1 -5
  407. package/dist/src/api/plugin.d.ts.map +1 -1
  408. package/dist/src/api/plugin.js +1 -2
  409. package/dist/src/components/avatar.d.ts +7 -10
  410. package/dist/src/components/avatar.d.ts.map +1 -1
  411. package/dist/src/components/avatar.js +1 -2
  412. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts +10 -12
  413. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts.map +1 -1
  414. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -2
  415. package/dist/src/components/confirm-action/content.d.ts +5 -8
  416. package/dist/src/components/confirm-action/content.d.ts.map +1 -1
  417. package/dist/src/components/confirm-action/content.js +1 -2
  418. package/dist/src/components/date-format.d.ts +4 -7
  419. package/dist/src/components/date-format.d.ts.map +1 -1
  420. package/dist/src/components/date-format.js +1 -2
  421. package/dist/src/components/files/file-preview.d.ts +4 -7
  422. package/dist/src/components/files/file-preview.d.ts.map +1 -1
  423. package/dist/src/components/files/file-preview.js +1 -2
  424. package/dist/src/components/files/metadata-cell.d.ts +4 -7
  425. package/dist/src/components/files/metadata-cell.d.ts.map +1 -1
  426. package/dist/src/components/files/metadata-cell.js +1 -2
  427. package/dist/src/components/form/auto-form.d.ts +48 -41
  428. package/dist/src/components/form/auto-form.d.ts.map +1 -1
  429. package/dist/src/components/form/auto-form.js +1 -2
  430. package/dist/src/components/form/common/desc.d.ts +1 -4
  431. package/dist/src/components/form/common/desc.d.ts.map +1 -1
  432. package/dist/src/components/form/common/desc.js +1 -2
  433. package/dist/src/components/form/common/label.d.ts +4 -7
  434. package/dist/src/components/form/common/label.d.ts.map +1 -1
  435. package/dist/src/components/form/common/label.js +1 -2
  436. package/dist/src/components/form/fields/array.d.ts +15 -18
  437. package/dist/src/components/form/fields/array.d.ts.map +1 -1
  438. package/dist/src/components/form/fields/array.js +1 -2
  439. package/dist/src/components/form/fields/checkbox.d.ts +3 -6
  440. package/dist/src/components/form/fields/checkbox.d.ts.map +1 -1
  441. package/dist/src/components/form/fields/checkbox.js +1 -2
  442. package/dist/src/components/form/fields/color.d.ts +5 -0
  443. package/dist/src/components/form/fields/color.d.ts.map +1 -0
  444. package/dist/src/components/form/fields/color.js +1 -0
  445. package/dist/src/components/form/fields/combobox.d.ts +20 -22
  446. package/dist/src/components/form/fields/combobox.d.ts.map +1 -1
  447. package/dist/src/components/form/fields/combobox.js +1 -2
  448. package/dist/src/components/form/fields/editor.d.ts +8 -7
  449. package/dist/src/components/form/fields/editor.d.ts.map +1 -1
  450. package/dist/src/components/form/fields/editor.js +1 -2
  451. package/dist/src/components/form/fields/input.d.ts +7 -6
  452. package/dist/src/components/form/fields/input.d.ts.map +1 -1
  453. package/dist/src/components/form/fields/input.js +1 -2
  454. package/dist/src/components/form/fields/multi-lang.d.ts +18 -0
  455. package/dist/src/components/form/fields/multi-lang.d.ts.map +1 -0
  456. package/dist/src/components/form/fields/multi-lang.js +1 -0
  457. package/dist/src/components/form/fields/nullable-number.d.ts +11 -0
  458. package/dist/src/components/form/fields/nullable-number.d.ts.map +1 -0
  459. package/dist/src/components/form/fields/nullable-number.js +1 -0
  460. package/dist/src/components/form/fields/radio-group.d.ts +11 -13
  461. package/dist/src/components/form/fields/radio-group.d.ts.map +1 -1
  462. package/dist/src/components/form/fields/radio-group.js +1 -2
  463. package/dist/src/components/form/fields/select.d.ts +9 -12
  464. package/dist/src/components/form/fields/select.d.ts.map +1 -1
  465. package/dist/src/components/form/fields/select.js +1 -2
  466. package/dist/src/components/form/fields/switch.d.ts +3 -6
  467. package/dist/src/components/form/fields/switch.d.ts.map +1 -1
  468. package/dist/src/components/form/fields/switch.js +1 -2
  469. package/dist/src/components/form/fields/textarea.d.ts +6 -9
  470. package/dist/src/components/form/fields/textarea.d.ts.map +1 -1
  471. package/dist/src/components/form/fields/textarea.js +1 -2
  472. package/dist/src/components/i18n-provider.d.ts +4 -7
  473. package/dist/src/components/i18n-provider.d.ts.map +1 -1
  474. package/dist/src/components/i18n-provider.js +1 -2
  475. package/dist/src/components/languages-provider.d.ts +8 -0
  476. package/dist/src/components/languages-provider.d.ts.map +1 -0
  477. package/dist/src/components/languages-provider.js +1 -0
  478. package/dist/src/components/logo-vitnode.d.ts +2 -5
  479. package/dist/src/components/logo-vitnode.d.ts.map +1 -1
  480. package/dist/src/components/logo-vitnode.js +1 -2
  481. package/dist/src/components/role-format.d.ts +9 -12
  482. package/dist/src/components/role-format.d.ts.map +1 -1
  483. package/dist/src/components/role-format.js +1 -2
  484. package/dist/src/components/staff-permission/provider.d.ts +9 -12
  485. package/dist/src/components/staff-permission/provider.d.ts.map +1 -1
  486. package/dist/src/components/staff-permission/provider.js +1 -2
  487. package/dist/src/components/switchers/langs/language-switcher.d.ts +3 -6
  488. package/dist/src/components/switchers/langs/language-switcher.d.ts.map +1 -1
  489. package/dist/src/components/switchers/langs/language-switcher.js +1 -2
  490. package/dist/src/components/switchers/themes/theme-switcher.d.ts +1 -4
  491. package/dist/src/components/switchers/themes/theme-switcher.d.ts.map +1 -1
  492. package/dist/src/components/switchers/themes/theme-switcher.js +1 -2
  493. package/dist/src/components/table/content.d.ts +2 -5
  494. package/dist/src/components/table/content.d.ts.map +1 -1
  495. package/dist/src/components/table/content.js +1 -2
  496. package/dist/src/components/table/data-table.d.ts +46 -48
  497. package/dist/src/components/table/data-table.d.ts.map +1 -1
  498. package/dist/src/components/table/data-table.js +1 -2
  499. package/dist/src/components/table/filters.d.ts +11 -14
  500. package/dist/src/components/table/filters.d.ts.map +1 -1
  501. package/dist/src/components/table/filters.js +1 -2
  502. package/dist/src/components/table/order-table-head.d.ts +4 -7
  503. package/dist/src/components/table/order-table-head.d.ts.map +1 -1
  504. package/dist/src/components/table/order-table-head.js +1 -2
  505. package/dist/src/components/table/pagination.d.ts +9 -12
  506. package/dist/src/components/table/pagination.d.ts.map +1 -1
  507. package/dist/src/components/table/pagination.js +1 -2
  508. package/dist/src/components/table/search.d.ts +2 -5
  509. package/dist/src/components/table/search.d.ts.map +1 -1
  510. package/dist/src/components/table/search.js +1 -2
  511. package/dist/src/components/theme-provider.d.ts +21 -23
  512. package/dist/src/components/theme-provider.d.ts.map +1 -1
  513. package/dist/src/components/theme-provider.js +1 -2
  514. package/dist/src/components/tiptap/extension.d.ts +3 -6
  515. package/dist/src/components/tiptap/extension.d.ts.map +1 -1
  516. package/dist/src/components/tiptap/extension.js +1 -2
  517. package/dist/src/components/tiptap/toolbar/actions/alignment-action.d.ts +1 -4
  518. package/dist/src/components/tiptap/toolbar/actions/alignment-action.d.ts.map +1 -1
  519. package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -2
  520. package/dist/src/components/tiptap/toolbar/actions/bold-action.d.ts +1 -4
  521. package/dist/src/components/tiptap/toolbar/actions/bold-action.d.ts.map +1 -1
  522. package/dist/src/components/tiptap/toolbar/actions/bold-action.js +1 -2
  523. package/dist/src/components/tiptap/toolbar/actions/headings-action.d.ts +1 -4
  524. package/dist/src/components/tiptap/toolbar/actions/headings-action.d.ts.map +1 -1
  525. package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -2
  526. package/dist/src/components/tiptap/toolbar/actions/italic-action.d.ts +1 -4
  527. package/dist/src/components/tiptap/toolbar/actions/italic-action.d.ts.map +1 -1
  528. package/dist/src/components/tiptap/toolbar/actions/italic-action.js +1 -2
  529. package/dist/src/components/tiptap/toolbar/actions/list-action.d.ts +1 -4
  530. package/dist/src/components/tiptap/toolbar/actions/list-action.d.ts.map +1 -1
  531. package/dist/src/components/tiptap/toolbar/actions/list-action.js +1 -2
  532. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts +1 -4
  533. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts.map +1 -1
  534. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -2
  535. package/dist/src/components/tiptap/toolbar/actions/underline-action.d.ts +1 -4
  536. package/dist/src/components/tiptap/toolbar/actions/underline-action.d.ts.map +1 -1
  537. package/dist/src/components/tiptap/toolbar/actions/underline-action.js +1 -2
  538. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.d.ts +1 -4
  539. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.d.ts.map +1 -1
  540. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js +1 -2
  541. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.d.ts +2 -5
  542. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.d.ts.map +1 -1
  543. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js +1 -2
  544. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.d.ts +3 -6
  545. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.d.ts.map +1 -1
  546. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +1 -2
  547. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.d.ts +5 -8
  548. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.d.ts.map +1 -1
  549. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js +1 -2
  550. package/dist/src/components/ui/accordion.d.ts +5 -7
  551. package/dist/src/components/ui/accordion.d.ts.map +1 -1
  552. package/dist/src/components/ui/accordion.js +1 -2
  553. package/dist/src/components/ui/alert-dialog.d.ts +14 -16
  554. package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
  555. package/dist/src/components/ui/alert-dialog.js +1 -2
  556. package/dist/src/components/ui/alert.d.ts +2 -4
  557. package/dist/src/components/ui/alert.d.ts.map +1 -1
  558. package/dist/src/components/ui/alert.js +1 -2
  559. package/dist/src/components/ui/aspect-ratio.d.ts +1 -3
  560. package/dist/src/components/ui/aspect-ratio.d.ts.map +1 -1
  561. package/dist/src/components/ui/aspect-ratio.js +1 -2
  562. package/dist/src/components/ui/attachment.d.ts +18 -20
  563. package/dist/src/components/ui/attachment.d.ts.map +1 -1
  564. package/dist/src/components/ui/attachment.js +1 -2
  565. package/dist/src/components/ui/avatar.d.ts +6 -8
  566. package/dist/src/components/ui/avatar.d.ts.map +1 -1
  567. package/dist/src/components/ui/avatar.js +1 -2
  568. package/dist/src/components/ui/badge.d.ts +2 -4
  569. package/dist/src/components/ui/badge.d.ts.map +1 -1
  570. package/dist/src/components/ui/badge.js +1 -2
  571. package/dist/src/components/ui/breadcrumb.d.ts +2 -4
  572. package/dist/src/components/ui/breadcrumb.d.ts.map +1 -1
  573. package/dist/src/components/ui/breadcrumb.js +1 -2
  574. package/dist/src/components/ui/button-client.d.ts +2 -5
  575. package/dist/src/components/ui/button-client.d.ts.map +1 -1
  576. package/dist/src/components/ui/button-client.js +1 -2
  577. package/dist/src/components/ui/button-group.d.ts +4 -6
  578. package/dist/src/components/ui/button-group.d.ts.map +1 -1
  579. package/dist/src/components/ui/button-group.js +1 -2
  580. package/dist/src/components/ui/button.d.ts +11 -13
  581. package/dist/src/components/ui/button.d.ts.map +1 -1
  582. package/dist/src/components/ui/button.js +1 -2
  583. package/dist/src/components/ui/card.d.ts +2 -4
  584. package/dist/src/components/ui/card.d.ts.map +1 -1
  585. package/dist/src/components/ui/card.js +1 -2
  586. package/dist/src/components/ui/carousel.d.ts +13 -15
  587. package/dist/src/components/ui/carousel.d.ts.map +1 -1
  588. package/dist/src/components/ui/carousel.js +1 -2
  589. package/dist/src/components/ui/chart.d.ts +29 -30
  590. package/dist/src/components/ui/chart.d.ts.map +1 -1
  591. package/dist/src/components/ui/chart.js +4 -7
  592. package/dist/src/components/ui/checkbox.d.ts +2 -4
  593. package/dist/src/components/ui/checkbox.d.ts.map +1 -1
  594. package/dist/src/components/ui/checkbox.js +1 -2
  595. package/dist/src/components/ui/collapsible.d.ts +4 -6
  596. package/dist/src/components/ui/collapsible.d.ts.map +1 -1
  597. package/dist/src/components/ui/collapsible.js +1 -2
  598. package/dist/src/components/ui/color-picker.d.ts +8 -0
  599. package/dist/src/components/ui/color-picker.d.ts.map +1 -0
  600. package/dist/src/components/ui/color-picker.js +1 -0
  601. package/dist/src/components/ui/combobox.d.ts +20 -22
  602. package/dist/src/components/ui/combobox.d.ts.map +1 -1
  603. package/dist/src/components/ui/combobox.js +1 -2
  604. package/dist/src/components/ui/command.d.ts +14 -16
  605. package/dist/src/components/ui/command.d.ts.map +1 -1
  606. package/dist/src/components/ui/command.js +1 -2
  607. package/dist/src/components/ui/context-menu.d.ts +21 -23
  608. package/dist/src/components/ui/context-menu.d.ts.map +1 -1
  609. package/dist/src/components/ui/context-menu.js +1 -2
  610. package/dist/src/components/ui/dialog.d.ts +19 -21
  611. package/dist/src/components/ui/dialog.d.ts.map +1 -1
  612. package/dist/src/components/ui/dialog.js +1 -2
  613. package/dist/src/components/ui/direction.d.ts +4 -6
  614. package/dist/src/components/ui/direction.d.ts.map +1 -1
  615. package/dist/src/components/ui/direction.js +1 -2
  616. package/dist/src/components/ui/drawer.d.ts +10 -12
  617. package/dist/src/components/ui/drawer.d.ts.map +1 -1
  618. package/dist/src/components/ui/drawer.js +1 -2
  619. package/dist/src/components/ui/dropdown-menu.d.ts +21 -23
  620. package/dist/src/components/ui/dropdown-menu.d.ts.map +1 -1
  621. package/dist/src/components/ui/dropdown-menu.js +1 -2
  622. package/dist/src/components/ui/editor-content.d.ts +2 -5
  623. package/dist/src/components/ui/editor-content.d.ts.map +1 -1
  624. package/dist/src/components/ui/editor-content.js +1 -2
  625. package/dist/src/components/ui/editor.d.ts +5 -8
  626. package/dist/src/components/ui/editor.d.ts.map +1 -1
  627. package/dist/src/components/ui/editor.js +1 -2
  628. package/dist/src/components/ui/empty.d.ts +3 -5
  629. package/dist/src/components/ui/empty.d.ts.map +1 -1
  630. package/dist/src/components/ui/empty.js +1 -2
  631. package/dist/src/components/ui/field.d.ts +9 -11
  632. package/dist/src/components/ui/field.d.ts.map +1 -1
  633. package/dist/src/components/ui/field.js +1 -2
  634. package/dist/src/components/ui/form.d.ts +15 -17
  635. package/dist/src/components/ui/form.d.ts.map +1 -1
  636. package/dist/src/components/ui/form.js +1 -2
  637. package/dist/src/components/ui/header-content.d.ts +10 -12
  638. package/dist/src/components/ui/header-content.d.ts.map +1 -1
  639. package/dist/src/components/ui/header-content.js +1 -2
  640. package/dist/src/components/ui/hover-card.d.ts +4 -6
  641. package/dist/src/components/ui/hover-card.d.ts.map +1 -1
  642. package/dist/src/components/ui/hover-card.js +1 -2
  643. package/dist/src/components/ui/input-group.d.ts +6 -8
  644. package/dist/src/components/ui/input-group.d.ts.map +1 -1
  645. package/dist/src/components/ui/input-group.js +1 -2
  646. package/dist/src/components/ui/input-otp.d.ts +3 -5
  647. package/dist/src/components/ui/input-otp.d.ts.map +1 -1
  648. package/dist/src/components/ui/input-otp.js +1 -2
  649. package/dist/src/components/ui/input.d.ts +0 -2
  650. package/dist/src/components/ui/input.d.ts.map +1 -1
  651. package/dist/src/components/ui/input.js +1 -2
  652. package/dist/src/components/ui/item.d.ts +7 -9
  653. package/dist/src/components/ui/item.d.ts.map +1 -1
  654. package/dist/src/components/ui/item.js +1 -2
  655. package/dist/src/components/ui/kbd.d.ts +0 -2
  656. package/dist/src/components/ui/kbd.d.ts.map +1 -1
  657. package/dist/src/components/ui/kbd.js +1 -2
  658. package/dist/src/components/ui/label.d.ts +0 -2
  659. package/dist/src/components/ui/label.d.ts.map +1 -1
  660. package/dist/src/components/ui/label.js +1 -2
  661. package/dist/src/components/ui/loader.d.ts +3 -6
  662. package/dist/src/components/ui/loader.d.ts.map +1 -1
  663. package/dist/src/components/ui/loader.js +1 -2
  664. package/dist/src/components/ui/menubar.d.ts +23 -25
  665. package/dist/src/components/ui/menubar.d.ts.map +1 -1
  666. package/dist/src/components/ui/menubar.js +1 -2
  667. package/dist/src/components/ui/native-select.d.ts +1 -3
  668. package/dist/src/components/ui/native-select.d.ts.map +1 -1
  669. package/dist/src/components/ui/native-select.js +1 -2
  670. package/dist/src/components/ui/navigation-menu.d.ts +10 -12
  671. package/dist/src/components/ui/navigation-menu.d.ts.map +1 -1
  672. package/dist/src/components/ui/navigation-menu.js +1 -2
  673. package/dist/src/components/ui/pagination.d.ts +5 -7
  674. package/dist/src/components/ui/pagination.d.ts.map +1 -1
  675. package/dist/src/components/ui/pagination.js +1 -2
  676. package/dist/src/components/ui/popover.d.ts +7 -9
  677. package/dist/src/components/ui/popover.d.ts.map +1 -1
  678. package/dist/src/components/ui/popover.js +1 -2
  679. package/dist/src/components/ui/progress.d.ts +2 -4
  680. package/dist/src/components/ui/progress.d.ts.map +1 -1
  681. package/dist/src/components/ui/progress.js +1 -2
  682. package/dist/src/components/ui/radio-group.d.ts +4 -6
  683. package/dist/src/components/ui/radio-group.d.ts.map +1 -1
  684. package/dist/src/components/ui/radio-group.js +1 -2
  685. package/dist/src/components/ui/resizable.d.ts +1 -3
  686. package/dist/src/components/ui/resizable.d.ts.map +1 -1
  687. package/dist/src/components/ui/resizable.js +1 -2
  688. package/dist/src/components/ui/scroll-area.d.ts +3 -5
  689. package/dist/src/components/ui/scroll-area.d.ts.map +1 -1
  690. package/dist/src/components/ui/scroll-area.js +1 -2
  691. package/dist/src/components/ui/select.d.ts +13 -15
  692. package/dist/src/components/ui/select.d.ts.map +1 -1
  693. package/dist/src/components/ui/select.js +1 -2
  694. package/dist/src/components/ui/separator.d.ts +2 -4
  695. package/dist/src/components/ui/separator.d.ts.map +1 -1
  696. package/dist/src/components/ui/separator.js +1 -2
  697. package/dist/src/components/ui/sheet.d.ts +10 -12
  698. package/dist/src/components/ui/sheet.d.ts.map +1 -1
  699. package/dist/src/components/ui/sheet.js +1 -2
  700. package/dist/src/components/ui/sidebar.d.ts +28 -30
  701. package/dist/src/components/ui/sidebar.d.ts.map +1 -1
  702. package/dist/src/components/ui/sidebar.js +1 -2
  703. package/dist/src/components/ui/skeleton.d.ts +0 -2
  704. package/dist/src/components/ui/skeleton.d.ts.map +1 -1
  705. package/dist/src/components/ui/skeleton.js +1 -2
  706. package/dist/src/components/ui/slider.d.ts +2 -4
  707. package/dist/src/components/ui/slider.d.ts.map +1 -1
  708. package/dist/src/components/ui/slider.js +1 -2
  709. package/dist/src/components/ui/sonner.d.ts +1 -3
  710. package/dist/src/components/ui/sonner.d.ts.map +1 -1
  711. package/dist/src/components/ui/sonner.js +1 -2
  712. package/dist/src/components/ui/spinner.d.ts +0 -2
  713. package/dist/src/components/ui/spinner.d.ts.map +1 -1
  714. package/dist/src/components/ui/spinner.js +1 -2
  715. package/dist/src/components/ui/switch.d.ts +3 -5
  716. package/dist/src/components/ui/switch.d.ts.map +1 -1
  717. package/dist/src/components/ui/switch.js +1 -2
  718. package/dist/src/components/ui/table.d.ts +1 -3
  719. package/dist/src/components/ui/table.d.ts.map +1 -1
  720. package/dist/src/components/ui/table.js +1 -2
  721. package/dist/src/components/ui/tabs.d.ts +8 -10
  722. package/dist/src/components/ui/tabs.d.ts.map +1 -1
  723. package/dist/src/components/ui/tabs.js +1 -2
  724. package/dist/src/components/ui/textarea.d.ts +0 -2
  725. package/dist/src/components/ui/textarea.d.ts.map +1 -1
  726. package/dist/src/components/ui/textarea.js +1 -2
  727. package/dist/src/components/ui/toggle-group.d.ts +8 -10
  728. package/dist/src/components/ui/toggle-group.d.ts.map +1 -1
  729. package/dist/src/components/ui/toggle-group.js +1 -2
  730. package/dist/src/components/ui/toggle.d.ts +5 -7
  731. package/dist/src/components/ui/toggle.d.ts.map +1 -1
  732. package/dist/src/components/ui/toggle.js +1 -2
  733. package/dist/src/components/ui/tooltip.d.ts +8 -10
  734. package/dist/src/components/ui/tooltip.d.ts.map +1 -1
  735. package/dist/src/components/ui/tooltip.js +1 -2
  736. package/dist/src/components/user-format.d.ts +10 -13
  737. package/dist/src/components/user-format.d.ts.map +1 -1
  738. package/dist/src/components/user-format.js +1 -2
  739. package/dist/src/config.d.ts +3 -6
  740. package/dist/src/config.d.ts.map +1 -1
  741. package/dist/src/config.js +1 -2
  742. package/dist/src/database/admins.d.ts +278 -264
  743. package/dist/src/database/admins.d.ts.map +1 -1
  744. package/dist/src/database/admins.js +1 -2
  745. package/dist/src/database/cron.d.ts +169 -172
  746. package/dist/src/database/cron.d.ts.map +1 -1
  747. package/dist/src/database/cron.js +1 -2
  748. package/dist/src/database/files.d.ts +190 -193
  749. package/dist/src/database/files.d.ts.map +1 -1
  750. package/dist/src/database/files.js +1 -2
  751. package/dist/src/database/languages.d.ts +300 -320
  752. package/dist/src/database/languages.d.ts.map +1 -1
  753. package/dist/src/database/languages.js +1 -2
  754. package/dist/src/database/logs.d.ts +218 -221
  755. package/dist/src/database/logs.d.ts.map +1 -1
  756. package/dist/src/database/logs.js +1 -2
  757. package/dist/src/database/moderators.d.ts +148 -134
  758. package/dist/src/database/moderators.d.ts.map +1 -1
  759. package/dist/src/database/moderators.js +1 -2
  760. package/dist/src/database/queue.d.ts +271 -274
  761. package/dist/src/database/queue.d.ts.map +1 -1
  762. package/dist/src/database/queue.js +1 -2
  763. package/dist/src/database/roles.d.ts +195 -147
  764. package/dist/src/database/roles.d.ts.map +1 -1
  765. package/dist/src/database/roles.js +1 -2
  766. package/dist/src/database/search.d.ts +314 -0
  767. package/dist/src/database/search.d.ts.map +1 -0
  768. package/dist/src/database/search.js +1 -0
  769. package/dist/src/database/sessions.d.ts +210 -213
  770. package/dist/src/database/sessions.d.ts.map +1 -1
  771. package/dist/src/database/sessions.js +1 -2
  772. package/dist/src/database/users.d.ts +633 -636
  773. package/dist/src/database/users.d.ts.map +1 -1
  774. package/dist/src/database/users.js +1 -2
  775. package/dist/src/drizzle.config.d.ts +4 -7
  776. package/dist/src/drizzle.config.d.ts.map +1 -1
  777. package/dist/src/drizzle.config.js +1 -2
  778. package/dist/src/emails/default-template.d.ts +38 -40
  779. package/dist/src/emails/default-template.d.ts.map +1 -1
  780. package/dist/src/emails/default-template.js +1 -2
  781. package/dist/src/emails/reset-password.d.ts +47 -49
  782. package/dist/src/emails/reset-password.d.ts.map +1 -1
  783. package/dist/src/emails/reset-password.js +1 -2
  784. package/dist/src/emails/test-email.d.ts +20 -22
  785. package/dist/src/emails/test-email.d.ts.map +1 -1
  786. package/dist/src/emails/test-email.js +1 -2
  787. package/dist/src/emails/ui/button.d.ts +6 -8
  788. package/dist/src/emails/ui/button.d.ts.map +1 -1
  789. package/dist/src/emails/ui/button.js +1 -2
  790. package/dist/src/emails/ui/card.d.ts +6 -9
  791. package/dist/src/emails/ui/card.d.ts.map +1 -1
  792. package/dist/src/emails/ui/card.js +1 -2
  793. package/dist/src/globals.css +45 -0
  794. package/dist/src/hooks/use-before-unload.d.ts +1 -4
  795. package/dist/src/hooks/use-before-unload.d.ts.map +1 -1
  796. package/dist/src/hooks/use-before-unload.js +1 -2
  797. package/dist/src/hooks/use-captcha.d.ts +24 -27
  798. package/dist/src/hooks/use-captcha.d.ts.map +1 -1
  799. package/dist/src/hooks/use-captcha.js +1 -2
  800. package/dist/src/hooks/use-mobile.d.ts +1 -4
  801. package/dist/src/hooks/use-mobile.d.ts.map +1 -1
  802. package/dist/src/hooks/use-mobile.js +1 -2
  803. package/dist/src/lib/api/get-devices-api.d.ts +14 -0
  804. package/dist/src/lib/api/get-devices-api.d.ts.map +1 -0
  805. package/dist/src/lib/api/get-devices-api.js +1 -0
  806. package/dist/src/lib/api/get-middleware-api.d.ts +10 -13
  807. package/dist/src/lib/api/get-middleware-api.d.ts.map +1 -1
  808. package/dist/src/lib/api/get-middleware-api.js +1 -2
  809. package/dist/src/lib/api/get-moderator-permissions-api.d.ts +3 -6
  810. package/dist/src/lib/api/get-moderator-permissions-api.d.ts.map +1 -1
  811. package/dist/src/lib/api/get-moderator-permissions-api.js +1 -2
  812. package/dist/src/lib/api/get-next-cron-run-date.d.ts +1 -4
  813. package/dist/src/lib/api/get-next-cron-run-date.d.ts.map +1 -1
  814. package/dist/src/lib/api/get-next-cron-run-date.js +1 -2
  815. package/dist/src/lib/api/get-queue-backoff-date.d.ts +1 -4
  816. package/dist/src/lib/api/get-queue-backoff-date.d.ts.map +1 -1
  817. package/dist/src/lib/api/get-queue-backoff-date.js +1 -2
  818. package/dist/src/lib/api/get-queue-status.d.ts +11 -0
  819. package/dist/src/lib/api/get-queue-status.d.ts.map +1 -0
  820. package/dist/src/lib/api/get-queue-status.js +1 -0
  821. package/dist/src/lib/api/get-session-admin-api.d.ts +24 -27
  822. package/dist/src/lib/api/get-session-admin-api.d.ts.map +1 -1
  823. package/dist/src/lib/api/get-session-admin-api.js +1 -2
  824. package/dist/src/lib/api/get-session-api.d.ts +16 -19
  825. package/dist/src/lib/api/get-session-api.d.ts.map +1 -1
  826. package/dist/src/lib/api/get-session-api.js +1 -2
  827. package/dist/src/lib/api/is-cron-stale.d.ts +2 -5
  828. package/dist/src/lib/api/is-cron-stale.d.ts.map +1 -1
  829. package/dist/src/lib/api/is-cron-stale.js +1 -2
  830. package/dist/src/lib/api/parse-user-agent.d.ts +8 -0
  831. package/dist/src/lib/api/parse-user-agent.d.ts.map +1 -0
  832. package/dist/src/lib/api/parse-user-agent.js +1 -0
  833. package/dist/src/lib/api/resolve-queue-task-outcome.d.ts +11 -14
  834. package/dist/src/lib/api/resolve-queue-task-outcome.d.ts.map +1 -1
  835. package/dist/src/lib/api/resolve-queue-task-outcome.js +1 -2
  836. package/dist/src/lib/api/should-cron-job-run.d.ts +1 -4
  837. package/dist/src/lib/api/should-cron-job-run.d.ts.map +1 -1
  838. package/dist/src/lib/api/should-cron-job-run.js +1 -2
  839. package/dist/src/lib/api/upload.d.ts +12 -15
  840. package/dist/src/lib/api/upload.d.ts.map +1 -1
  841. package/dist/src/lib/api/upload.js +1 -2
  842. package/dist/src/lib/api/validate-cron-schedule.d.ts +1 -4
  843. package/dist/src/lib/api/validate-cron-schedule.d.ts.map +1 -1
  844. package/dist/src/lib/api/validate-cron-schedule.js +1 -2
  845. package/dist/src/lib/colors.d.ts +20 -23
  846. package/dist/src/lib/colors.d.ts.map +1 -1
  847. package/dist/src/lib/colors.js +1 -2
  848. package/dist/src/lib/config.d.ts +6 -9
  849. package/dist/src/lib/config.d.ts.map +1 -1
  850. package/dist/src/lib/config.js +1 -2
  851. package/dist/src/lib/ctrl-or-command-character.d.ts +1 -4
  852. package/dist/src/lib/ctrl-or-command-character.d.ts.map +1 -1
  853. package/dist/src/lib/ctrl-or-command-character.js +1 -2
  854. package/dist/src/lib/fetcher/cookie-from-string-to-object.d.ts +8 -11
  855. package/dist/src/lib/fetcher/cookie-from-string-to-object.d.ts.map +1 -1
  856. package/dist/src/lib/fetcher/cookie-from-string-to-object.js +1 -2
  857. package/dist/src/lib/fetcher/core.d.ts +14 -16
  858. package/dist/src/lib/fetcher/core.d.ts.map +1 -1
  859. package/dist/src/lib/fetcher/core.js +3 -2
  860. package/dist/src/lib/fetcher/helpers-server.d.ts +1 -4
  861. package/dist/src/lib/fetcher/helpers-server.d.ts.map +1 -1
  862. package/dist/src/lib/fetcher/helpers-server.js +1 -2
  863. package/dist/src/lib/fetcher/helpers.d.ts +1 -4
  864. package/dist/src/lib/fetcher/helpers.d.ts.map +1 -1
  865. package/dist/src/lib/fetcher/helpers.js +1 -2
  866. package/dist/src/lib/fetcher/rate-limit.d.ts +10 -0
  867. package/dist/src/lib/fetcher/rate-limit.d.ts.map +1 -0
  868. package/dist/src/lib/fetcher/rate-limit.js +1 -0
  869. package/dist/src/lib/fetcher/types.d.ts +87 -83
  870. package/dist/src/lib/fetcher/types.d.ts.map +1 -1
  871. package/dist/src/lib/fetcher/types.js +1 -0
  872. package/dist/src/lib/fetcher-client.d.ts +10 -13
  873. package/dist/src/lib/fetcher-client.d.ts.map +1 -1
  874. package/dist/src/lib/fetcher-client.js +1 -2
  875. package/dist/src/lib/fetcher.d.ts +9 -12
  876. package/dist/src/lib/fetcher.d.ts.map +1 -1
  877. package/dist/src/lib/fetcher.js +1 -2
  878. package/dist/src/lib/format-bytes.d.ts +1 -4
  879. package/dist/src/lib/format-bytes.d.ts.map +1 -1
  880. package/dist/src/lib/format-bytes.js +1 -2
  881. package/dist/src/lib/helpers/auto-form.d.ts +19 -21
  882. package/dist/src/lib/helpers/auto-form.d.ts.map +1 -1
  883. package/dist/src/lib/helpers/auto-form.js +1 -2
  884. package/dist/src/lib/helpers/multi-lang.d.ts +21 -0
  885. package/dist/src/lib/helpers/multi-lang.d.ts.map +1 -0
  886. package/dist/src/lib/helpers/multi-lang.js +1 -0
  887. package/dist/src/lib/i18n/deep-merge.d.ts +4 -0
  888. package/dist/src/lib/i18n/deep-merge.d.ts.map +1 -0
  889. package/dist/src/lib/i18n/deep-merge.js +1 -0
  890. package/dist/src/lib/i18n/load-messages.d.ts +9 -0
  891. package/dist/src/lib/i18n/load-messages.d.ts.map +1 -0
  892. package/dist/src/lib/i18n/load-messages.js +1 -0
  893. package/dist/src/lib/i18n/negotiate-locale.d.ts +2 -0
  894. package/dist/src/lib/i18n/negotiate-locale.d.ts.map +1 -0
  895. package/dist/src/lib/i18n/negotiate-locale.js +1 -0
  896. package/dist/src/lib/i18n/sources.d.ts +16 -0
  897. package/dist/src/lib/i18n/sources.d.ts.map +1 -0
  898. package/dist/src/lib/i18n/sources.js +1 -0
  899. package/dist/src/lib/i18n/types.d.ts +26 -0
  900. package/dist/src/lib/i18n/types.d.ts.map +1 -0
  901. package/dist/src/lib/i18n/types.js +1 -0
  902. package/dist/src/lib/motion.d.ts +8 -0
  903. package/dist/src/lib/motion.d.ts.map +1 -0
  904. package/dist/src/lib/motion.js +1 -0
  905. package/dist/src/lib/navigation.d.ts +334 -336
  906. package/dist/src/lib/navigation.d.ts.map +1 -1
  907. package/dist/src/lib/navigation.js +1 -2
  908. package/dist/src/lib/plugin.d.ts +16 -16
  909. package/dist/src/lib/plugin.d.ts.map +1 -1
  910. package/dist/src/lib/plugin.js +1 -2
  911. package/dist/src/lib/special-characters.d.ts +2 -5
  912. package/dist/src/lib/special-characters.d.ts.map +1 -1
  913. package/dist/src/lib/special-characters.js +1 -2
  914. package/dist/src/lib/strip-html.d.ts +2 -0
  915. package/dist/src/lib/strip-html.d.ts.map +1 -0
  916. package/dist/src/lib/strip-html.js +1 -0
  917. package/dist/src/lib/tiptap/toolbar/actions/bold-action.d.ts +1 -1
  918. package/dist/src/lib/tiptap/toolbar/actions/bold-action.d.ts.map +1 -0
  919. package/dist/src/lib/utils.d.ts +3 -6
  920. package/dist/src/lib/utils.d.ts.map +1 -1
  921. package/dist/src/lib/utils.js +1 -2
  922. package/dist/src/locales/api/en.json +19 -0
  923. package/dist/src/locales/api/index.d.ts +4 -0
  924. package/dist/src/locales/api/index.d.ts.map +1 -0
  925. package/dist/src/locales/api/index.js +1 -0
  926. package/dist/src/locales/en.json +886 -0
  927. package/dist/src/locales/index.d.ts +4 -0
  928. package/dist/src/locales/index.d.ts.map +1 -0
  929. package/dist/src/locales/index.js +1 -0
  930. package/dist/src/routes/admin/core/advanced/cron/page.d.ts +6 -9
  931. package/dist/src/routes/admin/core/advanced/cron/page.d.ts.map +1 -1
  932. package/dist/src/routes/admin/core/advanced/cron/page.js +1 -2
  933. package/dist/src/routes/admin/core/advanced/queue/page.d.ts +8 -11
  934. package/dist/src/routes/admin/core/advanced/queue/page.d.ts.map +1 -1
  935. package/dist/src/routes/admin/core/advanced/queue/page.js +1 -2
  936. package/dist/src/routes/admin/core/advanced/search/page.d.ts +11 -0
  937. package/dist/src/routes/admin/core/advanced/search/page.d.ts.map +1 -0
  938. package/dist/src/routes/admin/core/advanced/search/page.js +1 -0
  939. package/dist/src/routes/admin/core/debug/page.d.ts +6 -8
  940. package/dist/src/routes/admin/core/debug/page.d.ts.map +1 -1
  941. package/dist/src/routes/admin/core/debug/page.js +1 -2
  942. package/dist/src/routes/admin/core/page.d.ts +1 -4
  943. package/dist/src/routes/admin/core/page.d.ts.map +1 -1
  944. package/dist/src/routes/admin/core/page.js +1 -2
  945. package/dist/src/routes/admin/core/staff/admins/create/page.d.ts +1 -4
  946. package/dist/src/routes/admin/core/staff/admins/create/page.d.ts.map +1 -1
  947. package/dist/src/routes/admin/core/staff/admins/create/page.js +1 -2
  948. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.d.ts +4 -7
  949. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.d.ts.map +1 -1
  950. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.js +1 -2
  951. package/dist/src/routes/admin/core/staff/admins/page.d.ts +2 -5
  952. package/dist/src/routes/admin/core/staff/admins/page.d.ts.map +1 -1
  953. package/dist/src/routes/admin/core/staff/admins/page.js +1 -2
  954. package/dist/src/routes/admin/core/staff/moderators/create/page.d.ts +1 -4
  955. package/dist/src/routes/admin/core/staff/moderators/create/page.d.ts.map +1 -1
  956. package/dist/src/routes/admin/core/staff/moderators/create/page.js +1 -2
  957. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.d.ts +4 -7
  958. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.d.ts.map +1 -1
  959. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.js +1 -2
  960. package/dist/src/routes/admin/core/staff/moderators/page.d.ts +2 -5
  961. package/dist/src/routes/admin/core/staff/moderators/page.d.ts.map +1 -1
  962. package/dist/src/routes/admin/core/staff/moderators/page.js +1 -2
  963. package/dist/src/routes/admin/core/system/files/page.d.ts +6 -9
  964. package/dist/src/routes/admin/core/system/files/page.d.ts.map +1 -1
  965. package/dist/src/routes/admin/core/system/files/page.js +1 -2
  966. package/dist/src/routes/admin/core/system/integrations/page.d.ts +4 -7
  967. package/dist/src/routes/admin/core/system/integrations/page.d.ts.map +1 -1
  968. package/dist/src/routes/admin/core/system/integrations/page.js +1 -2
  969. package/dist/src/routes/admin/core/test/page.d.ts +1 -4
  970. package/dist/src/routes/admin/core/test/page.d.ts.map +1 -1
  971. package/dist/src/routes/admin/core/test/page.js +1 -2
  972. package/dist/src/routes/admin/core/users/[id]/page.d.ts +9 -12
  973. package/dist/src/routes/admin/core/users/[id]/page.d.ts.map +1 -1
  974. package/dist/src/routes/admin/core/users/[id]/page.js +1 -2
  975. package/dist/src/routes/admin/core/users/page.d.ts +5 -7
  976. package/dist/src/routes/admin/core/users/page.d.ts.map +1 -1
  977. package/dist/src/routes/admin/core/users/page.js +1 -2
  978. package/dist/src/routes/admin/core/users/roles/page.d.ts +5 -7
  979. package/dist/src/routes/admin/core/users/roles/page.d.ts.map +1 -1
  980. package/dist/src/routes/admin/core/users/roles/page.js +1 -2
  981. package/dist/src/routes/blank/test/page.d.ts +1 -4
  982. package/dist/src/routes/blank/test/page.d.ts.map +1 -1
  983. package/dist/src/routes/blank/test/page.js +1 -2
  984. package/dist/src/routes/breadcrumb/admin/[...all]/page.d.ts +1 -4
  985. package/dist/src/routes/breadcrumb/admin/[...all]/page.d.ts.map +1 -1
  986. package/dist/src/routes/breadcrumb/admin/[...all]/page.js +1 -2
  987. package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.d.ts +2 -0
  988. package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.d.ts.map +1 -0
  989. package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.js +1 -0
  990. package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.d.ts +2 -0
  991. package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.d.ts.map +1 -0
  992. package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.js +1 -0
  993. package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.d.ts +2 -0
  994. package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.d.ts.map +1 -0
  995. package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.js +1 -0
  996. package/dist/src/routes/breadcrumb/admin/core/page.d.ts +2 -0
  997. package/dist/src/routes/breadcrumb/admin/core/page.d.ts.map +1 -0
  998. package/dist/src/routes/breadcrumb/admin/core/page.js +1 -0
  999. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.d.ts +1 -4
  1000. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.d.ts.map +1 -1
  1001. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.js +1 -2
  1002. package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.d.ts +4 -7
  1003. package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.d.ts.map +1 -1
  1004. package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.js +1 -2
  1005. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.d.ts +1 -4
  1006. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.d.ts.map +1 -1
  1007. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.js +1 -2
  1008. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.d.ts +1 -4
  1009. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.d.ts.map +1 -1
  1010. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.js +1 -2
  1011. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.d.ts +4 -7
  1012. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.d.ts.map +1 -1
  1013. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.js +1 -2
  1014. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.d.ts +1 -4
  1015. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.d.ts.map +1 -1
  1016. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.js +1 -2
  1017. package/dist/src/routes/breadcrumb/admin/core/system/files/page.d.ts +2 -0
  1018. package/dist/src/routes/breadcrumb/admin/core/system/files/page.d.ts.map +1 -0
  1019. package/dist/src/routes/breadcrumb/admin/core/system/files/page.js +1 -0
  1020. package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.d.ts +2 -0
  1021. package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.d.ts.map +1 -0
  1022. package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.js +1 -0
  1023. package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.d.ts +4 -7
  1024. package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.d.ts.map +1 -1
  1025. package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.js +1 -2
  1026. package/dist/src/routes/breadcrumb/admin/core/users/page.d.ts +2 -0
  1027. package/dist/src/routes/breadcrumb/admin/core/users/page.d.ts.map +1 -0
  1028. package/dist/src/routes/breadcrumb/admin/core/users/page.js +1 -0
  1029. package/dist/src/routes/breadcrumb/admin/core/users/roles/page.d.ts +2 -0
  1030. package/dist/src/routes/breadcrumb/admin/core/users/roles/page.d.ts.map +1 -0
  1031. package/dist/src/routes/breadcrumb/admin/core/users/roles/page.js +1 -0
  1032. package/dist/src/routes/breadcrumb/admin/default.d.ts +1 -4
  1033. package/dist/src/routes/breadcrumb/admin/default.d.ts.map +1 -1
  1034. package/dist/src/routes/breadcrumb/admin/default.js +1 -2
  1035. package/dist/src/routes/breadcrumb/main/[...rest]/page.d.ts +1 -4
  1036. package/dist/src/routes/breadcrumb/main/[...rest]/page.d.ts.map +1 -1
  1037. package/dist/src/routes/breadcrumb/main/[...rest]/page.js +1 -2
  1038. package/dist/src/routes/breadcrumb/main/default.d.ts +1 -4
  1039. package/dist/src/routes/breadcrumb/main/default.d.ts.map +1 -1
  1040. package/dist/src/routes/breadcrumb/main/default.js +1 -2
  1041. package/dist/src/routes/breadcrumb/main/discover/page.d.ts +2 -0
  1042. package/dist/src/routes/breadcrumb/main/discover/page.d.ts.map +1 -0
  1043. package/dist/src/routes/breadcrumb/main/discover/page.js +1 -0
  1044. package/dist/src/routes/breadcrumb/main/page.d.ts +1 -4
  1045. package/dist/src/routes/breadcrumb/main/page.d.ts.map +1 -1
  1046. package/dist/src/routes/breadcrumb/main/page.js +1 -2
  1047. package/dist/src/routes/breadcrumb/main/search/page.d.ts +2 -0
  1048. package/dist/src/routes/breadcrumb/main/search/page.d.ts.map +1 -0
  1049. package/dist/src/routes/breadcrumb/main/search/page.js +1 -0
  1050. package/dist/src/routes/breadcrumb/main/settings/devices/page.d.ts +2 -0
  1051. package/dist/src/routes/breadcrumb/main/settings/devices/page.d.ts.map +1 -0
  1052. package/dist/src/routes/breadcrumb/main/settings/devices/page.js +1 -0
  1053. package/dist/src/routes/breadcrumb/main/settings/overview/page.d.ts +1 -4
  1054. package/dist/src/routes/breadcrumb/main/settings/overview/page.d.ts.map +1 -1
  1055. package/dist/src/routes/breadcrumb/main/settings/overview/page.js +1 -2
  1056. package/dist/src/routes/breadcrumb/main/settings/page.d.ts +1 -4
  1057. package/dist/src/routes/breadcrumb/main/settings/page.d.ts.map +1 -1
  1058. package/dist/src/routes/breadcrumb/main/settings/page.js +1 -2
  1059. package/dist/src/routes/breadcrumb/main/settings/security/page.d.ts +1 -4
  1060. package/dist/src/routes/breadcrumb/main/settings/security/page.d.ts.map +1 -1
  1061. package/dist/src/routes/breadcrumb/main/settings/security/page.js +1 -2
  1062. package/dist/src/routes/main/discover/page.d.ts +11 -0
  1063. package/dist/src/routes/main/discover/page.d.ts.map +1 -0
  1064. package/dist/src/routes/main/discover/page.js +1 -0
  1065. package/dist/src/routes/main/files/page.d.ts +10 -13
  1066. package/dist/src/routes/main/files/page.d.ts.map +1 -1
  1067. package/dist/src/routes/main/files/page.js +1 -2
  1068. package/dist/src/routes/main/login/page.d.ts +6 -9
  1069. package/dist/src/routes/main/login/page.d.ts.map +1 -1
  1070. package/dist/src/routes/main/login/page.js +1 -2
  1071. package/dist/src/routes/main/login/reset-password/page.d.ts +7 -10
  1072. package/dist/src/routes/main/login/reset-password/page.d.ts.map +1 -1
  1073. package/dist/src/routes/main/login/reset-password/page.js +1 -2
  1074. package/dist/src/routes/main/login/sso/[providerId]/page.d.ts +5 -8
  1075. package/dist/src/routes/main/login/sso/[providerId]/page.d.ts.map +1 -1
  1076. package/dist/src/routes/main/login/sso/[providerId]/page.js +1 -2
  1077. package/dist/src/routes/main/register/page.d.ts +6 -9
  1078. package/dist/src/routes/main/register/page.d.ts.map +1 -1
  1079. package/dist/src/routes/main/register/page.js +1 -2
  1080. package/dist/src/routes/main/search/page.d.ts +15 -0
  1081. package/dist/src/routes/main/search/page.d.ts.map +1 -0
  1082. package/dist/src/routes/main/search/page.js +1 -0
  1083. package/dist/src/routes/main/settings/devices/page.d.ts +5 -0
  1084. package/dist/src/routes/main/settings/devices/page.d.ts.map +1 -0
  1085. package/dist/src/routes/main/settings/devices/page.js +1 -0
  1086. package/dist/src/routes/main/settings/layout.d.ts +4 -7
  1087. package/dist/src/routes/main/settings/layout.d.ts.map +1 -1
  1088. package/dist/src/routes/main/settings/layout.js +1 -2
  1089. package/dist/src/routes/main/settings/overview/page.d.ts +3 -6
  1090. package/dist/src/routes/main/settings/overview/page.d.ts.map +1 -1
  1091. package/dist/src/routes/main/settings/overview/page.js +1 -2
  1092. package/dist/src/routes/main/settings/page.d.ts +3 -6
  1093. package/dist/src/routes/main/settings/page.d.ts.map +1 -1
  1094. package/dist/src/routes/main/settings/page.js +1 -2
  1095. package/dist/src/routes/main/settings/security/page.d.ts +3 -6
  1096. package/dist/src/routes/main/settings/security/page.d.ts.map +1 -1
  1097. package/dist/src/routes/main/settings/security/page.js +1 -2
  1098. package/dist/src/tests/setup.d.ts +2 -0
  1099. package/dist/src/tests/setup.d.ts.map +1 -0
  1100. package/dist/src/tests/setup.js +1 -0
  1101. package/dist/src/tiptap.css +28 -0
  1102. package/dist/src/views/admin/layouts/admin-layout.d.ts +6 -9
  1103. package/dist/src/views/admin/layouts/admin-layout.d.ts.map +1 -1
  1104. package/dist/src/views/admin/layouts/admin-layout.js +1 -2
  1105. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-admin.d.ts +9 -12
  1106. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-admin.d.ts.map +1 -1
  1107. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-admin.js +1 -2
  1108. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.d.ts +5 -0
  1109. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.d.ts.map +1 -0
  1110. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.js +1 -0
  1111. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.d.ts +5 -0
  1112. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.d.ts.map +1 -0
  1113. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.js +1 -0
  1114. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.d.ts +4 -7
  1115. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.d.ts.map +1 -1
  1116. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.js +1 -2
  1117. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.d.ts +3 -6
  1118. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.d.ts.map +1 -1
  1119. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.js +1 -2
  1120. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.d.ts +4 -7
  1121. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.d.ts.map +1 -1
  1122. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.js +1 -2
  1123. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.d.ts +4 -7
  1124. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.d.ts.map +1 -1
  1125. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.js +1 -2
  1126. package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.d.ts +4 -6
  1127. package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.d.ts.map +1 -1
  1128. package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.js +1 -2
  1129. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.d.ts +8 -11
  1130. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.d.ts.map +1 -1
  1131. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.js +1 -2
  1132. package/dist/src/views/admin/layouts/sidebar/nav/item.d.ts +7 -9
  1133. package/dist/src/views/admin/layouts/sidebar/nav/item.d.ts.map +1 -1
  1134. package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -2
  1135. package/dist/src/views/admin/layouts/sidebar/nav/nav.d.ts +4 -7
  1136. package/dist/src/views/admin/layouts/sidebar/nav/nav.d.ts.map +1 -1
  1137. package/dist/src/views/admin/layouts/sidebar/nav/nav.js +1 -2
  1138. package/dist/src/views/admin/layouts/sidebar/sidebar.d.ts +2 -5
  1139. package/dist/src/views/admin/layouts/sidebar/sidebar.d.ts.map +1 -1
  1140. package/dist/src/views/admin/layouts/sidebar/sidebar.js +1 -2
  1141. package/dist/src/views/admin/layouts/sidebar/sign-out.d.ts +2 -5
  1142. package/dist/src/views/admin/layouts/sidebar/sign-out.d.ts.map +1 -1
  1143. package/dist/src/views/admin/layouts/sidebar/sign-out.js +1 -2
  1144. package/dist/src/views/admin/layouts/user-bar/client.d.ts +5 -8
  1145. package/dist/src/views/admin/layouts/user-bar/client.d.ts.map +1 -1
  1146. package/dist/src/views/admin/layouts/user-bar/client.js +1 -2
  1147. package/dist/src/views/admin/layouts/user-bar/user-bar.d.ts +2 -5
  1148. package/dist/src/views/admin/layouts/user-bar/user-bar.d.ts.map +1 -1
  1149. package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -2
  1150. package/dist/src/views/admin/sign-in/sign-in-admin-view.d.ts +1 -4
  1151. package/dist/src/views/admin/sign-in/sign-in-admin-view.d.ts.map +1 -1
  1152. package/dist/src/views/admin/sign-in/sign-in-admin-view.js +1 -2
  1153. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.d.ts +3 -6
  1154. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.d.ts.map +1 -1
  1155. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -2
  1156. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.server.d.ts +4 -0
  1157. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.server.d.ts.map +1 -0
  1158. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.server.js +1 -0
  1159. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts +3 -6
  1160. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts.map +1 -1
  1161. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -2
  1162. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.d.ts +3 -6
  1163. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.d.ts.map +1 -1
  1164. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.js +1 -2
  1165. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.d.ts +5 -8
  1166. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.d.ts.map +1 -1
  1167. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.js +1 -2
  1168. package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts +11 -0
  1169. package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts.map +1 -0
  1170. package/dist/src/views/admin/views/core/advanced/search/collection-status.js +1 -0
  1171. package/dist/src/views/admin/views/core/advanced/search/collections-table.d.ts +6 -0
  1172. package/dist/src/views/admin/views/core/advanced/search/collections-table.d.ts.map +1 -0
  1173. package/dist/src/views/admin/views/core/advanced/search/collections-table.js +1 -0
  1174. package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts +3 -0
  1175. package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts.map +1 -0
  1176. package/dist/src/views/admin/views/core/advanced/search/cron-warning.js +1 -0
  1177. package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.d.ts +10 -0
  1178. package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.d.ts.map +1 -0
  1179. package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.js +1 -0
  1180. package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts +6 -0
  1181. package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts.map +1 -0
  1182. package/dist/src/views/admin/views/core/advanced/search/reindex-action.js +1 -0
  1183. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts +3 -0
  1184. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts.map +1 -0
  1185. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.js +1 -0
  1186. package/dist/src/views/admin/views/core/advanced/search/search-view.d.ts +7 -0
  1187. package/dist/src/views/admin/views/core/advanced/search/search-view.d.ts.map +1 -0
  1188. package/dist/src/views/admin/views/core/advanced/search/search-view.js +1 -0
  1189. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.d.ts +1 -4
  1190. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.d.ts.map +1 -1
  1191. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js +1 -2
  1192. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.server.d.ts +6 -0
  1193. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.server.d.ts.map +1 -0
  1194. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.server.js +1 -0
  1195. package/dist/src/views/admin/views/core/dashboard/send-notification/send-notification.d.ts +2 -5
  1196. package/dist/src/views/admin/views/core/dashboard/send-notification/send-notification.d.ts.map +1 -1
  1197. package/dist/src/views/admin/views/core/dashboard/send-notification/send-notification.js +1 -2
  1198. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.d.ts +1 -4
  1199. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.d.ts.map +1 -1
  1200. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -2
  1201. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.server.d.ts +2 -0
  1202. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.server.d.ts.map +1 -0
  1203. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.server.js +1 -0
  1204. package/dist/src/views/admin/views/core/debug/queue/queue-view.d.ts +1 -4
  1205. package/dist/src/views/admin/views/core/debug/queue/queue-view.d.ts.map +1 -1
  1206. package/dist/src/views/admin/views/core/debug/queue/queue-view.js +1 -2
  1207. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.d.ts +2 -5
  1208. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.d.ts.map +1 -1
  1209. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.js +1 -2
  1210. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts +16 -18
  1211. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts.map +1 -1
  1212. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -2
  1213. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.d.ts +2 -5
  1214. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.d.ts.map +1 -1
  1215. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.js +1 -2
  1216. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.d.ts +2 -5
  1217. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.d.ts.map +1 -1
  1218. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.js +1 -2
  1219. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.d.ts +28 -31
  1220. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.d.ts.map +1 -1
  1221. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -2
  1222. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.d.ts +3 -6
  1223. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.d.ts.map +1 -1
  1224. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.js +1 -2
  1225. package/dist/src/views/admin/views/core/staff/create/form.d.ts +3 -6
  1226. package/dist/src/views/admin/views/core/staff/create/form.d.ts.map +1 -1
  1227. package/dist/src/views/admin/views/core/staff/create/form.js +1 -2
  1228. package/dist/src/views/admin/views/core/staff/create/mutation-api.server.d.ts +14 -0
  1229. package/dist/src/views/admin/views/core/staff/create/mutation-api.server.d.ts.map +1 -0
  1230. package/dist/src/views/admin/views/core/staff/create/mutation-api.server.js +1 -0
  1231. package/dist/src/views/admin/views/core/staff/create/search.action.server.d.ts +8 -0
  1232. package/dist/src/views/admin/views/core/staff/create/search.action.server.d.ts.map +1 -0
  1233. package/dist/src/views/admin/views/core/staff/create/search.action.server.js +1 -0
  1234. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.d.ts +5 -7
  1235. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.d.ts.map +1 -1
  1236. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.js +1 -2
  1237. package/dist/src/views/admin/views/core/staff/edit/form.d.ts +21 -23
  1238. package/dist/src/views/admin/views/core/staff/edit/form.d.ts.map +1 -1
  1239. package/dist/src/views/admin/views/core/staff/edit/form.js +1 -2
  1240. package/dist/src/views/admin/views/core/staff/edit/mutation-api.server.d.ts +13 -0
  1241. package/dist/src/views/admin/views/core/staff/edit/mutation-api.server.d.ts.map +1 -0
  1242. package/dist/src/views/admin/views/core/staff/edit/mutation-api.server.js +1 -0
  1243. package/dist/src/views/admin/views/core/staff/selectable-card.d.ts +7 -9
  1244. package/dist/src/views/admin/views/core/staff/selectable-card.d.ts.map +1 -1
  1245. package/dist/src/views/admin/views/core/staff/selectable-card.js +1 -2
  1246. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.server.d.ts +11 -0
  1247. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.server.d.ts.map +1 -0
  1248. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.server.js +1 -0
  1249. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.d.ts +8 -11
  1250. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.d.ts.map +1 -1
  1251. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.js +1 -2
  1252. package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts +4 -6
  1253. package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts.map +1 -1
  1254. package/dist/src/views/admin/views/core/staff/table/staff-table.js +1 -2
  1255. package/dist/src/views/admin/views/core/staff/table/staff-user-format.d.ts +13 -15
  1256. package/dist/src/views/admin/views/core/staff/table/staff-user-format.d.ts.map +1 -1
  1257. package/dist/src/views/admin/views/core/staff/table/staff-user-format.js +1 -2
  1258. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.d.ts +2 -5
  1259. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.d.ts.map +1 -1
  1260. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.js +1 -2
  1261. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.d.ts +2 -5
  1262. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.d.ts.map +1 -1
  1263. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.js +1 -2
  1264. package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.d.ts +9 -0
  1265. package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.d.ts.map +1 -0
  1266. package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.js +1 -0
  1267. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts +5 -8
  1268. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts.map +1 -1
  1269. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.js +1 -2
  1270. package/dist/src/views/admin/views/core/system/files/files-table-view.d.ts +3 -6
  1271. package/dist/src/views/admin/views/core/system/files/files-table-view.d.ts.map +1 -1
  1272. package/dist/src/views/admin/views/core/system/files/files-table-view.js +1 -2
  1273. package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts +13 -16
  1274. package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts.map +1 -1
  1275. package/dist/src/views/admin/views/core/system/integrations/integration-card.js +1 -2
  1276. package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts +2 -5
  1277. package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts.map +1 -1
  1278. package/dist/src/views/admin/views/core/system/integrations/integrations-view.js +1 -2
  1279. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts +1 -4
  1280. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts.map +1 -1
  1281. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.js +1 -2
  1282. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.server.d.ts +12 -0
  1283. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.server.d.ts.map +1 -0
  1284. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.server.js +1 -0
  1285. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts +1 -4
  1286. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts.map +1 -1
  1287. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.js +1 -2
  1288. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts +13 -16
  1289. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts.map +1 -1
  1290. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.js +1 -2
  1291. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts +1 -4
  1292. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts.map +1 -1
  1293. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.js +1 -2
  1294. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts +1 -4
  1295. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts.map +1 -1
  1296. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.js +1 -2
  1297. package/dist/src/views/admin/views/core/test.d.ts +1 -4
  1298. package/dist/src/views/admin/views/core/test.d.ts.map +1 -1
  1299. package/dist/src/views/admin/views/core/test.js +1 -4
  1300. package/dist/src/views/admin/views/core/users/actions/create/content.d.ts +1 -4
  1301. package/dist/src/views/admin/views/core/users/actions/create/content.d.ts.map +1 -1
  1302. package/dist/src/views/admin/views/core/users/actions/create/content.js +1 -2
  1303. package/dist/src/views/admin/views/core/users/actions/create/create.d.ts +1 -4
  1304. package/dist/src/views/admin/views/core/users/actions/create/create.d.ts.map +1 -1
  1305. package/dist/src/views/admin/views/core/users/actions/create/create.js +1 -2
  1306. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.server.d.ts +14 -0
  1307. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.server.d.ts.map +1 -0
  1308. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.server.js +1 -0
  1309. package/dist/src/views/admin/views/core/users/actions/create/use-form.d.ts +13 -16
  1310. package/dist/src/views/admin/views/core/users/actions/create/use-form.d.ts.map +1 -1
  1311. package/dist/src/views/admin/views/core/users/actions/create/use-form.js +1 -2
  1312. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.server.d.ts +11 -0
  1313. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.server.d.ts.map +1 -0
  1314. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.server.js +1 -0
  1315. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.d.ts +4 -7
  1316. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.d.ts.map +1 -1
  1317. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.js +1 -2
  1318. package/dist/src/views/admin/views/core/users/actions.d.ts +3 -6
  1319. package/dist/src/views/admin/views/core/users/actions.d.ts.map +1 -1
  1320. package/dist/src/views/admin/views/core/users/actions.js +1 -2
  1321. package/dist/src/views/admin/views/core/users/roles/actions/actions.d.ts +3 -0
  1322. package/dist/src/views/admin/views/core/users/roles/actions/actions.d.ts.map +1 -0
  1323. package/dist/src/views/admin/views/core/users/roles/actions/actions.js +1 -0
  1324. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.d.ts +15 -0
  1325. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.d.ts.map +1 -0
  1326. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.js +1 -0
  1327. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.d.ts +11 -0
  1328. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.d.ts.map +1 -0
  1329. package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.js +1 -0
  1330. package/dist/src/views/admin/views/core/users/roles/roles-admin-view.d.ts +2 -5
  1331. package/dist/src/views/admin/views/core/users/roles/roles-admin-view.d.ts.map +1 -1
  1332. package/dist/src/views/admin/views/core/users/roles/roles-admin-view.js +1 -2
  1333. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.d.ts +13 -0
  1334. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.d.ts.map +1 -0
  1335. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.js +1 -0
  1336. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.d.ts +9 -0
  1337. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.d.ts.map +1 -0
  1338. package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.js +1 -0
  1339. package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.d.ts +7 -0
  1340. package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.d.ts.map +1 -0
  1341. package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.js +1 -0
  1342. package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.d.ts +22 -0
  1343. package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.d.ts.map +1 -0
  1344. package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.js +1 -0
  1345. package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.d.ts +10 -0
  1346. package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.d.ts.map +1 -0
  1347. package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.js +1 -0
  1348. package/dist/src/views/admin/views/core/users/search-roles.action.server.d.ts +3 -0
  1349. package/dist/src/views/admin/views/core/users/search-roles.action.server.d.ts.map +1 -0
  1350. package/dist/src/views/admin/views/core/users/search-roles.action.server.js +1 -0
  1351. package/dist/src/views/admin/views/core/users/show/edit-buttons.d.ts +2 -5
  1352. package/dist/src/views/admin/views/core/users/show/edit-buttons.d.ts.map +1 -1
  1353. package/dist/src/views/admin/views/core/users/show/edit-buttons.js +1 -2
  1354. package/dist/src/views/admin/views/core/users/show/edit-field.d.ts +10 -13
  1355. package/dist/src/views/admin/views/core/users/show/edit-field.d.ts.map +1 -1
  1356. package/dist/src/views/admin/views/core/users/show/edit-field.js +1 -2
  1357. package/dist/src/views/admin/views/core/users/show/edit-name-code.d.ts +3 -6
  1358. package/dist/src/views/admin/views/core/users/show/edit-name-code.d.ts.map +1 -1
  1359. package/dist/src/views/admin/views/core/users/show/edit-name-code.js +1 -2
  1360. package/dist/src/views/admin/views/core/users/show/mutation-api.server.d.ts +19 -0
  1361. package/dist/src/views/admin/views/core/users/show/mutation-api.server.d.ts.map +1 -0
  1362. package/dist/src/views/admin/views/core/users/show/mutation-api.server.js +1 -0
  1363. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts +5 -8
  1364. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts.map +1 -1
  1365. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.js +1 -2
  1366. package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts +6 -9
  1367. package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts.map +1 -1
  1368. package/dist/src/views/admin/views/core/users/show/roles/roles.js +1 -2
  1369. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.server.d.ts +10 -0
  1370. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.server.d.ts.map +1 -0
  1371. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.server.js +1 -0
  1372. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.server.d.ts +13 -0
  1373. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.server.d.ts.map +1 -0
  1374. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.server.js +1 -0
  1375. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts +2 -5
  1376. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts.map +1 -1
  1377. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.js +1 -2
  1378. package/dist/src/views/admin/views/core/users/show/tabs.d.ts +5 -0
  1379. package/dist/src/views/admin/views/core/users/show/tabs.d.ts.map +1 -0
  1380. package/dist/src/views/admin/views/core/users/show/tabs.js +1 -0
  1381. package/dist/src/views/admin/views/core/users/users-admin-view.d.ts +2 -5
  1382. package/dist/src/views/admin/views/core/users/users-admin-view.d.ts.map +1 -1
  1383. package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -2
  1384. package/dist/src/views/auth/password-reset/change-password-form/form.d.ts +3 -6
  1385. package/dist/src/views/auth/password-reset/change-password-form/form.d.ts.map +1 -1
  1386. package/dist/src/views/auth/password-reset/change-password-form/form.js +1 -2
  1387. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.server.d.ts +6 -0
  1388. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.server.d.ts.map +1 -0
  1389. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.server.js +1 -0
  1390. package/dist/src/views/auth/password-reset/change-password-form/use-form.d.ts +8 -11
  1391. package/dist/src/views/auth/password-reset/change-password-form/use-form.d.ts.map +1 -1
  1392. package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -2
  1393. package/dist/src/views/auth/password-reset/form/form.d.ts +4 -7
  1394. package/dist/src/views/auth/password-reset/form/form.d.ts.map +1 -1
  1395. package/dist/src/views/auth/password-reset/form/form.js +1 -2
  1396. package/dist/src/views/auth/password-reset/form/mutation-api.server.d.ts +7 -0
  1397. package/dist/src/views/auth/password-reset/form/mutation-api.server.d.ts.map +1 -0
  1398. package/dist/src/views/auth/password-reset/form/mutation-api.server.js +1 -0
  1399. package/dist/src/views/auth/password-reset/form/use-form.d.ts +9 -12
  1400. package/dist/src/views/auth/password-reset/form/use-form.d.ts.map +1 -1
  1401. package/dist/src/views/auth/password-reset/form/use-form.js +1 -2
  1402. package/dist/src/views/auth/password-reset/password-reset-view.d.ts +5 -8
  1403. package/dist/src/views/auth/password-reset/password-reset-view.d.ts.map +1 -1
  1404. package/dist/src/views/auth/password-reset/password-reset-view.js +1 -2
  1405. package/dist/src/views/auth/settings/devices/device-item.d.ts +5 -0
  1406. package/dist/src/views/auth/settings/devices/device-item.d.ts.map +1 -0
  1407. package/dist/src/views/auth/settings/devices/device-item.js +1 -0
  1408. package/dist/src/views/auth/settings/devices/devices.d.ts +2 -0
  1409. package/dist/src/views/auth/settings/devices/devices.d.ts.map +1 -0
  1410. package/dist/src/views/auth/settings/devices/devices.js +1 -0
  1411. package/dist/src/views/auth/settings/devices/revoke-action.server.d.ts +9 -0
  1412. package/dist/src/views/auth/settings/devices/revoke-action.server.d.ts.map +1 -0
  1413. package/dist/src/views/auth/settings/devices/revoke-action.server.js +1 -0
  1414. package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts +5 -0
  1415. package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts.map +1 -0
  1416. package/dist/src/views/auth/settings/devices/revoke-device-button.js +1 -0
  1417. package/dist/src/views/auth/settings/layout.d.ts +2 -5
  1418. package/dist/src/views/auth/settings/layout.d.ts.map +1 -1
  1419. package/dist/src/views/auth/settings/layout.js +1 -2
  1420. package/dist/src/views/auth/settings/nav.d.ts +1 -4
  1421. package/dist/src/views/auth/settings/nav.d.ts.map +1 -1
  1422. package/dist/src/views/auth/settings/nav.js +1 -2
  1423. package/dist/src/views/auth/settings/overview/overview.d.ts +1 -4
  1424. package/dist/src/views/auth/settings/overview/overview.d.ts.map +1 -1
  1425. package/dist/src/views/auth/settings/overview/overview.js +1 -2
  1426. package/dist/src/views/auth/settings/security/security.d.ts +1 -4
  1427. package/dist/src/views/auth/settings/security/security.d.ts.map +1 -1
  1428. package/dist/src/views/auth/settings/security/security.js +1 -2
  1429. package/dist/src/views/auth/settings/shell.d.ts +2 -5
  1430. package/dist/src/views/auth/settings/shell.d.ts.map +1 -1
  1431. package/dist/src/views/auth/settings/shell.js +1 -2
  1432. package/dist/src/views/auth/sign-in/form/form.d.ts +3 -6
  1433. package/dist/src/views/auth/sign-in/form/form.d.ts.map +1 -1
  1434. package/dist/src/views/auth/sign-in/form/form.js +1 -2
  1435. package/dist/src/views/auth/sign-in/form/mutation-api.server.d.ts +10 -0
  1436. package/dist/src/views/auth/sign-in/form/mutation-api.server.d.ts.map +1 -0
  1437. package/dist/src/views/auth/sign-in/form/mutation-api.server.js +1 -0
  1438. package/dist/src/views/auth/sign-in/form/use-form.d.ts +13 -16
  1439. package/dist/src/views/auth/sign-in/form/use-form.d.ts.map +1 -1
  1440. package/dist/src/views/auth/sign-in/form/use-form.js +1 -2
  1441. package/dist/src/views/auth/sign-in/sign-in-view.d.ts +1 -4
  1442. package/dist/src/views/auth/sign-in/sign-in-view.d.ts.map +1 -1
  1443. package/dist/src/views/auth/sign-in/sign-in-view.js +1 -2
  1444. package/dist/src/views/auth/sign-up/components/password-input.d.ts +3 -6
  1445. package/dist/src/views/auth/sign-up/components/password-input.d.ts.map +1 -1
  1446. package/dist/src/views/auth/sign-up/components/password-input.js +1 -2
  1447. package/dist/src/views/auth/sign-up/email-confirmation-view.d.ts +2 -5
  1448. package/dist/src/views/auth/sign-up/email-confirmation-view.d.ts.map +1 -1
  1449. package/dist/src/views/auth/sign-up/email-confirmation-view.js +1 -2
  1450. package/dist/src/views/auth/sign-up/form/form.d.ts +5 -8
  1451. package/dist/src/views/auth/sign-up/form/form.d.ts.map +1 -1
  1452. package/dist/src/views/auth/sign-up/form/form.js +1 -2
  1453. package/dist/src/views/auth/sign-up/form/mutation-api.server.d.ts +16 -0
  1454. package/dist/src/views/auth/sign-up/form/mutation-api.server.d.ts.map +1 -0
  1455. package/dist/src/views/auth/sign-up/form/mutation-api.server.js +1 -0
  1456. package/dist/src/views/auth/sign-up/form/use-form.d.ts +18 -21
  1457. package/dist/src/views/auth/sign-up/form/use-form.d.ts.map +1 -1
  1458. package/dist/src/views/auth/sign-up/form/use-form.js +1 -2
  1459. package/dist/src/views/auth/sign-up/sign-up-view.d.ts +1 -4
  1460. package/dist/src/views/auth/sign-up/sign-up-view.d.ts.map +1 -1
  1461. package/dist/src/views/auth/sign-up/sign-up-view.js +1 -2
  1462. package/dist/src/views/auth/sign-up/wrapper.d.ts +4 -7
  1463. package/dist/src/views/auth/sign-up/wrapper.d.ts.map +1 -1
  1464. package/dist/src/views/auth/sign-up/wrapper.js +1 -2
  1465. package/dist/src/views/auth/sso/buttons/client.d.ts +3 -6
  1466. package/dist/src/views/auth/sso/buttons/client.d.ts.map +1 -1
  1467. package/dist/src/views/auth/sso/buttons/client.js +1 -2
  1468. package/dist/src/views/auth/sso/buttons/mutation-api.server.d.ts +4 -0
  1469. package/dist/src/views/auth/sso/buttons/mutation-api.server.d.ts.map +1 -0
  1470. package/dist/src/views/auth/sso/buttons/mutation-api.server.js +1 -0
  1471. package/dist/src/views/auth/sso/buttons/sso-buttons.d.ts +2 -5
  1472. package/dist/src/views/auth/sso/buttons/sso-buttons.d.ts.map +1 -1
  1473. package/dist/src/views/auth/sso/buttons/sso-buttons.js +1 -2
  1474. package/dist/src/views/auth/sso/callback/callback-sso-view.d.ts +3 -6
  1475. package/dist/src/views/auth/sso/callback/callback-sso-view.d.ts.map +1 -1
  1476. package/dist/src/views/auth/sso/callback/callback-sso-view.js +1 -2
  1477. package/dist/src/views/auth/sso/callback/client/client.d.ts +6 -9
  1478. package/dist/src/views/auth/sso/callback/client/client.d.ts.map +1 -1
  1479. package/dist/src/views/auth/sso/callback/client/client.js +1 -2
  1480. package/dist/src/views/auth/sso/callback/client/mutation-api.server.d.ts +8 -0
  1481. package/dist/src/views/auth/sso/callback/client/mutation-api.server.d.ts.map +1 -0
  1482. package/dist/src/views/auth/sso/callback/client/mutation-api.server.js +1 -0
  1483. package/dist/src/views/breadcrumb/breadcrumb-main.d.ts +5 -8
  1484. package/dist/src/views/breadcrumb/breadcrumb-main.d.ts.map +1 -1
  1485. package/dist/src/views/breadcrumb/breadcrumb-main.js +1 -2
  1486. package/dist/src/views/breadcrumb/breadcrumb-render.d.ts +3 -6
  1487. package/dist/src/views/breadcrumb/breadcrumb-render.d.ts.map +1 -1
  1488. package/dist/src/views/breadcrumb/breadcrumb-render.js +1 -2
  1489. package/dist/src/views/breadcrumb/crumb.d.ts +7 -10
  1490. package/dist/src/views/breadcrumb/crumb.d.ts.map +1 -1
  1491. package/dist/src/views/breadcrumb/crumb.js +1 -2
  1492. package/dist/src/views/breadcrumb/resolve-main-breadcrumb.d.ts +2 -5
  1493. package/dist/src/views/breadcrumb/resolve-main-breadcrumb.d.ts.map +1 -1
  1494. package/dist/src/views/breadcrumb/resolve-main-breadcrumb.js +1 -2
  1495. package/dist/src/views/error/back-button.d.ts +3 -6
  1496. package/dist/src/views/error/back-button.d.ts.map +1 -1
  1497. package/dist/src/views/error/back-button.js +1 -2
  1498. package/dist/src/views/error/error-view.d.ts +5 -8
  1499. package/dist/src/views/error/error-view.d.ts.map +1 -1
  1500. package/dist/src/views/error/error-view.js +1 -2
  1501. package/dist/src/views/error/global-error-view.d.ts +4 -7
  1502. package/dist/src/views/error/global-error-view.d.ts.map +1 -1
  1503. package/dist/src/views/error/global-error-view.js +1 -2
  1504. package/dist/src/views/files/actions/delete-action.server.d.ts +9 -0
  1505. package/dist/src/views/files/actions/delete-action.server.d.ts.map +1 -0
  1506. package/dist/src/views/files/actions/delete-action.server.js +1 -0
  1507. package/dist/src/views/files/actions/file-row-actions.d.ts +3 -6
  1508. package/dist/src/views/files/actions/file-row-actions.d.ts.map +1 -1
  1509. package/dist/src/views/files/actions/file-row-actions.js +1 -2
  1510. package/dist/src/views/files/my-files-table-view.d.ts +3 -6
  1511. package/dist/src/views/files/my-files-table-view.d.ts.map +1 -1
  1512. package/dist/src/views/files/my-files-table-view.js +1 -2
  1513. package/dist/src/views/layouts/provider.d.ts +10 -9
  1514. package/dist/src/views/layouts/provider.d.ts.map +1 -1
  1515. package/dist/src/views/layouts/provider.js +1 -2
  1516. package/dist/src/views/layouts/rate-limit-listener.d.ts +2 -0
  1517. package/dist/src/views/layouts/rate-limit-listener.d.ts.map +1 -0
  1518. package/dist/src/views/layouts/rate-limit-listener.js +1 -0
  1519. package/dist/src/views/layouts/root-layout.d.ts +11 -14
  1520. package/dist/src/views/layouts/root-layout.d.ts.map +1 -1
  1521. package/dist/src/views/layouts/root-layout.js +1 -2
  1522. package/dist/src/views/layouts/theme/header/header.d.ts +5 -8
  1523. package/dist/src/views/layouts/theme/header/header.d.ts.map +1 -1
  1524. package/dist/src/views/layouts/theme/header/header.js +1 -2
  1525. package/dist/src/views/layouts/theme/header/user/auth/auth.d.ts +1 -4
  1526. package/dist/src/views/layouts/theme/header/user/auth/auth.d.ts.map +1 -1
  1527. package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -2
  1528. package/dist/src/views/layouts/theme/header/user/auth/client.d.ts +3 -6
  1529. package/dist/src/views/layouts/theme/header/user/auth/client.d.ts.map +1 -1
  1530. package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -2
  1531. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.server.d.ts +4 -0
  1532. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.server.d.ts.map +1 -0
  1533. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.server.js +1 -0
  1534. package/dist/src/views/layouts/theme/header/user/user.d.ts +1 -4
  1535. package/dist/src/views/layouts/theme/header/user/user.d.ts.map +1 -1
  1536. package/dist/src/views/layouts/theme/header/user/user.js +1 -2
  1537. package/dist/src/views/layouts/theme/layout.d.ts +6 -9
  1538. package/dist/src/views/layouts/theme/layout.d.ts.map +1 -1
  1539. package/dist/src/views/layouts/theme/layout.js +1 -2
  1540. package/dist/src/views/layouts/theme/notification-listener.d.ts +1 -4
  1541. package/dist/src/views/layouts/theme/notification-listener.d.ts.map +1 -1
  1542. package/dist/src/views/layouts/theme/notification-listener.js +1 -2
  1543. package/dist/src/views/layouts/theme/web-socket-auth-sync.d.ts +2 -5
  1544. package/dist/src/views/layouts/theme/web-socket-auth-sync.d.ts.map +1 -1
  1545. package/dist/src/views/layouts/theme/web-socket-auth-sync.js +1 -2
  1546. package/dist/src/views/search/discover-view.d.ts +2 -0
  1547. package/dist/src/views/search/discover-view.d.ts.map +1 -0
  1548. package/dist/src/views/search/discover-view.js +1 -0
  1549. package/dist/src/views/search/registry.d.ts +9 -0
  1550. package/dist/src/views/search/registry.d.ts.map +1 -0
  1551. package/dist/src/views/search/registry.js +1 -0
  1552. package/dist/src/views/search/search-controls.d.ts +8 -0
  1553. package/dist/src/views/search/search-controls.d.ts.map +1 -0
  1554. package/dist/src/views/search/search-controls.js +1 -0
  1555. package/dist/src/views/search/search-feed.d.ts +17 -0
  1556. package/dist/src/views/search/search-feed.d.ts.map +1 -0
  1557. package/dist/src/views/search/search-feed.js +1 -0
  1558. package/dist/src/views/search/search-view.d.ts +4 -0
  1559. package/dist/src/views/search/search-view.d.ts.map +1 -0
  1560. package/dist/src/views/search/search-view.js +1 -0
  1561. package/dist/src/views/search/types.d.ts +34 -0
  1562. package/dist/src/views/search/types.d.ts.map +1 -0
  1563. package/dist/src/views/search/types.js +1 -0
  1564. package/dist/src/vitnode.config.d.ts +79 -86
  1565. package/dist/src/vitnode.config.d.ts.map +1 -1
  1566. package/dist/src/vitnode.config.js +1 -2
  1567. package/dist/src/ws/handle.d.ts +4 -7
  1568. package/dist/src/ws/handle.d.ts.map +1 -1
  1569. package/dist/src/ws/handle.js +1 -2
  1570. package/dist/src/ws/manager.d.ts +11 -14
  1571. package/dist/src/ws/manager.d.ts.map +1 -1
  1572. package/dist/src/ws/manager.js +1 -2
  1573. package/dist/src/ws/notifications.d.ts +6 -10
  1574. package/dist/src/ws/notifications.d.ts.map +1 -1
  1575. package/dist/src/ws/notifications.js +1 -2
  1576. package/dist/src/ws/provider.d.ts +8 -10
  1577. package/dist/src/ws/provider.d.ts.map +1 -1
  1578. package/dist/src/ws/provider.js +1 -2
  1579. package/dist/src/ws/registry.d.ts +16 -19
  1580. package/dist/src/ws/registry.d.ts.map +1 -1
  1581. package/dist/src/ws/registry.js +1 -2
  1582. package/dist/src/ws/types.d.ts +17 -20
  1583. package/dist/src/ws/types.d.ts.map +1 -1
  1584. package/dist/src/ws/types.js +1 -2
  1585. package/dist/src/ws/use-websocket.d.ts +6 -9
  1586. package/dist/src/ws/use-websocket.d.ts.map +1 -1
  1587. package/dist/src/ws/use-websocket.js +1 -2
  1588. package/dist/tsconfig.build.tsbuildinfo +1 -0
  1589. package/dist/tsup.config.d.ts +3 -0
  1590. package/dist/tsup.config.d.ts.map +1 -0
  1591. package/dist/vitest.config.d.ts +3 -0
  1592. package/dist/vitest.config.d.ts.map +1 -0
  1593. package/package.json +42 -38
  1594. package/src/locales/api/en.json +19 -0
  1595. package/src/locales/api/index.ts +15 -0
  1596. package/src/locales/en.json +165 -27
  1597. package/src/locales/index.ts +17 -0
  1598. package/src/routes/admin/core/advanced/cron/page.tsx +10 -1
  1599. package/src/routes/admin/core/advanced/search/page.tsx +50 -0
  1600. package/src/routes/admin/core/users/[id]/page.tsx +1 -1
  1601. package/src/routes/admin/core/users/roles/page.tsx +13 -2
  1602. package/src/routes/breadcrumb/admin/core/advanced/cron/page.tsx +5 -0
  1603. package/src/routes/breadcrumb/admin/core/advanced/queue/page.tsx +5 -0
  1604. package/src/routes/breadcrumb/admin/core/advanced/search/page.tsx +5 -0
  1605. package/src/routes/breadcrumb/admin/core/page.tsx +5 -0
  1606. package/src/routes/breadcrumb/admin/core/system/files/page.tsx +5 -0
  1607. package/src/routes/breadcrumb/admin/core/system/integrations/page.tsx +5 -0
  1608. package/src/routes/breadcrumb/admin/core/users/page.tsx +5 -0
  1609. package/src/routes/breadcrumb/admin/core/users/roles/page.tsx +5 -0
  1610. package/src/routes/breadcrumb/main/discover/page.tsx +14 -0
  1611. package/src/routes/breadcrumb/main/search/page.tsx +11 -0
  1612. package/src/routes/breadcrumb/main/settings/devices/page.tsx +17 -0
  1613. package/src/routes/main/discover/page.tsx +41 -0
  1614. package/src/routes/main/search/page.tsx +43 -0
  1615. package/src/routes/main/settings/devices/page.tsx +15 -0
  1616. package/dist/src/api/adapters/sso/discord.js.map +0 -1
  1617. package/dist/src/api/adapters/sso/facebook.js.map +0 -1
  1618. package/dist/src/api/adapters/sso/google.js.map +0 -1
  1619. package/dist/src/api/adapters/storage/local.js.map +0 -1
  1620. package/dist/src/api/config.js.map +0 -1
  1621. package/dist/src/api/lib/cache-client.js.map +0 -1
  1622. package/dist/src/api/lib/cache.js.map +0 -1
  1623. package/dist/src/api/lib/check-plugin-id.js.map +0 -1
  1624. package/dist/src/api/lib/check-staff-permission.js.map +0 -1
  1625. package/dist/src/api/lib/cron.js.map +0 -1
  1626. package/dist/src/api/lib/logger-middleware.js.map +0 -1
  1627. package/dist/src/api/lib/module.js.map +0 -1
  1628. package/dist/src/api/lib/permission-staff.js.map +0 -1
  1629. package/dist/src/api/lib/plugin.js.map +0 -1
  1630. package/dist/src/api/lib/queue.js.map +0 -1
  1631. package/dist/src/api/lib/resolve-role-names.js.map +0 -1
  1632. package/dist/src/api/lib/route.js.map +0 -1
  1633. package/dist/src/api/lib/staff-permission.js.map +0 -1
  1634. package/dist/src/api/lib/websocket.js.map +0 -1
  1635. package/dist/src/api/lib/with-pagination.js.map +0 -1
  1636. package/dist/src/api/middlewares/captcha.middleware.js.map +0 -1
  1637. package/dist/src/api/middlewares/cron-auth.middleware.js.map +0 -1
  1638. package/dist/src/api/middlewares/global.middleware.js.map +0 -1
  1639. package/dist/src/api/middlewares/plugin.middleware.js.map +0 -1
  1640. package/dist/src/api/middlewares/rate-limiter.middleware.js.map +0 -1
  1641. package/dist/src/api/models/device.js.map +0 -1
  1642. package/dist/src/api/models/email.js.map +0 -1
  1643. package/dist/src/api/models/password.js.map +0 -1
  1644. package/dist/src/api/models/queue.js.map +0 -1
  1645. package/dist/src/api/models/session-admin.js.map +0 -1
  1646. package/dist/src/api/models/session-cache.js.map +0 -1
  1647. package/dist/src/api/models/session.js.map +0 -1
  1648. package/dist/src/api/models/sso.js.map +0 -1
  1649. package/dist/src/api/models/storage.js.map +0 -1
  1650. package/dist/src/api/models/user/get-user-by-id.js.map +0 -1
  1651. package/dist/src/api/models/user/get-user-by-name-code.js.map +0 -1
  1652. package/dist/src/api/models/user/sign-in-with-passwords.js.map +0 -1
  1653. package/dist/src/api/models/user/sign-up.js.map +0 -1
  1654. package/dist/src/api/models/user.js.map +0 -1
  1655. package/dist/src/api/modules/admin/admin.module.js.map +0 -1
  1656. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js.map +0 -1
  1657. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js.map +0 -1
  1658. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js.map +0 -1
  1659. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js.map +0 -1
  1660. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.js.map +0 -1
  1661. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.js.map +0 -1
  1662. package/dist/src/api/modules/admin/debug/debug.admin.module.js.map +0 -1
  1663. package/dist/src/api/modules/admin/debug/routes/integrations.route.js.map +0 -1
  1664. package/dist/src/api/modules/admin/debug/routes/logs.route.js.map +0 -1
  1665. package/dist/src/api/modules/admin/debug/routes/queue.route.js.map +0 -1
  1666. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.js.map +0 -1
  1667. package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.js.map +0 -1
  1668. package/dist/src/api/modules/admin/files/files.admin.module.js.map +0 -1
  1669. package/dist/src/api/modules/admin/files/routes/delete.route.js.map +0 -1
  1670. package/dist/src/api/modules/admin/files/routes/download.route.js.map +0 -1
  1671. package/dist/src/api/modules/admin/files/routes/list.route.js.map +0 -1
  1672. package/dist/src/api/modules/admin/roles/roles.admin.module.js.map +0 -1
  1673. package/dist/src/api/modules/admin/roles/routes/list.route.js.map +0 -1
  1674. package/dist/src/api/modules/admin/roles/routes/show.route.js.map +0 -1
  1675. package/dist/src/api/modules/admin/routes/notifications.route.js.map +0 -1
  1676. package/dist/src/api/modules/admin/routes/session.route.js.map +0 -1
  1677. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.js.map +0 -1
  1678. package/dist/src/api/modules/admin/staff/lib/schema.js.map +0 -1
  1679. package/dist/src/api/modules/admin/staff/routes/admins.route.js.map +0 -1
  1680. package/dist/src/api/modules/admin/staff/routes/create.route.js.map +0 -1
  1681. package/dist/src/api/modules/admin/staff/routes/delete.route.js.map +0 -1
  1682. package/dist/src/api/modules/admin/staff/routes/moderators.route.js.map +0 -1
  1683. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.js.map +0 -1
  1684. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.js.map +0 -1
  1685. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.js.map +0 -1
  1686. package/dist/src/api/modules/admin/staff/staff.admin.module.js.map +0 -1
  1687. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.js.map +0 -1
  1688. package/dist/src/api/modules/admin/users/routes/create.route.js.map +0 -1
  1689. package/dist/src/api/modules/admin/users/routes/list.route.js.map +0 -1
  1690. package/dist/src/api/modules/admin/users/routes/show.route.js.map +0 -1
  1691. package/dist/src/api/modules/admin/users/routes/update.route.js.map +0 -1
  1692. package/dist/src/api/modules/admin/users/routes/users.route.js.map +0 -1
  1693. package/dist/src/api/modules/admin/users/routes/verify-email.route.js.map +0 -1
  1694. package/dist/src/api/modules/admin/users/users.admin.module.js.map +0 -1
  1695. package/dist/src/api/modules/cron/cron/clean.cron.js.map +0 -1
  1696. package/dist/src/api/modules/cron/cron.module.js.map +0 -1
  1697. package/dist/src/api/modules/cron/helpers/process-cron-jobs.js.map +0 -1
  1698. package/dist/src/api/modules/cron/routes/cron.route.js.map +0 -1
  1699. package/dist/src/api/modules/middleware/middleware.module.js.map +0 -1
  1700. package/dist/src/api/modules/middleware/route.js.map +0 -1
  1701. package/dist/src/api/modules/queue/cron/process-queue.cron.js.map +0 -1
  1702. package/dist/src/api/modules/queue/helpers/process-queue-tasks.js.map +0 -1
  1703. package/dist/src/api/modules/queue/queue.module.js.map +0 -1
  1704. package/dist/src/api/modules/queue/tasks/send-email.task.js.map +0 -1
  1705. package/dist/src/api/modules/users/avatar-color.js.map +0 -1
  1706. package/dist/src/api/modules/users/files/files.module.js.map +0 -1
  1707. package/dist/src/api/modules/users/files/routes/delete.route.js.map +0 -1
  1708. package/dist/src/api/modules/users/files/routes/download.route.js.map +0 -1
  1709. package/dist/src/api/modules/users/files/routes/list.route.js.map +0 -1
  1710. package/dist/src/api/modules/users/routes/change-password.route.js.map +0 -1
  1711. package/dist/src/api/modules/users/routes/permissions.route.js.map +0 -1
  1712. package/dist/src/api/modules/users/routes/reset-passowrd.route.js.map +0 -1
  1713. package/dist/src/api/modules/users/routes/session.route.js.map +0 -1
  1714. package/dist/src/api/modules/users/routes/sign-in.route.js.map +0 -1
  1715. package/dist/src/api/modules/users/routes/sign-out.route.js.map +0 -1
  1716. package/dist/src/api/modules/users/routes/sign-up.route.js.map +0 -1
  1717. package/dist/src/api/modules/users/routes/test.route.js.map +0 -1
  1718. package/dist/src/api/modules/users/sso/routes/callback.route.js.map +0 -1
  1719. package/dist/src/api/modules/users/sso/routes/create-url.route.js.map +0 -1
  1720. package/dist/src/api/modules/users/sso/sso.module.js.map +0 -1
  1721. package/dist/src/api/modules/users/users.module.js.map +0 -1
  1722. package/dist/src/api/plugin.js.map +0 -1
  1723. package/dist/src/components/avatar.js.map +0 -1
  1724. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js.map +0 -1
  1725. package/dist/src/components/confirm-action/content.js.map +0 -1
  1726. package/dist/src/components/date-format.js.map +0 -1
  1727. package/dist/src/components/files/file-preview.js.map +0 -1
  1728. package/dist/src/components/files/metadata-cell.js.map +0 -1
  1729. package/dist/src/components/form/auto-form.js.map +0 -1
  1730. package/dist/src/components/form/common/desc.js.map +0 -1
  1731. package/dist/src/components/form/common/label.js.map +0 -1
  1732. package/dist/src/components/form/fields/array.js.map +0 -1
  1733. package/dist/src/components/form/fields/checkbox.js.map +0 -1
  1734. package/dist/src/components/form/fields/combobox.js.map +0 -1
  1735. package/dist/src/components/form/fields/editor.js.map +0 -1
  1736. package/dist/src/components/form/fields/input.js.map +0 -1
  1737. package/dist/src/components/form/fields/radio-group.js.map +0 -1
  1738. package/dist/src/components/form/fields/select.js.map +0 -1
  1739. package/dist/src/components/form/fields/switch.js.map +0 -1
  1740. package/dist/src/components/form/fields/textarea.js.map +0 -1
  1741. package/dist/src/components/i18n-provider.js.map +0 -1
  1742. package/dist/src/components/logo-vitnode.js.map +0 -1
  1743. package/dist/src/components/role-format.js.map +0 -1
  1744. package/dist/src/components/staff-permission/provider.js.map +0 -1
  1745. package/dist/src/components/switchers/langs/language-switcher.js.map +0 -1
  1746. package/dist/src/components/switchers/themes/theme-switcher.js.map +0 -1
  1747. package/dist/src/components/table/content.js.map +0 -1
  1748. package/dist/src/components/table/data-table.js.map +0 -1
  1749. package/dist/src/components/table/filters.js.map +0 -1
  1750. package/dist/src/components/table/order-table-head.js.map +0 -1
  1751. package/dist/src/components/table/pagination.js.map +0 -1
  1752. package/dist/src/components/table/search.js.map +0 -1
  1753. package/dist/src/components/theme-provider.js.map +0 -1
  1754. package/dist/src/components/tiptap/extension.js.map +0 -1
  1755. package/dist/src/components/tiptap/toolbar/actions/alignment-action.js.map +0 -1
  1756. package/dist/src/components/tiptap/toolbar/actions/bold-action.js.map +0 -1
  1757. package/dist/src/components/tiptap/toolbar/actions/headings-action.js.map +0 -1
  1758. package/dist/src/components/tiptap/toolbar/actions/italic-action.js.map +0 -1
  1759. package/dist/src/components/tiptap/toolbar/actions/list-action.js.map +0 -1
  1760. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js.map +0 -1
  1761. package/dist/src/components/tiptap/toolbar/actions/underline-action.js.map +0 -1
  1762. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js.map +0 -1
  1763. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js.map +0 -1
  1764. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js.map +0 -1
  1765. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js.map +0 -1
  1766. package/dist/src/components/ui/accordion.js.map +0 -1
  1767. package/dist/src/components/ui/alert-dialog.js.map +0 -1
  1768. package/dist/src/components/ui/alert.js.map +0 -1
  1769. package/dist/src/components/ui/aspect-ratio.js.map +0 -1
  1770. package/dist/src/components/ui/attachment.js.map +0 -1
  1771. package/dist/src/components/ui/avatar.js.map +0 -1
  1772. package/dist/src/components/ui/badge.js.map +0 -1
  1773. package/dist/src/components/ui/breadcrumb.js.map +0 -1
  1774. package/dist/src/components/ui/button-client.js.map +0 -1
  1775. package/dist/src/components/ui/button-group.js.map +0 -1
  1776. package/dist/src/components/ui/button.js.map +0 -1
  1777. package/dist/src/components/ui/card.js.map +0 -1
  1778. package/dist/src/components/ui/carousel.js.map +0 -1
  1779. package/dist/src/components/ui/chart.js.map +0 -1
  1780. package/dist/src/components/ui/checkbox.js.map +0 -1
  1781. package/dist/src/components/ui/collapsible.js.map +0 -1
  1782. package/dist/src/components/ui/combobox.js.map +0 -1
  1783. package/dist/src/components/ui/command.js.map +0 -1
  1784. package/dist/src/components/ui/context-menu.js.map +0 -1
  1785. package/dist/src/components/ui/dialog.js.map +0 -1
  1786. package/dist/src/components/ui/direction.js.map +0 -1
  1787. package/dist/src/components/ui/drawer.js.map +0 -1
  1788. package/dist/src/components/ui/dropdown-menu.js.map +0 -1
  1789. package/dist/src/components/ui/editor-content.js.map +0 -1
  1790. package/dist/src/components/ui/editor.js.map +0 -1
  1791. package/dist/src/components/ui/empty.js.map +0 -1
  1792. package/dist/src/components/ui/field.js.map +0 -1
  1793. package/dist/src/components/ui/form.js.map +0 -1
  1794. package/dist/src/components/ui/header-content.js.map +0 -1
  1795. package/dist/src/components/ui/hover-card.js.map +0 -1
  1796. package/dist/src/components/ui/input-group.js.map +0 -1
  1797. package/dist/src/components/ui/input-otp.js.map +0 -1
  1798. package/dist/src/components/ui/input.js.map +0 -1
  1799. package/dist/src/components/ui/item.js.map +0 -1
  1800. package/dist/src/components/ui/kbd.js.map +0 -1
  1801. package/dist/src/components/ui/label.js.map +0 -1
  1802. package/dist/src/components/ui/loader.js.map +0 -1
  1803. package/dist/src/components/ui/menubar.js.map +0 -1
  1804. package/dist/src/components/ui/native-select.js.map +0 -1
  1805. package/dist/src/components/ui/navigation-menu.js.map +0 -1
  1806. package/dist/src/components/ui/pagination.js.map +0 -1
  1807. package/dist/src/components/ui/popover.js.map +0 -1
  1808. package/dist/src/components/ui/progress.js.map +0 -1
  1809. package/dist/src/components/ui/radio-group.js.map +0 -1
  1810. package/dist/src/components/ui/resizable.js.map +0 -1
  1811. package/dist/src/components/ui/scroll-area.js.map +0 -1
  1812. package/dist/src/components/ui/select.js.map +0 -1
  1813. package/dist/src/components/ui/separator.js.map +0 -1
  1814. package/dist/src/components/ui/sheet.js.map +0 -1
  1815. package/dist/src/components/ui/sidebar.js.map +0 -1
  1816. package/dist/src/components/ui/skeleton.js.map +0 -1
  1817. package/dist/src/components/ui/slider.js.map +0 -1
  1818. package/dist/src/components/ui/sonner.js.map +0 -1
  1819. package/dist/src/components/ui/spinner.js.map +0 -1
  1820. package/dist/src/components/ui/switch.js.map +0 -1
  1821. package/dist/src/components/ui/table.js.map +0 -1
  1822. package/dist/src/components/ui/tabs.js.map +0 -1
  1823. package/dist/src/components/ui/textarea.js.map +0 -1
  1824. package/dist/src/components/ui/toggle-group.js.map +0 -1
  1825. package/dist/src/components/ui/toggle.js.map +0 -1
  1826. package/dist/src/components/ui/tooltip.js.map +0 -1
  1827. package/dist/src/components/user-format.js.map +0 -1
  1828. package/dist/src/config.js.map +0 -1
  1829. package/dist/src/database/admins.js.map +0 -1
  1830. package/dist/src/database/cron.js.map +0 -1
  1831. package/dist/src/database/files.js.map +0 -1
  1832. package/dist/src/database/languages.js.map +0 -1
  1833. package/dist/src/database/logs.js.map +0 -1
  1834. package/dist/src/database/moderators.js.map +0 -1
  1835. package/dist/src/database/queue.js.map +0 -1
  1836. package/dist/src/database/roles.js.map +0 -1
  1837. package/dist/src/database/sessions.js.map +0 -1
  1838. package/dist/src/database/users.js.map +0 -1
  1839. package/dist/src/drizzle.config.js.map +0 -1
  1840. package/dist/src/emails/default-template.js.map +0 -1
  1841. package/dist/src/emails/reset-password.js.map +0 -1
  1842. package/dist/src/emails/test-email.js.map +0 -1
  1843. package/dist/src/emails/ui/button.js.map +0 -1
  1844. package/dist/src/emails/ui/card.js.map +0 -1
  1845. package/dist/src/hooks/use-before-unload.js.map +0 -1
  1846. package/dist/src/hooks/use-captcha.js.map +0 -1
  1847. package/dist/src/hooks/use-mobile.js.map +0 -1
  1848. package/dist/src/lib/api/get-middleware-api.js.map +0 -1
  1849. package/dist/src/lib/api/get-moderator-permissions-api.js.map +0 -1
  1850. package/dist/src/lib/api/get-next-cron-run-date.js.map +0 -1
  1851. package/dist/src/lib/api/get-queue-backoff-date.js.map +0 -1
  1852. package/dist/src/lib/api/get-session-admin-api.js.map +0 -1
  1853. package/dist/src/lib/api/get-session-api.js.map +0 -1
  1854. package/dist/src/lib/api/is-cron-stale.js.map +0 -1
  1855. package/dist/src/lib/api/resolve-queue-task-outcome.js.map +0 -1
  1856. package/dist/src/lib/api/should-cron-job-run.js.map +0 -1
  1857. package/dist/src/lib/api/upload.js.map +0 -1
  1858. package/dist/src/lib/api/validate-cron-schedule.js.map +0 -1
  1859. package/dist/src/lib/colors.js.map +0 -1
  1860. package/dist/src/lib/config.js.map +0 -1
  1861. package/dist/src/lib/ctrl-or-command-character.js.map +0 -1
  1862. package/dist/src/lib/fetcher/cookie-from-string-to-object.js.map +0 -1
  1863. package/dist/src/lib/fetcher/core.js.map +0 -1
  1864. package/dist/src/lib/fetcher/helpers-server.js.map +0 -1
  1865. package/dist/src/lib/fetcher/helpers.js.map +0 -1
  1866. package/dist/src/lib/fetcher-client.js.map +0 -1
  1867. package/dist/src/lib/fetcher.js.map +0 -1
  1868. package/dist/src/lib/format-bytes.js.map +0 -1
  1869. package/dist/src/lib/helpers/auto-form.js.map +0 -1
  1870. package/dist/src/lib/navigation.js.map +0 -1
  1871. package/dist/src/lib/plugin.js.map +0 -1
  1872. package/dist/src/lib/special-characters.js.map +0 -1
  1873. package/dist/src/lib/utils.js.map +0 -1
  1874. package/dist/src/routes/admin/core/advanced/cron/page.js.map +0 -1
  1875. package/dist/src/routes/admin/core/advanced/queue/page.js.map +0 -1
  1876. package/dist/src/routes/admin/core/debug/page.js.map +0 -1
  1877. package/dist/src/routes/admin/core/page.js.map +0 -1
  1878. package/dist/src/routes/admin/core/staff/admins/create/page.js.map +0 -1
  1879. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.js.map +0 -1
  1880. package/dist/src/routes/admin/core/staff/admins/page.js.map +0 -1
  1881. package/dist/src/routes/admin/core/staff/moderators/create/page.js.map +0 -1
  1882. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.js.map +0 -1
  1883. package/dist/src/routes/admin/core/staff/moderators/page.js.map +0 -1
  1884. package/dist/src/routes/admin/core/system/files/page.js.map +0 -1
  1885. package/dist/src/routes/admin/core/system/integrations/page.js.map +0 -1
  1886. package/dist/src/routes/admin/core/test/page.js.map +0 -1
  1887. package/dist/src/routes/admin/core/users/[id]/page.js.map +0 -1
  1888. package/dist/src/routes/admin/core/users/page.js.map +0 -1
  1889. package/dist/src/routes/admin/core/users/roles/page.js.map +0 -1
  1890. package/dist/src/routes/blank/test/page.js.map +0 -1
  1891. package/dist/src/routes/breadcrumb/admin/[...all]/page.js.map +0 -1
  1892. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.js.map +0 -1
  1893. package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.js.map +0 -1
  1894. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.js.map +0 -1
  1895. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.js.map +0 -1
  1896. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.js.map +0 -1
  1897. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.js.map +0 -1
  1898. package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.js.map +0 -1
  1899. package/dist/src/routes/breadcrumb/admin/default.js.map +0 -1
  1900. package/dist/src/routes/breadcrumb/main/[...rest]/page.js.map +0 -1
  1901. package/dist/src/routes/breadcrumb/main/default.js.map +0 -1
  1902. package/dist/src/routes/breadcrumb/main/page.js.map +0 -1
  1903. package/dist/src/routes/breadcrumb/main/settings/overview/page.js.map +0 -1
  1904. package/dist/src/routes/breadcrumb/main/settings/page.js.map +0 -1
  1905. package/dist/src/routes/breadcrumb/main/settings/security/page.js.map +0 -1
  1906. package/dist/src/routes/main/files/page.js.map +0 -1
  1907. package/dist/src/routes/main/login/page.js.map +0 -1
  1908. package/dist/src/routes/main/login/reset-password/page.js.map +0 -1
  1909. package/dist/src/routes/main/login/sso/[providerId]/page.js.map +0 -1
  1910. package/dist/src/routes/main/register/page.js.map +0 -1
  1911. package/dist/src/routes/main/settings/layout.js.map +0 -1
  1912. package/dist/src/routes/main/settings/overview/page.js.map +0 -1
  1913. package/dist/src/routes/main/settings/page.js.map +0 -1
  1914. package/dist/src/routes/main/settings/security/page.js.map +0 -1
  1915. package/dist/src/views/admin/layouts/admin-layout.js.map +0 -1
  1916. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-admin.js.map +0 -1
  1917. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.js.map +0 -1
  1918. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.js.map +0 -1
  1919. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.js.map +0 -1
  1920. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.js.map +0 -1
  1921. package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.js.map +0 -1
  1922. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.js.map +0 -1
  1923. package/dist/src/views/admin/layouts/sidebar/nav/item.js.map +0 -1
  1924. package/dist/src/views/admin/layouts/sidebar/nav/nav.js.map +0 -1
  1925. package/dist/src/views/admin/layouts/sidebar/sidebar.js.map +0 -1
  1926. package/dist/src/views/admin/layouts/sidebar/sign-out.js.map +0 -1
  1927. package/dist/src/views/admin/layouts/user-bar/client.js.map +0 -1
  1928. package/dist/src/views/admin/layouts/user-bar/user-bar.js.map +0 -1
  1929. package/dist/src/views/admin/sign-in/sign-in-admin-view.js.map +0 -1
  1930. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js.map +0 -1
  1931. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.d.ts +0 -7
  1932. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.d.ts.map +0 -1
  1933. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js +0 -2
  1934. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js.map +0 -1
  1935. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js.map +0 -1
  1936. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.js.map +0 -1
  1937. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.js.map +0 -1
  1938. package/dist/src/views/admin/views/core/dashboard/dashboard-admin-view.js.map +0 -1
  1939. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.d.ts +0 -9
  1940. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.d.ts.map +0 -1
  1941. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.js +0 -2
  1942. package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.js.map +0 -1
  1943. package/dist/src/views/admin/views/core/dashboard/send-notification/send-notification.js.map +0 -1
  1944. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js.map +0 -1
  1945. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts +0 -5
  1946. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts.map +0 -1
  1947. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +0 -2
  1948. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js.map +0 -1
  1949. package/dist/src/views/admin/views/core/debug/queue/queue-view.js.map +0 -1
  1950. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.js.map +0 -1
  1951. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js.map +0 -1
  1952. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-status.js.map +0 -1
  1953. package/dist/src/views/admin/views/core/debug/system-logs/badges/badge-type-log.js.map +0 -1
  1954. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js.map +0 -1
  1955. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.js.map +0 -1
  1956. package/dist/src/views/admin/views/core/staff/create/form.js.map +0 -1
  1957. package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts +0 -17
  1958. package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts.map +0 -1
  1959. package/dist/src/views/admin/views/core/staff/create/mutation-api.js +0 -2
  1960. package/dist/src/views/admin/views/core/staff/create/mutation-api.js.map +0 -1
  1961. package/dist/src/views/admin/views/core/staff/create/search.action.d.ts +0 -11
  1962. package/dist/src/views/admin/views/core/staff/create/search.action.d.ts.map +0 -1
  1963. package/dist/src/views/admin/views/core/staff/create/search.action.js +0 -2
  1964. package/dist/src/views/admin/views/core/staff/create/search.action.js.map +0 -1
  1965. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.js.map +0 -1
  1966. package/dist/src/views/admin/views/core/staff/edit/form.js.map +0 -1
  1967. package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts +0 -16
  1968. package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts.map +0 -1
  1969. package/dist/src/views/admin/views/core/staff/edit/mutation-api.js +0 -2
  1970. package/dist/src/views/admin/views/core/staff/edit/mutation-api.js.map +0 -1
  1971. package/dist/src/views/admin/views/core/staff/selectable-card.js.map +0 -1
  1972. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts +0 -14
  1973. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts.map +0 -1
  1974. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.js +0 -2
  1975. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.js.map +0 -1
  1976. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.js.map +0 -1
  1977. package/dist/src/views/admin/views/core/staff/table/staff-table.js.map +0 -1
  1978. package/dist/src/views/admin/views/core/staff/table/staff-user-format.js.map +0 -1
  1979. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.js.map +0 -1
  1980. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.js.map +0 -1
  1981. package/dist/src/views/admin/views/core/system/files/actions/delete-action.d.ts +0 -12
  1982. package/dist/src/views/admin/views/core/system/files/actions/delete-action.d.ts.map +0 -1
  1983. package/dist/src/views/admin/views/core/system/files/actions/delete-action.js +0 -2
  1984. package/dist/src/views/admin/views/core/system/files/actions/delete-action.js.map +0 -1
  1985. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.js.map +0 -1
  1986. package/dist/src/views/admin/views/core/system/files/files-table-view.js.map +0 -1
  1987. package/dist/src/views/admin/views/core/system/integrations/integration-card.js.map +0 -1
  1988. package/dist/src/views/admin/views/core/system/integrations/integrations-view.js.map +0 -1
  1989. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.js.map +0 -1
  1990. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts +0 -15
  1991. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts.map +0 -1
  1992. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.js +0 -2
  1993. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.js.map +0 -1
  1994. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.js.map +0 -1
  1995. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.js.map +0 -1
  1996. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.js.map +0 -1
  1997. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.js.map +0 -1
  1998. package/dist/src/views/admin/views/core/test.js.map +0 -1
  1999. package/dist/src/views/admin/views/core/users/actions/create/content.js.map +0 -1
  2000. package/dist/src/views/admin/views/core/users/actions/create/create.js.map +0 -1
  2001. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.d.ts +0 -17
  2002. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.d.ts.map +0 -1
  2003. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.js +0 -2
  2004. package/dist/src/views/admin/views/core/users/actions/create/mutation-api.js.map +0 -1
  2005. package/dist/src/views/admin/views/core/users/actions/create/use-form.js.map +0 -1
  2006. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts +0 -14
  2007. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts.map +0 -1
  2008. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.js +0 -2
  2009. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.js.map +0 -1
  2010. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.js.map +0 -1
  2011. package/dist/src/views/admin/views/core/users/actions.js.map +0 -1
  2012. package/dist/src/views/admin/views/core/users/roles/roles-admin-view.js.map +0 -1
  2013. package/dist/src/views/admin/views/core/users/search-roles.action.d.ts +0 -6
  2014. package/dist/src/views/admin/views/core/users/search-roles.action.d.ts.map +0 -1
  2015. package/dist/src/views/admin/views/core/users/search-roles.action.js +0 -2
  2016. package/dist/src/views/admin/views/core/users/search-roles.action.js.map +0 -1
  2017. package/dist/src/views/admin/views/core/users/show/edit-buttons.js.map +0 -1
  2018. package/dist/src/views/admin/views/core/users/show/edit-field.js.map +0 -1
  2019. package/dist/src/views/admin/views/core/users/show/edit-name-code.js.map +0 -1
  2020. package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts +0 -21
  2021. package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts.map +0 -1
  2022. package/dist/src/views/admin/views/core/users/show/mutation-api.js +0 -2
  2023. package/dist/src/views/admin/views/core/users/show/mutation-api.js.map +0 -1
  2024. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.js.map +0 -1
  2025. package/dist/src/views/admin/views/core/users/show/roles/roles.js.map +0 -1
  2026. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts +0 -13
  2027. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts.map +0 -1
  2028. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.js +0 -2
  2029. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.js.map +0 -1
  2030. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts +0 -15
  2031. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts.map +0 -1
  2032. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.js +0 -2
  2033. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.js.map +0 -1
  2034. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.js.map +0 -1
  2035. package/dist/src/views/admin/views/core/users/users-admin-view.js.map +0 -1
  2036. package/dist/src/views/auth/password-reset/change-password-form/form.js.map +0 -1
  2037. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.d.ts +0 -9
  2038. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.d.ts.map +0 -1
  2039. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.js +0 -2
  2040. package/dist/src/views/auth/password-reset/change-password-form/mutation-api.js.map +0 -1
  2041. package/dist/src/views/auth/password-reset/change-password-form/use-form.js.map +0 -1
  2042. package/dist/src/views/auth/password-reset/form/form.js.map +0 -1
  2043. package/dist/src/views/auth/password-reset/form/mutation-api.d.ts +0 -10
  2044. package/dist/src/views/auth/password-reset/form/mutation-api.d.ts.map +0 -1
  2045. package/dist/src/views/auth/password-reset/form/mutation-api.js +0 -2
  2046. package/dist/src/views/auth/password-reset/form/mutation-api.js.map +0 -1
  2047. package/dist/src/views/auth/password-reset/form/use-form.js.map +0 -1
  2048. package/dist/src/views/auth/password-reset/password-reset-view.js.map +0 -1
  2049. package/dist/src/views/auth/settings/layout.js.map +0 -1
  2050. package/dist/src/views/auth/settings/nav.js.map +0 -1
  2051. package/dist/src/views/auth/settings/overview/overview.js.map +0 -1
  2052. package/dist/src/views/auth/settings/security/security.js.map +0 -1
  2053. package/dist/src/views/auth/settings/shell.js.map +0 -1
  2054. package/dist/src/views/auth/sign-in/form/form.js.map +0 -1
  2055. package/dist/src/views/auth/sign-in/form/mutation-api.d.ts +0 -13
  2056. package/dist/src/views/auth/sign-in/form/mutation-api.d.ts.map +0 -1
  2057. package/dist/src/views/auth/sign-in/form/mutation-api.js +0 -2
  2058. package/dist/src/views/auth/sign-in/form/mutation-api.js.map +0 -1
  2059. package/dist/src/views/auth/sign-in/form/use-form.js.map +0 -1
  2060. package/dist/src/views/auth/sign-in/sign-in-view.js.map +0 -1
  2061. package/dist/src/views/auth/sign-up/components/password-input.js.map +0 -1
  2062. package/dist/src/views/auth/sign-up/email-confirmation-view.js.map +0 -1
  2063. package/dist/src/views/auth/sign-up/form/form.js.map +0 -1
  2064. package/dist/src/views/auth/sign-up/form/mutation-api.d.ts +0 -19
  2065. package/dist/src/views/auth/sign-up/form/mutation-api.d.ts.map +0 -1
  2066. package/dist/src/views/auth/sign-up/form/mutation-api.js +0 -2
  2067. package/dist/src/views/auth/sign-up/form/mutation-api.js.map +0 -1
  2068. package/dist/src/views/auth/sign-up/form/use-form.js.map +0 -1
  2069. package/dist/src/views/auth/sign-up/sign-up-view.js.map +0 -1
  2070. package/dist/src/views/auth/sign-up/wrapper.js.map +0 -1
  2071. package/dist/src/views/auth/sso/buttons/client.js.map +0 -1
  2072. package/dist/src/views/auth/sso/buttons/mutation-api.d.ts +0 -7
  2073. package/dist/src/views/auth/sso/buttons/mutation-api.d.ts.map +0 -1
  2074. package/dist/src/views/auth/sso/buttons/mutation-api.js +0 -2
  2075. package/dist/src/views/auth/sso/buttons/mutation-api.js.map +0 -1
  2076. package/dist/src/views/auth/sso/buttons/sso-buttons.js.map +0 -1
  2077. package/dist/src/views/auth/sso/callback/callback-sso-view.js.map +0 -1
  2078. package/dist/src/views/auth/sso/callback/client/client.js.map +0 -1
  2079. package/dist/src/views/auth/sso/callback/client/mutation-api.d.ts +0 -11
  2080. package/dist/src/views/auth/sso/callback/client/mutation-api.d.ts.map +0 -1
  2081. package/dist/src/views/auth/sso/callback/client/mutation-api.js +0 -2
  2082. package/dist/src/views/auth/sso/callback/client/mutation-api.js.map +0 -1
  2083. package/dist/src/views/breadcrumb/breadcrumb-main.js.map +0 -1
  2084. package/dist/src/views/breadcrumb/breadcrumb-render.js.map +0 -1
  2085. package/dist/src/views/breadcrumb/crumb.js.map +0 -1
  2086. package/dist/src/views/breadcrumb/resolve-main-breadcrumb.js.map +0 -1
  2087. package/dist/src/views/error/back-button.js.map +0 -1
  2088. package/dist/src/views/error/error-view.js.map +0 -1
  2089. package/dist/src/views/error/global-error-view.js.map +0 -1
  2090. package/dist/src/views/files/actions/delete-action.d.ts +0 -12
  2091. package/dist/src/views/files/actions/delete-action.d.ts.map +0 -1
  2092. package/dist/src/views/files/actions/delete-action.js +0 -2
  2093. package/dist/src/views/files/actions/delete-action.js.map +0 -1
  2094. package/dist/src/views/files/actions/file-row-actions.js.map +0 -1
  2095. package/dist/src/views/files/my-files-table-view.js.map +0 -1
  2096. package/dist/src/views/layouts/provider.js.map +0 -1
  2097. package/dist/src/views/layouts/root-layout.js.map +0 -1
  2098. package/dist/src/views/layouts/theme/header/header.js.map +0 -1
  2099. package/dist/src/views/layouts/theme/header/user/auth/auth.js.map +0 -1
  2100. package/dist/src/views/layouts/theme/header/user/auth/client.js.map +0 -1
  2101. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.d.ts +0 -7
  2102. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.d.ts.map +0 -1
  2103. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.js +0 -2
  2104. package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.js.map +0 -1
  2105. package/dist/src/views/layouts/theme/header/user/user.js.map +0 -1
  2106. package/dist/src/views/layouts/theme/layout.js.map +0 -1
  2107. package/dist/src/views/layouts/theme/notification-listener.js.map +0 -1
  2108. package/dist/src/views/layouts/theme/web-socket-auth-sync.js.map +0 -1
  2109. package/dist/src/vitnode.config.js.map +0 -1
  2110. package/dist/src/ws/handle.js.map +0 -1
  2111. package/dist/src/ws/manager.js.map +0 -1
  2112. package/dist/src/ws/notifications.js.map +0 -1
  2113. package/dist/src/ws/provider.js.map +0 -1
  2114. package/dist/src/ws/registry.js.map +0 -1
  2115. package/dist/src/ws/types.js.map +0 -1
  2116. package/dist/src/ws/use-websocket.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "system", "integrations"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbAdmin segments={["core", "users"]} />;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { BreadcrumbRolesAdmin } from "@/views/admin/layouts/breadcrumb/breadcrumb-roles-admin";
2
+
3
+ export default function BreadcrumbSlot() {
4
+ return <BreadcrumbRolesAdmin />;
5
+ }
@@ -0,0 +1,14 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { BreadcrumbMain } from "@/views/breadcrumb/breadcrumb-main";
4
+
5
+ export default async function BreadcrumbSlot() {
6
+ const t = await getTranslations("core.search");
7
+
8
+ return (
9
+ <BreadcrumbMain
10
+ labels={{ "/discover": t("discoverTitle") }}
11
+ segments={["discover"]}
12
+ />
13
+ );
14
+ }
@@ -0,0 +1,11 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { BreadcrumbMain } from "@/views/breadcrumb/breadcrumb-main";
4
+
5
+ export default async function BreadcrumbSlot() {
6
+ const t = await getTranslations("core.search");
7
+
8
+ return (
9
+ <BreadcrumbMain labels={{ "/search": t("title") }} segments={["search"]} />
10
+ );
11
+ }
@@ -0,0 +1,17 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { BreadcrumbMain } from "@/views/breadcrumb/breadcrumb-main";
4
+
5
+ export default async function BreadcrumbSlot() {
6
+ const t = await getTranslations("core.auth.settings");
7
+
8
+ return (
9
+ <BreadcrumbMain
10
+ labels={{
11
+ "/settings": t("title"),
12
+ "/settings/devices": t("nav.devices"),
13
+ }}
14
+ segments={["settings", "devices"]}
15
+ />
16
+ );
17
+ }
@@ -0,0 +1,41 @@
1
+ import { getTranslations } from "next-intl/server";
2
+ import dynamic from "next/dynamic";
3
+ import React from "react";
4
+
5
+ import { I18nProvider } from "@/components/i18n-provider";
6
+ import { HeaderContent } from "@/components/ui/header-content";
7
+ import { Skeleton } from "@/components/ui/skeleton";
8
+
9
+ const DiscoverView = dynamic(async () =>
10
+ import("@/views/search/discover-view").then(module => ({
11
+ default: module.DiscoverView,
12
+ })),
13
+ );
14
+
15
+ export const generateMetadata = async () => {
16
+ const t = await getTranslations("core.search");
17
+
18
+ return {
19
+ title: t("discoverTitle"),
20
+ description: t("discoverDesc"),
21
+ robots: { index: true, follow: true },
22
+ };
23
+ };
24
+
25
+ export default async function Page() {
26
+ const t = await getTranslations("core.search");
27
+
28
+ return (
29
+ <I18nProvider namespaces={["core.search"]}>
30
+ <div className="container mx-auto max-w-3xl space-y-6 p-4">
31
+ <HeaderContent desc={t("discoverDesc")} h1={t("discoverTitle")} />
32
+
33
+ <React.Suspense
34
+ fallback={<Skeleton className="h-64 w-full rounded-xl" />}
35
+ >
36
+ <DiscoverView />
37
+ </React.Suspense>
38
+ </div>
39
+ </I18nProvider>
40
+ );
41
+ }
@@ -0,0 +1,43 @@
1
+ import { getTranslations } from "next-intl/server";
2
+ import dynamic from "next/dynamic";
3
+ import React from "react";
4
+
5
+ import { I18nProvider } from "@/components/i18n-provider";
6
+ import { HeaderContent } from "@/components/ui/header-content";
7
+ import { Skeleton } from "@/components/ui/skeleton";
8
+
9
+ const SearchView = dynamic(async () =>
10
+ import("@/views/search/search-view").then(module => ({
11
+ default: module.SearchView,
12
+ })),
13
+ );
14
+
15
+ export const generateMetadata = async () => {
16
+ const t = await getTranslations("core.search");
17
+
18
+ return {
19
+ title: t("title"),
20
+ description: t("desc"),
21
+ robots: { index: true, follow: true },
22
+ };
23
+ };
24
+
25
+ export default async function Page(
26
+ props: React.ComponentProps<typeof SearchView>,
27
+ ) {
28
+ const t = await getTranslations("core.search");
29
+
30
+ return (
31
+ <I18nProvider namespaces={["core.search"]}>
32
+ <div className="container mx-auto max-w-3xl space-y-6 p-4">
33
+ <HeaderContent desc={t("desc")} h1={t("title")} />
34
+
35
+ <React.Suspense
36
+ fallback={<Skeleton className="h-64 w-full rounded-xl" />}
37
+ >
38
+ <SearchView {...props} />
39
+ </React.Suspense>
40
+ </div>
41
+ </I18nProvider>
42
+ );
43
+ }
@@ -0,0 +1,15 @@
1
+ import { getTranslations } from "next-intl/server";
2
+
3
+ import { DevicesSettings } from "@/views/auth/settings/devices/devices";
4
+
5
+ export const generateMetadata = async () => {
6
+ const t = await getTranslations("core.auth.settings");
7
+
8
+ return {
9
+ title: `${t("nav.devices")} - ${t("title")}`,
10
+ };
11
+ };
12
+
13
+ export default function Page() {
14
+ return <DevicesSettings />;
15
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"discord.js","names":["z"],"sources":["../../../../../src/api/adapters/sso/discord.ts"],"sourcesContent":["import type { ContentfulStatusCode } from \"hono/utils/http-status\";\n\nimport { HTTPException } from \"hono/http-exception\";\nimport { z } from \"zod\";\n\nimport type { SSOApiPlugin } from \"@/api/models/sso\";\n\nimport { getRedirectUri } from \"@/api/models/sso\";\n\nexport const DiscordSSOApiPlugin = ({\n clientId = \"\",\n clientSecret = \"\",\n}: {\n clientId: string | undefined;\n clientSecret: string | undefined;\n}): SSOApiPlugin => {\n const id = \"discord\";\n const redirectUri = getRedirectUri(id);\n const userSchema = z.object({\n id: z.string(),\n email: z.string(),\n username: z.string(),\n });\n const tokenSchema = z.object({\n access_token: z.string(),\n token_type: z.string(),\n });\n\n return {\n fetchToken: async code => {\n if (!(clientId && clientSecret)) {\n throw new Error(\"Missing Discord client ID or secret\");\n }\n\n const res = await fetch(\"https://discord.com/api/oauth2/token\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body: new URLSearchParams({\n code,\n redirect_uri: redirectUri,\n grant_type: \"authorization_code\",\n client_id: clientId,\n client_secret: clientSecret,\n }),\n });\n\n if (!res.ok) {\n throw new HTTPException(\n +res.status.toString() as ContentfulStatusCode,\n {\n message: \"Internal error requesting token\",\n },\n );\n }\n\n const { data, error } = tokenSchema.safeParse(await res.json());\n if (error || !data) {\n throw new HTTPException(400, {\n message: \"Invalid token response\",\n });\n }\n\n return data;\n },\n fetchUser: async ({ token_type, access_token }) => {\n const res = await fetch(\"https://discord.com/api/users/@me\", {\n headers: {\n Authorization: `${token_type} ${access_token}`,\n },\n });\n const { data, error } = userSchema.safeParse(await res.json());\n if (error || !data) {\n throw new HTTPException(400, {\n message: \"Invalid user response\",\n });\n }\n\n return data;\n },\n getUrl: ({ state }) => {\n if (!clientId) {\n throw new Error(\"Missing Discord client ID\");\n }\n\n const url = new URL(\"https://discord.com/oauth2/authorize\");\n url.searchParams.set(\"client_id\", clientId);\n url.searchParams.set(\"redirect_uri\", redirectUri);\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"scope\", \"identify email\");\n url.searchParams.set(\"state\", state);\n\n return url.toString();\n },\n id,\n name: \"Discord\",\n };\n};\n"],"mappings":"iIASA,MAAa,GAAuB,CAClC,WAAW,GACX,eAAe,MAIG,CAClB,IAAM,EAAK,UACL,EAAc,EAAe,CAAE,EAC/B,EAAaA,EAAE,OAAO,CAC1B,GAAIA,EAAE,OAAO,EACb,MAAOA,EAAE,OAAO,EAChB,SAAUA,EAAE,OAAO,CACrB,CAAC,EACK,EAAcA,EAAE,OAAO,CAC3B,aAAcA,EAAE,OAAO,EACvB,WAAYA,EAAE,OAAO,CACvB,CAAC,EAED,MAAO,CACL,WAAY,KAAM,IAAQ,CACxB,GAAI,EAAE,GAAY,GAChB,MAAU,MAAM,qCAAqC,EAGvD,IAAM,EAAM,MAAM,MAAM,uCAAwC,CAC9D,OAAQ,OACR,QAAS,CACP,eAAgB,oCAChB,OAAQ,kBACV,EACA,KAAM,IAAI,gBAAgB,CACxB,OACA,aAAc,EACd,WAAY,qBACZ,UAAW,EACX,cAAe,CACjB,CAAC,CACH,CAAC,EAED,GAAI,CAAC,EAAI,GACP,MAAM,IAAI,EACR,CAAC,EAAI,OAAO,SAAS,EACrB,CACE,QAAS,iCACX,CACF,EAGF,GAAM,CAAE,OAAM,SAAU,EAAY,UAAU,MAAM,EAAI,KAAK,CAAC,EAC9D,GAAI,GAAS,CAAC,EACZ,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,wBACX,CAAC,EAGH,OAAO,CACT,EACA,UAAW,MAAO,CAAE,aAAY,kBAAmB,CACjD,IAAM,EAAM,MAAM,MAAM,oCAAqC,CAC3D,QAAS,CACP,cAAe,GAAG,EAAW,GAAG,GAClC,CACF,CAAC,EACK,CAAE,OAAM,SAAU,EAAW,UAAU,MAAM,EAAI,KAAK,CAAC,EAC7D,GAAI,GAAS,CAAC,EACZ,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,uBACX,CAAC,EAGH,OAAO,CACT,EACA,QAAS,CAAE,WAAY,CACrB,GAAI,CAAC,EACH,MAAU,MAAM,2BAA2B,EAG7C,IAAM,EAAM,IAAI,IAAI,sCAAsC,EAO1D,OANA,EAAI,aAAa,IAAI,YAAa,CAAQ,EAC1C,EAAI,aAAa,IAAI,eAAgB,CAAW,EAChD,EAAI,aAAa,IAAI,gBAAiB,MAAM,EAC5C,EAAI,aAAa,IAAI,QAAS,gBAAgB,EAC9C,EAAI,aAAa,IAAI,QAAS,CAAK,EAE5B,EAAI,SAAS,CACtB,EACA,KACA,KAAM,SACR,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"facebook.js","names":["z"],"sources":["../../../../../src/api/adapters/sso/facebook.ts"],"sourcesContent":["import type { ContentfulStatusCode } from \"hono/utils/http-status\";\n\nimport { HTTPException } from \"hono/http-exception\";\nimport { z } from \"zod\";\n\nimport type { SSOApiPlugin } from \"@/api/models/sso\";\n\nimport { getRedirectUri } from \"@/api/models/sso\";\n\nexport const FacebookSSOApiPlugin = ({\n clientId,\n clientSecret,\n}: {\n clientId: string | undefined;\n clientSecret: string | undefined;\n}): SSOApiPlugin => {\n const id = \"facebook\";\n const redirectUri = getRedirectUri(id);\n const tokenSchema = z.object({\n access_token: z.string(),\n token_type: z.string(),\n });\n const userSchema = z.object({\n id: z.string(),\n name: z.string(),\n email: z.string(),\n });\n\n return {\n id,\n name: \"Facebook\",\n fetchToken: async code => {\n if (!(clientId && clientSecret)) {\n throw new Error(\"Missing Facebook client ID or secret\");\n }\n\n const url = new URL(\n \"https://graph.facebook.com/v22.0/oauth/access_token\",\n );\n url.searchParams.set(\"code\", code);\n url.searchParams.set(\"redirect_uri\", redirectUri);\n url.searchParams.set(\"client_id\", clientId);\n url.searchParams.set(\"client_secret\", clientSecret);\n const res = await fetch(url.toString());\n if (!res.ok) {\n throw new HTTPException(\n +res.status.toString() as ContentfulStatusCode,\n {\n message: \"Internal error requesting token\",\n },\n );\n }\n\n const { data, error } = tokenSchema.safeParse(await res.json());\n if (error || !data) {\n throw new HTTPException(400, {\n message: \"Invalid token response\",\n });\n }\n\n return data;\n },\n\n fetchUser: async ({ access_token }) => {\n const url = new URL(\"https://graph.facebook.com/v22.0/me\");\n url.searchParams.set(\"fields\", \"id,name,email\");\n url.searchParams.set(\"access_token\", access_token);\n const res = await fetch(url.toString());\n if (!res.ok) {\n throw new HTTPException(\n +res.status.toString() as ContentfulStatusCode,\n {\n message: \"Internal error requesting user\",\n },\n );\n }\n const { data: userData, error: userError } = userSchema.safeParse(\n await res.json(),\n );\n if (userError || !userData) {\n throw new HTTPException(400, {\n message: \"Invalid user response\",\n });\n }\n\n return { ...userData, username: userData.name };\n },\n\n getUrl: ({ state }) => {\n if (!clientId) {\n throw new Error(\"Missing Facebook client ID\");\n }\n\n const url = new URL(\"https://www.facebook.com/v22.0/dialog/oauth\");\n url.searchParams.set(\"client_id\", clientId);\n url.searchParams.set(\"redirect_uri\", redirectUri);\n url.searchParams.set(\"scope\", \"public_profile,email\");\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"state\", state);\n\n return url.toString();\n },\n };\n};\n"],"mappings":"iIASA,MAAa,GAAwB,CACnC,WACA,kBAIkB,CAClB,IAAM,EAAK,WACL,EAAc,EAAe,CAAE,EAC/B,EAAcA,EAAE,OAAO,CAC3B,aAAcA,EAAE,OAAO,EACvB,WAAYA,EAAE,OAAO,CACvB,CAAC,EACK,EAAaA,EAAE,OAAO,CAC1B,GAAIA,EAAE,OAAO,EACb,KAAMA,EAAE,OAAO,EACf,MAAOA,EAAE,OAAO,CAClB,CAAC,EAED,MAAO,CACL,KACA,KAAM,WACN,WAAY,KAAM,IAAQ,CACxB,GAAI,EAAE,GAAY,GAChB,MAAU,MAAM,sCAAsC,EAGxD,IAAM,EAAM,IAAI,IACd,qDACF,EACA,EAAI,aAAa,IAAI,OAAQ,CAAI,EACjC,EAAI,aAAa,IAAI,eAAgB,CAAW,EAChD,EAAI,aAAa,IAAI,YAAa,CAAQ,EAC1C,EAAI,aAAa,IAAI,gBAAiB,CAAY,EAClD,IAAM,EAAM,MAAM,MAAM,EAAI,SAAS,CAAC,EACtC,GAAI,CAAC,EAAI,GACP,MAAM,IAAI,EACR,CAAC,EAAI,OAAO,SAAS,EACrB,CACE,QAAS,iCACX,CACF,EAGF,GAAM,CAAE,OAAM,SAAU,EAAY,UAAU,MAAM,EAAI,KAAK,CAAC,EAC9D,GAAI,GAAS,CAAC,EACZ,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,wBACX,CAAC,EAGH,OAAO,CACT,EAEA,UAAW,MAAO,CAAE,kBAAmB,CACrC,IAAM,EAAM,IAAI,IAAI,qCAAqC,EACzD,EAAI,aAAa,IAAI,SAAU,eAAe,EAC9C,EAAI,aAAa,IAAI,eAAgB,CAAY,EACjD,IAAM,EAAM,MAAM,MAAM,EAAI,SAAS,CAAC,EACtC,GAAI,CAAC,EAAI,GACP,MAAM,IAAI,EACR,CAAC,EAAI,OAAO,SAAS,EACrB,CACE,QAAS,gCACX,CACF,EAEF,GAAM,CAAE,KAAM,EAAU,MAAO,GAAc,EAAW,UACtD,MAAM,EAAI,KAAK,CACjB,EACA,GAAI,GAAa,CAAC,EAChB,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,uBACX,CAAC,EAGH,MAAO,CAAE,GAAG,EAAU,SAAU,EAAS,IAAK,CAChD,EAEA,QAAS,CAAE,WAAY,CACrB,GAAI,CAAC,EACH,MAAU,MAAM,4BAA4B,EAG9C,IAAM,EAAM,IAAI,IAAI,6CAA6C,EAOjE,OANA,EAAI,aAAa,IAAI,YAAa,CAAQ,EAC1C,EAAI,aAAa,IAAI,eAAgB,CAAW,EAChD,EAAI,aAAa,IAAI,QAAS,sBAAsB,EACpD,EAAI,aAAa,IAAI,gBAAiB,MAAM,EAC5C,EAAI,aAAa,IAAI,QAAS,CAAK,EAE5B,EAAI,SAAS,CACtB,CACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"google.js","names":["z"],"sources":["../../../../../src/api/adapters/sso/google.ts"],"sourcesContent":["import type { ContentfulStatusCode } from \"hono/utils/http-status\";\n\nimport { HTTPException } from \"hono/http-exception\";\nimport { z } from \"zod\";\n\nimport type { SSOApiPlugin } from \"@/api/models/sso\";\n\nimport { getRedirectUri } from \"@/api/models/sso\";\n\nexport const GoogleSSOApiPlugin = ({\n clientId,\n clientSecret,\n}: {\n clientId: string | undefined;\n clientSecret: string | undefined;\n}): SSOApiPlugin => {\n const id = \"google\";\n const redirectUri = getRedirectUri(id);\n const tokenSchema = z.object({\n access_token: z.string(),\n token_type: z.string(),\n });\n const userSchema = z.object({\n id: z.string(),\n email: z.string(),\n name: z.string(),\n verified_email: z.boolean(),\n });\n\n return {\n id,\n name: \"Google\",\n fetchToken: async code => {\n if (!(clientId && clientSecret)) {\n throw new Error(\"Missing Google client ID or secret\");\n }\n\n const res = await fetch(\"https://oauth2.googleapis.com/token\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/x-www-form-urlencoded\",\n Accept: \"application/json\",\n },\n body: new URLSearchParams({\n code,\n redirect_uri: redirectUri,\n grant_type: \"authorization_code\",\n client_id: clientId,\n client_secret: clientSecret,\n }),\n });\n\n if (!res.ok) {\n throw new HTTPException(\n +res.status.toString() as ContentfulStatusCode,\n {\n message: \"Internal error requesting token\",\n },\n );\n }\n\n const { data, error } = tokenSchema.safeParse(await res.json());\n if (error || !data) {\n throw new HTTPException(400, {\n message: \"Invalid token response\",\n });\n }\n\n return data;\n },\n fetchUser: async ({ token_type, access_token }) => {\n const res = await fetch(\"https://www.googleapis.com/oauth2/v1/userinfo\", {\n headers: {\n Authorization: `${token_type} ${access_token}`,\n },\n });\n const dataFromRes = await res.json();\n const { data, error } = userSchema.safeParse(dataFromRes);\n if (error || !data) {\n throw new HTTPException(400, {\n message: \"Invalid user response\",\n });\n }\n\n if (!data.verified_email) {\n throw new HTTPException(400, {\n message: \"Email not verified\",\n });\n }\n\n return {\n ...data,\n username: data.name,\n };\n },\n getUrl: ({ state }) => {\n if (!clientId) {\n throw new Error(\"Missing Google client ID\");\n }\n\n const url = new URL(\"https://accounts.google.com/o/oauth2/auth\");\n url.searchParams.set(\"client_id\", clientId);\n url.searchParams.set(\"redirect_uri\", redirectUri);\n url.searchParams.set(\"response_type\", \"code\");\n url.searchParams.set(\"scope\", \"openid profile email\");\n url.searchParams.set(\"state\", state);\n\n return url.toString();\n },\n };\n};\n"],"mappings":"iIASA,MAAa,GAAsB,CACjC,WACA,kBAIkB,CAClB,IAAM,EAAK,SACL,EAAc,EAAe,CAAE,EAC/B,EAAcA,EAAE,OAAO,CAC3B,aAAcA,EAAE,OAAO,EACvB,WAAYA,EAAE,OAAO,CACvB,CAAC,EACK,EAAaA,EAAE,OAAO,CAC1B,GAAIA,EAAE,OAAO,EACb,MAAOA,EAAE,OAAO,EAChB,KAAMA,EAAE,OAAO,EACf,eAAgBA,EAAE,QAAQ,CAC5B,CAAC,EAED,MAAO,CACL,KACA,KAAM,SACN,WAAY,KAAM,IAAQ,CACxB,GAAI,EAAE,GAAY,GAChB,MAAU,MAAM,oCAAoC,EAGtD,IAAM,EAAM,MAAM,MAAM,sCAAuC,CAC7D,OAAQ,OACR,QAAS,CACP,eAAgB,oCAChB,OAAQ,kBACV,EACA,KAAM,IAAI,gBAAgB,CACxB,OACA,aAAc,EACd,WAAY,qBACZ,UAAW,EACX,cAAe,CACjB,CAAC,CACH,CAAC,EAED,GAAI,CAAC,EAAI,GACP,MAAM,IAAI,EACR,CAAC,EAAI,OAAO,SAAS,EACrB,CACE,QAAS,iCACX,CACF,EAGF,GAAM,CAAE,OAAM,SAAU,EAAY,UAAU,MAAM,EAAI,KAAK,CAAC,EAC9D,GAAI,GAAS,CAAC,EACZ,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,wBACX,CAAC,EAGH,OAAO,CACT,EACA,UAAW,MAAO,CAAE,aAAY,kBAAmB,CAMjD,IAAM,EAAc,MAAM,MALR,MAAM,gDAAiD,CACvE,QAAS,CACP,cAAe,GAAG,EAAW,GAAG,GAClC,CACF,CAAC,EAAA,CAC6B,KAAK,EAC7B,CAAE,OAAM,SAAU,EAAW,UAAU,CAAW,EACxD,GAAI,GAAS,CAAC,EACZ,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,uBACX,CAAC,EAGH,GAAI,CAAC,EAAK,eACR,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,oBACX,CAAC,EAGH,MAAO,CACL,GAAG,EACH,SAAU,EAAK,IACjB,CACF,EACA,QAAS,CAAE,WAAY,CACrB,GAAI,CAAC,EACH,MAAU,MAAM,0BAA0B,EAG5C,IAAM,EAAM,IAAI,IAAI,2CAA2C,EAO/D,OANA,EAAI,aAAa,IAAI,YAAa,CAAQ,EAC1C,EAAI,aAAa,IAAI,eAAgB,CAAW,EAChD,EAAI,aAAa,IAAI,gBAAiB,MAAM,EAC5C,EAAI,aAAa,IAAI,QAAS,sBAAsB,EACpD,EAAI,aAAa,IAAI,QAAS,CAAK,EAE5B,EAAI,SAAS,CACtB,CACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"local.js","names":[],"sources":["../../../../../src/api/adapters/storage/local.ts"],"sourcesContent":["import { mkdir, rm, writeFile } from \"node:fs/promises\";\nimport { dirname, join } from \"node:path\";\n\nimport type {\n StorageApiPlugin,\n StorageUploadArgs,\n StorageUploadResult,\n} from \"@/api/models/storage\";\n\nimport { CONFIG } from \"@/lib/config\";\n\n/**\n * Zero-config storage backend that writes uploads to the local disk under\n * `public/uploads`.\n *\n * - On the standalone Node API (`@hono/node-server`) files are served by Hono's\n * `serveStatic`, wired from the `static` descriptor below. The API is mounted\n * under `/api`, so `publicPath` defaults to `/api/uploads`.\n * - Inside a Next.js app the `public/` directory is served at the site root, so\n * pass `publicPath: \"/uploads\"` there (the `static` descriptor is unused).\n *\n * Local disk is not durable on serverless platforms - use a cloud adapter there.\n */\nexport const LocalStorageAdapter = ({\n baseUrl,\n publicPath = \"/api/uploads\",\n}: {\n baseUrl?: string;\n publicPath?: string;\n} = {}): StorageApiPlugin => {\n // Static path segments (not a variable) so Next's file tracer can scope the\n // trace to `public/uploads` instead of the whole project.\n const resolvePath = (key: string): string =>\n join(process.cwd(), \"public\", \"uploads\", key);\n const getUrl = (key: string): string => {\n const base = (baseUrl ?? CONFIG.api.origin).replace(/\\/$/, \"\");\n const path = publicPath.replace(/^\\/|\\/$/g, \"\");\n\n return `${base}/${path}/${key}`;\n };\n // Route registered on the API app, which already carries the `/api` basePath.\n const mountPath = `${publicPath.replace(/^\\/api/, \"\")}/*`;\n\n return {\n delete: async (key: string): Promise<void> => {\n await rm(resolvePath(key), { force: true });\n },\n getUrl,\n static: {\n mountPath,\n root: \"./public/uploads\",\n stripPrefix: publicPath,\n },\n upload: async ({\n body,\n key,\n }: StorageUploadArgs): Promise<StorageUploadResult> => {\n const filePath = resolvePath(key);\n await mkdir(dirname(filePath), { recursive: true });\n await writeFile(filePath, body);\n\n return { key, url: getUrl(key) };\n },\n };\n};\n"],"mappings":"8JAuBA,MAAa,GAAuB,CAClC,UACA,aAAa,gBAIX,CAAC,IAAwB,CAG3B,IAAM,EAAe,GACnB,EAAK,QAAQ,IAAI,EAAG,SAAU,UAAW,CAAG,EACxC,EAAU,GAIP,IAHO,GAAW,EAAO,IAAI,OAAA,CAAQ,QAAQ,MAAO,EAG9C,EAAE,GAFF,EAAW,QAAQ,WAAY,EAEvB,EAAE,GAAG,IAK5B,MAAO,CACL,OAAQ,KAAO,IAA+B,CAC5C,MAAM,EAAG,EAAY,CAAG,EAAG,CAAE,MAAO,EAAK,CAAC,CAC5C,EACA,SACA,OAAQ,CACN,UAAA,GARiB,EAAW,QAAQ,SAAU,EAAE,EAAE,IASlD,KAAM,mBACN,YAAa,CACf,EACA,OAAQ,MAAO,CACb,OACA,SACqD,CACrD,IAAM,EAAW,EAAY,CAAG,EAIhC,OAHA,MAAM,EAAM,EAAQ,CAAQ,EAAG,CAAE,UAAW,EAAK,CAAC,EAClD,MAAM,EAAU,EAAU,CAAI,EAEvB,CAAE,MAAK,IAAK,EAAO,CAAG,CAAE,CACjC,CACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","names":[],"sources":["../../../src/api/config.ts"],"sourcesContent":["import type { OpenAPIHono } from \"@hono/zod-openapi\";\nimport type { Context, Env, Schema } from \"hono\";\n\nimport { swaggerUI } from \"@hono/swagger-ui\";\nimport { cors } from \"hono/cors\";\nimport { csrf } from \"hono/csrf\";\nimport { HTTPException } from \"hono/http-exception\";\n\nimport type { VitNodeApiConfig } from \"@/vitnode.config\";\n\nimport { createCacheClient } from \"@/api/lib/cache-client\";\nimport { newBuildPluginApiCore } from \"@/api/plugin\";\nimport { CONFIG_PLUGIN } from \"@/config\";\nimport { initRealtimePubSub } from \"@/ws/registry\";\n\nimport {\n globalAdminMiddleware,\n globalMiddleware,\n} from \"./middlewares/global.middleware\";\nimport { rateLimiterMiddleware } from \"./middlewares/rate-limiter.middleware\";\n\ninterface CORSOptions {\n allowHeaders?: string[];\n allowMethods?: string[];\n credentials?: boolean;\n exposeHeaders?: string[];\n maxAge?: number;\n origin:\n | ((origin: string, c: Context) => null | string | undefined)\n | string\n | string[];\n}\n\ntype IsAllowedOriginHandler = (origin: string, context: Context) => boolean;\ninterface CSRFOptions {\n origin?: IsAllowedOriginHandler | string | string[];\n}\n\nexport function VitNodeAPI({\n app,\n cors: corsOptions,\n csrf: csrfOptions,\n vitNodeApiConfig,\n}: {\n app: OpenAPIHono<Env, Schema, string>;\n cors?: CORSOptions;\n csrf?: CSRFOptions;\n vitNodeApiConfig: VitNodeApiConfig;\n}) {\n // Shared Redis client, created once at boot. Reused by the rate limiter\n // (which runs before the request context exists), the realtime pub/sub bridge,\n // and the per-request cache exposed as `c.get(\"cache\")`. Safe no-op when\n // `redis` is unset.\n const redisClient = createCacheClient(vitNodeApiConfig.redis);\n\n // Bridge realtime (WebSocket) messages across instances via Redis pub/sub, so\n // `broadcast`/`sendToUser` reach clients on every instance. No-op without Redis.\n initRealtimePubSub(redisClient);\n\n app.doc(\"/swagger/doc\", {\n openapi: \"3.0.0\",\n info: {\n version: CONFIG_PLUGIN.version,\n title: \"VitNode API\",\n },\n });\n app.use(cors(corsOptions));\n app.use(csrf(csrfOptions));\n app.use(\n \"*\",\n rateLimiterMiddleware(vitNodeApiConfig.rateLimiter, redisClient),\n );\n app.get(\"/swagger\", swaggerUI({ url: \"/api/swagger/doc\" }));\n app.use(\n \"*\",\n globalMiddleware({\n pathToMessages: vitNodeApiConfig.pathToMessages,\n email: vitNodeApiConfig.email,\n metadata: vitNodeApiConfig.metadata,\n authorization: vitNodeApiConfig.authorization,\n dbProvider: vitNodeApiConfig.dbProvider,\n captcha: vitNodeApiConfig.captcha,\n cron: vitNodeApiConfig.cron,\n storage: vitNodeApiConfig.storage,\n plugins: [newBuildPluginApiCore, ...vitNodeApiConfig.plugins],\n cacheClient: redisClient,\n }),\n );\n app.use(async (c, next) => {\n if (c.req.path.includes(\"/admin/\")) {\n return await globalAdminMiddleware()(c, next);\n }\n\n return next();\n });\n\n if (vitNodeApiConfig.cron) {\n vitNodeApiConfig.cron.schedule();\n }\n\n [newBuildPluginApiCore, ...vitNodeApiConfig.plugins].map(root => {\n app.route(`/${root.pluginId}`, root.hono);\n });\n\n app.onError(async (error, c) => {\n if (error instanceof HTTPException) {\n return error.getResponse();\n }\n\n const errorMessage = error?.message ?? \"Unknown error\";\n\n try {\n const logger = c.get(\"log\");\n if (logger) {\n await logger.error(`Unhandled error: ${errorMessage}`);\n }\n } catch {\n /* empty */\n }\n\n return new Response(\n process.env.NODE_ENV === \"development\"\n ? errorMessage\n : \"Internal Server Error\",\n {\n status: 500,\n },\n );\n });\n\n return app;\n}\n"],"mappings":"uiBAsCA,SAAgB,EAAW,CACzB,MACA,KAAM,EACN,KAAM,EACN,oBAMC,CAKD,IAAM,EAAc,EAAkB,EAAiB,KAAK,EA6E5D,OAzEA,EAAmB,CAAW,EAE9B,EAAI,IAAI,eAAgB,CACtB,QAAS,QACT,KAAM,CACJ,QAAS,EAAc,QACvB,MAAO,aACT,CACF,CAAC,EACD,EAAI,IAAI,EAAK,CAAW,CAAC,EACzB,EAAI,IAAI,EAAK,CAAW,CAAC,EACzB,EAAI,IACF,IACA,EAAsB,EAAiB,YAAa,CAAW,CACjE,EACA,EAAI,IAAI,WAAY,EAAU,CAAE,IAAK,kBAAmB,CAAC,CAAC,EAC1D,EAAI,IACF,IACA,EAAiB,CACf,eAAgB,EAAiB,eACjC,MAAO,EAAiB,MACxB,SAAU,EAAiB,SAC3B,cAAe,EAAiB,cAChC,WAAY,EAAiB,WAC7B,QAAS,EAAiB,QAC1B,KAAM,EAAiB,KACvB,QAAS,EAAiB,QAC1B,QAAS,CAAC,EAAuB,GAAG,EAAiB,OAAO,EAC5D,YAAa,CACf,CAAC,CACH,EACA,EAAI,IAAI,MAAO,EAAG,IACZ,EAAE,IAAI,KAAK,SAAS,SAAS,EACxB,MAAM,EAAsB,CAAC,CAAC,EAAG,CAAI,EAGvC,EAAK,CACb,EAEG,EAAiB,MACnB,EAAiB,KAAK,SAAS,EAGjC,CAAC,EAAuB,GAAG,EAAiB,OAAO,CAAC,CAAC,IAAI,GAAQ,CAC/D,EAAI,MAAM,IAAI,EAAK,WAAY,EAAK,IAAI,CAC1C,CAAC,EAED,EAAI,QAAQ,MAAO,EAAO,IAAM,CAC9B,GAAI,aAAiB,EACnB,OAAO,EAAM,YAAY,EAG3B,IAAM,EAAe,GAAO,SAAW,gBAEvC,GAAI,CACF,IAAM,EAAS,EAAE,IAAI,KAAK,EACtB,GACF,MAAM,EAAO,MAAM,oBAAoB,GAAc,CAEzD,MAAQ,CAER,CAEA,OAAO,IAAI,SACT,QAAQ,IAAI,WAAa,cACrB,EACA,wBACJ,CACE,OAAQ,GACV,CACF,CACF,CAAC,EAEM,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-client.js","names":[],"sources":["../../../../src/api/lib/cache-client.ts"],"sourcesContent":["import { Redis } from \"ioredis\";\n\nimport type { CacheConfig } from \"./cache\";\n\nexport const createCacheClient = (config?: CacheConfig): null | Redis => {\n if (!config) return null;\n\n const { url, ...options } = config;\n // `enableOfflineQueue: false` makes commands fail fast (instead of queueing)\n // when Redis is unreachable, so `remember` falls through to its loader rather\n // than hanging. Callers can override it via the config.\n const client = url\n ? new Redis(url, { enableOfflineQueue: false, ...options })\n : new Redis({ enableOfflineQueue: false, ...options });\n\n // Without a listener, an \"error\" event (e.g. Redis down) is thrown as an\n // unhandled exception and crashes the process. Swallow it here.\n client.on(\"error\", () => {\n /* cache methods handle failures individually */\n });\n\n return client;\n};\n"],"mappings":"gCAIA,MAAa,EAAqB,GAAuC,CACvE,GAAI,CAAC,EAAQ,OAAO,KAEpB,GAAM,CAAE,MAAK,GAAG,GAAY,EAItB,EAAS,EACX,IAAI,EAAM,EAAK,CAAE,mBAAoB,GAAO,GAAG,CAAQ,CAAC,EACxD,IAAI,EAAM,CAAE,mBAAoB,GAAO,GAAG,CAAQ,CAAC,EAQvD,OAJA,EAAO,GAAG,YAAe,CAEzB,CAAC,EAEM,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","names":[],"sources":["../../../../src/api/lib/cache.ts"],"sourcesContent":["import type { Context } from \"hono\";\nimport type { Redis, RedisOptions } from \"ioredis\";\n\nexport type CacheConfig = RedisOptions & { url?: string };\n\n/**\n * Root prefix applied to every key VitNode writes, so the cache can be flushed\n * without touching unrelated data that may live in the same Redis instance.\n * Keys are further namespaced per plugin - see {@link CacheModel.prefix}.\n */\nconst CACHE_PREFIX = \"vitnode:cache:\";\nconst SYSTEM_NAMESPACE = \"__system__\";\n\n/**\n * A small, safe cache facade exposed on the request context as\n * `c.get(\"cache\")`. Values are JSON-serialized and namespaced per plugin (see\n * {@link CacheModel.prefix}), so the `hello` key a plugin writes actually lives\n * at `vitnode:cache:{plugin_code}:hello`. When Redis is not configured (client\n * is `null`) or a command fails, reads return `null`/`false`, writes are\n * no-ops, and {@link CacheModel.remember} simply runs its loader - caching must\n * never break a request.\n */\nexport class CacheModel {\n constructor(client: null | Redis, c: Context) {\n this.c = c;\n this.client = client;\n }\n\n protected readonly c: Context;\n protected readonly client: null | Redis;\n\n private key(key: string): string {\n return `${this.prefix()}${key}`;\n }\n\n /**\n * Key prefix for the current request's plugin, e.g.\n * `vitnode:cache:@vitnode/blog:`. Keys are scoped per plugin so one plugin\n * can't read or clobber another's cache. Falls back to the shared\n * `vitnode:cache:` namespace when there is no plugin on the context.\n */\n private prefix(): string {\n const pluginId = this.c.get(\"plugin\")?.id;\n\n return pluginId ? `${CACHE_PREFIX}${pluginId}:` : CACHE_PREFIX;\n }\n\n private async readKey<T>(fullKey: string): Promise<null | T> {\n if (!this.client) return null;\n\n try {\n const raw = await this.client.get(fullKey);\n\n return raw === null ? null : (JSON.parse(raw) as T);\n } catch {\n return null;\n }\n }\n\n private async removeKeys(fullKeys: string[]): Promise<void> {\n if (!this.client) return;\n\n try {\n if (fullKeys.length > 0) await this.client.del(...fullKeys);\n } catch {\n /* swallow */\n }\n }\n\n private systemKey(key: string): string {\n return `${CACHE_PREFIX}${SYSTEM_NAMESPACE}:${key}`;\n }\n\n private async writeKey<T>(\n fullKey: string,\n value: T,\n ttlSeconds?: number,\n ): Promise<void> {\n if (!this.client) return;\n\n try {\n const raw = JSON.stringify(value);\n if (ttlSeconds && ttlSeconds > 0) {\n await this.client.set(fullKey, raw, \"EX\", ttlSeconds);\n } else {\n await this.client.set(fullKey, raw);\n }\n } catch {\n /* caching must never break the request */\n }\n }\n\n /**\n * Acquire a short-lived distributed lock (`SET key val NX EX ttl`) in the\n * system namespace. Returns `true` when the lock is held by this caller.\n * **Without Redis it returns `true`** so cache-less / single-instance\n * deployments still make progress - callers must guard correctness some other\n * way (e.g. Postgres `FOR UPDATE SKIP LOCKED`). Returns `false` on a Redis\n * error so a flaky connection skips rather than double-runs work.\n */\n async acquireLock(key: string, ttlSeconds: number): Promise<boolean> {\n if (!this.client) return true;\n\n try {\n const result = await this.client.set(\n this.systemKey(`lock:${key}`),\n \"1\",\n \"EX\",\n ttlSeconds,\n \"NX\",\n );\n\n return result === \"OK\";\n } catch {\n return false;\n }\n }\n\n /** Remove one or more keys. No-op without Redis. */\n async delete(key: string | string[]): Promise<void> {\n const keys = (Array.isArray(key) ? key : [key]).map(k => this.key(k));\n await this.removeKeys(keys);\n }\n\n /**\n * Remove one or more keys from the framework system namespace. No-op without\n * Redis. See {@link SYSTEM_NAMESPACE}.\n */\n async deleteSystem(key: string | string[]): Promise<void> {\n const keys = (Array.isArray(key) ? key : [key]).map(k => this.systemKey(k));\n await this.removeKeys(keys);\n }\n\n /**\n * Delete every cache key for the current plugin\n * (`vitnode:cache:{plugin_code}:*`). Other plugins' keys and unrelated Redis\n * data are left untouched. No-op without Redis.\n */\n async flush(): Promise<void> {\n if (!this.client) return;\n\n try {\n const stream = this.client.scanStream({\n match: `${this.prefix()}*`,\n count: 100,\n });\n\n for await (const keys of stream) {\n const batch = keys as string[];\n if (batch.length > 0) await this.client.del(...batch);\n }\n } catch {\n /* swallow */\n }\n }\n\n /** Read a JSON value. Returns `null` on a miss, without Redis, or on error. */\n async get<T>(key: string): Promise<null | T> {\n return this.readKey<T>(this.key(key));\n }\n\n async getSystem<T>(key: string): Promise<null | T> {\n return this.readKey<T>(this.systemKey(key));\n }\n\n /** Whether a key currently exists. `false` without Redis or on error. */\n async has(key: string): Promise<boolean> {\n if (!this.client) return false;\n\n try {\n return (await this.client.exists(this.key(key))) === 1;\n } catch {\n return false;\n }\n }\n\n /** Release a lock taken with {@link acquireLock}. No-op without Redis. */\n async releaseLock(key: string): Promise<void> {\n await this.removeKeys([this.systemKey(`lock:${key}`)]);\n }\n\n async remember<T>(\n key: string,\n ttlSeconds: number,\n loader: () => Promise<T>,\n ): Promise<T> {\n const cached = await this.get<T>(key);\n if (cached !== null) return cached;\n\n const value = await loader();\n await this.set(key, value, ttlSeconds);\n\n return value;\n }\n\n async set<T>(key: string, value: T, ttlSeconds?: number): Promise<void> {\n await this.writeKey(this.key(key), value, ttlSeconds);\n }\n\n async setSystem<T>(\n key: string,\n value: T,\n ttlSeconds?: number,\n ): Promise<void> {\n await this.writeKey(this.systemKey(key), value, ttlSeconds);\n }\n\n async status(): Promise<{ configured: boolean; connected: boolean }> {\n if (!this.client) return { configured: false, connected: false };\n\n try {\n const pong = await this.client.ping();\n\n return { configured: true, connected: pong === \"PONG\" };\n } catch {\n return { configured: true, connected: false };\n }\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-plugin-id.js","names":[],"sources":["../../../../src/api/lib/check-plugin-id.ts"],"sourcesContent":["import { existsSync, readFileSync } from \"node:fs\";\nimport { join, resolve } from \"node:path\";\n\nimport { CONFIG } from \"../../lib/config\";\n\nexport interface PackageJSON {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n exports?: Record<string, Record<string, string>>;\n name: string;\n overrides?: Record<string, string>;\n packageManager?: string;\n pnpm?: Record<string, Record<string, string>>;\n private: boolean;\n scripts?: Record<string, string>;\n version: string;\n workspaces?: string[];\n}\n\nexport const checkPluginId = (pluginName: string): null | PackageJSON => {\n if (!CONFIG.node_development) return null;\n\n const findMonorepoRoot = (startPath: string): null | string => {\n let currentPath = startPath;\n while (currentPath !== resolve(currentPath, \"..\")) {\n const turboConfigPath = join(currentPath, \"turbo.json\");\n\n if (existsSync(turboConfigPath)) {\n return currentPath;\n }\n currentPath = resolve(currentPath, \"..\");\n }\n\n return null;\n };\n\n const findPluginPath = (pluginName: string): null | string => {\n const cwd = process.cwd();\n const monorepoRoot = findMonorepoRoot(cwd);\n\n // Check in current working directory first\n const cwdPluginPath = join(cwd, \"node_modules\", pluginName, \"package.json\");\n if (existsSync(cwdPluginPath)) {\n return cwdPluginPath;\n }\n\n // Check in monorepo root if it exists and is different from cwd\n if (monorepoRoot && monorepoRoot !== cwd) {\n const rootPluginPath = join(\n monorepoRoot,\n \"node_modules\",\n pluginName,\n \"package.json\",\n );\n if (existsSync(rootPluginPath)) {\n return rootPluginPath;\n }\n }\n\n return null;\n };\n\n const path = findPluginPath(pluginName);\n\n if (!path) {\n throw new Error(\n `package.json file not found for plugin \"${pluginName}\". Please ensure you are using the correct plugin name as specified in its package.json.`,\n );\n }\n\n const content: PackageJSON = JSON.parse(readFileSync(path, \"utf-8\"));\n if (content.name !== pluginName) {\n throw new Error(\n `The plugin name in package.json (${content.name}) does not match the requested plugin name (${pluginName}). Please check the plugin name.`,\n );\n }\n\n return content;\n};\n"],"mappings":"kJAmBA,MAAa,EAAiB,GAA2C,CACvE,GAAI,CAAC,EAAO,iBAAkB,OAAO,KAErC,IAAM,EAAoB,GAAqC,CAC7D,IAAI,EAAc,EAClB,KAAO,IAAgB,EAAQ,EAAa,IAAI,GAAG,CAGjD,GAAI,EAFoB,EAAK,EAAa,YAEb,CAAC,EAC5B,OAAO,EAET,EAAc,EAAQ,EAAa,IAAI,CACzC,CAEA,OAAO,IACT,EA4BM,GA1BkB,GAAsC,CAC5D,IAAM,EAAM,QAAQ,IAAI,EAClB,EAAe,EAAiB,CAAG,EAGnC,EAAgB,EAAK,EAAK,eAAgB,EAAY,cAAc,EAC1E,GAAI,EAAW,CAAa,EAC1B,OAAO,EAIT,GAAI,GAAgB,IAAiB,EAAK,CACxC,IAAM,EAAiB,EACrB,EACA,eACA,EACA,cACF,EACA,GAAI,EAAW,CAAc,EAC3B,OAAO,CAEX,CAEA,OAAO,IACT,EAEa,CAAe,CAAU,EAEtC,GAAI,CAAC,EACH,MAAU,MACR,2CAA2C,EAAW,yFACxD,EAGF,IAAM,EAAuB,KAAK,MAAM,EAAa,EAAM,OAAO,CAAC,EACnE,GAAI,EAAQ,OAAS,EACnB,MAAU,MACR,oCAAoC,EAAQ,KAAK,8CAA8C,EAAW,iCAC5G,EAGF,OAAO,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"check-staff-permission.js","names":[],"sources":["../../../../src/api/lib/check-staff-permission.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { and, eq, inArray, or } from \"drizzle-orm\";\nimport { HTTPException } from \"hono/http-exception\";\n\nimport { core_admin_permissions } from \"@/database/admins\";\nimport { core_moderators_permissions } from \"@/database/moderators\";\nimport { core_roles } from \"@/database/roles\";\nimport { core_users_secondary_roles } from \"@/database/users\";\n\nimport type {\n PermissionsStaffArgs,\n PermissionStaffType,\n StaffPermissionSet,\n} from \"./permission-staff\";\n\nimport { hasStaffPermission, staffPermissionKey } from \"./staff-permission\";\n\nconst tableByType = {\n admin: core_admin_permissions,\n moderator: core_moderators_permissions,\n} as const;\n\nexport const getUserRoleIds = async (\n c: Context,\n user: { id: number; roleId: number },\n): Promise<number[]> => {\n const secondary = await c\n .get(\"db\")\n .select({ roleId: core_users_secondary_roles.roleId })\n .from(core_users_secondary_roles)\n .where(eq(core_users_secondary_roles.userId, user.id));\n\n return [...new Set([user.roleId, ...secondary.map(row => row.roleId)])];\n};\n\nexport const resolveStaffPermissions = async (\n c: Context,\n {\n type,\n user,\n }: { type: PermissionStaffType; user: { id: number; roleId: number } },\n): Promise<StaffPermissionSet> => {\n const roleIds = await getUserRoleIds(c, user);\n\n const rootRoles = await c\n .get(\"db\")\n .select({ id: core_roles.id })\n .from(core_roles)\n .where(and(inArray(core_roles.id, roleIds), eq(core_roles.root, true)))\n .limit(1);\n\n if (rootRoles.length > 0) {\n return { root: true, permissions: [] };\n }\n\n const table = tableByType[type];\n const entries = await c\n .get(\"db\")\n .select({ data: table.data })\n .from(table)\n .where(or(eq(table.userId, user.id), inArray(table.roleId, roleIds)));\n\n if (entries.some(entry => entry.data?.unrestricted)) {\n return { root: true, permissions: [] };\n }\n\n const seen = new Set<string>();\n const permissions: PermissionsStaffArgs[] = [];\n for (const entry of entries) {\n for (const permission of entry.data?.permissions ?? []) {\n const key = staffPermissionKey(permission);\n if (seen.has(key)) continue;\n seen.add(key);\n permissions.push(permission);\n }\n }\n\n return { root: false, permissions };\n};\n\nexport const checkStaffPermission = async (\n c: Context,\n { type, ...args }: PermissionsStaffArgs & { type: PermissionStaffType },\n): Promise<boolean> => {\n const user = type === \"admin\" ? c.get(\"admin\")?.user : c.get(\"user\");\n if (!user) return false;\n\n const set = await resolveStaffPermissions(c, { type, user });\n\n return hasStaffPermission(set, args);\n};\n\nexport const assertStaffPermission = async (\n c: Context,\n args: PermissionsStaffArgs & { type: PermissionStaffType },\n): Promise<void> => {\n const allowed = await checkStaffPermission(c, args);\n if (!allowed) {\n throw new HTTPException(403, { message: \"Forbidden\" });\n }\n};\n"],"mappings":"6cAkBA,MAAM,EAAc,CAClB,MAAO,EACP,UAAW,CACb,EAEa,EAAiB,MAC5B,EACA,IACsB,CACtB,IAAM,EAAY,MAAM,EACrB,IAAI,IAAI,CAAC,CACT,OAAO,CAAE,OAAQ,EAA2B,MAAO,CAAC,CAAC,CACrD,KAAK,CAA0B,CAAC,CAChC,MAAM,EAAG,EAA2B,OAAQ,EAAK,EAAE,CAAC,EAEvD,MAAO,CAAC,GAAG,IAAI,IAAI,CAAC,EAAK,OAAQ,GAAG,EAAU,IAAI,GAAO,EAAI,MAAM,CAAC,CAAC,CAAC,CACxE,EAEa,EAA0B,MACrC,EACA,CACE,OACA,UAE8B,CAChC,IAAM,EAAU,MAAM,EAAe,EAAG,CAAI,EAS5C,IAAI,MAPoB,EACrB,IAAI,IAAI,CAAC,CACT,OAAO,CAAE,GAAI,EAAW,EAAG,CAAC,CAAC,CAC7B,KAAK,CAAU,CAAC,CAChB,MAAM,EAAI,EAAQ,EAAW,GAAI,CAAO,EAAG,EAAG,EAAW,KAAM,EAAI,CAAC,CAAC,CAAC,CACtE,MAAM,CAAC,EAAA,CAEI,OAAS,EACrB,MAAO,CAAE,KAAM,GAAM,YAAa,CAAC,CAAE,EAGvC,IAAM,EAAQ,EAAY,GACpB,EAAU,MAAM,EACnB,IAAI,IAAI,CAAC,CACT,OAAO,CAAE,KAAM,EAAM,IAAK,CAAC,CAAC,CAC5B,KAAK,CAAK,CAAC,CACX,MAAM,EAAG,EAAG,EAAM,OAAQ,EAAK,EAAE,EAAG,EAAQ,EAAM,OAAQ,CAAO,CAAC,CAAC,EAEtE,GAAI,EAAQ,KAAK,GAAS,EAAM,MAAM,YAAY,EAChD,MAAO,CAAE,KAAM,GAAM,YAAa,CAAC,CAAE,EAGvC,IAAM,EAAO,IAAI,IACX,EAAsC,CAAC,EAC7C,IAAK,IAAM,KAAS,EAClB,IAAK,IAAM,KAAc,EAAM,MAAM,aAAe,CAAC,EAAG,CACtD,IAAM,EAAM,EAAmB,CAAU,EACrC,EAAK,IAAI,CAAG,IAChB,EAAK,IAAI,CAAG,EACZ,EAAY,KAAK,CAAU,EAC7B,CAGF,MAAO,CAAE,KAAM,GAAO,aAAY,CACpC,EAEa,EAAuB,MAClC,EACA,CAAE,OAAM,GAAG,KACU,CACrB,IAAM,EAAO,IAAS,QAAU,EAAE,IAAI,OAAO,CAAC,EAAE,KAAO,EAAE,IAAI,MAAM,EAKnE,OAJK,EAIE,EAAmB,MAFR,EAAwB,EAAG,CAAE,OAAM,MAAK,CAAC,EAE5B,CAAI,EAJjB,EAKpB,EAEa,EAAwB,MACnC,EACA,IACkB,CAElB,GAAI,CAAC,MADiB,EAAqB,EAAG,CAAI,EAEhD,MAAM,IAAI,EAAc,IAAK,CAAE,QAAS,WAAY,CAAC,CAEzD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.js","names":[],"sources":["../../../../src/api/lib/cron.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { CONFIG } from \"@/lib/config\";\n\nimport type { EnvVitNode } from \"../middlewares/global.middleware\";\n\nexport interface CronAdapter {\n schedule: () => void;\n}\n\nexport interface BuildCronReturn {\n description?: string;\n handler: (c: Context<EnvVitNode>) => Promise<void> | void;\n name: string;\n schedule: string;\n}\n\nexport interface CronJobConfig extends BuildCronReturn {\n module: string;\n pluginId: string;\n}\n\nexport function buildCron({\n name,\n schedule,\n handler,\n description,\n}: BuildCronReturn): BuildCronReturn {\n return { name, schedule, handler, description };\n}\n\nexport const handleCronJobs = async () => {\n const url = new URL(\"/api/@vitnode/core/cron\", CONFIG.api.origin);\n const headers: HeadersInit = {\n \"Content-Type\": \"application/json\",\n };\n\n if (CONFIG.cronJobSecret) {\n headers.authorization = `Bearer ${CONFIG.cronJobSecret}`;\n }\n\n await fetch(url.toString(), {\n method: \"POST\",\n headers,\n });\n};\n"],"mappings":"6CAsBA,SAAgB,EAAU,CACxB,OACA,WACA,UACA,eACmC,CACnC,MAAO,CAAE,OAAM,WAAU,UAAS,aAAY,CAChD,CAEA,MAAa,EAAiB,SAAY,CACxC,IAAM,EAAM,IAAI,IAAI,0BAA2B,EAAO,IAAI,MAAM,EAC1D,EAAuB,CAC3B,eAAgB,kBAClB,EAEI,EAAO,gBACT,EAAQ,cAAgB,UAAU,EAAO,iBAG3C,MAAM,MAAM,EAAI,SAAS,EAAG,CAC1B,OAAQ,OACR,SACF,CAAC,CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger-middleware.js","names":[],"sources":["../../../../src/api/lib/logger-middleware.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { Context } from \"hono\";\n\nimport { core_logs } from \"@/database/logs\";\n\ntype CoreLogsType = \"debug\" | \"error\" | \"warn\";\n\nexport interface LoggerMiddlewareType {\n debug: (content: string) => Promise<void>;\n error: (content: string) => Promise<void>;\n warn: (content: string) => Promise<void>;\n}\n\nexport const loggerMiddleware = (c: Context): LoggerMiddlewareType => {\n const logToDbAndConsole = async (content: string, type: CoreLogsType) => {\n const pluginId = c.get(\"plugin\")?.id ?? \"core\";\n const ipAddress = c.get(\"ipAddress\");\n\n await c\n .get(\"db\")\n .insert(core_logs)\n .values({\n pluginId,\n type,\n content,\n ipAddress,\n method: c.req.method.toUpperCase(),\n path: c.req.path,\n userAgent: c.req.header(\"User-Agent\"),\n statusCode: c.res.status,\n userId: c.get(\"user\")?.id,\n });\n\n const loggers: Record<CoreLogsType, (msg: string) => void> = {\n debug: msg =>\n console.debug(\n `\\x1b[34m[VitNode]\\x1b[0m \\x1b[38;5;208mDebug (${pluginId})\\x1b[0m: ${msg}`,\n ),\n error: msg =>\n console.error(\n `\\x1b[34m[VitNode]\\x1b[0m \\x1b[31mError (${pluginId})\\x1b[0m: ${msg}`,\n ),\n warn: msg =>\n console.warn(\n `\\x1b[34m[VitNode]\\x1b[0m \\x1b[33mWarning (${pluginId})\\x1b[0m: ${msg}`,\n ),\n };\n (loggers[type] ?? loggers.debug)(content);\n };\n\n return {\n debug: async (content: string) => {\n await logToDbAndConsole(content, \"debug\");\n },\n error: async (content: string) => {\n await logToDbAndConsole(content, \"error\");\n },\n warn: async (content: string) => {\n await logToDbAndConsole(content, \"warn\");\n },\n };\n};\n"],"mappings":"mDAaA,MAAa,EAAoB,GAAqC,CACpE,IAAM,EAAoB,MAAO,EAAiB,IAAuB,CACvE,IAAM,EAAW,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAM,OAClC,EAAY,EAAE,IAAI,WAAW,EAEnC,MAAM,EACH,IAAI,IAAI,CAAC,CACT,OAAO,CAAS,CAAC,CACjB,OAAO,CACN,WACA,OACA,UACA,YACA,OAAQ,EAAE,IAAI,OAAO,YAAY,EACjC,KAAM,EAAE,IAAI,KACZ,UAAW,EAAE,IAAI,OAAO,YAAY,EACpC,WAAY,EAAE,IAAI,OAClB,OAAQ,EAAE,IAAI,MAAM,CAAC,EAAE,EACzB,CAAC,EAEH,IAAM,EAAuD,CAC3D,MAAO,GACL,QAAQ,MACN,iDAAiD,EAAS,YAAY,GACxE,EACF,MAAO,GACL,QAAQ,MACN,2CAA2C,EAAS,YAAY,GAClE,EACF,KAAM,GACJ,QAAQ,KACN,6CAA6C,EAAS,YAAY,GACpE,CACJ,GACC,EAAQ,IAAS,EAAQ,MAAA,CAAO,CAAO,CAC1C,EAEA,MAAO,CACL,MAAO,KAAO,IAAoB,CAChC,MAAM,EAAkB,EAAS,OAAO,CAC1C,EACA,MAAO,KAAO,IAAoB,CAChC,MAAM,EAAkB,EAAS,OAAO,CAC1C,EACA,KAAM,KAAO,IAAoB,CAC/B,MAAM,EAAkB,EAAS,MAAM,CACzC,CACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"module.js","names":[],"sources":["../../../../src/api/lib/module.ts"],"sourcesContent":["import { OpenAPIHono } from \"@hono/zod-openapi\";\n\nimport type { BuildCronReturn } from \"./cron\";\nimport type { BuildQueueTaskReturn } from \"./queue\";\nimport type { Route } from \"./route\";\nimport type { BuildWebSocketReturn } from \"./websocket\";\n\nexport interface BuildModuleType<T extends Route, Plugin extends string> {\n plugin: Plugin;\n routes: T;\n}\n\nexport interface BaseBuildModuleReturn<\n P extends string = string,\n M extends string = string,\n Routes extends Route<P>[] = Route<P>[],\n> {\n cronJobs: BuildCronReturn[];\n hono: OpenAPIHono;\n modules?: BaseBuildModuleReturn<P>[];\n name: M;\n pluginId: P;\n queueTasks: BuildQueueTaskReturn[];\n routes: Routes;\n webSockets: BuildWebSocketReturn[];\n}\n\nexport interface BuildModuleReturn<\n P extends string,\n M extends string,\n Routes extends Route<P>[] = Route<P>[],\n Modules extends BaseBuildModuleReturn<P>[] = BaseBuildModuleReturn<P>[],\n> extends BaseBuildModuleReturn<P, M, Routes> {\n modules?: Modules;\n}\n\nexport function buildModule<\n const P extends string,\n const M extends string,\n const Routes extends Route<P>[],\n Modules extends BaseBuildModuleReturn<P>[],\n>({\n routes,\n pluginId,\n name,\n modules,\n cronJobs = [],\n queueTasks = [],\n webSockets = [],\n}: {\n cronJobs?: BuildCronReturn[];\n modules?: Modules;\n name: M;\n pluginId: P;\n queueTasks?: BuildQueueTaskReturn[];\n routes: Routes;\n webSockets?: BuildWebSocketReturn[];\n}): BuildModuleReturn<P, M, Routes, Modules> {\n const hono = new OpenAPIHono();\n\n if (routes) {\n routes.forEach(({ handler, route }) => {\n hono.openapi(route, handler);\n });\n }\n\n if (modules) {\n modules.forEach(module => {\n hono.route(`/${module.name}`, module.hono);\n });\n }\n\n return {\n routes,\n pluginId,\n hono,\n name,\n modules,\n cronJobs,\n queueTasks,\n webSockets,\n };\n}\n"],"mappings":"gDAoCA,SAAgB,EAKd,CACA,SACA,WACA,OACA,UACA,WAAW,CAAC,EACZ,aAAa,CAAC,EACd,aAAa,CAAC,GAS6B,CAC3C,IAAM,EAAO,IAAI,EAcjB,OAZI,GACF,EAAO,SAAS,CAAE,UAAS,WAAY,CACrC,EAAK,QAAQ,EAAO,CAAO,CAC7B,CAAC,EAGC,GACF,EAAQ,QAAQ,GAAU,CACxB,EAAK,MAAM,IAAI,EAAO,OAAQ,EAAO,IAAI,CAC3C,CAAC,EAGI,CACL,SACA,WACA,OACA,OACA,UACA,WACA,aACA,YACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"permission-staff.js","names":[],"sources":["../../../../src/api/lib/permission-staff.ts"],"sourcesContent":["/**\n * Plugin-based staff permission catalog.\n *\n * A plugin declares, in its API config, which permissions exist for moderators\n * and for admins. Permissions are grouped by module string, mirroring the way a\n * plugin is split into modules elsewhere in the API.\n *\n * The i18n label for each permission lives in the plugin's locale file under the\n * flat top-level key `{pluginId}:{module}:{permission}` (e.g.\n * `@vitnode/blog:posts:can_delete`).\n *\n * A permission may be declared as a plain string, or as an object that lists the\n * other permissions (in the same module) it `dependsOn`. The staff form only\n * shows a permission once every permission it depends on is enabled - e.g.\n * `{ permission: \"can_create\", dependsOn: [\"can_view\"] }` stays hidden until\n * `can_view` is on.\n */\nexport type PermissionStaffEntryInput =\n string | { dependsOn?: string[]; permission: string };\n\n/**\n * Author-facing module map - what a plugin declares in its API config.\n */\nexport type PermissionStaffModulesInput = Record<\n string,\n PermissionStaffEntryInput[]\n>;\n\n/**\n * A permission entry after normalization - the shape carried on the request\n * context and returned by the permission catalog. `dependsOn` is always an\n * array (empty when the permission has no prerequisites).\n */\nexport interface PermissionStaffEntry {\n dependsOn: string[];\n permission: string;\n}\n\nexport type PermissionStaffModules = Record<string, PermissionStaffEntry[]>;\n\nexport interface PermissionStaffConfig {\n admin?: PermissionStaffModulesInput;\n moderator?: PermissionStaffModulesInput;\n}\n\nexport type PermissionStaffType = \"admin\" | \"moderator\";\n\n/**\n * Normalizes the author-facing module map into the canonical\n * `{ permission, dependsOn }` shape, so every downstream reader deals with a\n * single shape regardless of how the plugin declared it.\n */\nexport const normalizePermissionStaffModules = (\n modules: PermissionStaffModulesInput = {},\n): PermissionStaffModules =>\n Object.fromEntries(\n Object.entries(modules).map(([module, entries]) => [\n module,\n entries.map(entry =>\n typeof entry === \"string\"\n ? { permission: entry, dependsOn: [] }\n : { permission: entry.permission, dependsOn: entry.dependsOn ?? [] },\n ),\n ]),\n );\n\n/**\n * A single granted permission stored against a staff entry.\n */\nexport interface PermissionsStaffArgs {\n module: string;\n permission: string;\n plugin: string;\n}\n\n/**\n * The value persisted in a staff entry's `data` jsonb column.\n *\n * `unrestricted` grants every permission for the staff type (and any added in\n * the future); when `false`, only the explicitly listed `permissions` apply.\n */\nexport interface StaffPermissionsData {\n permissions: PermissionsStaffArgs[];\n unrestricted: boolean;\n}\n\n/**\n * The catalog as aggregated onto the request context (`c.get(\"core\").permissionStaff`).\n */\nexport interface PermissionStaffCatalogEntry {\n admin: PermissionStaffModules;\n moderator: PermissionStaffModules;\n pluginId: string;\n}\n\n/**\n * The resolved effective permissions for a user. `root` short-circuits every\n * check to `true`.\n */\nexport interface StaffPermissionSet {\n permissions: PermissionsStaffArgs[];\n root: boolean;\n}\n"],"mappings":"AAoDA,MAAa,GACX,EAAuC,CAAC,IAExC,OAAO,YACL,OAAO,QAAQ,CAAO,CAAC,CAAC,KAAK,CAAC,EAAQ,KAAa,CACjD,EACA,EAAQ,IAAI,GACV,OAAO,GAAU,SACb,CAAE,WAAY,EAAO,UAAW,CAAC,CAAE,EACnC,CAAE,WAAY,EAAM,WAAY,UAAW,EAAM,WAAa,CAAC,CAAE,CACvE,CACF,CAAC,CACH"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.js","names":[],"sources":["../../../../src/api/lib/plugin.ts"],"sourcesContent":["import { OpenAPIHono } from \"@hono/zod-openapi\";\n\nimport type { CronJobConfig } from \"./cron\";\nimport type { BuildModuleReturn } from \"./module\";\nimport type { PermissionStaffConfig } from \"./permission-staff\";\nimport type { QueueTaskConfig } from \"./queue\";\nimport type { WebSocketConfig } from \"./websocket\";\n\nimport { checkPluginId } from \"./check-plugin-id\";\n\nexport interface BuildPluginApiReturn {\n cronJobs?: Omit<CronJobConfig, \"pluginId\">[];\n hono: OpenAPIHono;\n permissionStaff?: PermissionStaffConfig;\n pluginId: string;\n queueTasks?: Omit<QueueTaskConfig, \"pluginId\">[];\n webSockets?: Omit<WebSocketConfig, \"pluginId\">[];\n}\n\nexport function buildApiPlugin<P extends string>({\n pluginId,\n modules = [],\n permissionStaff,\n}: {\n modules?: BuildModuleReturn<P, string>[];\n permissionStaff?: PermissionStaffConfig;\n pluginId: P;\n}): BuildPluginApiReturn {\n // Run for checking if the plugin is valid\n checkPluginId(pluginId);\n\n const hono = new OpenAPIHono();\n const cronJobs: BuildPluginApiReturn[\"cronJobs\"] = [];\n const queueTasks: BuildPluginApiReturn[\"queueTasks\"] = [];\n const webSockets: BuildPluginApiReturn[\"webSockets\"] = [];\n modules.forEach(handler => {\n hono.route(`/${handler.name}`, handler.hono);\n\n handler.cronJobs?.forEach(cron => {\n cronJobs.push({ ...cron, module: handler.name });\n });\n\n handler.queueTasks?.forEach(task => {\n queueTasks.push({ ...task, module: handler.name });\n });\n\n handler.webSockets?.forEach(webSocket => {\n webSockets.push({ ...webSocket, module: handler.name });\n });\n });\n\n return {\n pluginId,\n hono,\n cronJobs,\n queueTasks,\n webSockets,\n permissionStaff,\n };\n}\n"],"mappings":"qGAmBA,SAAgB,EAAiC,CAC/C,WACA,UAAU,CAAC,EACX,mBAKuB,CAEvB,EAAc,CAAQ,EAEtB,IAAM,EAAO,IAAI,EACX,EAA6C,CAAC,EAC9C,EAAiD,CAAC,EAClD,EAAiD,CAAC,EAiBxD,OAhBA,EAAQ,QAAQ,GAAW,CACzB,EAAK,MAAM,IAAI,EAAQ,OAAQ,EAAQ,IAAI,EAE3C,EAAQ,UAAU,QAAQ,GAAQ,CAChC,EAAS,KAAK,CAAE,GAAG,EAAM,OAAQ,EAAQ,IAAK,CAAC,CACjD,CAAC,EAED,EAAQ,YAAY,QAAQ,GAAQ,CAClC,EAAW,KAAK,CAAE,GAAG,EAAM,OAAQ,EAAQ,IAAK,CAAC,CACnD,CAAC,EAED,EAAQ,YAAY,QAAQ,GAAa,CACvC,EAAW,KAAK,CAAE,GAAG,EAAW,OAAQ,EAAQ,IAAK,CAAC,CACxD,CAAC,CACH,CAAC,EAEM,CACL,WACA,OACA,WACA,aACA,aACA,iBACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.js","names":[],"sources":["../../../../src/api/lib/queue.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport type { EnvVitNode } from \"../middlewares/global.middleware\";\n\nexport interface BuildQueueTaskReturn {\n description?: string;\n handler: (\n c: Context<EnvVitNode>,\n payload: Record<string, unknown>,\n ) => Promise<void> | void;\n maxAttempts?: number;\n name: string;\n}\n\nexport interface QueueTaskConfig extends BuildQueueTaskReturn {\n module: string;\n pluginId: string;\n}\n\nexport function buildQueueTask({\n name,\n handler,\n description,\n maxAttempts,\n}: BuildQueueTaskReturn): BuildQueueTaskReturn {\n return { name, handler, description, maxAttempts };\n}\n"],"mappings":"AAmBA,SAAgB,EAAe,CAC7B,OACA,UACA,cACA,eAC6C,CAC7C,MAAO,CAAE,OAAM,UAAS,cAAa,aAAY,CACnD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-role-names.js","names":[],"sources":["../../../../src/api/lib/resolve-role-names.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { and, eq, inArray } from \"drizzle-orm\";\n\nimport { core_languages_words } from \"@/database/languages\";\n\nexport interface ResolvedRoleName {\n languageCode: string;\n name: string;\n}\n\n// Role names are not stored on `core_roles` - every translation lives in\n// `core_languages_words`. This resolves the name translations for a set of role\n// ids in a single query and returns them keyed by role id, ready to hand to the\n// `RoleFormat` component (which picks the active locale on the frontend).\nexport const resolveRoleNames = async (\n c: Context,\n roleIds: number[],\n): Promise<Map<number, ResolvedRoleName[]>> => {\n const ids = [...new Set(roleIds)];\n if (ids.length === 0) {\n return new Map();\n }\n\n const words = await c\n .get(\"db\")\n .select({\n itemId: core_languages_words.itemId,\n languageCode: core_languages_words.languageCode,\n value: core_languages_words.value,\n })\n .from(core_languages_words)\n .where(\n and(\n eq(core_languages_words.tableName, \"core_roles\"),\n eq(core_languages_words.variable, \"name\"),\n eq(core_languages_words.pluginCode, \"core\"),\n inArray(core_languages_words.itemId, ids),\n ),\n );\n\n const result = new Map<number, ResolvedRoleName[]>();\n for (const id of ids) {\n result.set(\n id,\n words\n .filter(word => word.itemId === id)\n .map(word => ({ name: word.value, languageCode: word.languageCode })),\n );\n }\n\n return result;\n};\n"],"mappings":"0HAeA,MAAa,EAAmB,MAC9B,EACA,IAC6C,CAC7C,IAAM,EAAM,CAAC,GAAG,IAAI,IAAI,CAAO,CAAC,EAChC,GAAI,EAAI,SAAW,EACjB,OAAO,IAAI,IAGb,IAAM,EAAQ,MAAM,EACjB,IAAI,IAAI,CAAC,CACT,OAAO,CACN,OAAQ,EAAqB,OAC7B,aAAc,EAAqB,aACnC,MAAO,EAAqB,KAC9B,CAAC,CAAC,CACD,KAAK,CAAoB,CAAC,CAC1B,MACC,EACE,EAAG,EAAqB,UAAW,YAAY,EAC/C,EAAG,EAAqB,SAAU,MAAM,EACxC,EAAG,EAAqB,WAAY,MAAM,EAC1C,EAAQ,EAAqB,OAAQ,CAAG,CAC1C,CACF,EAEI,EAAS,IAAI,IACnB,IAAK,IAAM,KAAM,EACf,EAAO,IACL,EACA,EACG,OAAO,GAAQ,EAAK,SAAW,CAAE,CAAC,CAClC,IAAI,IAAS,CAAE,KAAM,EAAK,MAAO,aAAc,EAAK,YAAa,EAAE,CACxE,EAGF,OAAO,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"route.js","names":["createRouteHono"],"sources":["../../../../src/api/lib/route.ts"],"sourcesContent":["import type { RouteConfig, RouteHandler } from \"@hono/zod-openapi\";\nimport type { MiddlewareHandler } from \"hono\";\n\nimport { createRoute as createRouteHono } from \"@hono/zod-openapi\";\n\nimport type { EnvVitNode } from \"../middlewares/global.middleware\";\n\nimport { captchaMiddleware } from \"../middlewares/captcha.middleware\";\nimport { pluginMiddleware } from \"../middlewares/plugin.middleware\";\nimport { assertStaffPermission } from \"./check-staff-permission\";\n\nexport interface AdminStaffPermission {\n module: string;\n permission: string;\n plugin?: string;\n}\n\nexport const buildRoute = <\n Plugin extends string,\n P extends string,\n R extends Omit<RouteConfig, \"path\"> & {\n path: P;\n withCaptcha?: boolean;\n },\n>({\n route,\n handler,\n pluginId,\n adminStaffPermission,\n}: {\n adminStaffPermission?: AdminStaffPermission;\n handler: RouteHandler<R & { path: P }, EnvVitNode>;\n pluginId: Plugin;\n route: R;\n}): Route<Plugin, R & { path: P }> => {\n const pluginTag = pluginId\n .split(/[-_]/)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n\n const tags = [pluginTag, ...(route.tags ?? [])];\n\n const middleware: MiddlewareHandler[] = [pluginMiddleware(pluginId)];\n\n if (adminStaffPermission) {\n const { plugin, module, permission } = adminStaffPermission;\n middleware.push(async (c, next) => {\n await assertStaffPermission(c, {\n type: \"admin\",\n plugin: plugin ?? pluginId,\n module,\n permission,\n });\n await next();\n });\n }\n\n if (route.withCaptcha) {\n middleware.push(captchaMiddleware());\n }\n\n if (Array.isArray(route.middleware)) {\n middleware.push(...route.middleware);\n } else if (route.middleware) {\n middleware.push(route.middleware);\n }\n\n return {\n route: createRouteHono({\n tags,\n middleware,\n ...route,\n }),\n handler: handler as Route<Plugin, R & { path: P }>[\"handler\"],\n pluginId,\n };\n};\n\nexport interface Route<\n Plugin extends string = string,\n R extends RouteConfig = RouteConfig,\n> {\n handler: (...args: unknown[]) => Promise<Response> | Response;\n pluginId: Plugin;\n route: R;\n}\n"],"mappings":"oQAiBA,MAAa,GAOX,CACA,QACA,UACA,WACA,0BAMoC,CAMpC,IAAM,EAAO,CALK,EACf,MAAM,MAAM,CAAC,CACb,IAAI,GAAQ,EAAK,OAAO,CAAC,CAAC,CAAC,YAAY,EAAI,EAAK,MAAM,CAAC,CAAC,CAAC,CACzD,KAAK,GAEc,EAAG,GAAI,EAAM,MAAQ,CAAC,CAAE,EAExC,EAAkC,CAAC,EAAiB,CAAQ,CAAC,EAEnE,GAAI,EAAsB,CACxB,GAAM,CAAE,SAAQ,SAAQ,cAAe,EACvC,EAAW,KAAK,MAAO,EAAG,IAAS,CACjC,MAAM,EAAsB,EAAG,CAC7B,KAAM,QACN,OAAQ,GAAU,EAClB,SACA,YACF,CAAC,EACD,MAAM,EAAK,CACb,CAAC,CACH,CAYA,OAVI,EAAM,aACR,EAAW,KAAK,EAAkB,CAAC,EAGjC,MAAM,QAAQ,EAAM,UAAU,EAChC,EAAW,KAAK,GAAG,EAAM,UAAU,EAC1B,EAAM,YACf,EAAW,KAAK,EAAM,UAAU,EAG3B,CACL,MAAOA,EAAgB,CACrB,OACA,aACA,GAAG,CACL,CAAC,EACQ,UACT,UACF,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"staff-permission.js","names":[],"sources":["../../../../src/api/lib/staff-permission.ts"],"sourcesContent":["import type {\n PermissionsStaffArgs,\n StaffPermissionSet,\n} from \"./permission-staff\";\n\nexport const hasStaffPermission = (\n set: StaffPermissionSet,\n args: PermissionsStaffArgs,\n): boolean => {\n if (set.root) return true;\n\n return set.permissions.some(\n permission =>\n permission.plugin === args.plugin &&\n permission.module === args.module &&\n permission.permission === args.permission,\n );\n};\n\nexport const staffPermissionKey = ({\n plugin,\n module,\n permission,\n}: PermissionsStaffArgs): string => `${plugin}:${module}:${permission}`;\n"],"mappings":"AAKA,MAAa,GACX,EACA,IAEI,EAAI,KAAa,GAEd,EAAI,YAAY,KACrB,GACE,EAAW,SAAW,EAAK,QAC3B,EAAW,SAAW,EAAK,QAC3B,EAAW,aAAe,EAAK,UACnC,EAGW,GAAsB,CACjC,SACA,SACA,gBACkC,GAAG,EAAO,GAAG,EAAO,GAAG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"websocket.js","names":[],"sources":["../../../../src/api/lib/websocket.ts"],"sourcesContent":["import type { Context } from \"hono\";\nimport type { WSContext } from \"hono/ws\";\n\nimport type { EnvVitNode } from \"../middlewares/global.middleware\";\n\nexport { getWebSocketId } from \"@/ws/types\";\n\n/**\n * WebSocket context for controlling the connection. Use it to `send`, `close`\n * or read the `readyState`. The underlying runtime socket is exposed on\n * `ws.raw` and is left generic so the same handler works across runtimes\n * (node.js `ws`, Bun, ...).\n */\nexport type VitNodeWSContext = WSContext;\n\n/**\n * Arguments passed to a registered WebSocket's `onMessage` handler.\n *\n * - `TReceive` - the payload the client sends for this socket.\n * - `TSend` - the payload the server sends back to the client.\n */\nexport interface VitNodeWSMessageParams<TReceive = unknown, TSend = unknown> {\n /** Hono request context - reach the db, the user, the logger, etc. */\n c: Context<EnvVitNode>;\n /** The payload sent by the client for this socket. */\n data: TReceive;\n /** Send a payload back to this client on the same socket id. */\n send: (data: TSend) => void;\n /** Low-level WebSocket context (`send`, `close`, `readyState`, ...). */\n ws: VitNodeWSContext;\n}\n\n/**\n * A registered WebSocket. The generic argument types are only used at the\n * definition site (via {@link buildWebSocket}); once stored they are erased so\n * sockets with different message shapes can live in the same array.\n */\nexport interface BuildWebSocketReturn {\n description?: string;\n /**\n * The part of the id chosen by the developer. The full id a client targets\n * is `{pluginId}_{module}_{id}`.\n */\n id: string;\n onMessage: (params: VitNodeWSMessageParams) => Promise<void> | void;\n}\n\n/**\n * A registered WebSocket together with the plugin and module it belongs to.\n * The `module` is filled in when the module is built and the `pluginId` when\n * the plugin is built, mirroring how cron jobs are wired up.\n */\nexport interface WebSocketConfig extends BuildWebSocketReturn {\n module: string;\n pluginId: string;\n}\n\nexport function buildWebSocket<TReceive = unknown, TSend = unknown>(webSocket: {\n description?: string;\n id: string;\n onMessage: (\n params: VitNodeWSMessageParams<TReceive, TSend>,\n ) => Promise<void> | void;\n}): BuildWebSocketReturn {\n return webSocket as BuildWebSocketReturn;\n}\n"],"mappings":"mDAyDA,SAAgB,EAAoD,EAM3C,CACvB,OAAO,CACT"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"with-pagination.js","names":[],"sources":["../../../../src/api/lib/with-pagination.ts"],"sourcesContent":["import type { ColumnBaseConfig, Placeholder, SQL } from \"drizzle-orm\";\nimport type {\n PgColumn,\n PgTable,\n PgTableWithColumns,\n TableConfig,\n} from \"drizzle-orm/pg-core\";\nimport type { Context } from \"hono\";\n\nimport { z } from \"@hono/zod-openapi\";\nimport { and, asc, count, desc, gt, ilike, lt, or } from \"drizzle-orm\";\n\nfunction parsePaginationParams(params: {\n query: { cursor?: string; first?: string; last?: string };\n}): { cursor?: number; first?: number; last?: number } {\n const cursor = params.query.cursor\n ? parseInt(params.query.cursor, 10)\n : undefined;\n const first = params.query.first\n ? Math.min(parseInt(params.query.first, 10), 100)\n : undefined;\n const last = params.query.last\n ? Math.min(parseInt(params.query.last, 10), 100)\n : undefined;\n\n if (first !== undefined && last !== undefined) {\n throw new Error(\"Cannot specify both first and last\");\n }\n if (first !== undefined && first < 0) {\n throw new Error(\"first must be positive\");\n }\n if (last !== undefined && last < 0) {\n throw new Error(\"last must be positive\");\n }\n\n return { cursor, first, last };\n}\n\nfunction getOrderFn(\n isForward: boolean,\n order: \"asc\" | \"desc\",\n): typeof asc | typeof desc {\n if (isForward) {\n return order === \"asc\" ? asc : desc;\n }\n\n return order === \"asc\" ? desc : asc;\n}\n\nfunction buildWhereWithCursor<\n Primary extends ColumnBaseConfig<\"number\", string>,\n>(\n baseWhere: SQL | undefined,\n cursor: number | undefined,\n isForward: boolean,\n order: \"asc\" | \"desc\",\n table: PgTable,\n primaryCursor: PgColumn<Primary>,\n): SQL | undefined {\n if (!cursor) return baseWhere;\n\n const cursorFilter =\n (isForward && order === \"asc\") || (!isForward && order === \"desc\")\n ? gt\n : lt;\n\n const cursorWhere = cursorFilter(table[primaryCursor.name], cursor);\n\n return baseWhere ? and(baseWhere, cursorWhere) : cursorWhere;\n}\n\nfunction buildSearchWhere(\n search: PgColumn[] | undefined,\n term: string | undefined,\n): SQL | undefined {\n const trimmed = term?.trim();\n if (!search?.length || !trimmed) return undefined;\n\n return or(...search.map(column => ilike(column, `%${trimmed}%`)));\n}\n\nasync function fetchTotalCount(\n c: Context,\n table: PgTable,\n where: SQL | undefined,\n): Promise<number> {\n const [{ count: totalCount }] = await c\n .get(\"db\")\n .select({ count: count() })\n .from(table)\n .where(where);\n\n return totalCount;\n}\n\nexport async function withPagination<\n QueryMin extends Record<string, unknown>,\n T extends TableConfig,\n Primary extends ColumnBaseConfig<\"number\", string>,\n>({\n query,\n table,\n params,\n search,\n where: whereFromParams,\n primaryCursor,\n orderBy: orderByFromParams,\n c,\n}: {\n c: Context;\n orderBy: {\n column: PgColumn;\n order: \"asc\" | \"desc\";\n };\n params: {\n query: {\n cursor?: string;\n first?: string;\n last?: string;\n search?: string;\n };\n };\n primaryCursor: PgColumn<Primary>;\n query: (args: {\n limit: number | Placeholder<string, unknown>;\n orderBy: SQL;\n where: SQL | undefined;\n }) => Promise<QueryMin[]>;\n search?: T[\"columns\"][keyof T[\"columns\"]][];\n table: Omit<PgTableWithColumns<T>, \"enableRLS\">;\n where?: SQL;\n}): Promise<{\n edges: QueryMin[];\n pageInfo: {\n count: number;\n endCursor: null | number;\n hasNextPage: boolean;\n hasPreviousPage: boolean;\n startCursor: null | number;\n totalCount: number;\n };\n}> {\n const { cursor, first, last } = parsePaginationParams(params);\n\n const isForward = last === undefined;\n const orderFn = getOrderFn(isForward, orderByFromParams.order);\n const orderBy: SQL = orderFn(table[orderByFromParams.column.name]);\n\n const searchWhere = buildSearchWhere(search, params.query.search);\n const baseWhere =\n whereFromParams && searchWhere\n ? and(whereFromParams, searchWhere)\n : (whereFromParams ?? searchWhere);\n\n const where = buildWhereWithCursor(\n baseWhere,\n cursor,\n isForward,\n orderByFromParams.order,\n table,\n primaryCursor,\n );\n\n const totalCount = await fetchTotalCount(c, table, baseWhere);\n\n const limit = (first ?? last ?? 50) + 1;\n const edges = await query({ limit, where, orderBy });\n\n const requested = first ?? last ?? edges.length;\n const hasMore = edges.length > requested;\n const slicedEdges = edges.slice(0, requested);\n const finalEdges = isForward ? slicedEdges : slicedEdges.reverse();\n\n const startCursor: null | number =\n (finalEdges[0]?.[primaryCursor.name] as number) ?? null;\n const endCursor: null | number =\n (finalEdges.at(-1)?.[primaryCursor.name] as number) ?? null;\n\n return {\n pageInfo: {\n totalCount,\n count: finalEdges.length,\n hasNextPage: isForward ? hasMore : !!cursor,\n hasPreviousPage: isForward ? !!cursor : hasMore,\n startCursor,\n endCursor,\n },\n edges: finalEdges,\n };\n}\n\nexport const zodPaginationPageInfo = z.object({\n totalCount: z.number(),\n count: z.number(),\n hasNextPage: z.boolean(),\n hasPreviousPage: z.boolean(),\n startCursor: z.number().nullable(),\n endCursor: z.number().nullable(),\n});\n\nexport const zodPaginationQuery = z.object({\n cursor: z.string().optional(),\n first: z.string().optional(),\n last: z.string().optional(),\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"captcha.middleware.js","names":[],"sources":["../../../../src/api/middlewares/captcha.middleware.ts"],"sourcesContent":["import type { Context, Next } from \"hono\";\n\nimport { HTTPException } from \"hono/http-exception\";\n\nimport type { VitNodeApiConfig } from \"../../vitnode.config\";\n\nconst getResFromReCaptcha = async ({\n token,\n userIp,\n captchaConfig,\n}: {\n captchaConfig: NonNullable<Pick<VitNodeApiConfig, \"captcha\">[\"captcha\"]>;\n token: string;\n userIp: string;\n}): Promise<{ \"error-codes\"?: string[]; score: number; success: boolean }> => {\n if (captchaConfig.type === \"cloudflare_turnstile\") {\n const res = await fetch(\n \"https://challenges.cloudflare.com/turnstile/v0/siteverify\",\n {\n method: \"POST\",\n body: JSON.stringify({\n secret: captchaConfig.secretKey,\n response: token,\n remoteip: userIp,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n );\n\n const data: {\n \"error-codes\"?: string[];\n success: boolean;\n } = await res.json();\n\n return {\n success: data.success,\n score: data.success ? 1 : 0,\n \"error-codes\": data[\"error-codes\"],\n };\n }\n if (captchaConfig.type === \"recaptcha_v3\") {\n const res = await fetch(\n `https://www.google.com/recaptcha/api/siteverify?secret=${captchaConfig.secretKey}&response=${token}&remoteip=${userIp}`,\n {\n method: \"POST\",\n },\n );\n\n const data: {\n \"error-codes\"?: string[];\n score: number;\n success: boolean;\n } = await res.json();\n\n return {\n success: data.success,\n score: data.score ?? 0,\n \"error-codes\": data[\"error-codes\"],\n };\n }\n\n return {\n success: false,\n score: 0,\n };\n};\n\nexport const captchaMiddleware = () => {\n return async (c: Context, next: Next) => {\n const token = c.req.header(\"x-vitnode-captcha-token\");\n const captchaConfig = c.get(\"core\").captcha;\n if (!captchaConfig) {\n await next();\n\n return;\n }\n\n if (!token) {\n throw new HTTPException(400, {\n message: \"Captcha token is required\",\n });\n }\n\n const res = await getResFromReCaptcha({\n token,\n userIp: c.get(\"ipAddress\"),\n captchaConfig,\n });\n\n if (!res.success || res.score < 0.5) {\n throw new HTTPException(400, {\n message: \"Captcha validation failed\",\n });\n }\n\n await next();\n };\n};\n"],"mappings":"oDAMA,MAAM,EAAsB,MAAO,CACjC,QACA,SACA,mBAK4E,CAC5E,GAAI,EAAc,OAAS,uBAAwB,CAgBjD,IAAM,EAGF,MAAM,MAlBQ,MAChB,4DACA,CACE,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,OAAQ,EAAc,UACtB,SAAU,EACV,SAAU,CACZ,CAAC,EACD,QAAS,CACP,eAAgB,kBAClB,CACF,CACF,EAAA,CAKc,KAAK,EAEnB,MAAO,CACL,QAAS,EAAK,QACd,MAAO,KAAK,QACZ,cAAe,EAAK,cACtB,CACF,CACA,GAAI,EAAc,OAAS,eAAgB,CAQzC,IAAM,EAIF,MAAM,MAXQ,MAChB,0DAA0D,EAAc,UAAU,YAAY,EAAM,YAAY,IAChH,CACE,OAAQ,MACV,CACF,EAAA,CAMc,KAAK,EAEnB,MAAO,CACL,QAAS,EAAK,QACd,MAAO,EAAK,OAAS,EACrB,cAAe,EAAK,cACtB,CACF,CAEA,MAAO,CACL,QAAS,GACT,MAAO,CACT,CACF,EAEa,MACJ,MAAO,EAAY,IAAe,CACvC,IAAM,EAAQ,EAAE,IAAI,OAAO,yBAAyB,EAC9C,EAAgB,EAAE,IAAI,MAAM,CAAC,CAAC,QACpC,GAAI,CAAC,EAAe,CAClB,MAAM,EAAK,EAEX,MACF,CAEA,GAAI,CAAC,EACH,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,2BACX,CAAC,EAGH,IAAM,EAAM,MAAM,EAAoB,CACpC,QACA,OAAQ,EAAE,IAAI,WAAW,EACzB,eACF,CAAC,EAED,GAAI,CAAC,EAAI,SAAW,EAAI,MAAQ,GAC9B,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,2BACX,CAAC,EAGH,MAAM,EAAK,CACb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron-auth.middleware.js","names":[],"sources":["../../../../src/api/middlewares/cron-auth.middleware.ts"],"sourcesContent":["import type { Context, Next } from \"hono\";\n\nimport { HTTPException } from \"hono/http-exception\";\n\nexport const cronAuthMiddleware = () => {\n return async (c: Context, next: Next) => {\n const cronSecret = c.get(\"core\").cronSecret;\n if (!cronSecret) {\n throw new HTTPException(403, { message: \"Cron access not configured\" });\n }\n\n const authHeader = c.req.header(\"authorization\");\n const providedSecret = authHeader?.replace(\"Bearer \", \"\");\n\n if (providedSecret !== cronSecret) {\n throw new HTTPException(403, { message: \"Invalid cron authorization\" });\n }\n\n await next();\n };\n};\n"],"mappings":"oDAIA,MAAa,MACJ,MAAO,EAAY,IAAe,CACvC,IAAM,EAAa,EAAE,IAAI,MAAM,CAAC,CAAC,WACjC,GAAI,CAAC,EACH,MAAM,IAAI,EAAc,IAAK,CAAE,QAAS,4BAA6B,CAAC,EAMxE,GAHmB,EAAE,IAAI,OAAO,eACA,CAAC,EAAE,QAAQ,UAAW,EAAE,IAEjC,EACrB,MAAM,IAAI,EAAc,IAAK,CAAE,QAAS,4BAA6B,CAAC,EAGxE,MAAM,EAAK,CACb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"global.middleware.js","names":[],"sources":["../../../../src/api/middlewares/global.middleware.ts"],"sourcesContent":["import type { Context, Env, Next } from \"hono\";\nimport type { Redis } from \"ioredis\";\n\nimport { HTTPException } from \"hono/http-exception\";\n\nimport type { VitNodeApiConfig, VitNodeConfig } from \"@/vitnode.config\";\nimport type { VitNodeRealtime } from \"@/ws/registry\";\n\nimport { CacheModel } from \"@/api/lib/cache\";\nimport { EmailModel } from \"@/api/models/email\";\nimport { QueueModel } from \"@/api/models/queue\";\nimport { SessionModel } from \"@/api/models/session\";\nimport { SessionAdminModel } from \"@/api/models/session-admin\";\nimport { StorageModel } from \"@/api/models/storage\";\nimport { CONFIG } from \"@/lib/config\";\nimport { realtime } from \"@/ws/registry\";\n\nimport type { BuildCronReturn } from \"../lib/cron\";\nimport type { PermissionStaffCatalogEntry } from \"../lib/permission-staff\";\nimport type { BuildQueueTaskReturn } from \"../lib/queue\";\nimport type { WebSocketConfig } from \"../lib/websocket\";\nimport type { SSOApiPlugin } from \"../models/sso\";\n\nimport {\n loggerMiddleware,\n type LoggerMiddlewareType,\n} from \"../lib/logger-middleware\";\nimport { normalizePermissionStaffModules } from \"../lib/permission-staff\";\n\ndeclare module \"hono\" {\n // eslint-disable-next-line @typescript-eslint/no-empty-object-type\n interface ContextVariableMap extends EnvVariablesVitNode {}\n}\n\nexport interface EnvVitNode extends Env {\n Variables: EnvVariablesVitNode;\n}\n\nexport interface EnvVariablesVitNode {\n admin: null | {\n user: {\n avatarColor: string;\n birthday: Date | null;\n createdAt: Date;\n email: string;\n emailVerified: boolean;\n id: number;\n name: string;\n nameCode: string;\n newsletter: boolean;\n roleId: number;\n };\n };\n cache: CacheModel;\n core: {\n authorization: {\n adminCookieExpires: number;\n adminCookieName: string;\n cookie_expires: number;\n cookieName: string;\n cookieSecure: boolean;\n deviceCookieExpires: number;\n deviceCookieName: string;\n ssoAdapters: SSOApiPlugin[];\n };\n captcha?: Pick<VitNodeApiConfig, \"captcha\">[\"captcha\"];\n cron: (BuildCronReturn & { module: string; pluginId: string })[];\n cronSecret?: string;\n email?: VitNodeApiConfig[\"email\"];\n // Whether a cron adapter is configured (`buildApiConfig({ cron })`), i.e. an\n // in-process scheduler is running the registered jobs automatically. Without\n // it, jobs only run when the cron endpoint is triggered externally.\n hasCronAdapter: boolean;\n metadata: {\n shortTitle?: string;\n title: string;\n };\n pathToMessages: (path: string) => Promise<{ default: object }>;\n permissionStaff: PermissionStaffCatalogEntry[];\n plugins: { id: string }[];\n queue: (BuildQueueTaskReturn & { module: string; pluginId: string })[];\n storage?: VitNodeApiConfig[\"storage\"];\n webSockets: WebSocketConfig[];\n };\n db: Pick<VitNodeApiConfig, \"dbProvider\">[\"dbProvider\"];\n email: EmailModel;\n ipAddress: string;\n log: LoggerMiddlewareType;\n plugin: {\n id: string;\n };\n queue: QueueModel;\n realtime: VitNodeRealtime;\n storage: StorageModel;\n user: null | {\n avatarColor: string;\n birthday: Date | null;\n createdAt: Date;\n email: string;\n emailVerified: boolean;\n id: number;\n name: string;\n nameCode: string;\n newsletter: boolean;\n roleId: number;\n };\n}\n\nexport const globalMiddleware = ({\n authorization,\n metadata,\n email,\n dbProvider,\n captcha,\n cron,\n plugins,\n pathToMessages,\n storage,\n cacheClient,\n}: Pick<\n VitNodeApiConfig,\n | \"authorization\"\n | \"captcha\"\n | \"cron\"\n | \"dbProvider\"\n | \"email\"\n | \"pathToMessages\"\n | \"plugins\"\n | \"storage\"\n> &\n Pick<VitNodeConfig, \"metadata\"> & { cacheClient: null | Redis }) => {\n const pluginsMetadata = plugins.map(plugin => ({\n id: plugin.pluginId,\n }));\n\n const cronMetadata = plugins.flatMap(plugin =>\n (plugin.cronJobs ?? []).map(cronJob => ({\n pluginId: plugin.pluginId,\n module: cronJob.module,\n name: cronJob.name,\n schedule: cronJob.schedule,\n handler: cronJob.handler,\n description: cronJob.description,\n })),\n );\n\n const queueMetadata = plugins.flatMap(plugin =>\n (plugin.queueTasks ?? []).map(task => ({\n pluginId: plugin.pluginId,\n module: task.module,\n name: task.name,\n handler: task.handler,\n description: task.description,\n maxAttempts: task.maxAttempts,\n })),\n );\n\n const webSocketsMetadata: WebSocketConfig[] = plugins.flatMap(plugin =>\n (plugin.webSockets ?? []).map(webSocket => ({\n ...webSocket,\n pluginId: plugin.pluginId,\n })),\n );\n\n const permissionStaffMetadata: PermissionStaffCatalogEntry[] = plugins.map(\n plugin => ({\n pluginId: plugin.pluginId,\n admin: normalizePermissionStaffModules(plugin.permissionStaff?.admin),\n moderator: normalizePermissionStaffModules(\n plugin.permissionStaff?.moderator,\n ),\n }),\n );\n\n const ipHeaderKeys = [\n \"x-forwarded-for\",\n \"x-real-ip\",\n \"cf-connecting-ip\",\n \"x-client-ip\",\n \"x-forwarded\",\n \"x-cluster-client-ip\",\n \"forwarded-for\",\n \"forwarded\",\n \"via\",\n \"remote-addr\",\n \"client-ip\",\n \"ip\",\n \"x-ip\",\n \"true-client-ip\",\n \"fastly-client-ip\",\n \"x-fastly-client-ip\",\n ];\n\n return async (c: Context, next: Next) => {\n let ipAddress: string | undefined;\n\n // Optimize: Try both header methods in a single loop\n for (const key of ipHeaderKeys) {\n ipAddress = c.req.header(key);\n if (ipAddress) break;\n\n ipAddress = c.req.raw.headers.get(key) ?? undefined;\n if (ipAddress) break;\n }\n\n // Fallback to localhost if nothing found\n c.set(\"ipAddress\", ipAddress ?? \"127.0.0.1\");\n c.set(\"db\", dbProvider);\n c.set(\"cache\", new CacheModel(cacheClient, c));\n c.set(\"email\", new EmailModel(c));\n c.set(\"queue\", new QueueModel(c));\n c.set(\"storage\", new StorageModel(c));\n c.set(\"realtime\", realtime);\n\n c.set(\"core\", {\n pathToMessages,\n metadata,\n email,\n storage,\n authorization: {\n cookieName: authorization?.cookieName ?? \"vitnode_auth\",\n cookie_expires:\n authorization?.cookieExpires ?? 1000 * 60 * 60 * 24 * 90, // 90 days\n ssoAdapters: authorization?.ssoAdapters ?? [],\n deviceCookieName: authorization?.deviceCookieName ?? \"vitnode_device\",\n deviceCookieExpires:\n authorization?.deviceCookieExpires ?? 1000 * 60 * 60 * 24 * 365, // 1 year,\n adminCookieName: authorization?.adminCookieName ?? \"vitnode_auth_admin\",\n adminCookieExpires:\n authorization?.adminCookieExpires ?? 1000 * 60 * 60 * 24 * 1, // 1 day\n cookieSecure: authorization?.cookieSecure ?? true,\n },\n captcha,\n cronSecret: CONFIG.cronJobSecret,\n hasCronAdapter: !!cron,\n plugins: pluginsMetadata,\n cron: cronMetadata,\n queue: queueMetadata,\n webSockets: webSocketsMetadata,\n permissionStaff: permissionStaffMetadata,\n });\n\n const user = await new SessionModel(c).getUser();\n c.set(\"user\", user);\n c.set(\"admin\", null);\n c.set(\"log\", loggerMiddleware(c));\n\n await next();\n };\n};\n\nexport const globalAdminMiddleware = () => {\n return async (c: Context, next: Next) => {\n const user = await new SessionAdminModel(c).getUser();\n if (!user) throw new HTTPException(403);\n c.set(\"admin\", {\n user,\n });\n\n await next();\n };\n};\n"],"mappings":"ilBA4GA,MAAa,GAAoB,CAC/B,gBACA,WACA,QACA,aACA,UACA,OACA,UACA,iBACA,UACA,iBAYoE,CACpE,IAAM,EAAkB,EAAQ,IAAI,IAAW,CAC7C,GAAI,EAAO,QACb,EAAE,EAEI,EAAe,EAAQ,QAAQ,IAClC,EAAO,UAAY,CAAC,EAAA,CAAG,IAAI,IAAY,CACtC,SAAU,EAAO,SACjB,OAAQ,EAAQ,OAChB,KAAM,EAAQ,KACd,SAAU,EAAQ,SAClB,QAAS,EAAQ,QACjB,YAAa,EAAQ,WACvB,EAAE,CACJ,EAEM,EAAgB,EAAQ,QAAQ,IACnC,EAAO,YAAc,CAAC,EAAA,CAAG,IAAI,IAAS,CACrC,SAAU,EAAO,SACjB,OAAQ,EAAK,OACb,KAAM,EAAK,KACX,QAAS,EAAK,QACd,YAAa,EAAK,YAClB,YAAa,EAAK,WACpB,EAAE,CACJ,EAEM,EAAwC,EAAQ,QAAQ,IAC3D,EAAO,YAAc,CAAC,EAAA,CAAG,IAAI,IAAc,CAC1C,GAAG,EACH,SAAU,EAAO,QACnB,EAAE,CACJ,EAEM,EAAyD,EAAQ,IACrE,IAAW,CACT,SAAU,EAAO,SACjB,MAAO,EAAgC,EAAO,iBAAiB,KAAK,EACpE,UAAW,EACT,EAAO,iBAAiB,SAC1B,CACF,EACF,EAEM,EAAe,CACnB,kBACA,YACA,mBACA,cACA,cACA,sBACA,gBACA,YACA,MACA,cACA,YACA,KACA,OACA,iBACA,mBACA,oBACF,EAEA,OAAO,MAAO,EAAY,IAAe,CACvC,IAAI,EAGJ,IAAK,IAAM,KAAO,EAKhB,GAJA,EAAY,EAAE,IAAI,OAAO,CAAG,EACxB,IAEJ,EAAY,EAAE,IAAI,IAAI,QAAQ,IAAI,CAAG,GAAK,IAAA,GACtC,GAAW,MAIjB,EAAE,IAAI,YAAa,GAAa,WAAW,EAC3C,EAAE,IAAI,KAAM,CAAU,EACtB,EAAE,IAAI,QAAS,IAAI,EAAW,EAAa,CAAC,CAAC,EAC7C,EAAE,IAAI,QAAS,IAAI,EAAW,CAAC,CAAC,EAChC,EAAE,IAAI,QAAS,IAAI,EAAW,CAAC,CAAC,EAChC,EAAE,IAAI,UAAW,IAAI,EAAa,CAAC,CAAC,EACpC,EAAE,IAAI,WAAY,CAAQ,EAE1B,EAAE,IAAI,OAAQ,CACZ,iBACA,WACA,QACA,UACA,cAAe,CACb,WAAY,GAAe,YAAc,eACzC,eACE,GAAe,eAAiB,IAAO,GAAK,GAAK,GAAK,GACxD,YAAa,GAAe,aAAe,CAAC,EAC5C,iBAAkB,GAAe,kBAAoB,iBACrD,oBACE,GAAe,qBAAuB,IAAO,GAAK,GAAK,GAAK,IAC9D,gBAAiB,GAAe,iBAAmB,qBACnD,mBACE,GAAe,oBAAsB,IAAO,GAAK,GAAK,GAAK,EAC7D,aAAc,GAAe,cAAgB,EAC/C,EACA,UACA,WAAY,EAAO,cACnB,eAAgB,CAAC,CAAC,EAClB,QAAS,EACT,KAAM,EACN,MAAO,EACP,WAAY,EACZ,gBAAiB,CACnB,CAAC,EAED,IAAM,EAAO,MAAM,IAAI,EAAa,CAAC,CAAC,CAAC,QAAQ,EAC/C,EAAE,IAAI,OAAQ,CAAI,EAClB,EAAE,IAAI,QAAS,IAAI,EACnB,EAAE,IAAI,MAAO,EAAiB,CAAC,CAAC,EAEhC,MAAM,EAAK,CACb,CACF,EAEa,MACJ,MAAO,EAAY,IAAe,CACvC,IAAM,EAAO,MAAM,IAAI,EAAkB,CAAC,CAAC,CAAC,QAAQ,EACpD,GAAI,CAAC,EAAM,MAAM,IAAI,EAAc,GAAG,EACtC,EAAE,IAAI,QAAS,CACb,MACF,CAAC,EAED,MAAM,EAAK,CACb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin.middleware.js","names":[],"sources":["../../../../src/api/middlewares/plugin.middleware.ts"],"sourcesContent":["import type { Context, Next } from \"hono\";\n\n// Kept in its own light module (no heavy imports) so `buildRoute` can use it\n// without pulling the full global middleware - and its models (StorageModel →\n// sharp, etc.) - into bundles that transitively import route definitions.\nexport const pluginMiddleware = (pluginId: string) => {\n return async (c: Context, next: Next) => {\n c.set(\"plugin\", {\n id: pluginId,\n });\n await next();\n };\n};\n"],"mappings":"AAKA,MAAa,EAAoB,GACxB,MAAO,EAAY,IAAe,CACvC,EAAE,IAAI,SAAU,CACd,GAAI,CACN,CAAC,EACD,MAAM,EAAK,CACb"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate-limiter.middleware.js","names":[],"sources":["../../../../src/api/middlewares/rate-limiter.middleware.ts"],"sourcesContent":["import type { Context, Next } from \"hono\";\nimport type { Redis } from \"ioredis\";\n\nimport {\n type IRateLimiterOptions,\n type RateLimiterAbstract,\n RateLimiterMemory,\n RateLimiterRedis,\n} from \"rate-limiter-flexible\";\n\nimport { CONFIG } from \"../../lib/config\";\n\nconst createRateLimiter = ({\n keyPrefix,\n storeClient,\n ...options\n}: Omit<IRateLimiterOptions, \"keyPrefix\"> & {\n keyPrefix: string;\n storeClient?: null | Redis;\n}): RateLimiterAbstract => {\n // With a Redis client the counters are shared across all instances, so rate\n // limits hold up behind a load balancer. `insuranceLimiter` falls back to\n // in-memory limiting if Redis becomes unavailable, so requests keep flowing.\n if (storeClient) {\n return new RateLimiterRedis({\n storeClient,\n keyPrefix,\n ...options,\n insuranceLimiter: new RateLimiterMemory({ keyPrefix, ...options }),\n });\n }\n\n return new RateLimiterMemory({\n keyPrefix,\n ...options,\n });\n};\n\nexport const rateLimiterMiddleware = (\n options?: Omit<IRateLimiterOptions, \"keyPrefix\">,\n storeClient?: null | Redis,\n) => {\n if (CONFIG.node_development) {\n // In development, we disable the rate limiter for easier testing\n return async (_c: Context, next: Next) => {\n await next();\n };\n }\n\n const rateLimiter = createRateLimiter({\n ...options,\n keyPrefix: \"vitnode-api-rate-limiter\",\n duration: options?.duration ?? 60,\n points: options?.points ?? 80,\n storeClient,\n });\n\n return async (c: Context, next: Next) => {\n const key = c.get(\"ipAddress\");\n\n try {\n await rateLimiter.consume(key);\n } catch {\n return c.text(\"Too Many Requests\", 429);\n }\n\n await next();\n };\n};\n"],"mappings":"6HAYA,MAAM,GAAqB,CACzB,YACA,cACA,GAAG,KAQC,EACK,IAAI,EAAiB,CAC1B,cACA,YACA,GAAG,EACH,iBAAkB,IAAI,EAAkB,CAAE,YAAW,GAAG,CAAQ,CAAC,CACnE,CAAC,EAGI,IAAI,EAAkB,CAC3B,YACA,GAAG,CACL,CAAC,EAGU,GACX,EACA,IACG,CACH,GAAI,EAAO,iBAET,OAAO,MAAO,EAAa,IAAe,CACxC,MAAM,EAAK,CACb,EAGF,IAAM,EAAc,EAAkB,CACpC,GAAG,EACH,UAAW,2BACX,SAAU,GAAS,UAAY,GAC/B,OAAQ,GAAS,QAAU,GAC3B,aACF,CAAC,EAED,OAAO,MAAO,EAAY,IAAe,CACvC,IAAM,EAAM,EAAE,IAAI,WAAW,EAE7B,GAAI,CACF,MAAM,EAAY,QAAQ,CAAG,CAC/B,MAAQ,CACN,OAAO,EAAE,KAAK,oBAAqB,GAAG,CACxC,CAEA,MAAM,EAAK,CACb,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"device.js","names":[],"sources":["../../../../src/api/models/device.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { eq } from \"drizzle-orm\";\nimport { getCookie, setCookie } from \"hono/cookie\";\nimport { randomBytes } from \"node:crypto\";\n\nimport { core_sessions_known_devices } from \"@/database/sessions\";\nimport { CONFIG } from \"@/lib/config\";\n\nexport class DeviceModel {\n constructor(c: Context) {\n this.c = c;\n }\n protected readonly c: Context;\n\n private async createDevice() {\n const publicId = randomBytes(16).toString(\"hex\");\n\n const [device] = await this.c\n .get(\"db\")\n .insert(core_sessions_known_devices)\n .values({\n publicId,\n ipAddress: this.c.get(\"ipAddress\"),\n userAgent: this.getUserAgent(),\n })\n .returning({ id: core_sessions_known_devices.id });\n\n this.setCookieDevice(publicId);\n\n return { id: device.id, publicId };\n }\n\n private getUserAgent() {\n return this.c.req.header(\"User-Agent\") ?? \"node\";\n }\n\n private setCookieDevice(publicDeviceId: string) {\n setCookie(\n this.c,\n this.c.get(\"core\").authorization.deviceCookieName,\n publicDeviceId,\n {\n httpOnly: true,\n secure: this.c.get(\"core\").authorization.cookieSecure,\n path: \"/\",\n domain: CONFIG.web.hostname,\n expires: new Date(\n Date.now() + this.c.get(\"core\").authorization.deviceCookieExpires,\n ),\n },\n );\n }\n\n async getDeviceId() {\n const deviceIdFromCookie = getCookie(\n this.c,\n this.c.get(\"core\").authorization.deviceCookieName,\n );\n\n try {\n if (deviceIdFromCookie) {\n const [device] = await this.c\n .get(\"db\")\n .select({\n id: core_sessions_known_devices.id,\n })\n .from(core_sessions_known_devices)\n .where(eq(core_sessions_known_devices.publicId, deviceIdFromCookie));\n\n if (!device) {\n return await this.createDevice();\n }\n\n await this.c\n .get(\"db\")\n .update(core_sessions_known_devices)\n .set({\n ipAddress: this.c.get(\"ipAddress\"),\n userAgent: this.getUserAgent(),\n })\n .where(eq(core_sessions_known_devices.publicId, deviceIdFromCookie));\n\n return {\n id: device.id,\n publicId: deviceIdFromCookie,\n };\n }\n } catch {\n /* empty */\n }\n\n return await this.createDevice();\n }\n}\n"],"mappings":"wPASA,IAAa,EAAb,KAAyB,CACvB,YAAY,EAAY,CACtB,KAAK,EAAI,CACX,CACA,EAEA,MAAc,cAAe,CAC3B,IAAM,EAAW,EAAY,EAAE,CAAC,CAAC,SAAS,KAAK,EAEzC,CAAC,GAAU,MAAM,KAAK,EACzB,IAAI,IAAI,CAAC,CACT,OAAO,CAA2B,CAAC,CACnC,OAAO,CACN,WACA,UAAW,KAAK,EAAE,IAAI,WAAW,EACjC,UAAW,KAAK,aAAa,CAC/B,CAAC,CAAC,CACD,UAAU,CAAE,GAAI,EAA4B,EAAG,CAAC,EAInD,OAFA,KAAK,gBAAgB,CAAQ,EAEtB,CAAE,GAAI,EAAO,GAAI,UAAS,CACnC,CAEA,cAAuB,CACrB,OAAO,KAAK,EAAE,IAAI,OAAO,YAAY,GAAK,MAC5C,CAEA,gBAAwB,EAAwB,CAC9C,EACE,KAAK,EACL,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,cAAc,iBACjC,EACA,CACE,SAAU,GACV,OAAQ,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,cAAc,aACzC,KAAM,IACN,OAAQ,EAAO,IAAI,SACnB,QAAS,IAAI,KACX,KAAK,IAAI,EAAI,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,cAAc,mBAChD,CACF,CACF,CACF,CAEA,MAAM,aAAc,CAClB,IAAM,EAAqB,EACzB,KAAK,EACL,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,cAAc,gBACnC,EAEA,GAAI,CACF,GAAI,EAAoB,CACtB,GAAM,CAAC,GAAU,MAAM,KAAK,EACzB,IAAI,IAAI,CAAC,CACT,OAAO,CACN,GAAI,EAA4B,EAClC,CAAC,CAAC,CACD,KAAK,CAA2B,CAAC,CACjC,MAAM,EAAG,EAA4B,SAAU,CAAkB,CAAC,EAerE,OAbK,GAIL,MAAM,KAAK,EACR,IAAI,IAAI,CAAC,CACT,OAAO,CAA2B,CAAC,CACnC,IAAI,CACH,UAAW,KAAK,EAAE,IAAI,WAAW,EACjC,UAAW,KAAK,aAAa,CAC/B,CAAC,CAAC,CACD,MAAM,EAAG,EAA4B,SAAU,CAAkB,CAAC,EAE9D,CACL,GAAI,EAAO,GACX,SAAU,CACZ,GAfS,MAAM,KAAK,aAAa,CAgBnC,CACF,MAAQ,CAER,CAEA,OAAO,MAAM,KAAK,aAAa,CACjC,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"email.js","names":[],"sources":["../../../../src/api/models/email.ts"],"sourcesContent":["import type { Context, ContextVariableMap } from \"hono\";\nimport type React from \"react\";\n\nimport { HTTPException } from \"hono/http-exception\";\nimport { render } from \"react-email\";\n\nimport type { DefaultTemplateEmailProps } from \"../../emails/default-template\";\n\nimport { CONFIG } from \"../../lib/config\";\n\ninterface EmailModelSendArgsWithUser {\n locale?: never;\n to?: never;\n user: {\n email: string;\n id: number;\n language: string;\n name?: string;\n nameCode?: string;\n };\n}\n\ninterface EmailModelSendArgsWithEmail {\n locale: string;\n to: string;\n user?: never;\n}\n\nexport interface EmailApiPlugin {\n sendEmail: (args: {\n html: string;\n metadata: ContextVariableMap[\"core\"][\"metadata\"];\n replyTo?: string;\n subject: string;\n text: string;\n to: string;\n }) => Promise<void>;\n}\n\nexport type EmailModelSendArgs = {\n content: (\n props: Omit<DefaultTemplateEmailProps, \"children\"> &\n Pick<EmailModelSendArgs, \"user\">,\n ) => React.ReactNode;\n html?: string;\n locale?: string;\n replyTo?: string;\n subject:\n ((props: Pick<DefaultTemplateEmailProps, \"i18n\">) => string) | string;\n // eslint-disable-next-line perfectionist/sort-intersection-types\n} & (EmailModelSendArgsWithEmail | EmailModelSendArgsWithUser);\n\nexport interface BuiltEmail {\n html: string;\n replyTo?: string;\n subject: string;\n text: string;\n to: string;\n}\n\nexport class EmailModel {\n constructor(c: Context) {\n this.c = c;\n }\n\n protected readonly c: Context;\n\n private requireProvider() {\n const provider = this.c.get(\"core\").email?.adapter;\n if (!provider) {\n throw new HTTPException(500, {\n message: \"Email provider not found\",\n });\n }\n\n return provider;\n }\n\n async build({\n html,\n replyTo,\n subject,\n to,\n user,\n content,\n locale: localeFromArgs,\n }: EmailModelSendArgs): Promise<BuiltEmail> {\n const core = this.c.get(\"core\");\n const locale = localeFromArgs ?? user?.language ?? \"en\";\n const pluginIds: string[] = [\n \"@vitnode/core\",\n ...core.plugins.map(plugin => plugin.id),\n ];\n\n const messagesPromises = pluginIds.map(async pluginId => {\n try {\n const path = `${pluginId}/${locale}.json`;\n const messages = await core.pathToMessages(path);\n\n return messages.default;\n } catch {\n return {};\n }\n });\n\n const allMessages = await Promise.all(messagesPromises);\n\n // Optimize: Use Object.assign instead of reduce with spread operator\n // to avoid creating intermediate objects on each iteration\n const messages = Object.assign({}, ...allMessages) as Record<\n string,\n string\n >;\n\n const htmlContent =\n html ??\n content({\n i18n: {\n locale,\n messages,\n },\n templateProps: {\n metadata: {\n ...core.metadata,\n url: CONFIG.web.href,\n },\n logo: core.email?.logo,\n },\n user,\n });\n\n const emailTo = user?.email ?? to;\n if (!emailTo) {\n throw new HTTPException(400, {\n message: \"Email address is required\",\n });\n }\n\n return {\n to: emailTo,\n subject:\n typeof subject === \"function\"\n ? subject({ i18n: { locale, messages } })\n : subject,\n html: await render(htmlContent),\n text: await render(htmlContent, { plainText: true }),\n replyTo,\n };\n }\n\n async deliver(email: BuiltEmail): Promise<void> {\n const provider = this.requireProvider();\n\n await provider.sendEmail({\n html: email.html,\n to: email.to,\n subject: email.subject,\n replyTo: email.replyTo,\n metadata: this.c.get(\"core\").metadata,\n text: email.text,\n });\n }\n\n async send(args: EmailModelSendArgs): Promise<void> {\n this.requireProvider();\n const email = await this.build(args);\n\n await this.c.get(\"queue\").dispatch({\n name: \"send-email\",\n payload: {\n to: email.to,\n subject: email.subject,\n html: email.html,\n text: email.text,\n ...(email.replyTo ? { replyTo: email.replyTo } : {}),\n },\n });\n }\n}\n"],"mappings":"sIA4DA,IAAa,EAAb,KAAwB,CACtB,YAAY,EAAY,CACtB,KAAK,EAAI,CACX,CAEA,EAEA,iBAA0B,CACxB,IAAM,EAAW,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,OAAO,QAC3C,GAAI,CAAC,EACH,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,0BACX,CAAC,EAGH,OAAO,CACT,CAEA,MAAM,MAAM,CACV,OACA,UACA,UACA,KACA,OACA,UACA,OAAQ,GACkC,CAC1C,IAAM,EAAO,KAAK,EAAE,IAAI,MAAM,EACxB,EAAS,GAAkB,GAAM,UAAY,KAM7C,EAAmB,CAJvB,gBACA,GAAG,EAAK,QAAQ,IAAI,GAAU,EAAO,EAAE,CAGR,CAAC,CAAC,IAAI,KAAM,IAAY,CACvD,GAAI,CACF,IAAM,EAAO,GAAG,EAAS,GAAG,EAAO,OAGnC,OAAO,MAFgB,EAAK,eAAe,CAAI,EAAA,CAE/B,OAClB,MAAQ,CACN,MAAO,CAAC,CACV,CACF,CAAC,EAEK,EAAc,MAAM,QAAQ,IAAI,CAAgB,EAIhD,EAAW,OAAO,OAAO,CAAC,EAAG,GAAG,CAAW,EAK3C,EACJ,GACA,EAAQ,CACN,KAAM,CACJ,SACA,UACF,EACA,cAAe,CACb,SAAU,CACR,GAAG,EAAK,SACR,IAAK,EAAO,IAAI,IAClB,EACA,KAAM,EAAK,OAAO,IACpB,EACA,MACF,CAAC,EAEG,EAAU,GAAM,OAAS,EAC/B,GAAI,CAAC,EACH,MAAM,IAAI,EAAc,IAAK,CAC3B,QAAS,2BACX,CAAC,EAGH,MAAO,CACL,GAAI,EACJ,QACE,OAAO,GAAY,WACf,EAAQ,CAAE,KAAM,CAAE,SAAQ,UAAS,CAAE,CAAC,EACtC,EACN,KAAM,MAAM,EAAO,CAAW,EAC9B,KAAM,MAAM,EAAO,EAAa,CAAE,UAAW,EAAK,CAAC,EACnD,SACF,CACF,CAEA,MAAM,QAAQ,EAAkC,CAG9C,MAFiB,KAAK,gBAET,CAAC,CAAC,UAAU,CACvB,KAAM,EAAM,KACZ,GAAI,EAAM,GACV,QAAS,EAAM,QACf,QAAS,EAAM,QACf,SAAU,KAAK,EAAE,IAAI,MAAM,CAAC,CAAC,SAC7B,KAAM,EAAM,IACd,CAAC,CACH,CAEA,MAAM,KAAK,EAAyC,CAClD,KAAK,gBAAgB,EACrB,IAAM,EAAQ,MAAM,KAAK,MAAM,CAAI,EAEnC,MAAM,KAAK,EAAE,IAAI,OAAO,CAAC,CAAC,SAAS,CACjC,KAAM,aACN,QAAS,CACP,GAAI,EAAM,GACV,QAAS,EAAM,QACf,KAAM,EAAM,KACZ,KAAM,EAAM,KACZ,GAAI,EAAM,QAAU,CAAE,QAAS,EAAM,OAAQ,EAAI,CAAC,CACpD,CACF,CAAC,CACH,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"password.js","names":[],"sources":["../../../../src/api/models/password.ts"],"sourcesContent":["import crypto from \"node:crypto\";\n\nexport class PasswordModel {\n async encryptPassword(password: string): Promise<string> {\n return await new Promise((resolve, reject) => {\n const salt = crypto.randomBytes(8).toString(\"hex\");\n\n crypto.scrypt(password, salt, 64, (err, derivedKey) => {\n if (err) reject(err);\n\n resolve(`${salt}:${derivedKey.toString(\"hex\")}`);\n });\n });\n }\n\n async verifyPassword(password: string, hash: string): Promise<boolean> {\n return await new Promise((resolve, reject) => {\n const [salt, key] = hash.split(\":\");\n const keyBuffer = Buffer.from(key, \"hex\");\n\n crypto.scrypt(password, salt, 64, (err, derivedKey) => {\n if (err) reject(err);\n\n if (keyBuffer.length !== derivedKey.length) {\n crypto.timingSafeEqual(derivedKey, derivedKey);\n resolve(false);\n } else {\n const areEqual = crypto.timingSafeEqual(keyBuffer, derivedKey);\n resolve(areEqual);\n }\n });\n });\n }\n}\n\nexport class ForgotPasswordTokenModel {\n generateResetToken() {\n return crypto.randomBytes(32).toString(\"base64url\");\n }\n\n hashResetToken(token: string) {\n return crypto.createHash(\"sha256\").update(token).digest(\"hex\");\n }\n}\n"],"mappings":"2BAEA,IAAa,EAAb,KAA2B,CACzB,MAAM,gBAAgB,EAAmC,CACvD,OAAO,MAAM,IAAI,SAAS,EAAS,IAAW,CAC5C,IAAM,EAAO,EAAO,YAAY,CAAC,CAAC,CAAC,SAAS,KAAK,EAEjD,EAAO,OAAO,EAAU,EAAM,IAAK,EAAK,IAAe,CACjD,GAAK,EAAO,CAAG,EAEnB,EAAQ,GAAG,EAAK,GAAG,EAAW,SAAS,KAAK,GAAG,CACjD,CAAC,CACH,CAAC,CACH,CAEA,MAAM,eAAe,EAAkB,EAAgC,CACrE,OAAO,MAAM,IAAI,SAAS,EAAS,IAAW,CAC5C,GAAM,CAAC,EAAM,GAAO,EAAK,MAAM,GAAG,EAC5B,EAAY,OAAO,KAAK,EAAK,KAAK,EAExC,EAAO,OAAO,EAAU,EAAM,IAAK,EAAK,IAAe,CACjD,GAAK,EAAO,CAAG,EAEf,EAAU,SAAW,EAAW,OAKlC,EADiB,EAAO,gBAAgB,EAAW,CACpC,CAAC,GAJhB,EAAO,gBAAgB,EAAY,CAAU,EAC7C,EAAQ,EAAK,EAKjB,CAAC,CACH,CAAC,CACH,CACF,EAEa,EAAb,KAAsC,CACpC,oBAAqB,CACnB,OAAO,EAAO,YAAY,EAAE,CAAC,CAAC,SAAS,WAAW,CACpD,CAEA,eAAe,EAAe,CAC5B,OAAO,EAAO,WAAW,QAAQ,CAAC,CAAC,OAAO,CAAK,CAAC,CAAC,OAAO,KAAK,CAC/D,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue.js","names":[],"sources":["../../../../src/api/models/queue.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { core_queue } from \"@/database/queue\";\n\nexport interface QueueDispatchArgs {\n availableAt?: Date;\n maxAttempts?: number;\n name: string;\n payload?: Record<string, unknown>;\n priority?: number;\n queue?: string;\n}\n\n/**\n * Enqueue background work into the database-backed task queue, exposed on the\n * request context as `c.get(\"queue\")`. Rows are drained by the `process-queue`\n * cron job. The task `name` must match a handler registered via\n * {@link buildQueueTask} in a module's `queueTasks`.\n */\nexport class QueueModel {\n constructor(c: Context) {\n this.c = c;\n }\n\n protected readonly c: Context;\n\n async dispatch({\n name,\n payload = {},\n queue = \"default\",\n priority = 0,\n maxAttempts,\n availableAt,\n }: QueueDispatchArgs): Promise<{ id: number }> {\n const pluginId = this.c.get(\"plugin\")?.id ?? \"@vitnode/core\";\n\n const registeredTask = this.c\n .get(\"core\")\n .queue.find(task => task.pluginId === pluginId && task.name === name);\n\n const [row] = await this.c\n .get(\"db\")\n .insert(core_queue)\n .values({\n pluginId,\n name,\n queue,\n payload,\n priority,\n maxAttempts: maxAttempts ?? registeredTask?.maxAttempts ?? 3,\n availableAt: availableAt ?? new Date(),\n })\n .returning({ id: core_queue.id });\n\n return row;\n }\n}\n"],"mappings":"qDAmBA,IAAa,EAAb,KAAwB,CACtB,YAAY,EAAY,CACtB,KAAK,EAAI,CACX,CAEA,EAEA,MAAM,SAAS,CACb,OACA,UAAU,CAAC,EACX,QAAQ,UACR,WAAW,EACX,cACA,eAC6C,CAC7C,IAAM,EAAW,KAAK,EAAE,IAAI,QAAQ,CAAC,EAAE,IAAM,gBAEvC,EAAiB,KAAK,EACzB,IAAI,MAAM,CAAC,CACX,MAAM,KAAK,GAAQ,EAAK,WAAa,GAAY,EAAK,OAAS,CAAI,EAEhE,CAAC,GAAO,MAAM,KAAK,EACtB,IAAI,IAAI,CAAC,CACT,OAAO,CAAU,CAAC,CAClB,OAAO,CACN,WACA,OACA,QACA,UACA,WACA,YAAa,GAAe,GAAgB,aAAe,EAC3D,YAAa,GAAe,IAAI,IAClC,CAAC,CAAC,CACD,UAAU,CAAE,GAAI,EAAW,EAAG,CAAC,EAElC,OAAO,CACT,CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-admin.js","names":[],"sources":["../../../../src/api/models/session-admin.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { and, eq, gt, or } from \"drizzle-orm\"; // Removed 'or' as it's safer not to use it here\nimport { deleteCookie, getCookie, setCookie } from \"hono/cookie\";\nimport { HTTPException } from \"hono/http-exception\";\n\nimport { core_admin_permissions, core_admin_sessions } from \"@/database/admins\";\nimport { CONFIG } from \"@/lib/config\";\n\nimport { DeviceModel } from \"./device\";\nimport {\n adminSessionCacheKey,\n reviveSessionUser,\n sessionCacheTtl,\n type SessionUser,\n} from \"./session-cache\";\nimport { UserModel } from \"./user\";\n\nexport class SessionAdminModel {\n constructor(c: Context) {\n this.c = c;\n }\n protected readonly c: Context;\n\n private async hashToken(token: string): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(token);\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n const bytes = new Uint8Array(hashBuffer);\n\n // Optimize: Use direct iteration instead of Array.from + map\n let result = \"\";\n for (const byte of bytes) {\n result += byte.toString(16).padStart(2, \"0\");\n }\n\n return result;\n }\n\n async checkIfUserIsAdmin(userId: number) {\n const user = await new UserModel().getUserById({ id: userId, c: this.c });\n if (!user) return false;\n\n const [permission] = await this.c\n .get(\"db\")\n .select()\n .from(core_admin_permissions)\n .where(\n or(\n eq(core_admin_permissions.userId, user.id),\n eq(core_admin_permissions.roleId, user.roleId),\n ),\n )\n .limit(1);\n\n return !!permission;\n }\n\n async createSessionByUserId(userId: number) {\n const isAdmin = await this.checkIfUserIsAdmin(userId);\n if (!isAdmin) {\n throw new HTTPException(403, { message: \"Forbidden\" });\n }\n\n const randomBytes = new Uint8Array(64);\n crypto.getRandomValues(randomBytes);\n\n // Optimize: Use direct iteration instead of Array.from + map\n let token = \"\";\n for (const byte of randomBytes) {\n token += byte.toString(16).padStart(2, \"0\");\n }\n\n const hashedToken = await this.hashToken(token);\n const device = await new DeviceModel(this.c).getDeviceId();\n\n await this.c\n .get(\"db\")\n .insert(core_admin_sessions)\n .values({\n token: hashedToken,\n userId,\n expiresAt: new Date(\n Date.now() + this.c.get(\"core\").authorization.adminCookieExpires,\n ),\n deviceId: device.id,\n });\n\n setCookie(this.c, this.c.get(\"core\").authorization.adminCookieName, token, {\n httpOnly: true,\n secure: this.c.get(\"core\").authorization.cookieSecure,\n path: \"/\",\n expires: new Date(\n Date.now() + this.c.get(\"core\").authorization.adminCookieExpires,\n ),\n domain: CONFIG.web.hostname,\n });\n\n return { token };\n }\n\n async deleteSession() {\n const token = getCookie(\n this.c,\n this.c.get(\"core\").authorization.adminCookieName,\n );\n if (!token) return;\n\n const hashedToken = await this.hashToken(token);\n const device = await new DeviceModel(this.c).getDeviceId();\n\n await this.c\n .get(\"db\")\n .delete(core_admin_sessions)\n .where(eq(core_admin_sessions.token, hashedToken));\n\n // Drop the cached resolution so getUser stops returning this admin before\n // the TTL would naturally expire it.\n await this.c\n .get(\"cache\")\n .deleteSystem(adminSessionCacheKey(hashedToken, device.id));\n\n deleteCookie(this.c, this.c.get(\"core\").authorization.adminCookieName, {\n path: \"/\",\n domain: CONFIG.web.hostname,\n });\n }\n\n async getUser() {\n const { authorization } = this.c.get(\"core\");\n const token = getCookie(this.c, authorization.adminCookieName);\n if (!token) return null;\n\n const device = await new DeviceModel(this.c).getDeviceId();\n if (!device) return null;\n\n const hashedToken = await this.hashToken(token);\n const cache = this.c.get(\"cache\");\n const cacheKey = adminSessionCacheKey(hashedToken, device.id);\n\n // Fast path: skip the session + user lookups for a session resolved on a\n // recent request. Admin status is still re-checked live below so a revoked\n // admin loses access immediately, not when the cache expires.\n const cached = await cache.getSystem<SessionUser>(cacheKey);\n if (cached) {\n const user = reviveSessionUser(cached);\n if (!(await this.checkIfUserIsAdmin(user.id))) {\n await this.deleteSession();\n\n return null;\n }\n\n return user;\n }\n\n const [session] = await this.c\n .get(\"db\")\n .select({\n userId: core_admin_sessions.userId,\n expiresAt: core_admin_sessions.expiresAt,\n })\n .from(core_admin_sessions)\n .where(\n and(\n eq(core_admin_sessions.token, hashedToken),\n eq(core_admin_sessions.deviceId, device.id),\n gt(core_admin_sessions.expiresAt, new Date()),\n ),\n )\n .limit(1);\n\n if (!session) {\n deleteCookie(this.c, this.c.get(\"core\").authorization.adminCookieName, {\n path: \"/\",\n domain: CONFIG.web.hostname,\n });\n\n return null;\n }\n\n const user = await new UserModel().getUserById({\n id: session.userId,\n c: this.c,\n });\n\n if (!user) return null;\n const isStillAdmin = await this.checkIfUserIsAdmin(user.id);\n if (!isStillAdmin) {\n await this.deleteSession();\n\n return null;\n }\n\n // Cap the TTL to the session's remaining lifetime so an expired session is\n // never served from cache.\n const ttl = sessionCacheTtl(session.expiresAt);\n if (ttl > 0) await cache.setSystem(cacheKey, user, ttl);\n\n return user;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-cache.js","names":[],"sources":["../../../../src/api/models/session-cache.ts"],"sourcesContent":["import type { getUserById } from \"./user/get-user-by-id\";\n\nexport type SessionUser = NonNullable<Awaited<ReturnType<typeof getUserById>>>;\n\nexport const SESSION_CACHE_TTL_SECONDS = 60;\n\nexport const sessionCacheKey = (\n hashedToken: string,\n deviceId: number,\n): string => `session:user:${deviceId}:${hashedToken}`;\n\nexport const adminSessionCacheKey = (\n hashedToken: string,\n deviceId: number,\n): string => `session:admin:${deviceId}:${hashedToken}`;\n\nexport const sessionCacheTtl = (expiresAt: Date): number =>\n Math.min(\n SESSION_CACHE_TTL_SECONDS,\n Math.floor((expiresAt.getTime() - Date.now()) / 1000),\n );\n\nexport const reviveSessionUser = (user: SessionUser): SessionUser => ({\n ...user,\n createdAt: new Date(user.createdAt),\n birthday: user.birthday ? new Date(user.birthday) : null,\n});\n"],"mappings":"AAIA,MAAa,EAA4B,GAE5B,GACX,EACA,IACW,gBAAgB,EAAS,GAAG,IAE5B,GACX,EACA,IACW,iBAAiB,EAAS,GAAG,IAE7B,EAAmB,GAC9B,KAAK,IAAA,GAEH,KAAK,OAAO,EAAU,QAAQ,EAAI,KAAK,IAAI,GAAK,GAAI,CACtD,EAEW,EAAqB,IAAoC,CACpE,GAAG,EACH,UAAW,IAAI,KAAK,EAAK,SAAS,EAClC,SAAU,EAAK,SAAW,IAAI,KAAK,EAAK,QAAQ,EAAI,IACtD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","names":[],"sources":["../../../../src/api/models/session.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { and, eq, gt } from \"drizzle-orm\";\nimport { deleteCookie, getCookie, setCookie } from \"hono/cookie\";\n\nimport { core_sessions } from \"@/database/sessions\";\nimport { CONFIG } from \"@/lib/config\";\n\nimport { DeviceModel } from \"./device\";\nimport {\n reviveSessionUser,\n sessionCacheKey,\n sessionCacheTtl,\n type SessionUser,\n} from \"./session-cache\";\nimport { UserModel } from \"./user\";\n\nexport class SessionModel {\n constructor(c: Context) {\n this.c = c;\n }\n protected readonly c: Context;\n\n private async hashToken(token: string): Promise<string> {\n const encoder = new TextEncoder();\n const data = encoder.encode(token);\n const hashBuffer = await crypto.subtle.digest(\"SHA-256\", data);\n const bytes = new Uint8Array(hashBuffer);\n\n // Optimize: Use direct iteration instead of Array.from + map\n let result = \"\";\n for (const byte of bytes) {\n result += byte.toString(16).padStart(2, \"0\");\n }\n\n return result;\n }\n\n async createSessionByUserId(userId: number) {\n // Generate secure random bytes using Web Crypto API\n const randomBytes = new Uint8Array(64);\n crypto.getRandomValues(randomBytes);\n\n // Optimize: Use direct iteration instead of Array.from + map\n let token = \"\";\n for (const byte of randomBytes) {\n token += byte.toString(16).padStart(2, \"0\");\n }\n\n const device = await new DeviceModel(this.c).getDeviceId();\n const hashedToken = await this.hashToken(token);\n\n await this.c\n .get(\"db\")\n .insert(core_sessions)\n .values({\n token: hashedToken,\n userId,\n expiresAt: new Date(\n Date.now() + this.c.get(\"core\").authorization.cookie_expires,\n ),\n deviceId: device.id,\n });\n\n setCookie(this.c, this.c.get(\"core\").authorization.cookieName, token, {\n httpOnly: true,\n secure: this.c.get(\"core\").authorization.cookieSecure,\n path: \"/\",\n expires:\n this.c.get(\"core\").authorization.cookie_expires > 0\n ? new Date(\n Date.now() + this.c.get(\"core\").authorization.cookie_expires,\n )\n : undefined,\n domain: CONFIG.web.hostname,\n });\n\n return { token };\n }\n\n async deleteSession() {\n const token = getCookie(\n this.c,\n this.c.get(\"core\").authorization.cookieName,\n );\n const device = await new DeviceModel(this.c).getDeviceId();\n\n // Ensure both token and deviceId exist before proceeding\n if (!(token && device.id)) {\n deleteCookie(this.c, this.c.get(\"core\").authorization.cookieName);\n\n return;\n }\n\n const hashedToken = await this.hashToken(token);\n\n await this.c\n .get(\"db\")\n .delete(core_sessions)\n // Harden the query to ensure a user can only delete their own device's session\n .where(\n and(\n eq(core_sessions.token, hashedToken),\n eq(core_sessions.deviceId, device.id),\n ),\n );\n\n await this.c\n .get(\"cache\")\n .deleteSystem(sessionCacheKey(hashedToken, device.id));\n\n deleteCookie(this.c, this.c.get(\"core\").authorization.cookieName);\n }\n\n async getUser() {\n const token = getCookie(\n this.c,\n this.c.get(\"core\").authorization.cookieName,\n );\n if (!token) return null;\n\n const device = await new DeviceModel(this.c).getDeviceId();\n if (!device) return null;\n\n const hashedToken = await this.hashToken(token);\n const cache = this.c.get(\"cache\");\n const cacheKey = sessionCacheKey(hashedToken, device.id);\n\n // Fast path: a still-valid session resolved on a recent request. Only\n // positive hits are cached, so a miss always re-runs the full lookup below.\n const cached = await cache.getSystem<SessionUser>(cacheKey);\n if (cached) return reviveSessionUser(cached);\n\n const [session] = await this.c\n .get(\"db\")\n .select({\n userId: core_sessions.userId,\n expiresAt: core_sessions.expiresAt,\n })\n .from(core_sessions)\n .where(\n and(\n eq(core_sessions.token, hashedToken),\n eq(core_sessions.deviceId, device.id),\n gt(core_sessions.expiresAt, new Date()),\n ),\n )\n .limit(1);\n\n if (!session) {\n deleteCookie(this.c, this.c.get(\"core\").authorization.cookieName);\n\n return null;\n }\n\n const user = await new UserModel().getUserById({\n id: session.userId,\n c: this.c,\n });\n\n if (!user) return null;\n\n // Cap the TTL to the session's remaining lifetime so an expired session is\n // never served from cache.\n const ttl = sessionCacheTtl(session.expiresAt);\n if (ttl > 0) await cache.setSystem(cacheKey, user, ttl);\n\n return user;\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sso.js","names":[],"sources":["../../../../src/api/models/sso.ts"],"sourcesContent":["import type { Context } from \"hono\";\n\nimport { and, eq } from \"drizzle-orm\";\nimport { deleteCookie, getCookie, setCookie } from \"hono/cookie\";\nimport { HTTPException } from \"hono/http-exception\";\nimport crypto from \"node:crypto\";\n\nimport { core_users, core_users_sso } from \"@/database/users\";\nimport { CONFIG } from \"@/lib/config\";\nimport { removeSpecialCharacters } from \"@/lib/special-characters\";\n\nimport { UserModel } from \"./user\";\n\nexport interface SSOApiPlugin {\n fetchToken: (\n code: string,\n ) => Promise<{ access_token: string; token_type: string }>;\n fetchUser: (args: {\n access_token: string;\n token_type: string;\n }) => Promise<{ email: string; id: string; username: string }>;\n getUrl: (props: { state: string }) => string;\n id: string;\n name: string;\n}\n\nexport const getRedirectUri = (code: string) =>\n new URL(`${CONFIG.web.href}login/sso/${code}`).toString();\n\nexport class SSOModel {\n constructor(c: Context) {\n this.c = c;\n this.plugins = c.get(\"core\").authorization.ssoAdapters;\n }\n\n private readonly c: Context;\n private readonly plugins: SSOApiPlugin[];\n\n private readonly signUpUser = async ({\n providerId,\n user,\n c,\n }: {\n c: Context;\n providerId: string;\n user: {\n email: string;\n id: string;\n username: string;\n };\n }) => {\n const data = await new UserModel().signUp(\n {\n email: user.email,\n name: removeSpecialCharacters(user.username, false),\n newsletter: false,\n hashedPassword: undefined,\n },\n c,\n );\n await c.get(\"db\").insert(core_users_sso).values({\n userId: data.id,\n providerId: providerId,\n providerAccountId: user.id,\n });\n\n return { userId: data.id };\n };\n\n async callback({\n code,\n providerId,\n state,\n }: {\n code: string;\n providerId: string;\n state: string;\n }): Promise<{\n userId: number;\n }> {\n await this.verifyState(state);\n const provider = this.plugins.find(p => p.id === providerId);\n if (!provider) {\n throw new HTTPException(404);\n }\n\n const ssoToken = await provider.fetchToken(code);\n const userFromSSO = await provider.fetchUser(ssoToken);\n\n return await this.c.get(\"db\").transaction(async tx => {\n const [dataSSOFromDb] = await tx\n .select({\n userId: core_users_sso.userId,\n })\n .from(core_users_sso)\n .leftJoin(core_users, eq(core_users.id, core_users_sso.userId))\n .where(\n and(\n eq(core_users_sso.providerId, providerId),\n eq(core_users_sso.providerAccountId, userFromSSO.id),\n ),\n )\n .limit(1);\n\n if (!dataSSOFromDb) {\n const [userWithEmail] = await tx\n .select({\n id: core_users.id,\n email: core_users.email,\n })\n .from(core_users)\n .where(eq(core_users.email, userFromSSO.email))\n .limit(1);\n\n if (!userWithEmail) {\n const signUpUser = await this.signUpUser({\n providerId,\n user: userFromSSO,\n c: this.c,\n });\n\n return signUpUser;\n }\n\n // If email exists, throw an error\n throw new HTTPException(409, {\n message: \"Email already exists\",\n });\n // await tx.insert(core_users_sso).values({\n // providerId: providerId,\n // providerAccountId: userFromSSO.id,\n // userId: userWithEmail.id,\n // });\n }\n\n return {\n userId: dataSSOFromDb.userId,\n };\n });\n }\n\n async encryptState() {\n const state = crypto.randomBytes(8).toString(\"hex\");\n const encryptedState = await new Promise<string>((resolve, reject) => {\n const salt = crypto.randomBytes(4).toString(\"hex\");\n\n crypto.scrypt(state, salt, 16, (err, derivedKey) => {\n if (err) reject(err);\n\n resolve(`${salt}:${derivedKey.toString(\"hex\")}`);\n });\n });\n\n setCookie(\n this.c,\n `${this.c.get(\"core\").authorization.cookieName}--state-sso`,\n encryptedState,\n {\n httpOnly: true,\n secure: this.c.get(\"core\").authorization.cookieSecure,\n path: \"/\",\n domain: CONFIG.web.hostname,\n },\n );\n\n return state;\n }\n\n async getUrl(providerId: string) {\n const provider = this.plugins.find(p => p.id === providerId);\n if (!provider) {\n throw new HTTPException(404);\n }\n\n return provider.getUrl({ state: await this.encryptState() });\n }\n\n async verifyState(state: string) {\n const storedState = getCookie(\n this.c,\n `${this.c.get(\"core\").authorization.cookieName}--state-sso`,\n );\n if (!storedState) {\n throw new HTTPException(400, {\n message: \"Invalid state\",\n });\n }\n\n const isValid = await new Promise<boolean>((resolve, reject) => {\n const [salt, storedHash] = storedState.split(\":\");\n\n crypto.scrypt(state, salt, 16, (err, derivedKey) => {\n if (err) reject(err);\n resolve(storedHash === derivedKey.toString(\"hex\"));\n });\n });\n\n if (!isValid) {\n throw new HTTPException(400, {\n message: \"Invalid state\",\n });\n }\n\n deleteCookie(\n this.c,\n `${this.c.get(\"core\").authorization.cookieName}--state-sso`,\n );\n }\n}\n"],"mappings":"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"}