@vitnode/core 2.0.0-canary.3 → 2.0.0-canary.5

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 (1230) hide show
  1. package/dist/scripts/scripts.js +23 -27
  2. package/dist/src/api/adapters/events/local.d.ts.map +1 -1
  3. package/dist/src/api/adapters/search/postgres.d.ts.map +1 -1
  4. package/dist/src/api/adapters/search/postgres.js +1 -1
  5. package/dist/src/api/adapters/sso/discord.d.ts.map +1 -1
  6. package/dist/src/api/adapters/sso/discord.js +1 -1
  7. package/dist/src/api/adapters/storage/local.d.ts.map +1 -1
  8. package/dist/src/api/config.d.ts.map +1 -1
  9. package/dist/src/api/config.js +1 -1
  10. package/dist/src/api/lib/auth-cookie.d.ts.map +1 -1
  11. package/dist/src/api/lib/auth-cookie.js +1 -1
  12. package/dist/src/api/lib/cache.d.ts.map +1 -1
  13. package/dist/src/api/lib/check-staff-permission.d.ts.map +1 -1
  14. package/dist/src/api/lib/client-ip.d.ts +4 -0
  15. package/dist/src/api/lib/client-ip.d.ts.map +1 -0
  16. package/dist/src/api/lib/client-ip.js +1 -0
  17. package/dist/src/api/lib/module.d.ts.map +1 -1
  18. package/dist/src/api/lib/openapi-tags.d.ts.map +1 -1
  19. package/dist/src/api/lib/pagination-cursor.d.ts +7 -3
  20. package/dist/src/api/lib/pagination-cursor.d.ts.map +1 -1
  21. package/dist/src/api/lib/pagination-cursor.js +1 -1
  22. package/dist/src/api/lib/permission-staff.d.ts.map +1 -1
  23. package/dist/src/api/lib/plugin.d.ts.map +1 -1
  24. package/dist/src/api/lib/staff-permission-cache.d.ts.map +1 -1
  25. package/dist/src/api/lib/user-email-lookup.d.ts +6 -0
  26. package/dist/src/api/lib/user-email-lookup.d.ts.map +1 -0
  27. package/dist/src/api/lib/user-email-lookup.js +1 -0
  28. package/dist/src/api/lib/websocket.d.ts.map +1 -1
  29. package/dist/src/api/lib/with-pagination.d.ts +4 -2
  30. package/dist/src/api/lib/with-pagination.d.ts.map +1 -1
  31. package/dist/src/api/lib/with-pagination.js +1 -1
  32. package/dist/src/api/middlewares/captcha.middleware.d.ts.map +1 -1
  33. package/dist/src/api/middlewares/captcha.middleware.js +1 -1
  34. package/dist/src/api/middlewares/cron-auth.middleware.d.ts.map +1 -1
  35. package/dist/src/api/middlewares/cron-auth.middleware.js +1 -1
  36. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
  37. package/dist/src/api/middlewares/global.middleware.js +1 -1
  38. package/dist/src/api/middlewares/storage-static.middleware.d.ts +3 -0
  39. package/dist/src/api/middlewares/storage-static.middleware.d.ts.map +1 -0
  40. package/dist/src/api/middlewares/storage-static.middleware.js +1 -0
  41. package/dist/src/api/middlewares/websocket-origin.middleware.d.ts +5 -0
  42. package/dist/src/api/middlewares/websocket-origin.middleware.d.ts.map +1 -0
  43. package/dist/src/api/middlewares/websocket-origin.middleware.js +1 -0
  44. package/dist/src/api/models/ai.d.ts.map +1 -1
  45. package/dist/src/api/models/device.d.ts +5 -1
  46. package/dist/src/api/models/device.d.ts.map +1 -1
  47. package/dist/src/api/models/device.js +1 -1
  48. package/dist/src/api/models/events.d.ts.map +1 -1
  49. package/dist/src/api/models/i18n.d.ts.map +1 -1
  50. package/dist/src/api/models/password.d.ts +1 -0
  51. package/dist/src/api/models/password.d.ts.map +1 -1
  52. package/dist/src/api/models/password.js +1 -1
  53. package/dist/src/api/models/queue.d.ts.map +1 -1
  54. package/dist/src/api/models/search.d.ts.map +1 -1
  55. package/dist/src/api/models/session-admin.d.ts.map +1 -1
  56. package/dist/src/api/models/session-admin.js +1 -1
  57. package/dist/src/api/models/session-revoke.d.ts +4 -0
  58. package/dist/src/api/models/session-revoke.d.ts.map +1 -0
  59. package/dist/src/api/models/session-revoke.js +1 -0
  60. package/dist/src/api/models/session.js +1 -1
  61. package/dist/src/api/models/sso.d.ts.map +1 -1
  62. package/dist/src/api/models/sso.js +1 -1
  63. package/dist/src/api/models/storage.d.ts.map +1 -1
  64. package/dist/src/api/models/storage.js +1 -1
  65. package/dist/src/api/models/user/sign-in-with-passwords.d.ts.map +1 -1
  66. package/dist/src/api/models/user/sign-in-with-passwords.js +1 -1
  67. package/dist/src/api/models/user/sign-up.d.ts +1 -1
  68. package/dist/src/api/models/user/sign-up.d.ts.map +1 -1
  69. package/dist/src/api/models/user/sign-up.js +1 -1
  70. package/dist/src/api/models/user.d.ts +1 -1
  71. package/dist/src/api/models/user.d.ts.map +1 -1
  72. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts.map +1 -1
  73. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.js +1 -1
  74. package/dist/src/api/modules/admin/debug/routes/clear-search.route.d.ts.map +1 -1
  75. package/dist/src/api/modules/admin/debug/routes/content-status.route.d.ts.map +1 -1
  76. package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts.map +1 -1
  77. package/dist/src/api/modules/admin/files/routes/delete.route.d.ts.map +1 -1
  78. package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts.map +1 -1
  79. package/dist/src/api/modules/admin/roles/routes/show.route.d.ts.map +1 -1
  80. package/dist/src/api/modules/admin/roles/routes/show.route.js +1 -1
  81. package/dist/src/api/modules/admin/routes/notifications.route.d.ts.map +1 -1
  82. package/dist/src/api/modules/admin/routes/notifications.route.js +1 -1
  83. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts +1 -0
  84. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts.map +1 -1
  85. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.js +1 -1
  86. package/dist/src/api/modules/admin/users/routes/update.route.d.ts.map +1 -1
  87. package/dist/src/api/modules/admin/users/routes/update.route.js +1 -1
  88. package/dist/src/api/modules/content/content.module.d.ts.map +1 -1
  89. package/dist/src/api/modules/content/cron/content-editorial-cleanup.cron.d.ts.map +1 -1
  90. package/dist/src/api/modules/content/helpers/execute-content-schedule.d.ts.map +1 -1
  91. package/dist/src/api/modules/content/tasks/content-schedule-effects.task.d.ts.map +1 -1
  92. package/dist/src/api/modules/content/tasks/content-schedule.task.d.ts.map +1 -1
  93. package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts.map +1 -1
  94. package/dist/src/api/modules/search/routes/search.route.d.ts.map +1 -1
  95. package/dist/src/api/modules/search/routes/search.route.js +1 -1
  96. package/dist/src/api/modules/users/routes/change-password.route.d.ts.map +1 -1
  97. package/dist/src/api/modules/users/routes/change-password.route.js +1 -1
  98. package/dist/src/api/modules/users/routes/reset-passowrd.route.d.ts.map +1 -1
  99. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -1
  100. package/dist/src/api/modules/users/users.module.d.ts +0 -24
  101. package/dist/src/api/modules/users/users.module.d.ts.map +1 -1
  102. package/dist/src/api/modules/users/users.module.js +1 -1
  103. package/dist/src/api/modules.client.d.ts +0 -24
  104. package/dist/src/api/modules.client.d.ts.map +1 -1
  105. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts.map +1 -1
  106. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -1
  107. package/dist/src/components/date-format.d.ts.map +1 -1
  108. package/dist/src/components/date-format.js +1 -1
  109. package/dist/src/components/editor-provider.d.ts +19 -0
  110. package/dist/src/components/editor-provider.d.ts.map +1 -0
  111. package/dist/src/components/editor-provider.js +1 -0
  112. package/dist/src/components/files/file-preview.d.ts.map +1 -1
  113. package/dist/src/components/files/file-preview.js +1 -1
  114. package/dist/src/components/files/metadata-cell.d.ts.map +1 -1
  115. package/dist/src/components/files/metadata-cell.js +1 -1
  116. package/dist/src/components/form/auto-form.d.ts.map +1 -1
  117. package/dist/src/components/form/auto-form.js +1 -1
  118. package/dist/src/components/form/common/async-picker.d.ts.map +1 -1
  119. package/dist/src/components/form/common/async-picker.js +1 -1
  120. package/dist/src/components/form/fields/array.d.ts.map +1 -1
  121. package/dist/src/components/form/fields/array.js +1 -1
  122. package/dist/src/components/form/fields/combobox.d.ts.map +1 -1
  123. package/dist/src/components/form/fields/file-gallery.d.ts.map +1 -1
  124. package/dist/src/components/form/fields/file-gallery.js +1 -1
  125. package/dist/src/components/form/fields/file-order.d.ts.map +1 -1
  126. package/dist/src/components/form/fields/file-shared.d.ts.map +1 -1
  127. package/dist/src/components/form/fields/file-shared.js +1 -1
  128. package/dist/src/components/form/fields/file-upload-queue.d.ts.map +1 -1
  129. package/dist/src/components/form/fields/file.d.ts.map +1 -1
  130. package/dist/src/components/form/fields/file.js +1 -1
  131. package/dist/src/components/form/fields/files.d.ts.map +1 -1
  132. package/dist/src/components/form/fields/files.js +1 -1
  133. package/dist/src/components/form/fields/input-roles.d.ts.map +1 -1
  134. package/dist/src/components/form/fields/input-roles.js +1 -1
  135. package/dist/src/components/form/fields/input-users.d.ts.map +1 -1
  136. package/dist/src/components/form/fields/input-users.js +1 -1
  137. package/dist/src/components/form/fields/multi-lang.d.ts.map +1 -1
  138. package/dist/src/components/form/fields/multi-lang.js +1 -1
  139. package/dist/src/components/form/fields/roles.d.ts.map +1 -1
  140. package/dist/src/components/languages-provider.d.ts.map +1 -1
  141. package/dist/src/components/languages-provider.js +1 -1
  142. package/dist/src/components/logo-vitnode.d.ts.map +1 -1
  143. package/dist/src/components/role-format-content.d.ts.map +1 -1
  144. package/dist/src/components/role-format-content.js +1 -1
  145. package/dist/src/components/role-name.d.ts.map +1 -1
  146. package/dist/src/components/staff-permission/provider.d.ts.map +1 -1
  147. package/dist/src/components/staff-permission/provider.js +1 -1
  148. package/dist/src/components/switchers/langs/language-switcher-content.d.ts.map +1 -1
  149. package/dist/src/components/switchers/langs/language-switcher-content.js +1 -1
  150. package/dist/src/components/switchers/themes/theme-switcher.d.ts.map +1 -1
  151. package/dist/src/components/switchers/themes/theme-switcher.js +1 -1
  152. package/dist/src/components/table/content.js +1 -1
  153. package/dist/src/components/table/data-table-content.d.ts.map +1 -1
  154. package/dist/src/components/table/data-table-content.js +1 -1
  155. package/dist/src/components/table/filters.d.ts.map +1 -1
  156. package/dist/src/components/table/filters.js +1 -1
  157. package/dist/src/components/table/navigation.d.ts.map +1 -1
  158. package/dist/src/components/table/navigation.js +1 -1
  159. package/dist/src/components/table/no-results.d.ts.map +1 -1
  160. package/dist/src/components/table/no-results.js +1 -1
  161. package/dist/src/components/table/order-table-head.d.ts.map +1 -1
  162. package/dist/src/components/table/order-table-head.js +1 -1
  163. package/dist/src/components/table/pagination.d.ts.map +1 -1
  164. package/dist/src/components/table/pagination.js +1 -1
  165. package/dist/src/components/table/search.d.ts.map +1 -1
  166. package/dist/src/components/table/search.js +1 -1
  167. package/dist/src/components/table/selection.d.ts.map +1 -1
  168. package/dist/src/components/table/selection.js +1 -1
  169. package/dist/src/components/table/url-state.d.ts.map +1 -1
  170. package/dist/src/components/theme-provider.d.ts.map +1 -1
  171. package/dist/src/components/theme-provider.js +1 -1
  172. package/dist/src/components/theme-script.d.ts.map +1 -1
  173. package/dist/src/components/tiptap/drag-handle.d.ts +5 -0
  174. package/dist/src/components/tiptap/drag-handle.d.ts.map +1 -0
  175. package/dist/src/components/tiptap/drag-handle.js +1 -0
  176. package/dist/src/components/tiptap/emoji/custom-emoji.d.ts +7 -0
  177. package/dist/src/components/tiptap/emoji/custom-emoji.d.ts.map +1 -0
  178. package/dist/src/components/tiptap/emoji/custom-emoji.js +1 -0
  179. package/dist/src/components/tiptap/emoji/emoji-suggestion-list.d.ts +10 -0
  180. package/dist/src/components/tiptap/emoji/emoji-suggestion-list.d.ts.map +1 -0
  181. package/dist/src/components/tiptap/emoji/emoji-suggestion-list.js +1 -0
  182. package/dist/src/components/tiptap/emoji/emoji-suggestion.d.ts +6 -0
  183. package/dist/src/components/tiptap/emoji/emoji-suggestion.d.ts.map +1 -0
  184. package/dist/src/components/tiptap/emoji/emoji-suggestion.js +1 -0
  185. package/dist/src/components/tiptap/emoji/match-emojis.d.ts +4 -0
  186. package/dist/src/components/tiptap/emoji/match-emojis.d.ts.map +1 -0
  187. package/dist/src/components/tiptap/emoji/match-emojis.js +1 -0
  188. package/dist/src/components/tiptap/extension.d.ts +6 -1
  189. package/dist/src/components/tiptap/extension.d.ts.map +1 -1
  190. package/dist/src/components/tiptap/extension.js +1 -1
  191. package/dist/src/components/tiptap/tiptap-editor.d.ts +8 -0
  192. package/dist/src/components/tiptap/tiptap-editor.d.ts.map +1 -0
  193. package/dist/src/components/tiptap/tiptap-editor.js +1 -0
  194. package/dist/src/components/tiptap/toolbar/actions/audio/audio-form.d.ts +2 -0
  195. package/dist/src/components/tiptap/toolbar/actions/audio/audio-form.d.ts.map +1 -0
  196. package/dist/src/components/tiptap/toolbar/actions/audio/audio-form.js +1 -0
  197. package/dist/src/components/tiptap/toolbar/actions/audio-action.d.ts +3 -0
  198. package/dist/src/components/tiptap/toolbar/actions/audio-action.d.ts.map +1 -0
  199. package/dist/src/components/tiptap/toolbar/actions/audio-action.js +1 -0
  200. package/dist/src/components/tiptap/toolbar/actions/blocks-action.d.ts +2 -0
  201. package/dist/src/components/tiptap/toolbar/actions/blocks-action.d.ts.map +1 -0
  202. package/dist/src/components/tiptap/toolbar/actions/blocks-action.js +1 -0
  203. package/dist/src/components/tiptap/toolbar/actions/color-action.d.ts +3 -0
  204. package/dist/src/components/tiptap/toolbar/actions/color-action.d.ts.map +1 -0
  205. package/dist/src/components/tiptap/toolbar/actions/color-action.js +1 -0
  206. package/dist/src/components/tiptap/toolbar/actions/emoji/emoji-picker.d.ts +5 -0
  207. package/dist/src/components/tiptap/toolbar/actions/emoji/emoji-picker.d.ts.map +1 -0
  208. package/dist/src/components/tiptap/toolbar/actions/emoji/emoji-picker.js +1 -0
  209. package/dist/src/components/tiptap/toolbar/actions/emoji-action.d.ts +3 -0
  210. package/dist/src/components/tiptap/toolbar/actions/emoji-action.d.ts.map +1 -0
  211. package/dist/src/components/tiptap/toolbar/actions/emoji-action.js +1 -0
  212. package/dist/src/components/tiptap/toolbar/actions/font-size-action.d.ts +2 -0
  213. package/dist/src/components/tiptap/toolbar/actions/font-size-action.d.ts.map +1 -0
  214. package/dist/src/components/tiptap/toolbar/actions/font-size-action.js +1 -0
  215. package/dist/src/components/tiptap/toolbar/actions/table-action.d.ts +2 -0
  216. package/dist/src/components/tiptap/toolbar/actions/table-action.d.ts.map +1 -0
  217. package/dist/src/components/tiptap/toolbar/actions/table-action.js +1 -0
  218. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts.map +1 -1
  219. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -1
  220. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.d.ts.map +1 -1
  221. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +1 -1
  222. package/dist/src/components/ui/accordion.d.ts.map +1 -1
  223. package/dist/src/components/ui/accordion.js +1 -1
  224. package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
  225. package/dist/src/components/ui/alert-dialog.js +1 -1
  226. package/dist/src/components/ui/avatar.d.ts.map +1 -1
  227. package/dist/src/components/ui/avatar.js +1 -1
  228. package/dist/src/components/ui/button-client.d.ts.map +1 -1
  229. package/dist/src/components/ui/button-client.js +1 -1
  230. package/dist/src/components/ui/button.js +1 -1
  231. package/dist/src/components/ui/carousel.d.ts.map +1 -1
  232. package/dist/src/components/ui/carousel.js +1 -1
  233. package/dist/src/components/ui/chart.d.ts.map +1 -1
  234. package/dist/src/components/ui/chart.js +1 -1
  235. package/dist/src/components/ui/checkbox.d.ts.map +1 -1
  236. package/dist/src/components/ui/checkbox.js +1 -1
  237. package/dist/src/components/ui/collapsible.d.ts.map +1 -1
  238. package/dist/src/components/ui/collapsible.js +1 -1
  239. package/dist/src/components/ui/color-picker.d.ts.map +1 -1
  240. package/dist/src/components/ui/color-picker.js +1 -1
  241. package/dist/src/components/ui/combobox.d.ts.map +1 -1
  242. package/dist/src/components/ui/combobox.js +1 -1
  243. package/dist/src/components/ui/command.d.ts.map +1 -1
  244. package/dist/src/components/ui/command.js +1 -1
  245. package/dist/src/components/ui/context-menu.d.ts.map +1 -1
  246. package/dist/src/components/ui/context-menu.js +1 -1
  247. package/dist/src/components/ui/dialog.d.ts.map +1 -1
  248. package/dist/src/components/ui/dialog.js +1 -1
  249. package/dist/src/components/ui/direction.d.ts.map +1 -1
  250. package/dist/src/components/ui/direction.js +1 -1
  251. package/dist/src/components/ui/drawer.d.ts.map +1 -1
  252. package/dist/src/components/ui/drawer.js +1 -1
  253. package/dist/src/components/ui/dropdown-menu.d.ts.map +1 -1
  254. package/dist/src/components/ui/dropdown-menu.js +1 -1
  255. package/dist/src/components/ui/editor.d.ts +2 -7
  256. package/dist/src/components/ui/editor.d.ts.map +1 -1
  257. package/dist/src/components/ui/editor.js +1 -1
  258. package/dist/src/components/ui/field.d.ts.map +1 -1
  259. package/dist/src/components/ui/field.js +1 -1
  260. package/dist/src/components/ui/form.d.ts.map +1 -1
  261. package/dist/src/components/ui/form.js +1 -1
  262. package/dist/src/components/ui/header-content.d.ts.map +1 -1
  263. package/dist/src/components/ui/hover-card.d.ts.map +1 -1
  264. package/dist/src/components/ui/hover-card.js +1 -1
  265. package/dist/src/components/ui/input-group.d.ts.map +1 -1
  266. package/dist/src/components/ui/input-group.js +1 -1
  267. package/dist/src/components/ui/input-otp.d.ts.map +1 -1
  268. package/dist/src/components/ui/input-otp.js +1 -1
  269. package/dist/src/components/ui/input.js +1 -1
  270. package/dist/src/components/ui/kbd.js +1 -1
  271. package/dist/src/components/ui/menubar.d.ts.map +1 -1
  272. package/dist/src/components/ui/menubar.js +1 -1
  273. package/dist/src/components/ui/native-select.js +1 -1
  274. package/dist/src/components/ui/navigation-menu.d.ts.map +1 -1
  275. package/dist/src/components/ui/navigation-menu.js +1 -1
  276. package/dist/src/components/ui/popover.d.ts.map +1 -1
  277. package/dist/src/components/ui/popover.js +1 -1
  278. package/dist/src/components/ui/progress.d.ts.map +1 -1
  279. package/dist/src/components/ui/progress.js +1 -1
  280. package/dist/src/components/ui/radio-group.d.ts.map +1 -1
  281. package/dist/src/components/ui/radio-group.js +1 -1
  282. package/dist/src/components/ui/resizable.d.ts.map +1 -1
  283. package/dist/src/components/ui/resizable.js +1 -1
  284. package/dist/src/components/ui/scroll-area.d.ts.map +1 -1
  285. package/dist/src/components/ui/scroll-area.js +1 -1
  286. package/dist/src/components/ui/select.d.ts.map +1 -1
  287. package/dist/src/components/ui/select.js +1 -1
  288. package/dist/src/components/ui/separator.d.ts.map +1 -1
  289. package/dist/src/components/ui/separator.js +1 -1
  290. package/dist/src/components/ui/sheet.d.ts.map +1 -1
  291. package/dist/src/components/ui/sheet.js +1 -1
  292. package/dist/src/components/ui/sidebar.d.ts.map +1 -1
  293. package/dist/src/components/ui/sidebar.js +1 -1
  294. package/dist/src/components/ui/slider.d.ts.map +1 -1
  295. package/dist/src/components/ui/slider.js +1 -1
  296. package/dist/src/components/ui/sonner.d.ts.map +1 -1
  297. package/dist/src/components/ui/sonner.js +1 -1
  298. package/dist/src/components/ui/switch.d.ts.map +1 -1
  299. package/dist/src/components/ui/switch.js +1 -1
  300. package/dist/src/components/ui/table.d.ts.map +1 -1
  301. package/dist/src/components/ui/table.js +1 -1
  302. package/dist/src/components/ui/tabs.d.ts.map +1 -1
  303. package/dist/src/components/ui/tabs.js +1 -1
  304. package/dist/src/components/ui/textarea.js +1 -1
  305. package/dist/src/components/ui/toggle-group.d.ts.map +1 -1
  306. package/dist/src/components/ui/toggle-group.js +1 -1
  307. package/dist/src/components/ui/toggle.d.ts.map +1 -1
  308. package/dist/src/components/ui/toggle.js +1 -1
  309. package/dist/src/components/ui/tooltip.d.ts.map +1 -1
  310. package/dist/src/components/ui/tooltip.js +1 -1
  311. package/dist/src/config.js +1 -1
  312. package/dist/src/content/admin/labels.d.ts.map +1 -1
  313. package/dist/src/content/admin/registry.d.ts.map +1 -1
  314. package/dist/src/content/admin/route.d.ts.map +1 -1
  315. package/dist/src/content/admin/spec.d.ts.map +1 -1
  316. package/dist/src/content/admin/upload.d.ts.map +1 -1
  317. package/dist/src/content/advanced.d.ts.map +1 -1
  318. package/dist/src/content/cache.d.ts.map +1 -1
  319. package/dist/src/content/conflicts.d.ts.map +1 -1
  320. package/dist/src/content/const.d.ts.map +1 -1
  321. package/dist/src/content/define-admin.d.ts.map +1 -1
  322. package/dist/src/content/define-editorial.d.ts.map +1 -1
  323. package/dist/src/content/define-fields.d.ts.map +1 -1
  324. package/dist/src/content/define-public-api.d.ts.map +1 -1
  325. package/dist/src/content/define-search.d.ts.map +1 -1
  326. package/dist/src/content/define-shared.d.ts.map +1 -1
  327. package/dist/src/content/define.d.ts.map +1 -1
  328. package/dist/src/content/delivery.d.ts.map +1 -1
  329. package/dist/src/content/errors.d.ts.map +1 -1
  330. package/dist/src/content/events.d.ts.map +1 -1
  331. package/dist/src/content/fields.d.ts.map +1 -1
  332. package/dist/src/content/files.d.ts.map +1 -1
  333. package/dist/src/content/hash.d.ts.map +1 -1
  334. package/dist/src/content/index.d.ts.map +1 -1
  335. package/dist/src/content/locale.d.ts.map +1 -1
  336. package/dist/src/content/localization.d.ts.map +1 -1
  337. package/dist/src/content/paths.d.ts.map +1 -1
  338. package/dist/src/content/publication.d.ts.map +1 -1
  339. package/dist/src/content/registry.d.ts.map +1 -1
  340. package/dist/src/content/revisions.d.ts.map +1 -1
  341. package/dist/src/content/schedules.d.ts.map +1 -1
  342. package/dist/src/content/schemas.d.ts.map +1 -1
  343. package/dist/src/content/search.d.ts.map +1 -1
  344. package/dist/src/content/server/actor.d.ts.map +1 -1
  345. package/dist/src/content/server/advanced-store.d.ts.map +1 -1
  346. package/dist/src/content/server/advanced-tables.d.ts.map +1 -1
  347. package/dist/src/content/server/collection-api.d.ts.map +1 -1
  348. package/dist/src/content/server/column-builders.d.ts.map +1 -1
  349. package/dist/src/content/server/delivery-alternates.d.ts.map +1 -1
  350. package/dist/src/content/server/delivery-effects.d.ts.map +1 -1
  351. package/dist/src/content/server/delivery-routes.d.ts.map +1 -1
  352. package/dist/src/content/server/delivery-service.d.ts.map +1 -1
  353. package/dist/src/content/server/delivery-sitemap.d.ts.map +1 -1
  354. package/dist/src/content/server/delivery-writes.d.ts.map +1 -1
  355. package/dist/src/content/server/diagnostics.d.ts.map +1 -1
  356. package/dist/src/content/server/editorial-effects.d.ts.map +1 -1
  357. package/dist/src/content/server/editorial-service.d.ts.map +1 -1
  358. package/dist/src/content/server/effects-log.d.ts.map +1 -1
  359. package/dist/src/content/server/emit.d.ts.map +1 -1
  360. package/dist/src/content/server/files.d.ts.map +1 -1
  361. package/dist/src/content/server/http-errors.d.ts.map +1 -1
  362. package/dist/src/content/server/index.d.ts.map +1 -1
  363. package/dist/src/content/server/language-resolver.d.ts.map +1 -1
  364. package/dist/src/content/server/localized-admin-routes.d.ts.map +1 -1
  365. package/dist/src/content/server/localized-public-service.d.ts.map +1 -1
  366. package/dist/src/content/server/localized-service.d.ts.map +1 -1
  367. package/dist/src/content/server/model.d.ts.map +1 -1
  368. package/dist/src/content/server/module.d.ts.map +1 -1
  369. package/dist/src/content/server/preview-config.js +1 -1
  370. package/dist/src/content/server/preview-link.d.ts.map +1 -1
  371. package/dist/src/content/server/preview-secret.d.ts.map +1 -1
  372. package/dist/src/content/server/preview-target.d.ts.map +1 -1
  373. package/dist/src/content/server/preview-token.d.ts.map +1 -1
  374. package/dist/src/content/server/public-locales.d.ts.map +1 -1
  375. package/dist/src/content/server/public-module.d.ts.map +1 -1
  376. package/dist/src/content/server/public-routes.d.ts.map +1 -1
  377. package/dist/src/content/server/public-service.d.ts.map +1 -1
  378. package/dist/src/content/server/publication.d.ts.map +1 -1
  379. package/dist/src/content/server/query.d.ts.map +1 -1
  380. package/dist/src/content/server/references.d.ts.map +1 -1
  381. package/dist/src/content/server/revalidate-bridge.d.ts.map +1 -1
  382. package/dist/src/content/server/revision-snapshot.d.ts.map +1 -1
  383. package/dist/src/content/server/revisions-model.d.ts.map +1 -1
  384. package/dist/src/content/server/routes.d.ts.map +1 -1
  385. package/dist/src/content/server/schedule-effects.d.ts.map +1 -1
  386. package/dist/src/content/server/schedules-model.d.ts.map +1 -1
  387. package/dist/src/content/server/search-document.d.ts.map +1 -1
  388. package/dist/src/content/server/search-indexer.d.ts.map +1 -1
  389. package/dist/src/content/server/search-sync.d.ts.map +1 -1
  390. package/dist/src/content/server/service.d.ts.map +1 -1
  391. package/dist/src/content/server/slug-history-model.d.ts.map +1 -1
  392. package/dist/src/content/server/slugs.d.ts.map +1 -1
  393. package/dist/src/content/server/table.d.ts.map +1 -1
  394. package/dist/src/content/server/translation-editorial-service.d.ts.map +1 -1
  395. package/dist/src/content/server/translation-effects.d.ts.map +1 -1
  396. package/dist/src/content/server/translation-http-errors.d.ts.map +1 -1
  397. package/dist/src/content/server/translation-model.d.ts.map +1 -1
  398. package/dist/src/content/server/translation-routes.d.ts.map +1 -1
  399. package/dist/src/content/server/translation-table.d.ts.map +1 -1
  400. package/dist/src/content/server/types.d.ts.map +1 -1
  401. package/dist/src/content/sitemap.d.ts.map +1 -1
  402. package/dist/src/content/slug.d.ts.map +1 -1
  403. package/dist/src/content/types.d.ts.map +1 -1
  404. package/dist/src/database/content.d.ts.map +1 -1
  405. package/dist/src/database/relations.d.ts.map +1 -1
  406. package/dist/src/database/secrets.d.ts.map +1 -1
  407. package/dist/src/emoji-picker.css +104 -0
  408. package/dist/src/framework/admin-nav/generate.d.ts.map +1 -1
  409. package/dist/src/framework/admin-nav/generate.js +1 -20
  410. package/dist/src/framework/admin-nav/index.d.ts.map +1 -1
  411. package/dist/src/framework/admin-nav/types.d.ts.map +1 -1
  412. package/dist/src/framework/content-registry/generate.d.ts.map +1 -1
  413. package/dist/src/framework/content-registry/generate.js +1 -25
  414. package/dist/src/framework/content-registry/index.d.ts.map +1 -1
  415. package/dist/src/framework/content-registry/types.d.ts.map +1 -1
  416. package/dist/src/framework/plugin-routes/compile.d.ts.map +1 -1
  417. package/dist/src/framework/plugin-routes/component-source.d.ts.map +1 -1
  418. package/dist/src/framework/plugin-routes/diagnostics.d.ts.map +1 -1
  419. package/dist/src/framework/plugin-routes/generate.d.ts.map +1 -1
  420. package/dist/src/framework/plugin-routes/generate.js +1 -12
  421. package/dist/src/framework/plugin-routes/host-routes.d.ts.map +1 -1
  422. package/dist/src/framework/plugin-routes/index.d.ts.map +1 -1
  423. package/dist/src/framework/plugin-routes/resolve.d.ts.map +1 -1
  424. package/dist/src/framework/plugin-routes/types.d.ts.map +1 -1
  425. package/dist/src/framework/vite/env.d.ts.map +1 -1
  426. package/dist/src/framework/vite/env.js +1 -1
  427. package/dist/src/framework/vite/generation-queue.d.ts.map +1 -1
  428. package/dist/src/framework/vite/index.d.ts +2 -0
  429. package/dist/src/framework/vite/index.d.ts.map +1 -1
  430. package/dist/src/framework/vite/index.js +1 -1
  431. package/dist/src/framework/vite/module-version.d.ts.map +1 -1
  432. package/dist/src/framework/vite/optimize-deps.d.ts +2 -1
  433. package/dist/src/framework/vite/optimize-deps.d.ts.map +1 -1
  434. package/dist/src/framework/vite/optimize-deps.js +1 -1
  435. package/dist/src/framework/vite/plugin-routes.d.ts +1 -0
  436. package/dist/src/framework/vite/plugin-routes.d.ts.map +1 -1
  437. package/dist/src/framework/vite/plugin-routes.js +1 -1
  438. package/dist/src/framework/vite/ssr-externals.d.ts +7 -0
  439. package/dist/src/framework/vite/ssr-externals.d.ts.map +1 -0
  440. package/dist/src/framework/vite/ssr-externals.js +1 -0
  441. package/dist/src/framework/vite/vitnode.d.ts.map +1 -1
  442. package/dist/src/framework/vite/vitnode.js +1 -1
  443. package/dist/src/hooks/use-captcha.d.ts.map +1 -1
  444. package/dist/src/lib/api/get-queue-backoff-date.d.ts.map +1 -1
  445. package/dist/src/lib/api/pg-error.d.ts.map +1 -1
  446. package/dist/src/lib/api/resolve-queue-task-outcome.d.ts.map +1 -1
  447. package/dist/src/lib/api/signed-token.d.ts.map +1 -1
  448. package/dist/src/lib/api/upload.d.ts +2 -1
  449. package/dist/src/lib/api/upload.d.ts.map +1 -1
  450. package/dist/src/lib/api/upload.js +1 -1
  451. package/dist/src/lib/api/validate-cron-schedule.d.ts.map +1 -1
  452. package/dist/src/lib/config.d.ts +1 -0
  453. package/dist/src/lib/config.d.ts.map +1 -1
  454. package/dist/src/lib/config.js +1 -1
  455. package/dist/src/lib/email-canonical.d.ts +3 -0
  456. package/dist/src/lib/email-canonical.d.ts.map +1 -0
  457. package/dist/src/lib/email-canonical.js +1 -0
  458. package/dist/src/lib/fetcher/rate-limit.d.ts.map +1 -1
  459. package/dist/src/lib/fetcher/raw.d.ts.map +1 -1
  460. package/dist/src/lib/fetcher/request-context.d.ts.map +1 -1
  461. package/dist/src/lib/fetcher/set-cookie.d.ts.map +1 -1
  462. package/dist/src/lib/fetcher-client.d.ts +5 -0
  463. package/dist/src/lib/fetcher-client.d.ts.map +1 -1
  464. package/dist/src/lib/fetcher-client.js +1 -1
  465. package/dist/src/lib/file-constraints.d.ts.map +1 -1
  466. package/dist/src/lib/file-extension.d.ts.map +1 -1
  467. package/dist/src/lib/files/bulk-delete.d.ts.map +1 -1
  468. package/dist/src/lib/files/in-use.d.ts.map +1 -1
  469. package/dist/src/lib/i18n/deep-merge.d.ts.map +1 -1
  470. package/dist/src/lib/i18n/locale-cookie.d.ts.map +1 -1
  471. package/dist/src/lib/i18n/locale-routing.d.ts.map +1 -1
  472. package/dist/src/lib/i18n/negotiate-locale.d.ts.map +1 -1
  473. package/dist/src/lib/i18n/pick-messages.d.ts.map +1 -1
  474. package/dist/src/lib/i18n/provider.d.ts.map +1 -1
  475. package/dist/src/lib/i18n/provider.js +1 -1
  476. package/dist/src/lib/i18n/types.d.ts.map +1 -1
  477. package/dist/src/lib/metadata.d.ts.map +1 -1
  478. package/dist/src/lib/plugin.d.ts +3 -0
  479. package/dist/src/lib/plugin.d.ts.map +1 -1
  480. package/dist/src/lib/query-client.d.ts.map +1 -1
  481. package/dist/src/lib/query-freshness.d.ts.map +1 -1
  482. package/dist/src/lib/task-pool.d.ts.map +1 -1
  483. package/dist/src/locales/api/index.d.ts.map +1 -1
  484. package/dist/src/locales/en.json +45 -2
  485. package/dist/src/locales/index.d.ts.map +1 -1
  486. package/dist/src/locales/pl.json +44 -1
  487. package/dist/src/routing/authoring.d.ts.map +1 -1
  488. package/dist/src/routing/errors.d.ts.map +1 -1
  489. package/dist/src/routing/graph.d.ts.map +1 -1
  490. package/dist/src/routing/index.d.ts.map +1 -1
  491. package/dist/src/routing/manifest.d.ts.map +1 -1
  492. package/dist/src/routing/module.d.ts.map +1 -1
  493. package/dist/src/routing/namespaces.d.ts.map +1 -1
  494. package/dist/src/routing/order.d.ts.map +1 -1
  495. package/dist/src/routing/path.d.ts.map +1 -1
  496. package/dist/src/routing/path.js +1 -1
  497. package/dist/src/routing/tree.d.ts.map +1 -1
  498. package/dist/src/routing/types.d.ts.map +1 -1
  499. package/dist/src/tanstack/admin/actions.d.ts.map +1 -1
  500. package/dist/src/tanstack/admin/breadcrumb.d.ts.map +1 -1
  501. package/dist/src/tanstack/admin/breadcrumb.js +1 -1
  502. package/dist/src/tanstack/admin/content/breadcrumb-model.d.ts.map +1 -1
  503. package/dist/src/tanstack/admin/content/breadcrumb.d.ts.map +1 -1
  504. package/dist/src/tanstack/admin/content/breadcrumb.js +1 -1
  505. package/dist/src/tanstack/admin/content/create-action.d.ts.map +1 -1
  506. package/dist/src/tanstack/admin/content/create-action.js +1 -1
  507. package/dist/src/tanstack/admin/content/editorial/host.d.ts.map +1 -1
  508. package/dist/src/tanstack/admin/content/editorial/host.js +1 -1
  509. package/dist/src/tanstack/admin/content/editorial/index.d.ts.map +1 -1
  510. package/dist/src/tanstack/admin/content/editorial/panels.d.ts.map +1 -1
  511. package/dist/src/tanstack/admin/content/editorial/panels.js +1 -1
  512. package/dist/src/tanstack/admin/content/editorial/transport.d.ts.map +1 -1
  513. package/dist/src/tanstack/admin/content/form/dialog.d.ts.map +1 -1
  514. package/dist/src/tanstack/admin/content/form/dialog.js +1 -1
  515. package/dist/src/tanstack/admin/content/form/form-body.d.ts.map +1 -1
  516. package/dist/src/tanstack/admin/content/form/form-body.js +1 -1
  517. package/dist/src/tanstack/admin/content/form/host.d.ts.map +1 -1
  518. package/dist/src/tanstack/admin/content/form/host.js +1 -1
  519. package/dist/src/tanstack/admin/content/form/index.d.ts.map +1 -1
  520. package/dist/src/tanstack/admin/content/form/page-body.d.ts.map +1 -1
  521. package/dist/src/tanstack/admin/content/form/page-body.js +1 -1
  522. package/dist/src/tanstack/admin/content/form/page-skeleton.d.ts +9 -0
  523. package/dist/src/tanstack/admin/content/form/page-skeleton.d.ts.map +1 -0
  524. package/dist/src/tanstack/admin/content/form/page-skeleton.js +1 -0
  525. package/dist/src/tanstack/admin/content/form/route.d.ts.map +1 -1
  526. package/dist/src/tanstack/admin/content/form/screen.d.ts.map +1 -1
  527. package/dist/src/tanstack/admin/content/form/screen.js +1 -1
  528. package/dist/src/tanstack/admin/content/form/spec.d.ts +2 -0
  529. package/dist/src/tanstack/admin/content/form/spec.d.ts.map +1 -1
  530. package/dist/src/tanstack/admin/content/form/spec.js +1 -1
  531. package/dist/src/tanstack/admin/content/form/transport.d.ts.map +1 -1
  532. package/dist/src/tanstack/admin/content/form/transport.js +1 -1
  533. package/dist/src/tanstack/admin/content/index.d.ts.map +1 -1
  534. package/dist/src/tanstack/admin/content/list.d.ts.map +1 -1
  535. package/dist/src/tanstack/admin/content/list.js +1 -1
  536. package/dist/src/tanstack/admin/content/query.d.ts.map +1 -1
  537. package/dist/src/tanstack/admin/content/query.js +1 -1
  538. package/dist/src/tanstack/admin/content/route-screen.d.ts.map +1 -1
  539. package/dist/src/tanstack/admin/content/route-screen.js +1 -1
  540. package/dist/src/tanstack/admin/content/route-search.d.ts.map +1 -1
  541. package/dist/src/tanstack/admin/content/route.d.ts.map +1 -1
  542. package/dist/src/tanstack/admin/content/row-actions.d.ts.map +1 -1
  543. package/dist/src/tanstack/admin/content/row-actions.js +1 -1
  544. package/dist/src/tanstack/admin/content/screen.d.ts.map +1 -1
  545. package/dist/src/tanstack/admin/content/screen.js +1 -1
  546. package/dist/src/tanstack/admin/content/slot-render.d.ts.map +1 -1
  547. package/dist/src/tanstack/admin/content/slots.d.ts.map +1 -1
  548. package/dist/src/tanstack/admin/content/transport.d.ts +3 -0
  549. package/dist/src/tanstack/admin/content/transport.d.ts.map +1 -0
  550. package/dist/src/tanstack/admin/content/transport.js +1 -0
  551. package/dist/src/tanstack/admin/cron/index.d.ts.map +1 -1
  552. package/dist/src/tanstack/admin/cron/query.d.ts.map +1 -1
  553. package/dist/src/tanstack/admin/cron/query.js +1 -1
  554. package/dist/src/tanstack/admin/cron/route-search.d.ts.map +1 -1
  555. package/dist/src/tanstack/admin/cron/route.d.ts.map +1 -1
  556. package/dist/src/tanstack/admin/cron/screen.d.ts.map +1 -1
  557. package/dist/src/tanstack/admin/cron/screen.js +1 -1
  558. package/dist/src/tanstack/admin/dashboard/index.d.ts.map +1 -1
  559. package/dist/src/tanstack/admin/dashboard/query.d.ts.map +1 -1
  560. package/dist/src/tanstack/admin/dashboard/query.js +1 -1
  561. package/dist/src/tanstack/admin/dashboard/route.d.ts.map +1 -1
  562. package/dist/src/tanstack/admin/dashboard/screen.d.ts.map +1 -1
  563. package/dist/src/tanstack/admin/dashboard/screen.js +1 -1
  564. package/dist/src/tanstack/admin/dashboard/widgets.d.ts.map +1 -1
  565. package/dist/src/tanstack/admin/dashboard/widgets.js +1 -1
  566. package/dist/src/tanstack/admin/debug/index.d.ts.map +1 -1
  567. package/dist/src/tanstack/admin/debug/query.d.ts.map +1 -1
  568. package/dist/src/tanstack/admin/debug/query.js +1 -1
  569. package/dist/src/tanstack/admin/debug/route-search.d.ts.map +1 -1
  570. package/dist/src/tanstack/admin/debug/route.d.ts.map +1 -1
  571. package/dist/src/tanstack/admin/debug/screen.d.ts.map +1 -1
  572. package/dist/src/tanstack/admin/debug/screen.js +1 -1
  573. package/dist/src/tanstack/admin/files/index.d.ts.map +1 -1
  574. package/dist/src/tanstack/admin/files/query.d.ts.map +1 -1
  575. package/dist/src/tanstack/admin/files/query.js +1 -1
  576. package/dist/src/tanstack/admin/files/route-search.d.ts.map +1 -1
  577. package/dist/src/tanstack/admin/files/route.d.ts.map +1 -1
  578. package/dist/src/tanstack/admin/files/screen.d.ts.map +1 -1
  579. package/dist/src/tanstack/admin/files/screen.js +1 -1
  580. package/dist/src/tanstack/admin/identity.d.ts.map +1 -1
  581. package/dist/src/tanstack/admin/index.d.ts +0 -1
  582. package/dist/src/tanstack/admin/index.d.ts.map +1 -1
  583. package/dist/src/tanstack/admin/index.js +1 -1
  584. package/dist/src/tanstack/admin/integrations/index.d.ts.map +1 -1
  585. package/dist/src/tanstack/admin/integrations/query.d.ts.map +1 -1
  586. package/dist/src/tanstack/admin/integrations/query.js +1 -1
  587. package/dist/src/tanstack/admin/integrations/route.d.ts.map +1 -1
  588. package/dist/src/tanstack/admin/integrations/screen.d.ts.map +1 -1
  589. package/dist/src/tanstack/admin/integrations/screen.js +1 -1
  590. package/dist/src/tanstack/admin/intl.d.ts.map +1 -1
  591. package/dist/src/tanstack/admin/nav.d.ts.map +1 -1
  592. package/dist/src/tanstack/admin/nav.js +1 -1
  593. package/dist/src/tanstack/admin/permissions.d.ts.map +1 -1
  594. package/dist/src/tanstack/admin/permissions.js +1 -1
  595. package/dist/src/tanstack/admin/queries.d.ts.map +1 -1
  596. package/dist/src/tanstack/admin/queue/index.d.ts.map +1 -1
  597. package/dist/src/tanstack/admin/queue/query.d.ts.map +1 -1
  598. package/dist/src/tanstack/admin/queue/query.js +1 -1
  599. package/dist/src/tanstack/admin/queue/route-search.d.ts.map +1 -1
  600. package/dist/src/tanstack/admin/queue/route.d.ts.map +1 -1
  601. package/dist/src/tanstack/admin/queue/screen.d.ts.map +1 -1
  602. package/dist/src/tanstack/admin/queue/screen.js +1 -1
  603. package/dist/src/tanstack/admin/return-to.d.ts.map +1 -1
  604. package/dist/src/tanstack/admin/roles/index.d.ts.map +1 -1
  605. package/dist/src/tanstack/admin/roles/query.d.ts.map +1 -1
  606. package/dist/src/tanstack/admin/roles/query.js +1 -1
  607. package/dist/src/tanstack/admin/roles/route-search.d.ts.map +1 -1
  608. package/dist/src/tanstack/admin/roles/route.d.ts.map +1 -1
  609. package/dist/src/tanstack/admin/roles/screen.d.ts.map +1 -1
  610. package/dist/src/tanstack/admin/roles/screen.js +1 -1
  611. package/dist/src/tanstack/admin/screen.d.ts.map +1 -1
  612. package/dist/src/tanstack/admin/search-index/index.d.ts.map +1 -1
  613. package/dist/src/tanstack/admin/search-index/query.d.ts.map +1 -1
  614. package/dist/src/tanstack/admin/search-index/query.js +1 -1
  615. package/dist/src/tanstack/admin/search-index/route-search.d.ts.map +1 -1
  616. package/dist/src/tanstack/admin/search-index/route.d.ts.map +1 -1
  617. package/dist/src/tanstack/admin/search-index/screen.d.ts.map +1 -1
  618. package/dist/src/tanstack/admin/search-index/screen.js +1 -1
  619. package/dist/src/tanstack/admin/search.d.ts.map +1 -1
  620. package/dist/src/tanstack/admin/search.js +1 -1
  621. package/dist/src/tanstack/admin/session-api.d.ts.map +1 -1
  622. package/dist/src/tanstack/admin/session-query.d.ts.map +1 -1
  623. package/dist/src/tanstack/admin/shell.d.ts.map +1 -1
  624. package/dist/src/tanstack/admin/shell.js +1 -1
  625. package/dist/src/tanstack/admin/sign-in-route.d.ts.map +1 -1
  626. package/dist/src/tanstack/admin/sign-in-screen.d.ts.map +1 -1
  627. package/dist/src/tanstack/admin/sign-in-screen.js +1 -1
  628. package/dist/src/tanstack/admin/staff/breadcrumbs.d.ts.map +1 -1
  629. package/dist/src/tanstack/admin/staff/breadcrumbs.js +1 -1
  630. package/dist/src/tanstack/admin/staff/create-route.d.ts.map +1 -1
  631. package/dist/src/tanstack/admin/staff/create-screen.d.ts.map +1 -1
  632. package/dist/src/tanstack/admin/staff/create-screen.js +1 -1
  633. package/dist/src/tanstack/admin/staff/edit-route.d.ts.map +1 -1
  634. package/dist/src/tanstack/admin/staff/edit-screen.d.ts.map +1 -1
  635. package/dist/src/tanstack/admin/staff/edit-screen.js +1 -1
  636. package/dist/src/tanstack/admin/staff/index.d.ts.map +1 -1
  637. package/dist/src/tanstack/admin/staff/query.d.ts.map +1 -1
  638. package/dist/src/tanstack/admin/staff/query.js +1 -1
  639. package/dist/src/tanstack/admin/staff/route-search.d.ts.map +1 -1
  640. package/dist/src/tanstack/admin/staff/route.d.ts.map +1 -1
  641. package/dist/src/tanstack/admin/staff/screen.d.ts.map +1 -1
  642. package/dist/src/tanstack/admin/staff/screen.js +1 -1
  643. package/dist/src/tanstack/admin/state.d.ts.map +1 -1
  644. package/dist/src/tanstack/admin/table-search.d.ts.map +1 -1
  645. package/dist/src/tanstack/admin/transport.d.ts.map +1 -1
  646. package/dist/src/tanstack/admin/user-bar.d.ts.map +1 -1
  647. package/dist/src/tanstack/admin/user-bar.js +1 -1
  648. package/dist/src/tanstack/admin/users/detail-breadcrumb.d.ts.map +1 -1
  649. package/dist/src/tanstack/admin/users/detail-breadcrumb.js +1 -1
  650. package/dist/src/tanstack/admin/users/detail-route.d.ts.map +1 -1
  651. package/dist/src/tanstack/admin/users/detail-screen.d.ts.map +1 -1
  652. package/dist/src/tanstack/admin/users/detail-screen.js +1 -1
  653. package/dist/src/tanstack/admin/users/index.d.ts.map +1 -1
  654. package/dist/src/tanstack/admin/users/query.d.ts.map +1 -1
  655. package/dist/src/tanstack/admin/users/query.js +1 -1
  656. package/dist/src/tanstack/admin/users/route-search.d.ts.map +1 -1
  657. package/dist/src/tanstack/admin/users/route.d.ts.map +1 -1
  658. package/dist/src/tanstack/admin/users/screen.d.ts.map +1 -1
  659. package/dist/src/tanstack/admin/users/screen.js +1 -1
  660. package/dist/src/tanstack/auth/actions.d.ts.map +1 -1
  661. package/dist/src/tanstack/auth/contract.d.ts.map +1 -1
  662. package/dist/src/tanstack/auth/index.d.ts.map +1 -1
  663. package/dist/src/tanstack/auth/login-route.d.ts.map +1 -1
  664. package/dist/src/tanstack/auth/login-screen.d.ts.map +1 -1
  665. package/dist/src/tanstack/auth/login-screen.js +1 -1
  666. package/dist/src/tanstack/auth/middleware-config.d.ts.map +1 -1
  667. package/dist/src/tanstack/auth/middleware-config.js +1 -1
  668. package/dist/src/tanstack/auth/queries.d.ts.map +1 -1
  669. package/dist/src/tanstack/auth/recovery-route.d.ts.map +1 -1
  670. package/dist/src/tanstack/auth/recovery-screen.d.ts.map +1 -1
  671. package/dist/src/tanstack/auth/recovery-screen.js +1 -1
  672. package/dist/src/tanstack/auth/recovery.d.ts.map +1 -1
  673. package/dist/src/tanstack/auth/redirects.d.ts.map +1 -1
  674. package/dist/src/tanstack/auth/register-route.d.ts.map +1 -1
  675. package/dist/src/tanstack/auth/register-screen.d.ts.map +1 -1
  676. package/dist/src/tanstack/auth/register-screen.js +1 -1
  677. package/dist/src/tanstack/auth/return-to.d.ts.map +1 -1
  678. package/dist/src/tanstack/auth/route-search.d.ts.map +1 -1
  679. package/dist/src/tanstack/auth/screens.d.ts.map +1 -1
  680. package/dist/src/tanstack/auth/session-api.d.ts.map +1 -1
  681. package/dist/src/tanstack/auth/session-query.d.ts.map +1 -1
  682. package/dist/src/tanstack/auth/sign-up-session.d.ts.map +1 -1
  683. package/dist/src/tanstack/auth/sso-route.d.ts.map +1 -1
  684. package/dist/src/tanstack/auth/sso-screen.d.ts.map +1 -1
  685. package/dist/src/tanstack/auth/sso-screen.js +1 -1
  686. package/dist/src/tanstack/auth/state.d.ts.map +1 -1
  687. package/dist/src/tanstack/auth/transport.d.ts.map +1 -1
  688. package/dist/src/tanstack/breadcrumb/index.d.ts.map +1 -1
  689. package/dist/src/tanstack/breadcrumb/main-breadcrumb.d.ts.map +1 -1
  690. package/dist/src/tanstack/breadcrumb/main-breadcrumb.js +1 -1
  691. package/dist/src/tanstack/breadcrumb/model.d.ts.map +1 -1
  692. package/dist/src/tanstack/devices/index.d.ts.map +1 -1
  693. package/dist/src/tanstack/devices/panel.d.ts.map +1 -1
  694. package/dist/src/tanstack/devices/panel.js +1 -1
  695. package/dist/src/tanstack/devices/query.d.ts.map +1 -1
  696. package/dist/src/tanstack/devices/query.js +1 -1
  697. package/dist/src/tanstack/fetcher/index.d.ts +15 -0
  698. package/dist/src/tanstack/fetcher/index.d.ts.map +1 -0
  699. package/dist/src/tanstack/fetcher/index.js +1 -0
  700. package/dist/src/tanstack/fetcher/server.d.ts.map +1 -1
  701. package/dist/src/tanstack/fetcher/server.js +1 -1
  702. package/dist/src/tanstack/files/index.d.ts.map +1 -1
  703. package/dist/src/tanstack/files/query.d.ts.map +1 -1
  704. package/dist/src/tanstack/files/query.js +1 -1
  705. package/dist/src/tanstack/files/route-search.d.ts.map +1 -1
  706. package/dist/src/tanstack/files/route.d.ts.map +1 -1
  707. package/dist/src/tanstack/files/screen.d.ts.map +1 -1
  708. package/dist/src/tanstack/files/screen.js +1 -1
  709. package/dist/src/tanstack/i18n/index.d.ts.map +1 -1
  710. package/dist/src/tanstack/i18n/locale.d.ts.map +1 -1
  711. package/dist/src/tanstack/i18n/messages.d.ts.map +1 -1
  712. package/dist/src/tanstack/i18n/query.d.ts.map +1 -1
  713. package/dist/src/tanstack/i18n/request.d.ts.map +1 -1
  714. package/dist/src/tanstack/i18n/request.js +1 -1
  715. package/dist/src/tanstack/i18n/route-messages.d.ts.map +1 -1
  716. package/dist/src/tanstack/i18n/route-messages.js +1 -1
  717. package/dist/src/tanstack/i18n/runtime.d.ts.map +1 -1
  718. package/dist/src/tanstack/i18n/server.d.ts.map +1 -1
  719. package/dist/src/tanstack/i18n/switch-locale.d.ts.map +1 -1
  720. package/dist/src/tanstack/layout/error-actions.d.ts.map +1 -1
  721. package/dist/src/tanstack/layout/error-actions.js +1 -1
  722. package/dist/src/tanstack/layout/header.d.ts.map +1 -1
  723. package/dist/src/tanstack/layout/header.js +1 -1
  724. package/dist/src/tanstack/layout/index.d.ts +1 -1
  725. package/dist/src/tanstack/layout/index.d.ts.map +1 -1
  726. package/dist/src/tanstack/layout/index.js +1 -1
  727. package/dist/src/tanstack/layout/language-switcher.d.ts.map +1 -1
  728. package/dist/src/tanstack/layout/language-switcher.js +1 -1
  729. package/dist/src/tanstack/layout/main-header.d.ts.map +1 -1
  730. package/dist/src/tanstack/layout/main-header.js +1 -1
  731. package/dist/src/tanstack/layout/not-found.d.ts +3 -0
  732. package/dist/src/tanstack/layout/not-found.d.ts.map +1 -1
  733. package/dist/src/tanstack/layout/not-found.js +1 -1
  734. package/dist/src/tanstack/layout/root-providers.d.ts.map +1 -1
  735. package/dist/src/tanstack/layout/root-providers.js +1 -1
  736. package/dist/src/tanstack/layout/router-link.d.ts.map +1 -1
  737. package/dist/src/tanstack/layout/router-link.js +1 -1
  738. package/dist/src/tanstack/layout/user-header.d.ts.map +1 -1
  739. package/dist/src/tanstack/layout/user-header.js +1 -1
  740. package/dist/src/tanstack/metadata/index.d.ts.map +1 -1
  741. package/dist/src/tanstack/pending/guard-pending.d.ts.map +1 -1
  742. package/dist/src/tanstack/pending/guard-pending.js +1 -1
  743. package/dist/src/tanstack/pending/navigation-pending.d.ts.map +1 -1
  744. package/dist/src/tanstack/pending/navigation-pending.js +1 -1
  745. package/dist/src/tanstack/pending/route-pending-skeleton.d.ts.map +1 -1
  746. package/dist/src/tanstack/pending/route-pending-skeleton.js +1 -1
  747. package/dist/src/tanstack/pending/shapes.d.ts.map +1 -1
  748. package/dist/src/tanstack/pending/shapes.js +1 -1
  749. package/dist/src/tanstack/plugin-routes/collision.d.ts.map +1 -1
  750. package/dist/src/tanstack/plugin-routes/components.d.ts.map +1 -1
  751. package/dist/src/tanstack/plugin-routes/components.js +1 -1
  752. package/dist/src/tanstack/plugin-routes/container.d.ts.map +1 -1
  753. package/dist/src/tanstack/plugin-routes/guard.d.ts.map +1 -1
  754. package/dist/src/tanstack/plugin-routes/head.d.ts.map +1 -1
  755. package/dist/src/tanstack/plugin-routes/index.d.ts.map +1 -1
  756. package/dist/src/tanstack/plugin-routes/loader-data.d.ts.map +1 -1
  757. package/dist/src/tanstack/plugin-routes/module-ref.d.ts.map +1 -1
  758. package/dist/src/tanstack/plugin-routes/mount.d.ts.map +1 -1
  759. package/dist/src/tanstack/plugin-routes/specs.d.ts.map +1 -1
  760. package/dist/src/tanstack/realtime/index.d.ts.map +1 -1
  761. package/dist/src/tanstack/realtime/realtime-listeners.d.ts.map +1 -1
  762. package/dist/src/tanstack/realtime/realtime-listeners.js +1 -1
  763. package/dist/src/tanstack/realtime/session.d.ts.map +1 -1
  764. package/dist/src/tanstack/routes/admin/advanced.d.ts.map +1 -1
  765. package/dist/src/tanstack/routes/admin/content.d.ts.map +1 -1
  766. package/dist/src/tanstack/routes/admin/index.d.ts.map +1 -1
  767. package/dist/src/tanstack/routes/admin/staff.d.ts.map +1 -1
  768. package/dist/src/tanstack/routes/admin/system.d.ts.map +1 -1
  769. package/dist/src/tanstack/routes/admin/users.d.ts.map +1 -1
  770. package/dist/src/tanstack/routes/index.d.ts +1 -1
  771. package/dist/src/tanstack/routes/index.d.ts.map +1 -1
  772. package/dist/src/tanstack/routes/main/auth.d.ts +3 -0
  773. package/dist/src/tanstack/routes/main/auth.d.ts.map +1 -0
  774. package/dist/src/tanstack/routes/main/discovery.d.ts.map +1 -1
  775. package/dist/src/tanstack/routes/main/files.d.ts.map +1 -1
  776. package/dist/src/tanstack/routes/main/index.d.ts +4 -3
  777. package/dist/src/tanstack/routes/main/index.d.ts.map +1 -1
  778. package/dist/src/tanstack/routes/main/index.js +1 -1
  779. package/dist/src/tanstack/routes/main/settings.d.ts.map +1 -1
  780. package/dist/src/tanstack/routes/main/sso.d.ts +3 -0
  781. package/dist/src/tanstack/routes/main/sso.d.ts.map +1 -0
  782. package/dist/src/tanstack/routes/root/admin-sign-in.d.ts.map +1 -1
  783. package/dist/src/tanstack/routes/root/index.d.ts.map +1 -1
  784. package/dist/src/tanstack/routes/root/index.js +1 -1
  785. package/dist/src/tanstack/routes/root/types.d.ts +2 -5
  786. package/dist/src/tanstack/routes/root/types.d.ts.map +1 -1
  787. package/dist/src/tanstack/routes/types.d.ts +5 -0
  788. package/dist/src/tanstack/routes/types.d.ts.map +1 -1
  789. package/dist/src/tanstack/search/discover-route.d.ts.map +1 -1
  790. package/dist/src/tanstack/search/discover-screen.d.ts.map +1 -1
  791. package/dist/src/tanstack/search/discover-screen.js +1 -1
  792. package/dist/src/tanstack/search/discover.d.ts.map +1 -1
  793. package/dist/src/tanstack/search/feed.d.ts.map +1 -1
  794. package/dist/src/tanstack/search/feed.js +1 -1
  795. package/dist/src/tanstack/search/index.d.ts.map +1 -1
  796. package/dist/src/tanstack/search/route-search.d.ts.map +1 -1
  797. package/dist/src/tanstack/search/search-route.d.ts.map +1 -1
  798. package/dist/src/tanstack/search/search-screen.d.ts.map +1 -1
  799. package/dist/src/tanstack/search/search-screen.js +1 -1
  800. package/dist/src/tanstack/settings/index.d.ts.map +1 -1
  801. package/dist/src/tanstack/settings/layout.d.ts.map +1 -1
  802. package/dist/src/tanstack/settings/layout.js +1 -1
  803. package/dist/src/tanstack/settings/route.d.ts.map +1 -1
  804. package/dist/src/tanstack/start/create-start.d.ts.map +1 -1
  805. package/dist/src/tanstack/start/document-headers.d.ts.map +1 -1
  806. package/dist/src/tanstack/start/index.d.ts.map +1 -1
  807. package/dist/src/tiptap.css +103 -6
  808. package/dist/src/views/admin/admin-request.d.ts.map +1 -1
  809. package/dist/src/views/admin/layouts/admin-link.d.ts.map +1 -1
  810. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-admin-content.d.ts.map +1 -1
  811. package/dist/src/views/admin/layouts/normalize-url.d.ts.map +1 -1
  812. package/dist/src/views/admin/layouts/search/search-content.d.ts.map +1 -1
  813. package/dist/src/views/admin/layouts/search/search-content.js +1 -1
  814. package/dist/src/views/admin/layouts/search/search-dialog-content.d.ts.map +1 -1
  815. package/dist/src/views/admin/layouts/search/search-dialog-content.js +1 -1
  816. package/dist/src/views/admin/layouts/search/search-only-pages.d.ts.map +1 -1
  817. package/dist/src/views/admin/layouts/search/search-users.d.ts.map +1 -1
  818. package/dist/src/views/admin/layouts/sidebar/nav/item-content.d.ts.map +1 -1
  819. package/dist/src/views/admin/layouts/sidebar/nav/item-content.js +1 -1
  820. package/dist/src/views/admin/layouts/sidebar/nav/nav-active.d.ts.map +1 -1
  821. package/dist/src/views/admin/layouts/sidebar/nav/nav-content.d.ts.map +1 -1
  822. package/dist/src/views/admin/layouts/sidebar/nav/nav-model.d.ts.map +1 -1
  823. package/dist/src/views/admin/layouts/sidebar/sidebar-content.d.ts.map +1 -1
  824. package/dist/src/views/admin/layouts/user-bar/user-bar-content.d.ts.map +1 -1
  825. package/dist/src/views/admin/layouts/user-bar/user-bar-content.js +1 -1
  826. package/dist/src/views/admin/sign-in/sign-in-admin-content.d.ts.map +1 -1
  827. package/dist/src/views/admin/table/params.d.ts.map +1 -1
  828. package/dist/src/views/admin/table/query.d.ts.map +1 -1
  829. package/dist/src/views/admin/views/content/actions/conflict-notice.d.ts.map +1 -1
  830. package/dist/src/views/admin/views/content/actions/content-form.d.ts +3 -1
  831. package/dist/src/views/admin/views/content/actions/content-form.d.ts.map +1 -1
  832. package/dist/src/views/admin/views/content/actions/content-form.js +1 -1
  833. package/dist/src/views/admin/views/content/actions/content-panel.d.ts.map +1 -1
  834. package/dist/src/views/admin/views/content/actions/content-panel.js +1 -1
  835. package/dist/src/views/admin/views/content/actions/delivery/delivery-panel.d.ts.map +1 -1
  836. package/dist/src/views/admin/views/content/actions/delivery-action.d.ts.map +1 -1
  837. package/dist/src/views/admin/views/content/actions/delivery-action.js +1 -1
  838. package/dist/src/views/admin/views/content/actions/delivery-model.d.ts.map +1 -1
  839. package/dist/src/views/admin/views/content/actions/editorial-api.d.ts.map +1 -1
  840. package/dist/src/views/admin/views/content/actions/editorial-query.d.ts.map +1 -1
  841. package/dist/src/views/admin/views/content/actions/editorial-transport.d.ts.map +1 -1
  842. package/dist/src/views/admin/views/content/actions/form-dialog.d.ts +2 -1
  843. package/dist/src/views/admin/views/content/actions/form-dialog.d.ts.map +1 -1
  844. package/dist/src/views/admin/views/content/actions/form-dialog.js +1 -1
  845. package/dist/src/views/admin/views/content/actions/history/revision-actor.d.ts.map +1 -1
  846. package/dist/src/views/admin/views/content/actions/history/revision-diff.d.ts.map +1 -1
  847. package/dist/src/views/admin/views/content/actions/history/revision-history.d.ts.map +1 -1
  848. package/dist/src/views/admin/views/content/actions/history/revision-row.d.ts.map +1 -1
  849. package/dist/src/views/admin/views/content/actions/history-action.d.ts.map +1 -1
  850. package/dist/src/views/admin/views/content/actions/history-action.js +1 -1
  851. package/dist/src/views/admin/views/content/actions/preview-action.d.ts.map +1 -1
  852. package/dist/src/views/admin/views/content/actions/preview-action.js +1 -1
  853. package/dist/src/views/admin/views/content/actions/row-actions-model.d.ts.map +1 -1
  854. package/dist/src/views/admin/views/content/actions/schedule/schedule-panel.d.ts.map +1 -1
  855. package/dist/src/views/admin/views/content/actions/schedule-action.d.ts.map +1 -1
  856. package/dist/src/views/admin/views/content/actions/schedule-action.js +1 -1
  857. package/dist/src/views/admin/views/content/content-labels.d.ts.map +1 -1
  858. package/dist/src/views/admin/views/content/content-mutation.d.ts.map +1 -1
  859. package/dist/src/views/admin/views/content/content-query.d.ts.map +1 -1
  860. package/dist/src/views/admin/views/content/content-request.d.ts +4 -1
  861. package/dist/src/views/admin/views/content/content-request.d.ts.map +1 -1
  862. package/dist/src/views/admin/views/content/content-request.js +1 -1
  863. package/dist/src/views/admin/views/content/form/context.d.ts +1 -0
  864. package/dist/src/views/admin/views/content/form/context.d.ts.map +1 -1
  865. package/dist/src/views/admin/views/content/form/context.js +1 -1
  866. package/dist/src/views/admin/views/content/form/diff.d.ts.map +1 -1
  867. package/dist/src/views/admin/views/content/form/index.d.ts +3 -1
  868. package/dist/src/views/admin/views/content/form/index.d.ts.map +1 -1
  869. package/dist/src/views/admin/views/content/form/index.js +1 -1
  870. package/dist/src/views/admin/views/content/form/item-query.d.ts +3 -1
  871. package/dist/src/views/admin/views/content/form/item-query.d.ts.map +1 -1
  872. package/dist/src/views/admin/views/content/form/item-query.js +1 -1
  873. package/dist/src/views/admin/views/content/form/layout-primitives.d.ts +13 -0
  874. package/dist/src/views/admin/views/content/form/layout-primitives.d.ts.map +1 -0
  875. package/dist/src/views/admin/views/content/form/layout-primitives.js +1 -0
  876. package/dist/src/views/admin/views/content/form/mutations-api.d.ts.map +1 -1
  877. package/dist/src/views/admin/views/content/form/navigation.d.ts.map +1 -1
  878. package/dist/src/views/admin/views/content/form/primitives.d.ts +0 -11
  879. package/dist/src/views/admin/views/content/form/primitives.d.ts.map +1 -1
  880. package/dist/src/views/admin/views/content/form/primitives.js +1 -1
  881. package/dist/src/views/admin/views/content/form/publication-status.d.ts.map +1 -1
  882. package/dist/src/views/admin/views/content/form/sections.d.ts.map +1 -1
  883. package/dist/src/views/admin/views/content/form/sections.js +1 -1
  884. package/dist/src/views/admin/views/content/form/skeleton.d.ts +46 -0
  885. package/dist/src/views/admin/views/content/form/skeleton.d.ts.map +1 -0
  886. package/dist/src/views/admin/views/content/form/skeleton.js +1 -0
  887. package/dist/src/views/admin/views/content/form/transport.d.ts.map +1 -1
  888. package/dist/src/views/admin/views/content/lib/api-result.d.ts.map +1 -1
  889. package/dist/src/views/admin/views/content/lib/field-component.d.ts.map +1 -1
  890. package/dist/src/views/admin/views/content/lib/invalidate.d.ts.map +1 -1
  891. package/dist/src/views/admin/views/content/lib/mutation-feedback.d.ts.map +1 -1
  892. package/dist/src/views/admin/views/content/lib/options-query.d.ts.map +1 -1
  893. package/dist/src/views/admin/views/content/lib/reference-options.d.ts.map +1 -1
  894. package/dist/src/views/admin/views/content/lib/user-option.d.ts.map +1 -1
  895. package/dist/src/views/admin/views/content/page/content-form-page.d.ts +2 -0
  896. package/dist/src/views/admin/views/content/page/content-form-page.d.ts.map +1 -1
  897. package/dist/src/views/admin/views/content/page/content-form-page.js +1 -1
  898. package/dist/src/views/admin/views/content/table/cells.d.ts.map +1 -1
  899. package/dist/src/views/admin/views/content/table/columns.d.ts.map +1 -1
  900. package/dist/src/views/admin/views/content/table/list-mutations.d.ts.map +1 -1
  901. package/dist/src/views/admin/views/content/table/list-query.d.ts +2 -1
  902. package/dist/src/views/admin/views/content/table/list-query.d.ts.map +1 -1
  903. package/dist/src/views/admin/views/content/table/list-query.js +1 -1
  904. package/dist/src/views/admin/views/core/advanced/cron/cron-query.d.ts +2 -0
  905. package/dist/src/views/admin/views/core/advanced/cron/cron-query.d.ts.map +1 -1
  906. package/dist/src/views/admin/views/core/advanced/cron/cron-query.js +1 -1
  907. package/dist/src/views/admin/views/core/advanced/cron/cron-table-content.d.ts.map +1 -1
  908. package/dist/src/views/admin/views/core/advanced/cron/cron-table-content.js +1 -1
  909. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts.map +1 -1
  910. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -1
  911. package/dist/src/views/admin/views/core/advanced/queue/queue-query.d.ts +2 -0
  912. package/dist/src/views/admin/views/core/advanced/queue/queue-query.d.ts.map +1 -1
  913. package/dist/src/views/admin/views/core/advanced/queue/queue-query.js +1 -1
  914. package/dist/src/views/admin/views/core/advanced/queue/queue-table-content.d.ts.map +1 -1
  915. package/dist/src/views/admin/views/core/advanced/queue/queue-table-content.js +1 -1
  916. package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts.map +1 -1
  917. package/dist/src/views/admin/views/core/advanced/search/collections-table-content.d.ts.map +1 -1
  918. package/dist/src/views/admin/views/core/advanced/search/collections-table-content.js +1 -1
  919. package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts.map +1 -1
  920. package/dist/src/views/admin/views/core/advanced/search/cron-warning.js +1 -1
  921. package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts.map +1 -1
  922. package/dist/src/views/admin/views/core/advanced/search/reindex-action.js +1 -1
  923. package/dist/src/views/admin/views/core/advanced/search/remove-documents-action.d.ts.map +1 -1
  924. package/dist/src/views/admin/views/core/advanced/search/remove-documents-action.js +1 -1
  925. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts.map +1 -1
  926. package/dist/src/views/admin/views/core/advanced/search/search-header-actions.js +1 -1
  927. package/dist/src/views/admin/views/core/advanced/search/search-index-content.d.ts.map +1 -1
  928. package/dist/src/views/admin/views/core/advanced/search/search-index-content.js +1 -1
  929. package/dist/src/views/admin/views/core/advanced/search/search-index-mutations.d.ts.map +1 -1
  930. package/dist/src/views/admin/views/core/advanced/search/search-index-query.d.ts +2 -0
  931. package/dist/src/views/admin/views/core/advanced/search/search-index-query.d.ts.map +1 -1
  932. package/dist/src/views/admin/views/core/advanced/search/search-index-query.js +1 -1
  933. package/dist/src/views/admin/views/core/advanced/search/sync-errors-card-content.d.ts.map +1 -1
  934. package/dist/src/views/admin/views/core/advanced/search/sync-errors-card-content.js +1 -1
  935. package/dist/src/views/admin/views/core/dashboard/grid/board-provider.d.ts.map +1 -1
  936. package/dist/src/views/admin/views/core/dashboard/grid/board-provider.js +1 -1
  937. package/dist/src/views/admin/views/core/dashboard/grid/dashboard-grid.d.ts.map +1 -1
  938. package/dist/src/views/admin/views/core/dashboard/grid/dashboard-grid.js +1 -1
  939. package/dist/src/views/admin/views/core/dashboard/grid/drop-placeholder.d.ts.map +1 -1
  940. package/dist/src/views/admin/views/core/dashboard/grid/drop-placeholder.js +1 -1
  941. package/dist/src/views/admin/views/core/dashboard/grid/edit-actions.d.ts.map +1 -1
  942. package/dist/src/views/admin/views/core/dashboard/grid/edit-actions.js +1 -1
  943. package/dist/src/views/admin/views/core/dashboard/grid/widget-card.d.ts.map +1 -1
  944. package/dist/src/views/admin/views/core/dashboard/grid/widget-card.js +1 -1
  945. package/dist/src/views/admin/views/core/dashboard/grid/widget-panel.d.ts.map +1 -1
  946. package/dist/src/views/admin/views/core/dashboard/grid/widget-panel.js +1 -1
  947. package/dist/src/views/admin/views/core/dashboard/grid/widget-settings-dialog.d.ts.map +1 -1
  948. package/dist/src/views/admin/views/core/dashboard/grid/widget-settings-dialog.js +1 -1
  949. package/dist/src/views/admin/views/core/dashboard/grid/widget-skeleton.d.ts.map +1 -1
  950. package/dist/src/views/admin/views/core/dashboard/grid/widget-skeleton.js +1 -1
  951. package/dist/src/views/admin/views/core/dashboard/widgets/build-board.d.ts.map +1 -1
  952. package/dist/src/views/admin/views/core/dashboard/widgets/dashboard-actions.d.ts.map +1 -1
  953. package/dist/src/views/admin/views/core/dashboard/widgets/layout-query.d.ts +2 -0
  954. package/dist/src/views/admin/views/core/dashboard/widgets/layout-query.d.ts.map +1 -1
  955. package/dist/src/views/admin/views/core/dashboard/widgets/layout-query.js +1 -1
  956. package/dist/src/views/admin/views/core/dashboard/widgets/normalize-layout.d.ts.map +1 -1
  957. package/dist/src/views/admin/views/core/dashboard/widgets/notes/notes-content.d.ts.map +1 -1
  958. package/dist/src/views/admin/views/core/dashboard/widgets/notes/notes-content.js +1 -1
  959. package/dist/src/views/admin/views/core/dashboard/widgets/resolve-widgets.d.ts.map +1 -1
  960. package/dist/src/views/admin/views/core/dashboard/widgets/send-notification/send-notification-settings-form.d.ts.map +1 -1
  961. package/dist/src/views/admin/views/core/dashboard/widgets/send-notification/send-notification-settings-form.js +1 -1
  962. package/dist/src/views/admin/views/core/dashboard/widgets/send-notification/send-notification.d.ts.map +1 -1
  963. package/dist/src/views/admin/views/core/dashboard/widgets/send-notification/send-notification.js +1 -1
  964. package/dist/src/views/admin/views/core/dashboard/widgets/types.d.ts.map +1 -1
  965. package/dist/src/views/admin/views/core/dashboard/widgets/widget-mutations.d.ts.map +1 -1
  966. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.d.ts.map +1 -1
  967. package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -1
  968. package/dist/src/views/admin/views/core/debug/debug-query.d.ts +3 -0
  969. package/dist/src/views/admin/views/core/debug/debug-query.d.ts.map +1 -1
  970. package/dist/src/views/admin/views/core/debug/debug-query.js +1 -1
  971. package/dist/src/views/admin/views/core/debug/queue/queue-view-content.d.ts.map +1 -1
  972. package/dist/src/views/admin/views/core/debug/queue/queue-view-content.js +1 -1
  973. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/content.d.ts.map +1 -1
  974. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts.map +1 -1
  975. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -1
  976. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-content.d.ts.map +1 -1
  977. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-content.js +1 -1
  978. package/dist/src/views/admin/views/core/shared/admin-mutation.d.ts.map +1 -1
  979. package/dist/src/views/admin/views/core/shared/admin-permissions.d.ts.map +1 -1
  980. package/dist/src/views/admin/views/core/shared/admin-scope.d.ts.map +1 -1
  981. package/dist/src/views/admin/views/core/staff/create/create-staff-form-content.d.ts.map +1 -1
  982. package/dist/src/views/admin/views/core/staff/create/create-staff-form-content.js +1 -1
  983. package/dist/src/views/admin/views/core/staff/edit/edit-staff-form-content.d.ts.map +1 -1
  984. package/dist/src/views/admin/views/core/staff/edit/edit-staff-form-content.js +1 -1
  985. package/dist/src/views/admin/views/core/staff/selectable-card.d.ts.map +1 -1
  986. package/dist/src/views/admin/views/core/staff/selectable-card.js +1 -1
  987. package/dist/src/views/admin/views/core/staff/staff-model.d.ts.map +1 -1
  988. package/dist/src/views/admin/views/core/staff/staff-mutations.d.ts.map +1 -1
  989. package/dist/src/views/admin/views/core/staff/staff-query.d.ts +4 -0
  990. package/dist/src/views/admin/views/core/staff/staff-query.d.ts.map +1 -1
  991. package/dist/src/views/admin/views/core/staff/staff-query.js +1 -1
  992. package/dist/src/views/admin/views/core/staff/table/staff-table-content.d.ts.map +1 -1
  993. package/dist/src/views/admin/views/core/staff/table/staff-table-content.js +1 -1
  994. package/dist/src/views/admin/views/core/staff/table/staff-user-format-content.d.ts.map +1 -1
  995. package/dist/src/views/admin/views/core/staff/table/staff-user-format-content.js +1 -1
  996. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts.map +1 -1
  997. package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.js +1 -1
  998. package/dist/src/views/admin/views/core/system/files/actions/files-bulk-actions.d.ts.map +1 -1
  999. package/dist/src/views/admin/views/core/system/files/actions/files-bulk-actions.js +1 -1
  1000. package/dist/src/views/admin/views/core/system/files/files-delete.d.ts.map +1 -1
  1001. package/dist/src/views/admin/views/core/system/files/files-query.d.ts +2 -0
  1002. package/dist/src/views/admin/views/core/system/files/files-query.d.ts.map +1 -1
  1003. package/dist/src/views/admin/views/core/system/files/files-query.js +1 -1
  1004. package/dist/src/views/admin/views/core/system/files/files-table-content.d.ts.map +1 -1
  1005. package/dist/src/views/admin/views/core/system/files/files-table-content.js +1 -1
  1006. package/dist/src/views/admin/views/core/system/integrations/integrations-content.d.ts.map +1 -1
  1007. package/dist/src/views/admin/views/core/system/integrations/integrations-content.js +1 -1
  1008. package/dist/src/views/admin/views/core/system/integrations/integrations-query.d.ts +2 -0
  1009. package/dist/src/views/admin/views/core/system/integrations/integrations-query.d.ts.map +1 -1
  1010. package/dist/src/views/admin/views/core/system/integrations/integrations-query.js +1 -1
  1011. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts.map +1 -1
  1012. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.js +1 -1
  1013. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email-mutation.d.ts.map +1 -1
  1014. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts.map +1 -1
  1015. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.js +1 -1
  1016. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts.map +1 -1
  1017. package/dist/src/views/admin/views/core/system/integrations/test-ai/content.d.ts.map +1 -1
  1018. package/dist/src/views/admin/views/core/system/integrations/test-ai/content.js +1 -1
  1019. package/dist/src/views/admin/views/core/system/integrations/test-ai/test-ai.d.ts.map +1 -1
  1020. package/dist/src/views/admin/views/core/system/integrations/test-ai/test-ai.js +1 -1
  1021. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts.map +1 -1
  1022. package/dist/src/views/admin/views/core/system/integrations/test-storage/content.js +1 -1
  1023. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts.map +1 -1
  1024. package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.js +1 -1
  1025. package/dist/src/views/admin/views/core/test.d.ts.map +1 -1
  1026. package/dist/src/views/admin/views/core/test.js +1 -1
  1027. package/dist/src/views/admin/views/core/users/detail/user-detail-content.d.ts.map +1 -1
  1028. package/dist/src/views/admin/views/core/users/detail/user-detail-content.js +1 -1
  1029. package/dist/src/views/admin/views/core/users/detail/user-fields-content.d.ts.map +1 -1
  1030. package/dist/src/views/admin/views/core/users/detail/user-fields-content.js +1 -1
  1031. package/dist/src/views/admin/views/core/users/detail/user-query.d.ts +2 -0
  1032. package/dist/src/views/admin/views/core/users/detail/user-query.d.ts.map +1 -1
  1033. package/dist/src/views/admin/views/core/users/detail/user-query.js +1 -1
  1034. package/dist/src/views/admin/views/core/users/detail/user-roles-content.d.ts.map +1 -1
  1035. package/dist/src/views/admin/views/core/users/detail/user-roles-content.js +1 -1
  1036. package/dist/src/views/admin/views/core/users/list/create-user-content.d.ts.map +1 -1
  1037. package/dist/src/views/admin/views/core/users/list/create-user-content.js +1 -1
  1038. package/dist/src/views/admin/views/core/users/list/create-user-form.d.ts.map +1 -1
  1039. package/dist/src/views/admin/views/core/users/list/create-user-form.js +1 -1
  1040. package/dist/src/views/admin/views/core/users/list/users-query.d.ts +2 -0
  1041. package/dist/src/views/admin/views/core/users/list/users-query.d.ts.map +1 -1
  1042. package/dist/src/views/admin/views/core/users/list/users-query.js +1 -1
  1043. package/dist/src/views/admin/views/core/users/list/users-table-content.d.ts.map +1 -1
  1044. package/dist/src/views/admin/views/core/users/list/users-table-content.js +1 -1
  1045. package/dist/src/views/admin/views/core/users/roles/role-form-content.d.ts.map +1 -1
  1046. package/dist/src/views/admin/views/core/users/roles/role-form-content.js +1 -1
  1047. package/dist/src/views/admin/views/core/users/roles/roles-mutations.d.ts.map +1 -1
  1048. package/dist/src/views/admin/views/core/users/roles/roles-query.d.ts +2 -0
  1049. package/dist/src/views/admin/views/core/users/roles/roles-query.d.ts.map +1 -1
  1050. package/dist/src/views/admin/views/core/users/roles/roles-query.js +1 -1
  1051. package/dist/src/views/admin/views/core/users/roles/roles-table-content.d.ts.map +1 -1
  1052. package/dist/src/views/admin/views/core/users/roles/roles-table-content.js +1 -1
  1053. package/dist/src/views/admin/views/core/users/users-mutations.d.ts.map +1 -1
  1054. package/dist/src/views/auth/auth-link.d.ts.map +1 -1
  1055. package/dist/src/views/auth/password-reset/change-password-form/change-password-form-content.d.ts.map +1 -1
  1056. package/dist/src/views/auth/password-reset/change-password-form/change-password-form-content.js +1 -1
  1057. package/dist/src/views/auth/password-reset/change-password-form/schema.d.ts.map +1 -1
  1058. package/dist/src/views/auth/password-reset/change-password-form/use-change-password-form.d.ts.map +1 -1
  1059. package/dist/src/views/auth/password-reset/change-password-form/use-change-password-form.js +1 -1
  1060. package/dist/src/views/auth/password-reset/form/password-reset-form-content.d.ts.map +1 -1
  1061. package/dist/src/views/auth/password-reset/form/password-reset-form-content.js +1 -1
  1062. package/dist/src/views/auth/password-reset/form/schema.d.ts.map +1 -1
  1063. package/dist/src/views/auth/password-reset/form/use-password-reset-form.d.ts.map +1 -1
  1064. package/dist/src/views/auth/password-reset/form/use-password-reset-form.js +1 -1
  1065. package/dist/src/views/auth/password-reset/password-reset-content.d.ts.map +1 -1
  1066. package/dist/src/views/auth/password-reset/recovery-link.d.ts.map +1 -1
  1067. package/dist/src/views/auth/settings/devices/device-item.d.ts.map +1 -1
  1068. package/dist/src/views/auth/settings/devices/device-item.js +1 -1
  1069. package/dist/src/views/auth/settings/devices/devices-content.d.ts.map +1 -1
  1070. package/dist/src/views/auth/settings/devices/devices-content.js +1 -1
  1071. package/dist/src/views/auth/settings/devices/devices-query.d.ts +2 -24
  1072. package/dist/src/views/auth/settings/devices/devices-query.d.ts.map +1 -1
  1073. package/dist/src/views/auth/settings/devices/devices-query.js +1 -1
  1074. package/dist/src/views/auth/settings/devices/devices-revoke.d.ts.map +1 -1
  1075. package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts.map +1 -1
  1076. package/dist/src/views/auth/settings/devices/revoke-device-button.js +1 -1
  1077. package/dist/src/views/auth/settings/nav-content.d.ts.map +1 -1
  1078. package/dist/src/views/auth/settings/nav-content.js +1 -1
  1079. package/dist/src/views/auth/settings/overview/overview.d.ts.map +1 -1
  1080. package/dist/src/views/auth/settings/overview/overview.js +1 -1
  1081. package/dist/src/views/auth/settings/security/security.d.ts.map +1 -1
  1082. package/dist/src/views/auth/settings/security/security.js +1 -1
  1083. package/dist/src/views/auth/settings/settings-breadcrumb-content.d.ts.map +1 -1
  1084. package/dist/src/views/auth/settings/settings-nav.d.ts.map +1 -1
  1085. package/dist/src/views/auth/settings/shell-content.d.ts.map +1 -1
  1086. package/dist/src/views/auth/settings/shell-content.js +1 -1
  1087. package/dist/src/views/auth/sign-in/form/schema.d.ts.map +1 -1
  1088. package/dist/src/views/auth/sign-in/form/sign-in-form-content.d.ts.map +1 -1
  1089. package/dist/src/views/auth/sign-in/form/sign-in-form-content.js +1 -1
  1090. package/dist/src/views/auth/sign-in/form/use-sign-in-form.d.ts.map +1 -1
  1091. package/dist/src/views/auth/sign-in/form/use-sign-in-form.js +1 -1
  1092. package/dist/src/views/auth/sign-in/sign-in-content.d.ts.map +1 -1
  1093. package/dist/src/views/auth/sign-in/sign-in-content.js +1 -1
  1094. package/dist/src/views/auth/sign-up/form/schema.d.ts.map +1 -1
  1095. package/dist/src/views/auth/sign-up/form/sign-up-form-content.d.ts.map +1 -1
  1096. package/dist/src/views/auth/sign-up/form/sign-up-form-content.js +1 -1
  1097. package/dist/src/views/auth/sign-up/form/use-sign-up-form.d.ts.map +1 -1
  1098. package/dist/src/views/auth/sign-up/form/use-sign-up-form.js +1 -1
  1099. package/dist/src/views/auth/sign-up/sign-up-content.d.ts.map +1 -1
  1100. package/dist/src/views/auth/sign-up/sign-up-content.js +1 -1
  1101. package/dist/src/views/auth/sign-up/wrapper.d.ts.map +1 -1
  1102. package/dist/src/views/auth/sign-up/wrapper.js +1 -1
  1103. package/dist/src/views/auth/sso/buttons/sso-buttons-content.d.ts.map +1 -1
  1104. package/dist/src/views/auth/sso/buttons/sso-buttons-content.js +1 -1
  1105. package/dist/src/views/auth/sso/callback/sso-callback-content.d.ts.map +1 -1
  1106. package/dist/src/views/auth/sso/callback/sso-callback-content.js +1 -1
  1107. package/dist/src/views/auth/sso/callback/sso-callback-result.d.ts.map +1 -1
  1108. package/dist/src/views/auth/sso/callback/use-sso-callback.d.ts.map +1 -1
  1109. package/dist/src/views/auth/sso/callback/use-sso-callback.js +1 -1
  1110. package/dist/src/views/auth/sso/providers.d.ts.map +1 -1
  1111. package/dist/src/views/breadcrumb/breadcrumb-render-content.d.ts.map +1 -1
  1112. package/dist/src/views/breadcrumb/breadcrumb-trail-content.d.ts.map +1 -1
  1113. package/dist/src/views/error/error-content.d.ts.map +1 -1
  1114. package/dist/src/views/files/actions/file-row-actions.d.ts.map +1 -1
  1115. package/dist/src/views/files/actions/file-row-actions.js +1 -1
  1116. package/dist/src/views/files/actions/files-bulk-actions.d.ts.map +1 -1
  1117. package/dist/src/views/files/actions/files-bulk-actions.js +1 -1
  1118. package/dist/src/views/files/my-files-query.d.ts +2 -0
  1119. package/dist/src/views/files/my-files-query.d.ts.map +1 -1
  1120. package/dist/src/views/files/my-files-query.js +1 -1
  1121. package/dist/src/views/files/my-files-table-content.d.ts.map +1 -1
  1122. package/dist/src/views/files/my-files-table-content.js +1 -1
  1123. package/dist/src/views/layouts/providers.d.ts +2 -2
  1124. package/dist/src/views/layouts/providers.d.ts.map +1 -1
  1125. package/dist/src/views/layouts/providers.js +1 -1
  1126. package/dist/src/views/layouts/rate-limit-listener.d.ts.map +1 -1
  1127. package/dist/src/views/layouts/rate-limit-listener.js +1 -1
  1128. package/dist/src/views/layouts/theme/header/header-content.d.ts.map +1 -1
  1129. package/dist/src/views/layouts/theme/header/header-content.js +1 -1
  1130. package/dist/src/views/layouts/theme/header/header-nav.d.ts.map +1 -1
  1131. package/dist/src/views/layouts/theme/header/user/user-header-content.d.ts.map +1 -1
  1132. package/dist/src/views/layouts/theme/header/user/user-header-content.js +1 -1
  1133. package/dist/src/views/layouts/theme/header/user/user-header-model.d.ts.map +1 -1
  1134. package/dist/src/views/layouts/theme/layout-content.d.ts.map +1 -1
  1135. package/dist/src/views/layouts/theme/notification-listener.d.ts.map +1 -1
  1136. package/dist/src/views/layouts/theme/notification-listener.js +1 -1
  1137. package/dist/src/views/layouts/theme/web-socket-auth-sync.d.ts.map +1 -1
  1138. package/dist/src/views/layouts/theme/web-socket-auth-sync.js +1 -1
  1139. package/dist/src/views/search/search-controls-content.d.ts.map +1 -1
  1140. package/dist/src/views/search/search-controls-content.js +1 -1
  1141. package/dist/src/views/search/search-feed-content.d.ts.map +1 -1
  1142. package/dist/src/views/search/search-feed-content.js +1 -1
  1143. package/dist/src/views/search/search-feed-query.d.ts +2 -0
  1144. package/dist/src/views/search/search-feed-query.d.ts.map +1 -1
  1145. package/dist/src/views/search/search-feed-query.js +1 -1
  1146. package/dist/src/views/search/search-params.d.ts.map +1 -1
  1147. package/dist/src/vitnode.config.d.ts +6 -0
  1148. package/dist/src/vitnode.config.d.ts.map +1 -1
  1149. package/dist/src/ws/auth-sync.d.ts.map +1 -1
  1150. package/dist/src/ws/handle.d.ts.map +1 -1
  1151. package/dist/src/ws/manager.d.ts.map +1 -1
  1152. package/dist/src/ws/notifications.d.ts.map +1 -1
  1153. package/dist/src/ws/provider.d.ts.map +1 -1
  1154. package/dist/src/ws/provider.js +1 -1
  1155. package/dist/src/ws/registry.d.ts.map +1 -1
  1156. package/dist/src/ws/types.d.ts.map +1 -1
  1157. package/dist/src/ws/use-websocket.d.ts.map +1 -1
  1158. package/dist/src/ws/use-websocket.js +1 -1
  1159. package/dist/tsconfig.build.tsbuildinfo +1 -1
  1160. package/eslint.config.mjs +4 -11
  1161. package/package.json +12 -2
  1162. package/src/locales/api/index.ts +0 -9
  1163. package/src/locales/en.json +45 -2
  1164. package/src/locales/index.ts +0 -21
  1165. package/src/locales/pl.json +44 -1
  1166. package/src/tiptap.css +103 -6
  1167. package/test-fixtures/config-split/vitnode.config.ts +1 -9
  1168. package/test-fixtures/config-split/vitnode.server.config.ts +1 -10
  1169. package/dist/src/api/modules/users/routes/test.route.d.ts +0 -27
  1170. package/dist/src/api/modules/users/routes/test.route.d.ts.map +0 -1
  1171. package/dist/src/api/modules/users/routes/test.route.js +0 -1
  1172. package/dist/src/tanstack/admin/content/form/server.d.ts +0 -10
  1173. package/dist/src/tanstack/admin/content/form/server.d.ts.map +0 -1
  1174. package/dist/src/tanstack/admin/content/form/server.js +0 -1
  1175. package/dist/src/tanstack/admin/content/server.d.ts +0 -26
  1176. package/dist/src/tanstack/admin/content/server.d.ts.map +0 -1
  1177. package/dist/src/tanstack/admin/content/server.js +0 -1
  1178. package/dist/src/tanstack/admin/cron/server.d.ts +0 -24
  1179. package/dist/src/tanstack/admin/cron/server.d.ts.map +0 -1
  1180. package/dist/src/tanstack/admin/cron/server.js +0 -1
  1181. package/dist/src/tanstack/admin/dashboard/server.d.ts +0 -9
  1182. package/dist/src/tanstack/admin/dashboard/server.d.ts.map +0 -1
  1183. package/dist/src/tanstack/admin/dashboard/server.js +0 -1
  1184. package/dist/src/tanstack/admin/debug/server.d.ts +0 -49
  1185. package/dist/src/tanstack/admin/debug/server.d.ts.map +0 -1
  1186. package/dist/src/tanstack/admin/debug/server.js +0 -1
  1187. package/dist/src/tanstack/admin/files/server.d.ts +0 -40
  1188. package/dist/src/tanstack/admin/files/server.d.ts.map +0 -1
  1189. package/dist/src/tanstack/admin/files/server.js +0 -1
  1190. package/dist/src/tanstack/admin/integrations/server.d.ts +0 -47
  1191. package/dist/src/tanstack/admin/integrations/server.d.ts.map +0 -1
  1192. package/dist/src/tanstack/admin/integrations/server.js +0 -1
  1193. package/dist/src/tanstack/admin/not-found.d.ts +0 -4
  1194. package/dist/src/tanstack/admin/not-found.d.ts.map +0 -1
  1195. package/dist/src/tanstack/admin/not-found.js +0 -1
  1196. package/dist/src/tanstack/admin/queue/server.d.ts +0 -28
  1197. package/dist/src/tanstack/admin/queue/server.d.ts.map +0 -1
  1198. package/dist/src/tanstack/admin/queue/server.js +0 -1
  1199. package/dist/src/tanstack/admin/roles/server.d.ts +0 -32
  1200. package/dist/src/tanstack/admin/roles/server.d.ts.map +0 -1
  1201. package/dist/src/tanstack/admin/roles/server.js +0 -1
  1202. package/dist/src/tanstack/admin/search-index/server.d.ts +0 -29
  1203. package/dist/src/tanstack/admin/search-index/server.d.ts.map +0 -1
  1204. package/dist/src/tanstack/admin/search-index/server.js +0 -1
  1205. package/dist/src/tanstack/admin/staff/server.d.ts +0 -90
  1206. package/dist/src/tanstack/admin/staff/server.d.ts.map +0 -1
  1207. package/dist/src/tanstack/admin/staff/server.js +0 -1
  1208. package/dist/src/tanstack/admin/users/server.d.ts +0 -72
  1209. package/dist/src/tanstack/admin/users/server.d.ts.map +0 -1
  1210. package/dist/src/tanstack/admin/users/server.js +0 -1
  1211. package/dist/src/tanstack/auth/middleware-config-server.d.ts +0 -4
  1212. package/dist/src/tanstack/auth/middleware-config-server.d.ts.map +0 -1
  1213. package/dist/src/tanstack/auth/middleware-config-server.js +0 -1
  1214. package/dist/src/tanstack/devices/server.d.ts +0 -14
  1215. package/dist/src/tanstack/devices/server.d.ts.map +0 -1
  1216. package/dist/src/tanstack/devices/server.js +0 -1
  1217. package/dist/src/tanstack/files/server.d.ts +0 -27
  1218. package/dist/src/tanstack/files/server.d.ts.map +0 -1
  1219. package/dist/src/tanstack/files/server.js +0 -1
  1220. package/dist/src/tanstack/routes/root/auth.d.ts +0 -3
  1221. package/dist/src/tanstack/routes/root/auth.d.ts.map +0 -1
  1222. package/dist/src/tanstack/routes/root/sso.d.ts +0 -3
  1223. package/dist/src/tanstack/routes/root/sso.d.ts.map +0 -1
  1224. package/dist/src/tanstack/search/server.d.ts +0 -35
  1225. package/dist/src/tanstack/search/server.d.ts.map +0 -1
  1226. package/dist/src/tanstack/search/server.js +0 -1
  1227. package/test-fixtures/next-specimen/entry.ts +0 -21
  1228. package/test-fixtures/next-specimen/hop.ts +0 -14
  1229. /package/dist/src/tanstack/routes/{root → main}/auth.js +0 -0
  1230. /package/dist/src/tanstack/routes/{root → main}/sso.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"with-pagination.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/with-pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,kBAAkB,EAClB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AA0CtC,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAGvD,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C,OAAO,uBAAuB,EAC9B,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CACvB,CAAC;AA4MF,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAE3C,GAAG,EACH,kBAAkB,CAAC,QAAQ,GAAG,UAAU,0BAA0B,EAAE,CAAC,CACtE,CAAC;AAEF,wBAAsB,cAAc,CAClC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,CAAC,SAAS,WAAW,EACrB,EACA,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,OAAO,EAAE,iBAAiB,EAC1B,CAAC,GACF,EAAE;IACD,CAAC,EAAE,OAAO,CAAC;IACX,OAAO,EAAE;QACP,MAAM,EAAE,QAAQ,CAAC;QACjB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,aAAa,EAAE,sBAAsB,CAAC;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE;QAQZ,eAAe,EAAE,yBAAyB,CAAC;QAC3C,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC;KACxB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IAC5C,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,GAAG,OAAO,CAAC;IACV,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,uBAAuB,CAAC,EAAE,CAAC;IACxD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QAEd,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC,CA4GD;AA2FD,eAAO,MAAM,qBAAqB;;;;;;;iBAWhC,CAAC;AAeH,eAAO,MAAM,kBAAkB;;;;iBAe5B,CAAC"}
