@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
@@ -2,7 +2,7 @@
2
2
  import { createRequire } from 'module';
3
3
  const require = createRequire(import.meta.url);
4
4
 
5
- import{config as po}from"dotenv";import{spawn as Tn}from"child_process";var z=async(e,n=[])=>await new Promise((o,t)=>{let r=Tn(e,n,{stdio:"inherit",shell:!0,env:process.env});r.on("error",s=>{t(s)}),r.on("close",s=>{s!==0?t(new Error(`Command failed with exit code ${s}`)):o(!0)})});var Ke=async()=>{await z("tsc",["-p","tsconfig.build.json"]),await z("swc",["src","-d","dist","--config-file",".swcrc","--copy-files"]),await z("tsc-alias",["-p","tsconfig.build.json"])};var $e={build:{flags:[],positional:0,usage:"vitnode build"},"db:prepare":{flags:[],positional:0,usage:"vitnode db:prepare"},dev:{flags:[],positional:0,usage:"vitnode dev"},"i18n:check":{flags:["--ci"],positional:0,usage:"vitnode i18n:check [--ci]"},"i18n:create":{flags:[],positional:"any",usage:'vitnode i18n:create <code> "<name>"'},"i18n:delete":{flags:[],positional:1,usage:"vitnode i18n:delete <code>"},"i18n:update":{flags:[],positional:0,usage:"vitnode i18n:update"},"i18n:update:ai":{flags:["--concurrency","--model"],positional:"any",usage:"vitnode i18n:update:ai [code...] [--model <id>] [--concurrency <n>]",valueFlags:["--concurrency","--model"]},migrate:{flags:["--generate"],positional:0,usage:"vitnode migrate [--generate]"}},Rn=()=>Object.keys($e).sort(),Ln=e=>e!==void 0&&Object.hasOwn($e,e),En=e=>e.map(n=>`"${n}"`).join(", "),Pn=e=>{let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]},jn=e=>e.flags.length===0?"It accepts no flags.":`Allowed: ${[...e.flags].sort().join(", ")}.`,Mn=(e,n,o)=>{let t=`for command "${e}"`,r=`Usage: ${n.usage}`;if(n.flags.length===0&&n.positional===0)return o.length===0?null:`Command "${e}" accepts no arguments, but got ${En(o)}. ${r}`;let s=n.valueFlags??[],a=new Set,l=0;for(let u=0;u<o.length;u+=1){let p=o[u];if(!p.startsWith("-")){l+=1;continue}let[m,S]=Pn(p);if(!n.flags.includes(m))return`Invalid argument "${p}" ${t}. ${jn(n)} ${r}`;if(a.has(m))return`Argument "${m}" is repeated ${t}. ${r}`;if(a.add(m),!s.includes(m)){if(S!==void 0)return`Argument "${m}" ${t} takes no value. ${r}`;continue}if(S!==void 0){if(S==="")return`Argument "${m}" ${t} needs a value. ${r}`;continue}let x=o[u+1];if(x===void 0||x.startsWith("-"))return`Argument "${m}" ${t} needs a value. ${r}`;u+=1}return n.positional!=="any"&&l>n.positional?n.positional===0?`Command "${e}" accepts no positional arguments, but got ${String(l)}. ${r}`:`Command "${e}" accepts at most ${String(n.positional)} argument, but got ${String(l)}. ${r}`:null},Ve=e=>{let[n,...o]=e,t=`Available commands: ${Rn().join(", ")}.`;if(n===void 0||n==="")return{message:`No command given. ${t}`,ok:!1};if(!Ln(n))return{message:`Command not found: "${n}". ${t}`,ok:!1};let r=Mn(n,$e[n],o);return r===null?{args:o,command:n,ok:!0}:{message:r,ok:!1}};import{spawn as Dn}from"child_process";var _e=(e,n)=>{let o=Dn(e,n,{stdio:"inherit",shell:process.platform==="win32",env:process.env});return o.on("error",t=>{console.error(`\x1B[31m${e} failed:\x1B[0m`,t)}),o.on("exit",t=>{t!==null&&t!==0&&console.error(`\x1B[31m${e} exited with code ${t}\x1B[0m`)}),o},Ge=({initMessage:e})=>{let n=[_e("tsc",["-w","-p","tsconfig.build.json","--preserveWatchOutput"]),_e("swc",["src","-d","dist","--config-file",".swcrc","--copy-files","-w"]),_e("tsc-alias",["-w","-p","tsconfig.build.json"])],o=()=>{n.forEach(t=>t.kill()),process.exit(0)};process.on("SIGINT",o),process.on("SIGTERM",o),console.log(`${e} \x1B[34mWatching plugin sources...\x1B[0m`)};import{existsSync as tn,readdirSync as Yn,readFileSync as Hn}from"fs";import{join as Ze,relative as Xn}from"path";import{createJiti as On}from"jiti";import{existsSync as Fn,readdirSync as qn,statSync as Un}from"fs";import{join as We}from"path";var Kn={"api.config":"vitNodeApiConfig",config:"vitNodeConfig","server.config":"vitNodeServerConfig"},ve=(e,n,o=4)=>{let t=(r,s)=>{if(s>o)return null;try{let a=We(r,"src",n);if(Fn(a))return a;let l=qn(r);for(let u of l){if(u==="node_modules"||u.startsWith(".")||u==="dist"||u==="build"||u==="out")continue;let p=We(r,u);try{if(Un(p).isDirectory()){let m=t(p,s+1);if(m)return m}}catch{}}}catch{}return null};return t(e,0)};async function I({baseDir:e,type:n="config",optional:o=!1}={}){let t=e??process.cwd(),r=`vitnode.${n}.ts`,s=ve(t,r);if(!s){if(o)return null;console.error(`Config file not found: ${r}`),console.error(`Searched recursively in ${t} (excluding node_modules, .*, dist, build, out)`),process.exit(1)}try{let a=Kn[n],p=(await On(import.meta.url,{interopDefault:!0}).import(s))[a];if(!p){if(o)return null;console.error(`Export "${a}" not found in ${s}`),process.exit(1)}return p}catch(a){if(o)return null;console.error("Failed to load config:",a),process.exit(1)}}import{existsSync as de,readdirSync as Ye,readFileSync as He}from"fs";import{join as G}from"path";import{stdin as Vn,stdout as Gn}from"process";import{createInterface as Wn}from"readline/promises";var Be=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),le=(e,n)=>{let o={...e};for(let t of Object.keys(n)){if(t==="__proto__")continue;let r=n[t],s=o[t];o[t]=Be(s)&&Be(r)?le(s,r):r}return o};import{existsSync as Ne}from"fs";import{join as ce,resolve as Je}from"path";function W(e){let n=e;for(;n!==Je(n,"..");){let t=ce(n,"turbo.json");if(Ne(t))return n;n=Je(n,"..")}let o=ce(e,"package.json");if(Ne(o))return e;throw new Error("\u274C Could not locate project root")}function ze(e,n){let o=process.cwd();return[ce(o,"node_modules",e),...n===o?[]:[ce(n,"node_modules",e)]].find(r=>Ne(r))??null}var Xe="@vitnode/core",B=({api:e,web:n})=>n||e?{api:e,web:n}:{api:!0,web:!0},ge=(e,n,{repoRoot:o,scope:t})=>{let r=ze(e,o);if(!r)return[];let s=G(r,"src","locales"),a=[];return t.web&&a.push(G(s,`${n}.json`)),t.api&&a.push(G(s,"api",`${n}.json`)),a},H=e=>{if(!de(e))return{};try{let n=JSON.parse(He(e,"utf-8"));return typeof n=="object"&&n!==null&&!Array.isArray(n)?n:{}}catch{return{}}},ue=(e,n="")=>typeof e!="object"||e===null||Array.isArray(e)?n?[n]:[]:Object.entries(e).flatMap(([o,t])=>ue(t,n?`${n}.${o}`:o)),Bn=(e,{locale:n,repoRoot:o,scope:t})=>ge(e,n,{repoRoot:o,scope:t}).map(H).reduce((r,s)=>le(r,s),{}),Jn=(e,n,o)=>H(G(e,"src","locales",n,`${o}.json`)),X=(e,{appDir:n,defaultLocale:o,repoRoot:t,scope:r})=>le(Bn(e,{locale:o,repoRoot:t,scope:r}),Jn(n,e,o)),b=e=>`\x1B[90m${e}\x1B[0m`,P=e=>`\x1B[31m${e}\x1B[0m`,T=e=>`\x1B[32m${e}\x1B[0m`,q=e=>`\x1B[36m${e}\x1B[0m`,J=e=>`\x1B[33m${e}\x1B[0m`,L="\x1B[34m[VitNode]\x1B[0m",pe=()=>Wn({input:Vn,output:Gn}),zn=async(e,n,o)=>{for(;;){let t=(await e.question(n)).trim(),r=o(t);if(r){console.log(P(` ${r}`));continue}return t}},Qe=async(e,n)=>{let o=(await e.question(n)).trim().toLowerCase();return o==="y"||o==="yes"},se=async({missingMessage:e,provided:n,question:o,rl:t,validate:r})=>{if(n!==void 0){let s=r(n);return s&&(console.error(P(s)),process.exit(1)),n}return t||(console.error(P(e)),process.exit(1)),zn(t,o,r)},fe=e=>{let n=G(e,"src"),o=G(n,"i18n.ts");if(de(o))return o;let t=new Set(["build","dist","node_modules","out"]),r=(s,a)=>{if(a>4||!de(s))return null;for(let l of Ye(s,{withFileTypes:!0})){if(l.name.startsWith(".")||t.has(l.name))continue;let u=G(s,l.name);if(l.isDirectory()){let p=r(u,a+1);if(p)return p}else if(l.name.endsWith(".ts")){let p=He(u,"utf-8");if(p.includes("defaultLocale")&&/locales\s*:\s*\[/.test(p))return u}}return null};return r(n,0)},Q=e=>{let n=G(e,"src","locales"),o=[];if(!de(n))return o;let t=(r,s)=>{for(let a of Ye(r,{withFileTypes:!0})){let l=G(r,a.name);a.isDirectory()?t(l,[...s,a.name]):a.name.endsWith(".json")&&s.length>0&&o.push({locale:a.name.replace(/\.json$/,""),path:l,pluginId:s.join("/")})}};return t(n,[]),o};var Qn="@vitnode/core",Z=8,Y=e=>`\x1B[90m${e}\x1B[0m`,ee=e=>`\x1B[31m${e}\x1B[0m`,Ce=e=>`\x1B[33m${e}\x1B[0m`,en=e=>`\x1B[32m${e}\x1B[0m`,on=(e,n="")=>typeof e!="object"||e===null||Array.isArray(e)?n?[n]:[]:Object.entries(e).flatMap(([o,t])=>on(t,n?`${n}.${o}`:o)),nn=e=>{if(!tn(e))return null;try{return on(JSON.parse(Hn(e,"utf-8")))}catch(n){return console.error(ee(` Could not parse ${e}: ${String(n)}`)),[]}},Zn=e=>{let n=Ze(e,"src","locales"),o=[];if(!tn(n))return o;let t=(r,s)=>{for(let a of Yn(r,{withFileTypes:!0})){let l=Ze(r,a.name);a.isDirectory()?t(l,[...s,a.name]):a.name.endsWith(".json")&&s.length>0&&o.push({locale:a.name.replace(/\.json$/,""),path:l,pluginId:s.join("/")})}};return t(n,[]),o},rn=async e=>{let n=e==="--ci",o=process.cwd(),t=W(o),r=await I({optional:!0}),s=await I({optional:!0,type:"api.config"}),a=await I({optional:!0,type:"server.config"}),l=r??s;l||(console.error(ee("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let u=B({api:s!==null,web:r!==null}),p=l.i18n?.defaultLocale??"en",m=(l.i18n?.locales??[]).map(d=>d.code),S=a?.messages??l.i18n?.messages??{},x=[...new Set([Qn,...[r,s].flatMap(d=>(d?.plugins??[]).map(R=>R.pluginId))])],y=Zn(o),v=[...new Set([...m,...y.map(d=>d.locale)])].filter(d=>d!==p);console.log(`\x1B[34m[VitNode]\x1B[0m Checking ${x.length} package(s) against ${v.length||"no"} extra locale(s), default ${Y(p)}.`);let N=0,A=0,g=0,h=new Set(m),f=(d,R)=>{let w=ge(d,R,{repoRoot:t,scope:u}).map(nn).filter(C=>C!==null),E=y.find(C=>C.pluginId===d&&C.locale===R),F=E?nn(E.path):null;return w.length===0&&!F?null:[...new Set([...w.flat(),...F??[]])]};for(let d of x){let R=f(d,p);if(!R){ge(d,p,{repoRoot:t,scope:u}).length>0?console.log(Y(` ${d}: no strings for this app - nothing to translate`)):(console.log(Ce(` ${d}: no "${p}" messages found - is the package installed?`)),A+=1);continue}for(let w of v){let E=f(d,w);if(!E){h.has(w)?(g+=1,A+=1,console.log(ee(` ${d} \xB7 ${w}: no locale file - create src/locales/${d}/${w}.json`))):console.log(Y(` ${d} \xB7 ${w}: not translated, falls back to ${p}`));continue}let F=new Set(R),C=new Set(E),j=R.filter(M=>!C.has(M)),D=E.filter(M=>!F.has(M));if(j.length===0&&D.length===0){console.log(en(` ${d} \xB7 ${w}: complete`));continue}if(j.length>0){N+=j.length,A+=1,console.log(Ce(` ${d} \xB7 ${w}: ${j.length} key(s) missing, falling back to ${p}`));for(let M of j.slice(0,Z))console.log(Y(` ${M}`));j.length>Z&&console.log(Y(` ... and ${j.length-Z} more`))}if(D.length>0){A+=1,console.log(Ce(` ${d} \xB7 ${w}: ${D.length} key(s) unknown to ${p} - typo or leftover?`));for(let M of D.slice(0,Z))console.log(Y(` ${M}`));D.length>Z&&console.log(Y(` ... and ${D.length-Z} more`))}}}for(let d of y){let R=S[d.locale]?.[d.pluginId],w=Xn(o,d.path);R?m.length>0&&!m.includes(d.locale)&&(g+=1,A+=1,console.log(ee(` ${w} uses a locale that is not in \`i18n.locales\`.`))):(g+=1,A+=1,console.log(ee(` ${w} is never loaded - add \`"${d.pluginId}": () => import("./${d.pluginId}/${d.locale}.json")\` under \`"${d.locale}"\` in \`src/locales/app.ts\`.`)))}A===0&&(console.log(en(" Everything is translated. Nice.")),process.exit(0)),console.log(`\x1B[34m[VitNode]\x1B[0m ${A} issue(s)`+(g>0?ee(`, ${g} error(s)`):"")+`, ${N} untranslated key(s).`),process.exit(g>0||n?1:0)};import{existsSync as sn,mkdirSync as et,readFileSync as an,writeFileSync as me}from"fs";import{dirname as nt,join as he,relative as ie}from"path";var tt=/^[a-z]{2,3}(-[A-Za-z]{2,4})?$/,ye=(e,n,o,t="./locales")=>`${e}"${n}": () => import("${t}/${n}/${o}.json"),`,ne=e=>JSON.stringify(e),Ae=(e,n)=>/^[^\S\n]*\n/.test(e.slice(n)),ke=he("src","locales","app.ts"),ot=(e,{code:n,pluginIds:o})=>{let t=/\bappMessages\s*(?::[^=]*)?=\s*\{/.exec(e);if(t?.index===void 0)return null;let r=t.index+t[0].length,s=o.map(l=>ye(" ",l,n,".")).join(`
5
+ import{config as po}from"dotenv";import{spawn as Tn}from"child_process";var z=async(e,n=[])=>await new Promise((o,t)=>{let r=Tn(e,n,{stdio:"inherit",shell:!0,env:process.env});r.on("error",s=>{t(s)}),r.on("close",s=>{s!==0?t(new Error(`Command failed with exit code ${s}`)):o(!0)})});var Ke=async()=>{await z("tsc",["-p","tsconfig.build.json"]),await z("swc",["src","-d","dist","--config-file",".swcrc","--copy-files"]),await z("tsc-alias",["-p","tsconfig.build.json"])};var $e={build:{flags:[],positional:0,usage:"vitnode build"},"db:prepare":{flags:[],positional:0,usage:"vitnode db:prepare"},dev:{flags:[],positional:0,usage:"vitnode dev"},"i18n:check":{flags:["--ci"],positional:0,usage:"vitnode i18n:check [--ci]"},"i18n:create":{flags:[],positional:"any",usage:'vitnode i18n:create <code> "<name>"'},"i18n:delete":{flags:[],positional:1,usage:"vitnode i18n:delete <code>"},"i18n:update":{flags:[],positional:0,usage:"vitnode i18n:update"},"i18n:update:ai":{flags:["--concurrency","--model"],positional:"any",usage:"vitnode i18n:update:ai [code...] [--model <id>] [--concurrency <n>]",valueFlags:["--concurrency","--model"]},migrate:{flags:["--generate"],positional:0,usage:"vitnode migrate [--generate]"}},Rn=()=>Object.keys($e).sort(),Ln=e=>e!==void 0&&Object.hasOwn($e,e),En=e=>e.map(n=>`"${n}"`).join(", "),Pn=e=>{let n=e.indexOf("=");return n===-1?[e,void 0]:[e.slice(0,n),e.slice(n+1)]},jn=e=>e.flags.length===0?"It accepts no flags.":`Allowed: ${[...e.flags].sort().join(", ")}.`,Mn=(e,n,o)=>{let t=`for command "${e}"`,r=`Usage: ${n.usage}`;if(n.flags.length===0&&n.positional===0)return o.length===0?null:`Command "${e}" accepts no arguments, but got ${En(o)}. ${r}`;let s=n.valueFlags??[],a=new Set,l=0;for(let u=0;u<o.length;u+=1){let p=o[u];if(!p.startsWith("-")){l+=1;continue}let[m,S]=Pn(p);if(!n.flags.includes(m))return`Invalid argument "${p}" ${t}. ${jn(n)} ${r}`;if(a.has(m))return`Argument "${m}" is repeated ${t}. ${r}`;if(a.add(m),!s.includes(m)){if(S!==void 0)return`Argument "${m}" ${t} takes no value. ${r}`;continue}if(S!==void 0){if(S==="")return`Argument "${m}" ${t} needs a value. ${r}`;continue}let x=o[u+1];if(x===void 0||x.startsWith("-"))return`Argument "${m}" ${t} needs a value. ${r}`;u+=1}return n.positional!=="any"&&l>n.positional?n.positional===0?`Command "${e}" accepts no positional arguments, but got ${String(l)}. ${r}`:`Command "${e}" accepts at most ${String(n.positional)} argument, but got ${String(l)}. ${r}`:null},Ve=e=>{let[n,...o]=e,t=`Available commands: ${Rn().join(", ")}.`;if(n===void 0||n==="")return{message:`No command given. ${t}`,ok:!1};if(!Ln(n))return{message:`Command not found: "${n}". ${t}`,ok:!1};let r=Mn(n,$e[n],o);return r===null?{args:o,command:n,ok:!0}:{message:r,ok:!1}};import{spawn as Dn}from"child_process";var _e=(e,n)=>{let o=Dn(e,n,{stdio:"inherit",shell:process.platform==="win32",env:process.env});return o.on("error",t=>{console.error(`\x1B[31m${e} failed:\x1B[0m`,t)}),o.on("exit",t=>{t!==null&&t!==0&&console.error(`\x1B[31m${e} exited with code ${t}\x1B[0m`)}),o},Ge=({initMessage:e})=>{let n=[_e("tsc",["-w","-p","tsconfig.build.json","--preserveWatchOutput"]),_e("swc",["src","-d","dist","--config-file",".swcrc","--copy-files","-w"]),_e("tsc-alias",["-w","-p","tsconfig.build.json"])],o=()=>{n.forEach(t=>t.kill()),process.exit(0)};process.on("SIGINT",o),process.on("SIGTERM",o),console.log(`${e} \x1B[34mWatching plugin sources...\x1B[0m`)};import{existsSync as tn,readdirSync as Yn,readFileSync as Hn}from"fs";import{join as Ze,relative as Xn}from"path";import{createJiti as On}from"jiti";import{existsSync as Fn,readdirSync as qn,statSync as Un}from"fs";import{join as We}from"path";var Kn={"api.config":"vitNodeApiConfig",config:"vitNodeConfig","server.config":"vitNodeServerConfig"},ve=(e,n,o=4)=>{let t=(r,s)=>{if(s>o)return null;try{let a=We(r,"src",n);if(Fn(a))return a;let l=qn(r);for(let u of l){if(u==="node_modules"||u.startsWith(".")||u==="dist"||u==="build"||u==="out")continue;let p=We(r,u);try{if(Un(p).isDirectory()){let m=t(p,s+1);if(m)return m}}catch{}}}catch{}return null};return t(e,0)};async function I({baseDir:e,type:n="config",optional:o=!1}={}){let t=e??process.cwd(),r=`vitnode.${n}.ts`,s=ve(t,r);if(!s){if(o)return null;console.error(`Config file not found: ${r}`),console.error(`Searched recursively in ${t} (excluding node_modules, .*, dist, build, out)`),process.exit(1)}try{let a=Kn[n],p=(await On(import.meta.url,{interopDefault:!0}).import(s))[a];if(!p){if(o)return null;console.error(`Export "${a}" not found in ${s}`),process.exit(1)}return p}catch(a){if(o)return null;console.error("Failed to load config:",a),process.exit(1)}}import{existsSync as de,readdirSync as Ye,readFileSync as He}from"fs";import{join as G}from"path";import{stdin as Vn,stdout as Gn}from"process";import{createInterface as Wn}from"readline/promises";var Be=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),le=(e,n)=>{let o={...e};for(let t of Object.keys(n)){if(t==="__proto__")continue;let r=n[t],s=o[t];o[t]=Be(s)&&Be(r)?le(s,r):r}return o};import{existsSync as Ne}from"fs";import{join as ce,resolve as Je}from"path";function W(e){let n=e;for(;n!==Je(n,"..");){let t=ce(n,"turbo.json");if(Ne(t))return n;n=Je(n,"..")}let o=ce(e,"package.json");if(Ne(o))return e;throw new Error("\u274C Could not locate project root")}function ze(e,n){let o=process.cwd();return[ce(o,"node_modules",e),...n===o?[]:[ce(n,"node_modules",e)]].find(r=>Ne(r))??null}var Xe="@vitnode/core",B=({api:e,web:n})=>n||e?{api:e,web:n}:{api:!0,web:!0},ge=(e,n,{repoRoot:o,scope:t})=>{let r=ze(e,o);if(!r)return[];let s=G(r,"src","locales"),a=[];return t.web&&a.push(G(s,`${n}.json`)),t.api&&a.push(G(s,"api",`${n}.json`)),a},H=e=>{if(!de(e))return{};try{let n=JSON.parse(He(e,"utf-8"));return typeof n=="object"&&n!==null&&!Array.isArray(n)?n:{}}catch{return{}}},ue=(e,n="")=>typeof e!="object"||e===null||Array.isArray(e)?n?[n]:[]:Object.entries(e).flatMap(([o,t])=>ue(t,n?`${n}.${o}`:o)),Bn=(e,{locale:n,repoRoot:o,scope:t})=>ge(e,n,{repoRoot:o,scope:t}).map(H).reduce((r,s)=>le(r,s),{}),Jn=(e,n,o)=>H(G(e,"src","locales",n,`${o}.json`)),X=(e,{appDir:n,defaultLocale:o,repoRoot:t,scope:r})=>le(Bn(e,{locale:o,repoRoot:t,scope:r}),Jn(n,e,o)),w=e=>`\x1B[90m${e}\x1B[0m`,P=e=>`\x1B[31m${e}\x1B[0m`,T=e=>`\x1B[32m${e}\x1B[0m`,q=e=>`\x1B[36m${e}\x1B[0m`,J=e=>`\x1B[33m${e}\x1B[0m`,L="\x1B[34m[VitNode]\x1B[0m",pe=()=>Wn({input:Vn,output:Gn}),zn=async(e,n,o)=>{for(;;){let t=(await e.question(n)).trim(),r=o(t);if(r){console.log(P(` ${r}`));continue}return t}},Qe=async(e,n)=>{let o=(await e.question(n)).trim().toLowerCase();return o==="y"||o==="yes"},se=async({missingMessage:e,provided:n,question:o,rl:t,validate:r})=>{if(n!==void 0){let s=r(n);return s&&(console.error(P(s)),process.exit(1)),n}return t||(console.error(P(e)),process.exit(1)),zn(t,o,r)},fe=e=>{let n=G(e,"src"),o=G(n,"i18n.ts");if(de(o))return o;let t=new Set(["build","dist","node_modules","out"]),r=(s,a)=>{if(a>4||!de(s))return null;for(let l of Ye(s,{withFileTypes:!0})){if(l.name.startsWith(".")||t.has(l.name))continue;let u=G(s,l.name);if(l.isDirectory()){let p=r(u,a+1);if(p)return p}else if(l.name.endsWith(".ts")){let p=He(u,"utf-8");if(p.includes("defaultLocale")&&/locales\s*:\s*\[/.test(p))return u}}return null};return r(n,0)},Q=e=>{let n=G(e,"src","locales"),o=[];if(!de(n))return o;let t=(r,s)=>{for(let a of Ye(r,{withFileTypes:!0})){let l=G(r,a.name);a.isDirectory()?t(l,[...s,a.name]):a.name.endsWith(".json")&&s.length>0&&o.push({locale:a.name.replace(/\.json$/,""),path:l,pluginId:s.join("/")})}};return t(n,[]),o};var Qn="@vitnode/core",Z=8,Y=e=>`\x1B[90m${e}\x1B[0m`,ee=e=>`\x1B[31m${e}\x1B[0m`,Ce=e=>`\x1B[33m${e}\x1B[0m`,en=e=>`\x1B[32m${e}\x1B[0m`,on=(e,n="")=>typeof e!="object"||e===null||Array.isArray(e)?n?[n]:[]:Object.entries(e).flatMap(([o,t])=>on(t,n?`${n}.${o}`:o)),nn=e=>{if(!tn(e))return null;try{return on(JSON.parse(Hn(e,"utf-8")))}catch(n){return console.error(ee(` Could not parse ${e}: ${String(n)}`)),[]}},Zn=e=>{let n=Ze(e,"src","locales"),o=[];if(!tn(n))return o;let t=(r,s)=>{for(let a of Yn(r,{withFileTypes:!0})){let l=Ze(r,a.name);a.isDirectory()?t(l,[...s,a.name]):a.name.endsWith(".json")&&s.length>0&&o.push({locale:a.name.replace(/\.json$/,""),path:l,pluginId:s.join("/")})}};return t(n,[]),o},rn=async e=>{let n=e==="--ci",o=process.cwd(),t=W(o),r=await I({optional:!0}),s=await I({optional:!0,type:"api.config"}),a=await I({optional:!0,type:"server.config"}),l=r??s;l||(console.error(ee("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let u=B({api:s!==null,web:r!==null}),p=l.i18n?.defaultLocale??"en",m=(l.i18n?.locales??[]).map(d=>d.code),S=a?.messages??l.i18n?.messages??{},x=[...new Set([Qn,...[r,s].flatMap(d=>(d?.plugins??[]).map(R=>R.pluginId))])],y=Zn(o),v=[...new Set([...m,...y.map(d=>d.locale)])].filter(d=>d!==p);console.log(`\x1B[34m[VitNode]\x1B[0m Checking ${x.length} package(s) against ${v.length||"no"} extra locale(s), default ${Y(p)}.`);let N=0,A=0,g=0,h=new Set(m),f=(d,R)=>{let b=ge(d,R,{repoRoot:t,scope:u}).map(nn).filter(C=>C!==null),E=y.find(C=>C.pluginId===d&&C.locale===R),F=E?nn(E.path):null;return b.length===0&&!F?null:[...new Set([...b.flat(),...F??[]])]};for(let d of x){let R=f(d,p);if(!R){ge(d,p,{repoRoot:t,scope:u}).length>0?console.log(Y(` ${d}: no strings for this app - nothing to translate`)):(console.log(Ce(` ${d}: no "${p}" messages found - is the package installed?`)),A+=1);continue}for(let b of v){let E=f(d,b);if(!E){h.has(b)?(g+=1,A+=1,console.log(ee(` ${d} \xB7 ${b}: no locale file - create src/locales/${d}/${b}.json`))):console.log(Y(` ${d} \xB7 ${b}: not translated, falls back to ${p}`));continue}let F=new Set(R),C=new Set(E),j=R.filter(M=>!C.has(M)),D=E.filter(M=>!F.has(M));if(j.length===0&&D.length===0){console.log(en(` ${d} \xB7 ${b}: complete`));continue}if(j.length>0){N+=j.length,A+=1,console.log(Ce(` ${d} \xB7 ${b}: ${j.length} key(s) missing, falling back to ${p}`));for(let M of j.slice(0,Z))console.log(Y(` ${M}`));j.length>Z&&console.log(Y(` ... and ${j.length-Z} more`))}if(D.length>0){A+=1,console.log(Ce(` ${d} \xB7 ${b}: ${D.length} key(s) unknown to ${p} - typo or leftover?`));for(let M of D.slice(0,Z))console.log(Y(` ${M}`));D.length>Z&&console.log(Y(` ... and ${D.length-Z} more`))}}}for(let d of y){let R=S[d.locale]?.[d.pluginId],b=Xn(o,d.path);R?m.length>0&&!m.includes(d.locale)&&(g+=1,A+=1,console.log(ee(` ${b} uses a locale that is not in \`i18n.locales\`.`))):(g+=1,A+=1,console.log(ee(` ${b} is never loaded - add \`"${d.pluginId}": () => import("./${d.pluginId}/${d.locale}.json")\` under \`"${d.locale}"\` in \`src/locales/app.ts\`.`)))}A===0&&(console.log(en(" Everything is translated. Nice.")),process.exit(0)),console.log(`\x1B[34m[VitNode]\x1B[0m ${A} issue(s)`+(g>0?ee(`, ${g} error(s)`):"")+`, ${N} untranslated key(s).`),process.exit(g>0||n?1:0)};import{existsSync as sn,mkdirSync as et,readFileSync as an,writeFileSync as me}from"fs";import{dirname as nt,join as he,relative as ie}from"path";var tt=/^[a-z]{2,3}(-[A-Za-z]{2,4})?$/,ye=(e,n,o,t="./locales")=>`${e}"${n}": () => import("${t}/${n}/${o}.json"),`,ne=e=>JSON.stringify(e),Ae=(e,n)=>/^[^\S\n]*\n/.test(e.slice(n)),ke=he("src","locales","app.ts"),ot=(e,{code:n,pluginIds:o})=>{let t=/\bappMessages\s*(?::[^=]*)?=\s*\{/.exec(e);if(t?.index===void 0)return null;let r=t.index+t[0].length,s=o.map(l=>ye(" ",l,n,".")).join(`
6
6
  `),a=`
7
7
  "${n}": {
8
8
  ${s}
@@ -10,7 +10,7 @@ ${s}
10
10
  `)+e.slice(r)},ln=e=>{let n=/\bi18n\s*[:=]\s*\{/.exec(e);if(n?.index===void 0)return null;let o=n.index+n[0].length-1,t=0;for(let r=o;r<e.length;r+=1)if(e[r]==="{")t+=1;else if(e[r]==="}"&&(t-=1,t===0))return{end:r,start:o};return null},Se=(e,n,o,t)=>{e.lastIndex=o;let r=e.exec(n);return r&&r.index<t?r:null},rt=(e,{code:n,name:o})=>{let t=ln(e);if(!t)return null;let r=Se(/^([^\S\n]*)locales\s*:\s*\[/gm,e,t.start,t.end);if(!r)return null;let s=`${r[1]} `,a=r.index+r[0].length,l=`{ code: ${ne(n)}, name: ${ne(o)} },`,u=Ae(e,a)?`
11
11
  ${s}${l}`:`
12
12
  ${s}${l}
13
- ${s}`;return e.slice(0,a)+u+e.slice(a)},st=(e,n)=>{let o=0;for(let t=n;t<e.length;t+=1)if(e[t]==="[")o+=1;else if(e[t]==="]"&&(o-=1,o===0))return t;return-1},it=(e,{code:n,pluginIds:o})=>{let t=ln(e);if(!t)return null;let r=Se(/^([^\S\n]*)messages\s*:\s*\{/gm,e,t.start,t.end);if(r){let N=r[1],A=`${N} `,g=`${A} `,h=o.map(w=>ye(g,w,n)).join(`
13
+ ${s}`;return e.slice(0,a)+u+e.slice(a)},st=(e,n)=>{let o=0;for(let t=n;t<e.length;t+=1)if(e[t]==="[")o+=1;else if(e[t]==="]"&&(o-=1,o===0))return t;return-1},it=(e,{code:n,pluginIds:o})=>{let t=ln(e);if(!t)return null;let r=Se(/^([^\S\n]*)messages\s*:\s*\{/gm,e,t.start,t.end);if(r){let N=r[1],A=`${N} `,g=`${A} `,h=o.map(b=>ye(g,b,n)).join(`
14
14
  `),f=r.index+r[0].length,d=`
15
15
  ${A}"${n}": {
16
16
  ${h}
@@ -25,11 +25,7 @@ ${u}},`;return e.slice(0,x)+v+e.slice(x)},at=({code:e,defaultLocale:n,locales:o,
25
25
  `),a=r.map(l=>ye(" ",l,e)).join(`
26
26
  `);return`import type { VitNodeI18nConfig } from "@vitnode/core/lib/i18n/types";
27
27
 
28
- /**
29
- * Shared by \`vitnode.config.ts\` (web) and \`vitnode.api.config.ts\` (API) so the
30
- * site and its emails agree on which languages exist. Packages ship their own
31
- * languages - only what this app adds or reworks needs a file here.
32
- */
28
+
33
29
  export const i18n = {
34
30
  defaultLocale: "${n}",
35
31
  locales: [
@@ -42,35 +38,35 @@ ${a}
42
38
  },
43
39
  } satisfies VitNodeI18nConfig;
44
40
  `},cn=async()=>{let e=process.cwd(),n=await I({optional:!0}),o=await I({optional:!0,type:"api.config"}),t=n??o;t||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=B({api:o!==null,web:n!==null}),s=n===null,a=t.i18n?.defaultLocale??"en",l=(t.i18n?.locales??[]).map(i=>({code:i.code,name:i.name})),u=new Set([a,...l.map(i=>i.code)]),p=[...new Set([Xe,...[n,o].flatMap(i=>(i?.plugins??[]).map(c=>c.pluginId))])].sort((i,c)=>i.localeCompare(c)),m=i=>i?tt.test(i)?u.has(i)?`"${i}" already exists in this app.`:null:"Use an ISO code like `pl`, `de`, or `pt-BR`.":"A locale code is required.",S=i=>i?null:"A language name is required.",[x,...y]=process.argv.slice(3),v=y.join(" ").trim()||void 0,g=(process.stdin.isTTY??!1)&&(x===void 0||v===void 0)?pe():null,h='Run: vitnode i18n:create <code> "<name>"';g&&console.log(`${L} Add a language. Press Ctrl+C to abort.
45
- `);let f,d;try{f=await se({missingMessage:`Missing locale code. ${h}`,provided:x,question:q("? Locale code (e.g. pl, de, pt-BR): "),rl:g,validate:m}),d=await se({missingMessage:`Missing language name. ${h}`,provided:v,question:q("? Language name (e.g. Polski, Deutsch): "),rl:g,validate:S})}finally{g?.close()}console.log();let R=e;try{R=W(e)}catch{}let w=[],E=[],F=[],C=[];for(let i of p){let c=he(e,"src","locales",i,`${f}.json`);if(sn(c)){E.push(ie(e,c)),C.push(i);continue}let $=X(i,{appDir:e,defaultLocale:a,repoRoot:R,scope:r});if(Object.keys($).length===0){F.push(i);continue}et(nt(c),{recursive:!0}),me(c,`${JSON.stringify($,null,2)}
46
- `),w.push(ie(e,c)),C.push(i)}for(let i of w)console.log(T(` created ${i}`));for(let i of E)console.log(b(` exists ${i}`));for(let i of F)console.log(b(` skipped ${i} (no strings for this app)`));let j=he(e,ke),D=!1;if(sn(j)&&C.length>0){let i=ot(an(j,"utf-8"),{code:f,pluginIds:C});i&&(me(j,i),console.log(T(` updated ${ke}`)),D=!0)}let M=fe(e);if(M){let i=an(M,"utf-8"),c=rt(i,{code:f,name:d}),$=c&&!D&&C.length>0?it(c,{code:f,pluginIds:C}):c;if($?(me(M,$),console.log(T(` updated ${ie(e,M)}`))):console.log(`
41
+ `);let f,d;try{f=await se({missingMessage:`Missing locale code. ${h}`,provided:x,question:q("? Locale code (e.g. pl, de, pt-BR): "),rl:g,validate:m}),d=await se({missingMessage:`Missing language name. ${h}`,provided:v,question:q("? Language name (e.g. Polski, Deutsch): "),rl:g,validate:S})}finally{g?.close()}console.log();let R=e;try{R=W(e)}catch{}let b=[],E=[],F=[],C=[];for(let i of p){let c=he(e,"src","locales",i,`${f}.json`);if(sn(c)){E.push(ie(e,c)),C.push(i);continue}let $=X(i,{appDir:e,defaultLocale:a,repoRoot:R,scope:r});if(Object.keys($).length===0){F.push(i);continue}et(nt(c),{recursive:!0}),me(c,`${JSON.stringify($,null,2)}
42
+ `),b.push(ie(e,c)),C.push(i)}for(let i of b)console.log(T(` created ${i}`));for(let i of E)console.log(w(` exists ${i}`));for(let i of F)console.log(w(` skipped ${i} (no strings for this app)`));let j=he(e,ke),D=!1;if(sn(j)&&C.length>0){let i=ot(an(j,"utf-8"),{code:f,pluginIds:C});i&&(me(j,i),console.log(T(` updated ${ke}`)),D=!0)}let M=fe(e);if(M){let i=an(M,"utf-8"),c=rt(i,{code:f,name:d}),$=c&&!D&&C.length>0?it(c,{code:f,pluginIds:C}):c;if($?(me(M,$),console.log(T(` updated ${ie(e,M)}`))):console.log(`
47
43
  ${L} Couldn't edit ${ie(e,M)} automatically. Add:
48
- `+b(` locales: [{ code: ${ne(f)}, name: ${ne(d)} }, /* ... */]`)),!D&&C.length>0){let _=C.map(k=>` "${k}": () => import("./${k}/${f}.json"),`).join(`
44
+ `+w(` locales: [{ code: ${ne(f)}, name: ${ne(d)} }, /* ... */]`)),!D&&C.length>0){let _=C.map(k=>` "${k}": () => import("./${k}/${f}.json"),`).join(`
49
45
  `);console.log(`
50
46
  ${L} And register the files in ${ke}:
51
- `+b(` "${f}": {
47
+ `+w(` "${f}": {
52
48
  ${_}
53
49
  },`))}}else{let i=he(e,"src","i18n.ts");me(i,at({code:f,defaultLocale:a,locales:l,name:d,pluginIds:C})),console.log(T(` created ${ie(e,i)}`));let c=s?"buildApiConfig":"buildConfig";console.log(`
54
50
  ${L} Import it into your config so the app picks it up:
55
- `+b(` import { i18n } from "./i18n";
56
- `)+b(` ${c}({ i18n, /* ... */ });`))}console.log(`
57
- ${L} ${T(d)} (${f}) added. Translate the files above, then run ${q("vitnode i18n:check")}.`),process.exit(0)};import{existsSync as lt,readdirSync as ct,readFileSync as dt,rmdirSync as gt,unlinkSync as ut,writeFileSync as pt}from"fs";import{dirname as dn,join as ft,relative as we}from"path";var gn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),mt=(e,n)=>{let o=0;for(let t=n;t<e.length;t+=1)if(e[t]==="[")o+=1;else if(e[t]==="]"&&(o-=1,o===0))return t;return-1},ht=(e,n)=>{let o=/locales\s*:\s*\[/.exec(e);if(o?.index===void 0)return e;let t=e.indexOf("[",o.index),r=mt(e,t);if(r===-1)return e;let s=new RegExp(`[^\\S\\n]*\\{[^{}]*\\bcode\\s*:\\s*["']${gn(n)}["'][^{}]*\\}[^\\S\\n]*,?\\n?`),a=e.slice(t,r+1),l=a.replace(s,"");return l===a?e:e.slice(0,t)+l+e.slice(r+1)},yt=(e,n)=>{let o=gn(n),t=new RegExp(`[^\\S\\n]*["']?${o}["']?\\s*:\\s*\\{[^{}]*\\}[^\\S\\n]*,?\\n?`);return e.replace(t,"")},un=async()=>{let e=process.cwd(),o=await I({optional:!0})??await I({optional:!0,type:"api.config"});o||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let t=o.i18n?.defaultLocale??"en",r=(o.i18n?.locales??[]).map(g=>({code:g.code,name:g.name})),s=Q(e),a=new Set([...r.map(g=>g.code),...s.map(g=>g.locale)]),l=g=>g?g==="en"?"English is the built-in fallback and can't be removed.":g===t?`"${t}" is the default locale - change \`defaultLocale\` before removing it.`:a.has(g)?null:`No language "${g}" found in this app.`:"A locale code is required.",u=process.argv[3],m=process.stdin.isTTY??!1?pe():null,S=fe(e),x=g=>{let h=r.find(f=>f.code===g)?.name;return h?`${h} (${g})`:g},y="",v=!0;try{if(y=await se({missingMessage:"Missing locale code. Run: vitnode i18n:delete <code>",provided:u,question:q("? Locale code to remove: "),rl:m,validate:l}),m){console.log(`
58
- ${L} About to remove ${J(x(y))}:`);for(let g of s.filter(h=>h.locale===y))console.log(b(` delete ${we(e,g.path)}`));S&&console.log(b(` update ${we(e,S)}`)),v=await Qe(m,q(`
59
- ? Remove it? [y/N] `))}}finally{m?.close()}v||(console.log(b(`
60
- Aborted, nothing was removed.`)),process.exit(0)),console.log();let N=ft(e,"src","locales"),A=g=>{let h=g;for(;h.startsWith(N)&&h!==N&&(lt(h)&&ct(h).length===0);)gt(h),h=dn(h)};for(let g of s.filter(h=>h.locale===y))ut(g.path),console.log(T(` deleted ${we(e,g.path)}`)),A(dn(g.path));if(S){let g=dt(S,"utf-8"),h=yt(ht(g,y),y);h!==g&&(pt(S,h),console.log(T(` updated ${we(e,S)}`)))}console.log(`
61
- ${L} ${T(x(y))} removed.`),process.exit(0)};import{checkbox as xt,select as $t}from"@inquirer/prompts";import{generateText as _t,Output as vt}from"ai";import{config as Nt}from"dotenv";import{writeFileSync as Ct}from"fs";import{dirname as Le,join as kt,relative as St}from"path";import{z as At}from"zod";import{writeFileSync as wt}from"fs";import{relative as bt}from"path";var Ie=8,Te=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Re=(e,n)=>{let o=(t,r)=>{if(Te(t)){let s=Te(r)?r:{};return Object.fromEntries(Object.entries(t).map(([a,l])=>[a,o(l,s[a])]))}return r!==void 0&&!Te(r)?r:t};return o(e,n)},pn=async()=>{let e=process.cwd(),n=await I({optional:!0}),o=await I({optional:!0,type:"api.config"}),t=n??o;t||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=B({api:o!==null,web:n!==null}),s=t.i18n?.defaultLocale??"en",a=e;try{a=W(e)}catch{}let l=Q(e).filter(y=>y.locale!==s);l.length===0&&(console.log(`${L} No translation files to update.`),process.exit(0));let u=new Map,p=y=>{let v=u.get(y);if(v)return v;let N=X(y,{appDir:e,defaultLocale:s,repoRoot:a,scope:r});return u.set(y,N),N};console.log(`${L} Syncing ${l.length} translation file(s) against ${b(s)}.`);let m=0,S=0,x=0;for(let y of l){let v=bt(e,y.path),N=p(y.pluginId);if(Object.keys(N).length===0){console.log(b(` skipped ${v} - no "${s}" source strings`));continue}let A=H(y.path),g=new Set(ue(N)),h=new Set(ue(A)),f=[...g].filter(w=>!h.has(w)),d=[...h].filter(w=>!g.has(w));if(f.length===0&&d.length===0){console.log(b(` ok ${v}`));continue}wt(y.path,`${JSON.stringify(Re(N,A),null,2)}
62
- `),x+=1,m+=f.length,S+=d.length,console.log(`${T(` updated ${v}`)} ${b(`+${f.length} -${d.length}`)}`);for(let w of f.slice(0,Ie))console.log(T(` + ${w}`));for(let w of d.slice(0,Ie-f.length))console.log(P(` - ${w}`));let R=Math.min(f.length,Ie)+d.length;f.length+d.length>R&&console.log(b(` ... and ${f.length+d.length-R} more`))}x===0&&(console.log(T(" Every translation is already in sync.")),process.exit(0)),console.log(`
51
+ `+w(` import { i18n } from "./i18n";
52
+ `)+w(` ${c}({ i18n, /* ... */ });`))}console.log(`
53
+ ${L} ${T(d)} (${f}) added. Translate the files above, then run ${q("vitnode i18n:check")}.`),process.exit(0)};import{existsSync as lt,readdirSync as ct,readFileSync as dt,rmdirSync as gt,unlinkSync as ut,writeFileSync as pt}from"fs";import{dirname as dn,join as ft,relative as be}from"path";var gn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),mt=(e,n)=>{let o=0;for(let t=n;t<e.length;t+=1)if(e[t]==="[")o+=1;else if(e[t]==="]"&&(o-=1,o===0))return t;return-1},ht=(e,n)=>{let o=/locales\s*:\s*\[/.exec(e);if(o?.index===void 0)return e;let t=e.indexOf("[",o.index),r=mt(e,t);if(r===-1)return e;let s=new RegExp(`[^\\S\\n]*\\{[^{}]*\\bcode\\s*:\\s*["']${gn(n)}["'][^{}]*\\}[^\\S\\n]*,?\\n?`),a=e.slice(t,r+1),l=a.replace(s,"");return l===a?e:e.slice(0,t)+l+e.slice(r+1)},yt=(e,n)=>{let o=gn(n),t=new RegExp(`[^\\S\\n]*["']?${o}["']?\\s*:\\s*\\{[^{}]*\\}[^\\S\\n]*,?\\n?`);return e.replace(t,"")},un=async()=>{let e=process.cwd(),o=await I({optional:!0})??await I({optional:!0,type:"api.config"});o||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let t=o.i18n?.defaultLocale??"en",r=(o.i18n?.locales??[]).map(g=>({code:g.code,name:g.name})),s=Q(e),a=new Set([...r.map(g=>g.code),...s.map(g=>g.locale)]),l=g=>g?g==="en"?"English is the built-in fallback and can't be removed.":g===t?`"${t}" is the default locale - change \`defaultLocale\` before removing it.`:a.has(g)?null:`No language "${g}" found in this app.`:"A locale code is required.",u=process.argv[3],m=process.stdin.isTTY??!1?pe():null,S=fe(e),x=g=>{let h=r.find(f=>f.code===g)?.name;return h?`${h} (${g})`:g},y="",v=!0;try{if(y=await se({missingMessage:"Missing locale code. Run: vitnode i18n:delete <code>",provided:u,question:q("? Locale code to remove: "),rl:m,validate:l}),m){console.log(`
54
+ ${L} About to remove ${J(x(y))}:`);for(let g of s.filter(h=>h.locale===y))console.log(w(` delete ${be(e,g.path)}`));S&&console.log(w(` update ${be(e,S)}`)),v=await Qe(m,q(`
55
+ ? Remove it? [y/N] `))}}finally{m?.close()}v||(console.log(w(`
56
+ Aborted, nothing was removed.`)),process.exit(0)),console.log();let N=ft(e,"src","locales"),A=g=>{let h=g;for(;h.startsWith(N)&&h!==N&&(lt(h)&&ct(h).length===0);)gt(h),h=dn(h)};for(let g of s.filter(h=>h.locale===y))ut(g.path),console.log(T(` deleted ${be(e,g.path)}`)),A(dn(g.path));if(S){let g=dt(S,"utf-8"),h=yt(ht(g,y),y);h!==g&&(pt(S,h),console.log(T(` updated ${be(e,S)}`)))}console.log(`
57
+ ${L} ${T(x(y))} removed.`),process.exit(0)};import{checkbox as xt,select as $t}from"@inquirer/prompts";import{generateText as _t,Output as vt}from"ai";import{config as Nt}from"dotenv";import{writeFileSync as Ct}from"fs";import{dirname as Le,join as kt,relative as St}from"path";import{z as At}from"zod";import{writeFileSync as bt}from"fs";import{relative as wt}from"path";var Ie=8,Te=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Re=(e,n)=>{let o=(t,r)=>{if(Te(t)){let s=Te(r)?r:{};return Object.fromEntries(Object.entries(t).map(([a,l])=>[a,o(l,s[a])]))}return r!==void 0&&!Te(r)?r:t};return o(e,n)},pn=async()=>{let e=process.cwd(),n=await I({optional:!0}),o=await I({optional:!0,type:"api.config"}),t=n??o;t||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=B({api:o!==null,web:n!==null}),s=t.i18n?.defaultLocale??"en",a=e;try{a=W(e)}catch{}let l=Q(e).filter(y=>y.locale!==s);l.length===0&&(console.log(`${L} No translation files to update.`),process.exit(0));let u=new Map,p=y=>{let v=u.get(y);if(v)return v;let N=X(y,{appDir:e,defaultLocale:s,repoRoot:a,scope:r});return u.set(y,N),N};console.log(`${L} Syncing ${l.length} translation file(s) against ${w(s)}.`);let m=0,S=0,x=0;for(let y of l){let v=wt(e,y.path),N=p(y.pluginId);if(Object.keys(N).length===0){console.log(w(` skipped ${v} - no "${s}" source strings`));continue}let A=H(y.path),g=new Set(ue(N)),h=new Set(ue(A)),f=[...g].filter(b=>!h.has(b)),d=[...h].filter(b=>!g.has(b));if(f.length===0&&d.length===0){console.log(w(` ok ${v}`));continue}bt(y.path,`${JSON.stringify(Re(N,A),null,2)}
58
+ `),x+=1,m+=f.length,S+=d.length,console.log(`${T(` updated ${v}`)} ${w(`+${f.length} -${d.length}`)}`);for(let b of f.slice(0,Ie))console.log(T(` + ${b}`));for(let b of d.slice(0,Ie-f.length))console.log(P(` - ${b}`));let R=Math.min(f.length,Ie)+d.length;f.length+d.length>R&&console.log(w(` ... and ${f.length+d.length-R} more`))}x===0&&(console.log(T(" Every translation is already in sync.")),process.exit(0)),console.log(`
63
59
  ${L} ${T(`${x} file(s) updated`)}: ${J(`+${m}`)} added, ${J(`-${S}`)} removed. Translate the added keys, then run vitnode i18n:check.`),process.exit(0)};var It=40,Tt=6,Ee=3,Pe=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),fn=e=>typeof e=="string"?e:e.modelId,Rt=e=>{let n=e.replace(/\{[a-zA-Z0-9_]+\}/g,"").replace(/<[^>]+>/g,"");return/\p{L}/u.test(n)},Lt=(e,n)=>{let o=[],t=(r,s,a)=>{if(Pe(r)){let l=Pe(s)?s:{};for(let[u,p]of Object.entries(r))t(p,l[u],[...a,u]);return}typeof r=="string"&&s===r&&Rt(r)&&o.push({path:a,source:r})};return t(e,n,[]),o},Et=(e,n)=>{let o=structuredClone(e);for(let{path:t,value:r}of n){if(t.length===0)continue;let s=o,a=!0;for(let l=0;l<t.length-1;l+=1){let u=s[t[l]];if(!Pe(u)){a=!1;break}s=u}a&&(s[t[t.length-1]]=r)}return o},Pt=(e,n)=>{let o=[];for(let t=0;t<e.length;t+=n)o.push(e.slice(t,t+n));return o},jt=e=>{let n=new Set,o=[];for(let t of e)n.has(t.source)||(n.add(t.source),o.push(t.source));return o},Mt=async(e,n,o)=>{let t=new Array(e.length),r=0,s=async()=>{for(;;){let l=r;if(r+=1,l>=e.length)return;t[l]=await o(e[l],l)}},a=Math.max(1,Math.min(n,e.length));return await Promise.all(Array.from({length:a},async()=>s())),t},Dt=async e=>{let n;for(let o=0;o<Ee;o+=1)try{return await e()}catch(t){n=t,o<Ee-1&&await new Promise(r=>setTimeout(r,500*2**o))}throw n},Ot=async({code:e,languageName:n,model:o,sources:t})=>{let{output:r}=await _t({model:o,output:vt.array({element:At.string()}),temperature:0,system:["You are a professional software localization translator.",`Translate each string from English into ${n} (${e}).`,"Input is a JSON array of strings. Return a JSON array of the same length, in the same order - one translation per input string, and nothing else.","Preserve placeholders verbatim: {name}, {count}, ICU plurals such as {count, plural, one {#} other {#}}, and tags such as <b></b>. Never rename or reorder them.","Keep the original whitespace and punctuation. Don't translate brand names, code, URLs, or identifiers. Write natural, concise UI copy."].join(`
64
- `),prompt:JSON.stringify(t)});if(r.length!==t.length)throw new Error(`expected ${t.length} translations, got ${r.length}`);let s=new Map;return t.forEach((a,l)=>{s.set(a,r[l])}),s},mn=async()=>{let e=process.cwd(),n=await I({optional:!0}),o=await I({optional:!0,type:"api.config"}),t=n??o;t||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=o?.ai?.models??[];if(r.length===0){let i=Le(e),c=i!==e?ve(i,"vitnode.api.config.ts"):null;if(c&&(r=(await I({baseDir:i,optional:!0,type:"api.config"}))?.ai?.models??[],r.length>0)){let _=Le(Le(c));Nt({path:kt(_,".env"),quiet:!0})}}r.length===0&&(console.error(P("No AI models configured. Add an `ai.models` entry to vitnode.api.config.ts (searched this app and one level up).")),process.exit(1));let s=B({api:o!==null,web:n!==null}),a=t.i18n?.defaultLocale??"en",l=new Map((t.i18n?.locales??[]).map(i=>[i.code,i.name])),u=e;try{u=W(e)}catch{}let p=Q(e).filter(i=>i.locale!==a);p.length===0&&(console.log(`${L} No translation files to translate. Run ${q("vitnode i18n:create")} first.`),process.exit(0));let m=new Map;for(let i of p){let c=m.get(i.locale)??[];c.push(i),m.set(i.locale,c)}let S=[...m.keys()].sort((i,c)=>i.localeCompare(c)),x=process.argv.slice(3),y,v,N=[];for(let i=0;i<x.length;i+=1){let c=x[i];c==="--model"?(y=x[i+1],i+=1):c.startsWith("--model=")?y=c.slice(8):c==="--concurrency"?(v=Number(x[i+1]),i+=1):c.startsWith("--concurrency=")?v=Number(c.slice(14)):N.push(...c.split(/[\s,]+/).filter(Boolean))}let A=v&&Number.isInteger(v)&&v>0?v:Tt,g=process.stdin.isTTY??!1,h,f;try{if(N.length>0){let i=N.filter(c=>!m.has(c));i.length>0&&(console.error(P(`No translation files for: ${i.join(", ")}.`)),process.exit(1)),h=[...new Set(N)]}else g?h=await xt({choices:S.map(i=>({checked:!0,name:`${l.get(i)??i} ${b(`(${i})`)}`,value:i})),message:"Which languages should be translated from English?",required:!0}):(console.error(P("Missing languages. Run: vitnode i18n:update:ai <code...> [--model <id>]")),process.exit(1));if(y!==void 0){let i=r.find(c=>c.id===y);i||(console.error(P(`AI model "${y}" is not defined in vitnode.api.config.ts.`)),process.exit(1)),f=i}else if(g){let i=await $t({choices:r.map(c=>({name:`${c.name} ${b(fn(c.model))}`,value:c.id})),default:r[0].id,message:"Which AI model should translate? (from vitnode.api.config.ts)"});f=r.find(c=>c.id===i)??r[0]}else f=r[0]}catch(i){throw i instanceof Error&&i.name==="ExitPromptError"&&(console.log(b(`
60
+ `),prompt:JSON.stringify(t)});if(r.length!==t.length)throw new Error(`expected ${t.length} translations, got ${r.length}`);let s=new Map;return t.forEach((a,l)=>{s.set(a,r[l])}),s},mn=async()=>{let e=process.cwd(),n=await I({optional:!0}),o=await I({optional:!0,type:"api.config"}),t=n??o;t||(console.error(P("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=o?.ai?.models??[];if(r.length===0){let i=Le(e),c=i!==e?ve(i,"vitnode.api.config.ts"):null;if(c&&(r=(await I({baseDir:i,optional:!0,type:"api.config"}))?.ai?.models??[],r.length>0)){let _=Le(Le(c));Nt({path:kt(_,".env"),quiet:!0})}}r.length===0&&(console.error(P("No AI models configured. Add an `ai.models` entry to vitnode.api.config.ts (searched this app and one level up).")),process.exit(1));let s=B({api:o!==null,web:n!==null}),a=t.i18n?.defaultLocale??"en",l=new Map((t.i18n?.locales??[]).map(i=>[i.code,i.name])),u=e;try{u=W(e)}catch{}let p=Q(e).filter(i=>i.locale!==a);p.length===0&&(console.log(`${L} No translation files to translate. Run ${q("vitnode i18n:create")} first.`),process.exit(0));let m=new Map;for(let i of p){let c=m.get(i.locale)??[];c.push(i),m.set(i.locale,c)}let S=[...m.keys()].sort((i,c)=>i.localeCompare(c)),x=process.argv.slice(3),y,v,N=[];for(let i=0;i<x.length;i+=1){let c=x[i];c==="--model"?(y=x[i+1],i+=1):c.startsWith("--model=")?y=c.slice(8):c==="--concurrency"?(v=Number(x[i+1]),i+=1):c.startsWith("--concurrency=")?v=Number(c.slice(14)):N.push(...c.split(/[\s,]+/).filter(Boolean))}let A=v&&Number.isInteger(v)&&v>0?v:Tt,g=process.stdin.isTTY??!1,h,f;try{if(N.length>0){let i=N.filter(c=>!m.has(c));i.length>0&&(console.error(P(`No translation files for: ${i.join(", ")}.`)),process.exit(1)),h=[...new Set(N)]}else g?h=await xt({choices:S.map(i=>({checked:!0,name:`${l.get(i)??i} ${w(`(${i})`)}`,value:i})),message:"Which languages should be translated from English?",required:!0}):(console.error(P("Missing languages. Run: vitnode i18n:update:ai <code...> [--model <id>]")),process.exit(1));if(y!==void 0){let i=r.find(c=>c.id===y);i||(console.error(P(`AI model "${y}" is not defined in vitnode.api.config.ts.`)),process.exit(1)),f=i}else if(g){let i=await $t({choices:r.map(c=>({name:`${c.name} ${w(fn(c.model))}`,value:c.id})),default:r[0].id,message:"Which AI model should translate? (from vitnode.api.config.ts)"});f=r.find(c=>c.id===i)??r[0]}else f=r[0]}catch(i){throw i instanceof Error&&i.name==="ExitPromptError"&&(console.log(w(`
65
61
  Cancelled.`)),process.exit(0)),i}h.length===0&&(console.log(`${L} No languages selected.`),process.exit(0)),console.log(`
66
- ${L} Translating with ${T(f.name)} ${b(`(${fn(f.model)})`)} into: ${h.map(i=>q(i)).join(", ")}
67
- `);let d=new Map,R=i=>{let c=d.get(i);if(c)return c;let $=X(i,{appDir:e,defaultLocale:a,repoRoot:u,scope:s});return d.set(i,$),$},w=[];for(let i of h)for(let c of m.get(i)??[]){let $=St(e,c.path),_=R(c.pluginId);if(Object.keys(_).length===0){console.log(b(` skipped ${$} - no "${a}" source strings`));continue}let k=H(c.path),K=Re(_,k);w.push({current:k,file:c,locale:i,location:$,reconciled:K,untranslated:Lt(_,K)})}let E=[];for(let i of h){let c=w.filter(k=>k.locale===i).flatMap(k=>k.untranslated),$=jt(c);if($.length===0)continue;let _=l.get(i)??i;for(let k of Pt($,It))E.push({languageName:_,locale:i,sources:k});console.log(` ${q(i)} ${c.length} string(s)${c.length===$.length?"":b(` (${$.length} unique)`)}`)}let F=new Map,C=[];if(E.length>0){let i=E.reduce((_,k)=>_+k.sources.length,0);console.log(b(` ${i} unique string(s) in ${E.length} batch(es), up to ${Math.min(A,E.length)} in parallel
68
- `));let c=0,$=await Mt(E,A,async _=>{let k=new Map,K;try{k=await Dt(async()=>Ot({code:_.locale,languageName:_.languageName,model:f.model,sources:_.sources}))}catch(xe){K=xe}return c+=1,process.stdout.write(`\r ${b(`translated ${c}/${E.length} batch(es)`)}`),{error:K,locale:_.locale,translations:k}});process.stdout.write(`
62
+ ${L} Translating with ${T(f.name)} ${w(`(${fn(f.model)})`)} into: ${h.map(i=>q(i)).join(", ")}
63
+ `);let d=new Map,R=i=>{let c=d.get(i);if(c)return c;let $=X(i,{appDir:e,defaultLocale:a,repoRoot:u,scope:s});return d.set(i,$),$},b=[];for(let i of h)for(let c of m.get(i)??[]){let $=St(e,c.path),_=R(c.pluginId);if(Object.keys(_).length===0){console.log(w(` skipped ${$} - no "${a}" source strings`));continue}let k=H(c.path),K=Re(_,k);b.push({current:k,file:c,locale:i,location:$,reconciled:K,untranslated:Lt(_,K)})}let E=[];for(let i of h){let c=b.filter(k=>k.locale===i).flatMap(k=>k.untranslated),$=jt(c);if($.length===0)continue;let _=l.get(i)??i;for(let k of Pt($,It))E.push({languageName:_,locale:i,sources:k});console.log(` ${q(i)} ${c.length} string(s)${c.length===$.length?"":w(` (${$.length} unique)`)}`)}let F=new Map,C=[];if(E.length>0){let i=E.reduce((_,k)=>_+k.sources.length,0);console.log(w(` ${i} unique string(s) in ${E.length} batch(es), up to ${Math.min(A,E.length)} in parallel
64
+ `));let c=0,$=await Mt(E,A,async _=>{let k=new Map,K;try{k=await Dt(async()=>Ot({code:_.locale,languageName:_.languageName,model:f.model,sources:_.sources}))}catch(xe){K=xe}return c+=1,process.stdout.write(`\r ${w(`translated ${c}/${E.length} batch(es)`)}`),{error:K,locale:_.locale,translations:k}});process.stdout.write(`
69
65
 
70
- `);for(let _ of $){let k=F.get(_.locale)??new Map;for(let[K,xe]of _.translations)k.set(K,xe);F.set(_.locale,k),_.error&&C.push(_.error)}}let j=0,D=0,M=0;for(let i of w){let c=F.get(i.locale),$=i.untranslated.flatMap(k=>{let K=c?.get(k.source);return K===void 0?[]:[{path:k.path,value:K}]}),_=Et(i.reconciled,$);JSON.stringify(i.current)!==JSON.stringify(_)?(Ct(i.file.path,`${JSON.stringify(_,null,2)}
71
- `),j+=1,D+=$.length,console.log($.length===0?`${T(` synced ${i.location}`)} ${b("(structure only)")}`:`${T(` updated ${i.location}`)} ${b(`\u2192 ${i.locale} +${$.length}`)}`)):console.log(b(` ok ${i.location}`)),M+=i.untranslated.length-$.length}if(C.length>0){let i=C[0];console.log(`
72
- ${L} ${J(`${C.length} batch(es) failed`)} after ${Ee} attempts - ${M} string(s) left in English.`),console.log(P(` ${i instanceof Error?i.message:String(i)}`)),console.log(b(" Check your AI provider credentials (e.g. AI_GATEWAY_API_KEY) or rate limits, then re-run to fill the rest."))}j===0&&C.length===0&&(console.log(T(`
66
+ `);for(let _ of $){let k=F.get(_.locale)??new Map;for(let[K,xe]of _.translations)k.set(K,xe);F.set(_.locale,k),_.error&&C.push(_.error)}}let j=0,D=0,M=0;for(let i of b){let c=F.get(i.locale),$=i.untranslated.flatMap(k=>{let K=c?.get(k.source);return K===void 0?[]:[{path:k.path,value:K}]}),_=Et(i.reconciled,$);JSON.stringify(i.current)!==JSON.stringify(_)?(Ct(i.file.path,`${JSON.stringify(_,null,2)}
67
+ `),j+=1,D+=$.length,console.log($.length===0?`${T(` synced ${i.location}`)} ${w("(structure only)")}`:`${T(` updated ${i.location}`)} ${w(`\u2192 ${i.locale} +${$.length}`)}`)):console.log(w(` ok ${i.location}`)),M+=i.untranslated.length-$.length}if(C.length>0){let i=C[0];console.log(`
68
+ ${L} ${J(`${C.length} batch(es) failed`)} after ${Ee} attempts - ${M} string(s) left in English.`),console.log(P(` ${i instanceof Error?i.message:String(i)}`)),console.log(w(" Check your AI provider credentials (e.g. AI_GATEWAY_API_KEY) or rate limits, then re-run to fill the rest."))}j===0&&C.length===0&&(console.log(T(`
73
69
  Everything is already translated.`)),process.exit(0)),j>0&&console.log(`
74
- ${L} ${T(`${j} file(s) updated`)}, ${J(String(D))} string(s) translated.`),process.exit(C.length>0?1:0)};import{count as Jt,sql as kn}from"drizzle-orm";import{migrate as zt}from"drizzle-orm/postgres-js/migrator";import{createJiti as Yt}from"jiti";import{existsSync as Ht}from"fs";import{join as Xt}from"path";import Qt from"postgres";import{camelCase as xn,index as be}from"drizzle-orm/pg-core";import{camelCase as Ft}from"drizzle-orm/pg-core";var U=Ft.table.withRLS("core_roles",e=>({id:e.serial().primaryKey(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),root:e.boolean().notNull().default(!1),guest:e.boolean().notNull().default(!1),color:e.varchar({length:50}),allowUploadFiles:e.boolean().notNull().default(!1),totalMaxStorage:e.integer(),maxStorageForSubmit:e.integer()}));import{camelCase as wn,index as bn}from"drizzle-orm/pg-core";import{camelCase as ae,index as oe,primaryKey as qt}from"drizzle-orm/pg-core";import{camelCase as hn,index as je}from"drizzle-orm/pg-core";var te=hn.table.withRLS("core_languages",e=>({id:e.serial().primaryKey(),code:e.varchar({length:32}).notNull().unique(),name:e.varchar({length:255}).notNull(),timezone:e.varchar({length:255}).notNull().default("UTC"),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[je("core_languages_code_idx").on(e.code),je("core_languages_name_idx").on(e.name)]),yn=hn.table.withRLS("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>te.code,{onDelete:"cascade"}),pluginCode:e.varchar({length:50}).notNull(),itemId:e.integer().notNull(),value:e.text().notNull(),tableName:e.varchar({length:255}).notNull(),variable:e.varchar({length:255}).notNull()}),e=>[je("core_languages_words_lang_code_idx").on(e.languageCode)]);var O=ae.table.withRLS("core_users",e=>({id:e.serial().primaryKey(),nameCode:e.varchar({length:255}).notNull().unique(),name:e.varchar({length:255}).notNull().unique(),email:e.varchar({length:255}).notNull().unique(),password:e.varchar(),createdAt:e.timestamp().notNull().defaultNow(),newsletter:e.boolean().notNull().default(!1),avatarColor:e.varchar({length:6}).notNull(),emailVerified:e.boolean().notNull().default(!1),roleId:e.integer().references(()=>U.id).notNull(),birthday:e.timestamp(),ipAddress:e.varchar({length:40}).notNull(),language:e.varchar({length:32}).notNull().default("en").references(()=>te.code,{onDelete:"set default"})}),e=>[oe("core_users_name_code_idx").on(e.nameCode),oe("core_users_name_idx").on(e.name),oe("core_users_email_idx").on(e.email)]),Nr=ae.table.withRLS("core_users_secondary_roles",e=>({userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull(),roleId:e.integer().references(()=>U.id,{onDelete:"cascade"}).notNull(),createdAt:e.timestamp().notNull().defaultNow()}),e=>[qt({columns:[e.userId,e.roleId]}),oe("core_users_secondary_roles_user_id_idx").on(e.userId),oe("core_users_secondary_roles_role_id_idx").on(e.roleId)]),Cr=ae.table.withRLS("core_users_sso",e=>({userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull(),providerId:e.varchar({length:255}).notNull(),providerAccountId:e.varchar({length:255}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),e=>[oe("core_users_sso_user_id_idx").on(e.userId)]),kr=ae.table.withRLS("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull(),token:e.varchar({length:100}).notNull().unique(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),ipAddress:e.varchar({length:40}).notNull()})),Sr=ae.table.withRLS("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull().unique(),token:e.varchar({length:100}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull()}));var Rr=wn.table.withRLS("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>Me.id,{onDelete:"cascade"}).notNull()}),e=>[bn("core_sessions_user_id_idx").on(e.userId)]),Me=wn.table.withRLS("core_sessions_known_devices",e=>({id:e.serial().primaryKey(),publicId:e.varchar({length:32}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),userAgent:e.text().notNull(),lastSeen:e.timestamp().notNull().defaultNow()}),e=>[bn("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]);var $n=xn.table.withRLS("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>U.id,{onDelete:"cascade"}),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[be("core_admin_permissions_role_id_idx").on(e.roleId),be("core_admin_permissions_user_id_idx").on(e.userId)]),Dr=xn.table.withRLS("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>Me.id,{onDelete:"cascade"}).notNull()}),e=>[be("core_admin_sessions_token_idx").on(e.token),be("core_admin_sessions_user_id_idx").on(e.userId)]);import{camelCase as Ut,index as _n}from"drizzle-orm/pg-core";var vn=Ut.table.withRLS("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>U.id,{onDelete:"cascade"}),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[_n("core_moderators_permissions_role_id_idx").on(e.roleId),_n("core_moderators_permissions_user_id_idx").on(e.userId)]);import{sql as De}from"drizzle-orm";import{camelCase as Kt,customType as Vt,index as re,unique as Gt}from"drizzle-orm/pg-core";var Wt=Vt({dataType(){return"tsvector"}}),Oe={da:"danish",de:"german",en:"english",es:"spanish",fi:"finnish",fr:"french",hu:"hungarian",it:"italian",nl:"dutch",no:"norwegian",pl:"polish",pt:"portuguese",ro:"romanian",ru:"russian",sv:"swedish",tr:"turkish"},Bt="simple";var Nn=`CASE lower(split_part("core_search_index"."languageCode", '-', 1)) ${Object.entries(Oe).map(([e,n])=>`WHEN '${e}' THEN '${n}'::regconfig`).join(" ")} ELSE '${Bt}'::regconfig END`,Cn=Kt.table.withRLS("core_search_index",e=>({id:e.serial().primaryKey(),pluginId:e.varchar({length:255}).notNull(),itemType:e.varchar({length:100}).notNull(),itemId:e.integer().notNull(),languageCode:e.varchar({length:32}).notNull().default(""),authorId:e.integer().references(()=>O.id,{onDelete:"set null",onUpdate:"cascade"}),title:e.text().notNull().default(""),content:e.text().notNull().default(""),searchVector:Wt("search_vector").notNull().generatedAlwaysAs(()=>De`setweight(to_tsvector(${De.raw(Nn)}, coalesce(${Cn.title}, '')), 'A') || setweight(to_tsvector(${De.raw(Nn)}, coalesce(${Cn.content}, '')), 'B')`),containerType:e.varchar({length:100}),containerId:e.integer(),url:e.text(),isPublic:e.boolean().notNull().default(!0),metadata:e.jsonb().$type().notNull().default({}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp(),indexedAt:e.timestamp().notNull().defaultNow()}),e=>[Gt("core_search_index_item_unique").on(e.itemType,e.itemId,e.languageCode),re("core_search_index_search_vector_idx").using("gin",e.searchVector),re("core_search_index_created_at_idx").on(e.createdAt),re("core_search_index_author_id_idx").on(e.authorId),re("core_search_index_item_type_idx").on(e.itemType),re("core_search_index_language_code_idx").on(e.languageCode),re("core_search_index_is_public_idx").on(e.isPublic)]);var Fe=async()=>{try{await z("npm",["run","drizzle-kit","up"]),await z("npm",["run","drizzle-kit","generate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},Zt=async()=>{let e=Xt(process.cwd(),"drizzle.config.ts");if(Ht(e))try{let o=await Yt(import.meta.url,{interopDefault:!0}).import(e),t=o.default?.out??o.out;if(typeof t=="string"&&t.length>0)return t}catch{}return"./migrations"},eo=e=>{let n=new Set(["23505","42710"]);for(let o=e,t=0;o!=null&&t<5;t++){let{code:r}=o;if(typeof r=="string"&&n.has(r))return!0;o=o.cause}return!1},no=async e=>{let n=[...new Set(Object.values(Oe))];if(n.length===0)return;let o=await e.execute(kn`SELECT cfgname FROM pg_ts_config`),t=new Set(o.map(s=>s.cfgname)),r=n.filter(s=>!t.has(s));if(r.length!==0){console.log(`\x1B[33m[VitNode]\x1B[0m No dictionary installed for text-search config(s) [${r.join(", ")}] - registering a "COPY = simple" fallback (search works, stemming is skipped).`);for(let s of r)try{await e.execute(kn.raw(`CREATE TEXT SEARCH CONFIGURATION "${s}" (COPY = simple)`))}catch(a){if(!eo(a))throw a}}},to=async()=>{let e=await I({type:"api.config"});await no(e.dbProvider);let n=await Zt();try{await zt(e.dbProvider,{migrationsFolder:n})}catch(o){let t=o;console.error("\x1B[31m[VitNode] Database migration failed.\x1B[0m"),t.severity&&console.error(`\x1B[31mSeverity:\x1B[0m ${t.severity}`),t.code&&console.error(`\x1B[31mSQLSTATE:\x1B[0m ${t.code}`),console.error(`\x1B[31mMessage:\x1B[0m ${t.message??String(o)}`),t.detail&&console.error(`\x1B[31mDetail:\x1B[0m ${t.detail}`),t.hint&&console.error(`\x1B[31mHint:\x1B[0m ${t.hint}`),t.where&&console.error(`\x1B[31mWhere:\x1B[0m ${t.where}`),t.position&&console.error(`\x1B[31mPosition:\x1B[0m ${t.position}`),t.query&&console.error(`\x1B[31mFailing SQL:\x1B[0m
70
+ ${L} ${T(`${j} file(s) updated`)}, ${J(String(D))} string(s) translated.`),process.exit(C.length>0?1:0)};import{count as Jt,sql as kn}from"drizzle-orm";import{migrate as zt}from"drizzle-orm/postgres-js/migrator";import{createJiti as Yt}from"jiti";import{existsSync as Ht}from"fs";import{join as Xt}from"path";import Qt from"postgres";import{camelCase as xn,index as we}from"drizzle-orm/pg-core";import{camelCase as Ft}from"drizzle-orm/pg-core";var U=Ft.table.withRLS("core_roles",e=>({id:e.serial().primaryKey(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),root:e.boolean().notNull().default(!1),guest:e.boolean().notNull().default(!1),color:e.varchar({length:50}),allowUploadFiles:e.boolean().notNull().default(!1),totalMaxStorage:e.integer(),maxStorageForSubmit:e.integer()}));import{camelCase as bn,index as wn}from"drizzle-orm/pg-core";import{camelCase as ae,index as oe,primaryKey as qt}from"drizzle-orm/pg-core";import{camelCase as hn,index as je}from"drizzle-orm/pg-core";var te=hn.table.withRLS("core_languages",e=>({id:e.serial().primaryKey(),code:e.varchar({length:32}).notNull().unique(),name:e.varchar({length:255}).notNull(),timezone:e.varchar({length:255}).notNull().default("UTC"),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[je("core_languages_code_idx").on(e.code),je("core_languages_name_idx").on(e.name)]),yn=hn.table.withRLS("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>te.code,{onDelete:"cascade"}),pluginCode:e.varchar({length:50}).notNull(),itemId:e.integer().notNull(),value:e.text().notNull(),tableName:e.varchar({length:255}).notNull(),variable:e.varchar({length:255}).notNull()}),e=>[je("core_languages_words_lang_code_idx").on(e.languageCode)]);var O=ae.table.withRLS("core_users",e=>({id:e.serial().primaryKey(),nameCode:e.varchar({length:255}).notNull().unique(),name:e.varchar({length:255}).notNull().unique(),email:e.varchar({length:255}).notNull().unique(),password:e.varchar(),createdAt:e.timestamp().notNull().defaultNow(),newsletter:e.boolean().notNull().default(!1),avatarColor:e.varchar({length:6}).notNull(),emailVerified:e.boolean().notNull().default(!1),roleId:e.integer().references(()=>U.id).notNull(),birthday:e.timestamp(),ipAddress:e.varchar({length:40}).notNull(),language:e.varchar({length:32}).notNull().default("en").references(()=>te.code,{onDelete:"set default"})}),e=>[oe("core_users_name_code_idx").on(e.nameCode),oe("core_users_name_idx").on(e.name),oe("core_users_email_idx").on(e.email)]),Nr=ae.table.withRLS("core_users_secondary_roles",e=>({userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull(),roleId:e.integer().references(()=>U.id,{onDelete:"cascade"}).notNull(),createdAt:e.timestamp().notNull().defaultNow()}),e=>[qt({columns:[e.userId,e.roleId]}),oe("core_users_secondary_roles_user_id_idx").on(e.userId),oe("core_users_secondary_roles_role_id_idx").on(e.roleId)]),Cr=ae.table.withRLS("core_users_sso",e=>({userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull(),providerId:e.varchar({length:255}).notNull(),providerAccountId:e.varchar({length:255}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),e=>[oe("core_users_sso_user_id_idx").on(e.userId)]),kr=ae.table.withRLS("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull(),token:e.varchar({length:100}).notNull().unique(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),ipAddress:e.varchar({length:40}).notNull()})),Sr=ae.table.withRLS("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}).notNull().unique(),token:e.varchar({length:100}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull()}));var Rr=bn.table.withRLS("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>Me.id,{onDelete:"cascade"}).notNull()}),e=>[wn("core_sessions_user_id_idx").on(e.userId)]),Me=bn.table.withRLS("core_sessions_known_devices",e=>({id:e.serial().primaryKey(),publicId:e.varchar({length:32}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),userAgent:e.text().notNull(),lastSeen:e.timestamp().notNull().defaultNow()}),e=>[wn("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]);var $n=xn.table.withRLS("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>U.id,{onDelete:"cascade"}),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[we("core_admin_permissions_role_id_idx").on(e.roleId),we("core_admin_permissions_user_id_idx").on(e.userId)]),Dr=xn.table.withRLS("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>Me.id,{onDelete:"cascade"}).notNull()}),e=>[we("core_admin_sessions_token_idx").on(e.token),we("core_admin_sessions_user_id_idx").on(e.userId)]);import{camelCase as Ut,index as _n}from"drizzle-orm/pg-core";var vn=Ut.table.withRLS("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>U.id,{onDelete:"cascade"}),userId:e.integer().references(()=>O.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[_n("core_moderators_permissions_role_id_idx").on(e.roleId),_n("core_moderators_permissions_user_id_idx").on(e.userId)]);import{sql as De}from"drizzle-orm";import{camelCase as Kt,customType as Vt,index as re,unique as Gt}from"drizzle-orm/pg-core";var Wt=Vt({dataType(){return"tsvector"}}),Oe={da:"danish",de:"german",en:"english",es:"spanish",fi:"finnish",fr:"french",hu:"hungarian",it:"italian",nl:"dutch",no:"norwegian",pl:"polish",pt:"portuguese",ro:"romanian",ru:"russian",sv:"swedish",tr:"turkish"},Bt="simple";var Nn=`CASE lower(split_part("core_search_index"."languageCode", '-', 1)) ${Object.entries(Oe).map(([e,n])=>`WHEN '${e}' THEN '${n}'::regconfig`).join(" ")} ELSE '${Bt}'::regconfig END`,Cn=Kt.table.withRLS("core_search_index",e=>({id:e.serial().primaryKey(),pluginId:e.varchar({length:255}).notNull(),itemType:e.varchar({length:100}).notNull(),itemId:e.integer().notNull(),languageCode:e.varchar({length:32}).notNull().default(""),authorId:e.integer().references(()=>O.id,{onDelete:"set null",onUpdate:"cascade"}),title:e.text().notNull().default(""),content:e.text().notNull().default(""),searchVector:Wt("search_vector").notNull().generatedAlwaysAs(()=>De`setweight(to_tsvector(${De.raw(Nn)}, coalesce(${Cn.title}, '')), 'A') || setweight(to_tsvector(${De.raw(Nn)}, coalesce(${Cn.content}, '')), 'B')`),containerType:e.varchar({length:100}),containerId:e.integer(),url:e.text(),isPublic:e.boolean().notNull().default(!0),metadata:e.jsonb().$type().notNull().default({}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp(),indexedAt:e.timestamp().notNull().defaultNow()}),e=>[Gt("core_search_index_item_unique").on(e.itemType,e.itemId,e.languageCode),re("core_search_index_search_vector_idx").using("gin",e.searchVector),re("core_search_index_created_at_idx").on(e.createdAt),re("core_search_index_author_id_idx").on(e.authorId),re("core_search_index_item_type_idx").on(e.itemType),re("core_search_index_language_code_idx").on(e.languageCode),re("core_search_index_is_public_idx").on(e.isPublic)]);var Fe=async()=>{try{await z("npm",["run","drizzle-kit","up"]),await z("npm",["run","drizzle-kit","generate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},Zt=async()=>{let e=Xt(process.cwd(),"drizzle.config.ts");if(Ht(e))try{let o=await Yt(import.meta.url,{interopDefault:!0}).import(e),t=o.default?.out??o.out;if(typeof t=="string"&&t.length>0)return t}catch{}return"./migrations"},eo=e=>{let n=new Set(["23505","42710"]);for(let o=e,t=0;o!=null&&t<5;t++){let{code:r}=o;if(typeof r=="string"&&n.has(r))return!0;o=o.cause}return!1},no=async e=>{let n=[...new Set(Object.values(Oe))];if(n.length===0)return;let o=await e.execute(kn`SELECT cfgname FROM pg_ts_config`),t=new Set(o.map(s=>s.cfgname)),r=n.filter(s=>!t.has(s));if(r.length!==0){console.log(`\x1B[33m[VitNode]\x1B[0m No dictionary installed for text-search config(s) [${r.join(", ")}] - registering a "COPY = simple" fallback (search works, stemming is skipped).`);for(let s of r)try{await e.execute(kn.raw(`CREATE TEXT SEARCH CONFIGURATION "${s}" (COPY = simple)`))}catch(a){if(!eo(a))throw a}}},to=async()=>{let e=await I({type:"api.config"});await no(e.dbProvider);let n=await Zt();try{await zt(e.dbProvider,{migrationsFolder:n})}catch(o){let t=o;console.error("\x1B[31m[VitNode] Database migration failed.\x1B[0m"),t.severity&&console.error(`\x1B[31mSeverity:\x1B[0m ${t.severity}`),t.code&&console.error(`\x1B[31mSQLSTATE:\x1B[0m ${t.code}`),console.error(`\x1B[31mMessage:\x1B[0m ${t.message??String(o)}`),t.detail&&console.error(`\x1B[31mDetail:\x1B[0m ${t.detail}`),t.hint&&console.error(`\x1B[31mHint:\x1B[0m ${t.hint}`),t.where&&console.error(`\x1B[31mWhere:\x1B[0m ${t.where}`),t.position&&console.error(`\x1B[31mPosition:\x1B[0m ${t.position}`),t.query&&console.error(`\x1B[31mFailing SQL:\x1B[0m
75
71
  ${t.query}`),o instanceof Error&&o.stack&&console.error(`
76
72
  \x1B[90m${o.stack}\x1B[0m`),process.exit(1)}},Sn=4675309,An=12e4,oo=250,ro="vitnode-migration-lock",so=e=>{let n=e.$client.options;if(typeof n!="object"||n===null||!("shared"in n))return null;let o=Qt({...n,connection:{...n.connection,application_name:ro},idle_timeout:null,max:1,parameters:{},shared:{retries:0,typeArrayMap:{}}});return{close:async()=>{await o.end({timeout:5})},tryLock:async()=>{let[t]=await o`SELECT pg_try_advisory_lock(${Sn}) AS locked`;return t.locked===!0},unlock:async()=>{await o`SELECT pg_advisory_unlock(${Sn})`}}},io=async({initMessage:e,lock:n,run:o,sleep:t=async r=>{await new Promise(s=>setTimeout(s,r))}})=>{if(n===null){await o();return}let r=Date.now()+An,s=!1,a=!1;try{for(;!s&&(s=await n.tryLock(),!s);){if(Date.now()>r)throw new Error(`Timed out after ${String(An/1e3)}s waiting for another process to finish preparing this database. If nothing else is running, a previous run was killed mid-migration - reconnect and retry, or check for a stuck session with "SELECT * FROM pg_locks WHERE locktype = 'advisory'".`);a||(console.log(`${e} Another process is preparing this database - waiting for it to finish...`),a=!0),await t(oo)}await o()}finally{if(s)try{await n.unlock()}catch{}try{await n.close()}catch{}}},ao=async(e,n,o)=>{await io({initMessage:n,lock:so(e),run:o})},lo=[{code:"en",default:!0,name:"English (USA)",protected:!0,timezone:"America/New_York"}],co=e=>{let n=(e?.locales??[]).filter(s=>s.enabled!==!1);if(n.length===0)return lo;let o=e?.defaultLocale??"en",t=n.some(s=>s.code===o)?o:n[0].code,r=e?.timeZone??"UTC";return n.map(s=>({code:s.code,default:s.code===t,name:s.name,protected:s.code===t,timezone:r}))},go=async()=>{let e=await I({type:"api.config"}),n=e.dbProvider,[o]=await n.select({count:Jt()}).from(U).limit(1),t=co(e.i18n);if(await n.insert(te).values(t).onConflictDoNothing({target:te.code}),o.count===0){let r=await n.insert(U).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)",allowUploadFiles:!0},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)",allowUploadFiles:!0}]).returning({id:U.id}),{code:s}=t.find(a=>a.default)??t[0];await n.insert(yn).values([{role:r[0].id,value:"Guest"},{role:r[1].id,value:"Member"},{role:r[2].id,value:"Moderator"},{role:r[3].id,value:"Administrator"}].map(({role:a,value:l})=>({itemId:a,languageCode:s,pluginCode:"core",tableName:"core_roles",value:l,variable:"name"}))),await n.insert(vn).values([{roleId:r[2].id,protected:!0,unrestricted:!0},{roleId:r[3].id,protected:!0,unrestricted:!0}]),await n.insert($n).values({roleId:r[3].id,protected:!0,unrestricted:!0})}},uo=({generate:e})=>[...e?[{action:Fe,label:"Generate migrations..."}]:[],{action:to,label:"Apply pending migrations..."},{action:go,label:"Ensure initial data..."}],qe=async({generate:e=!0,initMessage:n})=>{let o=await I({type:"api.config"}),t=uo({generate:e});await ao(o.dbProvider,n,async()=>{for(let[r,s]of t.entries())console.log(`${n} [${r+1}/${t.length}] ${s.label}`),await s.action()})};po({quiet:!0});var V="\x1B[34m[VitNode]\x1B[0m",Ue=Ve(process.argv.slice(2));Ue.ok||(console.error(`${V} \x1B[31m${Ue.message}\x1B[0m`),process.exit(1));var{args:In,command:fo}=Ue;switch(fo){case"build":try{await Ke(),console.log(`${V} \x1B[32mBuild completed successfully.\x1B[0m`),process.exit(0)}catch{process.exit(1)}break;case"db:prepare":try{await qe({initMessage:V}),console.log(`${V} \x1B[32mDatabase ready.\x1B[0m`),process.exit(0)}catch(e){console.error(`${V} \x1B[31mDatabase bootstrap failed - not starting anything.\x1B[0m`),console.error(e instanceof Error?e.stack??e.message:String(e)),process.exit(1)}break;case"dev":Ge({initMessage:V});break;case"i18n:check":await rn(In.includes("--ci")?"--ci":void 0);break;case"i18n:create":await cn();break;case"i18n:delete":await un();break;case"i18n:update":await pn();break;case"i18n:update:ai":await mn();break;case"migrate":try{In.includes("--generate")&&(await Fe(),console.log(`${V} \x1B[32mDatabase migrations generated successfully.\x1B[0m`),process.exit(0)),await qe({initMessage:V}),console.log(`${V} \x1B[32mDatabase migrated successfully.\x1B[0m`),process.exit(0)}catch(e){console.error(`${V} \x1B[31mDatabase migration failed.\x1B[0m`),console.error(e instanceof Error?e.stack??e.message:String(e)),process.exit(1)}break}
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/events/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAS7B,eAAO,MAAM,kBAAkB,QAAO,eAiDpC,CAAC"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/events/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,kBAAkB,QAAO,eAiDpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/search/postgres.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,uBAAuB,EAGxB,MAAM,qBAAqB,CAAC;AAoD7B,eAAO,MAAM,qBAAqB,QAAO,uBAmJvC,CAAC"}
1
+ {"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/search/postgres.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,uBAAuB,EAGxB,MAAM,qBAAqB,CAAC;AA8D7B,eAAO,MAAM,qBAAqB,QAAO,uBA6JvC,CAAC"}
@@ -1 +1 @@
1
- import{and,asc,count,desc,eq,gt,gte,inArray,lt,lte,or,sql}from"drizzle-orm";import{core_search_index,resolveSearchTextConfig}from"../../../database/search.js";import{core_users}from"../../../database/users.js";const DEFAULT_PAGE_SIZE=20;const MAX_PAGE_SIZE=100;const buildFilters=params=>{const conditions=[];const term=params.term?.trim();if(term){const config=resolveSearchTextConfig(params.languageCode);conditions.push(sql`"core_search_index"."search_vector" @@ websearch_to_tsquery(${config}::regconfig, ${term})`)}if(params.languageCode){const languageCondition=or(eq(core_search_index.languageCode,params.languageCode),eq(core_search_index.languageCode,""));if(languageCondition){conditions.push(languageCondition)}}if(params.itemTypes?.length){conditions.push(inArray(core_search_index.itemType,params.itemTypes))}if(params.authorId!==undefined){conditions.push(eq(core_search_index.authorId,params.authorId))}if(params.containerId!==undefined){conditions.push(eq(core_search_index.containerId,params.containerId))}if(params.dateFrom){conditions.push(gte(core_search_index.createdAt,params.dateFrom))}if(params.dateTo){conditions.push(lte(core_search_index.createdAt,params.dateTo))}if(!params.includePrivate){conditions.push(eq(core_search_index.isPublic,true))}return conditions.length?and(...conditions):undefined};export const PostgresSearchAdapter=()=>({name:"postgres",capabilities:{authorBoost:false,canonicalStorage:true,facets:false,languageScopedDelete:true,timeDecay:false},index:async()=>{},bulkIndex:async()=>{},delete:async()=>{},clear:async()=>{},ping:async c=>{try{await c.get("db").execute(sql`select 1`);return true}catch{return false}},search:async(c,params)=>{const db=c.get("db");const term=params.term?.trim();const useRelevance=params.sort==="relevance"&&!!term;const size=Math.min(params.first??DEFAULT_PAGE_SIZE,MAX_PAGE_SIZE);const filters=buildFilters(params);const[{total}]=await db.select({total:count()}).from(core_search_index).where(filters);const config=resolveSearchTextConfig(params.languageCode);const rankExpr=term?sql`ts_rank("core_search_index"."search_vector", websearch_to_tsquery(${config}::regconfig, ${term}))`:sql`NULL`;const cursorValue=params.cursor?Number(params.cursor):undefined;const orderBy=[];let where=filters;let offset=0;if(useRelevance){orderBy.push(sql`${rankExpr} DESC`,desc(core_search_index.id));offset=cursorValue??0}else if(params.sort==="oldest"){orderBy.push(asc(core_search_index.createdAt),asc(core_search_index.id));if(cursorValue){const cond=gt(core_search_index.id,cursorValue);where=where?and(where,cond):cond}}else{orderBy.push(desc(core_search_index.createdAt),desc(core_search_index.id));if(cursorValue){const cond=lt(core_search_index.id,cursorValue);where=where?and(where,cond):cond}}const rows=await db.select({id:core_search_index.id,pluginId:core_search_index.pluginId,itemType:core_search_index.itemType,itemId:core_search_index.itemId,languageCode:core_search_index.languageCode,authorId:core_search_index.authorId,title:core_search_index.title,content:core_search_index.content,containerType:core_search_index.containerType,containerId:core_search_index.containerId,url:core_search_index.url,metadata:core_search_index.metadata,createdAt:core_search_index.createdAt,score:rankExpr,author:{id:core_users.id,name:core_users.name,nameCode:core_users.nameCode,avatarColor:core_users.avatarColor}}).from(core_search_index).leftJoin(core_users,eq(core_users.id,core_search_index.authorId)).where(where).orderBy(...orderBy).limit(size+1).offset(useRelevance?offset:0);const hasNextPage=rows.length>size;const sliced=rows.slice(0,size);const edges=sliced.map(row=>({id:row.id,pluginId:row.pluginId,itemType:row.itemType,itemId:row.itemId,languageCode:row.languageCode,authorId:row.authorId,title:row.title,content:row.content,containerType:row.containerType,containerId:row.containerId,url:row.url,metadata:row.metadata,createdAt:row.createdAt,score:row.score,author:row.author?.id?row.author:null}));const startCursor=useRelevance?offset:edges[0]?.id??null;const endCursor=useRelevance?offset+edges.length:edges.at(-1)?.id??null;return{edges,pageInfo:{totalCount:total,count:edges.length,hasNextPage,hasPreviousPage:useRelevance?offset>0:!!cursorValue,startCursor,endCursor}}}});
1
+ import{and,asc,count,desc,eq,gt,gte,inArray,lt,lte,or,sql}from"drizzle-orm";import{core_search_index,resolveSearchTextConfig}from"../../../database/search.js";import{core_users}from"../../../database/users.js";const DEFAULT_PAGE_SIZE=20;const MAX_PAGE_SIZE=100;const buildFilters=params=>{const conditions=[];const term=params.term?.trim();if(term){const config=resolveSearchTextConfig(params.languageCode);conditions.push(sql`"core_search_index"."search_vector" @@ websearch_to_tsquery(${config}::regconfig, ${term})`)}if(params.languageCode){const languageCondition=or(eq(core_search_index.languageCode,params.languageCode),eq(core_search_index.languageCode,""));if(languageCondition){conditions.push(languageCondition)}}if(params.itemTypes?.length){conditions.push(inArray(core_search_index.itemType,params.itemTypes))}if(params.authorId!==undefined){conditions.push(eq(core_search_index.authorId,params.authorId))}if(params.containerId!==undefined){conditions.push(eq(core_search_index.containerId,params.containerId))}if(params.dateFrom){conditions.push(gte(core_search_index.createdAt,params.dateFrom))}if(params.dateTo){conditions.push(lte(core_search_index.createdAt,params.dateTo))}if(!params.includePrivate){conditions.push(eq(core_search_index.isPublic,true))}return conditions.length?and(...conditions):undefined};const MAX_SEARCH_OFFSET=1e4;export const PostgresSearchAdapter=()=>({name:"postgres",capabilities:{authorBoost:false,canonicalStorage:true,facets:false,languageScopedDelete:true,timeDecay:false},index:async()=>{},bulkIndex:async()=>{},delete:async()=>{},clear:async()=>{},ping:async c=>{try{await c.get("db").execute(sql`select 1`);return true}catch{return false}},search:async(c,params)=>{const db=c.get("db");const term=params.term?.trim();const useRelevance=params.sort==="relevance"&&!!term;const size=Math.min(params.first??DEFAULT_PAGE_SIZE,MAX_PAGE_SIZE);const filters=buildFilters(params);const[{total}]=await db.select({total:count()}).from(core_search_index).where(filters);const config=resolveSearchTextConfig(params.languageCode);const rankExpr=term?sql`ts_rank("core_search_index"."search_vector", websearch_to_tsquery(${config}::regconfig, ${term}))`:sql`NULL`;const parsedCursor=params.cursor?Number(params.cursor):undefined;const cursorValue=parsedCursor!==undefined&&Number.isSafeInteger(parsedCursor)&&parsedCursor>=0?Math.min(parsedCursor,MAX_SEARCH_OFFSET):undefined;const orderBy=[];let where=filters;let offset=0;if(useRelevance){orderBy.push(sql`${rankExpr} DESC`,desc(core_search_index.id));offset=cursorValue??0}else if(params.sort==="oldest"){orderBy.push(asc(core_search_index.createdAt),asc(core_search_index.id));if(cursorValue){const cond=gt(core_search_index.id,cursorValue);where=where?and(where,cond):cond}}else{orderBy.push(desc(core_search_index.createdAt),desc(core_search_index.id));if(cursorValue){const cond=lt(core_search_index.id,cursorValue);where=where?and(where,cond):cond}}const rows=await db.select({id:core_search_index.id,pluginId:core_search_index.pluginId,itemType:core_search_index.itemType,itemId:core_search_index.itemId,languageCode:core_search_index.languageCode,authorId:core_search_index.authorId,title:core_search_index.title,content:core_search_index.content,containerType:core_search_index.containerType,containerId:core_search_index.containerId,url:core_search_index.url,metadata:core_search_index.metadata,createdAt:core_search_index.createdAt,score:rankExpr,author:{id:core_users.id,name:core_users.name,nameCode:core_users.nameCode,avatarColor:core_users.avatarColor}}).from(core_search_index).leftJoin(core_users,eq(core_users.id,core_search_index.authorId)).where(where).orderBy(...orderBy).limit(size+1).offset(useRelevance?offset:0);const hasNextPage=rows.length>size;const sliced=rows.slice(0,size);const edges=sliced.map(row=>({id:row.id,pluginId:row.pluginId,itemType:row.itemType,itemId:row.itemId,languageCode:row.languageCode,authorId:row.authorId,title:row.title,content:row.content,containerType:row.containerType,containerId:row.containerId,url:row.url,metadata:row.metadata,createdAt:row.createdAt,score:row.score,author:row.author?.id?row.author:null}));const startCursor=useRelevance?offset:edges[0]?.id??null;const endCursor=useRelevance?offset+edges.length:edges.at(-1)?.id??null;return{edges,pageInfo:{totalCount:total,count:edges.length,hasNextPage,hasPreviousPage:useRelevance?offset>0:!!cursorValue,startCursor,endCursor}}}});
@@ -1 +1 @@
1
- {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/sso/discord.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,eAAO,MAAM,mBAAmB,GAAI,6BAGjC;IACD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,KAAG,YAoFH,CAAC"}
1
+ {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/sso/discord.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,eAAO,MAAM,mBAAmB,GAAI,6BAGjC;IACD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CAClC,KAAG,YA+FH,CAAC"}
@@ -1 +1 @@
1
- import{HTTPException}from"hono/http-exception";import{z}from"zod";import{getRedirectUri}from"../../models/sso.js";export const DiscordSSOApiPlugin=({clientId="",clientSecret=""})=>{const id="discord";const redirectUri=getRedirectUri(id);const userSchema=z.object({id:z.string(),email:z.string(),username:z.string()});const tokenSchema=z.object({access_token:z.string(),token_type:z.string()});return{fetchToken:async code=>{if(!(clientId&&clientSecret)){throw new Error("Missing Discord client ID or secret")}const res=await fetch("https://discord.com/api/oauth2/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({code,redirect_uri:redirectUri,grant_type:"authorization_code",client_id:clientId,client_secret:clientSecret})});if(!res.ok){throw new HTTPException(+res.status.toString(),{message:"Internal error requesting token"})}const{data,error}=tokenSchema.safeParse(await res.json());if(error||!data){throw new HTTPException(400,{message:"Invalid token response"})}return data},fetchUser:async({token_type,access_token})=>{const res=await fetch("https://discord.com/api/users/@me",{headers:{Authorization:`${token_type} ${access_token}`}});const{data,error}=userSchema.safeParse(await res.json());if(error||!data){throw new HTTPException(400,{message:"Invalid user response"})}return data},getUrl:({state})=>{if(!clientId){throw new Error("Missing Discord client ID")}const url=new URL("https://discord.com/oauth2/authorize");url.searchParams.set("client_id",clientId);url.searchParams.set("redirect_uri",redirectUri);url.searchParams.set("response_type","code");url.searchParams.set("scope","identify email");url.searchParams.set("state",state);return url.toString()},id,name:"Discord"}};
1
+ import{HTTPException}from"hono/http-exception";import{z}from"zod";import{getRedirectUri}from"../../models/sso.js";export const DiscordSSOApiPlugin=({clientId="",clientSecret=""})=>{const id="discord";const redirectUri=getRedirectUri(id);const userSchema=z.object({id:z.string(),email:z.string(),username:z.string(),verified:z.boolean()});const tokenSchema=z.object({access_token:z.string(),token_type:z.string()});return{fetchToken:async code=>{if(!(clientId&&clientSecret)){throw new Error("Missing Discord client ID or secret")}const res=await fetch("https://discord.com/api/oauth2/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({code,redirect_uri:redirectUri,grant_type:"authorization_code",client_id:clientId,client_secret:clientSecret})});if(!res.ok){throw new HTTPException(+res.status.toString(),{message:"Internal error requesting token"})}const{data,error}=tokenSchema.safeParse(await res.json());if(error||!data){throw new HTTPException(400,{message:"Invalid token response"})}return data},fetchUser:async({token_type,access_token})=>{const res=await fetch("https://discord.com/api/users/@me",{headers:{Authorization:`${token_type} ${access_token}`}});const{data,error}=userSchema.safeParse(await res.json());if(error||!data){throw new HTTPException(400,{message:"Invalid user response"})}if(!data.verified){throw new HTTPException(400,{message:"Email not verified"})}return data},getUrl:({state})=>{if(!clientId){throw new Error("Missing Discord client ID")}const url=new URL("https://discord.com/oauth2/authorize");url.searchParams.set("client_id",clientId);url.searchParams.set("redirect_uri",redirectUri);url.searchParams.set("response_type","code");url.searchParams.set("scope","identify email");url.searchParams.set("state",state);return url.toString()},id,name:"Discord"}};
@@ -1 +1 @@
1
- {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/storage/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,sBAAsB,CAAC;AAgB9B,eAAO,MAAM,mBAAmB,GAAI,2BAGjC;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,gBAmCR,CAAC"}
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/storage/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,sBAAsB,CAAC;AAI9B,eAAO,MAAM,mBAAmB,GAAI,2BAGjC;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,gBAmCR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAgBzD,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EACF,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,GAC3D,MAAM,GACN,MAAM,EAAE,CAAC;CACd;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAC5E,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACrD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,EACjB,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,oCAqGA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAQjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAqBzD,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EACF,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,GAC3D,MAAM,GACN,MAAM,EAAE,CAAC;CACd;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAC5E,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACrD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,EACjB,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,oCA8HA"}
@@ -1 +1 @@
1
- import{swaggerUI}from"@hono/swagger-ui";import{cors}from"hono/cors";import{csrf}from"hono/csrf";import{HTTPException}from"hono/http-exception";import{createCacheClient}from"./lib/cache-client.js";import{collectCronJobs}from"./lib/cron.js";import{describeError}from"./lib/error-details.js";import{newBuildPluginApiCore}from"./plugin.js";import{CONFIG_PLUGIN}from"../config.js";import{initRealtimePubSub}from"../ws/registry.js";import{globalAdminMiddleware,globalMiddleware}from"./middlewares/global.middleware.js";import{rateLimiterMiddleware}from"./middlewares/rate-limiter.middleware.js";import{registerCronJobs}from"./modules/cron/helpers/register-cron-jobs.js";export function VitNodeAPI({app,cors:corsOptions,csrf:csrfOptions,vitNodeApiConfig}){const redisClient=createCacheClient(vitNodeApiConfig.redis);initRealtimePubSub(redisClient);const plugins=[newBuildPluginApiCore,...vitNodeApiConfig.plugins];app.doc("/swagger/doc",{openapi:"3.0.0",info:{version:CONFIG_PLUGIN.version,title:"VitNode API"},tags:plugins.flatMap(plugin=>plugin.openApiTags?.map(name=>({name}))??[])});app.use(cors(corsOptions));app.use(csrf(csrfOptions));app.use("*",rateLimiterMiddleware(vitNodeApiConfig.rateLimiter,redisClient));app.get("/swagger",swaggerUI({url:"/api/swagger/doc"}));app.use("*",globalMiddleware({ai:vitNodeApiConfig.ai,i18n:vitNodeApiConfig.i18n,email:vitNodeApiConfig.email,metadata:vitNodeApiConfig.metadata,authorization:vitNodeApiConfig.authorization,dbProvider:vitNodeApiConfig.dbProvider,captcha:vitNodeApiConfig.captcha,content:vitNodeApiConfig.content,cron:vitNodeApiConfig.cron,events:vitNodeApiConfig.events,search:vitNodeApiConfig.search,storage:vitNodeApiConfig.storage,plugins,cacheClient:redisClient}));app.use(async(c,next)=>{if(c.req.path.includes("/admin/")){return await globalAdminMiddleware()(c,next)}return next()});if(vitNodeApiConfig.cron){vitNodeApiConfig.cron.schedule()}plugins.map(root=>{app.route(`/${root.pluginId}`,root.hono)});registerCronJobs(vitNodeApiConfig.dbProvider,collectCronJobs(plugins)).catch(error=>{console.warn(`\x1b[34m[VitNode]\x1b[0m \x1b[33mFailed to register cron jobs:\x1b[0m ${describeError(error)}`)});app.onError(async(error,c)=>{if(error instanceof HTTPException){return error.getResponse()}const errorMessage=describeError(error);try{const logger=c.get("log");if(logger){await logger.error(`Unhandled error: ${errorMessage}`)}}catch{}return new Response(process.env.NODE_ENV==="development"?errorMessage:"Internal Server Error",{status:500})});return app}
1
+ import{swaggerUI}from"@hono/swagger-ui";import{bodyLimit}from"hono/body-limit";import{cors}from"hono/cors";import{csrf}from"hono/csrf";import{HTTPException}from"hono/http-exception";import{createCacheClient}from"./lib/cache-client.js";import{clientIpMiddleware}from"./lib/client-ip.js";import{collectCronJobs}from"./lib/cron.js";import{describeError}from"./lib/error-details.js";import{newBuildPluginApiCore}from"./plugin.js";import{CONFIG_PLUGIN}from"../config.js";import{CONFIG}from"../lib/config.js";import{initRealtimePubSub}from"../ws/registry.js";import{globalAdminMiddleware,globalMiddleware}from"./middlewares/global.middleware.js";import{rateLimiterMiddleware}from"./middlewares/rate-limiter.middleware.js";import{registerCronJobs}from"./modules/cron/helpers/register-cron-jobs.js";const DEFAULT_MAX_BODY_SIZE=25*1024*1024;export function VitNodeAPI({app,cors:corsOptions,csrf:csrfOptions,vitNodeApiConfig}){const redisClient=createCacheClient(vitNodeApiConfig.redis);initRealtimePubSub(redisClient);const plugins=[newBuildPluginApiCore,...vitNodeApiConfig.plugins];const docsEnabled=vitNodeApiConfig.docs?.enabled??CONFIG.node_development;if(docsEnabled){app.doc("/swagger/doc",{openapi:"3.0.0",info:{version:CONFIG_PLUGIN.version,title:"VitNode API"},tags:plugins.flatMap(plugin=>plugin.openApiTags?.map(name=>({name}))??[])})}app.use(cors(corsOptions));app.use(csrf(csrfOptions));app.use("*",clientIpMiddleware);app.use("*",bodyLimit({maxSize:vitNodeApiConfig.maxBodySize??DEFAULT_MAX_BODY_SIZE,onError:c=>c.json({error:"Payload Too Large"},413)}));app.use("*",rateLimiterMiddleware(vitNodeApiConfig.rateLimiter,redisClient));if(docsEnabled){app.get("/swagger",swaggerUI({url:"/api/swagger/doc"}))}app.use("*",globalMiddleware({ai:vitNodeApiConfig.ai,i18n:vitNodeApiConfig.i18n,email:vitNodeApiConfig.email,metadata:vitNodeApiConfig.metadata,authorization:vitNodeApiConfig.authorization,dbProvider:vitNodeApiConfig.dbProvider,captcha:vitNodeApiConfig.captcha,content:vitNodeApiConfig.content,cron:vitNodeApiConfig.cron,events:vitNodeApiConfig.events,search:vitNodeApiConfig.search,storage:vitNodeApiConfig.storage,plugins,cacheClient:redisClient}));app.use(async(c,next)=>{if(c.req.path.includes("/admin/")){return await globalAdminMiddleware()(c,next)}return next()});if(vitNodeApiConfig.cron){vitNodeApiConfig.cron.schedule()}plugins.map(root=>{app.route(`/${root.pluginId}`,root.hono)});registerCronJobs(vitNodeApiConfig.dbProvider,collectCronJobs(plugins)).catch(error=>{console.warn(`\x1b[34m[VitNode]\x1b[0m \x1b[33mFailed to register cron jobs:\x1b[0m ${describeError(error)}`)});app.onError(async(error,c)=>{if(error instanceof HTTPException){return error.getResponse()}const errorMessage=describeError(error);try{const logger=c.get("log");if(logger){await logger.error(`Unhandled error: ${errorMessage}`)}}catch{}return new Response(process.env.NODE_ENV==="development"?errorMessage:"Internal Server Error",{status:500})});return app}
@@ -1 +1 @@
1
- {"version":3,"file":"auth-cookie.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/auth-cookie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA8CpC,eAAO,MAAM,aAAa,GACxB,GAAG,OAAO,EACV,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,cAAa;IAAE,OAAO,CAAC,EAAE,IAAI,CAAA;CAAO,KACnC,IAEF,CAAC;AAUF,eAAO,MAAM,gBAAgB,GAAI,GAAG,OAAO,EAAE,MAAM,MAAM,KAAG,IAE3D,CAAC"}
1
+ {"version":3,"file":"auth-cookie.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/auth-cookie.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AA0BpC,eAAO,MAAM,aAAa,GACxB,GAAG,OAAO,EACV,MAAM,MAAM,EACZ,OAAO,MAAM,EACb,cAAa;IAAE,OAAO,CAAC,EAAE,IAAI,CAAA;CAAO,KACnC,IAEF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,GAAG,OAAO,EAAE,MAAM,MAAM,KAAG,IAE3D,CAAC"}
@@ -1 +1 @@
1
- import{deleteCookie,setCookie}from"hono/cookie";const authCookieOptions=c=>{const{cookieDomain,cookieSecure}=c.get("core").authorization;return{domain:cookieDomain,httpOnly:true,path:"/",secure:cookieSecure}};export const setAuthCookie=(c,name,value,{expires}={})=>{setCookie(c,name,value,{...authCookieOptions(c),expires})};export const deleteAuthCookie=(c,name)=>{deleteCookie(c,name,authCookieOptions(c))};
1
+ import{deleteCookie,setCookie}from"hono/cookie";const authCookieOptions=c=>{const{cookieDomain,cookieSecure}=c.get("core").authorization;return{domain:cookieDomain,httpOnly:true,path:"/",sameSite:"Lax",secure:cookieSecure}};export const setAuthCookie=(c,name,value,{expires}={})=>{setCookie(c,name,value,{...authCookieOptions(c),expires})};export const deleteAuthCookie=(c,name)=>{deleteCookie(c,name,authCookieOptions(c))};
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAGjE,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAmB1C,qBAAa,UAAU;gBACT,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,CAAC,EAAE,OAAO;IAKlD,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAE9C,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,MAAM;YAMA,OAAO;YAYP,UAAU;IAUxB,OAAO,CAAC,SAAS;YAIH,QAAQ;IA6BhB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB9D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAItC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAK5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC;IAUP,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,SAAS,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CAWrE"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAGjE,MAAM,MAAM,WAAW,GAAG,kBAAkB,CAAC;AAG7C,MAAM,MAAM,WAAW,GAAG,eAAe,CAAC;AAK1C,qBAAa,UAAU;gBACT,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,CAAC,EAAE,OAAO;IAKlD,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAE9C,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,MAAM;YAMA,OAAO;YAYP,UAAU;IAUxB,OAAO,CAAC,SAAS;YAIH,QAAQ;IA6BhB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB9D,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBtB,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAItC,SAAS,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAK5C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvC,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC;IAUP,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjE,SAAS,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,CAAC,EACR,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAIV,MAAM,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CAWrE"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-staff-permission.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/check-staff-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAUpC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAa5B,eAAO,MAAM,cAAc,GACzB,GAAG,OAAO,EACV,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,EAAE,CAQlB,CAAC;AAwEF,eAAO,MAAM,uBAAuB,GAClC,GAAG,OAAO,EACV,iBAGG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KACrE,OAAO,CAAC,kBAAkB,CAQ5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,mBAAmB,oBAAoB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,KACtE,OAAO,CAAC,OAAO,CAOjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,GAAG,OAAO,EACV,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,KACzD,OAAO,CAAC,IAAI,CAKd,CAAC"}
1
+ {"version":3,"file":"check-staff-permission.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/check-staff-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAUpC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAa5B,eAAO,MAAM,cAAc,GACzB,GAAG,OAAO,EACV,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,EAAE,CAQlB,CAAC;AAkDF,eAAO,MAAM,uBAAuB,GAClC,GAAG,OAAO,EACV,iBAGG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KACrE,OAAO,CAAC,kBAAkB,CAQ5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,mBAAmB,oBAAoB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,KACtE,OAAO,CAAC,OAAO,CAOjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,GAAG,OAAO,EACV,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,KACzD,OAAO,CAAC,IAAI,CAKd,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Context } from "hono";
2
+ export declare const resolveClientIp: (c: Context) => string;
3
+ export declare const clientIpMiddleware: (c: Context, next: () => Promise<void>) => Promise<void>;
4
+ //# sourceMappingURL=client-ip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-ip.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/client-ip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAwDpC,eAAO,MAAM,eAAe,GAAI,GAAG,OAAO,KAAG,MACN,CAAC;AAExC,eAAO,MAAM,kBAAkB,GAC7B,GAAG,OAAO,EACV,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,kBAK1B,CAAC"}
@@ -0,0 +1 @@
1
+ const UNKNOWN_CLIENT_IP="127.0.0.1";const isRecord=value=>typeof value==="object"&&value!==null;const nonEmptyString=value=>typeof value==="string"&&value.length>0?value:undefined;const nodeSocketAddress=env=>{const incoming=env.incoming;if(!isRecord(incoming))return undefined;const socket=incoming.socket;if(!isRecord(socket))return undefined;return nonEmptyString(socket.remoteAddress)};const bunSocketAddress=(env,request)=>{const server=env.server;if(!isRecord(server))return undefined;const requestIP=server.requestIP;if(typeof requestIP!=="function")return undefined;const info=requestIP(request);return isRecord(info)?nonEmptyString(info.address):undefined};const denoSocketAddress=env=>{const remoteAddr=env.remoteAddr;return isRecord(remoteAddr)?nonEmptyString(remoteAddr.hostname):undefined};const socketAddress=c=>{const env=c.env;if(!isRecord(env))return undefined;return nodeSocketAddress(env)??bunSocketAddress(env,c.req.raw)??denoSocketAddress(env)};export const resolveClientIp=c=>socketAddress(c)??UNKNOWN_CLIENT_IP;export const clientIpMiddleware=async(c,next)=>{c.set("ipAddress",resolveClientIp(c));await next()};
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAWtC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAOlC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtC,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACvE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAC/B,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC1C,EACA,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,aAAa,EACb,YAAY,EACZ,QAAa,EACb,MAAW,EACX,UAAe,EACf,cAAc,EACd,UAAe,GAChB,EAAE;IACD,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CA6B3C"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAEtC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAElC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtC,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACvE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAC/B,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC1C,EACA,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,aAAa,EACb,YAAY,EACZ,QAAa,EACb,MAAW,EACX,UAAe,EACf,cAAc,EACd,UAAe,GAChB,EAAE;IACD,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CA6B3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"openapi-tags.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/openapi-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAsBtD,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,WACqB,CAAC;AAGhE,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,EAAE,SAAS,SAAS,MAAM,EAAE,WAMrE,CAAC;AAgBF,eAAO,MAAM,eAAe,GAC1B,QAAQ,qBAAqB,EAC7B,UAAU,MAAM,EAChB,UAAS,SAAS,MAAM,EAAO,KAC9B,MAAM,EA+BR,CAAC"}
1
+ {"version":3,"file":"openapi-tags.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/openapi-tags.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAUtD,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,WACqB,CAAC;AAGhE,eAAO,MAAM,SAAS,GAAI,UAAU,MAAM,EAAE,SAAS,SAAS,MAAM,EAAE,WAMrE,CAAC;AAgBF,eAAO,MAAM,eAAe,GAC1B,QAAQ,qBAAqB,EAC7B,UAAU,MAAM,EAChB,UAAS,SAAS,MAAM,EAAO,KAC9B,MAAM,EA+BR,CAAC"}
@@ -1,17 +1,21 @@
1
1
  import type { PgColumn } from "drizzle-orm/pg-core";
2
2
  export type PaginationCursorValue = boolean | null | number | string;
3
+ export type PaginationCursorIdentifier = number | string;
3
4
  export interface PaginationCursor {
4
5
  column: string;
5
- id: number;
6
+ id: PaginationCursorIdentifier;
6
7
  value: PaginationCursorValue;
7
8
  }
8
9
  export declare const isCursorSortableColumn: (column: PgColumn) => boolean;
9
10
  export declare const cursorValueOf: (column: PgColumn, value: unknown) => PaginationCursorValue;
10
11
  export declare const cursorValueForColumn: (column: PgColumn, value: PaginationCursorValue) => unknown;
11
12
  export declare const cursorValueIsCanonicalText: (column: PgColumn) => boolean;
13
+ export declare const isPaginationIdentifierColumn: (column: PgColumn) => boolean;
14
+ export declare const cursorIdentifierOf: (column: PgColumn, value: unknown) => PaginationCursorIdentifier;
15
+ export declare const cursorIdentifierForColumn: (column: PgColumn, value: PaginationCursorIdentifier) => bigint | number | string;
12
16
  export declare const encodePaginationCursor: (cursor: PaginationCursor) => string;
13
- export declare const decodePaginationCursor: (raw: string, { column, primaryKey }: {
17
+ export declare const decodePaginationCursor: (raw: string, { column, primary }: {
14
18
  column: string;
15
- primaryKey: string;
19
+ primary: PgColumn;
16
20
  }) => PaginationCursor;
17
21
  //# sourceMappingURL=pagination-cursor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pagination-cursor.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/pagination-cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AA+BpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAE/B,MAAM,EAAE,MAAM,CAAC;IAEf,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AAiFD,eAAO,MAAM,sBAAsB,GAAI,QAAQ,QAAQ,KAAG,OAGV,CAAC;AA2LjD,eAAO,MAAM,aAAa,GACxB,QAAQ,QAAQ,EAChB,OAAO,OAAO,KACb,qBAsCF,CAAC;AAoBF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,QAAQ,EAChB,OAAO,qBAAqB,KAC3B,OA6CF,CAAC;AAWF,eAAO,MAAM,0BAA0B,GAAI,QAAQ,QAAQ,KAAG,OAC/B,CAAC;AAEhC,eAAO,MAAM,sBAAsB,GAAI,QAAQ,gBAAgB,KAAG,MACC,CAAC;AA6BpE,eAAO,MAAM,sBAAsB,GACjC,KAAK,MAAM,EACX,wBAAwB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,KAC7D,gBA+CF,CAAC"}
1
+ {"version":3,"file":"pagination-cursor.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/pagination-cursor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAGrE,MAAM,MAAM,0BAA0B,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,gBAAgB;IAE/B,MAAM,EAAE,MAAM,CAAC;IAEf,EAAE,EAAE,0BAA0B,CAAC;IAE/B,KAAK,EAAE,qBAAqB,CAAC;CAC9B;AA2CD,eAAO,MAAM,sBAAsB,GAAI,QAAQ,QAAQ,KAAG,OAGV,CAAC;AAsJjD,eAAO,MAAM,aAAa,GACxB,QAAQ,QAAQ,EAChB,OAAO,OAAO,KACb,qBA0CF,CAAC;AAoBF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,QAAQ,EAChB,OAAO,qBAAqB,KAC3B,OAuDF,CAAC;AAWF,eAAO,MAAM,0BAA0B,GAAI,QAAQ,QAAQ,KAAG,OAC/B,CAAC;AAgBhC,eAAO,MAAM,4BAA4B,GAAI,QAAQ,QAAQ,KAAG,OACxB,CAAC;AAEzC,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,QAAQ,EAChB,OAAO,OAAO,KACb,0BAsBF,CAAC;AAEF,eAAO,MAAM,yBAAyB,GACpC,QAAQ,QAAQ,EAChB,OAAO,0BAA0B,KAChC,MAAM,GAAG,MAAM,GAAG,MAuBpB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,QAAQ,gBAAgB,KAAG,MACC,CAAC;AA6BpE,eAAO,MAAM,sBAAsB,GACjC,KAAK,MAAM,EACX,qBAAqB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,KACzD,gBAgDF,CAAC"}
@@ -1 +1 @@
1
- import{HTTPException}from"hono/http-exception";const KIND_BY_DATA_TYPE={bigint:"bigint",boolean:"boolean",date:"temporal",number:"number",string:"string"};const baseDataTypeOf=column=>column.dataType.split(" ")[0];const isArrayColumn=column=>column.dimensions>0;const badRequest=message=>new HTTPException(400,{message});const INVALID_CURSOR="Invalid pagination cursor.";const temporalTypeOf=column=>{const sqlType=column.getSQLType().toLowerCase();if(sqlType.startsWith("timestamp"))return"timestamp";if(sqlType.startsWith("time"))return"time";if(sqlType.startsWith("date"))return"date";return null};const hasTimeZone=column=>column.getSQLType().toLowerCase().includes("with time zone");export const isCursorSortableColumn=column=>!isArrayColumn(column)&&(temporalTypeOf(column)!==null||baseDataTypeOf(column)in KIND_BY_DATA_TYPE);const kindOf=column=>{if(!isArrayColumn(column)&&temporalTypeOf(column))return"temporal";const kind=isArrayColumn(column)?undefined:KIND_BY_DATA_TYPE[baseDataTypeOf(column)];if(!kind){throw badRequest(`The "${column.name}" column cannot be used as a pagination cursor.`)}return kind};const TEMPORAL_GRAMMAR={date:/^(?<year>\d{4,6})-(?<month>\d{2})-(?<day>\d{2})$/,time:/^(?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2})(?:\.\d{1,6})?(?<zone>.*)$/,timestamp:/^(?<year>\d{4,6})-(?<month>\d{2})-(?<day>\d{2})(?:[ T](?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2})(?:\.\d{1,6})?(?<zone>.*))?$/};const ZONE=/^([+-])(\d{2})(?::?(\d{2}))?(?::?(\d{2}))?$/;const DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31];const isLeapYear=year=>year%4===0&&year%100!==0||year%400===0;const isRealZone=(raw,allowed)=>{if(raw==="")return true;if(!allowed)return false;if(raw==="Z")return true;const match=ZONE.exec(raw);if(!match)return false;const[,,hours,minutes="0",seconds="0"]=match;return Number(hours)<=15&&Number(minutes)<=59&&Number(seconds)<=59};const isRealTemporal=(column,temporal,value)=>{const match=TEMPORAL_GRAMMAR[temporal].exec(value);if(!match)return false;const{day,hour,minute,month,second,year,zone}=match.groups??{};if(year!==undefined){const[y,m,d]=[Number(year),Number(month),Number(day)];if(y<1||y>294276||m<1||m>12)return false;const limit=m===2&&isLeapYear(y)?29:DAYS_IN_MONTH[m-1];if(d<1||d>limit)return false}if(hour===undefined)return true;if(Number(hour)>23||Number(minute)>59||Number(second)>59){return false}return isRealZone(zone??"",temporal==="timestamp"||hasTimeZone(column))};const DECIMAL_INTEGER=/^-?\d+$/;const pad=(value,width=2)=>String(value).padStart(width,"0");const canonicalFromDate=(column,value)=>{const time=value.getTime();if(!Number.isFinite(time)){throw new Error(`Cannot build a pagination cursor from an invalid date on "${column.name}".`)}const zone=hasTimeZone(column)?"+00":"";const date=`${pad(value.getUTCFullYear(),4)}-${pad(value.getUTCMonth()+1)}-${pad(value.getUTCDate())}`;const clock=`${pad(value.getUTCHours())}:${pad(value.getUTCMinutes())}:${pad(value.getUTCSeconds())}.${pad(value.getUTCMilliseconds(),3)}`;switch(temporalTypeOf(column)){case"date":return date;case"time":return`${clock}${zone}`;default:return`${date} ${clock}${zone}`}};export const cursorValueOf=(column,value)=>{if(value===null||value===undefined)return null;switch(kindOf(column)){case"bigint":{if(typeof value==="bigint")return value.toString();if(typeof value==="number")return String(value);break}case"boolean":{if(typeof value==="boolean")return value;break}case"number":{if(typeof value==="number")return value;break}case"temporal":{if(value instanceof Date)return canonicalFromDate(column,value);if(typeof value==="string")return value;break}default:{if(typeof value==="string")return value;break}}throw new Error(`Cannot build a pagination cursor from a ${typeof value} value of "${column.name}".`)};export const cursorValueForColumn=(column,value)=>{if(value===null)return null;switch(kindOf(column)){case"bigint":{if(typeof value!=="string"||!DECIMAL_INTEGER.test(value)){throw badRequest(INVALID_CURSOR)}return BigInt(value)}case"boolean":{if(typeof value!=="boolean")throw badRequest(INVALID_CURSOR);return value}case"number":{if(typeof value!=="number"||!Number.isFinite(value)){throw badRequest(INVALID_CURSOR)}return value}case"temporal":{const temporal=temporalTypeOf(column);if(typeof value!=="string"||!temporal||!isRealTemporal(column,temporal,value)){throw badRequest(INVALID_CURSOR)}return value}default:{if(typeof value!=="string")throw badRequest(INVALID_CURSOR);return value}}};export const cursorValueIsCanonicalText=column=>kindOf(column)==="temporal";export const encodePaginationCursor=cursor=>Buffer.from(JSON.stringify(cursor),"utf8").toString("base64url");const LEGACY_CURSOR=/^[1-9]\d{0,14}$/;const isCursorValue=value=>value===null||typeof value==="boolean"||typeof value==="number"||typeof value==="string";export const decodePaginationCursor=(raw,{column,primaryKey})=>{const trimmed=raw.trim();if(trimmed==="")throw badRequest(INVALID_CURSOR);if(LEGACY_CURSOR.test(trimmed)){if(column!==primaryKey){throw badRequest(`This cursor cannot be used with the "${column}" ordering. Start from the first page.`)}const id=Number(trimmed);return{column,id,value:id}}let parsed;try{parsed=JSON.parse(Buffer.from(trimmed,"base64url").toString("utf8"))}catch{throw badRequest(INVALID_CURSOR)}if(typeof parsed!=="object"||parsed===null||Array.isArray(parsed)){throw badRequest(INVALID_CURSOR)}const candidate=parsed;const id=candidate.id;if(typeof candidate.column!=="string"||typeof id!=="number"||!Number.isSafeInteger(id)||id<=0||!isCursorValue(candidate.value)){throw badRequest(INVALID_CURSOR)}if(candidate.column!==column){throw badRequest(`This cursor was issued for a different ordering. Start from the first page.`)}return{column,id,value:candidate.value}};
1
+ import{HTTPException}from"hono/http-exception";const KIND_BY_DATA_TYPE={bigint:"bigint",boolean:"boolean",date:"temporal",number:"number",string:"string"};const baseDataTypeOf=column=>column.dataType.split(" ")[0];const isUuidColumn=column=>column.getSQLType().toLowerCase()==="uuid";const isArrayColumn=column=>column.dimensions>0;const badRequest=message=>new HTTPException(400,{message});const INVALID_CURSOR="Invalid pagination cursor.";const temporalTypeOf=column=>{const sqlType=column.getSQLType().toLowerCase();if(sqlType.startsWith("timestamp"))return"timestamp";if(sqlType.startsWith("time"))return"time";if(sqlType.startsWith("date"))return"date";return null};const hasTimeZone=column=>column.getSQLType().toLowerCase().includes("with time zone");export const isCursorSortableColumn=column=>!isArrayColumn(column)&&(temporalTypeOf(column)!==null||baseDataTypeOf(column)in KIND_BY_DATA_TYPE);const kindOf=column=>{if(!isArrayColumn(column)&&temporalTypeOf(column))return"temporal";if(!isArrayColumn(column)&&isUuidColumn(column))return"uuid";const kind=isArrayColumn(column)?undefined:KIND_BY_DATA_TYPE[baseDataTypeOf(column)];if(!kind){throw badRequest(`The "${column.name}" column cannot be used as a pagination cursor.`)}return kind};const TEMPORAL_GRAMMAR={date:/^(?<year>\d{4,6})-(?<month>\d{2})-(?<day>\d{2})$/,time:/^(?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2})(?:\.\d{1,6})?(?<zone>.*)$/,timestamp:/^(?<year>\d{4,6})-(?<month>\d{2})-(?<day>\d{2})(?:[ T](?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2})(?:\.\d{1,6})?(?<zone>.*))?$/};const ZONE=/^([+-])(\d{2})(?::?(\d{2}))?(?::?(\d{2}))?$/;const DAYS_IN_MONTH=[31,28,31,30,31,30,31,31,30,31,30,31];const isLeapYear=year=>year%4===0&&year%100!==0||year%400===0;const isRealZone=(raw,allowed)=>{if(raw==="")return true;if(!allowed)return false;if(raw==="Z")return true;const match=ZONE.exec(raw);if(!match)return false;const[,,hours,minutes="0",seconds="0"]=match;return Number(hours)<=15&&Number(minutes)<=59&&Number(seconds)<=59};const isRealTemporal=(column,temporal,value)=>{const match=TEMPORAL_GRAMMAR[temporal].exec(value);if(!match)return false;const{day,hour,minute,month,second,year,zone}=match.groups??{};if(year!==undefined){const[y,m,d]=[Number(year),Number(month),Number(day)];if(y<1||y>294276||m<1||m>12)return false;const limit=m===2&&isLeapYear(y)?29:DAYS_IN_MONTH[m-1];if(d<1||d>limit)return false}if(hour===undefined)return true;if(Number(hour)>23||Number(minute)>59||Number(second)>59){return false}return isRealZone(zone??"",temporal==="timestamp"||hasTimeZone(column))};const DECIMAL_INTEGER=/^-?\d+$/;const POSITIVE_DECIMAL_INTEGER=/^[1-9]\d*$/;const UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;const PG_BIGINT_MIN=-0x8000000000000000n;const PG_BIGINT_MAX=0x7fffffffffffffffn;const postgresBigint=value=>{const parsed=BigInt(value);return parsed>=PG_BIGINT_MIN&&parsed<=PG_BIGINT_MAX?parsed:undefined};const pad=(value,width=2)=>String(value).padStart(width,"0");const canonicalFromDate=(column,value)=>{const time=value.getTime();if(!Number.isFinite(time)){throw new Error(`Cannot build a pagination cursor from an invalid date on "${column.name}".`)}const zone=hasTimeZone(column)?"+00":"";const date=`${pad(value.getUTCFullYear(),4)}-${pad(value.getUTCMonth()+1)}-${pad(value.getUTCDate())}`;const clock=`${pad(value.getUTCHours())}:${pad(value.getUTCMinutes())}:${pad(value.getUTCSeconds())}.${pad(value.getUTCMilliseconds(),3)}`;switch(temporalTypeOf(column)){case"date":return date;case"time":return`${clock}${zone}`;default:return`${date} ${clock}${zone}`}};export const cursorValueOf=(column,value)=>{if(value===null||value===undefined)return null;switch(kindOf(column)){case"bigint":{if(typeof value==="bigint")return value.toString();if(typeof value==="number")return String(value);break}case"boolean":{if(typeof value==="boolean")return value;break}case"number":{if(typeof value==="number")return value;break}case"temporal":{if(value instanceof Date)return canonicalFromDate(column,value);if(typeof value==="string")return value;break}case"uuid":{if(typeof value==="string"&&UUID.test(value))return value;break}default:{if(typeof value==="string")return value;break}}throw new Error(`Cannot build a pagination cursor from a ${typeof value} value of "${column.name}".`)};export const cursorValueForColumn=(column,value)=>{if(value===null)return null;switch(kindOf(column)){case"bigint":{if(typeof value!=="string"||!DECIMAL_INTEGER.test(value)){throw badRequest(INVALID_CURSOR)}const parsed=postgresBigint(value);if(parsed===undefined)throw badRequest(INVALID_CURSOR);return parsed}case"boolean":{if(typeof value!=="boolean")throw badRequest(INVALID_CURSOR);return value}case"number":{if(typeof value!=="number"||!Number.isFinite(value)){throw badRequest(INVALID_CURSOR)}return value}case"temporal":{const temporal=temporalTypeOf(column);if(typeof value!=="string"||!temporal||!isRealTemporal(column,temporal,value)){throw badRequest(INVALID_CURSOR)}return value}case"uuid":{if(typeof value!=="string"||!UUID.test(value)){throw badRequest(INVALID_CURSOR)}return value}default:{if(typeof value!=="string")throw badRequest(INVALID_CURSOR);return value}}};export const cursorValueIsCanonicalText=column=>kindOf(column)==="temporal";const identifierKindOf=column=>{if(isArrayColumn(column))return undefined;if(isUuidColumn(column))return"uuid";const baseDataType=baseDataTypeOf(column);if(baseDataType==="bigint"||baseDataType==="number"){return baseDataType}return undefined};export const isPaginationIdentifierColumn=column=>identifierKindOf(column)!==undefined;export const cursorIdentifierOf=(column,value)=>{switch(identifierKindOf(column)){case"bigint":if(typeof value==="bigint"&&value>0n)return value.toString();break;case"number":if(typeof value==="number"&&Number.isSafeInteger(value)&&value>0){return value}break;case"uuid":if(typeof value==="string"&&UUID.test(value))return value;break}throw new Error(`Cannot build a pagination cursor from the identifier on "${column.name}".`)};export const cursorIdentifierForColumn=(column,value)=>{switch(identifierKindOf(column)){case"bigint":if(typeof value==="string"&&POSITIVE_DECIMAL_INTEGER.test(value)){const parsed=postgresBigint(value);if(parsed!==undefined)return parsed}break;case"number":if(typeof value==="number"&&Number.isSafeInteger(value)&&value>0){return value}break;case"uuid":if(typeof value==="string"&&UUID.test(value))return value;break}throw badRequest(INVALID_CURSOR)};export const encodePaginationCursor=cursor=>Buffer.from(JSON.stringify(cursor),"utf8").toString("base64url");const LEGACY_CURSOR=/^[1-9]\d{0,14}$/;const isCursorValue=value=>value===null||typeof value==="boolean"||typeof value==="number"||typeof value==="string";export const decodePaginationCursor=(raw,{column,primary})=>{const trimmed=raw.trim();if(trimmed==="")throw badRequest(INVALID_CURSOR);if(LEGACY_CURSOR.test(trimmed)){if(column!==primary.name){throw badRequest(`This cursor cannot be used with the "${column}" ordering. Start from the first page.`)}const id=Number(trimmed);cursorIdentifierForColumn(primary,id);return{column,id,value:id}}let parsed;try{parsed=JSON.parse(Buffer.from(trimmed,"base64url").toString("utf8"))}catch{throw badRequest(INVALID_CURSOR)}if(typeof parsed!=="object"||parsed===null||Array.isArray(parsed)){throw badRequest(INVALID_CURSOR)}const candidate=parsed;const id=candidate.id;if(typeof candidate.column!=="string"||typeof id!=="number"&&typeof id!=="string"||!isCursorValue(candidate.value)){throw badRequest(INVALID_CURSOR)}cursorIdentifierForColumn(primary,id);if(candidate.column!==column){throw badRequest(`This cursor was issued for a different ordering. Start from the first page.`)}return{column,id,value:candidate.value}};
@@ -1 +1 @@
1
- {"version":3,"file":"permission-staff.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/permission-staff.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,yBAAyB,GACnC,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,yBAAyB,EAAE,CAC5B,CAAC;AAOF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,CAAC;AAOxD,eAAO,MAAM,+BAA+B,GAC1C,UAAS,2BAAgC,KACxC,sBAUA,CAAC;AAQJ,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,sBAAsB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;CACf"}
1
+ {"version":3,"file":"permission-staff.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/permission-staff.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,yBAAyB,GACnC,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,yBAAyB,EAAE,CAC5B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,CAAC;AAExD,eAAO,MAAM,+BAA+B,GAC1C,UAAS,2BAAgC,KACxC,sBAUA,CAAC;AAEJ,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,sBAAsB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;CACf"}
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,eAAe,EACf,cAAc,GACf,EAAE;IAOD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC;IACZ,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,GAAG,oBAAoB,CA6DvB"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAO1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,eAAe,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC1C,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,eAAe,EACf,cAAc,GACf,EAAE;IACD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC;IACZ,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,GAAG,oBAAoB,CA6DvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"staff-permission-cache.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/staff-permission-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAW5B,eAAO,MAAM,mCAAmC,KAAK,CAAC;AAqCtD,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,MAAM;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAClD,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAGwC,CAAC;AAG7E,eAAO,MAAM,qBAAqB,GAChC,GAAG,OAAO,EACV,MAAM;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACnD,OAAO,kBAAkB,KACxB,OAAO,CAAC,IAAI,CAQd,CAAC;AAiBF,eAAO,MAAM,6BAA6B,GACxC,GAAG,OAAO,KACT,OAAO,CAAC,IAAI,CAEd,CAAC;AASF,eAAO,MAAM,iCAAiC,GAC5C,GAAG,OAAO,EACV,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAQd,CAAC;AAWF,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,OAAO;IAAE,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,KACxD,OAAO,CAAC,IAAI,CAQd,CAAC"}
1
+ {"version":3,"file":"staff-permission-cache.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/staff-permission-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,mCAAmC,KAAK,CAAC;AAetD,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,MAAM;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAClD,OAAO,CAAC,IAAI,GAAG,kBAAkB,CAGwC,CAAC;AAG7E,eAAO,MAAM,qBAAqB,GAChC,GAAG,OAAO,EACV,MAAM;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EACnD,OAAO,kBAAkB,KACxB,OAAO,CAAC,IAAI,CAQd,CAAC;AAiBF,eAAO,MAAM,6BAA6B,GACxC,GAAG,OAAO,KACT,OAAO,CAAC,IAAI,CAEd,CAAC;AASF,eAAO,MAAM,iCAAiC,GAC5C,GAAG,OAAO,EACV,QAAQ,MAAM,KACb,OAAO,CAAC,IAAI,CAQd,CAAC;AAWF,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,OAAO;IAAE,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAAE,KACxD,OAAO,CAAC,IAAI,CAQd,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const emailAliases: (email: string) => string[];
2
+ export declare const matchesEmail: (email: string) => import("drizzle-orm").SQL<unknown>;
3
+ export declare const pickAccountForEmail: <T extends {
4
+ email: string;
5
+ }>(rows: T[], email: string) => T | undefined;
6
+ //# sourceMappingURL=user-email-lookup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-email-lookup.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/user-email-lookup.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,KAAG,MAAM,EAKlD,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,OAAO,MAAM,uCACM,CAAC;AAEjD,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EAC7D,MAAM,CAAC,EAAE,EACT,OAAO,MAAM,KACZ,CAAC,GAAG,SAIN,CAAC"}
@@ -0,0 +1 @@
1
+ import{inArray}from"drizzle-orm";import{core_users}from"../../database/users.js";import{canonicalizeEmail,normalizeEmailAddress}from"../../lib/email-canonical.js";export const emailAliases=email=>{const normalized=normalizeEmailAddress(email);const canonical=canonicalizeEmail(normalized);return canonical===normalized?[normalized]:[normalized,canonical]};export const matchesEmail=email=>inArray(core_users.email,emailAliases(email));export const pickAccountForEmail=(rows,email)=>{const normalized=normalizeEmailAddress(email);return rows.find(row=>row.email===normalized)??rows[0]};
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQ5C,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAQzC,MAAM,WAAW,sBAAsB,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAEzE,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,IAAI,EAAE,QAAQ,CAAC;IAEf,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAE5B,EAAE,EAAE,gBAAgB,CAAC;CACtB;AAOD,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrE;AAOD,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,SAAS,EAAE;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CACT,MAAM,EAAE,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B,GAAG,oBAAoB,CAEvB"}
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC,MAAM,WAAW,sBAAsB,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO;IAEzE,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAEvB,IAAI,EAAE,QAAQ,CAAC;IAEf,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAE5B,EAAE,EAAE,gBAAgB,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAKrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CAAC,MAAM,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACrE;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,QAAQ,GAAG,OAAO,EAAE,KAAK,GAAG,OAAO,EAAE,SAAS,EAAE;IAC7E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,CACT,MAAM,EAAE,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC,KAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3B,GAAG,oBAAoB,CAEvB"}
@@ -1,10 +1,11 @@
1
- import type { ColumnDataNumberConstraint, Placeholder, SQL } from "drizzle-orm";
1
+ import type { ColumnDataBigIntConstraint, ColumnDataNumberConstraint, Placeholder, SQL } from "drizzle-orm";
2
2
  import type { PgColumn, PgColumnBaseConfig, PgTableWithColumns, TableConfig } from "drizzle-orm/pg-core";
3
3
  import type { Context } from "hono";
4
4
  import { z } from "@hono/zod-openapi";
5
5
  export declare const PAGINATION_CURSOR_FIELD = "__cursorValue";
6
6
  export type PaginationCursorSelection = Record<typeof PAGINATION_CURSOR_FIELD, PgColumn | SQL<string>>;
7
- export type PaginationCursorColumn = PgColumn<any, PgColumnBaseConfig<"number" | `number ${ColumnDataNumberConstraint}`>>;
7
+ type PaginationIdentifierDataType = "bigint" | "number" | "string uuid" | `bigint ${ColumnDataBigIntConstraint}` | `number ${ColumnDataNumberConstraint}`;
8
+ export type PaginationCursorColumn = PgColumn<any, PgColumnBaseConfig<PaginationIdentifierDataType>>;
8
9
  export declare function withPagination<QueryMin extends Record<string, unknown>, T extends TableConfig>({ query, table, params, search, where: whereFromParams, primaryCursor, orderBy: orderByFromParams, c, }: {
9
10
  c: Context;
10
11
  orderBy: {
@@ -53,4 +54,5 @@ export declare const zodPaginationQuery: z.ZodObject<{
53
54
  first: z.ZodOptional<z.ZodString>;
54
55
  last: z.ZodOptional<z.ZodString>;
55
56
  }, z.core.$strip>;
57
+ export {};
56
58
  //# sourceMappingURL=with-pagination.d.ts.map