@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.
- package/config/next.config.ts +4 -0
- package/dist/scripts/plugin.d.ts.map +1 -1
- package/dist/scripts/prepare-database.d.ts.map +1 -1
- package/dist/scripts/scripts.js +10 -39
- package/dist/scripts/shared/file-utils.d.ts +1 -0
- package/dist/scripts/shared/file-utils.d.ts.map +1 -1
- package/dist/scripts/shared/file-utils.test.d.ts +2 -0
- package/dist/scripts/shared/file-utils.test.d.ts.map +1 -0
- package/dist/src/api/config.d.ts.map +1 -1
- package/dist/src/api/config.js +1 -1
- package/dist/src/api/lib/cache-client.d.ts +4 -0
- package/dist/src/api/lib/cache-client.d.ts.map +1 -0
- package/dist/src/api/lib/cache-client.js +1 -0
- package/dist/src/api/lib/cache.d.ts +32 -0
- package/dist/src/api/lib/cache.d.ts.map +1 -0
- package/dist/src/api/lib/cache.js +1 -0
- package/dist/src/api/lib/cache.test.d.ts +2 -0
- package/dist/src/api/lib/cache.test.d.ts.map +1 -0
- package/dist/src/api/lib/cache.test.js +1 -0
- package/dist/src/api/lib/check-staff-permission.d.ts +20 -0
- package/dist/src/api/lib/check-staff-permission.d.ts.map +1 -0
- package/dist/src/api/lib/check-staff-permission.js +1 -0
- package/dist/src/api/lib/module.d.ts +4 -1
- package/dist/src/api/lib/module.d.ts.map +1 -1
- package/dist/src/api/lib/module.js +1 -1
- package/dist/src/api/lib/permission-staff.d.ts +35 -0
- package/dist/src/api/lib/permission-staff.d.ts.map +1 -0
- package/dist/src/api/lib/permission-staff.js +1 -0
- package/dist/src/api/lib/plugin.d.ts +8 -3
- package/dist/src/api/lib/plugin.d.ts.map +1 -1
- package/dist/src/api/lib/plugin.js +1 -1
- package/dist/src/api/lib/queue.d.ts +14 -0
- package/dist/src/api/lib/queue.d.ts.map +1 -0
- package/dist/src/api/lib/queue.js +1 -0
- package/dist/src/api/lib/resolve-role-names.d.ts +7 -0
- package/dist/src/api/lib/resolve-role-names.d.ts.map +1 -0
- package/dist/src/api/lib/resolve-role-names.js +1 -0
- package/dist/src/api/lib/route.d.ts +7 -1
- package/dist/src/api/lib/route.d.ts.map +1 -1
- package/dist/src/api/lib/route.js +1 -1
- package/dist/src/api/lib/staff-permission.d.ts +4 -0
- package/dist/src/api/lib/staff-permission.d.ts.map +1 -0
- package/dist/src/api/lib/staff-permission.js +1 -0
- package/dist/src/api/middlewares/global.middleware.d.ts +18 -5
- package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
- package/dist/src/api/middlewares/global.middleware.js +1 -1
- package/dist/src/api/middlewares/rate-limiter.middleware.d.ts +2 -1
- package/dist/src/api/middlewares/rate-limiter.middleware.d.ts.map +1 -1
- package/dist/src/api/middlewares/rate-limiter.middleware.js +1 -1
- package/dist/src/api/models/email.d.ts +11 -1
- package/dist/src/api/models/email.d.ts.map +1 -1
- package/dist/src/api/models/email.js +1 -1
- package/dist/src/api/models/email.test.d.ts +2 -0
- package/dist/src/api/models/email.test.d.ts.map +1 -0
- package/dist/src/api/models/email.test.js +1 -0
- package/dist/src/api/models/queue.d.ts +17 -0
- package/dist/src/api/models/queue.d.ts.map +1 -0
- package/dist/src/api/models/queue.js +1 -0
- package/dist/src/api/models/queue.test.d.ts +2 -0
- package/dist/src/api/models/queue.test.d.ts.map +1 -0
- package/dist/src/api/models/queue.test.js +1 -0
- package/dist/src/api/models/session-admin.d.ts.map +1 -1
- package/dist/src/api/models/session-admin.js +1 -1
- package/dist/src/api/models/session-cache.d.ts +8 -0
- package/dist/src/api/models/session-cache.d.ts.map +1 -0
- package/dist/src/api/models/session-cache.js +1 -0
- package/dist/src/api/models/session.d.ts.map +1 -1
- package/dist/src/api/models/session.js +1 -1
- package/dist/src/api/modules/admin/admin.module.d.ts +694 -8
- package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
- package/dist/src/api/modules/admin/admin.module.js +1 -1
- package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts +64 -2
- package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts.map +1 -1
- package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +1 -1
- package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts +64 -0
- package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts.map +1 -0
- package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.js +1 -0
- package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts +65 -0
- package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/advanced/queue/routes/get.route.js +1 -0
- package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts +122 -2
- package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts.map +1 -1
- package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -1
- package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts +49 -0
- package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/debug/routes/integrations.route.js +1 -0
- package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts +2 -2
- package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -1
- package/dist/src/api/modules/admin/debug/routes/queue.route.d.ts +42 -0
- package/dist/src/api/modules/admin/debug/routes/queue.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/debug/routes/queue.route.js +1 -0
- package/dist/src/api/modules/admin/debug/routes/send-test-email.route.d.ts +43 -0
- package/dist/src/api/modules/admin/debug/routes/send-test-email.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/debug/routes/send-test-email.route.js +1 -0
- package/dist/src/api/modules/admin/routes/session.route.d.ts +8 -0
- package/dist/src/api/modules/admin/routes/session.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/routes/session.route.js +1 -1
- package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts +38 -0
- package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.js +1 -0
- package/dist/src/api/modules/admin/staff/lib/schema.d.ts +107 -0
- package/dist/src/api/modules/admin/staff/lib/schema.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/lib/schema.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/admins.route.d.ts +76 -0
- package/dist/src/api/modules/admin/staff/routes/admins.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/admins.route.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/create.route.d.ts +52 -0
- package/dist/src/api/modules/admin/staff/routes/create.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/create.route.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/delete.route.d.ts +36 -0
- package/dist/src/api/modules/admin/staff/routes/delete.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/delete.route.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/moderators.route.d.ts +76 -0
- package/dist/src/api/modules/admin/staff/routes/moderators.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/moderators.route.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.d.ts +32 -0
- package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/permission-catalog.route.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts +75 -0
- package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/show-permissions.route.js +1 -0
- package/dist/src/api/modules/admin/staff/routes/update-permissions.route.d.ts +62 -0
- package/dist/src/api/modules/admin/staff/routes/update-permissions.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/routes/update-permissions.route.js +1 -0
- package/dist/src/api/modules/admin/staff/staff.admin.module.d.ts +392 -0
- package/dist/src/api/modules/admin/staff/staff.admin.module.d.ts.map +1 -0
- package/dist/src/api/modules/admin/staff/staff.admin.module.js +1 -0
- package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts +4 -0
- package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.d.ts.map +1 -0
- package/dist/src/api/modules/admin/users/lib/assert-edit-user-permission.js +1 -0
- package/dist/src/api/modules/admin/users/routes/create.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/users/routes/create.route.js +1 -1
- package/dist/src/api/modules/admin/users/routes/list.route.d.ts +16 -0
- package/dist/src/api/modules/admin/users/routes/list.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/users/routes/list.route.js +1 -1
- package/dist/src/api/modules/admin/users/routes/show.route.d.ts +19 -2
- package/dist/src/api/modules/admin/users/routes/show.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/users/routes/show.route.js +1 -1
- package/dist/src/api/modules/admin/users/routes/update.route.d.ts +83 -0
- package/dist/src/api/modules/admin/users/routes/update.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/users/routes/update.route.js +1 -0
- package/dist/src/api/modules/admin/users/routes/verify-email.route.d.ts +2 -2
- package/dist/src/api/modules/admin/users/routes/verify-email.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/users/routes/verify-email.route.js +1 -1
- package/dist/src/api/modules/admin/users/users.admin.module.d.ts +110 -4
- package/dist/src/api/modules/admin/users/users.admin.module.d.ts.map +1 -1
- package/dist/src/api/modules/admin/users/users.admin.module.js +1 -1
- package/dist/src/api/modules/queue/cron/process-queue.cron.d.ts +2 -0
- package/dist/src/api/modules/queue/cron/process-queue.cron.d.ts.map +1 -0
- package/dist/src/api/modules/queue/cron/process-queue.cron.js +1 -0
- package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts +4 -0
- package/dist/src/api/modules/queue/helpers/process-queue-tasks.d.ts.map +1 -0
- package/dist/src/api/modules/queue/helpers/process-queue-tasks.js +1 -0
- package/dist/src/api/modules/queue/queue.module.d.ts +2 -0
- package/dist/src/api/modules/queue/queue.module.d.ts.map +1 -0
- package/dist/src/api/modules/queue/queue.module.js +1 -0
- package/dist/src/api/modules/queue/tasks/send-email.task.d.ts +10 -0
- package/dist/src/api/modules/queue/tasks/send-email.task.d.ts.map +1 -0
- package/dist/src/api/modules/queue/tasks/send-email.task.js +1 -0
- package/dist/src/api/modules/users/routes/permissions.route.d.ts +26 -0
- package/dist/src/api/modules/users/routes/permissions.route.d.ts.map +1 -0
- package/dist/src/api/modules/users/routes/permissions.route.js +1 -0
- package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -1
- package/dist/src/api/modules/users/routes/session.route.d.ts +1 -0
- package/dist/src/api/modules/users/routes/session.route.d.ts.map +1 -1
- package/dist/src/api/modules/users/routes/session.route.js +1 -1
- package/dist/src/api/modules/users/users.module.d.ts +24 -0
- package/dist/src/api/modules/users/users.module.d.ts.map +1 -1
- package/dist/src/api/modules/users/users.module.js +1 -1
- package/dist/src/api/plugin.d.ts.map +1 -1
- package/dist/src/api/plugin.js +1 -1
- package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts +1 -1
- package/dist/src/components/confirm-action/confirm-action-alert-dialog.d.ts.map +1 -1
- package/dist/src/components/confirm-action/confirm-action-alert-dialog.js +1 -1
- package/dist/src/components/form/auto-form.js +1 -1
- package/dist/src/components/form/fields/array.d.ts.map +1 -1
- package/dist/src/components/form/fields/checkbox.js +1 -1
- package/dist/src/components/form/fields/select.d.ts.map +1 -1
- package/dist/src/components/form/fields/select.js +1 -1
- package/dist/src/components/form/fields/switch.js +1 -1
- package/dist/src/components/staff-permission/provider.d.ts +13 -0
- package/dist/src/components/staff-permission/provider.d.ts.map +1 -0
- package/dist/src/components/staff-permission/provider.js +1 -0
- package/dist/src/components/switchers/langs/language-switcher.d.ts.map +1 -1
- package/dist/src/components/switchers/langs/language-switcher.js +1 -1
- package/dist/src/components/switchers/themes/theme-switcher.js +1 -1
- package/dist/src/components/table/filters.d.ts.map +1 -1
- package/dist/src/components/table/filters.js +1 -1
- package/dist/src/components/table/pagination.d.ts.map +1 -1
- package/dist/src/components/table/pagination.js +1 -1
- package/dist/src/components/theme-provider.d.ts +26 -0
- package/dist/src/components/theme-provider.d.ts.map +1 -0
- package/dist/src/components/theme-provider.js +1 -0
- package/dist/src/components/tiptap/toolbar/actions/alignment-action.d.ts.map +1 -1
- package/dist/src/components/tiptap/toolbar/actions/alignment-action.js +1 -1
- package/dist/src/components/tiptap/toolbar/actions/headings-action.d.ts.map +1 -1
- package/dist/src/components/tiptap/toolbar/actions/headings-action.js +1 -1
- package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts.map +1 -1
- package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +1 -1
- package/dist/src/components/ui/accordion.d.ts +3 -3
- package/dist/src/components/ui/accordion.d.ts.map +1 -1
- package/dist/src/components/ui/accordion.js +1 -1
- package/dist/src/components/ui/alert-dialog.d.ts +10 -10
- package/dist/src/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/src/components/ui/alert-dialog.js +1 -1
- package/dist/src/components/ui/alert.d.ts +2 -2
- package/dist/src/components/ui/alert.d.ts.map +1 -1
- package/dist/src/components/ui/alert.js +1 -1
- package/dist/src/components/ui/aspect-ratio.d.ts +4 -2
- package/dist/src/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/src/components/ui/aspect-ratio.js +1 -1
- package/dist/src/components/ui/avatar.d.ts +2 -2
- package/dist/src/components/ui/avatar.d.ts.map +1 -1
- package/dist/src/components/ui/avatar.js +1 -1
- package/dist/src/components/ui/badge.d.ts +3 -5
- package/dist/src/components/ui/badge.d.ts.map +1 -1
- package/dist/src/components/ui/badge.js +1 -1
- package/dist/src/components/ui/breadcrumb.d.ts +3 -4
- package/dist/src/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/src/components/ui/breadcrumb.js +1 -1
- package/dist/src/components/ui/button-client.d.ts +1 -1
- package/dist/src/components/ui/button-client.d.ts.map +1 -1
- package/dist/src/components/ui/button-client.js +1 -1
- package/dist/src/components/ui/button-group.d.ts +2 -3
- package/dist/src/components/ui/button-group.d.ts.map +1 -1
- package/dist/src/components/ui/button-group.js +1 -1
- package/dist/src/components/ui/button.d.ts +5 -5
- package/dist/src/components/ui/button.d.ts.map +1 -1
- package/dist/src/components/ui/button.js +1 -1
- package/dist/src/components/ui/card.d.ts +1 -1
- package/dist/src/components/ui/card.d.ts.map +1 -1
- package/dist/src/components/ui/card.js +1 -1
- package/dist/src/components/ui/carousel.d.ts +1 -1
- package/dist/src/components/ui/carousel.d.ts.map +1 -1
- package/dist/src/components/ui/carousel.js +1 -1
- package/dist/src/components/ui/chart.d.ts +1 -1
- package/dist/src/components/ui/chart.d.ts.map +1 -1
- package/dist/src/components/ui/chart.js +1 -1
- package/dist/src/components/ui/checkbox.d.ts +2 -2
- package/dist/src/components/ui/checkbox.d.ts.map +1 -1
- package/dist/src/components/ui/checkbox.js +1 -1
- package/dist/src/components/ui/collapsible.d.ts +5 -4
- package/dist/src/components/ui/collapsible.d.ts.map +1 -1
- package/dist/src/components/ui/collapsible.js +1 -1
- package/dist/src/components/ui/combobox.d.ts +1 -1
- package/dist/src/components/ui/combobox.d.ts.map +1 -1
- package/dist/src/components/ui/combobox.js +1 -1
- package/dist/src/components/ui/command.d.ts +1 -1
- package/dist/src/components/ui/command.d.ts.map +1 -1
- package/dist/src/components/ui/command.js +1 -1
- package/dist/src/components/ui/context-menu.d.ts +7 -9
- package/dist/src/components/ui/context-menu.d.ts.map +1 -1
- package/dist/src/components/ui/context-menu.js +1 -1
- package/dist/src/components/ui/dialog.d.ts +12 -9
- package/dist/src/components/ui/dialog.d.ts.map +1 -1
- package/dist/src/components/ui/dialog.js +1 -1
- package/dist/src/components/ui/direction.d.ts +5 -5
- package/dist/src/components/ui/direction.d.ts.map +1 -1
- package/dist/src/components/ui/direction.js +1 -1
- package/dist/src/components/ui/drawer.d.ts +1 -1
- package/dist/src/components/ui/drawer.d.ts.map +1 -1
- package/dist/src/components/ui/drawer.js +1 -1
- package/dist/src/components/ui/dropdown-menu.d.ts +16 -16
- package/dist/src/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/src/components/ui/dropdown-menu.js +1 -1
- package/dist/src/components/ui/empty.d.ts.map +1 -1
- package/dist/src/components/ui/empty.js +1 -1
- package/dist/src/components/ui/field.js +1 -1
- package/dist/src/components/ui/form.d.ts +1 -2
- package/dist/src/components/ui/form.d.ts.map +1 -1
- package/dist/src/components/ui/form.js +1 -1
- package/dist/src/components/ui/hover-card.d.ts +5 -5
- package/dist/src/components/ui/hover-card.d.ts.map +1 -1
- package/dist/src/components/ui/hover-card.js +1 -1
- package/dist/src/components/ui/input-group.d.ts +4 -2
- package/dist/src/components/ui/input-group.d.ts.map +1 -1
- package/dist/src/components/ui/input-group.js +1 -1
- package/dist/src/components/ui/input-otp.d.ts +1 -1
- package/dist/src/components/ui/input-otp.d.ts.map +1 -1
- package/dist/src/components/ui/input-otp.js +1 -1
- package/dist/src/components/ui/input.d.ts +1 -1
- package/dist/src/components/ui/input.d.ts.map +1 -1
- package/dist/src/components/ui/input.js +1 -1
- package/dist/src/components/ui/item.d.ts +4 -5
- package/dist/src/components/ui/item.d.ts.map +1 -1
- package/dist/src/components/ui/item.js +1 -1
- package/dist/src/components/ui/label.d.ts +2 -3
- package/dist/src/components/ui/label.d.ts.map +1 -1
- package/dist/src/components/ui/label.js +1 -1
- package/dist/src/components/ui/menubar.d.ts +18 -17
- package/dist/src/components/ui/menubar.d.ts.map +1 -1
- package/dist/src/components/ui/menubar.js +1 -1
- package/dist/src/components/ui/native-select.d.ts +1 -1
- package/dist/src/components/ui/native-select.d.ts.map +1 -1
- package/dist/src/components/ui/native-select.js +1 -1
- package/dist/src/components/ui/navigation-menu.d.ts +9 -11
- package/dist/src/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/src/components/ui/navigation-menu.js +1 -1
- package/dist/src/components/ui/pagination.d.ts +1 -1
- package/dist/src/components/ui/pagination.d.ts.map +1 -1
- package/dist/src/components/ui/pagination.js +1 -1
- package/dist/src/components/ui/popover.d.ts +6 -7
- package/dist/src/components/ui/popover.d.ts.map +1 -1
- package/dist/src/components/ui/popover.js +1 -1
- package/dist/src/components/ui/progress.d.ts +2 -2
- package/dist/src/components/ui/progress.d.ts.map +1 -1
- package/dist/src/components/ui/progress.js +1 -1
- package/dist/src/components/ui/radio-group.d.ts +5 -4
- package/dist/src/components/ui/radio-group.d.ts.map +1 -1
- package/dist/src/components/ui/radio-group.js +1 -1
- package/dist/src/components/ui/scroll-area.d.ts +3 -3
- package/dist/src/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/src/components/ui/scroll-area.js +1 -1
- package/dist/src/components/ui/select.d.ts +6 -6
- package/dist/src/components/ui/select.d.ts.map +1 -1
- package/dist/src/components/ui/select.js +1 -1
- package/dist/src/components/ui/separator.d.ts +3 -3
- package/dist/src/components/ui/separator.d.ts.map +1 -1
- package/dist/src/components/ui/separator.js +1 -1
- package/dist/src/components/ui/sheet.d.ts +8 -8
- package/dist/src/components/ui/sheet.d.ts.map +1 -1
- package/dist/src/components/ui/sheet.js +1 -1
- package/dist/src/components/ui/sidebar.d.ts +9 -15
- package/dist/src/components/ui/sidebar.d.ts.map +1 -1
- package/dist/src/components/ui/sidebar.js +1 -1
- package/dist/src/components/ui/slider.d.ts +2 -2
- package/dist/src/components/ui/slider.d.ts.map +1 -1
- package/dist/src/components/ui/slider.js +1 -1
- package/dist/src/components/ui/sonner.d.ts.map +1 -1
- package/dist/src/components/ui/sonner.js +1 -1
- package/dist/src/components/ui/spinner.d.ts.map +1 -1
- package/dist/src/components/ui/spinner.js +1 -1
- package/dist/src/components/ui/switch.d.ts +2 -2
- package/dist/src/components/ui/switch.d.ts.map +1 -1
- package/dist/src/components/ui/switch.js +1 -1
- package/dist/src/components/ui/table.d.ts +1 -1
- package/dist/src/components/ui/table.d.ts.map +1 -1
- package/dist/src/components/ui/table.js +1 -1
- package/dist/src/components/ui/tabs.d.ts +4 -4
- package/dist/src/components/ui/tabs.d.ts.map +1 -1
- package/dist/src/components/ui/tabs.js +1 -1
- package/dist/src/components/ui/textarea.d.ts +1 -1
- package/dist/src/components/ui/textarea.d.ts.map +1 -1
- package/dist/src/components/ui/textarea.js +1 -1
- package/dist/src/components/ui/toggle-group.d.ts +1 -1
- package/dist/src/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/src/components/ui/toggle-group.js +1 -1
- package/dist/src/components/ui/tooltip.d.ts +1 -1
- package/dist/src/components/ui/tooltip.d.ts.map +1 -1
- package/dist/src/components/ui/tooltip.js +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/database/admins.d.ts +20 -0
- package/dist/src/database/admins.d.ts.map +1 -1
- package/dist/src/database/admins.js +1 -1
- package/dist/src/database/languages.d.ts.map +1 -1
- package/dist/src/database/languages.js +1 -1
- package/dist/src/database/logs.d.ts +1 -1
- package/dist/src/database/moderators.d.ts +20 -0
- package/dist/src/database/moderators.d.ts.map +1 -1
- package/dist/src/database/moderators.js +1 -1
- package/dist/src/database/queue.d.ts +273 -0
- package/dist/src/database/queue.d.ts.map +1 -0
- package/dist/src/database/queue.js +1 -0
- package/dist/src/database/users.d.ts +63 -0
- package/dist/src/database/users.d.ts.map +1 -1
- package/dist/src/database/users.js +1 -1
- package/dist/src/emails/default-template.d.ts +1 -1
- package/dist/src/emails/default-template.d.ts.map +1 -1
- package/dist/src/emails/default-template.js +1 -1
- package/dist/src/emails/reset-password.js +1 -1
- package/dist/src/emails/test-email.d.ts +26 -0
- package/dist/src/emails/test-email.d.ts.map +1 -0
- package/dist/src/emails/test-email.js +1 -0
- package/dist/src/emails/ui/button.d.ts +2 -2
- package/dist/src/emails/ui/button.d.ts.map +1 -1
- package/dist/src/emails/ui/button.js +1 -1
- package/dist/src/emails/ui/card.d.ts +1 -1
- package/dist/src/emails/ui/card.d.ts.map +1 -1
- package/dist/src/emails/ui/card.js +1 -1
- package/dist/src/hooks/use-captcha.d.ts.map +1 -1
- package/dist/src/hooks/use-captcha.js +1 -1
- package/dist/src/hooks/use-mobile.js +1 -1
- package/dist/src/lib/api/get-moderator-permissions-api.d.ts +4 -0
- package/dist/src/lib/api/get-moderator-permissions-api.d.ts.map +1 -0
- package/dist/src/lib/api/get-moderator-permissions-api.js +1 -0
- package/dist/src/lib/api/get-next-cron-run-date.js +1 -1
- package/dist/src/lib/api/get-queue-backoff-date.d.ts +2 -0
- package/dist/src/lib/api/get-queue-backoff-date.d.ts.map +1 -0
- package/dist/src/lib/api/get-queue-backoff-date.js +1 -0
- package/dist/src/lib/api/get-queue-backoff-date.test.d.ts +2 -0
- package/dist/src/lib/api/get-queue-backoff-date.test.d.ts.map +1 -0
- package/dist/src/lib/api/get-queue-backoff-date.test.js +1 -0
- package/dist/src/lib/api/get-session-admin-api.d.ts +12 -0
- package/dist/src/lib/api/get-session-admin-api.d.ts.map +1 -1
- package/dist/src/lib/api/get-session-admin-api.js +1 -1
- package/dist/src/lib/api/get-session-api.d.ts +1 -0
- package/dist/src/lib/api/get-session-api.d.ts.map +1 -1
- package/dist/src/lib/api/resolve-queue-task-outcome.d.ts +14 -0
- package/dist/src/lib/api/resolve-queue-task-outcome.d.ts.map +1 -0
- package/dist/src/lib/api/resolve-queue-task-outcome.js +1 -0
- package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts +2 -0
- package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts.map +1 -0
- package/dist/src/lib/api/resolve-queue-task-outcome.test.js +1 -0
- package/dist/src/lib/api/should-cron-job-run.js +1 -1
- package/dist/src/lib/config.d.ts +1 -0
- package/dist/src/lib/config.d.ts.map +1 -1
- package/dist/src/lib/config.js +1 -1
- package/dist/src/lib/fetcher/types.d.ts.map +1 -1
- package/dist/src/lib/navigation.d.ts +5 -5
- package/dist/src/lib/plugin.d.ts +3 -0
- package/dist/src/lib/plugin.d.ts.map +1 -1
- package/dist/src/lib/utils.d.ts +1 -0
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +1 -1
- package/dist/src/routes/admin/core/advanced/queue/page.d.ts +13 -0
- package/dist/src/routes/admin/core/advanced/queue/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/advanced/queue/page.js +1 -0
- package/dist/src/routes/admin/core/debug/page.d.ts.map +1 -1
- package/dist/src/routes/admin/core/debug/page.js +1 -1
- package/dist/src/routes/admin/core/staff/admins/create/page.d.ts +3 -0
- package/dist/src/routes/admin/core/staff/admins/create/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/staff/admins/create/page.js +1 -0
- package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.d.ts +7 -0
- package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/staff/admins/edit/[id]/page.js +1 -0
- package/dist/src/routes/admin/core/staff/admins/page.d.ts +4 -0
- package/dist/src/routes/admin/core/staff/admins/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/staff/admins/page.js +1 -0
- package/dist/src/routes/admin/core/staff/moderators/create/page.d.ts +3 -0
- package/dist/src/routes/admin/core/staff/moderators/create/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/staff/moderators/create/page.js +1 -0
- package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.d.ts +7 -0
- package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/staff/moderators/edit/[id]/page.js +1 -0
- package/dist/src/routes/admin/core/staff/moderators/page.d.ts +4 -0
- package/dist/src/routes/admin/core/staff/moderators/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/staff/moderators/page.js +1 -0
- package/dist/src/routes/admin/core/system/integrations/page.d.ts +7 -0
- package/dist/src/routes/admin/core/system/integrations/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/system/integrations/page.js +1 -0
- package/dist/src/routes/admin/core/users/{[nameCode] → [id]}/page.d.ts +2 -2
- package/dist/src/routes/admin/core/users/[id]/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/users/[id]/page.js +1 -0
- package/dist/src/routes/admin/core/users/page.d.ts.map +1 -1
- package/dist/src/routes/admin/core/users/page.js +1 -1
- package/dist/src/routes/breadcrumb/admin/[...all]/page.d.ts +1 -5
- package/dist/src/routes/breadcrumb/admin/[...all]/page.d.ts.map +1 -1
- package/dist/src/routes/breadcrumb/admin/[...all]/page.js +1 -1
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/create/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/{users/[nameCode] → staff/admins/edit/[id]}/page.d.ts +1 -1
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/admins/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/create/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.d.ts +6 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/staff/moderators/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.d.ts +6 -0
- package/dist/src/routes/breadcrumb/admin/core/users/[id]/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/users/{[nameCode] → [id]}/page.js +1 -1
- package/dist/src/routes/breadcrumb/main/[...rest]/page.d.ts +1 -5
- package/dist/src/routes/breadcrumb/main/[...rest]/page.d.ts.map +1 -1
- package/dist/src/routes/breadcrumb/main/[...rest]/page.js +1 -1
- package/dist/src/routes/breadcrumb/main/settings/overview/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/main/settings/overview/page.js +1 -0
- package/dist/src/routes/breadcrumb/main/settings/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/main/{register → settings}/page.js +1 -1
- package/dist/src/routes/breadcrumb/main/settings/security/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/main/settings/security/page.js +1 -0
- package/dist/src/routes/main/settings/layout.d.ts +5 -0
- package/dist/src/routes/main/settings/layout.d.ts.map +1 -0
- package/dist/src/routes/main/settings/layout.js +1 -0
- package/dist/src/routes/main/settings/overview/page.d.ts +5 -0
- package/dist/src/routes/main/settings/overview/page.d.ts.map +1 -0
- package/dist/src/routes/main/settings/overview/page.js +1 -0
- package/dist/src/routes/main/settings/page.d.ts +5 -0
- package/dist/src/routes/main/settings/page.d.ts.map +1 -0
- package/dist/src/routes/main/settings/page.js +1 -0
- package/dist/src/routes/main/settings/security/page.d.ts +5 -0
- package/dist/src/routes/main/settings/security/page.d.ts.map +1 -0
- package/dist/src/routes/main/settings/security/page.js +1 -0
- package/dist/src/views/admin/layouts/admin-layout.d.ts.map +1 -1
- package/dist/src/views/admin/layouts/admin-layout.js +1 -1
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.d.ts +6 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.d.ts.map +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-admin.js +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.d.ts +5 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.d.ts.map +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-create-admin.js +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.d.ts +6 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.d.ts.map +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-staff-edit-admin.js +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.d.ts +2 -2
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.d.ts.map +1 -1
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-user-admin.js +1 -1
- package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.d.ts.map +1 -1
- package/dist/src/views/admin/layouts/breadcrumb/resolve-breadcrumb.js +1 -1
- package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.d.ts.map +1 -1
- package/dist/src/views/admin/layouts/sidebar/nav/get-admin-nav.js +1 -1
- package/dist/src/views/admin/layouts/sidebar/nav/item.d.ts.map +1 -1
- package/dist/src/views/admin/layouts/sidebar/nav/item.js +1 -1
- package/dist/src/views/admin/layouts/user-bar/client.d.ts.map +1 -1
- package/dist/src/views/admin/layouts/user-bar/client.js +1 -1
- package/dist/src/views/admin/layouts/user-bar/user-bar.js +1 -1
- package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.d.ts +5 -0
- package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/queue/badges/status-badge.js +1 -0
- package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.d.ts +7 -0
- package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.js +1 -0
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.js +1 -1
- package/dist/src/views/admin/views/core/debug/queue/queue-view.d.ts +2 -0
- package/dist/src/views/admin/views/core/debug/queue/queue-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/debug/queue/queue-view.js +1 -0
- package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts +1 -1
- package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +1 -1
- package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.d.ts +1 -1
- package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.d.ts +5 -0
- package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/create/create-staff-permissions-view.js +1 -0
- package/dist/src/views/admin/views/core/staff/create/form.d.ts +6 -0
- package/dist/src/views/admin/views/core/staff/create/form.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/create/form.js +1 -0
- package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts +14 -0
- package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/create/mutation-api.js +1 -0
- package/dist/src/views/admin/views/core/staff/create/search.action.d.ts +8 -0
- package/dist/src/views/admin/views/core/staff/create/search.action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/create/search.action.js +1 -0
- package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.d.ts +8 -0
- package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/edit/edit-staff-permissions-view.js +1 -0
- package/dist/src/views/admin/views/core/staff/edit/form.d.ts +29 -0
- package/dist/src/views/admin/views/core/staff/edit/form.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/edit/form.js +1 -0
- package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts +13 -0
- package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/edit/mutation-api.js +1 -0
- package/dist/src/views/admin/views/core/staff/selectable-card.d.ts +11 -0
- package/dist/src/views/admin/views/core/staff/selectable-card.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/selectable-card.js +1 -0
- package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts +11 -0
- package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/table/actions/delete-action.js +1 -0
- package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.d.ts +10 -0
- package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.js +1 -0
- package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts +7 -0
- package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/table/staff-table.js +1 -0
- package/dist/src/views/admin/views/core/staff/table/staff-user-format.d.ts +18 -0
- package/dist/src/views/admin/views/core/staff/table/staff-user-format.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/table/staff-user-format.js +1 -0
- package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.d.ts +4 -0
- package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/views/admins/admins-staff-view.js +1 -0
- package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.d.ts +4 -0
- package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/views/moderators/moderators-staff-view.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts +15 -0
- package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/integration-card.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts +3 -0
- package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/integrations-view.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts +2 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/content.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts +12 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts +3 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/send-test-email.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts +15 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.js +1 -0
- package/dist/src/views/admin/views/core/users/actions/create/create.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/actions/create/create.js +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.js +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.d.ts +2 -2
- package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.js +1 -1
- package/dist/src/views/admin/views/core/users/actions.d.ts +3 -3
- package/dist/src/views/admin/views/core/users/actions.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/actions.js +1 -1
- package/dist/src/views/admin/views/core/users/show/edit-buttons.d.ts +4 -0
- package/dist/src/views/admin/views/core/users/show/edit-buttons.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/edit-buttons.js +1 -0
- package/dist/src/views/admin/views/core/users/show/edit-field.d.ts +13 -0
- package/dist/src/views/admin/views/core/users/show/edit-field.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/edit-field.js +1 -0
- package/dist/src/views/admin/views/core/users/show/edit-name-code.d.ts +5 -0
- package/dist/src/views/admin/views/core/users/show/edit-name-code.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/edit-name-code.js +1 -0
- package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts +19 -0
- package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/mutation-api.js +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts +8 -0
- package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/edit-roles.js +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts +8 -0
- package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/roles.js +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts +10 -0
- package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.js +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts +13 -0
- package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.js +1 -0
- package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts +2 -2
- package/dist/src/views/admin/views/core/users/show/show-user-admin-view.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/show/show-user-admin-view.js +1 -1
- package/dist/src/views/admin/views/core/users/users-admin-view.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/users-admin-view.js +1 -1
- package/dist/src/views/auth/settings/layout.d.ts +4 -0
- package/dist/src/views/auth/settings/layout.d.ts.map +1 -0
- package/dist/src/views/auth/settings/layout.js +1 -0
- package/dist/src/views/auth/settings/nav.d.ts +2 -0
- package/dist/src/views/auth/settings/nav.d.ts.map +1 -0
- package/dist/src/views/auth/settings/nav.js +1 -0
- package/dist/src/views/auth/settings/overview/overview.d.ts +2 -0
- package/dist/src/views/auth/settings/overview/overview.d.ts.map +1 -0
- package/dist/src/views/auth/settings/overview/overview.js +1 -0
- package/dist/src/views/auth/settings/security/security.d.ts +2 -0
- package/dist/src/views/auth/settings/security/security.d.ts.map +1 -0
- package/dist/src/views/auth/settings/security/security.js +1 -0
- package/dist/src/views/auth/settings/shell.d.ts +4 -0
- package/dist/src/views/auth/settings/shell.d.ts.map +1 -0
- package/dist/src/views/auth/settings/shell.js +1 -0
- package/dist/src/views/auth/sso/callback/client/client.d.ts.map +1 -1
- package/dist/src/views/auth/sso/callback/client/client.js +1 -1
- package/dist/src/views/breadcrumb/breadcrumb-main.js +1 -1
- package/dist/src/views/breadcrumb/breadcrumb-render.js +1 -1
- package/dist/src/views/error/global-error-view.js +1 -1
- package/dist/src/views/layouts/provider.d.ts.map +1 -1
- package/dist/src/views/layouts/provider.js +1 -1
- package/dist/src/views/layouts/root-layout.d.ts.map +1 -1
- package/dist/src/views/layouts/root-layout.js +1 -1
- package/dist/src/views/layouts/theme/header/user/auth/auth.js +1 -1
- package/dist/src/views/layouts/theme/header/user/auth/client.d.ts.map +1 -1
- package/dist/src/views/layouts/theme/header/user/auth/client.js +1 -1
- package/dist/src/vitnode.config.d.ts +7 -3
- package/dist/src/vitnode.config.d.ts.map +1 -1
- package/dist/src/ws/handle.d.ts.map +1 -1
- package/dist/src/ws/handle.js +1 -1
- package/dist/src/ws/manager.d.ts.map +1 -1
- package/dist/src/ws/manager.js +1 -1
- package/dist/src/ws/provider.d.ts.map +1 -1
- package/dist/src/ws/provider.js +1 -1
- package/dist/src/ws/registry.d.ts +5 -0
- package/dist/src/ws/registry.d.ts.map +1 -1
- package/dist/src/ws/registry.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/vitest.config.d.ts.map +1 -1
- package/package.json +24 -26
- package/src/locales/en.json +279 -4
- package/src/routes/admin/core/advanced/queue/page.tsx +51 -0
- package/src/routes/admin/core/debug/page.tsx +25 -4
- package/src/routes/admin/core/staff/admins/create/page.tsx +17 -0
- package/src/routes/admin/core/staff/admins/edit/[id]/page.tsx +23 -0
- package/src/routes/admin/core/staff/admins/page.tsx +14 -0
- package/src/routes/admin/core/staff/moderators/create/page.tsx +17 -0
- package/src/routes/admin/core/staff/moderators/edit/[id]/page.tsx +23 -0
- package/src/routes/admin/core/staff/moderators/page.tsx +14 -0
- package/src/routes/admin/core/system/integrations/page.tsx +43 -0
- package/src/routes/admin/core/users/{[nameCode] → [id]}/page.tsx +7 -7
- package/src/routes/admin/core/users/page.tsx +10 -2
- package/src/routes/breadcrumb/admin/[...all]/page.tsx +2 -16
- package/src/routes/breadcrumb/admin/core/staff/admins/create/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/staff/admins/edit/[id]/page.tsx +11 -0
- package/src/routes/breadcrumb/admin/core/staff/admins/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/staff/moderators/create/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/staff/moderators/edit/[id]/page.tsx +11 -0
- package/src/routes/breadcrumb/admin/core/staff/moderators/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/users/[id]/page.tsx +11 -0
- package/src/routes/breadcrumb/main/[...rest]/page.tsx +2 -16
- package/src/routes/breadcrumb/main/settings/overview/page.tsx +17 -0
- package/src/routes/breadcrumb/main/{register → settings}/page.tsx +3 -3
- package/src/routes/breadcrumb/main/settings/security/page.tsx +17 -0
- package/src/routes/main/settings/layout.tsx +16 -0
- package/src/routes/main/settings/overview/page.tsx +15 -0
- package/src/routes/main/settings/page.tsx +15 -0
- package/src/routes/main/settings/security/page.tsx +15 -0
- package/dist/scripts/get-config.js +0 -66
- package/dist/scripts/plugin.js +0 -206
- package/dist/scripts/prepare-database.js +0 -177
- package/dist/scripts/prepare-plugins-files.js +0 -152
- package/dist/scripts/run-interactive-shell-command.js +0 -21
- package/dist/scripts/shared/file-utils.js +0 -203
- package/dist/src/locales/en.json +0 -372
- package/dist/src/routes/admin/core/users/[nameCode]/page.d.ts.map +0 -1
- package/dist/src/routes/admin/core/users/[nameCode]/page.js +0 -1
- package/dist/src/routes/breadcrumb/admin/core/users/[nameCode]/page.d.ts.map +0 -1
- package/dist/src/routes/breadcrumb/main/login/page.d.ts.map +0 -1
- package/dist/src/routes/breadcrumb/main/login/page.js +0 -1
- package/dist/src/routes/breadcrumb/main/login/reset-password/page.d.ts.map +0 -1
- package/dist/src/routes/breadcrumb/main/login/reset-password/page.js +0 -1
- package/dist/src/routes/breadcrumb/main/register/page.d.ts.map +0 -1
- package/dist/tsup.config.js +0 -17
- package/dist/vitest.config.js +0 -48
- package/src/routes/breadcrumb/admin/core/users/[nameCode]/page.tsx +0 -12
- package/src/routes/breadcrumb/main/login/page.tsx +0 -11
- package/src/routes/breadcrumb/main/login/reset-password/page.tsx +0 -20
- /package/dist/src/routes/breadcrumb/main/{login → settings/overview}/page.d.ts +0 -0
- /package/dist/src/routes/breadcrumb/main/{login/reset-password → settings}/page.d.ts +0 -0
- /package/dist/src/routes/breadcrumb/main/{register → settings/security}/page.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ExternalLinkIcon}from"lucide-react";import{getTranslations}from"next-intl/server";import{notFound}from"next/navigation";import{hasStaffPermission}from"../../../../../../api/lib/staff-permission.js";import{adminModule}from"../../../../../../api/modules/admin/admin.module.js";import{Avatar}from"../../../../../../components/avatar.js";import{DateFormat}from"../../../../../../components/date-format.js";import{Button}from"../../../../../../components/ui/button.js";import{Card,CardContent}from"../../../../../../components/ui/card.js";import{CONFIG_PLUGIN}from"../../../../../../config.js";import{getSessionAdminApi}from"../../../../../../lib/api/get-session-admin-api.js";import{fetcher}from"../../../../../../lib/fetcher.js";import{Link}from"../../../../../../lib/navigation.js";import{EditImageButton}from"./edit-buttons.js";import{EditUserField}from"./edit-field.js";import{EditNameCode}from"./edit-name-code.js";import{RolesUserAdmin}from"./roles/roles.js";export const ShowUserAdminView=async({id})=>{const t=await getTranslations("admin.user.show");const res=await fetcher(adminModule,{path:"/{id}",method:"get",module:"admin/users",args:{params:{id}}});if(res.status!==200){notFound()}const user=await res.json();const session=await getSessionAdminApi();const canEdit=!!session&&hasStaffPermission(session.permissions,{plugin:CONFIG_PLUGIN.pluginId,module:"users",permission:"can_edit"})&&(user.isAdmin?hasStaffPermission(session.permissions,{plugin:CONFIG_PLUGIN.pluginId,module:"users",permission:"can_edit_admin"}):true);return _jsxs("div",{className:"mx-auto flex w-full max-w-lg flex-col gap-4",children:[_jsxs(Card,{className:"w-full overflow-hidden pt-0",children:[_jsxs("div",{className:"from-primary/30 to-primary/5 relative h-44 w-full bg-linear-to-br",children:[_jsx("span",{className:"sr-only",children:t("coverPlaceholder")}),canEdit&&_jsx("div",{className:"absolute inset-e-3 top-3",children:_jsx(EditImageButton,{label:t("editCover")})})]}),_jsxs(CardContent,{className:"flex flex-col",children:[_jsx("div",{className:"-mt-16 mb-4 flex justify-center",children:_jsxs("div",{className:"relative",children:[_jsx(Avatar,{className:"border-card size-32 border-4",size:128,user:user}),canEdit&&_jsx("div",{className:"absolute inset-e-0 bottom-0 translate-y-1/4",children:_jsx(EditImageButton,{label:t("editAvatar")})})]})}),_jsx(EditUserField,{as:"h2",canEdit:canEdit,field:"name",id:user.id,label:t("editName"),showUnverified:!user.emailVerified,value:user.name,valueClassName:"text-foreground truncate text-2xl font-bold"}),_jsxs("div",{className:"flex items-center gap-1",children:[_jsxs("span",{className:"text-muted-foreground truncate text-sm",children:["@",user.nameCode]}),canEdit&&_jsx(EditNameCode,{id:user.id,nameCode:user.nameCode})]}),_jsx("div",{className:"mt-3",children:_jsx(EditUserField,{canEdit:canEdit,field:"email",id:user.id,label:t("editEmail"),type:"email",value:user.email,valueClassName:"text-foreground truncate font-medium"})}),_jsxs("p",{className:"text-muted-foreground mt-1 text-sm",children:[t("joined")," ",_jsx(DateFormat,{date:user.createdAt})]}),_jsx("div",{className:"mt-6",children:_jsxs(Button,{className:"w-full",nativeButton:false,render:_jsx(Link,{href:`/profile/${user.nameCode}`,target:"_blank"}),variant:"ghost",children:[t("goToProfile")," ",_jsx(ExternalLinkIcon,{})]})})]})]}),_jsx(RolesUserAdmin,{canEdit:canEdit,id:user.id,role:user.role,secondaryRoles:user.secondaryRoles})]})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"users-admin-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/views/core/users/users-admin-view.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"users-admin-view.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/admin/views/core/users/users-admin-view.tsx"],"names":[],"mappings":"AAcA,eAAO,MAAM,cAAc,GAAU,mBAElC;IACD,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC;CACtE,yCA+GA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{MailIcon,UserSearchIcon}from"lucide-react";import{getTranslations}from"next-intl/server";import{adminModule}from"../../../../../api/modules/admin/admin.module.js";import{Avatar}from"../../../../../components/avatar.js";import{DateFormat}from"../../../../../components/date-format.js";import{DataTable}from"../../../../../components/table/data-table.js";import{TooltipWithContent}from"../../../../../components/ui/tooltip.js";import{fetcher}from"../../../../../lib/fetcher.js";import{UsersAdminActions}from"./actions.js";import{searchRolesAdmin}from"./search-roles.action.js";export const UsersAdminView=async({searchParams})=>{const t=await getTranslations("admin.user.list");const query=await searchParams;const res=await fetcher(adminModule,{path:"/list",method:"get",module:"admin/users",args:{query},withPagination:true});const data=await res.json();return _jsx(DataTable,{columns:[{id:"name",label:t("user"),cell:({row})=>_jsxs("div",{className:"flex items-center gap-3",children:[_jsx(Avatar,{size:32,user:row}),_jsxs("div",{className:"flex flex-col",children:[
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{MailIcon,UserSearchIcon}from"lucide-react";import{getTranslations}from"next-intl/server";import{adminModule}from"../../../../../api/modules/admin/admin.module.js";import{Avatar}from"../../../../../components/avatar.js";import{DateFormat}from"../../../../../components/date-format.js";import{RoleFormat}from"../../../../../components/role-format.js";import{DataTable}from"../../../../../components/table/data-table.js";import{TooltipWithContent}from"../../../../../components/ui/tooltip.js";import{fetcher}from"../../../../../lib/fetcher.js";import{UsersAdminActions}from"./actions.js";import{searchRolesAdmin}from"./search-roles.action.js";export const UsersAdminView=async({searchParams})=>{const t=await getTranslations("admin.user.list");const query=await searchParams;const res=await fetcher(adminModule,{path:"/list",method:"get",module:"admin/users",args:{query},withPagination:true});const data=await res.json();return _jsx(DataTable,{columns:[{id:"name",label:t("user"),cell:({row})=>_jsxs("div",{className:"flex items-center gap-3",children:[_jsx(Avatar,{size:32,user:row}),_jsxs("div",{className:"flex flex-col",children:[_jsx("span",{className:"font-medium",children:row.name}),_jsxs("span",{className:"text-muted-foreground text-sm",children:["@",row.nameCode]})]})]})},{id:"email",label:t("email"),cell:({row})=>{if(row.emailVerified){return _jsx("span",{children:row.email})}return _jsxs("div",{className:"flex items-center gap-2",children:[_jsx(TooltipWithContent,{text:t("emailNotVerified"),children:_jsx(MailIcon,{className:"text-destructive size-4"})}),_jsx("span",{className:"text-muted-foreground italic",children:row.email})]})}},{id:"roleId",label:t("roles"),cell:({row})=>_jsxs("div",{className:"flex flex-col items-start gap-1",children:[_jsx(RoleFormat,{role:row.role}),row.secondaryRoles.length>0&&_jsxs("div",{className:"text-muted-foreground flex flex-wrap items-center gap-x-2 gap-y-0.5 text-sm",children:[row.secondaryRoles.slice(0,3).map(role=>_jsx(RoleFormat,{role:role},role.id)),row.secondaryRoles.length>3&&_jsxs("span",{children:["+",row.secondaryRoles.length-3]})]})]})},{id:"createdAt",label:t("createdAt"),cell:({row})=>_jsx(DateFormat,{date:row.createdAt})},{id:"actions",label:"",className:"w-10",cell:({row})=>_jsx(UsersAdminActions,{...row})}],customNoResults:{title:t("noResults.title"),description:t("noResults.description"),icon:_jsx(UserSearchIcon,{})},edges:data.edges,filters:[{id:"roleId",label:t("roles"),onSearch:searchRolesAdmin}],id:"users-table",order:{columns:["createdAt","name"],defaultOrder:{column:"createdAt",order:"desc"}},pageInfo:data.pageInfo,search:true,searchPlaceholder:t("searchPlaceholder")})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../src/views/auth/settings/layout.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,cAAc,GAAU,eAElC;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,yCAYA,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{notFound}from"next/navigation";import{I18nProvider}from"../../../components/i18n-provider.js";import{getSessionApi}from"../../../lib/api/get-session-api.js";import{SettingsShell}from"./shell.js";export const LayoutSettings=async({children})=>{const session=await getSessionApi();if(!session.user){notFound()}return _jsx(I18nProvider,{namespaces:"core.auth.settings",children:_jsx(SettingsShell,{children:children})})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nav.d.ts","sourceRoot":"","sources":["../../../../../src/views/auth/settings/nav.tsx"],"names":[],"mappings":"AAmBA,eAAO,MAAM,WAAW,mCA8BvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ChevronRightIcon,KeyRoundIcon,UserRoundIcon}from"lucide-react";import{useTranslations}from"next-intl";import{buttonVariants}from"../../../components/ui/button.js";import{Link,usePathname}from"../../../lib/navigation.js";import{cn,normalizeUrl}from"../../../lib/utils.js";const items=[{href:"/settings/overview",key:"overview",icon:UserRoundIcon,aliases:["/settings"]},{href:"/settings/security",key:"security",icon:KeyRoundIcon}];export const NavSettings=()=>{const t=useTranslations("core.auth.settings.nav");const pathname=normalizeUrl(usePathname());return _jsx("nav",{className:"flex flex-col gap-1",children:items.map(({href,key,icon:Icon,...item})=>{const aliases="aliases"in item?item.aliases:[];const isActive=[href,...aliases].some(url=>pathname===normalizeUrl(url));return _jsxs(Link,{"aria-current":isActive?"page":undefined,className:cn(buttonVariants({variant:isActive?"default":"ghost"}),"w-full justify-start gap-2"),href:href,children:[_jsx(Icon,{}),t(key),_jsx(ChevronRightIcon,{className:"ml-auto opacity-60 sm:hidden"})]},href)})})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overview.d.ts","sourceRoot":"","sources":["../../../../../../src/views/auth/settings/overview/overview.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,4CAI5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{getTranslations}from"next-intl/server";import{HeaderContent}from"../../../../components/ui/header-content.js";export const OverviewSettings=async()=>{const t=await getTranslations("core.auth.settings.nav");return _jsx(HeaderContent,{h2:t("overview")})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../../../../../src/views/auth/settings/security/security.tsx"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,4CAI5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{getTranslations}from"next-intl/server";import{HeaderContent}from"../../../../components/ui/header-content.js";export const SecuritySettings=async()=>{const t=await getTranslations("core.auth.settings.nav");return _jsx(HeaderContent,{h2:t("security")})};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../../../src/views/auth/settings/shell.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,aAAa,GAAI,cAAc;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,gCA0CxE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ArrowLeftIcon}from"lucide-react";import{useTranslations}from"next-intl";import{buttonVariants}from"../../../components/ui/button.js";import{Card,CardContent}from"../../../components/ui/card.js";import{HeaderContent}from"../../../components/ui/header-content.js";import{Link,usePathname}from"../../../lib/navigation.js";import{cn,normalizeUrl}from"../../../lib/utils.js";import{NavSettings}from"./nav.js";export const SettingsShell=({children})=>{const t=useTranslations("core.auth.settings");const isRoot=normalizeUrl(usePathname())==="/settings";return _jsxs("div",{className:"container mx-auto space-y-6 px-4",children:[_jsx(HeaderContent,{className:cn(!isRoot&&"hidden md:flex"),desc:t("desc"),h1:t("title")}),_jsxs("div",{className:"flex flex-col gap-6 md:flex-row",children:[_jsx(Card,{className:cn("md:w-80 md:shrink-0",!isRoot&&"hidden md:flex"),children:_jsx(CardContent,{children:_jsx(NavSettings,{})})}),_jsx(Card,{className:cn("min-w-0 flex-1",isRoot&&"hidden md:flex"),children:_jsxs(CardContent,{children:[_jsxs(Link,{className:cn(buttonVariants({size:"sm",variant:"ghost"}),"mb-4 w-full justify-start gap-2 p-0 md:hidden"),href:"/settings",children:[_jsx(ArrowLeftIcon,{}),t("title")]}),children]})})]})]})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/auth/sso/callback/client/client.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAKlF,eAAO,MAAM,iBAAiB,GAAI,mCAK/B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;CACf,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../../src/views/auth/sso/callback/client/client.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAKlF,eAAO,MAAM,iBAAiB,GAAI,mCAK/B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACzD,KAAK,EAAE,MAAM,CAAC;CACf,gCA0DA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx}from"react/jsx-runtime";import{useQuery}from"@tanstack/react-query";import{useTranslations}from"next-intl";import{Loader}from"../../../../../components/ui/loader.js";import{Link,useRouter}from"../../../../../lib/navigation.js";import{ErrorView}from"../../../../error/error-view.js";import{Button}from"../../../../../components/ui/button.js";import{mutationApi}from"./mutation-api.js";export const ClientCallbackSSO=({providerId,code,state,sso})=>{const t=useTranslations("core.auth.sso");const{replace}=useRouter();const{isError,error}=useQuery({queryKey:["core.auth.sso.callback.sign-up",providerId,code],queryFn:async()=>{const mutation=await mutationApi({providerId,code,state});if(mutation?.error){throw new Error(mutation.error)}replace("/");return""},retry:false});const provider=sso.find(p=>p.id===providerId);if(error?.message==="Email already exists"){return _jsx(ErrorView,{code:409,customActions:_jsx(Button,{
|
|
1
|
+
"use client";import{jsx as _jsx}from"react/jsx-runtime";import{useQuery}from"@tanstack/react-query";import{useTranslations}from"next-intl";import{Loader}from"../../../../../components/ui/loader.js";import{Link,useRouter}from"../../../../../lib/navigation.js";import{ErrorView}from"../../../../error/error-view.js";import{Button}from"../../../../../components/ui/button.js";import{mutationApi}from"./mutation-api.js";export const ClientCallbackSSO=({providerId,code,state,sso})=>{const t=useTranslations("core.auth.sso");const{replace}=useRouter();const{isError,error}=useQuery({queryKey:["core.auth.sso.callback.sign-up",providerId,code],queryFn:async()=>{const mutation=await mutationApi({providerId,code,state});if(mutation?.error){throw new Error(mutation.error)}replace("/");return""},retry:false});const provider=sso.find(p=>p.id===providerId);if(error?.message==="Email already exists"){return _jsx(ErrorView,{code:409,customActions:_jsx(Button,{nativeButton:false,render:_jsx(Link,{href:"/login"}),size:"lg",children:t("email_exists.sign_in")}),customDescription:t.rich("email_exists.desc",{provider:()=>_jsx("span",{className:"font-semibold",children:provider?.name??providerId})}),customTitle:t.rich("email_exists.title",{provider:()=>_jsx("span",{className:"font-semibold",children:provider?.name??providerId})})})}if(isError){return _jsx(ErrorView,{code:500})}return _jsx("div",{className:"container mx-auto flex items-center justify-center p-4",children:_jsx(Loader,{})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{BreadcrumbRender}from"./breadcrumb-render.js";import{resolveMainBreadcrumb}from"./resolve-main-breadcrumb.js";export const BreadcrumbMain=({segments,labels,overrideLastLabel})=>{const crumbs=resolveMainBreadcrumb(segments,labels);if(crumbs.length===0)return null;if(overrideLastLabel){crumbs[crumbs.length-1].label=overrideLastLabel}return _jsx("div",{className:"container mx-auto
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{BreadcrumbRender}from"./breadcrumb-render.js";import{resolveMainBreadcrumb}from"./resolve-main-breadcrumb.js";export const BreadcrumbMain=({segments,labels,overrideLastLabel})=>{const crumbs=resolveMainBreadcrumb(segments,labels);if(crumbs.length===0)return null;if(overrideLastLabel){crumbs[crumbs.length-1].label=overrideLastLabel}return _jsx("div",{className:"container mx-auto p-4",children:_jsx(BreadcrumbRender,{crumbs:crumbs})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Fragment}from"react";import{Breadcrumb,BreadcrumbItem,BreadcrumbLink,BreadcrumbList,BreadcrumbPage,BreadcrumbSeparator}from"../../components/ui/breadcrumb.js";import{Link}from"../../lib/navigation.js";export const BreadcrumbRender=({crumbs})=>{if(crumbs.length===0)return null;return _jsx(Breadcrumb,{children:_jsx(BreadcrumbList,{children:crumbs.map((crumb,index)=>_jsxs(Fragment,{children:[index>0&&_jsx(BreadcrumbSeparator,{}),_jsx(BreadcrumbItem,{children:crumb.isCurrent?_jsx(BreadcrumbPage,{children:crumb.label}):crumb.isLink?_jsx(BreadcrumbLink,{
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Fragment}from"react";import{Breadcrumb,BreadcrumbItem,BreadcrumbLink,BreadcrumbList,BreadcrumbPage,BreadcrumbSeparator}from"../../components/ui/breadcrumb.js";import{Link}from"../../lib/navigation.js";export const BreadcrumbRender=({crumbs})=>{if(crumbs.length===0)return null;return _jsx(Breadcrumb,{children:_jsx(BreadcrumbList,{children:crumbs.map((crumb,index)=>_jsxs(Fragment,{children:[index>0&&_jsx(BreadcrumbSeparator,{}),_jsx(BreadcrumbItem,{children:crumb.isCurrent?_jsx(BreadcrumbPage,{children:crumb.label}):crumb.isLink?_jsx(BreadcrumbLink,{render:_jsx(Link,{href:crumb.href,children:crumb.label})}):_jsx("span",{children:crumb.label})})]},crumb.href))})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import Link from"next/link";import{LogoVitNode}from"../../components/logo-vitnode.js";import{ThemeProvider}from"../../components/theme-provider.js";import{Card,CardContent}from"../../components/ui/card.js";export const metadata={title:"Error 500!"};export const GlobalErrorView=({className})=>{return _jsx("html",{lang:"en",suppressHydrationWarning:true,children:_jsx("body",{className:className,children:_jsx(ThemeProvider,{attribute:"class",disableTransitionOnChange:true,enableSystem:true,children:_jsx("div",{className:"bg-background flex min-h-screen flex-col items-center justify-center p-4",children:_jsxs("div",{className:"container mx-auto flex w-full max-w-md flex-col items-center justify-center gap-6 text-center",children:[_jsx(Link,{href:"/",children:_jsx(LogoVitNode,{className:"mb-4 h-12 w-auto"})}),_jsx("h1",{className:"text-3xl font-semibold tracking-tight",children:"Oops! Something went wrong."}),_jsx(Card,{className:"w-full",children:_jsx(CardContent,{children:_jsx("p",{className:"text-muted-foreground",children:"An unexpected error occurred. Please try refreshing the page or come back later."})})})]})})})})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/views/layouts/provider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../src/views/layouts/provider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAGrD,eAAO,MAAM,YAAY,GAAI,+DAI1B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC;CAChD,sBAkDA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ProgressProvider}from"@bprogress/next/app";import{QueryClient,QueryClientProvider}from"@tanstack/react-query";import
|
|
1
|
+
"use client";import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{ProgressProvider}from"@bprogress/next/app";import{QueryClient,QueryClientProvider}from"@tanstack/react-query";import React from"react";import{scan}from"react-scan";import{CONFIG}from"../../lib/config.js";import{ThemeProvider}from"../../components/theme-provider.js";import{Toaster}from"../../components/ui/sonner.js";import{TooltipProvider}from"../../components/ui/tooltip.js";export const RootProvider=({children,toaster,config:{debug,theme,progressBar}})=>{React.useEffect(()=>{if(!(debug&&CONFIG.node_development))return;scan({enabled:true})},[debug]);const[queryClient]=React.useState(()=>new QueryClient({defaultOptions:{queries:{refetchOnWindowFocus:false,refetchOnMount:false}}}));return _jsx(QueryClientProvider,{client:queryClient,children:_jsxs(ThemeProvider,{attribute:"class",disableTransitionOnChange:true,enableSystem:true,...theme,children:[_jsx(Toaster,{closeButton:true,position:toaster?.position??"top-center",...toaster}),_jsx(ProgressProvider,{...progressBar,color:progressBar?.color??"var(--primary)",height:progressBar?.height??"4px",options:{showSpinner:false,...progressBar?.options},shallowRouting:progressBar?.shallowRouting??true,children:_jsx(TooltipProvider,{children:children})})]})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root-layout.d.ts","sourceRoot":"","sources":["../../../../src/views/layouts/root-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,eAAO,MAAM,0BAA0B,GAAI,sCAExC,aAAa,KAAG,
|
|
1
|
+
{"version":3,"file":"root-layout.d.ts","sourceRoot":"","sources":["../../../../src/views/layouts/root-layout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAOtD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ;AAED,eAAO,MAAM,0BAA0B,GAAI,sCAExC,aAAa,KAAG,QAOlB,CAAC;AAEF,eAAO,MAAM,UAAU,GAAU,+BAI9B,eAAe,GAAG;IACnB,MAAM,EAAE,aAAa,CAAC;CACvB,+BAWA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx}from"react/jsx-runtime";import{setRequestLocale}from"next-intl/server";import{I18nProvider}from"../../components/i18n-provider.js";import{VitNodeWebSocketProvider}from"../../ws/provider.js";import{RootProvider}from"./provider.js";export const generateMetadataRootLayout=({metadata:{title,shortTitle}})=>{return{title:{default:title,template:`%s - ${shortTitle??title}`}
|
|
1
|
+
import{jsx as _jsx}from"react/jsx-runtime";import{setRequestLocale}from"next-intl/server";import{I18nProvider}from"../../components/i18n-provider.js";import{VitNodeWebSocketProvider}from"../../ws/provider.js";import{RootProvider}from"./provider.js";export const generateMetadataRootLayout=({metadata:{title,shortTitle}})=>{return{title:{default:title,template:`%s - ${shortTitle??title}`}}};export const RootLayout=async({children,params,config})=>{const{locale}=await params;setRequestLocale(locale);return _jsx(I18nProvider,{namespaces:[],children:_jsx(RootProvider,{config:config,children:_jsx(VitNodeWebSocketProvider,{children:children})})})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Avatar}from"../../../../../../components/avatar.js";import{Button}from"../../../../../../components/ui/button.js";import{DropdownMenu,DropdownMenuContent,DropdownMenuTrigger}from"../../../../../../components/ui/dropdown-menu.js";import{getSessionApi}from"../../../../../../lib/api/get-session-api.js";import{ClientAuthUserHeader}from"./client.js";export const AuthUserHeader=async()=>{const{user}=await getSessionApi();if(!user)return null;return _jsxs(DropdownMenu,{children:[_jsx(DropdownMenuTrigger,{
|
|
1
|
+
import{jsx as _jsx,jsxs as _jsxs}from"react/jsx-runtime";import{Avatar}from"../../../../../../components/avatar.js";import{Button}from"../../../../../../components/ui/button.js";import{DropdownMenu,DropdownMenuContent,DropdownMenuTrigger}from"../../../../../../components/ui/dropdown-menu.js";import{getSessionApi}from"../../../../../../lib/api/get-session-api.js";import{ClientAuthUserHeader}from"./client.js";export const AuthUserHeader=async()=>{const{user}=await getSessionApi();if(!user)return null;return _jsxs(DropdownMenu,{children:[_jsx(DropdownMenuTrigger,{render:_jsx(Button,{"aria-label":user.name,size:"icon",variant:"ghost"}),children:_jsx(Avatar,{size:24,user:user})}),_jsx(DropdownMenuContent,{align:"end",className:"w-64 p-2",children:_jsx(ClientAuthUserHeader,{user:user})})]})};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../../../src/views/layouts/theme/header/user/auth/client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../../../../../src/views/layouts/theme/header/user/auth/client.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAW5D,eAAO,MAAM,oBAAoB,GAAI,WAElC;IACD,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;CACvC,gCAoDA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{KeyRoundIcon,LogOutIcon}from"lucide-react";import{useTranslations}from"next-intl";import{DropdownMenuGroup,DropdownMenuItem,DropdownMenuSeparator}from"../../../../../../components/ui/dropdown-menu.js";import{Link}from"../../../../../../lib/navigation.js";import{logOutMutationApi}from"./log-out-mutation-api.js";export const ClientAuthUserHeader=({user})=>{const t=useTranslations("core.global.user_bar");return _jsxs(_Fragment,{children:[user.isAdmin&&_jsxs(_Fragment,{children:[
|
|
1
|
+
"use client";import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from"react/jsx-runtime";import{KeyRoundIcon,LogOutIcon,Settings,ShieldIcon,UserIcon}from"lucide-react";import{useTranslations}from"next-intl";import{DropdownMenuGroup,DropdownMenuItem,DropdownMenuSeparator}from"../../../../../../components/ui/dropdown-menu.js";import{Link}from"../../../../../../lib/navigation.js";import{logOutMutationApi}from"./log-out-mutation-api.js";export const ClientAuthUserHeader=({user})=>{const t=useTranslations("core.global.user_bar");return _jsxs(_Fragment,{children:[_jsxs(DropdownMenuGroup,{children:[_jsxs(DropdownMenuItem,{render:_jsx(Link,{href:`/users/${user.nameCode}`}),children:[_jsx(UserIcon,{}),_jsx("span",{children:t("my_profile")})]}),_jsxs(DropdownMenuItem,{render:_jsx(Link,{href:"/settings"}),children:[_jsx(Settings,{}),_jsx("span",{children:t("settings")})]})]}),_jsx(DropdownMenuSeparator,{}),(user.isAdmin||user.isModerator)&&_jsxs(_Fragment,{children:[_jsxs(DropdownMenuGroup,{children:[user.isModerator&&_jsxs(DropdownMenuItem,{render:_jsx(Link,{href:"/mod_cp"}),children:[_jsx(ShieldIcon,{}),_jsx("span",{children:t("mod_cp")})]}),user.isAdmin&&_jsxs(DropdownMenuItem,{render:_jsx(Link,{href:"/admin",target:"_blank"}),children:[_jsx(KeyRoundIcon,{}),_jsx("span",{children:t("admin_cp")})]})]}),_jsx(DropdownMenuSeparator,{})]}),_jsx(DropdownMenuGroup,{children:_jsxs(DropdownMenuItem,{onClick:async()=>{await logOutMutationApi({})},children:[_jsx(LogOutIcon,{}),_jsx("span",{children:t("log_out")})]})})]})};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import type { ProgressProvider } from "@bprogress/next/app";
|
|
2
2
|
import type { drizzle } from "drizzle-orm/postgres-js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { RedisOptions } from "ioredis";
|
|
4
4
|
import type { IRateLimiterOptions } from "rate-limiter-flexible";
|
|
5
5
|
import type React from "react";
|
|
6
6
|
import type { CronAdapter } from "./api/lib/cron";
|
|
7
7
|
import type { BuildPluginApiReturn } from "./api/lib/plugin";
|
|
8
8
|
import type { EmailApiPlugin } from "./api/models/email";
|
|
9
9
|
import type { SSOApiPlugin } from "./api/models/sso";
|
|
10
|
+
import type { ThemeProviderProps } from "./components/theme-provider";
|
|
10
11
|
import type { DefaultTemplateEmailProps } from "./emails/default-template";
|
|
11
12
|
import type { BuildPluginReturn } from "./lib/plugin";
|
|
12
13
|
export interface LocaleConfig {
|
|
@@ -24,7 +25,7 @@ export interface VitNodeConfig<AppLocales extends LocaleConfig[] = LocaleConfig[
|
|
|
24
25
|
metadata: VitNodeApiConfig["metadata"];
|
|
25
26
|
plugins: BuildPluginReturn[];
|
|
26
27
|
progressBar?: React.ComponentProps<typeof ProgressProvider>;
|
|
27
|
-
theme?: Omit<
|
|
28
|
+
theme?: Omit<ThemeProviderProps, "attribute" | "children" | "disableTransitionOnChange" | "enableSystem">;
|
|
28
29
|
}
|
|
29
30
|
export interface VitNodeApiConfig {
|
|
30
31
|
authorization?: {
|
|
@@ -42,7 +43,7 @@ export interface VitNodeApiConfig {
|
|
|
42
43
|
siteKey: string | undefined;
|
|
43
44
|
type: "cloudflare_turnstile" | "recaptcha_v3";
|
|
44
45
|
};
|
|
45
|
-
|
|
46
|
+
cron?: CronAdapter;
|
|
46
47
|
dbProvider: ReturnType<typeof drizzle>;
|
|
47
48
|
email?: {
|
|
48
49
|
adapter?: EmailApiPlugin;
|
|
@@ -58,6 +59,9 @@ export interface VitNodeApiConfig {
|
|
|
58
59
|
}>;
|
|
59
60
|
plugins: BuildPluginApiReturn[];
|
|
60
61
|
rateLimiter?: Omit<IRateLimiterOptions, "keyPrefix">;
|
|
62
|
+
redis?: RedisOptions & {
|
|
63
|
+
url?: string;
|
|
64
|
+
};
|
|
61
65
|
}
|
|
62
66
|
export declare function buildConfig<AppLocales extends LocaleConfig[]>(args: VitNodeConfig<AppLocales>): VitNodeConfig<AppLocales>;
|
|
63
67
|
export declare const getVitNodeConfig: () => VitNodeConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitnode.config.d.ts","sourceRoot":"","sources":["../../src/vitnode.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"vitnode.config.d.ts","sourceRoot":"","sources":["../../src/vitnode.config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa,CAC5B,UAAU,SAAS,YAAY,EAAE,GAAG,YAAY,EAAE;IAElD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE;QACJ,aAAa,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,YAAY,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;QAChD,OAAO,EAAE,UAAU,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,CAAC;IAC5D,KAAK,CAAC,EAAE,IAAI,CACV,kBAAkB,EAClB,WAAW,GAAG,UAAU,GAAG,2BAA2B,GAAG,cAAc,CACxE,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE;QACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,WAAW,CAAC,EAAE,YAAY,EAAE,CAAC;KAC9B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;QAC5B,IAAI,EAAE,sBAAsB,GAAG,cAAc,CAAC;KAC/C,CAAC;IACF,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,IAAI,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1D,cAAc,CAAC,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,CAAC;KAC/E,CAAC;IACF,QAAQ,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IAOrD,KAAK,CAAC,EAAE,YAAY,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAID,wBAAgB,WAAW,CAAC,UAAU,SAAS,YAAY,EAAE,EAC3D,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,GAC9B,aAAa,CAAC,UAAU,CAAC,CAc3B;AAOD,eAAO,MAAM,gBAAgB,QAAO,aAQnC,CAAC;AAEF,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAEvE;AAED,eAAO,MAAM,mBAAmB,GAAU,mDAIvC;IACD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa,EAAE,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,aAAa,EAAE,aAAa,CAAC;CAC9B;;;;;EAkCA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/ws/handle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAsDtE,wBAAgB,sBAAsB,CACpC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../../src/ws/handle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAsDtE,wBAAgB,sBAAsB,CACpC,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,IAMzD,GAAG,OAAO,CAAC,UAAU,CAAC,KAAG,OAAO,CAAC,QAAQ,CAAC,CAwDzD"}
|
package/dist/src/ws/handle.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{wsRegistry}from"./registry.js";import{getWebSocketId}from"./types.js";const parseMessage=raw=>{if(typeof raw!=="string")return undefined;try{const parsed=JSON.parse(raw);if(typeof parsed==="object"&&parsed!==null&&"id"in parsed&&typeof parsed.id==="string"){return parsed}}catch{}return undefined};export function handleVitNodeWebSocket(createEvents){return async c=>{const inline=await createEvents?.(c);const registered=c.get("core")?.webSockets??[];const userId=c.get("user")?.id??null;return{onOpen:(event,ws)=>{wsRegistry.add(ws,userId);inline?.onOpen?.(event,ws)},onClose:(event,ws)=>{wsRegistry.remove(ws);inline?.onClose?.(event,ws)},onError:inline?.onError,onMessage:(event,ws)=>{const message=parseMessage(event.data);const target=message?registered.find(webSocket=>getWebSocketId(webSocket)===message.id):undefined;if(message&&target){const send=data=>{ws.send(JSON.stringify({id:message.id,data}))};try{Promise.resolve(target.onMessage({c,data:message.data,send,ws})).catch(error=>{console.error("WebSocket handler error:",error)})}catch(error){console.error("WebSocket handler error:",error)}return}inline?.onMessage?.(event,ws)}}}}
|
|
1
|
+
import{markWebSocketEnabled,wsRegistry}from"./registry.js";import{getWebSocketId}from"./types.js";const parseMessage=raw=>{if(typeof raw!=="string")return undefined;try{const parsed=JSON.parse(raw);if(typeof parsed==="object"&&parsed!==null&&"id"in parsed&&typeof parsed.id==="string"){return parsed}}catch{}return undefined};export function handleVitNodeWebSocket(createEvents){markWebSocketEnabled();return async c=>{const inline=await createEvents?.(c);const registered=c.get("core")?.webSockets??[];const userId=c.get("user")?.id??null;return{onOpen:(event,ws)=>{wsRegistry.add(ws,userId);inline?.onOpen?.(event,ws)},onClose:(event,ws)=>{wsRegistry.remove(ws);inline?.onClose?.(event,ws)},onError:inline?.onError,onMessage:(event,ws)=>{const message=parseMessage(event.data);const target=message?registered.find(webSocket=>getWebSocketId(webSocket)===message.id):undefined;if(message&&target){const send=data=>{ws.send(JSON.stringify({id:message.id,data}))};try{Promise.resolve(target.onMessage({c,data:message.data,send,ws})).catch(error=>{console.error("WebSocket handler error:",error)})}catch(error){console.error("WebSocket handler error:",error)}return}inline?.onMessage?.(event,ws)}}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/ws/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBhD,MAAM,WAAW,uBAAuB;IAEtC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE/C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,MAAM,CAAC;IAM5B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3C;AAkBD,eAAO,MAAM,sBAAsB,GAAI,yCAIpC,uBAAuB,KAAG,
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/ws/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAiBhD,MAAM,WAAW,uBAAuB;IAEtC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE/C,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,EAAE,MAAM,MAAM,CAAC;IAM5B,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3C;AAkBD,eAAO,MAAM,sBAAsB,GAAI,yCAIpC,uBAAuB,KAAG,gBAkL5B,CAAC"}
|
package/dist/src/ws/manager.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const LEADER_LOCK="vitnode-ws-leader";const CHANNEL_NAME="vitnode-ws";const RECONNECT_DELAY=2e3;export const createWebSocketManager=({url,onMessage,onReadyStateChange})=>{let socket=null;let isLeader=false;let isDestroyed=false;let readyState=0;let releaseLeadership;let reconnectTimeout;const outgoingQueue=[];const channel=typeof BroadcastChannel==="undefined"?null:new BroadcastChannel(CHANNEL_NAME);const post=message=>channel?.postMessage(message);const setReadyState=state=>{readyState=state;onReadyStateChange(state)};const sendOverSocket=message=>{if(socket?.readyState===WebSocket.OPEN){socket.send(JSON.stringify(message))}else{outgoingQueue.push(message)}};const openSocket=()=>{
|
|
1
|
+
const LEADER_LOCK="vitnode-ws-leader";const CHANNEL_NAME="vitnode-ws";const RECONNECT_DELAY=2e3;export const createWebSocketManager=({url,onMessage,onReadyStateChange})=>{let socket=null;let isLeader=false;let isDestroyed=false;let readyState=0;let releaseLeadership;let reconnectTimeout;const outgoingQueue=[];const channel=typeof BroadcastChannel==="undefined"?null:new BroadcastChannel(CHANNEL_NAME);const post=message=>channel?.postMessage(message);const setReadyState=state=>{readyState=state;onReadyStateChange(state)};const sendOverSocket=message=>{if(socket?.readyState===WebSocket.OPEN){socket.send(JSON.stringify(message))}else{outgoingQueue.push(message)}};const openSocket=()=>{const ws=new WebSocket(url);socket=ws;ws.onopen=()=>{setReadyState(ws.readyState);post({payload:ws.readyState,type:"ready-state"});outgoingQueue.splice(0).forEach(message=>ws.send(JSON.stringify(message)))};ws.onmessage=event=>{if(typeof event.data!=="string")return;let message;try{message=JSON.parse(event.data)}catch{return}onMessage(message);post({payload:message,type:"message"})};ws.onclose=()=>{setReadyState(ws.readyState);post({payload:ws.readyState,type:"ready-state"});socket=null;if(!isDestroyed&&isLeader){reconnectTimeout=setTimeout(openSocket,RECONNECT_DELAY)}}};const becomeLeader=()=>{if(isDestroyed)return;isLeader=true;openSocket()};const reconnectLeader=()=>{if(!isLeader||isDestroyed)return;if(reconnectTimeout)clearTimeout(reconnectTimeout);if(socket){socket.onclose=null;socket.onerror=null;socket.onmessage=null;socket.onopen=null;socket.close();socket=null}openSocket()};const requestLeadership=()=>{if(typeof navigator==="undefined"||!navigator.locks||!channel){becomeLeader();return}void navigator.locks.request(LEADER_LOCK,{mode:"exclusive"},async()=>{if(isDestroyed)return;const held=new Promise(resolve=>{releaseLeadership=resolve});becomeLeader();await held}).catch(()=>{becomeLeader()})};if(channel){channel.onmessage=event=>{const message=event.data;switch(message.type){case"message":onMessage(message.payload);break;case"ready-state":if(!isLeader)setReadyState(message.payload);break;case"reconnect":if(isLeader)reconnectLeader();break;case"request-state":if(isLeader)post({payload:readyState,type:"ready-state"});break;case"send":if(isLeader)sendOverSocket(message.payload);break}}}const send=message=>{if(isLeader||!channel){sendOverSocket(message)}else{post({payload:message,type:"send"})}};const reconnect=()=>{if(isLeader||!channel){reconnectLeader()}else{post({type:"reconnect"})}};requestLeadership();post({type:"request-state"});const destroy=()=>{isDestroyed=true;if(reconnectTimeout)clearTimeout(reconnectTimeout);socket?.close();socket=null;releaseLeadership?.();channel?.close()};return{destroy,getReadyState:()=>readyState,reconnect,send}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/ws/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAExC,UAAU,4BAA4B;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;CAC3D;AAKD,eAAO,MAAM,0BAA0B,QAAO,4BAS7C,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/ws/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,KAAK,QAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;AAExC,UAAU,4BAA4B;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,KAAK,MAAM,IAAI,CAAC;CAC3D;AAKD,eAAO,MAAM,0BAA0B,QAAO,4BAS7C,CAAC;AAqBF,eAAO,MAAM,wBAAwB,GAAI,eAEtC;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,sBAwEA,CAAC"}
|
package/dist/src/ws/provider.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx}from"react/jsx-runtime";import React from"react";import{CONFIG}from"../lib/config.js";import{createWebSocketManager}from"./manager.js";const VitNodeWebSocketContext=React.createContext(null);export const useVitNodeWebSocketContext=()=>{const context=React.use(VitNodeWebSocketContext);if(!context){throw new Error("useVitNodeWebSocket must be used within a <VitNodeWebSocketProvider>.")}return context};const getWebSocketUrl=()=>{const url=new URL("/api/ws",CONFIG.api);url.protocol=url.protocol==="https:"?"wss:":"ws:";return url.toString()};export const VitNodeWebSocketProvider=({children})=>{const listenersRef=React.useRef(new Map);const managerRef=React.useRef(null);const pendingSendRef=React.useRef([]);const[readyState,setReadyState]=React.useState(typeof WebSocket
|
|
1
|
+
"use client";import{jsx as _jsx}from"react/jsx-runtime";import React from"react";import{CONFIG}from"../lib/config.js";import{createWebSocketManager}from"./manager.js";const VitNodeWebSocketContext=React.createContext(null);export const useVitNodeWebSocketContext=()=>{const context=React.use(VitNodeWebSocketContext);if(!context){throw new Error("useVitNodeWebSocket must be used within a <VitNodeWebSocketProvider>.")}return context};const getWebSocketUrl=()=>{const url=new URL("/api/ws",CONFIG.api);url.protocol=url.protocol==="https:"?"wss:":"ws:";return url.toString()};const shouldConnectWebSocket=()=>CONFIG.api.pathname!==CONFIG.web.pathname||CONFIG.api.port!==CONFIG.web.port;export const VitNodeWebSocketProvider=({children})=>{const listenersRef=React.useRef(new Map);const managerRef=React.useRef(null);const pendingSendRef=React.useRef([]);const[readyState,setReadyState]=React.useState(()=>{if(typeof WebSocket==="undefined")return 0;return shouldConnectWebSocket()?WebSocket.CONNECTING:WebSocket.CLOSED});const dispatch=React.useCallback(message=>{listenersRef.current.get(message.id)?.forEach(listener=>listener(message.data))},[]);React.useEffect(()=>{if(!shouldConnectWebSocket())return;const manager=createWebSocketManager({url:getWebSocketUrl(),onMessage:dispatch,onReadyStateChange:setReadyState});managerRef.current=manager;pendingSendRef.current.splice(0).forEach(message=>manager.send(message));return()=>{manager.destroy();managerRef.current=null}},[dispatch]);const subscribe=React.useCallback((id,listener)=>{const listeners=listenersRef.current.get(id)??new Set;listeners.add(listener);listenersRef.current.set(id,listeners);return()=>{listeners.delete(listener);if(listeners.size===0){listenersRef.current.delete(id)}}},[]);const send=React.useCallback((id,data)=>{const message={data,id};const manager=managerRef.current;if(manager){manager.send(message)}else{pendingSendRef.current.push(message)}},[]);const reconnect=React.useCallback(()=>{managerRef.current?.reconnect()},[]);const value=React.useMemo(()=>({readyState,reconnect,send,subscribe}),[readyState,reconnect,send,subscribe]);return _jsx(VitNodeWebSocketContext.Provider,{value:value,children:children})};
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import type { WSContext } from "hono/ws";
|
|
2
|
+
import type { Redis } from "ioredis";
|
|
2
3
|
import type { VitNodeWSChannel } from "./types";
|
|
4
|
+
export declare const markWebSocketEnabled: () => void;
|
|
5
|
+
export declare const isWebSocketEnabled: () => boolean;
|
|
3
6
|
export declare const wsRegistry: {
|
|
4
7
|
add: (ws: WSContext, userId: null | number) => void;
|
|
5
8
|
broadcast: (id: string, data: unknown) => void;
|
|
6
9
|
remove: (ws: WSContext) => void;
|
|
7
10
|
sendToUser: (userId: number, id: string, data: unknown) => void;
|
|
8
11
|
};
|
|
12
|
+
export declare const isRealtimePubSubEnabled: () => boolean;
|
|
13
|
+
export declare const initRealtimePubSub: (client: null | Redis) => void;
|
|
9
14
|
export interface VitNodeRealtime {
|
|
10
15
|
broadcast: <Receive>(channel: VitNodeWSChannel<unknown, Receive>, data: Receive) => void;
|
|
11
16
|
sendToUser: <Receive>(userId: number, channel: VitNodeWSChannel<unknown, Receive>, data: Receive) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/ws/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/ws/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,SAAS,CAAC;AAwBlE,eAAO,MAAM,oBAAoB,QAAO,IAEvC,CAAC;AAGF,eAAO,MAAM,kBAAkB,QAAO,OAA2B,CAAC;AAUlE,eAAO,MAAM,UAAU;cACX,SAAS,UAAU,IAAI,GAAG,MAAM,KAAG,IAAI;oBAIjC,MAAM,QAAQ,OAAO,KAAG,IAAI;iBAG/B,SAAS,KAAG,IAAI;yBAIR,MAAM,MAAM,MAAM,QAAQ,OAAO,KAAG,IAAI;CAK9D,CAAC;AAqBF,eAAO,MAAM,uBAAuB,QAAO,OAA6B,CAAC;AAyCzE,eAAO,MAAM,kBAAkB,GAAI,QAAQ,IAAI,GAAG,KAAK,KAAG,IA8BzD,CAAC;AAEF,MAAM,WAAW,eAAe;IAM9B,SAAS,EAAE,CAAC,OAAO,EACjB,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3C,IAAI,EAAE,OAAO,KACV,IAAI,CAAC;IAKV,UAAU,EAAE,CAAC,OAAO,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,EAC3C,IAAI,EAAE,OAAO,KACV,IAAI,CAAC;CACX;AASD,eAAO,MAAM,QAAQ,EAAE,eAStB,CAAC"}
|
package/dist/src/ws/registry.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const connections=new Map;const sendTo=(ws,id,data)=>{try{ws.send(JSON.stringify({data,id}))}catch(_error){wsRegistry.remove(ws)}};export const wsRegistry={add:(ws,userId)=>{connections.set(ws,userId)},broadcast:(id,data)=>{connections.forEach((_userId,ws)=>sendTo(ws,id,data))},remove:ws=>{connections.delete(ws)},sendToUser:(userId,id,data)=>{connections.forEach((connectionUserId,ws)=>{if(connectionUserId===userId)sendTo(ws,id,data)})}};export const realtime={broadcast:(channel,data)=>{wsRegistry.broadcast(channel.id,data)},sendToUser:(userId,channel,data)=>{wsRegistry.sendToUser(userId,channel.id,data)}};
|
|
1
|
+
const connections=new Map;let webSocketEnabled=false;export const markWebSocketEnabled=()=>{webSocketEnabled=true};export const isWebSocketEnabled=()=>webSocketEnabled;const sendTo=(ws,id,data)=>{try{ws.send(JSON.stringify({data,id}))}catch(_error){wsRegistry.remove(ws)}};export const wsRegistry={add:(ws,userId)=>{connections.set(ws,userId)},broadcast:(id,data)=>{connections.forEach((_userId,ws)=>sendTo(ws,id,data))},remove:ws=>{connections.delete(ws)},sendToUser:(userId,id,data)=>{connections.forEach((connectionUserId,ws)=>{if(connectionUserId===userId)sendTo(ws,id,data)})}};const REALTIME_PUBSUB_CHANNEL="vitnode:ws";const instanceId=crypto.randomUUID();let publisher=null;export const isRealtimePubSubEnabled=()=>publisher!==null;const deliverLocally=message=>{if(message.type==="broadcast"){wsRegistry.broadcast(message.id,message.data)}else if(message.type==="sendToUser"&&typeof message.userId==="number"){wsRegistry.sendToUser(message.userId,message.id,message.data)}};const publish=message=>{if(!publisher)return;void publisher.publish(REALTIME_PUBSUB_CHANNEL,JSON.stringify({...message,origin:instanceId})).catch(()=>{})};export const initRealtimePubSub=client=>{if(!client||publisher)return;publisher=client;const subscriber=client.duplicate();subscriber.on("error",()=>{});subscriber.on("ready",()=>{void subscriber.subscribe(REALTIME_PUBSUB_CHANNEL).catch(()=>{})});subscriber.on("message",(channel,raw)=>{if(channel!==REALTIME_PUBSUB_CHANNEL)return;try{const message=JSON.parse(raw);if(message.origin===instanceId)return;deliverLocally(message)}catch{}})};export const realtime={broadcast:(channel,data)=>{wsRegistry.broadcast(channel.id,data);publish({data,id:channel.id,type:"broadcast"})},sendToUser:(userId,channel,data)=>{wsRegistry.sendToUser(userId,channel.id,data);publish({data,id:channel.id,type:"sendToUser",userId})}};
|