@vitnode/core 1.2.0-canary.74 → 1.2.0-canary.75

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 (721) hide show
  1. package/config/next.config.ts +4 -0
  2. package/dist/scripts/plugin.d.ts.map +1 -1
  3. package/dist/scripts/prepare-database.d.ts.map +1 -1
  4. package/dist/scripts/scripts.js +10 -39
  5. package/dist/scripts/shared/file-utils.d.ts +1 -0
  6. package/dist/scripts/shared/file-utils.d.ts.map +1 -1
  7. package/dist/scripts/shared/file-utils.test.d.ts +2 -0
  8. package/dist/scripts/shared/file-utils.test.d.ts.map +1 -0
  9. package/dist/src/api/config.d.ts.map +1 -1
  10. package/dist/src/api/config.js +1 -1
  11. package/dist/src/api/lib/cache-client.d.ts +4 -0
  12. package/dist/src/api/lib/cache-client.d.ts.map +1 -0
  13. package/dist/src/api/lib/cache-client.js +1 -0
  14. package/dist/src/api/lib/cache.d.ts +32 -0
  15. package/dist/src/api/lib/cache.d.ts.map +1 -0
  16. package/dist/src/api/lib/cache.js +1 -0
  17. package/dist/src/api/lib/cache.test.d.ts +2 -0
  18. package/dist/src/api/lib/cache.test.d.ts.map +1 -0
  19. package/dist/src/api/lib/cache.test.js +1 -0
  20. package/dist/src/api/lib/check-staff-permission.d.ts +20 -0
  21. package/dist/src/api/lib/check-staff-permission.d.ts.map +1 -0
  22. package/dist/src/api/lib/check-staff-permission.js +1 -0
  23. package/dist/src/api/lib/module.d.ts +4 -1
  24. package/dist/src/api/lib/module.d.ts.map +1 -1
  25. package/dist/src/api/lib/module.js +1 -1
  26. package/dist/src/api/lib/permission-staff.d.ts +35 -0
  27. package/dist/src/api/lib/permission-staff.d.ts.map +1 -0
  28. package/dist/src/api/lib/permission-staff.js +1 -0
  29. package/dist/src/api/lib/plugin.d.ts +8 -3
  30. package/dist/src/api/lib/plugin.d.ts.map +1 -1
  31. package/dist/src/api/lib/plugin.js +1 -1
  32. package/dist/src/api/lib/queue.d.ts +14 -0
  33. package/dist/src/api/lib/queue.d.ts.map +1 -0
  34. package/dist/src/api/lib/queue.js +1 -0
  35. package/dist/src/api/lib/resolve-role-names.d.ts +7 -0
  36. package/dist/src/api/lib/resolve-role-names.d.ts.map +1 -0
  37. package/dist/src/api/lib/resolve-role-names.js +1 -0
  38. package/dist/src/api/lib/route.d.ts +7 -1
  39. package/dist/src/api/lib/route.d.ts.map +1 -1
  40. package/dist/src/api/lib/route.js +1 -1
  41. package/dist/src/api/lib/staff-permission.d.ts +4 -0
  42. package/dist/src/api/lib/staff-permission.d.ts.map +1 -0
  43. package/dist/src/api/lib/staff-permission.js +1 -0
  44. package/dist/src/api/middlewares/global.middleware.d.ts +18 -5
  45. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
  46. package/dist/src/api/middlewares/global.middleware.js +1 -1
  47. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts +2 -1
  48. package/dist/src/api/middlewares/rate-limiter.middleware.d.ts.map +1 -1
  49. package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -1
  50. package/dist/src/api/models/email.d.ts +11 -1
  51. package/dist/src/api/models/email.d.ts.map +1 -1
  52. package/dist/src/api/models/email.js +1 -1
  53. package/dist/src/api/models/email.test.d.ts +2 -0
  54. package/dist/src/api/models/email.test.d.ts.map +1 -0
  55. package/dist/src/api/models/email.test.js +1 -0
  56. package/dist/src/api/models/queue.d.ts +17 -0
  57. package/dist/src/api/models/queue.d.ts.map +1 -0
  58. package/dist/src/api/models/queue.js +1 -0
  59. package/dist/src/api/models/queue.test.d.ts +2 -0
  60. package/dist/src/api/models/queue.test.d.ts.map +1 -0
  61. package/dist/src/api/models/queue.test.js +1 -0
  62. package/dist/src/api/models/session-admin.d.ts.map +1 -1
  63. package/dist/src/api/models/session-admin.js +1 -1
  64. package/dist/src/api/models/session-cache.d.ts +8 -0
  65. package/dist/src/api/models/session-cache.d.ts.map +1 -0
  66. package/dist/src/api/models/session-cache.js +1 -0
  67. package/dist/src/api/models/session.d.ts.map +1 -1
  68. package/dist/src/api/models/session.js +1 -1
  69. package/dist/src/api/modules/admin/admin.module.d.ts +694 -8
  70. package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
  71. package/dist/src/api/modules/admin/admin.module.js +1 -1
  72. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts +64 -2
  73. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts.map +1 -1
  74. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -1
  75. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts +64 -0
  76. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts.map +1 -0
  77. package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.js +1 -0
  78. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts +65 -0
  79. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts.map +1 -0
  80. package/dist/src/api/modules/admin/advanced/queue/routes/get.route.js +1 -0
  81. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts +122 -2
  82. package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts.map +1 -1
  83. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -1
  84. package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts +49 -0
  85. package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts.map +1 -0
  86. package/dist/src/api/modules/admin/debug/routes/integrations.route.js +1 -0
  87. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts +2 -2
  88. package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts.map +1 -1
  89. package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -1
  90. package/dist/src/api/modules/admin/debug/routes/queue.route.d.ts +42 -0
  91. package/dist/src/api/modules/admin/debug/routes/queue.route.d.ts.map +1 -0
  92. package/dist/src/api/modules/admin/debug/routes/queue.route.js +1 -0
  93. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.d.ts +43 -0
  94. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.d.ts.map +1 -0
  95. package/dist/src/api/modules/admin/debug/routes/send-test-email.route.js +1 -0
  96. package/dist/src/api/modules/admin/routes/session.route.d.ts +8 -0
  97. package/dist/src/api/modules/admin/routes/session.route.d.ts.map +1 -1
  98. package/dist/src/api/modules/admin/routes/session.route.js +1 -1
  99. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts +38 -0
  100. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts.map +1 -0
  101. package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.js +1 -0
  102. package/dist/src/api/modules/admin/staff/lib/schema.d.ts +107 -0
  103. package/dist/src/api/modules/admin/staff/lib/schema.d.ts.map +1 -0
  104. package/dist/src/api/modules/admin/staff/lib/schema.js +1 -0
  105. package/dist/src/api/modules/admin/staff/routes/admins.route.d.ts +76 -0
  106. package/dist/src/api/modules/admin/staff/routes/admins.route.d.ts.map +1 -0
  107. package/dist/src/api/modules/admin/staff/routes/admins.route.js +1 -0
  108. package/dist/src/api/modules/admin/staff/routes/create.route.d.ts +52 -0
  109. package/dist/src/api/modules/admin/staff/routes/create.route.d.ts.map +1 -0
  110. package/dist/src/api/modules/admin/staff/routes/create.route.js +1 -0
  111. package/dist/src/api/modules/admin/staff/routes/delete.route.d.ts +36 -0
  112. package/dist/src/api/modules/admin/staff/routes/delete.route.d.ts.map +1 -0
  113. package/dist/src/api/modules/admin/staff/routes/delete.route.js +1 -0
  114. package/dist/src/api/modules/admin/staff/routes/moderators.route.d.ts +76 -0
  115. package/dist/src/api/modules/admin/staff/routes/moderators.route.d.ts.map +1 -0
  116. package/dist/src/api/modules/admin/staff/routes/moderators.route.js +1 -0
  117. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.d.ts +32 -0
  118. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.d.ts.map +1 -0
  119. package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.js +1 -0
  120. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts +75 -0
  121. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts.map +1 -0
  122. package/dist/src/api/modules/admin/staff/routes/show-permissions.route.js +1 -0
  123. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.d.ts +62 -0
  124. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.d.ts.map +1 -0
  125. package/dist/src/api/modules/admin/staff/routes/update-permissions.route.js +1 -0
  126. package/dist/src/api/modules/admin/staff/staff.admin.module.d.ts +392 -0
  127. package/dist/src/api/modules/admin/staff/staff.admin.module.d.ts.map +1 -0
  128. package/dist/src/api/modules/admin/staff/staff.admin.module.js +1 -0
  129. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts +4 -0
  130. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts.map +1 -0
  131. package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.js +1 -0
  132. package/dist/src/api/modules/admin/users/routes/create.route.d.ts.map +1 -1
  133. package/dist/src/api/modules/admin/users/routes/create.route.js +1 -1
  134. package/dist/src/api/modules/admin/users/routes/list.route.d.ts +16 -0
  135. package/dist/src/api/modules/admin/users/routes/list.route.d.ts.map +1 -1
  136. package/dist/src/api/modules/admin/users/routes/list.route.js +1 -1
  137. package/dist/src/api/modules/admin/users/routes/show.route.d.ts +19 -2
  138. package/dist/src/api/modules/admin/users/routes/show.route.d.ts.map +1 -1
  139. package/dist/src/api/modules/admin/users/routes/show.route.js +1 -1
  140. package/dist/src/api/modules/admin/users/routes/update.route.d.ts +83 -0
  141. package/dist/src/api/modules/admin/users/routes/update.route.d.ts.map +1 -0
  142. package/dist/src/api/modules/admin/users/routes/update.route.js +1 -0
  143. package/dist/src/api/modules/admin/users/routes/verify-email.route.d.ts +2 -2
  144. package/dist/src/api/modules/admin/users/routes/verify-email.route.d.ts.map +1 -1
  145. package/dist/src/api/modules/admin/users/routes/verify-email.route.js +1 -1
  146. package/dist/src/api/modules/admin/users/users.admin.module.d.ts +110 -4
  147. package/dist/src/api/modules/admin/users/users.admin.module.d.ts.map +1 -1
  148. package/dist/src/api/modules/admin/users/users.admin.module.js +1 -1
  149. package/dist/src/api/modules/queue/cron/process-queue.cron.d.ts +2 -0
  150. package/dist/src/api/modules/queue/cron/process-queue.cron.d.ts.map +1 -0
  151. package/dist/src/api/modules/queue/cron/process-queue.cron.js +1 -0
  152. package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts +4 -0
  153. package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts.map +1 -0
  154. package/dist/src/api/modules/queue/helpers/process-queue-tasks.js +1 -0
  155. package/dist/src/api/modules/queue/queue.module.d.ts +2 -0
  156. package/dist/src/api/modules/queue/queue.module.d.ts.map +1 -0
  157. package/dist/src/api/modules/queue/queue.module.js +1 -0
  158. package/dist/src/api/modules/queue/tasks/send-email.task.d.ts +10 -0
  159. package/dist/src/api/modules/queue/tasks/send-email.task.d.ts.map +1 -0
  160. package/dist/src/api/modules/queue/tasks/send-email.task.js +1 -0
  161. package/dist/src/api/modules/users/routes/permissions.route.d.ts +26 -0
  162. package/dist/src/api/modules/users/routes/permissions.route.d.ts.map +1 -0
  163. package/dist/src/api/modules/users/routes/permissions.route.js +1 -0
  164. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -1
  165. package/dist/src/api/modules/users/routes/session.route.d.ts +1 -0
  166. package/dist/src/api/modules/users/routes/session.route.d.ts.map +1 -1
  167. package/dist/src/api/modules/users/routes/session.route.js +1 -1
  168. package/dist/src/api/modules/users/users.module.d.ts +24 -0
  169. package/dist/src/api/modules/users/users.module.d.ts.map +1 -1
  170. package/dist/src/api/modules/users/users.module.js +1 -1
  171. package/dist/src/api/plugin.d.ts.map +1 -1
  172. package/dist/src/api/plugin.js +1 -1
  173. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts +1 -1
  174. package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts.map +1 -1
  175. package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -1
  176. package/dist/src/components/form/auto-form.js +1 -1
  177. package/dist/src/components/form/fields/array.d.ts.map +1 -1
  178. package/dist/src/components/form/fields/checkbox.js +1 -1
  179. package/dist/src/components/form/fields/select.d.ts.map +1 -1
  180. package/dist/src/components/form/fields/select.js +1 -1
  181. package/dist/src/components/form/fields/switch.js +1 -1
  182. package/dist/src/components/staff-permission/provider.d.ts +13 -0
  183. package/dist/src/components/staff-permission/provider.d.ts.map +1 -0
  184. package/dist/src/components/staff-permission/provider.js +1 -0
  185. package/dist/src/components/switchers/langs/language-switcher.d.ts.map +1 -1
  186. package/dist/src/components/switchers/langs/language-switcher.js +1 -1
  187. package/dist/src/components/switchers/themes/theme-switcher.js +1 -1
  188. package/dist/src/components/table/filters.d.ts.map +1 -1
  189. package/dist/src/components/table/filters.js +1 -1
  190. package/dist/src/components/table/pagination.d.ts.map +1 -1
  191. package/dist/src/components/table/pagination.js +1 -1
  192. package/dist/src/components/theme-provider.d.ts +26 -0
  193. package/dist/src/components/theme-provider.d.ts.map +1 -0
  194. package/dist/src/components/theme-provider.js +1 -0
  195. package/dist/src/components/tiptap/toolbar/actions/alignment-action.d.ts.map +1 -1
  196. package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -1
  197. package/dist/src/components/tiptap/toolbar/actions/headings-action.d.ts.map +1 -1
  198. package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -1
  199. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts.map +1 -1
  200. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -1
  201. package/dist/src/components/ui/accordion.d.ts +3 -3
  202. package/dist/src/components/ui/accordion.d.ts.map +1 -1
  203. package/dist/src/components/ui/accordion.js +1 -1
  204. package/dist/src/components/ui/alert-dialog.d.ts +10 -10
  205. package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
  206. package/dist/src/components/ui/alert-dialog.js +1 -1
  207. package/dist/src/components/ui/alert.d.ts +2 -2
  208. package/dist/src/components/ui/alert.d.ts.map +1 -1
  209. package/dist/src/components/ui/alert.js +1 -1
  210. package/dist/src/components/ui/aspect-ratio.d.ts +4 -2
  211. package/dist/src/components/ui/aspect-ratio.d.ts.map +1 -1
  212. package/dist/src/components/ui/aspect-ratio.js +1 -1
  213. package/dist/src/components/ui/avatar.d.ts +2 -2
  214. package/dist/src/components/ui/avatar.d.ts.map +1 -1
  215. package/dist/src/components/ui/avatar.js +1 -1
  216. package/dist/src/components/ui/badge.d.ts +3 -5
  217. package/dist/src/components/ui/badge.d.ts.map +1 -1
  218. package/dist/src/components/ui/badge.js +1 -1
  219. package/dist/src/components/ui/breadcrumb.d.ts +3 -4
  220. package/dist/src/components/ui/breadcrumb.d.ts.map +1 -1
  221. package/dist/src/components/ui/breadcrumb.js +1 -1
  222. package/dist/src/components/ui/button-client.d.ts +1 -1
  223. package/dist/src/components/ui/button-client.d.ts.map +1 -1
  224. package/dist/src/components/ui/button-client.js +1 -1
  225. package/dist/src/components/ui/button-group.d.ts +2 -3
  226. package/dist/src/components/ui/button-group.d.ts.map +1 -1
  227. package/dist/src/components/ui/button-group.js +1 -1
  228. package/dist/src/components/ui/button.d.ts +5 -5
  229. package/dist/src/components/ui/button.d.ts.map +1 -1
  230. package/dist/src/components/ui/button.js +1 -1
  231. package/dist/src/components/ui/card.d.ts +1 -1
  232. package/dist/src/components/ui/card.d.ts.map +1 -1
  233. package/dist/src/components/ui/card.js +1 -1
  234. package/dist/src/components/ui/carousel.d.ts +1 -1
  235. package/dist/src/components/ui/carousel.d.ts.map +1 -1
  236. package/dist/src/components/ui/carousel.js +1 -1
  237. package/dist/src/components/ui/chart.d.ts +1 -1
  238. package/dist/src/components/ui/chart.d.ts.map +1 -1
  239. package/dist/src/components/ui/chart.js +1 -1
  240. package/dist/src/components/ui/checkbox.d.ts +2 -2
  241. package/dist/src/components/ui/checkbox.d.ts.map +1 -1
  242. package/dist/src/components/ui/checkbox.js +1 -1
  243. package/dist/src/components/ui/collapsible.d.ts +5 -4
  244. package/dist/src/components/ui/collapsible.d.ts.map +1 -1
  245. package/dist/src/components/ui/collapsible.js +1 -1
  246. package/dist/src/components/ui/combobox.d.ts +1 -1
  247. package/dist/src/components/ui/combobox.d.ts.map +1 -1
  248. package/dist/src/components/ui/combobox.js +1 -1
  249. package/dist/src/components/ui/command.d.ts +1 -1
  250. package/dist/src/components/ui/command.d.ts.map +1 -1
  251. package/dist/src/components/ui/command.js +1 -1
  252. package/dist/src/components/ui/context-menu.d.ts +7 -9
  253. package/dist/src/components/ui/context-menu.d.ts.map +1 -1
  254. package/dist/src/components/ui/context-menu.js +1 -1
  255. package/dist/src/components/ui/dialog.d.ts +12 -9
  256. package/dist/src/components/ui/dialog.d.ts.map +1 -1
  257. package/dist/src/components/ui/dialog.js +1 -1
  258. package/dist/src/components/ui/direction.d.ts +5 -5
  259. package/dist/src/components/ui/direction.d.ts.map +1 -1
  260. package/dist/src/components/ui/direction.js +1 -1
  261. package/dist/src/components/ui/drawer.d.ts +1 -1
  262. package/dist/src/components/ui/drawer.d.ts.map +1 -1
  263. package/dist/src/components/ui/drawer.js +1 -1
  264. package/dist/src/components/ui/dropdown-menu.d.ts +16 -16
  265. package/dist/src/components/ui/dropdown-menu.d.ts.map +1 -1
  266. package/dist/src/components/ui/dropdown-menu.js +1 -1
  267. package/dist/src/components/ui/empty.d.ts.map +1 -1
  268. package/dist/src/components/ui/empty.js +1 -1
  269. package/dist/src/components/ui/field.js +1 -1
  270. package/dist/src/components/ui/form.d.ts +1 -2
  271. package/dist/src/components/ui/form.d.ts.map +1 -1
  272. package/dist/src/components/ui/form.js +1 -1
  273. package/dist/src/components/ui/hover-card.d.ts +5 -5
  274. package/dist/src/components/ui/hover-card.d.ts.map +1 -1
  275. package/dist/src/components/ui/hover-card.js +1 -1
  276. package/dist/src/components/ui/input-group.d.ts +4 -2
  277. package/dist/src/components/ui/input-group.d.ts.map +1 -1
  278. package/dist/src/components/ui/input-group.js +1 -1
  279. package/dist/src/components/ui/input-otp.d.ts +1 -1
  280. package/dist/src/components/ui/input-otp.d.ts.map +1 -1
  281. package/dist/src/components/ui/input-otp.js +1 -1
  282. package/dist/src/components/ui/input.d.ts +1 -1
  283. package/dist/src/components/ui/input.d.ts.map +1 -1
  284. package/dist/src/components/ui/input.js +1 -1
  285. package/dist/src/components/ui/item.d.ts +4 -5
  286. package/dist/src/components/ui/item.d.ts.map +1 -1
  287. package/dist/src/components/ui/item.js +1 -1
  288. package/dist/src/components/ui/label.d.ts +2 -3
  289. package/dist/src/components/ui/label.d.ts.map +1 -1
  290. package/dist/src/components/ui/label.js +1 -1
  291. package/dist/src/components/ui/menubar.d.ts +18 -17
  292. package/dist/src/components/ui/menubar.d.ts.map +1 -1
  293. package/dist/src/components/ui/menubar.js +1 -1
  294. package/dist/src/components/ui/native-select.d.ts +1 -1
  295. package/dist/src/components/ui/native-select.d.ts.map +1 -1
  296. package/dist/src/components/ui/native-select.js +1 -1
  297. package/dist/src/components/ui/navigation-menu.d.ts +9 -11
  298. package/dist/src/components/ui/navigation-menu.d.ts.map +1 -1
  299. package/dist/src/components/ui/navigation-menu.js +1 -1
  300. package/dist/src/components/ui/pagination.d.ts +1 -1
  301. package/dist/src/components/ui/pagination.d.ts.map +1 -1
  302. package/dist/src/components/ui/pagination.js +1 -1
  303. package/dist/src/components/ui/popover.d.ts +6 -7
  304. package/dist/src/components/ui/popover.d.ts.map +1 -1
  305. package/dist/src/components/ui/popover.js +1 -1
  306. package/dist/src/components/ui/progress.d.ts +2 -2
  307. package/dist/src/components/ui/progress.d.ts.map +1 -1
  308. package/dist/src/components/ui/progress.js +1 -1
  309. package/dist/src/components/ui/radio-group.d.ts +5 -4
  310. package/dist/src/components/ui/radio-group.d.ts.map +1 -1
  311. package/dist/src/components/ui/radio-group.js +1 -1
  312. package/dist/src/components/ui/scroll-area.d.ts +3 -3
  313. package/dist/src/components/ui/scroll-area.d.ts.map +1 -1
  314. package/dist/src/components/ui/scroll-area.js +1 -1
  315. package/dist/src/components/ui/select.d.ts +6 -6
  316. package/dist/src/components/ui/select.d.ts.map +1 -1
  317. package/dist/src/components/ui/select.js +1 -1
  318. package/dist/src/components/ui/separator.d.ts +3 -3
  319. package/dist/src/components/ui/separator.d.ts.map +1 -1
  320. package/dist/src/components/ui/separator.js +1 -1
  321. package/dist/src/components/ui/sheet.d.ts +8 -8
  322. package/dist/src/components/ui/sheet.d.ts.map +1 -1
  323. package/dist/src/components/ui/sheet.js +1 -1
  324. package/dist/src/components/ui/sidebar.d.ts +9 -15
  325. package/dist/src/components/ui/sidebar.d.ts.map +1 -1
  326. package/dist/src/components/ui/sidebar.js +1 -1
  327. package/dist/src/components/ui/slider.d.ts +2 -2
  328. package/dist/src/components/ui/slider.d.ts.map +1 -1
  329. package/dist/src/components/ui/slider.js +1 -1
  330. package/dist/src/components/ui/sonner.d.ts.map +1 -1
  331. package/dist/src/components/ui/sonner.js +1 -1
  332. package/dist/src/components/ui/spinner.d.ts.map +1 -1
  333. package/dist/src/components/ui/spinner.js +1 -1
  334. package/dist/src/components/ui/switch.d.ts +2 -2
  335. package/dist/src/components/ui/switch.d.ts.map +1 -1
  336. package/dist/src/components/ui/switch.js +1 -1
  337. package/dist/src/components/ui/table.d.ts +1 -1
  338. package/dist/src/components/ui/table.d.ts.map +1 -1
  339. package/dist/src/components/ui/table.js +1 -1
  340. package/dist/src/components/ui/tabs.d.ts +4 -4
  341. package/dist/src/components/ui/tabs.d.ts.map +1 -1
  342. package/dist/src/components/ui/tabs.js +1 -1
  343. package/dist/src/components/ui/textarea.d.ts +1 -1
  344. package/dist/src/components/ui/textarea.d.ts.map +1 -1
  345. package/dist/src/components/ui/textarea.js +1 -1
  346. package/dist/src/components/ui/toggle-group.d.ts +1 -1
  347. package/dist/src/components/ui/toggle-group.d.ts.map +1 -1
  348. package/dist/src/components/ui/toggle-group.js +1 -1
  349. package/dist/src/components/ui/tooltip.d.ts +1 -1
  350. package/dist/src/components/ui/tooltip.d.ts.map +1 -1
  351. package/dist/src/components/ui/tooltip.js +1 -1
  352. package/dist/src/config.js +1 -1
  353. package/dist/src/database/admins.d.ts +20 -0
  354. package/dist/src/database/admins.d.ts.map +1 -1
  355. package/dist/src/database/admins.js +1 -1
  356. package/dist/src/database/languages.d.ts.map +1 -1
  357. package/dist/src/database/languages.js +1 -1
  358. package/dist/src/database/logs.d.ts +1 -1
  359. package/dist/src/database/moderators.d.ts +20 -0
  360. package/dist/src/database/moderators.d.ts.map +1 -1
  361. package/dist/src/database/moderators.js +1 -1
  362. package/dist/src/database/queue.d.ts +273 -0
  363. package/dist/src/database/queue.d.ts.map +1 -0
  364. package/dist/src/database/queue.js +1 -0
  365. package/dist/src/database/users.d.ts +63 -0
  366. package/dist/src/database/users.d.ts.map +1 -1
  367. package/dist/src/database/users.js +1 -1
  368. package/dist/src/emails/default-template.d.ts +1 -1
  369. package/dist/src/emails/default-template.d.ts.map +1 -1
  370. package/dist/src/emails/default-template.js +1 -1
  371. package/dist/src/emails/reset-password.js +1 -1
  372. package/dist/src/emails/test-email.d.ts +26 -0
  373. package/dist/src/emails/test-email.d.ts.map +1 -0
  374. package/dist/src/emails/test-email.js +1 -0
  375. package/dist/src/emails/ui/button.d.ts +2 -2
  376. package/dist/src/emails/ui/button.d.ts.map +1 -1
  377. package/dist/src/emails/ui/button.js +1 -1
  378. package/dist/src/emails/ui/card.d.ts +1 -1
  379. package/dist/src/emails/ui/card.d.ts.map +1 -1
  380. package/dist/src/emails/ui/card.js +1 -1
  381. package/dist/src/hooks/use-captcha.d.ts.map +1 -1
  382. package/dist/src/hooks/use-captcha.js +1 -1
  383. package/dist/src/hooks/use-mobile.js +1 -1
  384. package/dist/src/lib/api/get-moderator-permissions-api.d.ts +4 -0
  385. package/dist/src/lib/api/get-moderator-permissions-api.d.ts.map +1 -0
  386. package/dist/src/lib/api/get-moderator-permissions-api.js +1 -0
  387. package/dist/src/lib/api/get-next-cron-run-date.js +1 -1
  388. package/dist/src/lib/api/get-queue-backoff-date.d.ts +2 -0
  389. package/dist/src/lib/api/get-queue-backoff-date.d.ts.map +1 -0
  390. package/dist/src/lib/api/get-queue-backoff-date.js +1 -0
  391. package/dist/src/lib/api/get-queue-backoff-date.test.d.ts +2 -0
  392. package/dist/src/lib/api/get-queue-backoff-date.test.d.ts.map +1 -0
  393. package/dist/src/lib/api/get-queue-backoff-date.test.js +1 -0
  394. package/dist/src/lib/api/get-session-admin-api.d.ts +12 -0
  395. package/dist/src/lib/api/get-session-admin-api.d.ts.map +1 -1
  396. package/dist/src/lib/api/get-session-admin-api.js +1 -1
  397. package/dist/src/lib/api/get-session-api.d.ts +1 -0
  398. package/dist/src/lib/api/get-session-api.d.ts.map +1 -1
  399. package/dist/src/lib/api/resolve-queue-task-outcome.d.ts +14 -0
  400. package/dist/src/lib/api/resolve-queue-task-outcome.d.ts.map +1 -0
  401. package/dist/src/lib/api/resolve-queue-task-outcome.js +1 -0
  402. package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts +2 -0
  403. package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts.map +1 -0
  404. package/dist/src/lib/api/resolve-queue-task-outcome.test.js +1 -0
  405. package/dist/src/lib/api/should-cron-job-run.js +1 -1
  406. package/dist/src/lib/config.d.ts +1 -0
  407. package/dist/src/lib/config.d.ts.map +1 -1
  408. package/dist/src/lib/config.js +1 -1
  409. package/dist/src/lib/fetcher/types.d.ts.map +1 -1
  410. package/dist/src/lib/navigation.d.ts +5 -5
  411. package/dist/src/lib/plugin.d.ts +3 -0
  412. package/dist/src/lib/plugin.d.ts.map +1 -1
  413. package/dist/src/lib/utils.d.ts +1 -0
  414. package/dist/src/lib/utils.d.ts.map +1 -1
  415. package/dist/src/lib/utils.js +1 -1
  416. package/dist/src/routes/admin/core/advanced/queue/page.d.ts +13 -0
  417. package/dist/src/routes/admin/core/advanced/queue/page.d.ts.map +1 -0
  418. package/dist/src/routes/admin/core/advanced/queue/page.js +1 -0
  419. package/dist/src/routes/admin/core/debug/page.d.ts.map +1 -1
  420. package/dist/src/routes/admin/core/debug/page.js +1 -1
  421. package/dist/src/routes/admin/core/staff/admins/create/page.d.ts +3 -0
  422. package/dist/src/routes/admin/core/staff/admins/create/page.d.ts.map +1 -0
  423. package/dist/src/routes/admin/core/staff/admins/create/page.js +1 -0
  424. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.d.ts +7 -0
  425. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.d.ts.map +1 -0
  426. package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.js +1 -0
  427. package/dist/src/routes/admin/core/staff/admins/page.d.ts +4 -0
  428. package/dist/src/routes/admin/core/staff/admins/page.d.ts.map +1 -0
  429. package/dist/src/routes/admin/core/staff/admins/page.js +1 -0
  430. package/dist/src/routes/admin/core/staff/moderators/create/page.d.ts +3 -0
  431. package/dist/src/routes/admin/core/staff/moderators/create/page.d.ts.map +1 -0
  432. package/dist/src/routes/admin/core/staff/moderators/create/page.js +1 -0
  433. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.d.ts +7 -0
  434. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.d.ts.map +1 -0
  435. package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.js +1 -0
  436. package/dist/src/routes/admin/core/staff/moderators/page.d.ts +4 -0
  437. package/dist/src/routes/admin/core/staff/moderators/page.d.ts.map +1 -0
  438. package/dist/src/routes/admin/core/staff/moderators/page.js +1 -0
  439. package/dist/src/routes/admin/core/system/integrations/page.d.ts +7 -0
  440. package/dist/src/routes/admin/core/system/integrations/page.d.ts.map +1 -0
  441. package/dist/src/routes/admin/core/system/integrations/page.js +1 -0
  442. package/dist/src/routes/admin/core/users/{[nameCode] → [id]}/page.d.ts +2 -2
  443. package/dist/src/routes/admin/core/users/[id]/page.d.ts.map +1 -0
  444. package/dist/src/routes/admin/core/users/[id]/page.js +1 -0
  445. package/dist/src/routes/admin/core/users/page.d.ts.map +1 -1
  446. package/dist/src/routes/admin/core/users/page.js +1 -1
  447. package/dist/src/routes/breadcrumb/admin/[...all]/page.d.ts +1 -5
  448. package/dist/src/routes/breadcrumb/admin/[...all]/page.d.ts.map +1 -1
  449. package/dist/src/routes/breadcrumb/admin/[...all]/page.js +1 -1
  450. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.d.ts +2 -0
  451. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.d.ts.map +1 -0
  452. package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.js +1 -0
  453. package/dist/src/routes/breadcrumb/admin/core/{users/[nameCode] → staff/admins/edit/[id]}/page.d.ts +1 -1
  454. package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.d.ts.map +1 -0
  455. package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.js +1 -0
  456. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.d.ts +2 -0
  457. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.d.ts.map +1 -0
  458. package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.js +1 -0
  459. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.d.ts +2 -0
  460. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.d.ts.map +1 -0
  461. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.js +1 -0
  462. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.d.ts +6 -0
  463. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.d.ts.map +1 -0
  464. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.js +1 -0
  465. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.d.ts +2 -0
  466. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.d.ts.map +1 -0
  467. package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.js +1 -0
  468. package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.d.ts +6 -0
  469. package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.d.ts.map +1 -0
  470. package/dist/src/routes/breadcrumb/admin/core/users/{[nameCode] → [id]}/page.js +1 -1
  471. package/dist/src/routes/breadcrumb/main/[...rest]/page.d.ts +1 -5
  472. package/dist/src/routes/breadcrumb/main/[...rest]/page.d.ts.map +1 -1
  473. package/dist/src/routes/breadcrumb/main/[...rest]/page.js +1 -1
  474. package/dist/src/routes/breadcrumb/main/settings/overview/page.d.ts.map +1 -0
  475. package/dist/src/routes/breadcrumb/main/settings/overview/page.js +1 -0
  476. package/dist/src/routes/breadcrumb/main/settings/page.d.ts.map +1 -0
  477. package/dist/src/routes/breadcrumb/main/{register → settings}/page.js +1 -1
  478. package/dist/src/routes/breadcrumb/main/settings/security/page.d.ts.map +1 -0
  479. package/dist/src/routes/breadcrumb/main/settings/security/page.js +1 -0
  480. package/dist/src/routes/main/settings/layout.d.ts +5 -0
  481. package/dist/src/routes/main/settings/layout.d.ts.map +1 -0
  482. package/dist/src/routes/main/settings/layout.js +1 -0
  483. package/dist/src/routes/main/settings/overview/page.d.ts +5 -0
  484. package/dist/src/routes/main/settings/overview/page.d.ts.map +1 -0
  485. package/dist/src/routes/main/settings/overview/page.js +1 -0
  486. package/dist/src/routes/main/settings/page.d.ts +5 -0
  487. package/dist/src/routes/main/settings/page.d.ts.map +1 -0
  488. package/dist/src/routes/main/settings/page.js +1 -0
  489. package/dist/src/routes/main/settings/security/page.d.ts +5 -0
  490. package/dist/src/routes/main/settings/security/page.d.ts.map +1 -0
  491. package/dist/src/routes/main/settings/security/page.js +1 -0
  492. package/dist/src/views/admin/layouts/admin-layout.d.ts.map +1 -1
  493. package/dist/src/views/admin/layouts/admin-layout.js +1 -1
  494. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.d.ts +6 -0
  495. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.d.ts.map +1 -0
  496. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.js +1 -0
  497. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.d.ts +5 -0
  498. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.d.ts.map +1 -0
  499. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.js +1 -0
  500. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.d.ts +6 -0
  501. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.d.ts.map +1 -0
  502. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.js +1 -0
  503. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.d.ts +2 -2
  504. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.d.ts.map +1 -1
  505. package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.js +1 -1
  506. package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.d.ts.map +1 -1
  507. package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.js +1 -1
  508. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.d.ts.map +1 -1
  509. package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.js +1 -1
  510. package/dist/src/views/admin/layouts/sidebar/nav/item.d.ts.map +1 -1
  511. package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -1
  512. package/dist/src/views/admin/layouts/user-bar/client.d.ts.map +1 -1
  513. package/dist/src/views/admin/layouts/user-bar/client.js +1 -1
  514. package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -1
  515. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.d.ts +5 -0
  516. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.d.ts.map +1 -0
  517. package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.js +1 -0
  518. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.d.ts +7 -0
  519. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.d.ts.map +1 -0
  520. package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.js +1 -0
  521. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts.map +1 -1
  522. package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +1 -1
  523. package/dist/src/views/admin/views/core/debug/queue/queue-view.d.ts +2 -0
  524. package/dist/src/views/admin/views/core/debug/queue/queue-view.d.ts.map +1 -0
  525. package/dist/src/views/admin/views/core/debug/queue/queue-view.js +1 -0
  526. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts +1 -1
  527. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts.map +1 -1
  528. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -1
  529. package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.d.ts +1 -1
  530. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.d.ts +5 -0
  531. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.d.ts.map +1 -0
  532. package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.js +1 -0
  533. package/dist/src/views/admin/views/core/staff/create/form.d.ts +6 -0
  534. package/dist/src/views/admin/views/core/staff/create/form.d.ts.map +1 -0
  535. package/dist/src/views/admin/views/core/staff/create/form.js +1 -0
  536. package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts +14 -0
  537. package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts.map +1 -0
  538. package/dist/src/views/admin/views/core/staff/create/mutation-api.js +1 -0
  539. package/dist/src/views/admin/views/core/staff/create/search.action.d.ts +8 -0
  540. package/dist/src/views/admin/views/core/staff/create/search.action.d.ts.map +1 -0
  541. package/dist/src/views/admin/views/core/staff/create/search.action.js +1 -0
  542. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.d.ts +8 -0
  543. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.d.ts.map +1 -0
  544. package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.js +1 -0
  545. package/dist/src/views/admin/views/core/staff/edit/form.d.ts +29 -0
  546. package/dist/src/views/admin/views/core/staff/edit/form.d.ts.map +1 -0
  547. package/dist/src/views/admin/views/core/staff/edit/form.js +1 -0
  548. package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts +13 -0
  549. package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts.map +1 -0
  550. package/dist/src/views/admin/views/core/staff/edit/mutation-api.js +1 -0
  551. package/dist/src/views/admin/views/core/staff/selectable-card.d.ts +11 -0
  552. package/dist/src/views/admin/views/core/staff/selectable-card.d.ts.map +1 -0
  553. package/dist/src/views/admin/views/core/staff/selectable-card.js +1 -0
  554. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts +11 -0
  555. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts.map +1 -0
  556. package/dist/src/views/admin/views/core/staff/table/actions/delete-action.js +1 -0
  557. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.d.ts +10 -0
  558. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.d.ts.map +1 -0
  559. package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.js +1 -0
  560. package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts +7 -0
  561. package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts.map +1 -0
  562. package/dist/src/views/admin/views/core/staff/table/staff-table.js +1 -0
  563. package/dist/src/views/admin/views/core/staff/table/staff-user-format.d.ts +18 -0
  564. package/dist/src/views/admin/views/core/staff/table/staff-user-format.d.ts.map +1 -0
  565. package/dist/src/views/admin/views/core/staff/table/staff-user-format.js +1 -0
  566. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.d.ts +4 -0
  567. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.d.ts.map +1 -0
  568. package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.js +1 -0
  569. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.d.ts +4 -0
  570. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.d.ts.map +1 -0
  571. package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.js +1 -0
  572. package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts +15 -0
  573. package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts.map +1 -0
  574. package/dist/src/views/admin/views/core/system/integrations/integration-card.js +1 -0
  575. package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts +3 -0
  576. package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts.map +1 -0
  577. package/dist/src/views/admin/views/core/system/integrations/integrations-view.js +1 -0
  578. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts +2 -0
  579. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts.map +1 -0
  580. package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.js +1 -0
  581. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts +12 -0
  582. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts.map +1 -0
  583. package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.js +1 -0
  584. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts +3 -0
  585. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts.map +1 -0
  586. package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.js +1 -0
  587. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts +15 -0
  588. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts.map +1 -0
  589. package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.js +1 -0
  590. package/dist/src/views/admin/views/core/users/actions/create/create.d.ts.map +1 -1
  591. package/dist/src/views/admin/views/core/users/actions/create/create.js +1 -1
  592. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts +1 -1
  593. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts.map +1 -1
  594. package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.js +1 -1
  595. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.d.ts +2 -2
  596. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.d.ts.map +1 -1
  597. package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.js +1 -1
  598. package/dist/src/views/admin/views/core/users/actions.d.ts +3 -3
  599. package/dist/src/views/admin/views/core/users/actions.d.ts.map +1 -1
  600. package/dist/src/views/admin/views/core/users/actions.js +1 -1
  601. package/dist/src/views/admin/views/core/users/show/edit-buttons.d.ts +4 -0
  602. package/dist/src/views/admin/views/core/users/show/edit-buttons.d.ts.map +1 -0
  603. package/dist/src/views/admin/views/core/users/show/edit-buttons.js +1 -0
  604. package/dist/src/views/admin/views/core/users/show/edit-field.d.ts +13 -0
  605. package/dist/src/views/admin/views/core/users/show/edit-field.d.ts.map +1 -0
  606. package/dist/src/views/admin/views/core/users/show/edit-field.js +1 -0
  607. package/dist/src/views/admin/views/core/users/show/edit-name-code.d.ts +5 -0
  608. package/dist/src/views/admin/views/core/users/show/edit-name-code.d.ts.map +1 -0
  609. package/dist/src/views/admin/views/core/users/show/edit-name-code.js +1 -0
  610. package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts +19 -0
  611. package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts.map +1 -0
  612. package/dist/src/views/admin/views/core/users/show/mutation-api.js +1 -0
  613. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts +8 -0
  614. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts.map +1 -0
  615. package/dist/src/views/admin/views/core/users/show/roles/edit-roles.js +1 -0
  616. package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts +8 -0
  617. package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts.map +1 -0
  618. package/dist/src/views/admin/views/core/users/show/roles/roles.js +1 -0
  619. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts +10 -0
  620. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts.map +1 -0
  621. package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.js +1 -0
  622. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts +13 -0
  623. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts.map +1 -0
  624. package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.js +1 -0
  625. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts +2 -2
  626. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts.map +1 -1
  627. package/dist/src/views/admin/views/core/users/show/show-user-admin-view.js +1 -1
  628. package/dist/src/views/admin/views/core/users/users-admin-view.d.ts.map +1 -1
  629. package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -1
  630. package/dist/src/views/auth/settings/layout.d.ts +4 -0
  631. package/dist/src/views/auth/settings/layout.d.ts.map +1 -0
  632. package/dist/src/views/auth/settings/layout.js +1 -0
  633. package/dist/src/views/auth/settings/nav.d.ts +2 -0
  634. package/dist/src/views/auth/settings/nav.d.ts.map +1 -0
  635. package/dist/src/views/auth/settings/nav.js +1 -0
  636. package/dist/src/views/auth/settings/overview/overview.d.ts +2 -0
  637. package/dist/src/views/auth/settings/overview/overview.d.ts.map +1 -0
  638. package/dist/src/views/auth/settings/overview/overview.js +1 -0
  639. package/dist/src/views/auth/settings/security/security.d.ts +2 -0
  640. package/dist/src/views/auth/settings/security/security.d.ts.map +1 -0
  641. package/dist/src/views/auth/settings/security/security.js +1 -0
  642. package/dist/src/views/auth/settings/shell.d.ts +4 -0
  643. package/dist/src/views/auth/settings/shell.d.ts.map +1 -0
  644. package/dist/src/views/auth/settings/shell.js +1 -0
  645. package/dist/src/views/auth/sso/callback/client/client.d.ts.map +1 -1
  646. package/dist/src/views/auth/sso/callback/client/client.js +1 -1
  647. package/dist/src/views/breadcrumb/breadcrumb-main.js +1 -1
  648. package/dist/src/views/breadcrumb/breadcrumb-render.js +1 -1
  649. package/dist/src/views/error/global-error-view.js +1 -1
  650. package/dist/src/views/layouts/provider.d.ts.map +1 -1
  651. package/dist/src/views/layouts/provider.js +1 -1
  652. package/dist/src/views/layouts/root-layout.d.ts.map +1 -1
  653. package/dist/src/views/layouts/root-layout.js +1 -1
  654. package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -1
  655. package/dist/src/views/layouts/theme/header/user/auth/client.d.ts.map +1 -1
  656. package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -1
  657. package/dist/src/vitnode.config.d.ts +7 -3
  658. package/dist/src/vitnode.config.d.ts.map +1 -1
  659. package/dist/src/ws/handle.d.ts.map +1 -1
  660. package/dist/src/ws/handle.js +1 -1
  661. package/dist/src/ws/manager.d.ts.map +1 -1
  662. package/dist/src/ws/manager.js +1 -1
  663. package/dist/src/ws/provider.d.ts.map +1 -1
  664. package/dist/src/ws/provider.js +1 -1
  665. package/dist/src/ws/registry.d.ts +5 -0
  666. package/dist/src/ws/registry.d.ts.map +1 -1
  667. package/dist/src/ws/registry.js +1 -1
  668. package/dist/tsconfig.tsbuildinfo +1 -1
  669. package/dist/vitest.config.d.ts.map +1 -1
  670. package/package.json +24 -26
  671. package/src/locales/en.json +279 -4
  672. package/src/routes/admin/core/advanced/queue/page.tsx +51 -0
  673. package/src/routes/admin/core/debug/page.tsx +25 -4
  674. package/src/routes/admin/core/staff/admins/create/page.tsx +17 -0
  675. package/src/routes/admin/core/staff/admins/edit/[id]/page.tsx +23 -0
  676. package/src/routes/admin/core/staff/admins/page.tsx +14 -0
  677. package/src/routes/admin/core/staff/moderators/create/page.tsx +17 -0
  678. package/src/routes/admin/core/staff/moderators/edit/[id]/page.tsx +23 -0
  679. package/src/routes/admin/core/staff/moderators/page.tsx +14 -0
  680. package/src/routes/admin/core/system/integrations/page.tsx +43 -0
  681. package/src/routes/admin/core/users/{[nameCode] → [id]}/page.tsx +7 -7
  682. package/src/routes/admin/core/users/page.tsx +10 -2
  683. package/src/routes/breadcrumb/admin/[...all]/page.tsx +2 -16
  684. package/src/routes/breadcrumb/admin/core/staff/admins/create/page.tsx +5 -0
  685. package/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.tsx +11 -0
  686. package/src/routes/breadcrumb/admin/core/staff/admins/page.tsx +5 -0
  687. package/src/routes/breadcrumb/admin/core/staff/moderators/create/page.tsx +5 -0
  688. package/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.tsx +11 -0
  689. package/src/routes/breadcrumb/admin/core/staff/moderators/page.tsx +5 -0
  690. package/src/routes/breadcrumb/admin/core/users/[id]/page.tsx +11 -0
  691. package/src/routes/breadcrumb/main/[...rest]/page.tsx +2 -16
  692. package/src/routes/breadcrumb/main/settings/overview/page.tsx +17 -0
  693. package/src/routes/breadcrumb/main/{register → settings}/page.tsx +3 -3
  694. package/src/routes/breadcrumb/main/settings/security/page.tsx +17 -0
  695. package/src/routes/main/settings/layout.tsx +16 -0
  696. package/src/routes/main/settings/overview/page.tsx +15 -0
  697. package/src/routes/main/settings/page.tsx +15 -0
  698. package/src/routes/main/settings/security/page.tsx +15 -0
  699. package/dist/scripts/get-config.js +0 -66
  700. package/dist/scripts/plugin.js +0 -206
  701. package/dist/scripts/prepare-database.js +0 -177
  702. package/dist/scripts/prepare-plugins-files.js +0 -152
  703. package/dist/scripts/run-interactive-shell-command.js +0 -21
  704. package/dist/scripts/shared/file-utils.js +0 -203
  705. package/dist/src/locales/en.json +0 -372
  706. package/dist/src/routes/admin/core/users/[nameCode]/page.d.ts.map +0 -1
  707. package/dist/src/routes/admin/core/users/[nameCode]/page.js +0 -1
  708. package/dist/src/routes/breadcrumb/admin/core/users/[nameCode]/page.d.ts.map +0 -1
  709. package/dist/src/routes/breadcrumb/main/login/page.d.ts.map +0 -1
  710. package/dist/src/routes/breadcrumb/main/login/page.js +0 -1
  711. package/dist/src/routes/breadcrumb/main/login/reset-password/page.d.ts.map +0 -1
  712. package/dist/src/routes/breadcrumb/main/login/reset-password/page.js +0 -1
  713. package/dist/src/routes/breadcrumb/main/register/page.d.ts.map +0 -1
  714. package/dist/tsup.config.js +0 -17
  715. package/dist/vitest.config.js +0 -48
  716. package/src/routes/breadcrumb/admin/core/users/[nameCode]/page.tsx +0 -12
  717. package/src/routes/breadcrumb/main/login/page.tsx +0 -11
  718. package/src/routes/breadcrumb/main/login/reset-password/page.tsx +0 -20
  719. /package/dist/src/routes/breadcrumb/main/{login → settings/overview}/page.d.ts +0 -0
  720. /package/dist/src/routes/breadcrumb/main/{login/reset-password → settings}/page.d.ts +0 -0
  721. /package/dist/src/routes/breadcrumb/main/{register → settings/security}/page.d.ts +0 -0