1
+ {"version":3,"file":"with-pagination.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/with-pagination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,0BAA0B,EAC1B,WAAW,EACX,GAAG,EACJ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,QAAQ,EACR,kBAAkB,EAElB,kBAAkB,EAClB,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAkCtC,eAAO,MAAM,uBAAuB,kBAAkB,CAAC;AAGvD,MAAM,MAAM,yBAAyB,GAAG,MAAM,CAC5C,OAAO,uBAAuB,EAC9B,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,CACvB,CAAC;AAkJF,KAAK,4BAA4B,GAC7B,QAAQ,GACR,QAAQ,GACR,aAAa,GACb,UAAU,0BAA0B,EAAE,GACtC,UAAU,0BAA0B,EAAE,CAAC;AAE3C,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAE3C,GAAG,EACH,kBAAkB,CAAC,4BAA4B,CAAC,CACjD,CAAC;AAEF,wBAAsB,cAAc,CAClC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,CAAC,SAAS,WAAW,EACrB,EACA,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,EAAE,eAAe,EACtB,aAAa,EACb,OAAO,EAAE,iBAAiB,EAC1B,CAAC,GACF,EAAE;IACD,CAAC,EAAE,OAAO,CAAC;IACX,OAAO,EAAE;QACP,MAAM,EAAE,QAAQ,CAAC;QACjB,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,MAAM,EAAE;QACN,KAAK,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;IACF,aAAa,EAAE,sBAAsB,CAAC;IACtC,KAAK,EAAE,CAAC,IAAI,EAAE;QAQZ,eAAe,EAAE,yBAAyB,CAAC;QAC3C,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,EAAE,GAAG,CAAC;QACb,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC;KACxB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;IAC5C,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,GAAG,CAAC;CACb,GAAG,OAAO,CAAC;IACV,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,uBAAuB,CAAC,EAAE,CAAC;IACxD,QAAQ,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QAEd,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;QACrB,eAAe,EAAE,OAAO,CAAC;QACzB,WAAW,EAAE,IAAI,GAAG,MAAM,CAAC;QAC3B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC,CAmHD;AA6FD,eAAO,MAAM,qBAAqB;;;;;;;iBAWhC,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;iBAe5B,CAAC"}
@@ -1 +1 @@
1
- import{z}from"@hono/zod-openapi";import{and,asc,count,desc,eq,gt,ilike,isNotNull,isNull,lt,or,sql}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{cursorValueForColumn,cursorValueIsCanonicalText,cursorValueOf,decodePaginationCursor,encodePaginationCursor,isCursorSortableColumn}from"./pagination-cursor.js";const MAX_PAGE_SIZE=100;export const PAGINATION_CURSOR_FIELD="__cursorValue";function parsePaginationParams(params){const size=(raw,name)=>{if(raw===undefined||raw==="")return undefined;const parsed=Number(raw);if(!Number.isSafeInteger(parsed)||parsed<1){throw new HTTPException(400,{message:`"${name}" must be a whole number greater than zero.`})}return Math.min(parsed,MAX_PAGE_SIZE)};const first=size(params.query.first,"first");const last=size(params.query.last,"last");if(first!==undefined&&last!==undefined){throw new HTTPException(400,{message:'Use either "first" or "last", not both.'})}const cursor=params.query.cursor?.trim();return{cursor:cursor===""?undefined:cursor,first,last}}function effectiveDirection(isForward,order){if(isForward)return order;return order==="asc"?"desc":"asc"}function required(value){if(!value)throw new Error("Expected a pagination condition.");return value}function buildCursorCondition({column,cursor,direction,isPrimaryOrder,primary}){const after=direction==="asc"?gt:lt;if(isPrimaryOrder)return after(primary,cursor.id);const boundary=boundaryValue(column,cursor);if(direction==="asc"){if(cursor.value===null){return required(and(isNull(column),gt(primary,cursor.id)))}return required(or(gt(column,boundary),and(eq(column,boundary),gt(primary,cursor.id)),isNull(column)))}if(cursor.value===null){return required(or(and(isNull(column),lt(primary,cursor.id)),isNotNull(column)))}return required(or(lt(column,boundary),and(eq(column,boundary),lt(primary,cursor.id))))}function boundaryValue(column,cursor){const value=cursorValueForColumn(column,cursor.value);if(cursorValueIsCanonicalText(column)){return sql`${String(value)}::${sql.raw(column.getSQLType())}`}return sql`${sql.param(value,column)}`}function buildSearchWhere(search,term){const trimmed=term?.trim();if(!search?.length||!trimmed)return undefined;return or(...search.map(column=>ilike(column,`%${trimmed}%`)))}async function fetchTotalCount(c,table,where){const[{count:totalCount}]=await c.get("db").select({count:count()}).from(table).where(where);return totalCount}export async function withPagination({query,table,params,search,where:whereFromParams,primaryCursor,orderBy:orderByFromParams,c}){const{cursor:rawCursor,first,last}=parsePaginationParams(params);const isForward=last===undefined;const direction=effectiveDirection(isForward,orderByFromParams.order);const orderFn=direction==="asc"?asc:desc;const primary=table[primaryCursor.name];const orderName=orderByFromParams.column.name;const orderColumn=table[orderName];const isPrimaryOrder=orderName===primaryCursor.name;if(!isCursorSortableColumn(orderColumn)){throw new HTTPException(400,{message:`Results cannot be ordered by "${orderName}".`})}const orderBy=isPrimaryOrder?orderFn(primary):sql`${orderFn(orderColumn)}, ${orderFn(primary)}`;const cursor=rawCursor===undefined?undefined:decodePaginationCursor(rawCursor,{column:orderName,primaryKey:primaryCursor.name});const searchWhere=buildSearchWhere(search,params.query.search);const baseWhere=whereFromParams&&searchWhere?and(whereFromParams,searchWhere):whereFromParams??searchWhere;const cursorWhere=cursor?buildCursorCondition({column:orderColumn,cursor,direction,isPrimaryOrder,primary}):undefined;const where=baseWhere&&cursorWhere?and(baseWhere,cursorWhere):baseWhere??cursorWhere;const totalCount=await fetchTotalCount(c,table,baseWhere);const cursorSelection={[PAGINATION_CURSOR_FIELD]:cursorValueIsCanonicalText(orderColumn)?sql`${orderColumn}::text`:orderColumn};const limit=(first??last??50)+1;const edges=await query({cursorSelection,limit,where,orderBy});const requested=first??last??edges.length;const hasMore=edges.length>requested;const slicedEdges=edges.slice(0,requested);const finalEdges=isForward?slicedEdges:slicedEdges.reverse();const boundaries=cursorsFrom({edges:finalEdges,orderColumn,orderName,primaryName:primaryCursor.name});return{pageInfo:{totalCount,count:finalEdges.length,hasNextPage:finalEdges.length===0?false:isForward?hasMore:Boolean(cursor),hasPreviousPage:finalEdges.length===0?false:isForward?Boolean(cursor):hasMore,...boundaries},edges:finalEdges.map(withoutCursorField)}}function withoutCursorField(row){if(!(PAGINATION_CURSOR_FIELD in row))return row;const rest={...row};delete rest[PAGINATION_CURSOR_FIELD];return rest}function cursorsFrom({edges,orderColumn,orderName,primaryName}){const first=edges[0];const last=edges.at(-1);if(!first||!last)return{endCursor:null,startCursor:null};const valueOf=row=>{if(PAGINATION_CURSOR_FIELD in row)return row[PAGINATION_CURSOR_FIELD];if(!cursorValueIsCanonicalText(orderColumn)&&orderName in row){return row[orderName]}throw new Error(`The page query for "${orderName}" must spread \`cursorSelection\` into its projection, so the cursor value is read from the same statement as the row.`)};const mint=row=>encodePaginationCursor({column:orderName,id:Number(row[primaryName]),value:cursorValueOf(orderColumn,valueOf(row))});return{endCursor:mint(last),startCursor:mint(first)}}const zodPageSize=z.string().regex(/^\d+$/,"Must be a whole number.").refine(value=>Number(value)>=1,"Must be greater than zero.").refine(value=>Number.isSafeInteger(Number(value)),"Too large.");export const zodPaginationPageInfo=z.object({totalCount:z.number(),count:z.number(),hasNextPage:z.boolean(),hasPreviousPage:z.boolean(),startCursor:z.string().nullable(),endCursor:z.string().nullable()});export const zodPaginationQuery=z.object({cursor:z.string().min(1).max(512).regex(/^[A-Za-z0-9_-]+$/,"Invalid cursor.").optional(),first:zodPageSize.optional(),last:zodPageSize.optional()}).refine(query=>query.first===undefined||query.last===undefined,'Use either "first" or "last", not both.');
1
+ import{z}from"@hono/zod-openapi";import{and,asc,count,desc,eq,gt,ilike,isNotNull,isNull,lt,or,sql}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{cursorIdentifierForColumn,cursorIdentifierOf,cursorValueForColumn,cursorValueIsCanonicalText,cursorValueOf,decodePaginationCursor,encodePaginationCursor,isCursorSortableColumn,isPaginationIdentifierColumn}from"./pagination-cursor.js";const MAX_PAGE_SIZE=100;export const PAGINATION_CURSOR_FIELD="__cursorValue";function parsePaginationParams(params){const size=(raw,name)=>{if(raw===undefined||raw==="")return undefined;const parsed=Number(raw);if(!Number.isSafeInteger(parsed)||parsed<1){throw new HTTPException(400,{message:`"${name}" must be a whole number greater than zero.`})}return Math.min(parsed,MAX_PAGE_SIZE)};const first=size(params.query.first,"first");const last=size(params.query.last,"last");if(first!==undefined&&last!==undefined){throw new HTTPException(400,{message:'Use either "first" or "last", not both.'})}const cursor=params.query.cursor?.trim();return{cursor:cursor===""?undefined:cursor,first,last}}function effectiveDirection(isForward,order){if(isForward)return order;return order==="asc"?"desc":"asc"}function required(value){if(!value)throw new Error("Expected a pagination condition.");return value}function buildCursorCondition({column,cursor,direction,isPrimaryOrder,primary}){const after=direction==="asc"?gt:lt;const identifier=sql`${sql.param(cursorIdentifierForColumn(primary,cursor.id),primary)}`;if(isPrimaryOrder)return after(primary,identifier);const boundary=boundaryValue(column,cursor);if(direction==="asc"){if(cursor.value===null){return required(and(isNull(column),gt(primary,identifier)))}return required(or(gt(column,boundary),and(eq(column,boundary),gt(primary,identifier)),isNull(column)))}if(cursor.value===null){return required(or(and(isNull(column),lt(primary,identifier)),isNotNull(column)))}return required(or(lt(column,boundary),and(eq(column,boundary),lt(primary,identifier))))}function boundaryValue(column,cursor){const value=cursorValueForColumn(column,cursor.value);if(cursorValueIsCanonicalText(column)){return sql`${String(value)}::${sql.raw(column.getSQLType())}`}return sql`${sql.param(value,column)}`}function buildSearchWhere(search,term){const trimmed=term?.trim();if(!search?.length||!trimmed)return undefined;return or(...search.map(column=>ilike(column,`%${trimmed}%`)))}async function fetchTotalCount(c,table,where){const[{count:totalCount}]=await c.get("db").select({count:count()}).from(table).where(where);return totalCount}export async function withPagination({query,table,params,search,where:whereFromParams,primaryCursor,orderBy:orderByFromParams,c}){const{cursor:rawCursor,first,last}=parsePaginationParams(params);const isForward=last===undefined;const direction=effectiveDirection(isForward,orderByFromParams.order);const orderFn=direction==="asc"?asc:desc;const primary=table[primaryCursor.name];const orderName=orderByFromParams.column.name;const orderColumn=table[orderName];const isPrimaryOrder=orderName===primaryCursor.name;if(!isPaginationIdentifierColumn(primary)){throw new HTTPException(400,{message:`The "${primaryCursor.name}" primary cursor must be an integer, bigint or UUID column.`})}if(!isCursorSortableColumn(orderColumn)){throw new HTTPException(400,{message:`Results cannot be ordered by "${orderName}".`})}const orderBy=isPrimaryOrder?orderFn(primary):sql`${orderFn(orderColumn)}, ${orderFn(primary)}`;const cursor=rawCursor===undefined?undefined:decodePaginationCursor(rawCursor,{column:orderName,primary});const searchWhere=buildSearchWhere(search,params.query.search);const baseWhere=whereFromParams&&searchWhere?and(whereFromParams,searchWhere):whereFromParams??searchWhere;const cursorWhere=cursor?buildCursorCondition({column:orderColumn,cursor,direction,isPrimaryOrder,primary}):undefined;const where=baseWhere&&cursorWhere?and(baseWhere,cursorWhere):baseWhere??cursorWhere;const totalCount=await fetchTotalCount(c,table,baseWhere);const cursorSelection={[PAGINATION_CURSOR_FIELD]:cursorValueIsCanonicalText(orderColumn)?sql`${orderColumn}::text`:orderColumn};const limit=(first??last??50)+1;const edges=await query({cursorSelection,limit,where,orderBy});const requested=first??last??edges.length;const hasMore=edges.length>requested;const slicedEdges=edges.slice(0,requested);const finalEdges=isForward?slicedEdges:slicedEdges.reverse();const boundaries=cursorsFrom({edges:finalEdges,orderColumn,orderName,primaryColumn:primary,primaryName:primaryCursor.name});return{pageInfo:{totalCount,count:finalEdges.length,hasNextPage:finalEdges.length===0?false:isForward?hasMore:Boolean(cursor),hasPreviousPage:finalEdges.length===0?false:isForward?Boolean(cursor):hasMore,...boundaries},edges:finalEdges.map(withoutCursorField)}}function withoutCursorField(row){if(!(PAGINATION_CURSOR_FIELD in row))return row;const rest={...row};delete rest[PAGINATION_CURSOR_FIELD];return rest}function cursorsFrom({edges,orderColumn,orderName,primaryColumn,primaryName}){const first=edges[0];const last=edges.at(-1);if(!first||!last)return{endCursor:null,startCursor:null};const valueOf=row=>{if(PAGINATION_CURSOR_FIELD in row)return row[PAGINATION_CURSOR_FIELD];if(!cursorValueIsCanonicalText(orderColumn)&&orderName in row){return row[orderName]}throw new Error(`The page query for "${orderName}" must spread \`cursorSelection\` into its projection, so the cursor value is read from the same statement as the row.`)};const mint=row=>encodePaginationCursor({column:orderName,id:cursorIdentifierOf(primaryColumn,row[primaryName]),value:cursorValueOf(orderColumn,valueOf(row))});return{endCursor:mint(last),startCursor:mint(first)}}const zodPageSize=z.string().regex(/^\d+$/,"Must be a whole number.").refine(value=>Number(value)>=1,"Must be greater than zero.").refine(value=>Number.isSafeInteger(Number(value)),"Too large.");export const zodPaginationPageInfo=z.object({totalCount:z.number(),count:z.number(),hasNextPage:z.boolean(),hasPreviousPage:z.boolean(),startCursor:z.string().nullable(),endCursor:z.string().nullable()});export const zodPaginationQuery=z.object({cursor:z.string().min(1).max(512).regex(/^[A-Za-z0-9_-]+$/,"Invalid cursor.").optional(),first:zodPageSize.optional(),last:zodPageSize.optional()}).refine(query=>query.first===undefined||query.last===undefined,'Use either "first" or "last", not both.');
@@ -1 +1 @@
1
- {"version":3,"file":"captcha.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/captcha.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAqE1C,eAAO,MAAM,iBAAiB,SACd,GAAG,OAAO,EAAE,MAAM,IAAI,kBA6BrC,CAAC"}
1
+ {"version":3,"file":"captcha.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/captcha.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAwF1C,eAAO,MAAM,iBAAiB,SACd,GAAG,OAAO,EAAE,MAAM,IAAI,kBA6BrC,CAAC"}
@@ -1 +1 @@
1
- import{HTTPException}from"hono/http-exception";const getResFromReCaptcha=async({token,userIp,captchaConfig})=>{if(captchaConfig.type==="cloudflare_turnstile"){const res=await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify",{method:"POST",body:JSON.stringify({secret:captchaConfig.secretKey,response:token,remoteip:userIp}),headers:{"Content-Type":"application/json"}});const data=await res.json();return{success:data.success,score:data.success?1:0,"error-codes":data["error-codes"]}}if(captchaConfig.type==="recaptcha_v3"){const res=await fetch(`https://www.google.com/recaptcha/api/siteverify?secret=${captchaConfig.secretKey}&response=${token}&remoteip=${userIp}`,{method:"POST"});const data=await res.json();return{success:data.success,score:data.score??0,"error-codes":data["error-codes"]}}return{success:false,score:0}};export const captchaMiddleware=()=>{return async(c,next)=>{const token=c.req.header("x-vitnode-captcha-token");const captchaConfig=c.get("core").captcha;if(!captchaConfig){await next();return}if(!token){throw new HTTPException(400,{message:"Captcha token is required"})}const res=await getResFromReCaptcha({token,userIp:c.get("ipAddress"),captchaConfig});if(!res.success||res.score<.5){throw new HTTPException(400,{message:"Captcha validation failed"})}await next()}};
1
+ import{HTTPException}from"hono/http-exception";const getResFromReCaptcha=async({token,userIp,captchaConfig})=>{const{secretKey}=captchaConfig;if(!secretKey){return{success:false,score:0,"error-codes":["missing-secret-key"]}}if(captchaConfig.type==="cloudflare_turnstile"){const res=await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify",{method:"POST",body:JSON.stringify({secret:secretKey,response:token,remoteip:userIp}),headers:{"Content-Type":"application/json"}});const data=await res.json();return{success:data.success,score:data.success?1:0,"error-codes":data["error-codes"]}}if(captchaConfig.type==="recaptcha_v3"){const res=await fetch("https://www.google.com/recaptcha/api/siteverify",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({secret:secretKey,response:token,remoteip:userIp})});const data=await res.json();return{success:data.success,score:data.score??0,"error-codes":data["error-codes"]}}return{success:false,score:0}};export const captchaMiddleware=()=>{return async(c,next)=>{const token=c.req.header("x-vitnode-captcha-token");const captchaConfig=c.get("core").captcha;if(!captchaConfig){await next();return}if(!token){throw new HTTPException(400,{message:"Captcha token is required"})}const res=await getResFromReCaptcha({token,userIp:c.get("ipAddress"),captchaConfig});if(!res.success||res.score<.5){throw new HTTPException(400,{message:"Captcha validation failed"})}await next()}};
@@ -1 +1 @@
1
- {"version":3,"file":"cron-auth.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/cron-auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI1C,eAAO,MAAM,kBAAkB,SACf,GAAG,OAAO,EAAE,MAAM,IAAI,kBAerC,CAAC"}
1
+ {"version":3,"file":"cron-auth.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/cron-auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA0C1C,eAAO,MAAM,kBAAkB,SACf,GAAG,OAAO,EAAE,MAAM,IAAI,kBA8BrC,CAAC"}
@@ -1 +1 @@
1
- import{HTTPException}from"hono/http-exception";export const cronAuthMiddleware=()=>{return async(c,next)=>{const cronSecret=c.get("core").cronSecret;if(!cronSecret){throw new HTTPException(403,{message:"Cron access not configured"})}const authHeader=c.req.header("authorization");const providedSecret=authHeader?.replace("Bearer ","");if(providedSecret!==cronSecret){throw new HTTPException(403,{message:"Invalid cron authorization"})}await next()}};
1
+ import{HTTPException}from"hono/http-exception";import{timingSafeEqual}from"node:crypto";import{CONFIG,INSECURE_CRON_SECRETS}from"../../lib/config.js";const secretsMatch=(provided,expected)=>{const a=Buffer.from(provided,"utf8");const b=Buffer.from(expected,"utf8");if(a.length!==b.length){timingSafeEqual(b,b);return false}return timingSafeEqual(a,b)};const bearerToken=header=>{if(!header)return undefined;const match=/^Bearer (.+)$/.exec(header);return match?.[1]};export const cronAuthMiddleware=()=>{return async(c,next)=>{const cronSecret=c.get("core").cronSecret;if(!cronSecret){throw new HTTPException(403,{message:"Cron access not configured"})}if(INSECURE_CRON_SECRETS.includes(cronSecret)&&!CONFIG.node_development){throw new HTTPException(403,{message:"Cron access is disabled because CRON_SECRET is still the built-in default. Set CRON_SECRET to a random value."})}const providedSecret=bearerToken(c.req.header("authorization"));if(!providedSecret||!secretsMatch(providedSecret,cronSecret)){throw new HTTPException(403,{message:"Invalid cron authorization"})}await next()}};
@@ -1 +1 @@
1
- {"version":3,"file":"global.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/global.middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"global.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/global.middleware.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- import{HTTPException}from"hono/http-exception";import{LocalEventsAdapter}from"../adapters/events/local.js";import{PostgresSearchAdapter}from"../adapters/search/postgres.js";import{CacheModel}from"../lib/cache.js";import{AIModel}from"../models/ai.js";import{EmailModel}from"../models/email.js";import{EventsModel}from"../models/events.js";import{I18nModel}from"../models/i18n.js";import{QueueModel}from"../models/queue.js";import{assertSearchProviderCapabilities,SearchModel,validateSearchIndexers}from"../models/search.js";import{SessionModel}from"../models/session.js";import{SessionAdminModel}from"../models/session-admin.js";import{StorageModel}from"../models/storage.js";import{validateContentTypes}from"../../content/registry.js";import{ensureContentLocalizationLanguages}from"../../content/server/language-resolver.js";import{warnAboutContentPreviewConfig}from"../../content/server/preview-config.js";import{ensureContentPreviewSecret}from"../../content/server/preview-secret.js";import{CONFIG}from"../../lib/config.js";import{collectLocaleCodes}from"../../lib/i18n/load-messages.js";import{buildApiMessagesSources}from"../../lib/i18n/sources.js";import{realtime}from"../../ws/registry.js";import{collectCronJobs}from"../lib/cron.js";import{loggerMiddleware}from"../lib/logger-middleware.js";import{normalizePermissionStaffModules}from"../lib/permission-staff.js";export const globalMiddleware=({ai,authorization,content,metadata,email,dbProvider,captcha,cron,events,plugins,i18n,search,storage,cacheClient})=>{const pluginsMetadata=plugins.map(plugin=>({id:plugin.pluginId}));const messagesSources=buildApiMessagesSources({appMessages:i18n?.messages,plugins});const i18nMetadata={defaultLocale:i18n?.defaultLocale??"en",locales:i18n?.locales??collectLocaleCodes(messagesSources).map(code=>({code,name:code})),sources:messagesSources};const cronMetadata=collectCronJobs(plugins);const eventsMetadata=plugins.flatMap(plugin=>(plugin.events??[]).map(listener=>({...listener,pluginId:plugin.pluginId})));const queueMetadata=plugins.flatMap(plugin=>(plugin.queueTasks??[]).map(task=>({pluginId:plugin.pluginId,module:task.module,name:task.name,handler:task.handler,description:task.description,maxAttempts:task.maxAttempts})));const webSocketsMetadata=plugins.flatMap(plugin=>(plugin.webSockets??[]).map(webSocket=>({...webSocket,pluginId:plugin.pluginId})));const searchIndexersMetadata=validateSearchIndexers(plugins.flatMap(plugin=>(plugin.searchIndexers??[]).map(indexer=>({...indexer,pluginId:plugin.pluginId}))));const contentTypesMetadata=validateContentTypes(plugins.flatMap(plugin=>(plugin.contentTypes??[]).map(definition=>({definition,pluginId:plugin.pluginId}))));warnAboutContentPreviewConfig({contentTypes:contentTypesMetadata});const hasPreviewableContentTypes=contentTypesMetadata.some(entry=>entry.definition.editorial.preview.enabled);const contentModelsMetadata=plugins.flatMap(plugin=>(plugin.contentModels??[]).map(model=>({model,pluginId:plugin.pluginId})));const hasLocalizedContentTypes=contentTypesMetadata.some(entry=>entry.definition.localization.enabled);const searchAdapter=search?.adapter??PostgresSearchAdapter();assertSearchProviderCapabilities(searchAdapter,{localizedSearchContentTypes:contentTypesMetadata.filter(entry=>entry.definition.localization.enabled&&entry.definition.search.enabled).map(entry=>entry.definition.id)});const permissionStaffMetadata=plugins.map(plugin=>({pluginId:plugin.pluginId,admin:normalizePermissionStaffModules(plugin.permissionStaff?.admin),moderator:normalizePermissionStaffModules(plugin.permissionStaff?.moderator)}));const ipHeaderKeys=["x-forwarded-for","x-real-ip","cf-connecting-ip","x-client-ip","x-forwarded","x-cluster-client-ip","forwarded-for","forwarded","via","remote-addr","client-ip","ip","x-ip","true-client-ip","fastly-client-ip","x-fastly-client-ip"];return async(c,next)=>{let ipAddress;for(const key of ipHeaderKeys){ipAddress=c.req.header(key);if(ipAddress)break;ipAddress=c.req.raw.headers.get(key)??undefined;if(ipAddress)break}c.set("ipAddress",ipAddress??"127.0.0.1");c.set("db",dbProvider);c.set("ai",new AIModel(c));c.set("cache",new CacheModel(cacheClient,c));c.set("email",new EmailModel(c));c.set("events",new EventsModel(c));c.set("i18n",new I18nModel(c));c.set("queue",new QueueModel(c));c.set("search",new SearchModel(c));c.set("storage",new StorageModel(c));c.set("realtime",realtime);const contentPreviewSecret=hasPreviewableContentTypes?await ensureContentPreviewSecret(dbProvider):undefined;c.set("core",{ai,i18n:i18nMetadata,metadata,email,events:{adapter:events?.adapter??LocalEventsAdapter(),listeners:eventsMetadata},search:{adapter:searchAdapter},searchIndexers:searchIndexersMetadata,storage,authorization:{cookieName:authorization?.cookieName??"vitnode_auth",cookie_expires:authorization?.cookieExpires??1e3*60*60*24*90,ssoAdapters:authorization?.ssoAdapters??[],deviceCookieName:authorization?.deviceCookieName??"vitnode_device",deviceCookieExpires:authorization?.deviceCookieExpires??1e3*60*60*24*365,adminCookieName:authorization?.adminCookieName??"vitnode_auth_admin",adminCookieExpires:authorization?.adminCookieExpires??1e3*60*60*24*1,cookieSecure:authorization?.cookieSecure??true,cookieDomain:authorization?.cookieDomain},captcha,contentPreviewSecret,cronSecret:CONFIG.cronJobSecret,hasCronAdapter:!!cron,plugins:pluginsMetadata,cron:cronMetadata,queue:queueMetadata,webSockets:webSocketsMetadata,permissionStaff:permissionStaffMetadata,contentModels:contentModelsMetadata,contentRevalidateOrigins:content?.revalidateOrigins,contentTypes:contentTypesMetadata});if(hasLocalizedContentTypes){await ensureContentLocalizationLanguages(c,contentTypesMetadata)}const user=await new SessionModel(c).getUser();c.set("user",user);c.set("admin",null);c.set("log",loggerMiddleware(c));await next()}};export const globalAdminMiddleware=()=>{return async(c,next)=>{const user=await new SessionAdminModel(c).getUser();if(!user)throw new HTTPException(403);c.set("admin",{user});await next()}};
1
+ import{HTTPException}from"hono/http-exception";import{LocalEventsAdapter}from"../adapters/events/local.js";import{PostgresSearchAdapter}from"../adapters/search/postgres.js";import{CacheModel}from"../lib/cache.js";import{AIModel}from"../models/ai.js";import{EmailModel}from"../models/email.js";import{EventsModel}from"../models/events.js";import{I18nModel}from"../models/i18n.js";import{QueueModel}from"../models/queue.js";import{assertSearchProviderCapabilities,SearchModel,validateSearchIndexers}from"../models/search.js";import{SessionModel}from"../models/session.js";import{SessionAdminModel}from"../models/session-admin.js";import{StorageModel}from"../models/storage.js";import{validateContentTypes}from"../../content/registry.js";import{ensureContentLocalizationLanguages}from"../../content/server/language-resolver.js";import{warnAboutContentPreviewConfig}from"../../content/server/preview-config.js";import{ensureContentPreviewSecret}from"../../content/server/preview-secret.js";import{CONFIG}from"../../lib/config.js";import{collectLocaleCodes}from"../../lib/i18n/load-messages.js";import{buildApiMessagesSources}from"../../lib/i18n/sources.js";import{realtime}from"../../ws/registry.js";import{resolveClientIp}from"../lib/client-ip.js";import{collectCronJobs}from"../lib/cron.js";import{loggerMiddleware}from"../lib/logger-middleware.js";import{normalizePermissionStaffModules}from"../lib/permission-staff.js";export const globalMiddleware=({ai,authorization,content,metadata,email,dbProvider,captcha,cron,events,plugins,i18n,search,storage,cacheClient})=>{const pluginsMetadata=plugins.map(plugin=>({id:plugin.pluginId}));const messagesSources=buildApiMessagesSources({appMessages:i18n?.messages,plugins});const i18nMetadata={defaultLocale:i18n?.defaultLocale??"en",locales:i18n?.locales??collectLocaleCodes(messagesSources).map(code=>({code,name:code})),sources:messagesSources};const cronMetadata=collectCronJobs(plugins);const eventsMetadata=plugins.flatMap(plugin=>(plugin.events??[]).map(listener=>({...listener,pluginId:plugin.pluginId})));const queueMetadata=plugins.flatMap(plugin=>(plugin.queueTasks??[]).map(task=>({pluginId:plugin.pluginId,module:task.module,name:task.name,handler:task.handler,description:task.description,maxAttempts:task.maxAttempts})));const webSocketsMetadata=plugins.flatMap(plugin=>(plugin.webSockets??[]).map(webSocket=>({...webSocket,pluginId:plugin.pluginId})));const searchIndexersMetadata=validateSearchIndexers(plugins.flatMap(plugin=>(plugin.searchIndexers??[]).map(indexer=>({...indexer,pluginId:plugin.pluginId}))));const contentTypesMetadata=validateContentTypes(plugins.flatMap(plugin=>(plugin.contentTypes??[]).map(definition=>({definition,pluginId:plugin.pluginId}))));warnAboutContentPreviewConfig({contentTypes:contentTypesMetadata});const hasPreviewableContentTypes=contentTypesMetadata.some(entry=>entry.definition.editorial.preview.enabled);const contentModelsMetadata=plugins.flatMap(plugin=>(plugin.contentModels??[]).map(model=>({model,pluginId:plugin.pluginId})));const hasLocalizedContentTypes=contentTypesMetadata.some(entry=>entry.definition.localization.enabled);const searchAdapter=search?.adapter??PostgresSearchAdapter();assertSearchProviderCapabilities(searchAdapter,{localizedSearchContentTypes:contentTypesMetadata.filter(entry=>entry.definition.localization.enabled&&entry.definition.search.enabled).map(entry=>entry.definition.id)});const permissionStaffMetadata=plugins.map(plugin=>({pluginId:plugin.pluginId,admin:normalizePermissionStaffModules(plugin.permissionStaff?.admin),moderator:normalizePermissionStaffModules(plugin.permissionStaff?.moderator)}));return async(c,next)=>{if(!c.get("ipAddress")){c.set("ipAddress",resolveClientIp(c))}c.set("db",dbProvider);c.set("ai",new AIModel(c));c.set("cache",new CacheModel(cacheClient,c));c.set("email",new EmailModel(c));c.set("events",new EventsModel(c));c.set("i18n",new I18nModel(c));c.set("queue",new QueueModel(c));c.set("search",new SearchModel(c));c.set("storage",new StorageModel(c));c.set("realtime",realtime);const contentPreviewSecret=hasPreviewableContentTypes?await ensureContentPreviewSecret(dbProvider):undefined;c.set("core",{ai,i18n:i18nMetadata,metadata,email,events:{adapter:events?.adapter??LocalEventsAdapter(),listeners:eventsMetadata},search:{adapter:searchAdapter},searchIndexers:searchIndexersMetadata,storage,authorization:{cookieName:authorization?.cookieName??"vitnode_auth",cookie_expires:authorization?.cookieExpires??1e3*60*60*24*90,ssoAdapters:authorization?.ssoAdapters??[],deviceCookieName:authorization?.deviceCookieName??"vitnode_device",deviceCookieExpires:authorization?.deviceCookieExpires??1e3*60*60*24*365,adminCookieName:authorization?.adminCookieName??"vitnode_auth_admin",adminCookieExpires:authorization?.adminCookieExpires??1e3*60*60*24*1,cookieSecure:authorization?.cookieSecure??true,cookieDomain:authorization?.cookieDomain},captcha,contentPreviewSecret,cronSecret:CONFIG.cronJobSecret,hasCronAdapter:!!cron,plugins:pluginsMetadata,cron:cronMetadata,queue:queueMetadata,webSockets:webSocketsMetadata,permissionStaff:permissionStaffMetadata,contentModels:contentModelsMetadata,contentRevalidateOrigins:content?.revalidateOrigins,contentTypes:contentTypesMetadata});if(hasLocalizedContentTypes){await ensureContentLocalizationLanguages(c,contentTypesMetadata)}const user=await new SessionModel(c).getUser();c.set("user",user);c.set("admin",null);c.set("log",loggerMiddleware(c));await next()}};export const globalAdminMiddleware=()=>{return async(c,next)=>{const user=await new SessionAdminModel(c).getUser();if(!user)throw new HTTPException(403);c.set("admin",{user});await next()}};
@@ -0,0 +1,3 @@
1
+ import type { Context, Next } from "hono";
2
+ export declare const storageStaticHeadersMiddleware: () => (c: Context, next: Next) => Promise<void>;
3
+ //# sourceMappingURL=storage-static.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-static.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/storage-static.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAyB1C,eAAO,MAAM,8BAA8B,SAC3B,GAAG,OAAO,EAAE,MAAM,IAAI,kBAMrC,CAAC"}
@@ -0,0 +1 @@
1
+ export const storageStaticHeadersMiddleware=()=>{return async(c,next)=>{await next();c.header("Content-Security-Policy","sandbox");c.header("X-Content-Type-Options","nosniff")}};
@@ -0,0 +1,5 @@
1
+ import type { Context, Next } from "hono";
2
+ export declare const websocketOriginMiddleware: ({ origin, }?: {
3
+ origin?: string[];
4
+ }) => (c: Context, next: Next) => Promise<void>;
5
+ //# sourceMappingURL=websocket-origin.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-origin.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/websocket-origin.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AA0C1C,eAAO,MAAM,yBAAyB,GAAI,cAEvC;IAKD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACd,MASU,GAAG,OAAO,EAAE,MAAM,IAAI,kBAarC,CAAC"}
@@ -0,0 +1 @@
1
+ import{HTTPException}from"hono/http-exception";import{CONFIG}from"../../lib/config.js";const originOf=value=>{if(!value)return undefined;try{return new URL(value).origin}catch{return undefined}};export const websocketOriginMiddleware=({origin}={})=>{const allowed=new Set([originOf(CONFIG.web.href),originOf(CONFIG.api.origin),...(origin??[]).map(entry=>originOf(entry)??entry)].filter(entry=>Boolean(entry)));return async(c,next)=>{const requestOrigin=c.req.header("origin");if(requestOrigin&&!allowed.has(requestOrigin)){throw new HTTPException(403,{message:"WebSocket connections are not allowed from this origin."})}await next()}};
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../../src/api/models/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAWpC,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IAEvB,eAAe,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAE/C,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAMvC,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAGD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAwBD,qBAAa,OAAO;gBACN,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAE9B,OAAO,CAAC,MAAM;IAgBd,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,cAAc;IAsB3C,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAsBnC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa;IAiBjC,MAAM,IAAI,aAAa,EAAE;CAS1B"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../../src/api/models/ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,0BAA0B;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IAEvB,eAAe,CAAC,EAAE,0BAA0B,EAAE,CAAC;IAE/C,WAAW,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAEvC,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC7B;AAGD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,qBAAa,OAAO;gBACN,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAE9B,OAAO,CAAC,MAAM;IAgBd,cAAc,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,cAAc;IAsB3C,UAAU,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU;IAsBnC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,aAAa;IAYjC,MAAM,IAAI,aAAa,EAAE;CAS1B"}
@@ -5,7 +5,11 @@ export declare class DeviceModel {
5
5
  private createDevice;
6
6
  private getUserAgent;
7
7
  private setCookieDevice;
8
- getDeviceId(): Promise<{
8
+ getExistingDeviceId(): Promise<null | {
9
+ id: number;
10
+ publicId: string;
11
+ }>;
12
+ getOrCreateDeviceId(): Promise<{
9
13
  id: number;
10
14
  publicId: string;
11
15
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../src/api/models/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AASpC,qBAAa,WAAW;gBACV,CAAC,EAAE,OAAO;IAGtB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAEhB,YAAY;IAkB1B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAajB,WAAW;;;;CAyClB"}
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../../../src/api/models/device.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AASpC,qBAAa,WAAW;gBACV,CAAC,EAAE,OAAO;IAGtB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAEhB,YAAY;IAkB1B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,eAAe;IAwBjB,mBAAmB,IAAI,OAAO,CAAC,IAAI,GAAG;QAC1C,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAsCI,mBAAmB;;;;CAG1B"}
@@ -1 +1 @@
1
- import{eq}from"drizzle-orm";import{getCookie}from"hono/cookie";import{randomBytes}from"node:crypto";import{setAuthCookie}from"../lib/auth-cookie.js";import{core_sessions_known_devices}from"../../database/sessions.js";export class DeviceModel{constructor(c){this.c=c}c;async createDevice(){const publicId=randomBytes(16).toString("hex");const[device]=await this.c.get("db").insert(core_sessions_known_devices).values({publicId,ipAddress:this.c.get("ipAddress"),userAgent:this.getUserAgent()}).returning({id:core_sessions_known_devices.id});this.setCookieDevice(publicId);return{id:device.id,publicId}}getUserAgent(){return this.c.req.header("User-Agent")??"node"}setCookieDevice(publicDeviceId){setAuthCookie(this.c,this.c.get("core").authorization.deviceCookieName,publicDeviceId,{expires:new Date(Date.now()+this.c.get("core").authorization.deviceCookieExpires)})}async getDeviceId(){const deviceIdFromCookie=getCookie(this.c,this.c.get("core").authorization.deviceCookieName);try{if(deviceIdFromCookie){const[device]=await this.c.get("db").select({id:core_sessions_known_devices.id}).from(core_sessions_known_devices).where(eq(core_sessions_known_devices.publicId,deviceIdFromCookie));if(!device){return await this.createDevice()}await this.c.get("db").update(core_sessions_known_devices).set({ipAddress:this.c.get("ipAddress"),userAgent:this.getUserAgent(),lastSeen:new Date}).where(eq(core_sessions_known_devices.publicId,deviceIdFromCookie));return{id:device.id,publicId:deviceIdFromCookie}}}catch{}return await this.createDevice()}}
1
+ import{eq}from"drizzle-orm";import{getCookie}from"hono/cookie";import{randomBytes}from"node:crypto";import{setAuthCookie}from"../lib/auth-cookie.js";import{core_sessions_known_devices}from"../../database/sessions.js";export class DeviceModel{constructor(c){this.c=c}c;async createDevice(){const publicId=randomBytes(16).toString("hex");const[device]=await this.c.get("db").insert(core_sessions_known_devices).values({publicId,ipAddress:this.c.get("ipAddress"),userAgent:this.getUserAgent()}).returning({id:core_sessions_known_devices.id});this.setCookieDevice(publicId);return{id:device.id,publicId}}getUserAgent(){return this.c.req.header("User-Agent")??"node"}setCookieDevice(publicDeviceId){setAuthCookie(this.c,this.c.get("core").authorization.deviceCookieName,publicDeviceId,{expires:new Date(Date.now()+this.c.get("core").authorization.deviceCookieExpires)})}async getExistingDeviceId(){const deviceIdFromCookie=getCookie(this.c,this.c.get("core").authorization.deviceCookieName);if(!deviceIdFromCookie)return null;try{const[device]=await this.c.get("db").select({id:core_sessions_known_devices.id}).from(core_sessions_known_devices).where(eq(core_sessions_known_devices.publicId,deviceIdFromCookie));if(!device)return null;await this.c.get("db").update(core_sessions_known_devices).set({ipAddress:this.c.get("ipAddress"),userAgent:this.getUserAgent(),lastSeen:new Date}).where(eq(core_sessions_known_devices.publicId,deviceIdFromCookie));return{id:device.id,publicId:deviceIdFromCookie}}catch{return null}}async getOrCreateDeviceId(){return await this.getExistingDeviceId()??await this.createDevice()}}
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/api/models/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAiBzD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAKF,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAE9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAO7B,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;CAChC;AAOD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,gBAAgB;IAiB/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;gBACV,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAE9B,OAAO,CAAC,OAAO;IAiBT,IAAI,CAAC,CAAC,SAAS,gBAAgB,EACnC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IA4C3B,IAAI,IAAI,MAAM;CAGf;AAED,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/api/models/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAKF,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GAAG,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IAC1E,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAE1B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAE9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAE7B,MAAM,EAAE,WAAW,GAAG,QAAQ,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,WAAW;gBACV,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAE9B,OAAO,CAAC,OAAO;IAIT,IAAI,CAAC,CAAC,SAAS,gBAAgB,EACnC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,eAAe,CAAC;IA4C3B,IAAI,IAAI,MAAM;CAGf;AAED,YAAY,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/api/models/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK/D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAc7D,qBAAa,SAAS;gBACR,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAExB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU/C,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkBzD,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAuBxC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAQlD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,OAAO,IAAI,YAAY,EAAE,CAE5B;CACF"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/api/models/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAK/D,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE7D,qBAAa,SAAS;gBACR,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAExB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAU/C,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IASzD,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAcxC,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAQlD,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,IAAI,OAAO,IAAI,YAAY,EAAE,CAE5B;CACF"}
@@ -1,5 +1,6 @@
1
1
  export declare class PasswordModel {
2
2
  encryptPassword(password: string): Promise<string>;
3
+ verifyDummyPassword(password: string): Promise<boolean>;
3
4
  verifyPassword(password: string, hash: string): Promise<boolean>;
4
5
  }
5
6
  export declare class ForgotPasswordTokenModel {
@@ -1 +1 @@
1
- {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../src/api/models/password.ts"],"names":[],"mappings":"AAEA,qBAAa,aAAa;IAClB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYlD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAkBvE;AAED,qBAAa,wBAAwB;IACnC,kBAAkB;IAIlB,cAAc,CAAC,KAAK,EAAE,MAAM;CAG7B"}
1
+ {"version":3,"file":"password.d.ts","sourceRoot":"","sources":["../../../../src/api/models/password.ts"],"names":[],"mappings":"AA6BA,qBAAa,aAAa;IAClB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBlD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAsBvE;AAED,qBAAa,wBAAwB;IACnC,kBAAkB;IAIlB,cAAc,CAAC,KAAK,EAAE,MAAM;CAG7B"}
@@ -1 +1 @@
1
- import crypto from"node:crypto";export class PasswordModel{async encryptPassword(password){return await new Promise((resolve,reject)=>{const salt=crypto.randomBytes(8).toString("hex");crypto.scrypt(password,salt,64,(err,derivedKey)=>{if(err)reject(err);resolve(`${salt}:${derivedKey.toString("hex")}`)})})}async verifyPassword(password,hash){return await new Promise((resolve,reject)=>{const[salt,key]=hash.split(":");const keyBuffer=Buffer.from(key,"hex");crypto.scrypt(password,salt,64,(err,derivedKey)=>{if(err)reject(err);if(keyBuffer.length!==derivedKey.length){crypto.timingSafeEqual(derivedKey,derivedKey);resolve(false)}else{const areEqual=crypto.timingSafeEqual(keyBuffer,derivedKey);resolve(areEqual)}})})}}export class ForgotPasswordTokenModel{generateResetToken(){return crypto.randomBytes(32).toString("base64url")}hashResetToken(token){return crypto.createHash("sha256").update(token).digest("hex")}}
1
+ import crypto from"node:crypto";const SALT_BYTES=16;const KEY_BYTES=64;const DUMMY_HASH=`${"0".repeat(SALT_BYTES*2)}:${"0".repeat(KEY_BYTES*2)}`;const scrypt=async(password,salt)=>await new Promise((resolve,reject)=>{crypto.scrypt(password,salt,KEY_BYTES,(err,derivedKey)=>{if(err){reject(err);return}resolve(derivedKey)})});export class PasswordModel{async encryptPassword(password){const salt=crypto.randomBytes(SALT_BYTES).toString("hex");const derivedKey=await scrypt(password,salt);return`${salt}:${derivedKey.toString("hex")}`}async verifyDummyPassword(password){return await this.verifyPassword(password,DUMMY_HASH)}async verifyPassword(password,hash){const[salt,key]=hash.split(":");if(!salt||!key)return false;const keyBuffer=Buffer.from(key,"hex");const derivedKey=await scrypt(password,salt);if(keyBuffer.length!==derivedKey.length){crypto.timingSafeEqual(derivedKey,derivedKey);return false}return crypto.timingSafeEqual(keyBuffer,derivedKey)}}export class ForgotPasswordTokenModel{generateResetToken(){return crypto.randomBytes(32).toString("base64url")}hashResetToken(token){return crypto.createHash("sha256").update(token).digest("hex")}}
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/api/models/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAUlC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAQf,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;CAC5C;AAQD,qBAAa,UAAU;gBACT,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,EACb,IAAI,EACJ,OAAY,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,KAAiB,EACjB,QAAY,EACZ,WAAW,EACX,WAAW,EACX,EAAE,GACH,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAuB/C"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/api/models/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,MAAM,WAAW,iBAAiB;IAChC,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;CAC5C;AAED,qBAAa,UAAU;gBACT,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAExB,QAAQ,CAAC,EACb,IAAI,EACJ,OAAY,EACZ,QAAQ,EAAE,gBAAgB,EAC1B,KAAiB,EACjB,QAAY,EACZ,WAAW,EACX,WAAW,EACX,EAAE,GACH,EAAE,iBAAiB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAuB/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/api/models/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/api/models/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-admin.d.ts","sourceRoot":"","sources":["../../../../src/api/models/session-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAkBpC,qBAAa,iBAAiB;gBAChB,CAAC,EAAE,OAAO;IAGtB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAEhB,SAAS;IAcjB,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAmBjC,qBAAqB,CAAC,MAAM,EAAE,MAAM;;;IA2CpC,aAAa;IAwBb,OAAO;;;;;;;;;;;;;CAwEd"}
1
+ {"version":3,"file":"session-admin.d.ts","sourceRoot":"","sources":["../../../../src/api/models/session-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAkBpC,qBAAa,iBAAiB;gBAChB,CAAC,EAAE,OAAO;IAGtB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAEhB,SAAS;IAcjB,kBAAkB,CAAC,MAAM,EAAE,MAAM;IAmBjC,qBAAqB,CAAC,MAAM,EAAE,MAAM;;;IA2CpC,aAAa;IA2Bb,OAAO;;;;;;;;;;;;;CAwEd"}
@@ -1 +1 @@
1
- import{and,eq,gt,or}from"drizzle-orm";import{getCookie}from"hono/cookie";import{HTTPException}from"hono/http-exception";import{deleteAuthCookie,setAuthCookie}from"../lib/auth-cookie.js";import{core_admin_permissions,core_admin_sessions}from"../../database/admins.js";import{DeviceModel}from"./device.js";import{adminSessionCacheKey,reviveSessionUser,sessionCacheTtl}from"./session-cache.js";import{UserModel}from"./user.js";export class SessionAdminModel{constructor(c){this.c=c}c;async hashToken(token){const encoder=new TextEncoder;const data=encoder.encode(token);const hashBuffer=await crypto.subtle.digest("SHA-256",data);const bytes=new Uint8Array(hashBuffer);let result="";for(const byte of bytes){result+=byte.toString(16).padStart(2,"0")}return result}async checkIfUserIsAdmin(userId){const user=await new UserModel().getUserById({id:userId,c:this.c});if(!user)return false;const[permission]=await this.c.get("db").select().from(core_admin_permissions).where(or(eq(core_admin_permissions.userId,user.id),eq(core_admin_permissions.roleId,user.roleId))).limit(1);return!!permission}async createSessionByUserId(userId){const isAdmin=await this.checkIfUserIsAdmin(userId);if(!isAdmin){throw new HTTPException(403,{message:"Forbidden"})}const randomBytes=new Uint8Array(64);crypto.getRandomValues(randomBytes);let token="";for(const byte of randomBytes){token+=byte.toString(16).padStart(2,"0")}const hashedToken=await this.hashToken(token);const device=await new DeviceModel(this.c).getDeviceId();await this.c.get("db").insert(core_admin_sessions).values({token:hashedToken,userId,expiresAt:new Date(Date.now()+this.c.get("core").authorization.adminCookieExpires),deviceId:device.id});setAuthCookie(this.c,this.c.get("core").authorization.adminCookieName,token,{expires:new Date(Date.now()+this.c.get("core").authorization.adminCookieExpires)});return{token}}async deleteSession(){const token=getCookie(this.c,this.c.get("core").authorization.adminCookieName);if(!token)return;const hashedToken=await this.hashToken(token);const device=await new DeviceModel(this.c).getDeviceId();await this.c.get("db").delete(core_admin_sessions).where(eq(core_admin_sessions.token,hashedToken));await this.c.get("cache").deleteSystem(adminSessionCacheKey(hashedToken,device.id));deleteAuthCookie(this.c,this.c.get("core").authorization.adminCookieName)}async getUser(){const{authorization}=this.c.get("core");const token=getCookie(this.c,authorization.adminCookieName);if(!token)return null;const device=await new DeviceModel(this.c).getDeviceId();if(!device)return null;const hashedToken=await this.hashToken(token);const cache=this.c.get("cache");const cacheKey=adminSessionCacheKey(hashedToken,device.id);const cached=await cache.getSystem(cacheKey);if(cached){const user=reviveSessionUser(cached);if(!await this.checkIfUserIsAdmin(user.id)){await this.deleteSession();return null}return user}const[session]=await this.c.get("db").select({userId:core_admin_sessions.userId,expiresAt:core_admin_sessions.expiresAt}).from(core_admin_sessions).where(and(eq(core_admin_sessions.token,hashedToken),eq(core_admin_sessions.deviceId,device.id),gt(core_admin_sessions.expiresAt,new Date))).limit(1);if(!session){deleteAuthCookie(this.c,this.c.get("core").authorization.adminCookieName);return null}const user=await new UserModel().getUserById({id:session.userId,c:this.c});if(!user)return null;const isStillAdmin=await this.checkIfUserIsAdmin(user.id);if(!isStillAdmin){await this.deleteSession();return null}const ttl=sessionCacheTtl(session.expiresAt);if(ttl>0)await cache.setSystem(cacheKey,user,ttl);return user}}
1
+ import{and,eq,gt,or}from"drizzle-orm";import{getCookie}from"hono/cookie";import{HTTPException}from"hono/http-exception";import{deleteAuthCookie,setAuthCookie}from"../lib/auth-cookie.js";import{core_admin_permissions,core_admin_sessions}from"../../database/admins.js";import{DeviceModel}from"./device.js";import{adminSessionCacheKey,reviveSessionUser,sessionCacheTtl}from"./session-cache.js";import{UserModel}from"./user.js";export class SessionAdminModel{constructor(c){this.c=c}c;async hashToken(token){const encoder=new TextEncoder;const data=encoder.encode(token);const hashBuffer=await crypto.subtle.digest("SHA-256",data);const bytes=new Uint8Array(hashBuffer);let result="";for(const byte of bytes){result+=byte.toString(16).padStart(2,"0")}return result}async checkIfUserIsAdmin(userId){const user=await new UserModel().getUserById({id:userId,c:this.c});if(!user)return false;const[permission]=await this.c.get("db").select().from(core_admin_permissions).where(or(eq(core_admin_permissions.userId,user.id),eq(core_admin_permissions.roleId,user.roleId))).limit(1);return!!permission}async createSessionByUserId(userId){const isAdmin=await this.checkIfUserIsAdmin(userId);if(!isAdmin){throw new HTTPException(403,{message:"Forbidden"})}const randomBytes=new Uint8Array(64);crypto.getRandomValues(randomBytes);let token="";for(const byte of randomBytes){token+=byte.toString(16).padStart(2,"0")}const hashedToken=await this.hashToken(token);const device=await new DeviceModel(this.c).getOrCreateDeviceId();await this.c.get("db").insert(core_admin_sessions).values({token:hashedToken,userId,expiresAt:new Date(Date.now()+this.c.get("core").authorization.adminCookieExpires),deviceId:device.id});setAuthCookie(this.c,this.c.get("core").authorization.adminCookieName,token,{expires:new Date(Date.now()+this.c.get("core").authorization.adminCookieExpires)});return{token}}async deleteSession(){const token=getCookie(this.c,this.c.get("core").authorization.adminCookieName);if(!token)return;const hashedToken=await this.hashToken(token);const device=await new DeviceModel(this.c).getExistingDeviceId();await this.c.get("db").delete(core_admin_sessions).where(eq(core_admin_sessions.token,hashedToken));if(device){await this.c.get("cache").deleteSystem(adminSessionCacheKey(hashedToken,device.id))}deleteAuthCookie(this.c,this.c.get("core").authorization.adminCookieName)}async getUser(){const{authorization}=this.c.get("core");const token=getCookie(this.c,authorization.adminCookieName);if(!token)return null;const device=await new DeviceModel(this.c).getExistingDeviceId();if(!device)return null;const hashedToken=await this.hashToken(token);const cache=this.c.get("cache");const cacheKey=adminSessionCacheKey(hashedToken,device.id);const cached=await cache.getSystem(cacheKey);if(cached){const user=reviveSessionUser(cached);if(!await this.checkIfUserIsAdmin(user.id)){await this.deleteSession();return null}return user}const[session]=await this.c.get("db").select({userId:core_admin_sessions.userId,expiresAt:core_admin_sessions.expiresAt}).from(core_admin_sessions).where(and(eq(core_admin_sessions.token,hashedToken),eq(core_admin_sessions.deviceId,device.id),gt(core_admin_sessions.expiresAt,new Date))).limit(1);if(!session){deleteAuthCookie(this.c,this.c.get("core").authorization.adminCookieName);return null}const user=await new UserModel().getUserById({id:session.userId,c:this.c});if(!user)return null;const isStillAdmin=await this.checkIfUserIsAdmin(user.id);if(!isStillAdmin){await this.deleteSession();return null}const ttl=sessionCacheTtl(session.expiresAt);if(ttl>0)await cache.setSystem(cacheKey,user,ttl);return user}}
@@ -0,0 +1,4 @@
1
+ import type { Context } from "hono";
2
+ export declare const invalidateSessionCacheForUser: (c: Context, userId: number) => Promise<void>;
3
+ export declare const revokeAllSessionsForUser: (c: Context, userId: number) => Promise<void>;
4
+ //# sourceMappingURL=session-revoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-revoke.d.ts","sourceRoot":"","sources":["../../../../src/api/models/session-revoke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA8DpC,eAAO,MAAM,6BAA6B,GACxC,GAAG,OAAO,EACV,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAMd,CAAC;AAiBF,eAAO,MAAM,wBAAwB,GACnC,GAAG,OAAO,EACV,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAcd,CAAC"}
@@ -0,0 +1 @@
1
+ import{eq}from"drizzle-orm";import{core_admin_sessions}from"../../database/admins.js";import{core_sessions}from"../../database/sessions.js";import{adminSessionCacheKey,sessionCacheKey}from"./session-cache.js";const sessionCacheKeysForUser=async(c,userId)=>{const db=c.get("db");const[sessions,adminSessions]=await Promise.all([db.select({token:core_sessions.token,deviceId:core_sessions.deviceId}).from(core_sessions).where(eq(core_sessions.userId,userId)),db.select({token:core_admin_sessions.token,deviceId:core_admin_sessions.deviceId}).from(core_admin_sessions).where(eq(core_admin_sessions.userId,userId))]);return[...sessions.map(({token,deviceId})=>sessionCacheKey(token,deviceId)),...adminSessions.map(({token,deviceId})=>adminSessionCacheKey(token,deviceId))]};export const invalidateSessionCacheForUser=async(c,userId)=>{const keys=await sessionCacheKeysForUser(c,userId);if(keys.length>0){await c.get("cache").deleteSystem(keys)}};export const revokeAllSessionsForUser=async(c,userId)=>{const db=c.get("db");const keys=await sessionCacheKeysForUser(c,userId);await Promise.all([db.delete(core_sessions).where(eq(core_sessions.userId,userId)),db.delete(core_admin_sessions).where(eq(core_admin_sessions.userId,userId))]);if(keys.length>0){await c.get("cache").deleteSystem(keys)}};
@@ -1 +1 @@
1
- import{and,eq,gt}from"drizzle-orm";import{getCookie}from"hono/cookie";import{deleteAuthCookie,setAuthCookie}from"../lib/auth-cookie.js";import{core_sessions}from"../../database/sessions.js";import{DeviceModel}from"./device.js";import{reviveSessionUser,sessionCacheKey,sessionCacheTtl}from"./session-cache.js";import{UserModel}from"./user.js";export class SessionModel{constructor(c){this.c=c}c;async hashToken(token){const encoder=new TextEncoder;const data=encoder.encode(token);const hashBuffer=await crypto.subtle.digest("SHA-256",data);const bytes=new Uint8Array(hashBuffer);let result="";for(const byte of bytes){result+=byte.toString(16).padStart(2,"0")}return result}async createSessionByUserId(userId){const randomBytes=new Uint8Array(64);crypto.getRandomValues(randomBytes);let token="";for(const byte of randomBytes){token+=byte.toString(16).padStart(2,"0")}const device=await new DeviceModel(this.c).getDeviceId();const hashedToken=await this.hashToken(token);await this.c.get("db").insert(core_sessions).values({token:hashedToken,userId,expiresAt:new Date(Date.now()+this.c.get("core").authorization.cookie_expires),deviceId:device.id});setAuthCookie(this.c,this.c.get("core").authorization.cookieName,token,{expires:this.c.get("core").authorization.cookie_expires>0?new Date(Date.now()+this.c.get("core").authorization.cookie_expires):undefined});return{token}}async deleteSession(){const token=getCookie(this.c,this.c.get("core").authorization.cookieName);const device=await new DeviceModel(this.c).getDeviceId();if(!(token&&device.id)){deleteAuthCookie(this.c,this.c.get("core").authorization.cookieName);return}const hashedToken=await this.hashToken(token);await this.c.get("db").delete(core_sessions).where(and(eq(core_sessions.token,hashedToken),eq(core_sessions.deviceId,device.id)));await this.c.get("cache").deleteSystem(sessionCacheKey(hashedToken,device.id));deleteAuthCookie(this.c,this.c.get("core").authorization.cookieName)}async getUser(){const token=getCookie(this.c,this.c.get("core").authorization.cookieName);if(!token)return null;const device=await new DeviceModel(this.c).getDeviceId();if(!device)return null;const hashedToken=await this.hashToken(token);const cache=this.c.get("cache");const cacheKey=sessionCacheKey(hashedToken,device.id);const cached=await cache.getSystem(cacheKey);if(cached)return reviveSessionUser(cached);const[session]=await this.c.get("db").select({userId:core_sessions.userId,expiresAt:core_sessions.expiresAt}).from(core_sessions).where(and(eq(core_sessions.token,hashedToken),eq(core_sessions.deviceId,device.id),gt(core_sessions.expiresAt,new Date))).limit(1);if(!session){deleteAuthCookie(this.c,this.c.get("core").authorization.cookieName);return null}const user=await new UserModel().getUserById({id:session.userId,c:this.c});if(!user)return null;const ttl=sessionCacheTtl(session.expiresAt);if(ttl>0)await cache.setSystem(cacheKey,user,ttl);return user}}
1
+ import{and,eq,gt}from"drizzle-orm";import{getCookie}from"hono/cookie";import{deleteAuthCookie,setAuthCookie}from"../lib/auth-cookie.js";import{core_sessions}from"../../database/sessions.js";import{DeviceModel}from"./device.js";import{reviveSessionUser,sessionCacheKey,sessionCacheTtl}from"./session-cache.js";import{UserModel}from"./user.js";export class SessionModel{constructor(c){this.c=c}c;async hashToken(token){const encoder=new TextEncoder;const data=encoder.encode(token);const hashBuffer=await crypto.subtle.digest("SHA-256",data);const bytes=new Uint8Array(hashBuffer);let result="";for(const byte of bytes){result+=byte.toString(16).padStart(2,"0")}return result}async createSessionByUserId(userId){const randomBytes=new Uint8Array(64);crypto.getRandomValues(randomBytes);let token="";for(const byte of randomBytes){token+=byte.toString(16).padStart(2,"0")}const device=await new DeviceModel(this.c).getOrCreateDeviceId();const hashedToken=await this.hashToken(token);await this.c.get("db").insert(core_sessions).values({token:hashedToken,userId,expiresAt:new Date(Date.now()+this.c.get("core").authorization.cookie_expires),deviceId:device.id});setAuthCookie(this.c,this.c.get("core").authorization.cookieName,token,{expires:this.c.get("core").authorization.cookie_expires>0?new Date(Date.now()+this.c.get("core").authorization.cookie_expires):undefined});return{token}}async deleteSession(){const token=getCookie(this.c,this.c.get("core").authorization.cookieName);const device=await new DeviceModel(this.c).getExistingDeviceId();if(!(token&&device?.id)){deleteAuthCookie(this.c,this.c.get("core").authorization.cookieName);return}const hashedToken=await this.hashToken(token);await this.c.get("db").delete(core_sessions).where(and(eq(core_sessions.token,hashedToken),eq(core_sessions.deviceId,device.id)));await this.c.get("cache").deleteSystem(sessionCacheKey(hashedToken,device.id));deleteAuthCookie(this.c,this.c.get("core").authorization.cookieName)}async getUser(){const token=getCookie(this.c,this.c.get("core").authorization.cookieName);if(!token)return null;const device=await new DeviceModel(this.c).getExistingDeviceId();if(!device)return null;const hashedToken=await this.hashToken(token);const cache=this.c.get("cache");const cacheKey=sessionCacheKey(hashedToken,device.id);const cached=await cache.getSystem(cacheKey);if(cached)return reviveSessionUser(cached);const[session]=await this.c.get("db").select({userId:core_sessions.userId,expiresAt:core_sessions.expiresAt}).from(core_sessions).where(and(eq(core_sessions.token,hashedToken),eq(core_sessions.deviceId,device.id),gt(core_sessions.expiresAt,new Date))).limit(1);if(!session){deleteAuthCookie(this.c,this.c.get("core").authorization.cookieName);return null}const user=await new UserModel().getUserById({id:session.userId,c:this.c});if(!user)return null;const ttl=sessionCacheTtl(session.expiresAt);if(ttl>0)await cache.setSystem(cacheKey,user,ttl);return user}}
@@ -1 +1 @@
1
- {"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../../../../src/api/models/sso.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAcpC,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,SAAS,EAAE,CAAC,IAAI,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,WACgB,CAAC;AAE5D,qBAAa,QAAQ;gBACP,CAAC,EAAE,OAAO;IAKtB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CA6BzB;IAEI,QAAQ,CAAC,EACb,IAAI,EACJ,UAAU,EACV,KAAK,GACN,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAwDI,YAAY;IAuBZ,MAAM,CAAC,UAAU,EAAE,MAAM;IASzB,WAAW,CAAC,KAAK,EAAE,MAAM;CA+BhC"}
1
+ {"version":3,"file":"sso.d.ts","sourceRoot":"","sources":["../../../../src/api/models/sso.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAgBpC,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,KACT,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,SAAS,EAAE,CAAC,IAAI,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,MAAM,CAAC;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,WACgB,CAAC;AAE5D,qBAAa,QAAQ;gBACP,CAAC,EAAE,OAAO;IAKtB,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAU;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CA6BzB;IAEI,QAAQ,CAAC,EACb,IAAI,EACJ,UAAU,EACV,KAAK,GACN,EAAE;QACD,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAgEI,YAAY;IAuBZ,MAAM,CAAC,UAAU,EAAE,MAAM;IASzB,WAAW,CAAC,KAAK,EAAE,MAAM;CA+BhC"}
@@ -1 +1 @@
1
- import{and,eq}from"drizzle-orm";import{getCookie}from"hono/cookie";import{HTTPException}from"hono/http-exception";import crypto from"node:crypto";import{deleteAuthCookie,setAuthCookie}from"../lib/auth-cookie.js";import{core_users,core_users_sso}from"../../database/users.js";import{CONFIG}from"../../lib/config.js";import{removeSpecialCharacters}from"../../lib/special-characters.js";import{UserModel}from"./user.js";export const getRedirectUri=code=>new URL(`${CONFIG.web.href}login/sso/${code}`).toString();export class SSOModel{constructor(c){this.c=c;this.plugins=c.get("core").authorization.ssoAdapters}c;plugins;signUpUser=async({providerId,user,c})=>{const data=await new UserModel().signUp({email:user.email,name:removeSpecialCharacters(user.username,false),newsletter:false,hashedPassword:undefined},c);await c.get("db").insert(core_users_sso).values({userId:data.id,providerId:providerId,providerAccountId:user.id});return{userId:data.id}};async callback({code,providerId,state}){await this.verifyState(state);const provider=this.plugins.find(p=>p.id===providerId);if(!provider){throw new HTTPException(404)}const ssoToken=await provider.fetchToken(code);const userFromSSO=await provider.fetchUser(ssoToken);return await this.c.get("db").transaction(async tx=>{const[dataSSOFromDb]=await tx.select({userId:core_users_sso.userId}).from(core_users_sso).leftJoin(core_users,eq(core_users.id,core_users_sso.userId)).where(and(eq(core_users_sso.providerId,providerId),eq(core_users_sso.providerAccountId,userFromSSO.id))).limit(1);if(!dataSSOFromDb){const[userWithEmail]=await tx.select({id:core_users.id,email:core_users.email}).from(core_users).where(eq(core_users.email,userFromSSO.email)).limit(1);if(!userWithEmail){const signUpUser=await this.signUpUser({providerId,user:userFromSSO,c:this.c});return signUpUser}throw new HTTPException(409,{message:"Email already exists"})}return{userId:dataSSOFromDb.userId}})}async encryptState(){const state=crypto.randomBytes(8).toString("hex");const encryptedState=await new Promise((resolve,reject)=>{const salt=crypto.randomBytes(4).toString("hex");crypto.scrypt(state,salt,16,(err,derivedKey)=>{if(err)reject(err);resolve(`${salt}:${derivedKey.toString("hex")}`)})});setAuthCookie(this.c,`${this.c.get("core").authorization.cookieName}--state-sso`,encryptedState);return state}async getUrl(providerId){const provider=this.plugins.find(p=>p.id===providerId);if(!provider){throw new HTTPException(404)}return provider.getUrl({state:await this.encryptState()})}async verifyState(state){const storedState=getCookie(this.c,`${this.c.get("core").authorization.cookieName}--state-sso`);if(!storedState){throw new HTTPException(400,{message:"Invalid state"})}const isValid=await new Promise((resolve,reject)=>{const[salt,storedHash]=storedState.split(":");crypto.scrypt(state,salt,16,(err,derivedKey)=>{if(err)reject(err);resolve(storedHash===derivedKey.toString("hex"))})});if(!isValid){throw new HTTPException(400,{message:"Invalid state"})}deleteAuthCookie(this.c,`${this.c.get("core").authorization.cookieName}--state-sso`)}}
1
+ import{and,eq}from"drizzle-orm";import{getCookie}from"hono/cookie";import{HTTPException}from"hono/http-exception";import crypto from"node:crypto";import{deleteAuthCookie,setAuthCookie}from"../lib/auth-cookie.js";import{matchesEmail,pickAccountForEmail}from"../lib/user-email-lookup.js";import{core_users,core_users_sso}from"../../database/users.js";import{CONFIG}from"../../lib/config.js";import{normalizeEmailAddress}from"../../lib/email-canonical.js";import{removeSpecialCharacters}from"../../lib/special-characters.js";import{UserModel}from"./user.js";export const getRedirectUri=code=>new URL(`${CONFIG.web.href}login/sso/${code}`).toString();export class SSOModel{constructor(c){this.c=c;this.plugins=c.get("core").authorization.ssoAdapters}c;plugins;signUpUser=async({providerId,user,c})=>{const data=await new UserModel().signUp({email:user.email,name:removeSpecialCharacters(user.username,false),newsletter:false,hashedPassword:undefined},c);await c.get("db").insert(core_users_sso).values({userId:data.id,providerId:providerId,providerAccountId:user.id});return{userId:data.id}};async callback({code,providerId,state}){await this.verifyState(state);const provider=this.plugins.find(p=>p.id===providerId);if(!provider){throw new HTTPException(404)}const ssoToken=await provider.fetchToken(code);const userFromProvider=await provider.fetchUser(ssoToken);const userFromSSO={...userFromProvider,email:normalizeEmailAddress(userFromProvider.email)};return await this.c.get("db").transaction(async tx=>{const[dataSSOFromDb]=await tx.select({userId:core_users_sso.userId}).from(core_users_sso).leftJoin(core_users,eq(core_users.id,core_users_sso.userId)).where(and(eq(core_users_sso.providerId,providerId),eq(core_users_sso.providerAccountId,userFromSSO.id))).limit(1);if(!dataSSOFromDb){const accountsWithEmail=await tx.select({id:core_users.id,email:core_users.email}).from(core_users).where(matchesEmail(userFromSSO.email)).limit(2);const userWithEmail=pickAccountForEmail(accountsWithEmail,userFromSSO.email);if(!userWithEmail){const signUpUser=await this.signUpUser({providerId,user:userFromSSO,c:this.c});return signUpUser}throw new HTTPException(409,{message:"Email already exists"})}return{userId:dataSSOFromDb.userId}})}async encryptState(){const state=crypto.randomBytes(8).toString("hex");const encryptedState=await new Promise((resolve,reject)=>{const salt=crypto.randomBytes(4).toString("hex");crypto.scrypt(state,salt,16,(err,derivedKey)=>{if(err)reject(err);resolve(`${salt}:${derivedKey.toString("hex")}`)})});setAuthCookie(this.c,`${this.c.get("core").authorization.cookieName}--state-sso`,encryptedState);return state}async getUrl(providerId){const provider=this.plugins.find(p=>p.id===providerId);if(!provider){throw new HTTPException(404)}return provider.getUrl({state:await this.encryptState()})}async verifyState(state){const storedState=getCookie(this.c,`${this.c.get("core").authorization.cookieName}--state-sso`);if(!storedState){throw new HTTPException(400,{message:"Invalid state"})}const isValid=await new Promise((resolve,reject)=>{const[salt,storedHash]=storedState.split(":");crypto.scrypt(state,salt,16,(err,derivedKey)=>{if(err)reject(err);resolve(storedHash===derivedKey.toString("hex"))})});if(!isValid){throw new HTTPException(400,{message:"Invalid state"})}deleteAuthCookie(this.c,`${this.c.get("core").authorization.cookieName}--state-sso`)}}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/api/models/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA2BpD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAeD,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,UAAU,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IAExB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAUD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IAQvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAOnC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACxB;AA8BD,qBAAa,8BAA+B,SAAQ,aAAa;gBACnD,OAAO,EAAE,MAAM;CAK5B;AA8FD,qBAAa,YAAY;gBACX,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAMhB,YAAY;IA6F1B,OAAO,CAAC,eAAe;IAYjB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwClC,UAAU,CACd,EAAE,EAAE,MAAM,EACV,EAAE,KAAa,EAAE,OAAO,EAAE,GAAE,wBAA6B,GACxD,OAAO,CAAC,IAAI,CAAC;IAyDhB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrB,MAAM,CAAC,EACX,gBAAgB,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CA+F3D"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../src/api/models/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AA2BpD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,UAAU,EAAE,IAAI,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAC;IAExB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAcD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,oBAAoB;IAEnC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CACxB;AAYD,qBAAa,8BAA+B,SAAQ,aAAa;gBACnD,OAAO,EAAE,MAAM;CAK5B;AA8ED,qBAAa,YAAY;gBACX,CAAC,EAAE,OAAO;IAItB,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;YAMhB,YAAY;IA6F1B,OAAO,CAAC,eAAe;IAYjB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwClC,UAAU,CACd,EAAE,EAAE,MAAM,EACV,EAAE,KAAa,EAAE,OAAO,EAAE,GAAE,wBAA6B,GACxD,OAAO,CAAC,IAAI,CAAC;IAyDhB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIrB,MAAM,CAAC,EACX,gBAAgB,EAChB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,MAAM,GACP,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAgG3D"}
@@ -1 +1 @@
1
- import{and,eq}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{core_content_file_refs}from"../../database/content.js";import{core_files}from"../../database/files.js";import{isPgReferenceViolation}from"../../lib/api/pg-error.js";import{buildStorageKey,generateStorageFileName,replaceFileExtension}from"../../lib/api/upload.js";import{STORAGE_FILE_IN_USE}from"../../lib/files/in-use.js";import{formatBytes}from"../../lib/format-bytes.js";const DEFAULT_IMAGE_QUALITY=85;const PROCESSABLE_IMAGE_MIME_TYPES=new Set(["image/avif","image/jpeg","image/png","image/tiff","image/webp"]);export{STORAGE_FILE_IN_USE}from"../../lib/files/in-use.js";const storageFileInUse=body=>new HTTPException(409,{res:Response.json({code:STORAGE_FILE_IN_USE,...body},{status:409})});export class StorageImageUnprocessableError extends HTTPException{constructor(message){super(400,{message});this.name="StorageImageUnprocessableError"}}const WEBP_MAX_SIDE=16383;const SKIPPED_WEBP_DIMENSIONS="webp-dimension-limit";const exceedsWebpLimit=dimensions=>dimensions!==null&&(dimensions.width>WEBP_MAX_SIDE||dimensions.height>WEBP_MAX_SIDE);const imageFormatName=mimeType=>(mimeType.split("/")[1]??mimeType).toUpperCase();const reasonSuffix=error=>{const first=error instanceof Error?error.message.split("\n")[0]?.trim().replace(/[.:]+$/,"")??"":"";return first===""?"":`: ${first.slice(0,160)}`};const imageEncodeFailure=({dimensions,error,mimeType,targetFormat})=>{const size=dimensions?`${dimensions.width}\u00d7${dimensions.height} pixels`:"this size";const target=targetFormat.toUpperCase();const tooLarge=error instanceof Error&&/too large for the .* format/i.test(error.message);if(tooLarge){const limit=targetFormat==="webp"?` ${target} allows at most ${WEBP_MAX_SIDE} pixels per side.`:"";return new StorageImageUnprocessableError(`This image is ${size}, which is too large to convert to ${target}.${limit} Resize it and upload it again.`)}return new HTTPException(400,{message:`This ${imageFormatName(mimeType)} file is damaged${reasonSuffix(error)}. Its header reads as ${size}, but the image data could not be decoded - the file is most likely truncated or was cut short in transfer.`})};export class StorageModel{constructor(c){this.c=c}c;async processImage(body,mimeType){const image=this.c.get("core")?.storage?.image;if(!image||!PROCESSABLE_IMAGE_MIME_TYPES.has(mimeType)){return{body,mimeType,extension:null,dimensions:null,skippedConversion:null}}const quality=image.quality??DEFAULT_IMAGE_QUALITY;const toWebp=image.webp!==false;let sharp;try{const{default:s}=await import("sharp");sharp=s}catch(err){throw new HTTPException(500,{message:"The image optimization library (sharp) failed to load, so images cannot be processed. Install `sharp` on the API server, or remove `storage.image` from the API config to store images as they are uploaded."})}let metadata;try{metadata=await sharp(body).metadata()}catch(error){throw new HTTPException(400,{message:`Could not read this ${imageFormatName(mimeType)} file${reasonSuffix(error)}. It may be truncated, or another format saved under the wrong extension.`})}if(!metadata.format){return{body,mimeType,extension:null,dimensions:null,skippedConversion:null}}const dimensions=metadata.width&&metadata.height?{width:metadata.width,height:metadata.height}:null;const asWebp=toWebp&&!exceedsWebpLimit(dimensions);const targetFormat=asWebp?"webp":metadata.format;let output;try{output=await sharp(body).toFormat(targetFormat,{quality}).toBuffer()}catch(error){throw imageEncodeFailure({dimensions,error,mimeType,targetFormat})}return{body:output,mimeType:asWebp?"image/webp":mimeType,extension:asWebp?".webp":null,dimensions,skippedConversion:toWebp&&!asWebp?SKIPPED_WEBP_DIMENSIONS:null}}requireProvider(){const provider=this.c.get("core").storage?.adapter;if(!provider){throw new HTTPException(500,{message:"No storage adapter is configured, so there is nowhere to put this file. Set `storage.adapter` in the API config."})}return provider}async delete(key){await this.requireProvider().delete(key)}async deleteFile(id,{force=false,ownerId}={}){const db=this.c.get("db");const where=ownerId===undefined?eq(core_files.id,id):and(eq(core_files.id,id),eq(core_files.userId,ownerId));const deleted=await db.transaction(async tx=>{const pins=await tx.delete(core_content_file_refs).where(eq(core_content_file_refs.fileId,id)).returning({id:core_content_file_refs.id});let row;try{[row]=await tx.delete(core_files).where(where).returning({key:core_files.key})}catch(error){if(!isPgReferenceViolation(error))throw error;throw storageFileInUse({content:true,id,revisions:pins.length})}if(!row){throw new HTTPException(404,{message:"File not found"})}if(!force&&pins.length>0){throw storageFileInUse({content:false,id,revisions:pins.length})}return row});const provider=this.c.get("core").storage?.adapter;if(provider){await provider.delete(deleted.key).catch(()=>undefined)}}getUrl(key){return this.requireProvider().getUrl(key)}async upload({allowedMimeTypes,file,folder,maxBytes,metadata,userId}){const provider=this.requireProvider();if(maxBytes!==undefined&&file.size>maxBytes){throw new HTTPException(400,{message:`This file is ${formatBytes(file.size)}. The maximum is ${formatBytes(maxBytes)}.`})}if(allowedMimeTypes&&!allowedMimeTypes.includes(file.type)){throw new HTTPException(400,{message:`"${file.type||"unknown"}" is not an accepted file type here. Accepted: ${allowedMimeTypes.join(", ")}.`})}const processed=await this.processImage(Buffer.from(await file.arrayBuffer()),file.type);const displayName=processed.extension?replaceFileExtension(file.name,processed.extension):file.name;const key=buildStorageKey({folder,fileName:generateStorageFileName(file.name,processed.extension??undefined)});const result=await provider.upload({key,body:processed.body,contentType:processed.mimeType||undefined});const ownerId=userId!==undefined?userId:this.c.get("admin")?.user.id??this.c.get("user")?.id??null;const mimeType=processed.mimeType||null;const size=processed.body.length;let created;try{[created]=await this.c.get("db").insert(core_files).values({name:displayName,key:result.key,folder,mimeType,size,userId:ownerId,pluginId:this.c.get("plugin")?.id??null,metadata:{...metadata??{},...processed.dimensions?{dimensions:processed.dimensions}:{},...processed.skippedConversion?{skippedConversion:processed.skippedConversion}:{}}}).returning({id:core_files.id})}catch(error){await provider.delete(result.key).catch(()=>undefined);throw error}if(!created){await provider.delete(result.key).catch(()=>undefined);throw new HTTPException(500,{message:"The file was stored but could not be recorded in the database, so it cannot be referenced. Nothing was kept - try again."})}return{...result,dimensions:processed.dimensions,id:created.id,mimeType,name:displayName,size}}}
1
+ import{and,eq}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{core_content_file_refs}from"../../database/content.js";import{core_files}from"../../database/files.js";import{isPgReferenceViolation}from"../../lib/api/pg-error.js";import{buildStorageKey,generateStorageFileName,replaceFileExtension}from"../../lib/api/upload.js";import{STORAGE_FILE_IN_USE}from"../../lib/files/in-use.js";import{formatBytes}from"../../lib/format-bytes.js";const DEFAULT_IMAGE_QUALITY=85;const PROCESSABLE_IMAGE_MIME_TYPES=new Set(["image/avif","image/jpeg","image/png","image/tiff","image/webp"]);export{STORAGE_FILE_IN_USE}from"../../lib/files/in-use.js";const storageFileInUse=body=>new HTTPException(409,{res:Response.json({code:STORAGE_FILE_IN_USE,...body},{status:409})});export class StorageImageUnprocessableError extends HTTPException{constructor(message){super(400,{message});this.name="StorageImageUnprocessableError"}}const WEBP_MAX_SIDE=16383;const SKIPPED_WEBP_DIMENSIONS="webp-dimension-limit";const exceedsWebpLimit=dimensions=>dimensions!==null&&(dimensions.width>WEBP_MAX_SIDE||dimensions.height>WEBP_MAX_SIDE);const imageFormatName=mimeType=>(mimeType.split("/")[1]??mimeType).toUpperCase();const reasonSuffix=error=>{const first=error instanceof Error?error.message.split("\n")[0]?.trim().replace(/[.:]+$/,"")??"":"";return first===""?"":`: ${first.slice(0,160)}`};const imageEncodeFailure=({dimensions,error,mimeType,targetFormat})=>{const size=dimensions?`${dimensions.width}\u00d7${dimensions.height} pixels`:"this size";const target=targetFormat.toUpperCase();const tooLarge=error instanceof Error&&/too large for the .* format/i.test(error.message);if(tooLarge){const limit=targetFormat==="webp"?` ${target} allows at most ${WEBP_MAX_SIDE} pixels per side.`:"";return new StorageImageUnprocessableError(`This image is ${size}, which is too large to convert to ${target}.${limit} Resize it and upload it again.`)}return new HTTPException(400,{message:`This ${imageFormatName(mimeType)} file is damaged${reasonSuffix(error)}. Its header reads as ${size}, but the image data could not be decoded - the file is most likely truncated or was cut short in transfer.`})};export class StorageModel{constructor(c){this.c=c}c;async processImage(body,mimeType){const image=this.c.get("core")?.storage?.image;if(!image||!PROCESSABLE_IMAGE_MIME_TYPES.has(mimeType)){return{body,mimeType,extension:null,dimensions:null,skippedConversion:null}}const quality=image.quality??DEFAULT_IMAGE_QUALITY;const toWebp=image.webp!==false;let sharp;try{const{default:s}=await import("sharp");sharp=s}catch(err){throw new HTTPException(500,{message:"The image optimization library (sharp) failed to load, so images cannot be processed. Install `sharp` on the API server, or remove `storage.image` from the API config to store images as they are uploaded."})}let metadata;try{metadata=await sharp(body).metadata()}catch(error){throw new HTTPException(400,{message:`Could not read this ${imageFormatName(mimeType)} file${reasonSuffix(error)}. It may be truncated, or another format saved under the wrong extension.`})}if(!metadata.format){return{body,mimeType,extension:null,dimensions:null,skippedConversion:null}}const dimensions=metadata.width&&metadata.height?{width:metadata.width,height:metadata.height}:null;const asWebp=toWebp&&!exceedsWebpLimit(dimensions);const targetFormat=asWebp?"webp":metadata.format;let output;try{output=await sharp(body).toFormat(targetFormat,{quality}).toBuffer()}catch(error){throw imageEncodeFailure({dimensions,error,mimeType,targetFormat})}return{body:output,mimeType:asWebp?"image/webp":mimeType,extension:asWebp?".webp":null,dimensions,skippedConversion:toWebp&&!asWebp?SKIPPED_WEBP_DIMENSIONS:null}}requireProvider(){const provider=this.c.get("core").storage?.adapter;if(!provider){throw new HTTPException(500,{message:"No storage adapter is configured, so there is nowhere to put this file. Set `storage.adapter` in the API config."})}return provider}async delete(key){await this.requireProvider().delete(key)}async deleteFile(id,{force=false,ownerId}={}){const db=this.c.get("db");const where=ownerId===undefined?eq(core_files.id,id):and(eq(core_files.id,id),eq(core_files.userId,ownerId));const deleted=await db.transaction(async tx=>{const pins=await tx.delete(core_content_file_refs).where(eq(core_content_file_refs.fileId,id)).returning({id:core_content_file_refs.id});let row;try{[row]=await tx.delete(core_files).where(where).returning({key:core_files.key})}catch(error){if(!isPgReferenceViolation(error))throw error;throw storageFileInUse({content:true,id,revisions:pins.length})}if(!row){throw new HTTPException(404,{message:"File not found"})}if(!force&&pins.length>0){throw storageFileInUse({content:false,id,revisions:pins.length})}return row});const provider=this.c.get("core").storage?.adapter;if(provider){await provider.delete(deleted.key).catch(()=>undefined)}}getUrl(key){return this.requireProvider().getUrl(key)}async upload({allowedMimeTypes,file,folder,maxBytes,metadata,userId}){const provider=this.requireProvider();if(maxBytes!==undefined&&file.size>maxBytes){throw new HTTPException(400,{message:`This file is ${formatBytes(file.size)}. The maximum is ${formatBytes(maxBytes)}.`})}if(allowedMimeTypes&&!allowedMimeTypes.includes(file.type)){throw new HTTPException(400,{message:`"${file.type||"unknown"}" is not an accepted file type here. Accepted: ${allowedMimeTypes.join(", ")}.`})}const processed=await this.processImage(Buffer.from(await file.arrayBuffer()),file.type);const displayName=processed.extension?replaceFileExtension(file.name,processed.extension):file.name;const key=buildStorageKey({folder,fileName:generateStorageFileName(file.name,processed.extension??undefined,processed.mimeType)});const result=await provider.upload({key,body:processed.body,contentType:processed.mimeType||undefined});const ownerId=userId!==undefined?userId:this.c.get("admin")?.user.id??this.c.get("user")?.id??null;const mimeType=processed.mimeType||null;const size=processed.body.length;let created;try{[created]=await this.c.get("db").insert(core_files).values({name:displayName,key:result.key,folder,mimeType,size,userId:ownerId,pluginId:this.c.get("plugin")?.id??null,metadata:{...metadata??{},...processed.dimensions?{dimensions:processed.dimensions}:{},...processed.skippedConversion?{skippedConversion:processed.skippedConversion}:{}}}).returning({id:core_files.id})}catch(error){await provider.delete(result.key).catch(()=>undefined);throw error}if(!created){await provider.delete(result.key).catch(()=>undefined);throw new HTTPException(500,{message:"The file was stored but could not be recorded in the database, so it cannot be referenced. Nothing was kept - try again."})}return{...result,dimensions:processed.dimensions,id:created.id,mimeType,name:displayName,size}}}
@@ -1 +1 @@
1
- {"version":3,"file":"sign-in-with-passwords.d.ts","sourceRoot":"","sources":["../../../../../src/api/models/user/sign-in-with-passwords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AASpC,eAAO,MAAM,kBAAkB,GAAU,yBAItC;IACD,CAAC,EAAE,OAAO,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;;;EA0BA,CAAC"}
1
+ {"version":3,"file":"sign-in-with-passwords.d.ts","sourceRoot":"","sources":["../../../../../src/api/models/user/sign-in-with-passwords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AASpC,eAAO,MAAM,kBAAkB,GAAU,yBAItC;IACD,CAAC,EAAE,OAAO,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;;;EAgCA,CAAC"}
@@ -1 +1 @@
1
- import{eq}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{core_users}from"../../../database/users.js";import{PasswordModel}from"../password.js";export const signInWithPassword=async({email,password,c})=>{const[user]=await c.get("db").select({id:core_users.id,email:core_users.email,password:core_users.password}).from(core_users).where(eq(core_users.email,email)).limit(1);if(!user?.password){throw new HTTPException(403)}const validPassword=await new PasswordModel().verifyPassword(password,user.password);if(!validPassword){throw new HTTPException(403)}return{id:user.id,email:user.email}};
1
+ import{HTTPException}from"hono/http-exception";import{matchesEmail,pickAccountForEmail}from"../../lib/user-email-lookup.js";import{core_users}from"../../../database/users.js";import{PasswordModel}from"../password.js";export const signInWithPassword=async({email,password,c})=>{const candidates=await c.get("db").select({id:core_users.id,email:core_users.email,password:core_users.password}).from(core_users).where(matchesEmail(email)).limit(2);const user=pickAccountForEmail(candidates,email);const passwords=new PasswordModel;if(!user?.password){await passwords.verifyDummyPassword(password);throw new HTTPException(403)}const validPassword=await passwords.verifyPassword(password,user.password);if(!validPassword){throw new HTTPException(403)}return{id:user.id,email:user.email}};
@@ -1,5 +1,5 @@
1
1
  import type { Context } from "hono";
2
- export declare const signUp: ({ email, name, newsletter, hashedPassword, }: {
2
+ export declare const signUp: ({ email: typedEmail, name, newsletter, hashedPassword, }: {
3
3
  email: string;
4
4
  hashedPassword: string | undefined;
5
5
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"sign-up.d.ts","sourceRoot":"","sources":["../../../../../src/api/models/user/sign-up.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAiEpC,eAAO,MAAM,MAAM,GACjB,8CAKG;IACD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,EACD,GAAG,OAAO;;;;;;;;;;;;;EAkEX,CAAC"}
1
+ {"version":3,"file":"sign-up.d.ts","sourceRoot":"","sources":["../../../../../src/api/models/user/sign-up.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAmEpC,eAAO,MAAM,MAAM,GACjB,0DAKG;IACD,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,EACD,GAAG,OAAO;;;;;;;;;;;;;EAmEX,CAAC"}
@@ -1 +1 @@
1
- import{and,count,eq,or}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{generateAvatarColor}from"../../modules/users/avatar-color.js";import{core_roles}from"../../../database/roles.js";import{core_users}from"../../../database/users.js";import{removeSpecialCharacters}from"../../../lib/special-characters.js";const getDefaultData=async c=>{const[countUsers]=await c.get("db").select({count:count()}).from(core_users);if(countUsers.count===0){const[defaultRole]=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(eq(core_roles.default,false),eq(core_roles.root,true))).limit(1);if(!defaultRole){throw new HTTPException(400,{message:"Default group not found."})}return{roleId:defaultRole.id,emailVerified:true}}const[defaultRole]=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(eq(core_roles.default,true),eq(core_roles.root,false))).limit(1);if(!defaultRole){throw new HTTPException(400,{message:"Default role not found."})}return{roleId:defaultRole.id,emailVerified:!c.get("core").email?.adapter}};export const signUp=async({email,name,newsletter,hashedPassword},c)=>{const convertToNameSEO=removeSpecialCharacters(name);const checkIfUserExist=await c.get("db").select({email:core_users.email,name_code:core_users.nameCode}).from(core_users).where(or(eq(core_users.email,email),eq(core_users.nameCode,convertToNameSEO)));const findEmail=checkIfUserExist.find(user=>user.email===email);if(findEmail){throw new HTTPException(409,{message:"Email already exists"})}const findName=checkIfUserExist.find(user=>user.name_code===convertToNameSEO);if(findName){throw new HTTPException(409,{message:"Name already exists"})}const{roleId,emailVerified}=await getDefaultData(c);const[data]=await c.get("db").insert(core_users).values({email,name,nameCode:convertToNameSEO,newsletter,password:hashedPassword,avatarColor:generateAvatarColor(name),roleId,emailVerified,ipAddress:c.get("ipAddress")}).returning();const{password:_,...user}=data;await c.get("events").emit("user.created",{userId:data.id,email:data.email,name:data.name,emailVerified:data.emailVerified});return user};
1
+ import{and,count,eq,or}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{emailAliases,matchesEmail}from"../../lib/user-email-lookup.js";import{generateAvatarColor}from"../../modules/users/avatar-color.js";import{core_roles}from"../../../database/roles.js";import{core_users}from"../../../database/users.js";import{canonicalizeEmail}from"../../../lib/email-canonical.js";import{removeSpecialCharacters}from"../../../lib/special-characters.js";const getDefaultData=async c=>{const[countUsers]=await c.get("db").select({count:count()}).from(core_users);if(countUsers.count===0){const[defaultRole]=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(eq(core_roles.default,false),eq(core_roles.root,true))).limit(1);if(!defaultRole){throw new HTTPException(400,{message:"Default group not found."})}return{roleId:defaultRole.id,emailVerified:true}}const[defaultRole]=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(eq(core_roles.default,true),eq(core_roles.root,false))).limit(1);if(!defaultRole){throw new HTTPException(400,{message:"Default role not found."})}return{roleId:defaultRole.id,emailVerified:!c.get("core").email?.adapter}};export const signUp=async({email:typedEmail,name,newsletter,hashedPassword},c)=>{const convertToNameSEO=removeSpecialCharacters(name);const email=canonicalizeEmail(typedEmail);const takenAddresses=new Set(emailAliases(typedEmail));const checkIfUserExist=await c.get("db").select({email:core_users.email,name_code:core_users.nameCode}).from(core_users).where(or(matchesEmail(typedEmail),eq(core_users.nameCode,convertToNameSEO)));const findEmail=checkIfUserExist.find(user=>takenAddresses.has(user.email));if(findEmail){throw new HTTPException(409,{message:"Email already exists"})}const findName=checkIfUserExist.find(user=>user.name_code===convertToNameSEO);if(findName){throw new HTTPException(409,{message:"Name already exists"})}const{roleId,emailVerified}=await getDefaultData(c);const[data]=await c.get("db").insert(core_users).values({email,name,nameCode:convertToNameSEO,newsletter,password:hashedPassword,avatarColor:generateAvatarColor(name),roleId,emailVerified,ipAddress:c.get("ipAddress")}).returning();const{password:_,...user}=data;await c.get("events").emit("user.created",{userId:data.id,email:data.email,name:data.name,emailVerified:data.emailVerified});return user};
@@ -39,7 +39,7 @@ export declare class UserModel {
39
39
  id: number;
40
40
  email: string;
41
41
  }>;
42
- signUp: ({ email, name, newsletter, hashedPassword, }: {
42
+ signUp: ({ email: typedEmail, name, newsletter, hashedPassword, }: {
43
43
  email: string;
44
44
  hashedPassword: string | undefined;
45
45
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/api/models/user.ts"],"names":[],"mappings":"AAKA,qBAAa,SAAS;IACpB,WAAW;;;;;;;;;;;;;;;cAAe;IAC1B,iBAAiB;;;;;;;;;;;;;;;cAAqB;IACtC,kBAAkB;;;;;;;OAAsB;IACxC,MAAM;;;;kBAE2wC,CAAC;;;;;;;;;;;;;;OAFlwC;CACjB"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../src/api/models/user.ts"],"names":[],"mappings":"AAKA,qBAAa,SAAS;IACpB,WAAW;;;;;;;;;;;;;;;cAAe;IAC1B,iBAAiB;;;;;;;;;;;;;;;cAAqB;IACtC,kBAAkB;;;;;;;OAAsB;IACxC,MAAM;;;;kBAE45C,CAAC;;;;;;;;;;;;;;OAFn5C;CACjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"get.route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/modules/admin/advanced/queue/routes/get.route.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAkBpB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2E7B,CAAC"}
1
+ {"version":3,"file":"get.route.d.ts","sourceRoot":"","sources":["../../../../../../../../src/api/modules/admin/advanced/queue/routes/get.route.ts"],"names":[],"mappings":"AACA,OAAO,CAAC,MAAM,KAAK,CAAC;AAkBpB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiG7B,CAAC"}
@@ -1 +1 @@
1
- import{getColumns,inArray}from"drizzle-orm";import z from"zod";import{buildRoute}from"../../../../../lib/route.js";import{withPagination,zodPaginationPageInfo,zodPaginationQuery}from"../../../../../lib/with-pagination.js";import{CONFIG_PLUGIN}from"../../../../../../config.js";import{core_queue}from"../../../../../../database/queue.js";const QUEUE_STATUSES=["pending","processing","completed","failed"];export const getQueueTasksRoute=buildRoute({pluginId:CONFIG_PLUGIN.pluginId,adminStaffPermission:{module:"queue",permission:"can_view"},route:{method:"get",description:"Get Admin Queue Tasks",path:"/",request:{query:zodPaginationQuery.extend({order:z.enum(["asc","desc"]).optional(),orderBy:z.enum(["createdAt","availableAt","status"]).optional(),status:z.string().optional()})},responses:{200:{content:{"application/json":{schema:z.object({edges:z.array(z.object({id:z.number(),pluginId:z.string(),name:z.string(),queue:z.string(),status:z.enum(QUEUE_STATUSES),priority:z.number(),attempts:z.number(),maxAttempts:z.number(),availableAt:z.date(),reservedAt:z.date().nullable(),lastError:z.string().nullable(),createdAt:z.date(),completedAt:z.date().nullable()})),pageInfo:zodPaginationPageInfo})}},description:"List of queue tasks"}}},handler:async c=>{const query=c.req.valid("query");const statuses=(query.status?.split(",")??[]).filter(status=>QUEUE_STATUSES.includes(status));const data=await withPagination({params:{query},c,primaryCursor:core_queue.id,where:statuses.length?inArray(core_queue.status,statuses):undefined,query:async({cursorSelection,limit,where,orderBy})=>await c.get("db").select({...getColumns(core_queue),...cursorSelection}).from(core_queue).where(where).orderBy(orderBy).limit(limit),table:core_queue,orderBy:{column:query.orderBy?core_queue[query.orderBy]:core_queue.createdAt,order:query.order??"desc"}});return c.json(data)}});
1
+ import{inArray}from"drizzle-orm";import z from"zod";import{buildRoute}from"../../../../../lib/route.js";import{withPagination,zodPaginationPageInfo,zodPaginationQuery}from"../../../../../lib/with-pagination.js";import{CONFIG_PLUGIN}from"../../../../../../config.js";import{core_queue}from"../../../../../../database/queue.js";const QUEUE_STATUSES=["pending","processing","completed","failed"];export const getQueueTasksRoute=buildRoute({pluginId:CONFIG_PLUGIN.pluginId,adminStaffPermission:{module:"queue",permission:"can_view"},route:{method:"get",description:"Get Admin Queue Tasks",path:"/",request:{query:zodPaginationQuery.extend({order:z.enum(["asc","desc"]).optional(),orderBy:z.enum(["createdAt","availableAt","status"]).optional(),status:z.string().optional()})},responses:{200:{content:{"application/json":{schema:z.object({edges:z.array(z.object({id:z.number(),pluginId:z.string(),name:z.string(),queue:z.string(),status:z.enum(QUEUE_STATUSES),priority:z.number(),attempts:z.number(),maxAttempts:z.number(),availableAt:z.date(),reservedAt:z.date().nullable(),lastError:z.string().nullable(),createdAt:z.date(),completedAt:z.date().nullable()})),pageInfo:zodPaginationPageInfo})}},description:"List of queue tasks"}}},handler:async c=>{const query=c.req.valid("query");const statuses=(query.status?.split(",")??[]).filter(status=>QUEUE_STATUSES.includes(status));const data=await withPagination({params:{query},c,primaryCursor:core_queue.id,where:statuses.length?inArray(core_queue.status,statuses):undefined,query:async({cursorSelection,limit,where,orderBy})=>await c.get("db").select({...cursorSelection,id:core_queue.id,pluginId:core_queue.pluginId,name:core_queue.name,queue:core_queue.queue,status:core_queue.status,priority:core_queue.priority,attempts:core_queue.attempts,maxAttempts:core_queue.maxAttempts,availableAt:core_queue.availableAt,reservedAt:core_queue.reservedAt,lastError:core_queue.lastError,createdAt:core_queue.createdAt,completedAt:core_queue.completedAt}).from(core_queue).where(where).orderBy(orderBy).limit(limit),table:core_queue,orderBy:{column:query.orderBy?core_queue[query.orderBy]:core_queue.createdAt,order:query.order??"desc"}});return c.json(data)}});
@@ -1 +1 @@
1
- {"version":3,"file":"clear-search.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/debug/routes/clear-search.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAqBH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2DrC,CAAC"}
1
+ {"version":3,"file":"clear-search.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/debug/routes/clear-search.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2DrC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"content-status.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/debug/routes/content-status.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoFxB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvC,CAAC"}
1
+ {"version":3,"file":"content-status.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/debug/routes/content-status.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiExB,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search-status.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/debug/routes/search-status.route.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAwDxB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoKtC,CAAC"}
1
+ {"version":3,"file":"search-status.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/debug/routes/search-status.route.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAuCxB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoKtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/files/routes/delete.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAKtC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgE/B,CAAC"}
1
+ {"version":3,"file":"delete.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/files/routes/delete.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAKtC,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4D/B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"assert-manage-admin-role.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/roles/lib/assert-manage-admin-role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAiBpC,eAAO,MAAM,wBAAwB,GACnC,GAAG,OAAO,EACV,yBAGG;IACD,UAAU,EAAE,kBAAkB,GAAG,gBAAgB,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB,KACA,OAAO,CAAC,IAAI,CAgBd,CAAC"}
1
+ {"version":3,"file":"assert-manage-admin-role.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/roles/lib/assert-manage-admin-role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAQpC,eAAO,MAAM,wBAAwB,GACnC,GAAG,OAAO,EACV,yBAGG;IACD,UAAU,EAAE,kBAAkB,GAAG,gBAAgB,CAAC;IAClD,MAAM,EAAE,MAAM,CAAC;CAChB,KACA,OAAO,CAAC,IAAI,CAgBd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"show.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/roles/routes/show.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AA8BtC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2F7B,CAAC"}
1
+ {"version":3,"file":"show.route.d.ts","sourceRoot":"","sources":["../../../../../../../src/api/modules/admin/roles/routes/show.route.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AA8BtC,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiG7B,CAAC"}
@@ -1 +1 @@
1
- import{z}from"@hono/zod-openapi";import{and,eq}from"drizzle-orm";import{buildRoute}from"../../../../lib/route.js";import{CONFIG_PLUGIN}from"../../../../../config.js";import{core_languages_words}from"../../../../../database/languages.js";import{core_roles}from"../../../../../database/roles.js";const roleAdminSchema=z.object({id:z.number(),name:z.array(z.object({name:z.string(),languageCode:z.string()})),color:z.string().nullable(),protected:z.boolean(),default:z.boolean(),root:z.boolean(),guest:z.boolean(),allowUploadFiles:z.boolean(),totalMaxStorage:z.number().nullable(),maxStorageForSubmit:z.number().nullable(),createdAt:z.date(),updatedAt:z.date()});export const showRoleAdminRoute=buildRoute({pluginId:CONFIG_PLUGIN.pluginId,route:{method:"get",description:"Get a single role by id (Admin only)",path:"/{id}",request:{params:z.object({id:z.string().openapi({example:"1"})})},responses:{200:{content:{"application/json":{schema:roleAdminSchema}},description:"Role found"},403:{description:"Access Denied"},404:{content:{"application/json":{schema:z.object({error:z.string()})}},description:"Role not found"}}},handler:async c=>{const{id}=c.req.valid("param");const roleId=Number(id);if(!Number.isInteger(roleId)){return c.json({error:"Role not found"},404)}const[role]=await c.get("db").select({id:core_roles.id,color:core_roles.color,protected:core_roles.protected,default:core_roles.default,root:core_roles.root,guest:core_roles.guest,allowUploadFiles:core_roles.allowUploadFiles,totalMaxStorage:core_roles.totalMaxStorage,maxStorageForSubmit:core_roles.maxStorageForSubmit,createdAt:core_roles.createdAt}).from(core_roles).where(eq(core_roles.id,roleId)).limit(1);if(!role){return c.json({error:"Role not found"},404)}const names=await c.get("db").select({languageCode:core_languages_words.languageCode,value:core_languages_words.value}).from(core_languages_words).where(and(eq(core_languages_words.tableName,"core_roles"),eq(core_languages_words.variable,"name"),eq(core_languages_words.pluginCode,"core"),eq(core_languages_words.itemId,roleId)));return c.json({...role,name:names.map(word=>({name:word.value,languageCode:word.languageCode}))},200)}});
1
+ import{z}from"@hono/zod-openapi";import{and,eq}from"drizzle-orm";import{buildRoute}from"../../../../lib/route.js";import{CONFIG_PLUGIN}from"../../../../../config.js";import{core_languages_words}from"../../../../../database/languages.js";import{core_roles}from"../../../../../database/roles.js";const roleAdminSchema=z.object({id:z.number(),name:z.array(z.object({name:z.string(),languageCode:z.string()})),color:z.string().nullable(),protected:z.boolean(),default:z.boolean(),root:z.boolean(),guest:z.boolean(),allowUploadFiles:z.boolean(),totalMaxStorage:z.number().nullable(),maxStorageForSubmit:z.number().nullable(),createdAt:z.date(),updatedAt:z.date()});export const showRoleAdminRoute=buildRoute({pluginId:CONFIG_PLUGIN.pluginId,adminStaffPermission:{module:"roles",permission:"can_view"},route:{method:"get",description:"Get a single role by id (Admin only)",path:"/{id}",request:{params:z.object({id:z.string().openapi({example:"1"})})},responses:{200:{content:{"application/json":{schema:roleAdminSchema}},description:"Role found"},403:{description:"Access Denied"},404:{content:{"application/json":{schema:z.object({error:z.string()})}},description:"Role not found"}}},handler:async c=>{const{id}=c.req.valid("param");const roleId=Number(id);if(!Number.isInteger(roleId)){return c.json({error:"Role not found"},404)}const[role]=await c.get("db").select({id:core_roles.id,color:core_roles.color,protected:core_roles.protected,default:core_roles.default,root:core_roles.root,guest:core_roles.guest,allowUploadFiles:core_roles.allowUploadFiles,totalMaxStorage:core_roles.totalMaxStorage,maxStorageForSubmit:core_roles.maxStorageForSubmit,createdAt:core_roles.createdAt}).from(core_roles).where(eq(core_roles.id,roleId)).limit(1);if(!role){return c.json({error:"Role not found"},404)}const names=await c.get("db").select({languageCode:core_languages_words.languageCode,value:core_languages_words.value}).from(core_languages_words).where(and(eq(core_languages_words.tableName,"core_roles"),eq(core_languages_words.variable,"name"),eq(core_languages_words.pluginCode,"core"),eq(core_languages_words.itemId,roleId)));return c.json({...role,name:names.map(word=>({name:word.value,languageCode:word.languageCode}))},200)}});
@@ -1 +1 @@
1
- {"version":3,"file":"notifications.route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/modules/admin/routes/notifications.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAKpC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4ChC,CAAC"}
1
+ {"version":3,"file":"notifications.route.d.ts","sourceRoot":"","sources":["../../../../../../src/api/modules/admin/routes/notifications.route.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,yBAAyB;;;;;;;;;;iBAKpC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDhC,CAAC"}