@@ -6,4 +6,8 @@ const withNextIntl = createNextIntlPlugin("./src/vitnode.config.ts");
6
6
  export const vitNodeNextConfig = (config: NextConfig): NextConfig =>
7
7
  withNextIntl({
8
8
  ...config,
9
+ serverExternalPackages: [
10
+ ...(config.serverExternalPackages ?? []),
11
+ "ioredis",
12
+ ],
9
13
  });
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../scripts/plugin.ts"],"names":[],"mappings":"AA4VA,eAAO,MAAM,aAAa,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,SAqDrE,CAAC"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../scripts/plugin.ts"],"names":[],"mappings":"AAoUA,eAAO,MAAM,aAAa,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,SAqDrE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-database.d.ts","sourceRoot":"","sources":["../../scripts/prepare-database.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,qBAQtC,CAAC;AAEF,eAAO,MAAM,aAAa,qBAOzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBAiHlC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,wBAGnC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,mBA+DA,CAAC"}
1
+ {"version":3,"file":"prepare-database.d.ts","sourceRoot":"","sources":["../../scripts/prepare-database.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,qBAQtC,CAAC;AAEF,eAAO,MAAM,aAAa,qBAOzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBAoHlC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,wBAGnC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,mBA+DA,CAAC"}
@@ -1,40 +1,11 @@
1
1
  #!/usr/bin/env node
2
- import { config } from "dotenv";
3
- import { processPlugin } from "./plugin.js";
4
- import { generateDatabaseMigrations, initialDataForDatabase, prepareDatabase, runMigrations, } from "./prepare-database.js";
5
- import { preparePluginsFiles } from "./prepare-plugins-files.js";
6
- config({
7
- quiet: true,
8
- });
9
- const initMessage = "\x1b[34m[VitNode]\x1b[0m";
10
- const command = process.argv[2];
11
- const flag = process.argv[3];
12
- switch (command) {
13
- case "init":
14
- void prepareDatabase({ initMessage, flag });
15
- break;
16
- case "migrate":
17
- await generateDatabaseMigrations();
18
- if (flag === "--generate") {
19
- console.log(`${initMessage} \x1b[32mDatabase migrations generated successfully.\x1b[0m`);
20
- process.exit(0);
21
- }
22
- await runMigrations();
23
- await initialDataForDatabase();
24
- console.log(`${initMessage} \x1b[32mDatabase migrated successfully.\x1b[0m`);
25
- process.exit(0);
26
- break;
27
- case "plugin":
28
- if (flag === "--w" || flag === "--watch") {
29
- processPlugin({ initMessage });
30
- }
31
- break;
32
- case "prepare-plugins":
33
- await preparePluginsFiles(flag);
34
- console.log(`${initMessage} \x1b[32mPlugins prepared successfully.\x1b[0m`);
35
- process.exit(0);
36
- break;
37
- default:
38
- console.log(`${initMessage} \x1b[31mCommand not found: "${command ?? ""}"\x1b[0m`);
39
- process.exit(1);
40
- }
2
+ import { createRequire } from 'module';
3
+ const require = createRequire(import.meta.url);
4
+
5
+ import{config as rr}from"dotenv";import{EventEmitter as ns}from"events";import{stat as os}from"fs";import{readdir as as,stat as cs}from"fs/promises";import*as h from"path";import{lstat as Oe,readdir as At,realpath as Tt,stat as Ct}from"fs/promises";import{join as Ft,relative as kt,resolve as He,sep as Wt}from"path";import{Readable as Lt}from"stream";var v={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},De={root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:v.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(De);var Ge="READDIRP_RECURSIVE_ERROR",$t=new Set(["ENOENT","EPERM","EACCES","ELOOP",Ge]),Ye=[v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE],jt=new Set([v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE]),Mt=new Set([v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE]),zt=t=>$t.has(t.code),Ot=process.platform==="win32",Ue=t=>!0,Ke=t=>{if(t===void 0)return Ue;if(typeof t=="function")return t;if(typeof t=="string"){let e=t.trim();return s=>s.basename===e}if(Array.isArray(t)){let e=t.map(s=>s.trim());return s=>e.some(i=>s.basename===i)}return Ue},Ee=class extends Lt{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let s={...De,...e},{root:i,type:r}=s;this._fileFilter=Ke(s.fileFilter),this._directoryFilter=Ke(s.directoryFilter);let n=s.lstat?Oe:Ct;Ot?this._stat=a=>n(a,{bigint:!0}):this._stat=n,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:De.depth,this._wantsDir=r?jt.has(r):!1,this._wantsFile=r?Mt.has(r):!1,this._wantsEverything=r===v.EVERYTHING_TYPE,this._root=He(i),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(i,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let s=this.parent,i=s&&s.files;if(i&&i.length>0){let{path:r,depth:n}=s,a=i.splice(0,e).map(c=>this._formatEntry(c,r)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,n+1)),this._wantsDir&&(this.push(c),e--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),e--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(e,s){let i;try{i=await At(e,this._rdOptions)}catch(r){this._onError(r)}return{files:i,depth:s,path:e}}async _formatEntry(e,s){let i,r=this._isDirent?e.name:e;try{let n=He(Ft(s,r));i={path:kt(this._root,n),fullPath:n,basename:r},i[this._statsProp]=this._isDirent?e:await this._stat(n)}catch(n){this._onError(n);return}return i}_onError(e){zt(e)&&!this.destroyed?this.emit("warn",e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return"";let s=e[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let i=e.fullPath;try{let r=await Tt(i),n=await Oe(r);if(n.isFile())return"file";if(n.isDirectory()){let a=r.length;if(i.startsWith(r)&&i.substr(a,1)===Wt){let o=new Error(`Circular symlink detected: "${i}" points to "${r}"`);return o.code=Ge,this._onError(o)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(e){let s=e&&e[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function Ve(t,e={}){let s=e.entryType||e.type;if(s==="both"&&(s=v.FILE_DIR_TYPE),s&&(e.type=s),t){if(typeof t!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!Ye.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${Ye.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return e.root=t,new Ee(e)}import{watch as Ht,unwatchFile as qe,watchFile as Yt}from"fs";import{realpath as ve,lstat as Ut,open as Kt,stat as Je}from"fs/promises";import{type as Gt}from"os";import*as y from"path";var Vt="data",Pe="end",Qe="close",re=()=>{};var ie=process.platform,Re=ie==="win32",qt=ie==="darwin",Bt=ie==="linux",Jt=ie==="freebsd",Xe=Gt()==="OS400",b={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},R=b,Qt="watch",Xt={lstat:Ut,stat:Je},k="listeners",Z="errHandlers",$="rawEmitters",Zt=[k,Z,$],es=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),ts=t=>es.has(y.extname(t).slice(1).toLowerCase()),Ne=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},H=(t,e,s)=>{let i=t[e];i instanceof Set||(t[e]=i=new Set([i])),i.add(s)},ss=t=>e=>{let s=t[e];s instanceof Set?s.clear():delete t[e]},Y=(t,e,s)=>{let i=t[e];i instanceof Set?i.delete(s):i===s&&delete t[e]},Ze=t=>t instanceof Set?t.size===0:!t,ee=new Map;function Be(t,e,s,i,r){let n=(a,o)=>{s(t),r(a,o,{watchedPath:t}),o&&t!==o&&te(y.resolve(t,o),k,y.join(t,o))};try{return Ht(t,{persistent:e.persistent},n)}catch(a){i(a);return}}var te=(t,e,s,i,r)=>{let n=ee.get(t);n&&Ne(n[e],a=>{a(s,i,r)})},rs=(t,e,s,i)=>{let{listener:r,errHandler:n,rawEmitter:a}=i,o=ee.get(e),c;if(!s.persistent)return c=Be(t,s,r,n,a),c?c.close.bind(c):void 0;if(o)H(o,k,r),H(o,Z,n),H(o,$,a);else{if(c=Be(t,s,te.bind(null,e,k),n,te.bind(null,e,$)),!c)return;c.on(R.ERROR,async l=>{let u=te.bind(null,e,Z);if(o&&(o.watcherUnusable=!0),Re&&l.code==="EPERM")try{await(await Kt(t,"r")).close(),u(l)}catch{}else u(l)}),o={listeners:r,errHandlers:n,rawEmitters:a,watcher:c},ee.set(e,o)}return()=>{Y(o,k,r),Y(o,Z,n),Y(o,$,a),Ze(o.listeners)&&(o.watcher.close(),ee.delete(e),Zt.forEach(ss(o)),o.watcher=void 0,Object.freeze(o))}},Ie=new Map,is=(t,e,s,i)=>{let{listener:r,rawEmitter:n}=i,a=Ie.get(e),o=a&&a.options;return o&&(o.persistent<s.persistent||o.interval>s.interval)&&(qe(e),a=void 0),a?(H(a,k,r),H(a,$,n)):(a={listeners:r,rawEmitters:n,options:s,watcher:Yt(e,s,(c,l)=>{Ne(a.rawEmitters,f=>{f(R.CHANGE,e,{curr:c,prev:l})});let u=c.mtimeMs;(c.size!==l.size||u>l.mtimeMs||u===0)&&Ne(a.listeners,f=>f(t,c))})},Ie.set(e,a)),()=>{Y(a,k,r),Y(a,$,n),Ze(a.listeners)&&(Ie.delete(e),qe(e),a.options=a.watcher=void 0,Object.freeze(a))}},se=class{fsw;_boundHandleError;constructor(e){this.fsw=e,this._boundHandleError=s=>e._handleError(s)}_watchWithNodeFs(e,s){let i=this.fsw.options,r=y.dirname(e),n=y.basename(e);this.fsw._getWatchedDir(r).add(n);let o=y.resolve(e),c={persistent:i.persistent};s||(s=re);let l;if(i.usePolling){let u=i.interval!==i.binaryInterval;c.interval=u&&ts(n)?i.binaryInterval:i.interval,l=is(e,o,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else l=rs(e,o,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(e,s,i){if(this.fsw.closed)return;let r=y.dirname(e),n=y.basename(e),a=this.fsw._getWatchedDir(r),o=s;if(a.has(n))return;let c=async(u,f)=>{if(this.fsw._throttle(Qt,e,5)){if(!f||f.mtimeMs===0)try{let d=await Je(e);if(this.fsw.closed)return;let g=d.atimeMs,w=d.mtimeMs;if((!g||g<=w||w!==o.mtimeMs)&&this.fsw._emit(R.CHANGE,e,d),(qt||Bt||Jt)&&o.ino!==d.ino){this.fsw._closeFile(u),o=d;let I=this._watchWithNodeFs(e,c);I&&this.fsw._addPathCloser(u,I)}else o=d}catch{this.fsw._remove(r,n)}else if(a.has(n)){let d=f.atimeMs,g=f.mtimeMs;(!d||d<=g||g!==o.mtimeMs)&&this.fsw._emit(R.CHANGE,e,f),o=f}}},l=this._watchWithNodeFs(e,c);if(!(i&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(R.ADD,e,0))return;this.fsw._emit(R.ADD,e,s)}return l}async _handleSymlink(e,s,i,r){if(this.fsw.closed)return;let n=e.fullPath,a=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await ve(i)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(n)!==o&&(this.fsw._symlinkPaths.set(n,o),this.fsw._emit(R.CHANGE,i,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(n,o),this.fsw._emit(R.ADD,i,e.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(n))return!0;this.fsw._symlinkPaths.set(n,!0)}_handleRead(e,s,i,r,n,a,o){e=y.join(e,"");let c=r?`${e}:${r}`:e;if(o=this.fsw._throttle("readdir",c,1e3),!o)return;let l=this.fsw._getWatchedDir(i.path),u=new Set,f=this.fsw._readdirp(e,{fileFilter:d=>i.filterPath(d),directoryFilter:d=>i.filterDir(d)});if(f)return f.on(Vt,async d=>{if(this.fsw.closed){f=void 0;return}let g=d.path,w=y.join(e,g);if(u.add(g),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,e,w,g))){if(this.fsw.closed){f=void 0;return}(g===r||!r&&!l.has(g))&&(this.fsw._incrReadyCount(),w=y.join(n,y.relative(n,w)),this._addToNodeFs(w,s,i,a+1))}}).on(R.ERROR,this._boundHandleError),new Promise((d,g)=>{if(!f)return g();f.once(Pe,()=>{if(this.fsw.closed){f=void 0;return}let w=o?o.clear():!1;d(void 0),l.getChildren().filter(I=>I!==e&&!u.has(I)).forEach(I=>{this.fsw._remove(e,I)}),f=void 0,w&&this._handleRead(e,!1,i,r,n,a,o)})})}async _handleDir(e,s,i,r,n,a,o){let c=this.fsw._getWatchedDir(y.dirname(e)),l=c.has(y.basename(e));!(i&&this.fsw.options.ignoreInitial)&&!n&&!l&&this.fsw._emit(R.ADD_DIR,e,s),c.add(y.basename(e)),this.fsw._getWatchedDir(e);let u,f,d=this.fsw.options.depth;if((d==null||r<=d)&&!this.fsw._symlinkPaths.has(o)){if(!n&&(await this._handleRead(e,i,a,n,e,r,u),this.fsw.closed))return;f=this._watchWithNodeFs(e,(g,w)=>{w&&w.mtimeMs===0||this._handleRead(g,!1,a,n,e,r,u)})}return f}async _addToNodeFs(e,s,i,r,n){let a=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(e);i&&(o.filterPath=c=>i.filterPath(c),o.filterDir=c=>i.filterDir(c));try{let c=await Xt[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,u;if(c.isDirectory()){let f=y.resolve(e),d=l?await ve(e):e;if(this.fsw.closed||(u=await this._handleDir(o.watchPath,c,s,r,n,o,d),this.fsw.closed))return;f!==d&&d!==void 0&&this.fsw._symlinkPaths.set(f,d)}else if(c.isSymbolicLink()){let f=l?await ve(e):e;if(this.fsw.closed)return;let d=y.dirname(o.watchPath);if(this.fsw._getWatchedDir(d).add(o.watchPath),this.fsw._emit(R.ADD,o.watchPath,c),u=await this._handleDir(d,c,s,r,e,o,f),this.fsw.closed)return;f!==void 0&&this.fsw._symlinkPaths.set(y.resolve(e),f)}else u=this._handleFile(o.watchPath,c,s);return a(),u&&this.fsw._addPathCloser(e,u),!1}catch(c){if(this.fsw._handleError(c))return a(),e}}};var Se="/",ls="//",it=".",ds="..",us="string",fs=/\\/g,nt=/\/\//g,ps=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,ms=/^\.[/\\]/;function ne(t){return Array.isArray(t)?t:[t]}var Ae=t=>typeof t=="object"&&t!==null&&!(t instanceof RegExp);function hs(t){return typeof t=="function"?t:typeof t=="string"?e=>t===e:t instanceof RegExp?e=>t.test(e):typeof t=="object"&&t!==null?e=>{if(t.path===e)return!0;if(t.recursive){let s=h.relative(t.path,e);return s?!s.startsWith("..")&&!h.isAbsolute(s):!1}return!1}:()=>!1}function _s(t){if(typeof t!="string")throw new Error("string expected");t=h.normalize(t),t=t.replace(/\\/g,"/");let e=!1;return t.startsWith("//")&&(e=!0),t=t.replace(nt,"/"),e&&(t="/"+t),t}function et(t,e,s){let i=_s(e);for(let r=0;r<t.length;r++){let n=t[r];if(n(i,s))return!0}return!1}function gs(t,e){if(t==null)throw new TypeError("anymatch: specify first argument");let i=ne(t).map(r=>hs(r));return e==null?(r,n)=>et(i,r,n):et(i,e)}var tt=t=>{let e=ne(t).flat();if(!e.every(s=>typeof s===us))throw new TypeError(`Non-string provided as watch path: ${e}`);return e.map(ot)},st=t=>{let e=t.replace(fs,Se),s=!1;return e.startsWith(ls)&&(s=!0),e=e.replace(nt,Se),s&&(e=Se+e),e},ot=t=>st(h.normalize(st(t))),rt=(t="")=>e=>typeof e=="string"?ot(h.isAbsolute(e)?e:h.join(t,e)):e,ws=(t,e)=>h.isAbsolute(t)?t:h.join(e,t),ys=Object.freeze(new Set),Te=class{path;_removeWatcher;items;constructor(e,s){this.path=e,this._removeWatcher=s,this.items=new Set}add(e){let{items:s}=this;s&&e!==it&&e!==ds&&s.add(e)}async remove(e){let{items:s}=this;if(!s||(s.delete(e),s.size>0))return;let i=this.path;try{await as(i)}catch{this._removeWatcher&&this._removeWatcher(h.dirname(i),h.basename(i))}}has(e){let{items:s}=this;if(s)return s.has(e)}getChildren(){let{items:e}=this;return e?[...e.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=re,this.items=ys,Object.freeze(this)}},bs="stat",xs="lstat",Ce=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(e,s,i){this.fsw=i;let r=e;this.path=e=e.replace(ms,""),this.watchPath=r,this.fullWatchPath=h.resolve(r),this.dirParts=[],this.dirParts.forEach(n=>{n.length>1&&n.pop()}),this.followSymlinks=s,this.statMethod=s?bs:xs}entryPath(e){return h.join(this.watchPath,h.relative(this.watchPath,e.fullPath))}filterPath(e){let{stats:s}=e;if(s&&s.isSymbolicLink())return this.filterDir(e);let i=this.entryPath(e);return this.fsw._isntIgnored(i,s)&&this.fsw._hasReadPermissions(s)}filterDir(e){return this.fsw._isntIgnored(this.entryPath(e),e.stats)}},oe=class extends ns{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(e={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=e.awaitWriteFinish,i={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...e,ignored:e.ignored?ne(e.ignored):ne([]),awaitWriteFinish:s===!0?i:typeof s=="object"?{...i,...s}:!1};Xe&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let n=process.env.CHOKIDAR_USEPOLLING;if(n!==void 0){let c=n.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=re,this._readyEmitted=!0,process.nextTick(()=>this.emit(b.READY)))},this._emitRaw=(...c)=>this.emit(b.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new se(this),Object.freeze(r)}_addIgnoredPath(e){if(Ae(e)){for(let s of this._ignoredPaths)if(Ae(s)&&s.path===e.path&&s.recursive===e.recursive)return}this._ignoredPaths.add(e)}_removeIgnoredPath(e){if(this._ignoredPaths.delete(e),typeof e=="string")for(let s of this._ignoredPaths)Ae(s)&&s.path===e&&this._ignoredPaths.delete(s)}add(e,s,i){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let n=tt(e);return r&&(n=n.map(a=>ws(a,r))),n.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=n.length,Promise.all(n.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!i,void 0,0,s);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(h.dirname(o),h.basename(s||o))})}),this}unwatch(e){if(this.closed)return this;let s=tt(e),{cwd:i}=this.options;return s.forEach(r=>{!h.isAbsolute(r)&&!this._closers.has(r)&&(i&&(r=h.join(i,r)),r=h.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let e=[];return this._closers.forEach(s=>s.forEach(i=>{let r=i();r instanceof Promise&&e.push(r)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=e.length?Promise.all(e).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let e={};return this._watched.forEach((s,i)=>{let n=(this.options.cwd?h.relative(this.options.cwd,i):i)||it;e[n]=s.getChildren().sort()}),e}emitWithAll(e,s){this.emit(e,...s),e!==b.ERROR&&this.emit(b.ALL,e,...s)}async _emit(e,s,i){if(this.closed)return;let r=this.options;Re&&(s=h.normalize(s)),r.cwd&&(s=h.relative(r.cwd,s));let n=[s];i!=null&&n.push(i);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(s)))return o.lastChange=new Date,this;if(r.atomic){if(e===b.UNLINK)return this._pendingUnlinks.set(s,[e,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(b.ALL,...c),this._pendingUnlinks.delete(l)})},typeof r.atomic=="number"?r.atomic:100),this;e===b.ADD&&this._pendingUnlinks.has(s)&&(e=b.CHANGE,this._pendingUnlinks.delete(s))}if(a&&(e===b.ADD||e===b.CHANGE)&&this._readyEmitted){let c=(l,u)=>{l?(e=b.ERROR,n[0]=l,this.emitWithAll(e,n)):u&&(n.length>1?n[1]=u:n.push(u),this.emitWithAll(e,n))};return this._awaitWriteFinish(s,a.stabilityThreshold,e,c),this}if(e===b.CHANGE&&!this._throttle(b.CHANGE,s,50))return this;if(r.alwaysStat&&i===void 0&&(e===b.ADD||e===b.ADD_DIR||e===b.CHANGE)){let c=r.cwd?h.join(r.cwd,s):s,l;try{l=await cs(c)}catch{}if(!l||this.closed)return;n.push(l)}return this.emitWithAll(e,n),this}_handleError(e){let s=e&&e.code;return e&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(b.ERROR,e),e||this.closed}_throttle(e,s,i){this._throttled.has(e)||this._throttled.set(e,new Map);let r=this._throttled.get(e);if(!r)throw new Error("invalid throttle");let n=r.get(s);if(n)return n.count++,!1;let a,o=()=>{let l=r.get(s),u=l?l.count:0;return r.delete(s),clearTimeout(a),l&&clearTimeout(l.timeoutObject),u};a=setTimeout(o,i);let c={timeoutObject:a,clear:o,count:0};return r.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(e,s,i,r){let n=this.options.awaitWriteFinish;if(typeof n!="object")return;let a=n.pollInterval,o,c=e;this.options.cwd&&!h.isAbsolute(e)&&(c=h.join(this.options.cwd,e));let l=new Date,u=this._pendingWrites;function f(d){os(c,(g,w)=>{if(g||!u.has(e)){g&&g.code!=="ENOENT"&&r(g);return}let I=Number(new Date);d&&w.size!==d.size&&(u.get(e).lastChange=I);let O=u.get(e);I-O.lastChange>=s?(u.delete(e),r(void 0,w)):o=setTimeout(f,a,w)})}u.has(e)||(u.set(e,{lastChange:l,cancelWait:()=>(u.delete(e),clearTimeout(o),i)}),o=setTimeout(f,a))}_isIgnored(e,s){if(this.options.atomic&&ps.test(e))return!0;if(!this._userIgnored){let{cwd:i}=this.options,n=(this.options.ignored||[]).map(rt(i)),o=[...[...this._ignoredPaths].map(rt(i)),...n];this._userIgnored=gs(o,void 0)}return this._userIgnored(e,s)}_isntIgnored(e,s){return!this._isIgnored(e,s)}_getWatchHelpers(e){return new Ce(e,this.options.followSymlinks,this)}_getWatchedDir(e){let s=h.resolve(e);return this._watched.has(s)||this._watched.set(s,new Te(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,s,i){let r=h.join(e,s),n=h.resolve(r);if(i=i??(this._watched.has(r)||this._watched.has(n)),!this._throttle("remove",r,100))return;!i&&this._watched.size===1&&this.add(e,s,!0),this._getWatchedDir(r).getChildren().forEach(d=>this._remove(r,d));let c=this._getWatchedDir(e),l=c.has(s);c.remove(s),this._symlinkPaths.has(n)&&this._symlinkPaths.delete(n);let u=r;if(this.options.cwd&&(u=h.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(u)&&this._pendingWrites.get(u).cancelWait()===b.ADD)return;this._watched.delete(r),this._watched.delete(n);let f=i?b.UNLINK_DIR:b.UNLINK;l&&!this._isIgnored(r)&&this._emit(f,r),this._closePath(r)}_closePath(e){this._closeFile(e);let s=h.dirname(e);this._getWatchedDir(s).remove(h.basename(e))}_closeFile(e){let s=this._closers.get(e);s&&(s.forEach(i=>i()),this._closers.delete(e))}_addPathCloser(e,s){if(!s)return;let i=this._closers.get(e);i||(i=[],this._closers.set(e,i)),i.push(s)}_readdirp(e,s){if(this.closed)return;let i={type:b.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},r=Ve(e,i);return this._streams.add(r),r.once(Qe,()=>{r=void 0}),r.once(Pe,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};function Ds(t,e={}){let s=new oe(e);return s.add(t),s}var at={watch:Ds,FSWatcher:oe};import{existsSync as C,mkdirSync as ks,readdirSync as Ws,readFileSync as Ls,unlinkSync as $s}from"fs";import{basename as mt,join as m,relative as js}from"path";import{copyFileSync as Es,existsSync as N,mkdirSync as vs,readdirSync as ke,readFileSync as Is,writeFileSync as Ns}from"fs";import{basename as ct,dirname as dt,extname as Ps,join as S,normalize as Rs,relative as W,resolve as lt,sep as Ss}from"path";var As=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,Ts=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,Cs=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,ae=/\.(js|jsx|ts|tsx)$/,Fe=/^page\.(tsx|ts|jsx|js)$/i,U=(t,e)=>{let i=W(e,t).split(Ss);i.pop();let r=i.filter(n=>!n.startsWith("("));return Rs(r.join("/"))},ce=t=>{let e=new Map,s=i=>{if(N(i))for(let r of ke(i,{withFileTypes:!0})){let n=S(i,r.name);if(r.isDirectory()){s(n);continue}if(Fe.test(r.name)){let a=U(n,t);e.set(a,n)}}};return s(t),e},Fs=(t,e)=>{let s=t.replace(As,(i,r)=>{if(r.startsWith(".")){let a=r.replace(ae,"").replace(/^(?:\.\.\/)+/,"");return i.replace(r,`${e}/${a}`)}return i});return s=s.replace(Ts,(i,r)=>{let n=r.replace(/^@\//,"").replace(ae,"");return i.replace(r,`${e}/${n}`)}),s=s.replace(Cs,(i,r)=>{let n=r.replace(/^@\//,"").replace(ae,"");return i.replace(r,`${e}/${n}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(i,r)=>{let n=r.replace(/^@\//,"").replace(ae,"");return i.replace(r,`${e}/${n}`)}),s};function le(t){let e=t;for(;e!==lt(e,"..");){let i=S(e,"turbo.json");if(N(i))return e;e=lt(e,"..")}let s=S(t,"package.json");if(N(s))return t;throw new Error("\u274C Could not locate project root")}function de(t){let e=S(t,"src","app","[locale]");if(N(e))return e;let i=(n=>{let a=[];if(!N(n))return a;let o=(c,l=0)=>{if(!(l>4))try{let u=ke(c,{withFileTypes:!0});for(let f of u){if(!f.isDirectory())continue;let d=S(c,f.name);if(f.name==="[locale]"&&dt(d).endsWith(S("src","app"))){a.push(d);continue}o(d,l+1)}}catch{}};return o(n),a})(t);return i.length>0?i[0]:S(t,"apps","docs","src","app","[locale]")}var ue=t=>{let e=[];if(!N(t))return e;let s=ke(t,{withFileTypes:!0});for(let i of s){let r=S(t,i.name);i.isDirectory()?e.push(...ue(r)):e.push(r)}return e},K=t=>N(t)?ue(t).length===0:!0,We=(t,e,s,i,r,n,a=!0)=>{let o=ct(t);if(Fe.test(o)){let c=U(e,r),l=i.get(c);if(l&&l!==e){a&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${W(n,e)} (collides with ${W(n,l)})`);return}}try{let c=dt(e);N(c)||vs(c,{recursive:!0});let l=Ps(t);if(s&&[".js",".jsx",".ts",".tsx"].includes(l)){let u=Is(t,"utf-8"),f=Fs(u,s);Ns(e,f)}else Es(t,e);if(a){let u=t.indexOf(S("src","app")),f;u!==-1?f=t.substring(u):t.startsWith(n)?f=W(n,t):f=t;let d=e.startsWith(n)?W(n,e):e;console.log(`\x1B[32mCopied:\x1B[0m ${f} \u2192 ${d}`)}if(Fe.test(ct(e))){let u=U(e,r);i.set(u,e)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${t}`,c)}},ut=(t,e,s)=>{if(!N(t)||!N(e)||e.replace(/\\/g,"/").includes("src/locales"))return;let r=ue(e);for(let n of r){let a=W(e,n),o=S(t,a);N(o)||s(n)}},ft=(t,e,s,i,r,n,a=!0)=>{if(!N(t)||K(t))return;let o=ue(t);for(let c of o){let l=W(t,c),u=S(e,l);We(c,u,s,i,r,n,a)}};var pt=t=>{let e=C(m(t,"src","vitnode.config.ts"));return C(m(t,"src","vitnode.api.config.ts"))&&!e?"api":e?"web":null},Ms=(t,e,s,i)=>{let r=[],n=m(e,"apps");if(C(n)){let o=C(n)?Ws(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of o){let l=m(e,"apps",c),u=pt(l);u==="web"?r.push({sourceDir:m(t,"src","routes","admin"),destinationDir:m(l,"src","app","[locale]","admin","(auth)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","main"),destinationDir:m(l,"src","app","[locale]","(main)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","blank"),destinationDir:m(l,"src","app","[locale]","(blank)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","locales"),destinationDir:m(l,"src","locales",s)},{sourceDir:m(t,"src","routes","breadcrumb","admin"),destinationDir:m(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:m(t,"src","routes","breadcrumb","main"),destinationDir:m(l,"src","app","[locale]","(main)","@breadcrumb")}):u==="api"&&r.push({sourceDir:m(t,"src","locales"),destinationDir:m(l,"src","locales",s)})}}else{let o=process.cwd(),c=pt(o);c==="web"?r.push({sourceDir:m(t,"src","routes","admin"),destinationDir:m(o,"src","app","[locale]","admin","(auth)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","main"),destinationDir:m(o,"src","app","[locale]","(main)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","blank"),destinationDir:m(o,"src","app","[locale]","(blank)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","locales"),destinationDir:m(o,"src","locales",s)},{sourceDir:m(t,"src","routes","breadcrumb","admin"),destinationDir:m(o,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:m(t,"src","routes","breadcrumb","main"),destinationDir:m(o,"src","app","[locale]","(main)","@breadcrumb")}):c==="api"&&r.push({sourceDir:m(t,"src","locales"),destinationDir:m(o,"src","locales",s)})}return r},zs=t=>{for(let{sourceDir:e,destinationDir:s}of t)C(e)&&!K(e)&&!C(s)&&ks(s,{recursive:!0})},Os=(t,e,s,i)=>({copyFileWrapper:(a,o)=>{We(a,o,t,e,s,i)},removeFile:a=>{try{if(C(a)&&($s(a),console.log(`\x1B[33mRemoved:\x1B[0m ${a}`),/^page\.(tsx|ts|jsx|js)$/i.test(mt(a)))){let o=U(a,s);e.get(o)===a&&e.delete(o)}}catch(o){console.error(`\x1B[31mError removing file:\x1B[0m ${a}`,o)}}}),Hs=t=>e=>{let s=t.filter(({sourceDir:i})=>{let r=e.replace(/\\/g,"/"),n=i.replace(/\\/g,"/");return r===n||r.startsWith(`${n}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${e}`);return s.map(i=>{let r=js(i.sourceDir,e);return m(i.destinationDir,r)})},Ys=(t,e,s,i)=>{let r=at.watch(t,{ignoreInitial:!1,persistent:!0});return r.on("add",n=>{e(n).forEach(o=>s(n,o))}).on("change",n=>{e(n).forEach(o=>s(n,o))}).on("unlink",n=>{e(n).forEach(o=>i(o))}).on("error",n=>{console.error("\x1B[31mWatcher error:\x1B[0m",n)}),r},ht=({initMessage:t})=>{let e=process.cwd(),s=le(e),i=de(s),r=ce(i),n=mt(e);try{let d=m(e,"package.json");C(d)&&(n=JSON.parse(Ls(d,"utf-8")).name??"")}catch(d){console.error("\x1B[31mError reading package.json:\x1B[0m",d);return}let a=n.replace(/\//g,"-").replace(/@/g,""),o=Ms(e,s,n,a);zs(o);let{copyFileWrapper:c,removeFile:l}=Os(n,r,i,s);for(let{sourceDir:d,destinationDir:g}of o)ut(d,g,l);console.log(`${t} \x1B[34mWatching for changes in plugins...\x1B[0m`);let u=o.map(d=>d.sourceDir).filter(d=>C(d)),f=Hs(o);Ys(u,f,c,l)};import{count as It}from"drizzle-orm";import{relations as bt}from"drizzle-orm";import{index as _e,pgTable as xt}from"drizzle-orm/pg-core";import{pgTable as Us}from"drizzle-orm/pg-core";var x=Us("core_roles",t=>({id:t.serial().primaryKey(),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().$onUpdate(()=>new Date),protected:t.boolean().notNull().default(!1),default:t.boolean().notNull().default(!1),root:t.boolean().notNull().default(!1),guest:t.boolean().notNull().default(!1),color:t.varchar({length:19})})).enableRLS();import{relations as gt}from"drizzle-orm";import{index as wt,pgTable as yt}from"drizzle-orm/pg-core";import{relations as G}from"drizzle-orm";import{index as j,pgTable as V,primaryKey as Gs}from"drizzle-orm/pg-core";import{relations as Ks}from"drizzle-orm";import{index as Le,pgTable as _t}from"drizzle-orm/pg-core";var A=_t("core_languages",t=>({id:t.serial().primaryKey(),code:t.varchar({length:32}).notNull().unique(),name:t.varchar({length:255}).notNull(),timezone:t.varchar({length:255}).notNull().default("UTC"),protected:t.boolean().notNull().default(!1),default:t.boolean().notNull().default(!1),enabled:t.boolean().notNull().default(!0),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:t.boolean().notNull().default(!1)}),t=>[Le("core_languages_code_idx").on(t.code),Le("core_languages_name_idx").on(t.name)]).enableRLS(),fe=_t("core_languages_words",t=>({id:t.serial().primaryKey(),languageCode:t.varchar().notNull().references(()=>A.code,{onDelete:"cascade"}),pluginCode:t.varchar({length:50}).notNull(),itemId:t.integer().notNull(),value:t.text().notNull(),tableName:t.varchar({length:255}).notNull(),variable:t.varchar({length:255}).notNull()}),t=>[Le("core_languages_words_lang_code_idx").on(t.languageCode)]).enableRLS(),Cr=Ks(fe,({one:t})=>({language:t(A,{fields:[fe.languageCode],references:[A.code]})}));var _=V("core_users",t=>({id:t.serial().primaryKey(),nameCode:t.varchar({length:255}).notNull().unique(),name:t.varchar({length:255}).notNull().unique(),email:t.varchar({length:255}).notNull().unique(),password:t.varchar(),createdAt:t.timestamp().notNull().defaultNow(),newsletter:t.boolean().notNull().default(!1),avatarColor:t.varchar({length:6}).notNull(),emailVerified:t.boolean().notNull().default(!1),roleId:t.integer().references(()=>x.id).notNull(),birthday:t.timestamp(),ipAddress:t.varchar({length:40}).notNull(),language:t.varchar({length:32}).notNull().default("en").references(()=>A.code,{onDelete:"set default"})}),t=>[j("core_users_name_code_idx").on(t.nameCode),j("core_users_name_idx").on(t.name),j("core_users_email_idx").on(t.email)]).enableRLS(),jr=G(_,({one:t,many:e})=>({group:t(x,{fields:[_.roleId],references:[x.id]}),secondary_roles:e(pe),language:t(A,{fields:[_.language],references:[A.code]}),confirm_email:t(me,{fields:[_.id],references:[me.userId]}),sso:e($e),forgot_password:t(he,{fields:[_.id],references:[he.userId]})})),pe=V("core_users_secondary_roles",t=>({userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull(),roleId:t.integer().references(()=>x.id,{onDelete:"cascade"}).notNull(),createdAt:t.timestamp().notNull().defaultNow()}),t=>[Gs({columns:[t.userId,t.roleId]}),j("core_users_secondary_roles_user_id_idx").on(t.userId),j("core_users_secondary_roles_role_id_idx").on(t.roleId)]).enableRLS(),Mr=G(pe,({one:t})=>({user:t(_,{fields:[pe.userId],references:[_.id]}),role:t(x,{fields:[pe.roleId],references:[x.id]})})),$e=V("core_users_sso",t=>({userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull(),providerId:t.varchar({length:255}).notNull(),providerAccountId:t.varchar({length:255}).notNull(),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),t=>[j("core_users_sso_user_id_idx").on(t.userId)]).enableRLS(),zr=G($e,({one:t})=>({user:t(_,{fields:[$e.userId],references:[_.id]})})),me=V("core_users_confirm_emails",t=>({id:t.serial().primaryKey(),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull(),token:t.varchar({length:100}).notNull().unique(),createdAt:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull(),ipAddress:t.varchar({length:40}).notNull()})).enableRLS(),Or=G(me,({one:t})=>({user:t(_,{fields:[me.userId],references:[_.id]})})),he=V("core_users_forgot_password",t=>({id:t.serial().primaryKey(),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull().unique(),token:t.varchar({length:100}).notNull().unique(),ipAddress:t.varchar({length:40}).notNull(),createdAt:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull()})).enableRLS(),Hr=G(he,({one:t})=>({user:t(_,{fields:[he.userId],references:[_.id]})}));var q=yt("core_sessions",t=>({id:t.serial().primaryKey(),token:t.varchar({length:255}).notNull().unique(),userId:t.integer().notNull().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull(),deviceId:t.integer().references(()=>F.id,{onDelete:"cascade"}).notNull()}),t=>[wt("core_sessions_user_id_idx").on(t.userId)]).enableRLS(),Vr=gt(q,({one:t})=>({user:t(_,{fields:[q.userId],references:[_.id]}),device:t(F,{fields:[q.deviceId],references:[F.id]})})),F=yt("core_sessions_known_devices",t=>({id:t.serial().primaryKey(),publicId:t.varchar({length:32}).notNull().unique(),ipAddress:t.varchar({length:40}).notNull(),userAgent:t.text().notNull(),lastSeen:t.timestamp().notNull().defaultNow()}),t=>[wt("core_sessions_known_devices_ip_address_idx").on(t.ipAddress)]).enableRLS(),qr=gt(F,({one:t})=>({session:t(q,{fields:[F.id],references:[q.deviceId]})}));var B=xt("core_admin_permissions",t=>({id:t.serial().primaryKey(),roleId:t.integer().references(()=>x.id,{onDelete:"cascade"}),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:t.boolean().notNull().default(!1),data:t.jsonb().$type().notNull().default({unrestricted:!1,permissions:[]})}),t=>[_e("core_admin_permissions_role_id_idx").on(t.roleId),_e("core_admin_permissions_user_id_idx").on(t.userId)]).enableRLS(),ti=bt(B,({one:t})=>({group:t(x,{fields:[B.roleId],references:[x.id]}),user:t(_,{fields:[B.userId],references:[_.id]})})),je=xt("core_admin_sessions",t=>({id:t.serial().primaryKey(),token:t.varchar({length:255}).notNull().unique(),userId:t.integer().notNull().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),lastSeen:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull(),deviceId:t.integer().references(()=>F.id,{onDelete:"cascade"}).notNull()}),t=>[_e("core_admin_sessions_token_idx").on(t.token),_e("core_admin_sessions_user_id_idx").on(t.userId)]).enableRLS(),si=bt(je,({one:t})=>({user:t(_,{fields:[je.userId],references:[_.id]}),device:t(F,{fields:[je.deviceId],references:[F.id]})}));import{relations as Vs}from"drizzle-orm";import{index as Dt,pgTable as qs}from"drizzle-orm/pg-core";var J=qs("core_moderators_permissions",t=>({id:t.serial().primaryKey(),roleId:t.integer().references(()=>x.id,{onDelete:"cascade"}),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:t.boolean().notNull().default(!1),data:t.jsonb().$type().notNull().default({unrestricted:!1,permissions:[]})}),t=>[Dt("core_moderators_permissions_role_id_idx").on(t.roleId),Dt("core_moderators_permissions_user_id_idx").on(t.userId)]).enableRLS(),ci=Vs(J,({one:t})=>({group:t(x,{fields:[J.roleId],references:[x.id]}),user:t(_,{fields:[J.userId],references:[_.id]})}));import{createJiti as Bs}from"jiti";import{existsSync as Js,readdirSync as Qs,statSync as Xs}from"fs";import{join as Et}from"path";var Zs=(t,e,s=4)=>{let i=(r,n)=>{if(n>s)return null;try{let a=Et(r,"src",e);if(Js(a))return a;let o=Qs(r);for(let c of o){if(c==="node_modules"||c.startsWith(".")||c==="dist"||c==="build"||c==="out")continue;let l=Et(r,c);try{if(Xs(l).isDirectory()){let u=i(l,n+1);if(u)return u}}catch{}}}catch{}return null};return i(t,0)},L=async({type:t="config"})=>{let e=process.cwd(),s=`vitnode.${t}.ts`,i=Zs(e,s);i||(console.error(`Config file not found: ${s}`),console.error(`Searched recursively in ${e} (excluding node_modules, .*, dist, build, out)`),process.exit(1));try{let r=t==="config"?"vitNodeConfig":"vitNodeApiConfig",o=(await Bs(import.meta.url,{interopDefault:!0}).import(i))[r];return o||(console.error(`Export "${r}" not found in ${i}`),process.exit(1)),o}catch(r){console.error("Failed to load config:",r),process.exit(1)}};import{existsSync as T,readdirSync as er}from"fs";import{readFile as tr}from"fs/promises";import{join as p,relative as vt}from"path";var M=async t=>{let e=process.cwd(),s=T(p(e,"src","vitnode.config.ts")),i=T(p(e,"src","vitnode.api.config.ts")),r;t==="--api"&&i?r=await L({type:"api.config"}):t==="--web"&&s?r=await L({}):i&&!s?r=await L({type:"api.config"}):s?r=await L({}):r={plugins:[]};let n=[...r.plugins.map(f=>f.pluginId),"@vitnode/core"],a=le(process.cwd()),o=de(a),c=ce(o),l=process.cwd(),u=f=>{let d=process.cwd(),g=p(d,"node_modules",f);if(T(g))return g;if(a&&a!==d){let w=p(a,"node_modules",f);if(T(w))return w}return null};await Promise.all(n.map(async f=>{let d=u(f);if(!d){console.error(`\x1B[31mPlugin not found:\x1B[0m ${f} in node_modules`);return}let g="";try{let D=p(d,"package.json");T(D)&&(g=JSON.parse(await tr(D,"utf-8")).name??"")}catch(D){console.error(`\x1B[31mError reading package.json for ${f}:\x1B[0m`,D);return}let w=f.replace(/\//g,"-").replace(/@/g,""),I=D=>{let E=T(p(D,"src","vitnode.config.ts"));return T(p(D,"src","vitnode.api.config.ts"))&&!E?"api":E?"web":null},O=p(a,"apps"),Me=T(O),X=[];if(Me){let D=T(O)?er(O,{withFileTypes:!0}).filter(E=>E.isDirectory()).map(E=>E.name):[];for(let E of D){let P=p(a,"apps",E),ze=I(P);if(ze==="web"){let xe=p(P,"src","app","[locale]","(main)",p("(plugins)",`(${w})`)),Rt=p(P,"src","app","[locale]","admin","(auth)",p("(plugins)",`(${w})`)),St=p(P,"src","locales",f);X.push({sourceDir:p(d,"src","routes","admin"),destinationDir:Rt},{sourceDir:p(d,"src","routes","main"),destinationDir:xe},{sourceDir:p(d,"src","routes","blank"),destinationDir:p(P,"src","app","[locale]","(blank)",p("(plugins)",`(${w})`))},{sourceDir:p(d,"src","locales"),destinationDir:St},{sourceDir:p(d,"src","routes","breadcrumb","admin"),destinationDir:p(P,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:p(d,"src","routes","breadcrumb","main"),destinationDir:p(P,"src","app","[locale]","(main)","@breadcrumb")})}else if(ze==="api"){let xe=p(P,"src","locales",f);X.push({sourceDir:p(d,"src","locales"),destinationDir:xe})}}}else{let D=p(l,"src","app","[locale]","(main)",p("(plugins)",`(${w})`)),E=p(l,"src","app","[locale]","admin","(auth)",p("(plugins)",`(${w})`)),P=p(l,"src","locales",f);X.push({sourceDir:p(d,"src","routes","admin"),destinationDir:E},{sourceDir:p(d,"src","routes","main"),destinationDir:D},{sourceDir:p(d,"src","routes","blank"),destinationDir:p(l,"src","app","[locale]","(blank)",p("(plugins)",`(${w})`))},{sourceDir:p(d,"src","locales"),destinationDir:P},{sourceDir:p(d,"src","routes","breadcrumb","admin"),destinationDir:p(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:p(d,"src","routes","breadcrumb","main"),destinationDir:p(l,"src","app","[locale]","(main)","@breadcrumb")})}for(let{sourceDir:D,destinationDir:E}of X)T(D)&&!K(D)&&(console.log(`\x1B[36mCopying ${f}:\x1B[0m ${vt(a,D)} \u2192 ${vt(a,E)}`),ft(D,E,g,c,o,a,!1))}))};import{spawn as sr}from"child_process";var ge=async(t,e=[])=>await new Promise((s,i)=>{let r=sr(t,e,{stdio:"inherit",shell:!0,env:process.env});r.on("error",n=>{i(n)}),r.on("close",n=>{n!==0?i(new Error(`Command failed with exit code ${n}`)):s(!0)})});var we=async()=>{try{await ge("npm",["run","drizzle-kit","up"]),await ge("npm",["run","drizzle-kit","generate"])}catch(t){console.error("\x1B[31m%s\x1B[0m",t),process.exit(1)}},ye=async()=>{try{await ge("npm",["run","drizzle-kit","migrate"])}catch(t){console.error("\x1B[31m%s\x1B[0m",t),process.exit(1)}},be=async()=>{let e=(await L({type:"api.config"})).dbProvider,[s]=await e.select({count:It()}).from(x).limit(1),[i]=await e.select({count:It()}).from(A);if(i.count===0&&await e.insert(A).values([{code:"en",name:"English (USA)",default:!0,protected:!0,timezone:"America/New_York"}]),s.count===0){let r=await e.insert(x).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)"},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)"}]).returning({id:x.id});await e.insert(fe).values([{languageCode:"en",pluginCode:"core",itemId:r[0].id,value:"Guest",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[1].id,value:"Member",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[2].id,value:"Moderator",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[3].id,value:"Administrator",tableName:"core_roles",variable:"name"}]),await e.insert(J).values([{roleId:r[2].id,protected:!0,data:{unrestricted:!0,permissions:[]}},{roleId:r[3].id,protected:!0,data:{unrestricted:!0,permissions:[]}}]),await e.insert(B).values({roleId:r[3].id,protected:!0,data:{unrestricted:!0,permissions:[]}})}},Nt=async({initMessage:t,flag:e})=>{let s=[];e==="--web"?s.push({label:"Prepare plugins files...",action:async()=>await M(e)}):e==="--api"?s.push({label:"Prepare plugins files...",action:async()=>await M(e)},{label:"Generate migrations...",action:we},{label:"Run migrations...",action:ye},{label:"Insert initial data...",action:be}):s.push({label:"Prepare plugins files...",action:async()=>await M(e)},{label:"Generate migrations...",action:we},{label:"Run migrations...",action:ye},{label:"Insert initial data...",action:be});for(let i=0;i<s.length;i++){let r=s[i],n=`[${i+1}/${s.length}]`;r.label==="Insert initial data..."?console.log(`
6
+ ${t} ${n} ${r.label}`):console.log(`${t} ${n} ${r.label}`),await r.action()}console.log(`${t} \x1B[32mInitial setup completed.\x1B[0m`),process.exit(0)};rr({quiet:!0});var z="\x1B[34m[VitNode]\x1B[0m",Pt=process.argv[2],Q=process.argv[3];switch(Pt){case"init":Nt({initMessage:z,flag:Q});break;case"migrate":await we(),Q==="--generate"&&(console.log(`${z} \x1B[32mDatabase migrations generated successfully.\x1B[0m`),process.exit(0)),await ye(),await be(),console.log(`${z} \x1B[32mDatabase migrated successfully.\x1B[0m`),process.exit(0);break;case"plugin":(Q==="--w"||Q==="--watch")&&ht({initMessage:z});break;case"prepare-plugins":await M(Q),console.log(`${z} \x1B[32mPlugins prepared successfully.\x1B[0m`),process.exit(0);break;default:console.log(`${z} \x1B[31mCommand not found: "${Pt??""}"\x1B[0m`),process.exit(1)}
7
+ /*! Bundled license information:
8
+
9
+ chokidar/index.js:
10
+ (*! chokidar - MIT License (c) 2012 Paul Miller (paulmillr.com) *)
11
+ */
@@ -10,5 +10,6 @@ export interface SourceConfig {
10
10
  sourceDir: string;
11
11
  }
12
12
  export declare const copyFile: (srcPath: string, destPath: string, pluginName: string, routeMap: Map<string, string>, localeRoot: string, repoRoot: string, verbose?: boolean) => void;
13
+ export declare const cleanupDeletedFiles: (sourceDir: string, destinationDir: string, removeFileFn: (p: string) => void) => void;
13
14
  export declare const copyDirectoryRecursive: (sourceDir: string, destinationDir: string, pluginName: string, routeMap: Map<string, string>, localeRoot: string, repoRoot: string, verbose?: boolean) => void;
14
15
  //# sourceMappingURL=file-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../../scripts/shared/file-utils.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,EAAE,YAAY,MAAM,KAAG,MAY/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,KACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAwBpB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,YAAY,MAAM,KACjB,MA8DF,CAAC;AAEF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkEvD;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAM,EAgB/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,OAM9C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,GACnB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoEf,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoBf,CAAC"}
1
+ {"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../../scripts/shared/file-utils.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,EAAE,YAAY,MAAM,KAAG,MAY/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,KACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAwBpB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,YAAY,MAAM,KACjB,MA8DF,CAAC;AAEF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkEvD;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAM,EAgB/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,OAM9C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,GACnB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoEf,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,cAAc,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,SAmBlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoBf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file-utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-utils.test.d.ts","sourceRoot":"","sources":["../../../scripts/shared/file-utils.test.ts"],"names":[],"mappings":""}
@@ -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;AAWzD,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,oCAmEA"}
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;AAazD,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,oCAkFA"}
@@ -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{newBuildPluginApiCore}from"./plugin.js";import{CONFIG_PLUGIN}from"../config.js";import{globalAdminMiddleware,globalMiddleware}from"./middlewares/global.middleware.js";import{rateLimiterMiddleware}from"./middlewares/rate-limiter.middleware.js";export function VitNodeAPI({app,cors:corsOptions,csrf:csrfOptions,vitNodeApiConfig}){app.doc("/swagger/doc",{openapi:"3.0.0",info:{version:CONFIG_PLUGIN.version,title:"VitNode API"}});app.use(cors(corsOptions));app.use(csrf(csrfOptions));app.use("*",rateLimiterMiddleware(vitNodeApiConfig.rateLimiter));app.get("/swagger",swaggerUI({url:"/api/swagger/doc"}));app.use("*",globalMiddleware({pathToMessages:vitNodeApiConfig.pathToMessages,email:vitNodeApiConfig.email,metadata:vitNodeApiConfig.metadata,authorization:vitNodeApiConfig.authorization,dbProvider:vitNodeApiConfig.dbProvider,captcha:vitNodeApiConfig.captcha,plugins:[newBuildPluginApiCore,...vitNodeApiConfig.plugins]}));app.use(async(c,next)=>{if(c.req.path.includes("/admin/")){return await globalAdminMiddleware()(c,next)}return next()});if(vitNodeApiConfig.cronAdapter){vitNodeApiConfig.cronAdapter.schedule()}[newBuildPluginApiCore,...vitNodeApiConfig.plugins].map(root=>{app.route(`/${root.pluginId}`,root.hono)});app.onError(async(error,c)=>{if(error instanceof HTTPException){return error.getResponse()}const errorMessage=error?.message??"Unknown 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{cors}from"hono/cors";import{csrf}from"hono/csrf";import{HTTPException}from"hono/http-exception";import{createCacheClient}from"./lib/cache-client.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";export function VitNodeAPI({app,cors:corsOptions,csrf:csrfOptions,vitNodeApiConfig}){const redisClient=createCacheClient(vitNodeApiConfig.redis);initRealtimePubSub(redisClient);app.doc("/swagger/doc",{openapi:"3.0.0",info:{version:CONFIG_PLUGIN.version,title:"VitNode API"}});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({pathToMessages:vitNodeApiConfig.pathToMessages,email:vitNodeApiConfig.email,metadata:vitNodeApiConfig.metadata,authorization:vitNodeApiConfig.authorization,dbProvider:vitNodeApiConfig.dbProvider,captcha:vitNodeApiConfig.captcha,cron:vitNodeApiConfig.cron,plugins:[newBuildPluginApiCore,...vitNodeApiConfig.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()}[newBuildPluginApiCore,...vitNodeApiConfig.plugins].map(root=>{app.route(`/${root.pluginId}`,root.hono)});app.onError(async(error,c)=>{if(error instanceof HTTPException){return error.getResponse()}const errorMessage=error?.message??"Unknown 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}
@@ -0,0 +1,4 @@
1
+ import { Redis } from "ioredis";
2
+ import type { CacheConfig } from "./cache";
3
+ export declare const createCacheClient: (config?: CacheConfig) => null | Redis;
4
+ //# sourceMappingURL=cache-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-client.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cache-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,iBAAiB,GAAI,SAAS,WAAW,KAAG,IAAI,GAAG,KAkB/D,CAAC"}
@@ -0,0 +1 @@
1
+ import{Redis}from"ioredis";export const createCacheClient=config=>{if(!config)return null;const{url,...options}=config;const client=url?new Redis(url,{enableOfflineQueue:false,...options}):new Redis({enableOfflineQueue:false,...options});client.on("error",()=>{});return client};
@@ -0,0 +1,32 @@
1
+ import type { Context } from "hono";
2
+ import type { Redis, RedisOptions } from "ioredis";
3
+ export type CacheConfig = RedisOptions & {
4
+ url?: string;
5
+ };
6
+ export declare class CacheModel {
7
+ constructor(client: null | Redis, c: Context);
8
+ protected readonly c: Context;
9
+ protected readonly client: null | Redis;
10
+ private key;
11
+ private prefix;
12
+ private readKey;
13
+ private removeKeys;
14
+ private systemKey;
15
+ private writeKey;
16
+ acquireLock(key: string, ttlSeconds: number): Promise<boolean>;
17
+ delete(key: string | string[]): Promise<void>;
18
+ deleteSystem(key: string | string[]): Promise<void>;
19
+ flush(): Promise<void>;
20
+ get<T>(key: string): Promise<null | T>;
21
+ getSystem<T>(key: string): Promise<null | T>;
22
+ has(key: string): Promise<boolean>;
23
+ releaseLock(key: string): Promise<void>;
24
+ remember<T>(key: string, ttlSeconds: number, loader: () => Promise<T>): Promise<T>;
25
+ set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
26
+ setSystem<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
27
+ status(): Promise<{
28
+ configured: boolean;
29
+ connected: boolean;
30
+ }>;
31
+ }
32
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +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,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAmB1D,qBAAa,UAAU;gBACT,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO;IAK5C,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,KAAK,CAAC;IAExC,OAAO,CAAC,GAAG;IAUX,OAAO,CAAC,MAAM;YAMA,OAAO;YAYP,UAAU;IAUxB,OAAO,CAAC,SAAS;YAIH,QAAQ;IA2BhB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9D,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"}
@@ -0,0 +1 @@
1
+ const CACHE_PREFIX="vitnode:cache:";const SYSTEM_NAMESPACE="__system__";export class CacheModel{constructor(client,c){this.c=c;this.client=client}c;client;key(key){return`${this.prefix()}${key}`}prefix(){const pluginId=this.c.get("plugin")?.id;return pluginId?`${CACHE_PREFIX}${pluginId}:`:CACHE_PREFIX}async readKey(fullKey){if(!this.client)return null;try{const raw=await this.client.get(fullKey);return raw===null?null:JSON.parse(raw)}catch{return null}}async removeKeys(fullKeys){if(!this.client)return;try{if(fullKeys.length>0)await this.client.del(...fullKeys)}catch{}}systemKey(key){return`${CACHE_PREFIX}${SYSTEM_NAMESPACE}:${key}`}async writeKey(fullKey,value,ttlSeconds){if(!this.client)return;try{const raw=JSON.stringify(value);if(ttlSeconds&&ttlSeconds>0){await this.client.set(fullKey,raw,"EX",ttlSeconds)}else{await this.client.set(fullKey,raw)}}catch{}}async acquireLock(key,ttlSeconds){if(!this.client)return true;try{const result=await this.client.set(this.systemKey(`lock:${key}`),"1","EX",ttlSeconds,"NX");return result==="OK"}catch{return false}}async delete(key){const keys=(Array.isArray(key)?key:[key]).map(k=>this.key(k));await this.removeKeys(keys)}async deleteSystem(key){const keys=(Array.isArray(key)?key:[key]).map(k=>this.systemKey(k));await this.removeKeys(keys)}async flush(){if(!this.client)return;try{const stream=this.client.scanStream({match:`${this.prefix()}*`,count:100});for await(const keys of stream){const batch=keys;if(batch.length>0)await this.client.del(...batch)}}catch{}}async get(key){return this.readKey(this.key(key))}async getSystem(key){return this.readKey(this.systemKey(key))}async has(key){if(!this.client)return false;try{return await this.client.exists(this.key(key))===1}catch{return false}}async releaseLock(key){await this.removeKeys([this.systemKey(`lock:${key}`)])}async remember(key,ttlSeconds,loader){const cached=await this.get(key);if(cached!==null)return cached;const value=await loader();await this.set(key,value,ttlSeconds);return value}async set(key,value,ttlSeconds){await this.writeKey(this.key(key),value,ttlSeconds)}async setSystem(key,value,ttlSeconds){await this.writeKey(this.systemKey(key),value,ttlSeconds)}async status(){if(!this.client)return{configured:false,connected:false};try{const pong=await this.client.ping();return{configured:true,connected:pong==="PONG"}}catch{return{configured:true,connected:false}}}}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cache.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.test.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cache.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ import{describe,expect,it,vi}from"vitest";import{CacheModel}from"./cache.js";const fakeContext={get:()=>undefined};const LOCK_KEY="vitnode:cache:__system__:lock:queue:process";describe("CacheModel locks",()=>{describe("without Redis",()=>{const cache=new CacheModel(null,fakeContext);it("acquireLock returns true so cache-less deployments still proceed",async()=>{await expect(cache.acquireLock("queue:process",55)).resolves.toBe(true)});it("releaseLock is a no-op",async()=>{await expect(cache.releaseLock("queue:process")).resolves.toBeUndefined()})});describe("with Redis",()=>{it("acquires the lock with SET NX EX in the system namespace",async()=>{const set=vi.fn().mockResolvedValue("OK");const cache=new CacheModel({set},fakeContext);await expect(cache.acquireLock("queue:process",55)).resolves.toBe(true);expect(set).toHaveBeenCalledWith(LOCK_KEY,"1","EX",55,"NX")});it("returns false when the lock is already held",async()=>{const set=vi.fn().mockResolvedValue(null);const cache=new CacheModel({set},fakeContext);await expect(cache.acquireLock("queue:process",55)).resolves.toBe(false)});it("returns false when Redis errors, to skip rather than double-run",async()=>{const set=vi.fn().mockRejectedValue(new Error("down"));const cache=new CacheModel({set},fakeContext);await expect(cache.acquireLock("queue:process",55)).resolves.toBe(false)});it("releaseLock deletes the lock key",async()=>{const del=vi.fn().mockResolvedValue(1);const cache=new CacheModel({del},fakeContext);await cache.releaseLock("queue:process");expect(del).toHaveBeenCalledWith(LOCK_KEY)})})});
@@ -0,0 +1,20 @@
1
+ import type { Context } from "hono";
2
+ import type { PermissionsStaffArgs, PermissionStaffType, StaffPermissionSet } from "./permission-staff";
3
+ export declare const getUserRoleIds: (c: Context, user: {
4
+ id: number;
5
+ roleId: number;
6
+ }) => Promise<number[]>;
7
+ export declare const resolveStaffPermissions: (c: Context, { type, user, }: {
8
+ type: PermissionStaffType;
9
+ user: {
10
+ id: number;
11
+ roleId: number;
12
+ };
13
+ }) => Promise<StaffPermissionSet>;
14
+ export declare const checkStaffPermission: (c: Context, { type, ...args }: PermissionsStaffArgs & {
15
+ type: PermissionStaffType;
16
+ }) => Promise<boolean>;
17
+ export declare const assertStaffPermission: (c: Context, args: PermissionsStaffArgs & {
18
+ type: PermissionStaffType;
19
+ }) => Promise<void>;
20
+ //# sourceMappingURL=check-staff-permission.d.ts.map
@@ -0,0 +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;AAS5B,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;AAEF,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,CAqC5B,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 @@
1
+ import{and,eq,inArray,or}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{core_admin_permissions}from"../../database/admins.js";import{core_moderators_permissions}from"../../database/moderators.js";import{core_roles}from"../../database/roles.js";import{core_users_secondary_roles}from"../../database/users.js";import{hasStaffPermission,staffPermissionKey}from"./staff-permission.js";const tableByType={admin:core_admin_permissions,moderator:core_moderators_permissions};export const getUserRoleIds=async(c,user)=>{const secondary=await c.get("db").select({roleId:core_users_secondary_roles.roleId}).from(core_users_secondary_roles).where(eq(core_users_secondary_roles.userId,user.id));return[...new Set([user.roleId,...secondary.map(row=>row.roleId)])]};export const resolveStaffPermissions=async(c,{type,user})=>{const roleIds=await getUserRoleIds(c,user);const rootRoles=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(inArray(core_roles.id,roleIds),eq(core_roles.root,true))).limit(1);if(rootRoles.length>0){return{root:true,permissions:[]}}const table=tableByType[type];const entries=await c.get("db").select({data:table.data}).from(table).where(or(eq(table.userId,user.id),inArray(table.roleId,roleIds)));if(entries.some(entry=>entry.data?.unrestricted)){return{root:true,permissions:[]}}const seen=new Set;const permissions=[];for(const entry of entries){for(const permission of entry.data?.permissions??[]){const key=staffPermissionKey(permission);if(seen.has(key))continue;seen.add(key);permissions.push(permission)}}return{root:false,permissions}};export const checkStaffPermission=async(c,{type,...args})=>{const user=type==="admin"?c.get("admin")?.user:c.get("user");if(!user)return false;const set=await resolveStaffPermissions(c,{type,user});return hasStaffPermission(set,args)};export const assertStaffPermission=async(c,args)=>{const allowed=await checkStaffPermission(c,args);if(!allowed){throw new HTTPException(403,{message:"Forbidden"})}};
@@ -1,5 +1,6 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import type { BuildCronReturn } from "./cron";
3
+ import type { BuildQueueTaskReturn } from "./queue";
3
4
  import type { Route } from "./route";
4
5
  import type { BuildWebSocketReturn } from "./websocket";
5
6
  export interface BuildModuleType<T extends Route, Plugin extends string> {
@@ -12,17 +13,19 @@ export interface BaseBuildModuleReturn<P extends string = string, M extends stri
12
13
  modules?: BaseBuildModuleReturn<P>[];
13
14
  name: M;
14
15
  pluginId: P;
16
+ queueTasks: BuildQueueTaskReturn[];
15
17
  routes: Routes;
16
18
  webSockets: BuildWebSocketReturn[];
17
19
  }
18
20
  export interface BuildModuleReturn<P extends string, M extends string, Routes extends Route<P>[] = Route<P>[], Modules extends BaseBuildModuleReturn<P>[] = BaseBuildModuleReturn<P>[]> extends BaseBuildModuleReturn<P, M, Routes> {
19
21
  modules?: Modules;
20
22
  }
21
- export declare function buildModule<const P extends string, const M extends string, const Routes extends Route<P>[], Modules extends BaseBuildModuleReturn<P>[]>({ routes, pluginId, name, modules, cronJobs, webSockets, }: {
23
+ export declare function buildModule<const P extends string, const M extends string, const Routes extends Route<P>[], Modules extends BaseBuildModuleReturn<P>[]>({ routes, pluginId, name, modules, cronJobs, queueTasks, webSockets, }: {
22
24
  cronJobs?: BuildCronReturn[];
23
25
  modules?: Modules;
24
26
  name: M;
25
27
  pluginId: P;
28
+ queueTasks?: BuildQueueTaskReturn[];
26
29
  routes: Routes;
27
30
  webSockets?: BuildWebSocketReturn[];
28
31
  }): BuildModuleReturn<P, M, Routes, Modules>;
@@ -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,QAAQ,CAAC;AAC9C,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,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,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,MAAM,EAAE,MAAM,CAAC;IACf,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,QAAa,EACb,UAAe,GAChB,EAAE;IACD,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAgB3C"}
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,QAAQ,CAAC;AAC9C,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,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,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,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,QAAa,EACb,UAAe,EACf,UAAe,GAChB,EAAE;IACD,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,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,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAyB3C"}
@@ -1 +1 @@
1
- import{OpenAPIHono}from"@hono/zod-openapi";export function buildModule({routes,pluginId,name,modules,cronJobs=[],webSockets=[]}){const hono=new OpenAPIHono;if(routes){routes.forEach(({handler,route})=>{hono.openapi(route,handler)})}if(modules){modules.forEach(module=>{hono.route(`/${module.name}`,module.hono)})}return{routes,pluginId,hono,name,modules,cronJobs,webSockets}}
1
+ import{OpenAPIHono}from"@hono/zod-openapi";export function buildModule({routes,pluginId,name,modules,cronJobs=[],queueTasks=[],webSockets=[]}){const hono=new OpenAPIHono;if(routes){routes.forEach(({handler,route})=>{hono.openapi(route,handler)})}if(modules){modules.forEach(module=>{hono.route(`/${module.name}`,module.hono)})}return{routes,pluginId,hono,name,modules,cronJobs,queueTasks,webSockets}}
@@ -0,0 +1,35 @@
1
+ export type PermissionStaffEntryInput = string | {
2
+ dependsOn?: string[];
3
+ permission: string;
4
+ };
5
+ export type PermissionStaffModulesInput = Record<string, PermissionStaffEntryInput[]>;
6
+ export interface PermissionStaffEntry {
7
+ dependsOn: string[];
8
+ permission: string;
9
+ }
10
+ export type PermissionStaffModules = Record<string, PermissionStaffEntry[]>;
11
+ export interface PermissionStaffConfig {
12
+ admin?: PermissionStaffModulesInput;
13
+ moderator?: PermissionStaffModulesInput;
14
+ }
15
+ export type PermissionStaffType = "admin" | "moderator";
16
+ export declare const normalizePermissionStaffModules: (modules?: PermissionStaffModulesInput) => PermissionStaffModules;
17
+ export interface PermissionsStaffArgs {
18
+ module: string;
19
+ permission: string;
20
+ plugin: string;
21
+ }
22
+ export interface StaffPermissionsData {
23
+ permissions: PermissionsStaffArgs[];
24
+ unrestricted: boolean;
25
+ }
26
+ export interface PermissionStaffCatalogEntry {
27
+ admin: PermissionStaffModules;
28
+ moderator: PermissionStaffModules;
29
+ pluginId: string;
30
+ }
31
+ export interface StaffPermissionSet {
32
+ permissions: PermissionsStaffArgs[];
33
+ root: boolean;
34
+ }
35
+ //# sourceMappingURL=permission-staff.d.ts.map
@@ -0,0 +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;AAKJ,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,YAAY,EAAE,OAAO,CAAC;CACvB;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"}
@@ -0,0 +1 @@
1
+ export const normalizePermissionStaffModules=(modules={})=>Object.fromEntries(Object.entries(modules).map(([module,entries])=>[module,entries.map(entry=>typeof entry==="string"?{permission:entry,dependsOn:[]}:{permission:entry.permission,dependsOn:entry.dependsOn??[]})]));
@@ -1,15 +1,20 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
2
  import type { CronJobConfig } from "./cron";
3
3
  import type { BuildModuleReturn } from "./module";
4
+ import type { PermissionStaffConfig } from "./permission-staff";
5
+ import type { QueueTaskConfig } from "./queue";
4
6
  import type { WebSocketConfig } from "./websocket";
5
7
  export interface BuildPluginApiReturn {
6
- cronJobs: Omit<CronJobConfig, "pluginId">[];
8
+ cronJobs?: Omit<CronJobConfig, "pluginId">[];
7
9
  hono: OpenAPIHono;
10
+ permissionStaff?: PermissionStaffConfig;
8
11
  pluginId: string;
9
- webSockets: Omit<WebSocketConfig, "pluginId">[];
12
+ queueTasks?: Omit<QueueTaskConfig, "pluginId">[];
13
+ webSockets?: Omit<WebSocketConfig, "pluginId">[];
10
14
  }
11
- export declare function buildApiPlugin<P extends string>({ pluginId, modules, }: {
15
+ export declare function buildApiPlugin<P extends string>({ pluginId, modules, permissionStaff, }: {
12
16
  modules?: BuildModuleReturn<P, string>[];
17
+ permissionStaff?: PermissionStaffConfig;
13
18
  pluginId: P;
14
19
  }): BuildPluginApiReturn;
15
20
  //# sourceMappingURL=plugin.d.ts.map
@@ -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;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;IAC5C,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;CACjD;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,OAAY,GACb,EAAE;IACD,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC;CACb,GAAG,oBAAoB,CAyBvB"}
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,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;AAInD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,OAAY,EACZ,eAAe,GAChB,EAAE;IACD,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC;CACb,GAAG,oBAAoB,CAgCvB"}
@@ -1 +1 @@
1
- import{OpenAPIHono}from"@hono/zod-openapi";import{checkPluginId}from"./check-plugin-id.js";export function buildApiPlugin({pluginId,modules=[]}){checkPluginId(pluginId);const hono=new OpenAPIHono;const cronJobs=[];const webSockets=[];modules.forEach(handler=>{hono.route(`/${handler.name}`,handler.hono);handler.cronJobs?.forEach(cron=>{cronJobs.push({...cron,module:handler.name})});handler.webSockets?.forEach(webSocket=>{webSockets.push({...webSocket,module:handler.name})})});return{pluginId,hono,cronJobs,webSockets}}
1
+ import{OpenAPIHono}from"@hono/zod-openapi";import{checkPluginId}from"./check-plugin-id.js";export function buildApiPlugin({pluginId,modules=[],permissionStaff}){checkPluginId(pluginId);const hono=new OpenAPIHono;const cronJobs=[];const queueTasks=[];const webSockets=[];modules.forEach(handler=>{hono.route(`/${handler.name}`,handler.hono);handler.cronJobs?.forEach(cron=>{cronJobs.push({...cron,module:handler.name})});handler.queueTasks?.forEach(task=>{queueTasks.push({...task,module:handler.name})});handler.webSockets?.forEach(webSocket=>{webSockets.push({...webSocket,module:handler.name})})});return{pluginId,hono,cronJobs,queueTasks,webSockets,permissionStaff}}
@@ -0,0 +1,14 @@
1
+ import type { Context } from "hono";
2
+ import type { EnvVitNode } from "../middlewares/global.middleware";
3
+ export interface BuildQueueTaskReturn {
4
+ description?: string;
5
+ handler: (c: Context<EnvVitNode>, payload: Record<string, unknown>) => Promise<void> | void;
6
+ maxAttempts?: number;
7
+ name: string;
8
+ }
9
+ export interface QueueTaskConfig extends BuildQueueTaskReturn {
10
+ module: string;
11
+ pluginId: string;
12
+ }
13
+ export declare function buildQueueTask({ name, handler, description, maxAttempts, }: BuildQueueTaskReturn): BuildQueueTaskReturn;
14
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CACP,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;IAC3D,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,WAAW,EACX,WAAW,GACZ,EAAE,oBAAoB,GAAG,oBAAoB,CAE7C"}
@@ -0,0 +1 @@
1
+ export function buildQueueTask({name,handler,description,maxAttempts}){return{name,handler,description,maxAttempts}}
@@ -0,0 +1,7 @@
1
+ import type { Context } from "hono";
2
+ export interface ResolvedRoleName {
3
+ languageCode: string;
4
+ name: string;
5
+ }
6
+ export declare const resolveRoleNames: (c: Context, roleIds: number[]) => Promise<Map<number, ResolvedRoleName[]>>;
7
+ //# sourceMappingURL=resolve-role-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-role-names.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/resolve-role-names.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMpC,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,eAAO,MAAM,gBAAgB,GAC3B,GAAG,OAAO,EACV,SAAS,MAAM,EAAE,KAChB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAkCzC,CAAC"}
@@ -0,0 +1 @@
1
+ import{and,eq,inArray}from"drizzle-orm";import{core_languages_words}from"../../database/languages.js";export const resolveRoleNames=async(c,roleIds)=>{const ids=[...new Set(roleIds)];if(ids.length===0){return new Map}const words=await c.get("db").select({itemId:core_languages_words.itemId,languageCode:core_languages_words.languageCode,value:core_languages_words.value}).from(core_languages_words).where(and(eq(core_languages_words.tableName,"core_roles"),eq(core_languages_words.variable,"name"),eq(core_languages_words.pluginCode,"core"),inArray(core_languages_words.itemId,ids)));const result=new Map;for(const id of ids){result.set(id,words.filter(word=>word.itemId===id).map(word=>({name:word.value,languageCode:word.languageCode})))}return result};
@@ -1,9 +1,15 @@
1
1
  import type { RouteConfig, RouteHandler } from "@hono/zod-openapi";
2
2
  import { type EnvVitNode } from "../middlewares/global.middleware";
3
+ export interface AdminStaffPermission {
4
+ module: string;
5
+ permission: string;
6
+ plugin?: string;
7
+ }
3
8
  export declare const buildRoute: <Plugin extends string, P extends string, R extends Omit<RouteConfig, "path"> & {
4
9
  path: P;
5
10
  withCaptcha?: boolean;
6
- }>({ route, handler, pluginId, }: {
11
+ }>({ route, handler, pluginId, adminStaffPermission, }: {
12
+ adminStaffPermission?: AdminStaffPermission;
7
13
  handler: RouteHandler<R & {
8
14
  path: P;
9
15
  }, EnvVitNode>;
@@ -1 +1 @@
1
- {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKnE,OAAO,EACL,KAAK,UAAU,EAEhB,MAAM,kCAAkC,CAAC;AAE1C,eAAO,MAAM,UAAU,GACrB,MAAM,SAAS,MAAM,EACrB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IACpC,IAAI,EAAE,CAAC,CAAC;IACR,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,EACD,+BAIC;IACD,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,EAAE,UAAU,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;CACV,KAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAyBhC,CAAC;AAEF,MAAM,WAAW,KAAK,CACpB,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,CAAC,SAAS,WAAW,GAAG,WAAW;IAEnC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;CACV"}
1
+ {"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMnE,OAAO,EACL,KAAK,UAAU,EAEhB,MAAM,kCAAkC,CAAC;AAG1C,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,GACrB,MAAM,SAAS,MAAM,EACrB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IACpC,IAAI,EAAE,CAAC,CAAC;IACR,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,EACD,qDAKC;IACD,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,EAAE,UAAU,CAAC,CAAC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;CACV,KAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CA0ChC,CAAC;AAEF,MAAM,WAAW,KAAK,CACpB,MAAM,SAAS,MAAM,GAAG,MAAM,EAC9B,CAAC,SAAS,WAAW,GAAG,WAAW;IAEnC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,CAAC,CAAC;CACV"}
@@ -1 +1 @@
1
- import{createRoute as createRouteHono}from"@hono/zod-openapi";import{captchaMiddleware}from"../middlewares/captcha.middleware.js";import{pluginMiddleware}from"../middlewares/global.middleware.js";export const buildRoute=({route,handler,pluginId})=>{const pluginTag=pluginId.split(/[-_]/).map(word=>word.charAt(0).toUpperCase()+word.slice(1)).join(" ");const tags=[pluginTag,...route.tags??[]];return{route:createRouteHono({tags,middleware:[pluginMiddleware(pluginId),...route.withCaptcha?[captchaMiddleware()]:[],...Array.isArray(route.middleware)?route.middleware:route.middleware?[route.middleware]:[]],...route}),handler:handler,pluginId}};
1
+ import{createRoute as createRouteHono}from"@hono/zod-openapi";import{captchaMiddleware}from"../middlewares/captcha.middleware.js";import{pluginMiddleware}from"../middlewares/global.middleware.js";import{assertStaffPermission}from"./check-staff-permission.js";export const buildRoute=({route,handler,pluginId,adminStaffPermission})=>{const pluginTag=pluginId.split(/[-_]/).map(word=>word.charAt(0).toUpperCase()+word.slice(1)).join(" ");const tags=[pluginTag,...route.tags??[]];const middleware=[pluginMiddleware(pluginId)];if(adminStaffPermission){const{plugin,module,permission}=adminStaffPermission;middleware.push(async(c,next)=>{await assertStaffPermission(c,{type:"admin",plugin:plugin??pluginId,module,permission});await next()})}if(route.withCaptcha){middleware.push(captchaMiddleware())}if(Array.isArray(route.middleware)){middleware.push(...route.middleware)}else if(route.middleware){middleware.push(route.middleware)}return{route:createRouteHono({tags,middleware,...route}),handler:handler,pluginId}};
@@ -0,0 +1,4 @@
1
+ import type { PermissionsStaffArgs, StaffPermissionSet } from "./permission-staff";
2
+ export declare const hasStaffPermission: (set: StaffPermissionSet, args: PermissionsStaffArgs) => boolean;
3
+ export declare const staffPermissionKey: ({ plugin, module, permission, }: PermissionsStaffArgs) => string;
4
+ //# sourceMappingURL=staff-permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staff-permission.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/staff-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,kBAAkB,GAC7B,KAAK,kBAAkB,EACvB,MAAM,oBAAoB,KACzB,OASF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,iCAIhC,oBAAoB,KAAG,MAA6C,CAAC"}
@@ -0,0 +1 @@
1
+ export const hasStaffPermission=(set,args)=>{if(set.root)return true;return set.permissions.some(permission=>permission.plugin===args.plugin&&permission.module===args.module&&permission.permission===args.permission)};export const staffPermissionKey=({plugin,module,permission})=>`${plugin}:${module}:${permission}`;