@vitnode/core 1.2.0-canary.75 → 1.2.0-canary.77
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/cli.mjs +2 -0
- package/dist/scripts/build.d.ts +2 -0
- package/dist/scripts/build.d.ts.map +1 -0
- package/dist/scripts/dev.d.ts +4 -0
- package/dist/scripts/dev.d.ts.map +1 -0
- package/dist/scripts/get-config.d.ts +7 -2
- package/dist/scripts/get-config.d.ts.map +1 -1
- package/dist/scripts/i18n-check.d.ts +2 -0
- package/dist/scripts/i18n-check.d.ts.map +1 -0
- package/dist/scripts/plugin.d.ts.map +1 -1
- package/dist/scripts/prepare-database.d.ts.map +1 -1
- package/dist/scripts/prepare-plugins-files.d.ts.map +1 -1
- package/dist/scripts/scripts.js +4 -2
- package/dist/scripts/shared/file-utils.d.ts +1 -0
- package/dist/scripts/shared/file-utils.d.ts.map +1 -1
- package/dist/src/api/adapters/events/local.d.ts +3 -0
- package/dist/src/api/adapters/events/local.d.ts.map +1 -0
- package/dist/src/api/adapters/events/local.js +1 -0
- package/dist/src/api/adapters/search/postgres.d.ts +3 -0
- package/dist/src/api/adapters/search/postgres.d.ts.map +1 -0
- package/dist/src/api/adapters/search/postgres.js +1 -0
- package/dist/src/api/adapters/storage/local.d.ts +6 -0
- package/dist/src/api/adapters/storage/local.d.ts.map +1 -0
- package/dist/src/api/adapters/storage/local.js +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/check-staff-permission.d.ts.map +1 -1
- package/dist/src/api/lib/check-staff-permission.js +1 -1
- package/dist/src/api/lib/cron.d.ts +2 -0
- package/dist/src/api/lib/cron.d.ts.map +1 -1
- package/dist/src/api/lib/cron.js +1 -1
- package/dist/src/api/lib/events.d.ts +15 -0
- package/dist/src/api/lib/events.d.ts.map +1 -0
- package/dist/src/api/lib/events.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 +0 -4
- package/dist/src/api/lib/permission-staff.d.ts.map +1 -1
- package/dist/src/api/lib/plugin.d.ts +9 -1
- 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/route.d.ts +1 -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/save-language-words.d.ts +11 -0
- package/dist/src/api/lib/save-language-words.d.ts.map +1 -0
- package/dist/src/api/lib/save-language-words.js +1 -0
- package/dist/src/api/middlewares/global.middleware.d.ts +29 -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/plugin.middleware.d.ts +3 -0
- package/dist/src/api/middlewares/plugin.middleware.d.ts.map +1 -0
- package/dist/src/api/middlewares/plugin.middleware.js +1 -0
- package/dist/src/api/middlewares/rate-limiter.middleware.d.ts +4 -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/device.d.ts.map +1 -1
- package/dist/src/api/models/device.js +1 -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/events.d.ts +66 -0
- package/dist/src/api/models/events.d.ts.map +1 -0
- package/dist/src/api/models/events.js +1 -0
- package/dist/src/api/models/i18n.d.ts +15 -0
- package/dist/src/api/models/i18n.d.ts.map +1 -0
- package/dist/src/api/models/i18n.js +1 -0
- package/dist/src/api/models/search.d.ts +102 -0
- package/dist/src/api/models/search.d.ts.map +1 -0
- package/dist/src/api/models/search.js +1 -0
- package/dist/src/api/models/storage.d.ts +40 -0
- package/dist/src/api/models/storage.d.ts.map +1 -0
- package/dist/src/api/models/storage.js +1 -0
- package/dist/src/api/models/user/sign-up.d.ts +1 -1
- package/dist/src/api/models/user/sign-up.d.ts.map +1 -1
- package/dist/src/api/models/user/sign-up.js +1 -1
- package/dist/src/api/models/user.d.ts +1 -1
- package/dist/src/api/modules/admin/admin.module.d.ts +376 -2
- 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 +1 -1
- package/dist/src/api/modules/admin/advanced/cron/routes/get.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +1 -1
- package/dist/src/api/modules/admin/advanced/cron/routes/run.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +1 -1
- package/dist/src/api/modules/admin/advanced/queue/queue.admin.module.d.ts +1 -1
- package/dist/src/api/modules/admin/advanced/queue/routes/get.route.d.ts +1 -1
- package/dist/src/api/modules/admin/debug/debug.admin.module.d.ts +100 -1
- 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 +6 -0
- package/dist/src/api/modules/admin/debug/routes/integrations.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/debug/routes/integrations.route.js +1 -1
- package/dist/src/api/modules/admin/debug/routes/logs.route.d.ts +1 -1
- package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.d.ts +36 -0
- package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/debug/routes/rebuild-search.route.js +1 -0
- package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts +32 -0
- package/dist/src/api/modules/admin/debug/routes/search-status.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/debug/routes/search-status.route.js +1 -0
- package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.d.ts +37 -0
- package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/debug/routes/test-storage-upload.route.js +1 -0
- package/dist/src/api/modules/admin/files/files.admin.module.d.ts +128 -0
- package/dist/src/api/modules/admin/files/files.admin.module.d.ts.map +1 -0
- package/dist/src/api/modules/admin/files/files.admin.module.js +1 -0
- package/dist/src/api/modules/admin/files/routes/delete.route.d.ts +29 -0
- package/dist/src/api/modules/admin/files/routes/delete.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/files/routes/delete.route.js +1 -0
- package/dist/src/api/modules/admin/files/routes/download.route.d.ts +34 -0
- package/dist/src/api/modules/admin/files/routes/download.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/files/routes/download.route.js +1 -0
- package/dist/src/api/modules/admin/files/routes/list.route.d.ts +72 -0
- package/dist/src/api/modules/admin/files/routes/list.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/files/routes/list.route.js +1 -0
- package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts +6 -0
- package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.d.ts.map +1 -0
- package/dist/src/api/modules/admin/roles/lib/assert-manage-admin-role.js +1 -0
- package/dist/src/api/modules/admin/roles/roles.admin.module.d.ts +149 -0
- package/dist/src/api/modules/admin/roles/roles.admin.module.d.ts.map +1 -1
- package/dist/src/api/modules/admin/roles/roles.admin.module.js +1 -1
- package/dist/src/api/modules/admin/roles/routes/create.route.d.ts +58 -0
- package/dist/src/api/modules/admin/roles/routes/create.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/roles/routes/create.route.js +1 -0
- package/dist/src/api/modules/admin/roles/routes/delete.route.d.ts +52 -0
- package/dist/src/api/modules/admin/roles/routes/delete.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/roles/routes/delete.route.js +1 -0
- package/dist/src/api/modules/admin/roles/routes/list.route.d.ts +4 -0
- package/dist/src/api/modules/admin/roles/routes/list.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/roles/routes/list.route.js +1 -1
- package/dist/src/api/modules/admin/roles/routes/show.route.d.ts +3 -0
- package/dist/src/api/modules/admin/roles/routes/show.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/roles/routes/show.route.js +1 -1
- package/dist/src/api/modules/admin/roles/routes/update.route.d.ts +66 -0
- package/dist/src/api/modules/admin/roles/routes/update.route.d.ts.map +1 -0
- package/dist/src/api/modules/admin/roles/routes/update.route.js +1 -0
- package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts +1 -3
- package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.d.ts.map +1 -1
- package/dist/src/api/modules/admin/staff/lib/resolve-staff-edges.js +1 -1
- package/dist/src/api/modules/admin/staff/routes/admins.route.js +1 -1
- package/dist/src/api/modules/admin/staff/routes/create.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/staff/routes/create.route.js +1 -1
- package/dist/src/api/modules/admin/staff/routes/moderators.route.js +1 -1
- package/dist/src/api/modules/admin/staff/routes/show-permissions.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/staff/routes/show-permissions.route.js +1 -1
- package/dist/src/api/modules/admin/staff/routes/update-permissions.route.js +1 -1
- package/dist/src/api/modules/admin/users/routes/update.route.d.ts.map +1 -1
- package/dist/src/api/modules/admin/users/routes/update.route.js +1 -1
- package/dist/src/api/modules/admin/users/routes/users.route.d.ts +1 -1
- package/dist/src/api/modules/cron/helpers/register-cron-jobs.d.ts +4 -0
- package/dist/src/api/modules/cron/helpers/register-cron-jobs.d.ts.map +1 -0
- package/dist/src/api/modules/cron/helpers/register-cron-jobs.js +1 -0
- package/dist/src/api/modules/search/routes/search.route.d.ts +91 -0
- package/dist/src/api/modules/search/routes/search.route.d.ts.map +1 -0
- package/dist/src/api/modules/search/routes/search.route.js +1 -0
- package/dist/src/api/modules/search/search.module.d.ts +68 -0
- package/dist/src/api/modules/search/search.module.d.ts.map +1 -0
- package/dist/src/api/modules/search/search.module.js +1 -0
- package/dist/src/api/modules/search/tasks/rebuild-index.task.d.ts +2 -0
- package/dist/src/api/modules/search/tasks/rebuild-index.task.d.ts.map +1 -0
- package/dist/src/api/modules/search/tasks/rebuild-index.task.js +1 -0
- package/dist/src/api/modules/users/files/files.module.d.ts +124 -0
- package/dist/src/api/modules/users/files/files.module.d.ts.map +1 -0
- package/dist/src/api/modules/users/files/files.module.js +1 -0
- package/dist/src/api/modules/users/files/routes/delete.route.d.ts +32 -0
- package/dist/src/api/modules/users/files/routes/delete.route.d.ts.map +1 -0
- package/dist/src/api/modules/users/files/routes/delete.route.js +1 -0
- package/dist/src/api/modules/users/files/routes/download.route.d.ts +37 -0
- package/dist/src/api/modules/users/files/routes/download.route.d.ts.map +1 -0
- package/dist/src/api/modules/users/files/routes/download.route.js +1 -0
- package/dist/src/api/modules/users/files/routes/list.route.d.ts +62 -0
- package/dist/src/api/modules/users/files/routes/list.route.d.ts.map +1 -0
- package/dist/src/api/modules/users/files/routes/list.route.js +1 -0
- package/dist/src/api/modules/users/routes/devices.route.d.ts +34 -0
- package/dist/src/api/modules/users/routes/devices.route.d.ts.map +1 -0
- package/dist/src/api/modules/users/routes/devices.route.js +1 -0
- package/dist/src/api/modules/users/routes/revoke-device.route.d.ts +42 -0
- package/dist/src/api/modules/users/routes/revoke-device.route.d.ts.map +1 -0
- package/dist/src/api/modules/users/routes/revoke-device.route.js +1 -0
- package/dist/src/api/modules/users/users.module.d.ts +194 -2
- 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/files/file-preview.d.ts +7 -0
- package/dist/src/components/files/file-preview.d.ts.map +1 -0
- package/dist/src/components/files/file-preview.js +1 -0
- package/dist/src/components/files/metadata-cell.d.ts +6 -0
- package/dist/src/components/files/metadata-cell.d.ts.map +1 -0
- package/dist/src/components/files/metadata-cell.js +1 -0
- package/dist/src/components/form/auto-form.d.ts +12 -3
- package/dist/src/components/form/auto-form.d.ts.map +1 -1
- package/dist/src/components/form/auto-form.js +1 -1
- package/dist/src/components/form/fields/color.d.ts +5 -0
- package/dist/src/components/form/fields/color.d.ts.map +1 -0
- package/dist/src/components/form/fields/color.js +1 -0
- package/dist/src/components/form/fields/editor.d.ts +9 -0
- package/dist/src/components/form/fields/editor.d.ts.map +1 -0
- package/dist/src/components/form/fields/editor.js +1 -0
- package/dist/src/components/form/fields/input.d.ts +5 -1
- package/dist/src/components/form/fields/input.d.ts.map +1 -1
- package/dist/src/components/form/fields/input.js +1 -1
- package/dist/src/components/form/fields/multi-lang.d.ts +18 -0
- package/dist/src/components/form/fields/multi-lang.d.ts.map +1 -0
- package/dist/src/components/form/fields/multi-lang.js +1 -0
- package/dist/src/components/form/fields/nullable-number.d.ts +11 -0
- package/dist/src/components/form/fields/nullable-number.d.ts.map +1 -0
- package/dist/src/components/form/fields/nullable-number.js +1 -0
- package/dist/src/components/form/fields/radio-group.js +1 -1
- package/dist/src/components/form/fields/select.js +1 -1
- package/dist/src/components/languages-provider.d.ts +8 -0
- package/dist/src/components/languages-provider.d.ts.map +1 -0
- package/dist/src/components/languages-provider.js +1 -0
- package/dist/src/components/table/content.d.ts.map +1 -1
- package/dist/src/components/table/content.js +1 -1
- package/dist/src/components/table/data-table.d.ts +21 -9
- package/dist/src/components/table/data-table.d.ts.map +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/order-table-head.d.ts +1 -1
- package/dist/src/components/table/order-table-head.d.ts.map +1 -1
- package/dist/src/components/ui/alert.d.ts +1 -1
- 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/attachment.d.ts +24 -0
- package/dist/src/components/ui/attachment.d.ts.map +1 -0
- package/dist/src/components/ui/attachment.js +1 -0
- 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 +2 -1
- package/dist/src/components/ui/chart.d.ts.map +1 -1
- package/dist/src/components/ui/color-picker.d.ts +8 -0
- package/dist/src/components/ui/color-picker.d.ts.map +1 -0
- package/dist/src/components/ui/color-picker.js +1 -0
- package/dist/src/components/ui/dialog.js +1 -1
- package/dist/src/components/ui/editor.d.ts +4 -3
- package/dist/src/components/ui/editor.d.ts.map +1 -1
- package/dist/src/components/ui/editor.js +1 -1
- package/dist/src/components/user-format.d.ts +0 -1
- package/dist/src/components/user-format.d.ts.map +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/database/admins.d.ts +22 -5
- package/dist/src/database/admins.d.ts.map +1 -1
- package/dist/src/database/admins.js +1 -1
- package/dist/src/database/files.d.ts +193 -0
- package/dist/src/database/files.d.ts.map +1 -0
- package/dist/src/database/files.js +1 -0
- package/dist/src/database/moderators.d.ts +22 -5
- package/dist/src/database/moderators.d.ts.map +1 -1
- package/dist/src/database/moderators.js +1 -1
- package/dist/src/database/roles.d.ts +52 -1
- package/dist/src/database/roles.d.ts.map +1 -1
- package/dist/src/database/roles.js +1 -1
- package/dist/src/database/search.d.ts +314 -0
- package/dist/src/database/search.d.ts.map +1 -0
- package/dist/src/database/search.js +1 -0
- package/dist/src/globals.css +45 -0
- package/dist/src/lib/api/get-devices-api.d.ts +14 -0
- package/dist/src/lib/api/get-devices-api.d.ts.map +1 -0
- package/dist/src/lib/api/get-devices-api.js +1 -0
- package/dist/src/lib/api/get-queue-status.d.ts +11 -0
- package/dist/src/lib/api/get-queue-status.d.ts.map +1 -0
- package/dist/src/lib/api/get-queue-status.js +1 -0
- package/dist/src/lib/api/get-session-api.d.ts.map +1 -1
- package/dist/src/lib/api/get-session-api.js +1 -1
- package/dist/src/lib/api/is-cron-stale.d.ts +3 -0
- package/dist/src/lib/api/is-cron-stale.d.ts.map +1 -0
- package/dist/src/lib/api/is-cron-stale.js +1 -0
- package/dist/src/lib/api/parse-user-agent.d.ts +8 -0
- package/dist/src/lib/api/parse-user-agent.d.ts.map +1 -0
- package/dist/src/lib/api/parse-user-agent.js +1 -0
- package/dist/src/lib/api/upload.d.ts +15 -0
- package/dist/src/lib/api/upload.d.ts.map +1 -0
- package/dist/src/lib/api/upload.js +1 -0
- package/dist/src/lib/config.d.ts +4 -4
- package/dist/src/lib/config.d.ts.map +1 -1
- package/dist/src/lib/config.js +1 -1
- package/dist/src/lib/fetcher/core.d.ts +2 -1
- package/dist/src/lib/fetcher/core.d.ts.map +1 -1
- package/dist/src/lib/fetcher/core.js +1 -1
- package/dist/src/lib/fetcher/rate-limit.d.ts +10 -0
- package/dist/src/lib/fetcher/rate-limit.d.ts.map +1 -0
- package/dist/src/lib/fetcher/rate-limit.js +1 -0
- package/dist/src/lib/fetcher-client.d.ts +3 -1
- package/dist/src/lib/fetcher-client.d.ts.map +1 -1
- package/dist/src/lib/fetcher-client.js +1 -1
- package/dist/src/lib/format-bytes.d.ts +2 -0
- package/dist/src/lib/format-bytes.d.ts.map +1 -0
- package/dist/src/lib/format-bytes.js +1 -0
- package/dist/src/lib/helpers/multi-lang.d.ts +21 -0
- package/dist/src/lib/helpers/multi-lang.d.ts.map +1 -0
- package/dist/src/lib/helpers/multi-lang.js +1 -0
- package/dist/src/lib/i18n/deep-merge.d.ts +4 -0
- package/dist/src/lib/i18n/deep-merge.d.ts.map +1 -0
- package/dist/src/lib/i18n/deep-merge.js +1 -0
- package/dist/src/lib/i18n/load-messages.d.ts +9 -0
- package/dist/src/lib/i18n/load-messages.d.ts.map +1 -0
- package/dist/src/lib/i18n/load-messages.js +1 -0
- package/dist/src/lib/i18n/negotiate-locale.d.ts +2 -0
- package/dist/src/lib/i18n/negotiate-locale.d.ts.map +1 -0
- package/dist/src/lib/i18n/negotiate-locale.js +1 -0
- package/dist/src/lib/i18n/sources.d.ts +9 -0
- package/dist/src/lib/i18n/sources.d.ts.map +1 -0
- package/dist/src/lib/i18n/sources.js +1 -0
- package/dist/src/lib/i18n/types.d.ts +24 -0
- package/dist/src/lib/i18n/types.d.ts.map +1 -0
- package/dist/src/lib/i18n/types.js +1 -0
- package/dist/src/lib/motion.d.ts +8 -0
- package/dist/src/lib/motion.d.ts.map +1 -0
- package/dist/src/lib/motion.js +1 -0
- package/dist/src/lib/plugin.d.ts +2 -0
- package/dist/src/lib/plugin.d.ts.map +1 -1
- package/dist/src/lib/strip-html.d.ts +2 -0
- package/dist/src/lib/strip-html.d.ts.map +1 -0
- package/dist/src/lib/strip-html.js +1 -0
- package/dist/src/locales/en.json +897 -0
- package/dist/src/locales/index.d.ts +4 -0
- package/dist/src/locales/index.d.ts.map +1 -0
- package/dist/src/locales/index.js +1 -0
- package/dist/src/routes/admin/core/advanced/cron/page.d.ts.map +1 -1
- package/dist/src/routes/admin/core/advanced/cron/page.js +1 -1
- package/dist/src/routes/admin/core/advanced/search/page.d.ts +11 -0
- package/dist/src/routes/admin/core/advanced/search/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/advanced/search/page.js +1 -0
- package/dist/src/routes/admin/core/system/files/page.d.ts +11 -0
- package/dist/src/routes/admin/core/system/files/page.d.ts.map +1 -0
- package/dist/src/routes/admin/core/system/files/page.js +1 -0
- package/dist/src/routes/admin/core/users/[id]/page.js +1 -1
- package/dist/src/routes/admin/core/users/roles/page.d.ts.map +1 -1
- package/dist/src/routes/admin/core/users/roles/page.js +1 -1
- package/dist/src/routes/blank/test/page.js +1 -1
- package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/cron/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/queue/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/advanced/search/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/system/files/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/system/files/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/system/files/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/system/integrations/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/users/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/users/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/users/page.js +1 -0
- package/dist/src/routes/breadcrumb/admin/core/users/roles/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/admin/core/users/roles/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/admin/core/users/roles/page.js +1 -0
- package/dist/src/routes/breadcrumb/main/discover/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/main/discover/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/main/discover/page.js +1 -0
- package/dist/src/routes/breadcrumb/main/search/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/main/search/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/main/search/page.js +1 -0
- package/dist/src/routes/breadcrumb/main/settings/devices/page.d.ts +2 -0
- package/dist/src/routes/breadcrumb/main/settings/devices/page.d.ts.map +1 -0
- package/dist/src/routes/breadcrumb/main/settings/devices/page.js +1 -0
- package/dist/src/routes/main/discover/page.d.ts +11 -0
- package/dist/src/routes/main/discover/page.d.ts.map +1 -0
- package/dist/src/routes/main/discover/page.js +1 -0
- package/dist/src/routes/main/files/page.d.ts +15 -0
- package/dist/src/routes/main/files/page.d.ts.map +1 -0
- package/dist/src/routes/main/files/page.js +1 -0
- package/dist/src/routes/main/search/page.d.ts +15 -0
- package/dist/src/routes/main/search/page.d.ts.map +1 -0
- package/dist/src/routes/main/search/page.js +1 -0
- package/dist/src/routes/main/settings/devices/page.d.ts +5 -0
- package/dist/src/routes/main/settings/devices/page.d.ts.map +1 -0
- package/dist/src/routes/main/settings/devices/page.js +1 -0
- package/dist/src/tiptap.css +28 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.d.ts +5 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.d.ts.map +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-advanced-search.js +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.d.ts +5 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.d.ts.map +1 -0
- package/dist/src/views/admin/layouts/breadcrumb/breadcrumb-roles-admin.js +1 -0
- 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/sign-out.js +1 -1
- package/dist/src/views/admin/layouts/user-bar/client.js +1 -1
- package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +1 -1
- package/dist/src/views/admin/views/core/advanced/cron/run-action/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts +1 -1
- package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +1 -1
- package/dist/src/views/admin/views/core/advanced/queue/queue-table-view.js +1 -1
- package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts +11 -0
- package/dist/src/views/admin/views/core/advanced/search/collection-status.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/collection-status.js +1 -0
- package/dist/src/views/admin/views/core/advanced/search/collections-table.d.ts +6 -0
- package/dist/src/views/admin/views/core/advanced/search/collections-table.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/collections-table.js +1 -0
- package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts +3 -0
- package/dist/src/views/admin/views/core/advanced/search/cron-warning.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/cron-warning.js +1 -0
- package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.d.ts +10 -0
- package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/mutation-api.server.js +1 -0
- package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts +6 -0
- package/dist/src/views/admin/views/core/advanced/search/reindex-action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/reindex-action.js +1 -0
- package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts +3 -0
- package/dist/src/views/admin/views/core/advanced/search/search-header-actions.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/search-header-actions.js +1 -0
- package/dist/src/views/admin/views/core/advanced/search/search-view.d.ts +7 -0
- package/dist/src/views/admin/views/core/advanced/search/search-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/advanced/search/search-view.js +1 -0
- package/dist/src/views/admin/views/core/dashboard/send-notification/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/dashboard/send-notification/send-notification.js +1 -1
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/clear-cache.js +1 -1
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/debug/system-logs/system-logs-view.js +1 -1
- package/dist/src/views/admin/views/core/staff/create/form.js +1 -1
- package/dist/src/views/admin/views/core/staff/create/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/staff/create/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/create/{search.action.d.ts → search.action.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/staff/create/search.action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/edit/form.js +1 -1
- package/dist/src/views/admin/views/core/staff/edit/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/staff/edit/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/table/actions/{delete-action.d.ts → delete-action.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/staff/table/actions/delete-action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/staff/table/actions/staff-row-actions.js +1 -1
- package/dist/src/views/admin/views/core/staff/table/staff-table.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/staff/table/staff-table.js +1 -1
- package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.d.ts +9 -0
- package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/files/actions/delete-action.server.js +1 -0
- package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts +8 -0
- package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/files/actions/file-row-actions.js +1 -0
- package/dist/src/views/admin/views/core/system/files/files-table-view.d.ts +5 -0
- package/dist/src/views/admin/views/core/system/files/files-table-view.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/files/files-table-view.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/integration-card.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/system/integrations/integration-card.js +1 -1
- package/dist/src/views/admin/views/core/system/integrations/integrations-view.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/system/integrations/integrations-view.js +1 -1
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/use-form.js +1 -1
- package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts +3 -0
- package/dist/src/views/admin/views/core/system/integrations/test-storage/content.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/test-storage/content.js +1 -0
- package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts +3 -0
- package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/system/integrations/test-storage/test-storage.js +1 -0
- package/dist/src/views/admin/views/core/test.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/test.js +1 -1
- package/dist/src/views/admin/views/core/users/actions/create/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/users/actions/create/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/actions/create/use-form.js +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/actions/verify-email/verify-email.js +1 -1
- package/dist/src/views/admin/views/core/users/roles/actions/actions.d.ts +3 -0
- package/dist/src/views/admin/views/core/users/roles/actions/actions.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/actions/actions.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.d.ts +15 -0
- package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/actions/create-edit/create-edit.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.d.ts +11 -0
- package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/actions/create-edit/mutation-api.server.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/roles-admin-view.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/roles/roles-admin-view.js +1 -1
- package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.d.ts +13 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/delete-action.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.d.ts +9 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/delete-role.action.server.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.d.ts +7 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/edit-action.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.d.ts +22 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/row-actions.js +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.d.ts +10 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/roles/table/actions/search-roles.action.server.js +1 -0
- package/dist/src/views/admin/views/core/users/{search-roles.action.d.ts → search-roles.action.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/users/search-roles.action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/edit-field.js +1 -1
- package/dist/src/views/admin/views/core/users/show/edit-name-code.js +1 -1
- package/dist/src/views/admin/views/core/users/show/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/users/show/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/edit-roles.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/edit-roles.js +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/roles.d.ts.map +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/{search-roles.action.d.ts → search-roles.action.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.server.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/roles/{update-roles.action.d.ts → update-roles.action.server.d.ts} +1 -1
- package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.server.d.ts.map +1 -0
- 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/show/tabs.d.ts +5 -0
- package/dist/src/views/admin/views/core/users/show/tabs.d.ts.map +1 -0
- package/dist/src/views/admin/views/core/users/show/tabs.js +1 -0
- 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/password-reset/change-password-form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/auth/password-reset/change-password-form/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/auth/password-reset/change-password-form/use-form.js +1 -1
- package/dist/src/views/auth/password-reset/form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/auth/password-reset/form/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/auth/password-reset/form/use-form.js +1 -1
- package/dist/src/views/auth/settings/devices/device-item.d.ts +5 -0
- package/dist/src/views/auth/settings/devices/device-item.d.ts.map +1 -0
- package/dist/src/views/auth/settings/devices/device-item.js +1 -0
- package/dist/src/views/auth/settings/devices/devices.d.ts +2 -0
- package/dist/src/views/auth/settings/devices/devices.d.ts.map +1 -0
- package/dist/src/views/auth/settings/devices/devices.js +1 -0
- package/dist/src/views/auth/settings/devices/revoke-action.server.d.ts +9 -0
- package/dist/src/views/auth/settings/devices/revoke-action.server.d.ts.map +1 -0
- package/dist/src/views/auth/settings/devices/revoke-action.server.js +1 -0
- package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts +5 -0
- package/dist/src/views/auth/settings/devices/revoke-device-button.d.ts.map +1 -0
- package/dist/src/views/auth/settings/devices/revoke-device-button.js +1 -0
- package/dist/src/views/auth/settings/nav.d.ts.map +1 -1
- package/dist/src/views/auth/settings/nav.js +1 -1
- package/dist/src/views/auth/settings/shell.d.ts.map +1 -1
- package/dist/src/views/auth/settings/shell.js +1 -1
- package/dist/src/views/auth/sign-in/form/form.d.ts.map +1 -1
- package/dist/src/views/auth/sign-in/form/form.js +1 -1
- package/dist/src/views/auth/sign-in/form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/auth/sign-in/form/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/auth/sign-in/form/use-form.js +1 -1
- package/dist/src/views/auth/sign-up/form/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/auth/sign-up/form/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/auth/sign-up/form/use-form.d.ts +2 -2
- package/dist/src/views/auth/sign-up/form/use-form.d.ts.map +1 -1
- package/dist/src/views/auth/sign-up/form/use-form.js +1 -1
- package/dist/src/views/auth/sso/buttons/client.js +1 -1
- package/dist/src/views/auth/sso/buttons/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/auth/sso/buttons/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/auth/sso/callback/client/client.js +1 -1
- package/dist/src/views/auth/sso/callback/client/{mutation-api.d.ts → mutation-api.server.d.ts} +1 -1
- package/dist/src/views/auth/sso/callback/client/mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/error/error-view.d.ts +1 -1
- package/dist/src/views/error/error-view.d.ts.map +1 -1
- package/dist/src/views/files/actions/delete-action.server.d.ts +9 -0
- package/dist/src/views/files/actions/delete-action.server.d.ts.map +1 -0
- package/dist/src/views/files/actions/delete-action.server.js +1 -0
- package/dist/src/views/files/actions/file-row-actions.d.ts +6 -0
- package/dist/src/views/files/actions/file-row-actions.d.ts.map +1 -0
- package/dist/src/views/files/actions/file-row-actions.js +1 -0
- package/dist/src/views/files/my-files-table-view.d.ts +5 -0
- package/dist/src/views/files/my-files-table-view.d.ts.map +1 -0
- package/dist/src/views/files/my-files-table-view.js +1 -0
- package/dist/src/views/layouts/provider.d.ts +6 -2
- 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/rate-limit-listener.d.ts +2 -0
- package/dist/src/views/layouts/rate-limit-listener.d.ts.map +1 -0
- package/dist/src/views/layouts/rate-limit-listener.js +1 -0
- 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/header.d.ts +1 -1
- package/dist/src/views/layouts/theme/header/header.d.ts.map +1 -1
- package/dist/src/views/layouts/theme/header/header.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/views/layouts/theme/header/user/auth/{log-out-mutation-api.d.ts → log-out-mutation-api.server.d.ts} +1 -1
- package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.server.d.ts.map +1 -0
- package/dist/src/views/search/discover-view.d.ts +2 -0
- package/dist/src/views/search/discover-view.d.ts.map +1 -0
- package/dist/src/views/search/discover-view.js +1 -0
- package/dist/src/views/search/registry.d.ts +9 -0
- package/dist/src/views/search/registry.d.ts.map +1 -0
- package/dist/src/views/search/registry.js +1 -0
- package/dist/src/views/search/search-controls.d.ts +8 -0
- package/dist/src/views/search/search-controls.d.ts.map +1 -0
- package/dist/src/views/search/search-controls.js +1 -0
- package/dist/src/views/search/search-feed.d.ts +17 -0
- package/dist/src/views/search/search-feed.d.ts.map +1 -0
- package/dist/src/views/search/search-feed.js +1 -0
- package/dist/src/views/search/search-view.d.ts +4 -0
- package/dist/src/views/search/search-view.d.ts.map +1 -0
- package/dist/src/views/search/search-view.js +1 -0
- package/dist/src/views/search/types.d.ts +34 -0
- package/dist/src/views/search/types.d.ts.map +1 -0
- package/dist/src/views/search/types.js +1 -0
- package/dist/src/vitnode.config.d.ts +22 -18
- package/dist/src/vitnode.config.d.ts.map +1 -1
- package/dist/src/vitnode.config.js +1 -1
- package/dist/src/ws/manager.d.ts.map +1 -1
- package/dist/src/ws/manager.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +42 -40
- package/src/locales/en.json +258 -8
- package/src/locales/index.ts +15 -0
- package/src/routes/admin/core/advanced/cron/page.tsx +10 -1
- package/src/routes/admin/core/advanced/search/page.tsx +50 -0
- package/src/routes/admin/core/system/files/page.tsx +51 -0
- package/src/routes/admin/core/users/[id]/page.tsx +1 -1
- package/src/routes/admin/core/users/roles/page.tsx +13 -2
- package/src/routes/blank/test/page.tsx +1 -1
- package/src/routes/breadcrumb/admin/core/advanced/cron/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/advanced/queue/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/advanced/search/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/system/files/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/system/integrations/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/users/page.tsx +5 -0
- package/src/routes/breadcrumb/admin/core/users/roles/page.tsx +5 -0
- package/src/routes/breadcrumb/main/discover/page.tsx +14 -0
- package/src/routes/breadcrumb/main/page.tsx +1 -1
- package/src/routes/breadcrumb/main/search/page.tsx +11 -0
- package/src/routes/breadcrumb/main/settings/devices/page.tsx +17 -0
- package/src/routes/main/discover/page.tsx +41 -0
- package/src/routes/main/files/page.tsx +50 -0
- package/src/routes/main/search/page.tsx +43 -0
- package/src/routes/main/settings/devices/page.tsx +15 -0
- package/tsconfig.build.json +5 -0
- package/dist/scripts/shared/file-utils.test.d.ts +0 -2
- package/dist/scripts/shared/file-utils.test.d.ts.map +0 -1
- package/dist/src/api/lib/cache.test.d.ts +0 -2
- package/dist/src/api/lib/cache.test.d.ts.map +0 -1
- package/dist/src/api/lib/cache.test.js +0 -1
- package/dist/src/api/models/email.test.d.ts +0 -2
- package/dist/src/api/models/email.test.d.ts.map +0 -1
- package/dist/src/api/models/email.test.js +0 -1
- package/dist/src/api/models/queue.test.d.ts +0 -2
- package/dist/src/api/models/queue.test.d.ts.map +0 -1
- package/dist/src/api/models/queue.test.js +0 -1
- package/dist/src/components/form/fields/combobox.test.d.ts +0 -2
- package/dist/src/components/form/fields/combobox.test.d.ts.map +0 -1
- package/dist/src/components/form/fields/combobox.test.js +0 -1
- package/dist/src/lib/api/get-next-cron-run-date.test.d.ts +0 -2
- package/dist/src/lib/api/get-next-cron-run-date.test.d.ts.map +0 -1
- package/dist/src/lib/api/get-next-cron-run-date.test.js +0 -1
- package/dist/src/lib/api/get-queue-backoff-date.test.d.ts +0 -2
- package/dist/src/lib/api/get-queue-backoff-date.test.d.ts.map +0 -1
- package/dist/src/lib/api/get-queue-backoff-date.test.js +0 -1
- package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts +0 -2
- package/dist/src/lib/api/resolve-queue-task-outcome.test.d.ts.map +0 -1
- package/dist/src/lib/api/resolve-queue-task-outcome.test.js +0 -1
- package/dist/src/lib/api/should-cron-job-run.test.d.ts +0 -2
- package/dist/src/lib/api/should-cron-job-run.test.d.ts.map +0 -1
- package/dist/src/lib/api/should-cron-job-run.test.js +0 -1
- package/dist/src/lib/api/validate-cron-schedule.test.d.ts +0 -2
- package/dist/src/lib/api/validate-cron-schedule.test.d.ts.map +0 -1
- package/dist/src/lib/api/validate-cron-schedule.test.js +0 -1
- package/dist/src/lib/colors.test.d.ts +0 -2
- package/dist/src/lib/colors.test.d.ts.map +0 -1
- package/dist/src/lib/colors.test.js +0 -1
- package/dist/src/lib/fetcher/cookie-from-string-to-object.test.d.ts +0 -2
- package/dist/src/lib/fetcher/cookie-from-string-to-object.test.d.ts.map +0 -1
- package/dist/src/lib/fetcher/cookie-from-string-to-object.test.js +0 -1
- package/dist/src/lib/fetcher/helpers.test.d.ts +0 -2
- package/dist/src/lib/fetcher/helpers.test.d.ts.map +0 -1
- package/dist/src/lib/fetcher/helpers.test.js +0 -1
- package/dist/src/lib/helpers/auto-form.test.d.ts +0 -2
- package/dist/src/lib/helpers/auto-form.test.d.ts.map +0 -1
- package/dist/src/lib/helpers/auto-form.test.js +0 -1
- package/dist/src/lib/special-characters.test.d.ts +0 -2
- package/dist/src/lib/special-characters.test.d.ts.map +0 -1
- package/dist/src/lib/special-characters.test.js +0 -1
- package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/dashboard/send-notification/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/debug/actions/clear-cache/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/staff/create/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/staff/create/search.action.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/staff/edit/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/staff/table/actions/delete-action.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/system/integrations/send-test-email/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/users/actions/create/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/users/actions/verify-email/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/users/search-roles.action.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/users/show/mutation-api.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/users/show/roles/search-roles.action.d.ts.map +0 -1
- package/dist/src/views/admin/views/core/users/show/roles/update-roles.action.d.ts.map +0 -1
- package/dist/src/views/auth/password-reset/change-password-form/mutation-api.d.ts.map +0 -1
- package/dist/src/views/auth/password-reset/form/mutation-api.d.ts.map +0 -1
- package/dist/src/views/auth/sign-in/form/mutation-api.d.ts.map +0 -1
- package/dist/src/views/auth/sign-up/form/mutation-api.d.ts.map +0 -1
- package/dist/src/views/auth/sso/buttons/mutation-api.d.ts.map +0 -1
- package/dist/src/views/auth/sso/callback/client/mutation-api.d.ts.map +0 -1
- package/dist/src/views/layouts/theme/header/user/auth/log-out-mutation-api.d.ts.map +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
- /package/dist/src/views/admin/views/core/advanced/cron/run-action/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/dashboard/send-notification/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/debug/actions/clear-cache/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/staff/create/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/staff/create/{search.action.js → search.action.server.js} +0 -0
- /package/dist/src/views/admin/views/core/staff/edit/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/staff/table/actions/{delete-action.js → delete-action.server.js} +0 -0
- /package/dist/src/views/admin/views/core/system/integrations/send-test-email/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/users/actions/create/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/users/actions/verify-email/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/users/{search-roles.action.js → search-roles.action.server.js} +0 -0
- /package/dist/src/views/admin/views/core/users/show/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/admin/views/core/users/show/roles/{search-roles.action.js → search-roles.action.server.js} +0 -0
- /package/dist/src/views/admin/views/core/users/show/roles/{update-roles.action.js → update-roles.action.server.js} +0 -0
- /package/dist/src/views/auth/password-reset/change-password-form/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/auth/password-reset/form/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/auth/sign-in/form/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/auth/sign-up/form/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/auth/sso/buttons/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/auth/sso/callback/client/{mutation-api.js → mutation-api.server.js} +0 -0
- /package/dist/src/views/layouts/theme/header/user/auth/{log-out-mutation-api.js → log-out-mutation-api.server.js} +0 -0
package/cli.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../scripts/build.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,qBAavB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../scripts/dev.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,SAAS,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,SA8BjE,CAAC"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { VitNodeApiConfig, VitNodeConfig } from "../src/vitnode.config.js";
|
|
2
2
|
type ConfigType<T extends "api.config" | "config"> = T extends "config" ? VitNodeConfig : VitNodeApiConfig;
|
|
3
|
-
export declare
|
|
3
|
+
export declare function getConfig<T extends "api.config" | "config" = "config">(args: {
|
|
4
|
+
optional: true;
|
|
4
5
|
type?: T;
|
|
5
|
-
})
|
|
6
|
+
}): Promise<ConfigType<T> | null>;
|
|
7
|
+
export declare function getConfig<T extends "api.config" | "config" = "config">(args?: {
|
|
8
|
+
optional?: false;
|
|
9
|
+
type?: T;
|
|
10
|
+
}): Promise<ConfigType<T>>;
|
|
6
11
|
export {};
|
|
7
12
|
//# sourceMappingURL=get-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-config.d.ts","sourceRoot":"","sources":["../../scripts/get-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhF,KAAK,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,QAAQ,IAAI,CAAC,SAAS,QAAQ,GACnE,aAAa,GACb,gBAAgB,CAAC;AAoDrB,
|
|
1
|
+
{"version":3,"file":"get-config.d.ts","sourceRoot":"","sources":["../../scripts/get-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEhF,KAAK,UAAU,CAAC,CAAC,SAAS,YAAY,GAAG,QAAQ,IAAI,CAAC,SAAS,QAAQ,GACnE,aAAa,GACb,gBAAgB,CAAC;AAoDrB,wBAAsB,SAAS,CAC7B,CAAC,SAAS,YAAY,GAAG,QAAQ,GAAG,QAAQ,EAC5C,IAAI,EAAE;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACrE,wBAAsB,SAAS,CAC7B,CAAC,SAAS,YAAY,GAAG,QAAQ,GAAG,QAAQ,EAC5C,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-check.d.ts","sourceRoot":"","sources":["../../scripts/i18n-check.ts"],"names":[],"mappings":"AAmEA,eAAO,MAAM,SAAS,GAAU,OAAO,MAAM,mBAwJ5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../scripts/plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../scripts/plugin.ts"],"names":[],"mappings":"AAsTA,eAAO,MAAM,aAAa,GAAI,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,SA6DrE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-database.d.ts","sourceRoot":"","sources":["../../scripts/prepare-database.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepare-database.d.ts","sourceRoot":"","sources":["../../scripts/prepare-database.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,0BAA0B,qBAQtC,CAAC;AAqEF,eAAO,MAAM,aAAa,qBA4CzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBA6HlC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,wBAGnC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,mBA+DA,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepare-plugins-files.d.ts","sourceRoot":"","sources":["../../scripts/prepare-plugins-files.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepare-plugins-files.d.ts","sourceRoot":"","sources":["../../scripts/prepare-plugins-files.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mBAAmB,GAAU,OAAO,MAAM,kBAmRtD,CAAC"}
|
package/dist/scripts/scripts.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
3
|
const require = createRequire(import.meta.url);
|
|
4
4
|
|
|
5
|
-
import{config as rr}from"dotenv";import{EventEmitter as ns}from"events";import{stat as os}from"fs";import{readdir as as,stat as cs}from"fs/promises";import*as h from"path";import{lstat as Oe,readdir as At,realpath as Tt,stat as Ct}from"fs/promises";import{join as Ft,relative as kt,resolve as He,sep as Wt}from"path";import{Readable as Lt}from"stream";var v={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},De={root:".",fileFilter:t=>!0,directoryFilter:t=>!0,type:v.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(De);var Ge="READDIRP_RECURSIVE_ERROR",$t=new Set(["ENOENT","EPERM","EACCES","ELOOP",Ge]),Ye=[v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE],jt=new Set([v.DIR_TYPE,v.EVERYTHING_TYPE,v.FILE_DIR_TYPE]),Mt=new Set([v.EVERYTHING_TYPE,v.FILE_DIR_TYPE,v.FILE_TYPE]),zt=t=>$t.has(t.code),Ot=process.platform==="win32",Ue=t=>!0,Ke=t=>{if(t===void 0)return Ue;if(typeof t=="function")return t;if(typeof t=="string"){let e=t.trim();return s=>s.basename===e}if(Array.isArray(t)){let e=t.map(s=>s.trim());return s=>e.some(i=>s.basename===i)}return Ue},Ee=class extends Lt{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(e={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:e.highWaterMark});let s={...De,...e},{root:i,type:r}=s;this._fileFilter=Ke(s.fileFilter),this._directoryFilter=Ke(s.directoryFilter);let n=s.lstat?Oe:Ct;Ot?this._stat=a=>n(a,{bigint:!0}):this._stat=n,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:De.depth,this._wantsDir=r?jt.has(r):!1,this._wantsFile=r?Mt.has(r):!1,this._wantsEverything=r===v.EVERYTHING_TYPE,this._root=He(i),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(i,1)],this.reading=!1,this.parent=void 0}async _read(e){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&e>0;){let s=this.parent,i=s&&s.files;if(i&&i.length>0){let{path:r,depth:n}=s,a=i.splice(0,e).map(c=>this._formatEntry(c,r)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,n+1)),this._wantsDir&&(this.push(c),e--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),e--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(e,s){let i;try{i=await At(e,this._rdOptions)}catch(r){this._onError(r)}return{files:i,depth:s,path:e}}async _formatEntry(e,s){let i,r=this._isDirent?e.name:e;try{let n=He(Ft(s,r));i={path:kt(this._root,n),fullPath:n,basename:r},i[this._statsProp]=this._isDirent?e:await this._stat(n)}catch(n){this._onError(n);return}return i}_onError(e){zt(e)&&!this.destroyed?this.emit("warn",e):this.destroy(e)}async _getEntryType(e){if(!e&&this._statsProp in e)return"";let s=e[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let i=e.fullPath;try{let r=await Tt(i),n=await Oe(r);if(n.isFile())return"file";if(n.isDirectory()){let a=r.length;if(i.startsWith(r)&&i.substr(a,1)===Wt){let o=new Error(`Circular symlink detected: "${i}" points to "${r}"`);return o.code=Ge,this._onError(o)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(e){let s=e&&e[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function Ve(t,e={}){let s=e.entryType||e.type;if(s==="both"&&(s=v.FILE_DIR_TYPE),s&&(e.type=s),t){if(typeof t!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!Ye.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${Ye.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return e.root=t,new Ee(e)}import{watch as Ht,unwatchFile as qe,watchFile as Yt}from"fs";import{realpath as ve,lstat as Ut,open as Kt,stat as Je}from"fs/promises";import{type as Gt}from"os";import*as y from"path";var Vt="data",Pe="end",Qe="close",re=()=>{};var ie=process.platform,Re=ie==="win32",qt=ie==="darwin",Bt=ie==="linux",Jt=ie==="freebsd",Xe=Gt()==="OS400",b={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},R=b,Qt="watch",Xt={lstat:Ut,stat:Je},k="listeners",Z="errHandlers",$="rawEmitters",Zt=[k,Z,$],es=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),ts=t=>es.has(y.extname(t).slice(1).toLowerCase()),Ne=(t,e)=>{t instanceof Set?t.forEach(e):e(t)},H=(t,e,s)=>{let i=t[e];i instanceof Set||(t[e]=i=new Set([i])),i.add(s)},ss=t=>e=>{let s=t[e];s instanceof Set?s.clear():delete t[e]},Y=(t,e,s)=>{let i=t[e];i instanceof Set?i.delete(s):i===s&&delete t[e]},Ze=t=>t instanceof Set?t.size===0:!t,ee=new Map;function Be(t,e,s,i,r){let n=(a,o)=>{s(t),r(a,o,{watchedPath:t}),o&&t!==o&&te(y.resolve(t,o),k,y.join(t,o))};try{return Ht(t,{persistent:e.persistent},n)}catch(a){i(a);return}}var te=(t,e,s,i,r)=>{let n=ee.get(t);n&&Ne(n[e],a=>{a(s,i,r)})},rs=(t,e,s,i)=>{let{listener:r,errHandler:n,rawEmitter:a}=i,o=ee.get(e),c;if(!s.persistent)return c=Be(t,s,r,n,a),c?c.close.bind(c):void 0;if(o)H(o,k,r),H(o,Z,n),H(o,$,a);else{if(c=Be(t,s,te.bind(null,e,k),n,te.bind(null,e,$)),!c)return;c.on(R.ERROR,async l=>{let u=te.bind(null,e,Z);if(o&&(o.watcherUnusable=!0),Re&&l.code==="EPERM")try{await(await Kt(t,"r")).close(),u(l)}catch{}else u(l)}),o={listeners:r,errHandlers:n,rawEmitters:a,watcher:c},ee.set(e,o)}return()=>{Y(o,k,r),Y(o,Z,n),Y(o,$,a),Ze(o.listeners)&&(o.watcher.close(),ee.delete(e),Zt.forEach(ss(o)),o.watcher=void 0,Object.freeze(o))}},Ie=new Map,is=(t,e,s,i)=>{let{listener:r,rawEmitter:n}=i,a=Ie.get(e),o=a&&a.options;return o&&(o.persistent<s.persistent||o.interval>s.interval)&&(qe(e),a=void 0),a?(H(a,k,r),H(a,$,n)):(a={listeners:r,rawEmitters:n,options:s,watcher:Yt(e,s,(c,l)=>{Ne(a.rawEmitters,f=>{f(R.CHANGE,e,{curr:c,prev:l})});let u=c.mtimeMs;(c.size!==l.size||u>l.mtimeMs||u===0)&&Ne(a.listeners,f=>f(t,c))})},Ie.set(e,a)),()=>{Y(a,k,r),Y(a,$,n),Ze(a.listeners)&&(Ie.delete(e),qe(e),a.options=a.watcher=void 0,Object.freeze(a))}},se=class{fsw;_boundHandleError;constructor(e){this.fsw=e,this._boundHandleError=s=>e._handleError(s)}_watchWithNodeFs(e,s){let i=this.fsw.options,r=y.dirname(e),n=y.basename(e);this.fsw._getWatchedDir(r).add(n);let o=y.resolve(e),c={persistent:i.persistent};s||(s=re);let l;if(i.usePolling){let u=i.interval!==i.binaryInterval;c.interval=u&&ts(n)?i.binaryInterval:i.interval,l=is(e,o,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else l=rs(e,o,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(e,s,i){if(this.fsw.closed)return;let r=y.dirname(e),n=y.basename(e),a=this.fsw._getWatchedDir(r),o=s;if(a.has(n))return;let c=async(u,f)=>{if(this.fsw._throttle(Qt,e,5)){if(!f||f.mtimeMs===0)try{let d=await Je(e);if(this.fsw.closed)return;let g=d.atimeMs,w=d.mtimeMs;if((!g||g<=w||w!==o.mtimeMs)&&this.fsw._emit(R.CHANGE,e,d),(qt||Bt||Jt)&&o.ino!==d.ino){this.fsw._closeFile(u),o=d;let I=this._watchWithNodeFs(e,c);I&&this.fsw._addPathCloser(u,I)}else o=d}catch{this.fsw._remove(r,n)}else if(a.has(n)){let d=f.atimeMs,g=f.mtimeMs;(!d||d<=g||g!==o.mtimeMs)&&this.fsw._emit(R.CHANGE,e,f),o=f}}},l=this._watchWithNodeFs(e,c);if(!(i&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(e)){if(!this.fsw._throttle(R.ADD,e,0))return;this.fsw._emit(R.ADD,e,s)}return l}async _handleSymlink(e,s,i,r){if(this.fsw.closed)return;let n=e.fullPath,a=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await ve(i)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(n)!==o&&(this.fsw._symlinkPaths.set(n,o),this.fsw._emit(R.CHANGE,i,e.stats)):(a.add(r),this.fsw._symlinkPaths.set(n,o),this.fsw._emit(R.ADD,i,e.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(n))return!0;this.fsw._symlinkPaths.set(n,!0)}_handleRead(e,s,i,r,n,a,o){e=y.join(e,"");let c=r?`${e}:${r}`:e;if(o=this.fsw._throttle("readdir",c,1e3),!o)return;let l=this.fsw._getWatchedDir(i.path),u=new Set,f=this.fsw._readdirp(e,{fileFilter:d=>i.filterPath(d),directoryFilter:d=>i.filterDir(d)});if(f)return f.on(Vt,async d=>{if(this.fsw.closed){f=void 0;return}let g=d.path,w=y.join(e,g);if(u.add(g),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,e,w,g))){if(this.fsw.closed){f=void 0;return}(g===r||!r&&!l.has(g))&&(this.fsw._incrReadyCount(),w=y.join(n,y.relative(n,w)),this._addToNodeFs(w,s,i,a+1))}}).on(R.ERROR,this._boundHandleError),new Promise((d,g)=>{if(!f)return g();f.once(Pe,()=>{if(this.fsw.closed){f=void 0;return}let w=o?o.clear():!1;d(void 0),l.getChildren().filter(I=>I!==e&&!u.has(I)).forEach(I=>{this.fsw._remove(e,I)}),f=void 0,w&&this._handleRead(e,!1,i,r,n,a,o)})})}async _handleDir(e,s,i,r,n,a,o){let c=this.fsw._getWatchedDir(y.dirname(e)),l=c.has(y.basename(e));!(i&&this.fsw.options.ignoreInitial)&&!n&&!l&&this.fsw._emit(R.ADD_DIR,e,s),c.add(y.basename(e)),this.fsw._getWatchedDir(e);let u,f,d=this.fsw.options.depth;if((d==null||r<=d)&&!this.fsw._symlinkPaths.has(o)){if(!n&&(await this._handleRead(e,i,a,n,e,r,u),this.fsw.closed))return;f=this._watchWithNodeFs(e,(g,w)=>{w&&w.mtimeMs===0||this._handleRead(g,!1,a,n,e,r,u)})}return f}async _addToNodeFs(e,s,i,r,n){let a=this.fsw._emitReady;if(this.fsw._isIgnored(e)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(e);i&&(o.filterPath=c=>i.filterPath(c),o.filterDir=c=>i.filterDir(c));try{let c=await Xt[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,u;if(c.isDirectory()){let f=y.resolve(e),d=l?await ve(e):e;if(this.fsw.closed||(u=await this._handleDir(o.watchPath,c,s,r,n,o,d),this.fsw.closed))return;f!==d&&d!==void 0&&this.fsw._symlinkPaths.set(f,d)}else if(c.isSymbolicLink()){let f=l?await ve(e):e;if(this.fsw.closed)return;let d=y.dirname(o.watchPath);if(this.fsw._getWatchedDir(d).add(o.watchPath),this.fsw._emit(R.ADD,o.watchPath,c),u=await this._handleDir(d,c,s,r,e,o,f),this.fsw.closed)return;f!==void 0&&this.fsw._symlinkPaths.set(y.resolve(e),f)}else u=this._handleFile(o.watchPath,c,s);return a(),u&&this.fsw._addPathCloser(e,u),!1}catch(c){if(this.fsw._handleError(c))return a(),e}}};var Se="/",ls="//",it=".",ds="..",us="string",fs=/\\/g,nt=/\/\//g,ps=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,ms=/^\.[/\\]/;function ne(t){return Array.isArray(t)?t:[t]}var Ae=t=>typeof t=="object"&&t!==null&&!(t instanceof RegExp);function hs(t){return typeof t=="function"?t:typeof t=="string"?e=>t===e:t instanceof RegExp?e=>t.test(e):typeof t=="object"&&t!==null?e=>{if(t.path===e)return!0;if(t.recursive){let s=h.relative(t.path,e);return s?!s.startsWith("..")&&!h.isAbsolute(s):!1}return!1}:()=>!1}function _s(t){if(typeof t!="string")throw new Error("string expected");t=h.normalize(t),t=t.replace(/\\/g,"/");let e=!1;return t.startsWith("//")&&(e=!0),t=t.replace(nt,"/"),e&&(t="/"+t),t}function et(t,e,s){let i=_s(e);for(let r=0;r<t.length;r++){let n=t[r];if(n(i,s))return!0}return!1}function gs(t,e){if(t==null)throw new TypeError("anymatch: specify first argument");let i=ne(t).map(r=>hs(r));return e==null?(r,n)=>et(i,r,n):et(i,e)}var tt=t=>{let e=ne(t).flat();if(!e.every(s=>typeof s===us))throw new TypeError(`Non-string provided as watch path: ${e}`);return e.map(ot)},st=t=>{let e=t.replace(fs,Se),s=!1;return e.startsWith(ls)&&(s=!0),e=e.replace(nt,Se),s&&(e=Se+e),e},ot=t=>st(h.normalize(st(t))),rt=(t="")=>e=>typeof e=="string"?ot(h.isAbsolute(e)?e:h.join(t,e)):e,ws=(t,e)=>h.isAbsolute(t)?t:h.join(e,t),ys=Object.freeze(new Set),Te=class{path;_removeWatcher;items;constructor(e,s){this.path=e,this._removeWatcher=s,this.items=new Set}add(e){let{items:s}=this;s&&e!==it&&e!==ds&&s.add(e)}async remove(e){let{items:s}=this;if(!s||(s.delete(e),s.size>0))return;let i=this.path;try{await as(i)}catch{this._removeWatcher&&this._removeWatcher(h.dirname(i),h.basename(i))}}has(e){let{items:s}=this;if(s)return s.has(e)}getChildren(){let{items:e}=this;return e?[...e.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=re,this.items=ys,Object.freeze(this)}},bs="stat",xs="lstat",Ce=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(e,s,i){this.fsw=i;let r=e;this.path=e=e.replace(ms,""),this.watchPath=r,this.fullWatchPath=h.resolve(r),this.dirParts=[],this.dirParts.forEach(n=>{n.length>1&&n.pop()}),this.followSymlinks=s,this.statMethod=s?bs:xs}entryPath(e){return h.join(this.watchPath,h.relative(this.watchPath,e.fullPath))}filterPath(e){let{stats:s}=e;if(s&&s.isSymbolicLink())return this.filterDir(e);let i=this.entryPath(e);return this.fsw._isntIgnored(i,s)&&this.fsw._hasReadPermissions(s)}filterDir(e){return this.fsw._isntIgnored(this.entryPath(e),e.stats)}},oe=class extends ns{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(e={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=e.awaitWriteFinish,i={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...e,ignored:e.ignored?ne(e.ignored):ne([]),awaitWriteFinish:s===!0?i:typeof s=="object"?{...i,...s}:!1};Xe&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let n=process.env.CHOKIDAR_USEPOLLING;if(n!==void 0){let c=n.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=re,this._readyEmitted=!0,process.nextTick(()=>this.emit(b.READY)))},this._emitRaw=(...c)=>this.emit(b.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new se(this),Object.freeze(r)}_addIgnoredPath(e){if(Ae(e)){for(let s of this._ignoredPaths)if(Ae(s)&&s.path===e.path&&s.recursive===e.recursive)return}this._ignoredPaths.add(e)}_removeIgnoredPath(e){if(this._ignoredPaths.delete(e),typeof e=="string")for(let s of this._ignoredPaths)Ae(s)&&s.path===e&&this._ignoredPaths.delete(s)}add(e,s,i){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let n=tt(e);return r&&(n=n.map(a=>ws(a,r))),n.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=n.length,Promise.all(n.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!i,void 0,0,s);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(h.dirname(o),h.basename(s||o))})}),this}unwatch(e){if(this.closed)return this;let s=tt(e),{cwd:i}=this.options;return s.forEach(r=>{!h.isAbsolute(r)&&!this._closers.has(r)&&(i&&(r=h.join(i,r)),r=h.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let e=[];return this._closers.forEach(s=>s.forEach(i=>{let r=i();r instanceof Promise&&e.push(r)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=e.length?Promise.all(e).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let e={};return this._watched.forEach((s,i)=>{let n=(this.options.cwd?h.relative(this.options.cwd,i):i)||it;e[n]=s.getChildren().sort()}),e}emitWithAll(e,s){this.emit(e,...s),e!==b.ERROR&&this.emit(b.ALL,e,...s)}async _emit(e,s,i){if(this.closed)return;let r=this.options;Re&&(s=h.normalize(s)),r.cwd&&(s=h.relative(r.cwd,s));let n=[s];i!=null&&n.push(i);let a=r.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(s)))return o.lastChange=new Date,this;if(r.atomic){if(e===b.UNLINK)return this._pendingUnlinks.set(s,[e,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(b.ALL,...c),this._pendingUnlinks.delete(l)})},typeof r.atomic=="number"?r.atomic:100),this;e===b.ADD&&this._pendingUnlinks.has(s)&&(e=b.CHANGE,this._pendingUnlinks.delete(s))}if(a&&(e===b.ADD||e===b.CHANGE)&&this._readyEmitted){let c=(l,u)=>{l?(e=b.ERROR,n[0]=l,this.emitWithAll(e,n)):u&&(n.length>1?n[1]=u:n.push(u),this.emitWithAll(e,n))};return this._awaitWriteFinish(s,a.stabilityThreshold,e,c),this}if(e===b.CHANGE&&!this._throttle(b.CHANGE,s,50))return this;if(r.alwaysStat&&i===void 0&&(e===b.ADD||e===b.ADD_DIR||e===b.CHANGE)){let c=r.cwd?h.join(r.cwd,s):s,l;try{l=await cs(c)}catch{}if(!l||this.closed)return;n.push(l)}return this.emitWithAll(e,n),this}_handleError(e){let s=e&&e.code;return e&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(b.ERROR,e),e||this.closed}_throttle(e,s,i){this._throttled.has(e)||this._throttled.set(e,new Map);let r=this._throttled.get(e);if(!r)throw new Error("invalid throttle");let n=r.get(s);if(n)return n.count++,!1;let a,o=()=>{let l=r.get(s),u=l?l.count:0;return r.delete(s),clearTimeout(a),l&&clearTimeout(l.timeoutObject),u};a=setTimeout(o,i);let c={timeoutObject:a,clear:o,count:0};return r.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(e,s,i,r){let n=this.options.awaitWriteFinish;if(typeof n!="object")return;let a=n.pollInterval,o,c=e;this.options.cwd&&!h.isAbsolute(e)&&(c=h.join(this.options.cwd,e));let l=new Date,u=this._pendingWrites;function f(d){os(c,(g,w)=>{if(g||!u.has(e)){g&&g.code!=="ENOENT"&&r(g);return}let I=Number(new Date);d&&w.size!==d.size&&(u.get(e).lastChange=I);let O=u.get(e);I-O.lastChange>=s?(u.delete(e),r(void 0,w)):o=setTimeout(f,a,w)})}u.has(e)||(u.set(e,{lastChange:l,cancelWait:()=>(u.delete(e),clearTimeout(o),i)}),o=setTimeout(f,a))}_isIgnored(e,s){if(this.options.atomic&&ps.test(e))return!0;if(!this._userIgnored){let{cwd:i}=this.options,n=(this.options.ignored||[]).map(rt(i)),o=[...[...this._ignoredPaths].map(rt(i)),...n];this._userIgnored=gs(o,void 0)}return this._userIgnored(e,s)}_isntIgnored(e,s){return!this._isIgnored(e,s)}_getWatchHelpers(e){return new Ce(e,this.options.followSymlinks,this)}_getWatchedDir(e){let s=h.resolve(e);return this._watched.has(s)||this._watched.set(s,new Te(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(e){return this.options.ignorePermissionErrors?!0:!!(Number(e.mode)&256)}_remove(e,s,i){let r=h.join(e,s),n=h.resolve(r);if(i=i??(this._watched.has(r)||this._watched.has(n)),!this._throttle("remove",r,100))return;!i&&this._watched.size===1&&this.add(e,s,!0),this._getWatchedDir(r).getChildren().forEach(d=>this._remove(r,d));let c=this._getWatchedDir(e),l=c.has(s);c.remove(s),this._symlinkPaths.has(n)&&this._symlinkPaths.delete(n);let u=r;if(this.options.cwd&&(u=h.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(u)&&this._pendingWrites.get(u).cancelWait()===b.ADD)return;this._watched.delete(r),this._watched.delete(n);let f=i?b.UNLINK_DIR:b.UNLINK;l&&!this._isIgnored(r)&&this._emit(f,r),this._closePath(r)}_closePath(e){this._closeFile(e);let s=h.dirname(e);this._getWatchedDir(s).remove(h.basename(e))}_closeFile(e){let s=this._closers.get(e);s&&(s.forEach(i=>i()),this._closers.delete(e))}_addPathCloser(e,s){if(!s)return;let i=this._closers.get(e);i||(i=[],this._closers.set(e,i)),i.push(s)}_readdirp(e,s){if(this.closed)return;let i={type:b.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},r=Ve(e,i);return this._streams.add(r),r.once(Qe,()=>{r=void 0}),r.once(Pe,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};function Ds(t,e={}){let s=new oe(e);return s.add(t),s}var at={watch:Ds,FSWatcher:oe};import{existsSync as C,mkdirSync as ks,readdirSync as Ws,readFileSync as Ls,unlinkSync as $s}from"fs";import{basename as mt,join as m,relative as js}from"path";import{copyFileSync as Es,existsSync as N,mkdirSync as vs,readdirSync as ke,readFileSync as Is,writeFileSync as Ns}from"fs";import{basename as ct,dirname as dt,extname as Ps,join as S,normalize as Rs,relative as W,resolve as lt,sep as Ss}from"path";var As=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,Ts=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,Cs=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,ae=/\.(js|jsx|ts|tsx)$/,Fe=/^page\.(tsx|ts|jsx|js)$/i,U=(t,e)=>{let i=W(e,t).split(Ss);i.pop();let r=i.filter(n=>!n.startsWith("("));return Rs(r.join("/"))},ce=t=>{let e=new Map,s=i=>{if(N(i))for(let r of ke(i,{withFileTypes:!0})){let n=S(i,r.name);if(r.isDirectory()){s(n);continue}if(Fe.test(r.name)){let a=U(n,t);e.set(a,n)}}};return s(t),e},Fs=(t,e)=>{let s=t.replace(As,(i,r)=>{if(r.startsWith(".")){let a=r.replace(ae,"").replace(/^(?:\.\.\/)+/,"");return i.replace(r,`${e}/${a}`)}return i});return s=s.replace(Ts,(i,r)=>{let n=r.replace(/^@\//,"").replace(ae,"");return i.replace(r,`${e}/${n}`)}),s=s.replace(Cs,(i,r)=>{let n=r.replace(/^@\//,"").replace(ae,"");return i.replace(r,`${e}/${n}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(i,r)=>{let n=r.replace(/^@\//,"").replace(ae,"");return i.replace(r,`${e}/${n}`)}),s};function le(t){let e=t;for(;e!==lt(e,"..");){let i=S(e,"turbo.json");if(N(i))return e;e=lt(e,"..")}let s=S(t,"package.json");if(N(s))return t;throw new Error("\u274C Could not locate project root")}function de(t){let e=S(t,"src","app","[locale]");if(N(e))return e;let i=(n=>{let a=[];if(!N(n))return a;let o=(c,l=0)=>{if(!(l>4))try{let u=ke(c,{withFileTypes:!0});for(let f of u){if(!f.isDirectory())continue;let d=S(c,f.name);if(f.name==="[locale]"&&dt(d).endsWith(S("src","app"))){a.push(d);continue}o(d,l+1)}}catch{}};return o(n),a})(t);return i.length>0?i[0]:S(t,"apps","docs","src","app","[locale]")}var ue=t=>{let e=[];if(!N(t))return e;let s=ke(t,{withFileTypes:!0});for(let i of s){let r=S(t,i.name);i.isDirectory()?e.push(...ue(r)):e.push(r)}return e},K=t=>N(t)?ue(t).length===0:!0,We=(t,e,s,i,r,n,a=!0)=>{let o=ct(t);if(Fe.test(o)){let c=U(e,r),l=i.get(c);if(l&&l!==e){a&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${W(n,e)} (collides with ${W(n,l)})`);return}}try{let c=dt(e);N(c)||vs(c,{recursive:!0});let l=Ps(t);if(s&&[".js",".jsx",".ts",".tsx"].includes(l)){let u=Is(t,"utf-8"),f=Fs(u,s);Ns(e,f)}else Es(t,e);if(a){let u=t.indexOf(S("src","app")),f;u!==-1?f=t.substring(u):t.startsWith(n)?f=W(n,t):f=t;let d=e.startsWith(n)?W(n,e):e;console.log(`\x1B[32mCopied:\x1B[0m ${f} \u2192 ${d}`)}if(Fe.test(ct(e))){let u=U(e,r);i.set(u,e)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${t}`,c)}},ut=(t,e,s)=>{if(!N(t)||!N(e)||e.replace(/\\/g,"/").includes("src/locales"))return;let r=ue(e);for(let n of r){let a=W(e,n),o=S(t,a);N(o)||s(n)}},ft=(t,e,s,i,r,n,a=!0)=>{if(!N(t)||K(t))return;let o=ue(t);for(let c of o){let l=W(t,c),u=S(e,l);We(c,u,s,i,r,n,a)}};var pt=t=>{let e=C(m(t,"src","vitnode.config.ts"));return C(m(t,"src","vitnode.api.config.ts"))&&!e?"api":e?"web":null},Ms=(t,e,s,i)=>{let r=[],n=m(e,"apps");if(C(n)){let o=C(n)?Ws(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of o){let l=m(e,"apps",c),u=pt(l);u==="web"?r.push({sourceDir:m(t,"src","routes","admin"),destinationDir:m(l,"src","app","[locale]","admin","(auth)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","main"),destinationDir:m(l,"src","app","[locale]","(main)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","blank"),destinationDir:m(l,"src","app","[locale]","(blank)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","locales"),destinationDir:m(l,"src","locales",s)},{sourceDir:m(t,"src","routes","breadcrumb","admin"),destinationDir:m(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:m(t,"src","routes","breadcrumb","main"),destinationDir:m(l,"src","app","[locale]","(main)","@breadcrumb")}):u==="api"&&r.push({sourceDir:m(t,"src","locales"),destinationDir:m(l,"src","locales",s)})}}else{let o=process.cwd(),c=pt(o);c==="web"?r.push({sourceDir:m(t,"src","routes","admin"),destinationDir:m(o,"src","app","[locale]","admin","(auth)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","main"),destinationDir:m(o,"src","app","[locale]","(main)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","routes","blank"),destinationDir:m(o,"src","app","[locale]","(blank)",m("(plugins)",`(${i})`))},{sourceDir:m(t,"src","locales"),destinationDir:m(o,"src","locales",s)},{sourceDir:m(t,"src","routes","breadcrumb","admin"),destinationDir:m(o,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:m(t,"src","routes","breadcrumb","main"),destinationDir:m(o,"src","app","[locale]","(main)","@breadcrumb")}):c==="api"&&r.push({sourceDir:m(t,"src","locales"),destinationDir:m(o,"src","locales",s)})}return r},zs=t=>{for(let{sourceDir:e,destinationDir:s}of t)C(e)&&!K(e)&&!C(s)&&ks(s,{recursive:!0})},Os=(t,e,s,i)=>({copyFileWrapper:(a,o)=>{We(a,o,t,e,s,i)},removeFile:a=>{try{if(C(a)&&($s(a),console.log(`\x1B[33mRemoved:\x1B[0m ${a}`),/^page\.(tsx|ts|jsx|js)$/i.test(mt(a)))){let o=U(a,s);e.get(o)===a&&e.delete(o)}}catch(o){console.error(`\x1B[31mError removing file:\x1B[0m ${a}`,o)}}}),Hs=t=>e=>{let s=t.filter(({sourceDir:i})=>{let r=e.replace(/\\/g,"/"),n=i.replace(/\\/g,"/");return r===n||r.startsWith(`${n}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${e}`);return s.map(i=>{let r=js(i.sourceDir,e);return m(i.destinationDir,r)})},Ys=(t,e,s,i)=>{let r=at.watch(t,{ignoreInitial:!1,persistent:!0});return r.on("add",n=>{e(n).forEach(o=>s(n,o))}).on("change",n=>{e(n).forEach(o=>s(n,o))}).on("unlink",n=>{e(n).forEach(o=>i(o))}).on("error",n=>{console.error("\x1B[31mWatcher error:\x1B[0m",n)}),r},ht=({initMessage:t})=>{let e=process.cwd(),s=le(e),i=de(s),r=ce(i),n=mt(e);try{let d=m(e,"package.json");C(d)&&(n=JSON.parse(Ls(d,"utf-8")).name??"")}catch(d){console.error("\x1B[31mError reading package.json:\x1B[0m",d);return}let a=n.replace(/\//g,"-").replace(/@/g,""),o=Ms(e,s,n,a);zs(o);let{copyFileWrapper:c,removeFile:l}=Os(n,r,i,s);for(let{sourceDir:d,destinationDir:g}of o)ut(d,g,l);console.log(`${t} \x1B[34mWatching for changes in plugins...\x1B[0m`);let u=o.map(d=>d.sourceDir).filter(d=>C(d)),f=Hs(o);Ys(u,f,c,l)};import{count as It}from"drizzle-orm";import{relations as bt}from"drizzle-orm";import{index as _e,pgTable as xt}from"drizzle-orm/pg-core";import{pgTable as Us}from"drizzle-orm/pg-core";var x=Us("core_roles",t=>({id:t.serial().primaryKey(),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().$onUpdate(()=>new Date),protected:t.boolean().notNull().default(!1),default:t.boolean().notNull().default(!1),root:t.boolean().notNull().default(!1),guest:t.boolean().notNull().default(!1),color:t.varchar({length:19})})).enableRLS();import{relations as gt}from"drizzle-orm";import{index as wt,pgTable as yt}from"drizzle-orm/pg-core";import{relations as G}from"drizzle-orm";import{index as j,pgTable as V,primaryKey as Gs}from"drizzle-orm/pg-core";import{relations as Ks}from"drizzle-orm";import{index as Le,pgTable as _t}from"drizzle-orm/pg-core";var A=_t("core_languages",t=>({id:t.serial().primaryKey(),code:t.varchar({length:32}).notNull().unique(),name:t.varchar({length:255}).notNull(),timezone:t.varchar({length:255}).notNull().default("UTC"),protected:t.boolean().notNull().default(!1),default:t.boolean().notNull().default(!1),enabled:t.boolean().notNull().default(!0),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:t.boolean().notNull().default(!1)}),t=>[Le("core_languages_code_idx").on(t.code),Le("core_languages_name_idx").on(t.name)]).enableRLS(),fe=_t("core_languages_words",t=>({id:t.serial().primaryKey(),languageCode:t.varchar().notNull().references(()=>A.code,{onDelete:"cascade"}),pluginCode:t.varchar({length:50}).notNull(),itemId:t.integer().notNull(),value:t.text().notNull(),tableName:t.varchar({length:255}).notNull(),variable:t.varchar({length:255}).notNull()}),t=>[Le("core_languages_words_lang_code_idx").on(t.languageCode)]).enableRLS(),Cr=Ks(fe,({one:t})=>({language:t(A,{fields:[fe.languageCode],references:[A.code]})}));var _=V("core_users",t=>({id:t.serial().primaryKey(),nameCode:t.varchar({length:255}).notNull().unique(),name:t.varchar({length:255}).notNull().unique(),email:t.varchar({length:255}).notNull().unique(),password:t.varchar(),createdAt:t.timestamp().notNull().defaultNow(),newsletter:t.boolean().notNull().default(!1),avatarColor:t.varchar({length:6}).notNull(),emailVerified:t.boolean().notNull().default(!1),roleId:t.integer().references(()=>x.id).notNull(),birthday:t.timestamp(),ipAddress:t.varchar({length:40}).notNull(),language:t.varchar({length:32}).notNull().default("en").references(()=>A.code,{onDelete:"set default"})}),t=>[j("core_users_name_code_idx").on(t.nameCode),j("core_users_name_idx").on(t.name),j("core_users_email_idx").on(t.email)]).enableRLS(),jr=G(_,({one:t,many:e})=>({group:t(x,{fields:[_.roleId],references:[x.id]}),secondary_roles:e(pe),language:t(A,{fields:[_.language],references:[A.code]}),confirm_email:t(me,{fields:[_.id],references:[me.userId]}),sso:e($e),forgot_password:t(he,{fields:[_.id],references:[he.userId]})})),pe=V("core_users_secondary_roles",t=>({userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull(),roleId:t.integer().references(()=>x.id,{onDelete:"cascade"}).notNull(),createdAt:t.timestamp().notNull().defaultNow()}),t=>[Gs({columns:[t.userId,t.roleId]}),j("core_users_secondary_roles_user_id_idx").on(t.userId),j("core_users_secondary_roles_role_id_idx").on(t.roleId)]).enableRLS(),Mr=G(pe,({one:t})=>({user:t(_,{fields:[pe.userId],references:[_.id]}),role:t(x,{fields:[pe.roleId],references:[x.id]})})),$e=V("core_users_sso",t=>({userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull(),providerId:t.varchar({length:255}).notNull(),providerAccountId:t.varchar({length:255}).notNull(),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),t=>[j("core_users_sso_user_id_idx").on(t.userId)]).enableRLS(),zr=G($e,({one:t})=>({user:t(_,{fields:[$e.userId],references:[_.id]})})),me=V("core_users_confirm_emails",t=>({id:t.serial().primaryKey(),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull(),token:t.varchar({length:100}).notNull().unique(),createdAt:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull(),ipAddress:t.varchar({length:40}).notNull()})).enableRLS(),Or=G(me,({one:t})=>({user:t(_,{fields:[me.userId],references:[_.id]})})),he=V("core_users_forgot_password",t=>({id:t.serial().primaryKey(),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}).notNull().unique(),token:t.varchar({length:100}).notNull().unique(),ipAddress:t.varchar({length:40}).notNull(),createdAt:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull()})).enableRLS(),Hr=G(he,({one:t})=>({user:t(_,{fields:[he.userId],references:[_.id]})}));var q=yt("core_sessions",t=>({id:t.serial().primaryKey(),token:t.varchar({length:255}).notNull().unique(),userId:t.integer().notNull().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull(),deviceId:t.integer().references(()=>F.id,{onDelete:"cascade"}).notNull()}),t=>[wt("core_sessions_user_id_idx").on(t.userId)]).enableRLS(),Vr=gt(q,({one:t})=>({user:t(_,{fields:[q.userId],references:[_.id]}),device:t(F,{fields:[q.deviceId],references:[F.id]})})),F=yt("core_sessions_known_devices",t=>({id:t.serial().primaryKey(),publicId:t.varchar({length:32}).notNull().unique(),ipAddress:t.varchar({length:40}).notNull(),userAgent:t.text().notNull(),lastSeen:t.timestamp().notNull().defaultNow()}),t=>[wt("core_sessions_known_devices_ip_address_idx").on(t.ipAddress)]).enableRLS(),qr=gt(F,({one:t})=>({session:t(q,{fields:[F.id],references:[q.deviceId]})}));var B=xt("core_admin_permissions",t=>({id:t.serial().primaryKey(),roleId:t.integer().references(()=>x.id,{onDelete:"cascade"}),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:t.boolean().notNull().default(!1),data:t.jsonb().$type().notNull().default({unrestricted:!1,permissions:[]})}),t=>[_e("core_admin_permissions_role_id_idx").on(t.roleId),_e("core_admin_permissions_user_id_idx").on(t.userId)]).enableRLS(),ti=bt(B,({one:t})=>({group:t(x,{fields:[B.roleId],references:[x.id]}),user:t(_,{fields:[B.userId],references:[_.id]})})),je=xt("core_admin_sessions",t=>({id:t.serial().primaryKey(),token:t.varchar({length:255}).notNull().unique(),userId:t.integer().notNull().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),lastSeen:t.timestamp().notNull().defaultNow(),expiresAt:t.timestamp().notNull(),deviceId:t.integer().references(()=>F.id,{onDelete:"cascade"}).notNull()}),t=>[_e("core_admin_sessions_token_idx").on(t.token),_e("core_admin_sessions_user_id_idx").on(t.userId)]).enableRLS(),si=bt(je,({one:t})=>({user:t(_,{fields:[je.userId],references:[_.id]}),device:t(F,{fields:[je.deviceId],references:[F.id]})}));import{relations as Vs}from"drizzle-orm";import{index as Dt,pgTable as qs}from"drizzle-orm/pg-core";var J=qs("core_moderators_permissions",t=>({id:t.serial().primaryKey(),roleId:t.integer().references(()=>x.id,{onDelete:"cascade"}),userId:t.integer().references(()=>_.id,{onDelete:"cascade"}),createdAt:t.timestamp().notNull().defaultNow(),updatedAt:t.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:t.boolean().notNull().default(!1),data:t.jsonb().$type().notNull().default({unrestricted:!1,permissions:[]})}),t=>[Dt("core_moderators_permissions_role_id_idx").on(t.roleId),Dt("core_moderators_permissions_user_id_idx").on(t.userId)]).enableRLS(),ci=Vs(J,({one:t})=>({group:t(x,{fields:[J.roleId],references:[x.id]}),user:t(_,{fields:[J.userId],references:[_.id]})}));import{createJiti as Bs}from"jiti";import{existsSync as Js,readdirSync as Qs,statSync as Xs}from"fs";import{join as Et}from"path";var Zs=(t,e,s=4)=>{let i=(r,n)=>{if(n>s)return null;try{let a=Et(r,"src",e);if(Js(a))return a;let o=Qs(r);for(let c of o){if(c==="node_modules"||c.startsWith(".")||c==="dist"||c==="build"||c==="out")continue;let l=Et(r,c);try{if(Xs(l).isDirectory()){let u=i(l,n+1);if(u)return u}}catch{}}}catch{}return null};return i(t,0)},L=async({type:t="config"})=>{let e=process.cwd(),s=`vitnode.${t}.ts`,i=Zs(e,s);i||(console.error(`Config file not found: ${s}`),console.error(`Searched recursively in ${e} (excluding node_modules, .*, dist, build, out)`),process.exit(1));try{let r=t==="config"?"vitNodeConfig":"vitNodeApiConfig",o=(await Bs(import.meta.url,{interopDefault:!0}).import(i))[r];return o||(console.error(`Export "${r}" not found in ${i}`),process.exit(1)),o}catch(r){console.error("Failed to load config:",r),process.exit(1)}};import{existsSync as T,readdirSync as er}from"fs";import{readFile as tr}from"fs/promises";import{join as p,relative as vt}from"path";var M=async t=>{let e=process.cwd(),s=T(p(e,"src","vitnode.config.ts")),i=T(p(e,"src","vitnode.api.config.ts")),r;t==="--api"&&i?r=await L({type:"api.config"}):t==="--web"&&s?r=await L({}):i&&!s?r=await L({type:"api.config"}):s?r=await L({}):r={plugins:[]};let n=[...r.plugins.map(f=>f.pluginId),"@vitnode/core"],a=le(process.cwd()),o=de(a),c=ce(o),l=process.cwd(),u=f=>{let d=process.cwd(),g=p(d,"node_modules",f);if(T(g))return g;if(a&&a!==d){let w=p(a,"node_modules",f);if(T(w))return w}return null};await Promise.all(n.map(async f=>{let d=u(f);if(!d){console.error(`\x1B[31mPlugin not found:\x1B[0m ${f} in node_modules`);return}let g="";try{let D=p(d,"package.json");T(D)&&(g=JSON.parse(await tr(D,"utf-8")).name??"")}catch(D){console.error(`\x1B[31mError reading package.json for ${f}:\x1B[0m`,D);return}let w=f.replace(/\//g,"-").replace(/@/g,""),I=D=>{let E=T(p(D,"src","vitnode.config.ts"));return T(p(D,"src","vitnode.api.config.ts"))&&!E?"api":E?"web":null},O=p(a,"apps"),Me=T(O),X=[];if(Me){let D=T(O)?er(O,{withFileTypes:!0}).filter(E=>E.isDirectory()).map(E=>E.name):[];for(let E of D){let P=p(a,"apps",E),ze=I(P);if(ze==="web"){let xe=p(P,"src","app","[locale]","(main)",p("(plugins)",`(${w})`)),Rt=p(P,"src","app","[locale]","admin","(auth)",p("(plugins)",`(${w})`)),St=p(P,"src","locales",f);X.push({sourceDir:p(d,"src","routes","admin"),destinationDir:Rt},{sourceDir:p(d,"src","routes","main"),destinationDir:xe},{sourceDir:p(d,"src","routes","blank"),destinationDir:p(P,"src","app","[locale]","(blank)",p("(plugins)",`(${w})`))},{sourceDir:p(d,"src","locales"),destinationDir:St},{sourceDir:p(d,"src","routes","breadcrumb","admin"),destinationDir:p(P,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:p(d,"src","routes","breadcrumb","main"),destinationDir:p(P,"src","app","[locale]","(main)","@breadcrumb")})}else if(ze==="api"){let xe=p(P,"src","locales",f);X.push({sourceDir:p(d,"src","locales"),destinationDir:xe})}}}else{let D=p(l,"src","app","[locale]","(main)",p("(plugins)",`(${w})`)),E=p(l,"src","app","[locale]","admin","(auth)",p("(plugins)",`(${w})`)),P=p(l,"src","locales",f);X.push({sourceDir:p(d,"src","routes","admin"),destinationDir:E},{sourceDir:p(d,"src","routes","main"),destinationDir:D},{sourceDir:p(d,"src","routes","blank"),destinationDir:p(l,"src","app","[locale]","(blank)",p("(plugins)",`(${w})`))},{sourceDir:p(d,"src","locales"),destinationDir:P},{sourceDir:p(d,"src","routes","breadcrumb","admin"),destinationDir:p(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:p(d,"src","routes","breadcrumb","main"),destinationDir:p(l,"src","app","[locale]","(main)","@breadcrumb")})}for(let{sourceDir:D,destinationDir:E}of X)T(D)&&!K(D)&&(console.log(`\x1B[36mCopying ${f}:\x1B[0m ${vt(a,D)} \u2192 ${vt(a,E)}`),ft(D,E,g,c,o,a,!1))}))};import{spawn as sr}from"child_process";var ge=async(t,e=[])=>await new Promise((s,i)=>{let r=sr(t,e,{stdio:"inherit",shell:!0,env:process.env});r.on("error",n=>{i(n)}),r.on("close",n=>{n!==0?i(new Error(`Command failed with exit code ${n}`)):s(!0)})});var we=async()=>{try{await ge("npm",["run","drizzle-kit","up"]),await ge("npm",["run","drizzle-kit","generate"])}catch(t){console.error("\x1B[31m%s\x1B[0m",t),process.exit(1)}},ye=async()=>{try{await ge("npm",["run","drizzle-kit","migrate"])}catch(t){console.error("\x1B[31m%s\x1B[0m",t),process.exit(1)}},be=async()=>{let e=(await L({type:"api.config"})).dbProvider,[s]=await e.select({count:It()}).from(x).limit(1),[i]=await e.select({count:It()}).from(A);if(i.count===0&&await e.insert(A).values([{code:"en",name:"English (USA)",default:!0,protected:!0,timezone:"America/New_York"}]),s.count===0){let r=await e.insert(x).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)"},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)"}]).returning({id:x.id});await e.insert(fe).values([{languageCode:"en",pluginCode:"core",itemId:r[0].id,value:"Guest",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[1].id,value:"Member",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[2].id,value:"Moderator",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[3].id,value:"Administrator",tableName:"core_roles",variable:"name"}]),await e.insert(J).values([{roleId:r[2].id,protected:!0,data:{unrestricted:!0,permissions:[]}},{roleId:r[3].id,protected:!0,data:{unrestricted:!0,permissions:[]}}]),await e.insert(B).values({roleId:r[3].id,protected:!0,data:{unrestricted:!0,permissions:[]}})}},Nt=async({initMessage:t,flag:e})=>{let s=[];e==="--web"?s.push({label:"Prepare plugins files...",action:async()=>await M(e)}):e==="--api"?s.push({label:"Prepare plugins files...",action:async()=>await M(e)},{label:"Generate migrations...",action:we},{label:"Run migrations...",action:ye},{label:"Insert initial data...",action:be}):s.push({label:"Prepare plugins files...",action:async()=>await M(e)},{label:"Generate migrations...",action:we},{label:"Run migrations...",action:ye},{label:"Insert initial data...",action:be});for(let i=0;i<s.length;i++){let r=s[i],n=`[${i+1}/${s.length}]`;r.label==="Insert initial data..."?console.log(`
|
|
6
|
-
${
|
|
5
|
+
import{config as Mr}from"dotenv";import{spawn as qt}from"child_process";var z=async(e,t=[])=>await new Promise((s,r)=>{let i=qt(e,t,{stdio:"inherit",shell:!0,env:process.env});i.on("error",n=>{r(n)}),i.on("close",n=>{n!==0?r(new Error(`Command failed with exit code ${n}`)):s(!0)})});var Ze=async()=>{await z("tsc",["-p","tsconfig.build.json"]),await z("swc",["src","-d","dist","--config-file",".swcrc","--copy-files"]),await z("tsc-alias",["-p","tsconfig.build.json"])};import{spawn as lr}from"child_process";import{EventEmitter as Ds}from"events";import{stat as Ns}from"fs";import{readdir as Is,stat as Ps}from"fs/promises";import*as p from"path";import{lstat as et,readdir as Bt,realpath as Jt,stat as Xt}from"fs/promises";import{join as Qt,relative as Zt,resolve as tt,sep as es}from"path";import{Readable as ts}from"stream";var P={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Ce={root:".",fileFilter:e=>!0,directoryFilter:e=>!0,type:P.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Ce);var nt="READDIRP_RECURSIVE_ERROR",ss=new Set(["ENOENT","EPERM","EACCES","ELOOP",nt]),st=[P.DIR_TYPE,P.EVERYTHING_TYPE,P.FILE_DIR_TYPE,P.FILE_TYPE],rs=new Set([P.DIR_TYPE,P.EVERYTHING_TYPE,P.FILE_DIR_TYPE]),is=new Set([P.EVERYTHING_TYPE,P.FILE_DIR_TYPE,P.FILE_TYPE]),ns=e=>ss.has(e.code),os=process.platform==="win32",rt=e=>!0,it=e=>{if(e===void 0)return rt;if(typeof e=="function")return e;if(typeof e=="string"){let t=e.trim();return s=>s.basename===t}if(Array.isArray(e)){let t=e.map(s=>s.trim());return s=>t.some(r=>s.basename===r)}return rt},Ae=class extends ts{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let s={...Ce,...t},{root:r,type:i}=s;this._fileFilter=it(s.fileFilter),this._directoryFilter=it(s.directoryFilter);let n=s.lstat?et:Xt;os?this._stat=a=>n(a,{bigint:!0}):this._stat=n,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:Ce.depth,this._wantsDir=i?rs.has(i):!1,this._wantsFile=i?is.has(i):!1,this._wantsEverything=i===P.EVERYTHING_TYPE,this._root=tt(r),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(r,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let s=this.parent,r=s&&s.files;if(r&&r.length>0){let{path:i,depth:n}=s,a=r.splice(0,t).map(c=>this._formatEntry(c,i)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,n+1)),this._wantsDir&&(this.push(c),t--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let i=this.parents.pop();if(!i){this.push(null);break}if(this.parent=await i,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(t,s){let r;try{r=await Bt(t,this._rdOptions)}catch(i){this._onError(i)}return{files:r,depth:s,path:t}}async _formatEntry(t,s){let r,i=this._isDirent?t.name:t;try{let n=tt(Qt(s,i));r={path:Zt(this._root,n),fullPath:n,basename:i},r[this._statsProp]=this._isDirent?t:await this._stat(n)}catch(n){this._onError(n);return}return r}_onError(t){ns(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let s=t[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let r=t.fullPath;try{let i=await Jt(r),n=await et(i);if(n.isFile())return"file";if(n.isDirectory()){let a=i.length;if(r.startsWith(i)&&r.substr(a,1)===es){let o=new Error(`Circular symlink detected: "${r}" points to "${i}"`);return o.code=nt,this._onError(o)}return"directory"}}catch(i){return this._onError(i),""}}}_includeAsFile(t){let s=t&&t[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function ot(e,t={}){let s=t.entryType||t.type;if(s==="both"&&(s=P.FILE_DIR_TYPE),s&&(t.type=s),e){if(typeof e!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!st.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${st.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=e,new Ae(t)}import{watch as as,unwatchFile as at,watchFile as cs}from"fs";import{realpath as ke,lstat as ls,open as ds,stat as lt}from"fs/promises";import{type as us}from"os";import*as x from"path";var fs="data",Le="end",dt="close",fe=()=>{};var pe=process.platform,je=pe==="win32",ps=pe==="darwin",ms=pe==="linux",hs=pe==="freebsd",ut=us()==="OS400",E={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},k=E,gs="watch",_s={lstat:ls,stat:lt},H="listeners",ce="errHandlers",U="rawEmitters",ws=[H,ce,U],bs=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),ys=e=>bs.has(x.extname(e).slice(1).toLowerCase()),Fe=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},Z=(e,t,s)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(s)},xs=e=>t=>{let s=e[t];s instanceof Set?s.clear():delete e[t]},ee=(e,t,s)=>{let r=e[t];r instanceof Set?r.delete(s):r===s&&delete e[t]},ft=e=>e instanceof Set?e.size===0:!e,le=new Map;function ct(e,t,s,r,i){let n=(a,o)=>{s(e),i(a,o,{watchedPath:e}),o&&e!==o&&de(x.resolve(e,o),H,x.join(e,o))};try{return as(e,{persistent:t.persistent},n)}catch(a){r(a);return}}var de=(e,t,s,r,i)=>{let n=le.get(e);n&&Fe(n[t],a=>{a(s,r,i)})},Es=(e,t,s,r)=>{let{listener:i,errHandler:n,rawEmitter:a}=r,o=le.get(t),c;if(!s.persistent)return c=ct(e,s,i,n,a),c?c.close.bind(c):void 0;if(o)Z(o,H,i),Z(o,ce,n),Z(o,U,a);else{if(c=ct(e,s,de.bind(null,t,H),n,de.bind(null,t,U)),!c)return;c.on(k.ERROR,async l=>{let d=de.bind(null,t,ce);if(o&&(o.watcherUnusable=!0),je&&l.code==="EPERM")try{await(await ds(e,"r")).close(),d(l)}catch{}else d(l)}),o={listeners:i,errHandlers:n,rawEmitters:a,watcher:c},le.set(t,o)}return()=>{ee(o,H,i),ee(o,ce,n),ee(o,U,a),ft(o.listeners)&&(o.watcher.close(),le.delete(t),ws.forEach(xs(o)),o.watcher=void 0,Object.freeze(o))}},$e=new Map,vs=(e,t,s,r)=>{let{listener:i,rawEmitter:n}=r,a=$e.get(t),o=a&&a.options;return o&&(o.persistent<s.persistent||o.interval>s.interval)&&(at(t),a=void 0),a?(Z(a,H,i),Z(a,U,n)):(a={listeners:i,rawEmitters:n,options:s,watcher:cs(t,s,(c,l)=>{Fe(a.rawEmitters,u=>{u(k.CHANGE,t,{curr:c,prev:l})});let d=c.mtimeMs;(c.size!==l.size||d>l.mtimeMs||d===0)&&Fe(a.listeners,u=>u(e,c))})},$e.set(t,a)),()=>{ee(a,H,i),ee(a,U,n),ft(a.listeners)&&($e.delete(t),at(t),a.options=a.watcher=void 0,Object.freeze(a))}},ue=class{fsw;_boundHandleError;constructor(t){this.fsw=t,this._boundHandleError=s=>t._handleError(s)}_watchWithNodeFs(t,s){let r=this.fsw.options,i=x.dirname(t),n=x.basename(t);this.fsw._getWatchedDir(i).add(n);let o=x.resolve(t),c={persistent:r.persistent};s||(s=fe);let l;if(r.usePolling){let d=r.interval!==r.binaryInterval;c.interval=d&&ys(n)?r.binaryInterval:r.interval,l=vs(t,o,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else l=Es(t,o,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(t,s,r){if(this.fsw.closed)return;let i=x.dirname(t),n=x.basename(t),a=this.fsw._getWatchedDir(i),o=s;if(a.has(n))return;let c=async(d,u)=>{if(this.fsw._throttle(gs,t,5)){if(!u||u.mtimeMs===0)try{let f=await lt(t);if(this.fsw.closed)return;let m=f.atimeMs,y=f.mtimeMs;if((!m||m<=y||y!==o.mtimeMs)&&this.fsw._emit(k.CHANGE,t,f),(ps||ms||hs)&&o.ino!==f.ino){this.fsw._closeFile(d),o=f;let N=this._watchWithNodeFs(t,c);N&&this.fsw._addPathCloser(d,N)}else o=f}catch{this.fsw._remove(i,n)}else if(a.has(n)){let f=u.atimeMs,m=u.mtimeMs;(!f||f<=m||m!==o.mtimeMs)&&this.fsw._emit(k.CHANGE,t,u),o=u}}},l=this._watchWithNodeFs(t,c);if(!(r&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(k.ADD,t,0))return;this.fsw._emit(k.ADD,t,s)}return l}async _handleSymlink(t,s,r,i){if(this.fsw.closed)return;let n=t.fullPath,a=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await ke(r)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(i)?this.fsw._symlinkPaths.get(n)!==o&&(this.fsw._symlinkPaths.set(n,o),this.fsw._emit(k.CHANGE,r,t.stats)):(a.add(i),this.fsw._symlinkPaths.set(n,o),this.fsw._emit(k.ADD,r,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(n))return!0;this.fsw._symlinkPaths.set(n,!0)}_handleRead(t,s,r,i,n,a,o){t=x.join(t,"");let c=i?`${t}:${i}`:t;if(o=this.fsw._throttle("readdir",c,1e3),!o)return;let l=this.fsw._getWatchedDir(r.path),d=new Set,u=this.fsw._readdirp(t,{fileFilter:f=>r.filterPath(f),directoryFilter:f=>r.filterDir(f)});if(u)return u.on(fs,async f=>{if(this.fsw.closed){u=void 0;return}let m=f.path,y=x.join(t,m);if(d.add(m),!(f.stats.isSymbolicLink()&&await this._handleSymlink(f,t,y,m))){if(this.fsw.closed){u=void 0;return}(m===i||!i&&!l.has(m))&&(this.fsw._incrReadyCount(),y=x.join(n,x.relative(n,y)),this._addToNodeFs(y,s,r,a+1))}}).on(k.ERROR,this._boundHandleError),new Promise((f,m)=>{if(!u)return m();u.once(Le,()=>{if(this.fsw.closed){u=void 0;return}let y=o?o.clear():!1;f(void 0),l.getChildren().filter(N=>N!==t&&!d.has(N)).forEach(N=>{this.fsw._remove(t,N)}),u=void 0,y&&this._handleRead(t,!1,r,i,n,a,o)})})}async _handleDir(t,s,r,i,n,a,o){let c=this.fsw._getWatchedDir(x.dirname(t)),l=c.has(x.basename(t));!(r&&this.fsw.options.ignoreInitial)&&!n&&!l&&this.fsw._emit(k.ADD_DIR,t,s),c.add(x.basename(t)),this.fsw._getWatchedDir(t);let d,u,f=this.fsw.options.depth;if((f==null||i<=f)&&!this.fsw._symlinkPaths.has(o)){if(!n&&(await this._handleRead(t,r,a,n,t,i,d),this.fsw.closed))return;u=this._watchWithNodeFs(t,(m,y)=>{y&&y.mtimeMs===0||this._handleRead(m,!1,a,n,t,i,d)})}return u}async _addToNodeFs(t,s,r,i,n){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(t);r&&(o.filterPath=c=>r.filterPath(c),o.filterDir=c=>r.filterDir(c));try{let c=await _s[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,d;if(c.isDirectory()){let u=x.resolve(t),f=l?await ke(t):t;if(this.fsw.closed||(d=await this._handleDir(o.watchPath,c,s,i,n,o,f),this.fsw.closed))return;u!==f&&f!==void 0&&this.fsw._symlinkPaths.set(u,f)}else if(c.isSymbolicLink()){let u=l?await ke(t):t;if(this.fsw.closed)return;let f=x.dirname(o.watchPath);if(this.fsw._getWatchedDir(f).add(o.watchPath),this.fsw._emit(k.ADD,o.watchPath,c),d=await this._handleDir(f,c,s,i,t,o,u),this.fsw.closed)return;u!==void 0&&this.fsw._symlinkPaths.set(x.resolve(t),u)}else d=this._handleFile(o.watchPath,c,s);return a(),d&&this.fsw._addPathCloser(t,d),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}};var We="/",Ss="//",_t=".",Ts="..",Rs="string",Cs=/\\/g,wt=/\/\//g,As=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,ks=/^\.[/\\]/;function me(e){return Array.isArray(e)?e:[e]}var Me=e=>typeof e=="object"&&e!==null&&!(e instanceof RegExp);function $s(e){return typeof e=="function"?e:typeof e=="string"?t=>e===t:e instanceof RegExp?t=>e.test(t):typeof e=="object"&&e!==null?t=>{if(e.path===t)return!0;if(e.recursive){let s=p.relative(e.path,t);return s?!s.startsWith("..")&&!p.isAbsolute(s):!1}return!1}:()=>!1}function Fs(e){if(typeof e!="string")throw new Error("string expected");e=p.normalize(e),e=e.replace(/\\/g,"/");let t=!1;return e.startsWith("//")&&(t=!0),e=e.replace(wt,"/"),t&&(e="/"+e),e}function pt(e,t,s){let r=Fs(t);for(let i=0;i<e.length;i++){let n=e[i];if(n(r,s))return!0}return!1}function Ls(e,t){if(e==null)throw new TypeError("anymatch: specify first argument");let r=me(e).map(i=>$s(i));return t==null?(i,n)=>pt(r,i,n):pt(r,t)}var mt=e=>{let t=me(e).flat();if(!t.every(s=>typeof s===Rs))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(bt)},ht=e=>{let t=e.replace(Cs,We),s=!1;return t.startsWith(Ss)&&(s=!0),t=t.replace(wt,We),s&&(t=We+t),t},bt=e=>ht(p.normalize(ht(e))),gt=(e="")=>t=>typeof t=="string"?bt(p.isAbsolute(t)?t:p.join(e,t)):t,js=(e,t)=>p.isAbsolute(e)?e:p.join(t,e),Ws=Object.freeze(new Set),Oe=class{path;_removeWatcher;items;constructor(t,s){this.path=t,this._removeWatcher=s,this.items=new Set}add(t){let{items:s}=this;s&&t!==_t&&t!==Ts&&s.add(t)}async remove(t){let{items:s}=this;if(!s||(s.delete(t),s.size>0))return;let r=this.path;try{await Is(r)}catch{this._removeWatcher&&this._removeWatcher(p.dirname(r),p.basename(r))}}has(t){let{items:s}=this;if(s)return s.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=fe,this.items=Ws,Object.freeze(this)}},Ms="stat",Os="lstat",ze=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(t,s,r){this.fsw=r;let i=t;this.path=t=t.replace(ks,""),this.watchPath=i,this.fullWatchPath=p.resolve(i),this.dirParts=[],this.dirParts.forEach(n=>{n.length>1&&n.pop()}),this.followSymlinks=s,this.statMethod=s?Ms:Os}entryPath(t){return p.join(this.watchPath,p.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:s}=t;if(s&&s.isSymbolicLink())return this.filterDir(t);let r=this.entryPath(t);return this.fsw._isntIgnored(r,s)&&this.fsw._hasReadPermissions(s)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},he=class extends Ds{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=t.awaitWriteFinish,r={stabilityThreshold:2e3,pollInterval:100},i={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?me(t.ignored):me([]),awaitWriteFinish:s===!0?r:typeof s=="object"?{...r,...s}:!1};ut&&(i.usePolling=!0),i.atomic===void 0&&(i.atomic=!i.usePolling);let n=process.env.CHOKIDAR_USEPOLLING;if(n!==void 0){let c=n.toLowerCase();c==="false"||c==="0"?i.usePolling=!1:c==="true"||c==="1"?i.usePolling=!0:i.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(i.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=fe,this._readyEmitted=!0,process.nextTick(()=>this.emit(E.READY)))},this._emitRaw=(...c)=>this.emit(E.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=i,this._nodeFsHandler=new ue(this),Object.freeze(i)}_addIgnoredPath(t){if(Me(t)){for(let s of this._ignoredPaths)if(Me(s)&&s.path===t.path&&s.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let s of this._ignoredPaths)Me(s)&&s.path===t&&this._ignoredPaths.delete(s)}add(t,s,r){let{cwd:i}=this.options;this.closed=!1,this._closePromise=void 0;let n=mt(t);return i&&(n=n.map(a=>js(a,i))),n.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=n.length,Promise.all(n.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!r,void 0,0,s);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(p.dirname(o),p.basename(s||o))})}),this}unwatch(t){if(this.closed)return this;let s=mt(t),{cwd:r}=this.options;return s.forEach(i=>{!p.isAbsolute(i)&&!this._closers.has(i)&&(r&&(i=p.join(r,i)),i=p.resolve(i)),this._closePath(i),this._addIgnoredPath(i),this._watched.has(i)&&this._addIgnoredPath({path:i,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(s=>s.forEach(r=>{let i=r();i instanceof Promise&&t.push(i)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((s,r)=>{let n=(this.options.cwd?p.relative(this.options.cwd,r):r)||_t;t[n]=s.getChildren().sort()}),t}emitWithAll(t,s){this.emit(t,...s),t!==E.ERROR&&this.emit(E.ALL,t,...s)}async _emit(t,s,r){if(this.closed)return;let i=this.options;je&&(s=p.normalize(s)),i.cwd&&(s=p.relative(i.cwd,s));let n=[s];r!=null&&n.push(r);let a=i.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(s)))return o.lastChange=new Date,this;if(i.atomic){if(t===E.UNLINK)return this._pendingUnlinks.set(s,[t,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(E.ALL,...c),this._pendingUnlinks.delete(l)})},typeof i.atomic=="number"?i.atomic:100),this;t===E.ADD&&this._pendingUnlinks.has(s)&&(t=E.CHANGE,this._pendingUnlinks.delete(s))}if(a&&(t===E.ADD||t===E.CHANGE)&&this._readyEmitted){let c=(l,d)=>{l?(t=E.ERROR,n[0]=l,this.emitWithAll(t,n)):d&&(n.length>1?n[1]=d:n.push(d),this.emitWithAll(t,n))};return this._awaitWriteFinish(s,a.stabilityThreshold,t,c),this}if(t===E.CHANGE&&!this._throttle(E.CHANGE,s,50))return this;if(i.alwaysStat&&r===void 0&&(t===E.ADD||t===E.ADD_DIR||t===E.CHANGE)){let c=i.cwd?p.join(i.cwd,s):s,l;try{l=await Ps(c)}catch{}if(!l||this.closed)return;n.push(l)}return this.emitWithAll(t,n),this}_handleError(t){let s=t&&t.code;return t&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(E.ERROR,t),t||this.closed}_throttle(t,s,r){this._throttled.has(t)||this._throttled.set(t,new Map);let i=this._throttled.get(t);if(!i)throw new Error("invalid throttle");let n=i.get(s);if(n)return n.count++,!1;let a,o=()=>{let l=i.get(s),d=l?l.count:0;return i.delete(s),clearTimeout(a),l&&clearTimeout(l.timeoutObject),d};a=setTimeout(o,r);let c={timeoutObject:a,clear:o,count:0};return i.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,s,r,i){let n=this.options.awaitWriteFinish;if(typeof n!="object")return;let a=n.pollInterval,o,c=t;this.options.cwd&&!p.isAbsolute(t)&&(c=p.join(this.options.cwd,t));let l=new Date,d=this._pendingWrites;function u(f){Ns(c,(m,y)=>{if(m||!d.has(t)){m&&m.code!=="ENOENT"&&i(m);return}let N=Number(new Date);f&&y.size!==f.size&&(d.get(t).lastChange=N);let w=d.get(t);N-w.lastChange>=s?(d.delete(t),i(void 0,y)):o=setTimeout(u,a,y)})}d.has(t)||(d.set(t,{lastChange:l,cancelWait:()=>(d.delete(t),clearTimeout(o),r)}),o=setTimeout(u,a))}_isIgnored(t,s){if(this.options.atomic&&As.test(t))return!0;if(!this._userIgnored){let{cwd:r}=this.options,n=(this.options.ignored||[]).map(gt(r)),o=[...[...this._ignoredPaths].map(gt(r)),...n];this._userIgnored=Ls(o,void 0)}return this._userIgnored(t,s)}_isntIgnored(t,s){return!this._isIgnored(t,s)}_getWatchHelpers(t){return new ze(t,this.options.followSymlinks,this)}_getWatchedDir(t){let s=p.resolve(t);return this._watched.has(s)||this._watched.set(s,new Oe(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,s,r){let i=p.join(t,s),n=p.resolve(i);if(r=r??(this._watched.has(i)||this._watched.has(n)),!this._throttle("remove",i,100))return;!r&&this._watched.size===1&&this.add(t,s,!0),this._getWatchedDir(i).getChildren().forEach(f=>this._remove(i,f));let c=this._getWatchedDir(t),l=c.has(s);c.remove(s),this._symlinkPaths.has(n)&&this._symlinkPaths.delete(n);let d=i;if(this.options.cwd&&(d=p.relative(this.options.cwd,i)),this.options.awaitWriteFinish&&this._pendingWrites.has(d)&&this._pendingWrites.get(d).cancelWait()===E.ADD)return;this._watched.delete(i),this._watched.delete(n);let u=r?E.UNLINK_DIR:E.UNLINK;l&&!this._isIgnored(i)&&this._emit(u,i),this._closePath(i)}_closePath(t){this._closeFile(t);let s=p.dirname(t);this._getWatchedDir(s).remove(p.basename(t))}_closeFile(t){let s=this._closers.get(t);s&&(s.forEach(r=>r()),this._closers.delete(t))}_addPathCloser(t,s){if(!s)return;let r=this._closers.get(t);r||(r=[],this._closers.set(t,r)),r.push(s)}_readdirp(t,s){if(this.closed)return;let r={type:E.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},i=ot(t,r);return this._streams.add(i),i.once(dt,()=>{i=void 0}),i.once(Le,()=>{i&&(this._streams.delete(i),i=void 0)}),i}};function zs(e,t={}){let s=new he(t);return s.add(e),s}var yt={watch:zs,FSWatcher:he};import{existsSync as F,mkdirSync as Zs,readdirSync as er,readFileSync as tr,unlinkSync as sr}from"fs";import{basename as Pt,join as _,relative as rr}from"path";import{copyFileSync as Hs,existsSync as T,mkdirSync as Ys,readdirSync as Ye,readFileSync as Us,writeFileSync as Ks}from"fs";import{basename as xt,dirname as vt,extname as Gs,join as S,normalize as Vs,relative as Y,resolve as Et,sep as qs}from"path";var Bs=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,Js=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,Xs=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,ge=/\.(js|jsx|ts|tsx)$/,He=/^page\.(tsx|ts|jsx|js)$/i,te=(e,t)=>{let r=Y(t,e).split(qs);r.pop();let i=r.filter(n=>!n.startsWith("("));return Vs(i.join("/"))},_e=e=>{let t=new Map,s=r=>{if(T(r))for(let i of Ye(r,{withFileTypes:!0})){let n=S(r,i.name);if(i.isDirectory()){s(n);continue}if(He.test(i.name)){let a=te(n,e);t.set(a,n)}}};return s(e),t},Qs=(e,t)=>{let s=e.replace(Bs,(r,i)=>{if(i.startsWith(".")){let a=i.replace(ge,"").replace(/^(?:\.\.\/)+/,"");return r.replace(i,`${t}/${a}`)}return r});return s=s.replace(Js,(r,i)=>{let n=i.replace(/^@\//,"").replace(ge,"");return r.replace(i,`${t}/${n}`)}),s=s.replace(Xs,(r,i)=>{let n=i.replace(/^@\//,"").replace(ge,"");return r.replace(i,`${t}/${n}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(r,i)=>{let n=i.replace(/^@\//,"").replace(ge,"");return r.replace(i,`${t}/${n}`)}),s};function K(e){let t=e;for(;t!==Et(t,"..");){let r=S(t,"turbo.json");if(T(r))return t;t=Et(t,"..")}let s=S(e,"package.json");if(T(s))return e;throw new Error("\u274C Could not locate project root")}function we(e,t){let s=process.cwd();return[S(s,"node_modules",e),...t===s?[]:[S(t,"node_modules",e)]].find(i=>T(i))??null}function be(e){let t=S(e,"src","app","[locale]");if(T(t))return t;let r=(n=>{let a=[];if(!T(n))return a;let o=(c,l=0)=>{if(!(l>4))try{let d=Ye(c,{withFileTypes:!0});for(let u of d){if(!u.isDirectory())continue;let f=S(c,u.name);if(u.name==="[locale]"&&vt(f).endsWith(S("src","app"))){a.push(f);continue}o(f,l+1)}}catch{}};return o(n),a})(e);return r.length>0?r[0]:S(e,"apps","docs","src","app","[locale]")}var ye=e=>{let t=[];if(!T(e))return t;let s=Ye(e,{withFileTypes:!0});for(let r of s){let i=S(e,r.name);r.isDirectory()?t.push(...ye(i)):t.push(i)}return t},se=e=>T(e)?ye(e).length===0:!0,Ue=(e,t,s,r,i,n,a=!0)=>{let o=xt(e);if(He.test(o)){let c=te(t,i),l=r.get(c);if(l&&l!==t){a&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${Y(n,t)} (collides with ${Y(n,l)})`);return}}try{let c=vt(t);T(c)||Ys(c,{recursive:!0});let l=Gs(e);if(s&&[".js",".jsx",".ts",".tsx"].includes(l)){let d=Us(e,"utf-8"),u=Qs(d,s);Ks(t,u)}else Hs(e,t);if(a){let d=e.indexOf(S("src","app")),u;d!==-1?u=e.substring(d):e.startsWith(n)?u=Y(n,e):u=e;let f=t.startsWith(n)?Y(n,t):t;console.log(`\x1B[32mCopied:\x1B[0m ${u} \u2192 ${f}`)}if(He.test(xt(t))){let d=te(t,i);r.set(d,t)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${e}`,c)}},Dt=(e,t,s)=>{if(!T(e)||!T(t)||t.replace(/\\/g,"/").includes("/@breadcrumb"))return;let i=ye(t);for(let n of i){let a=Y(t,n),o=S(e,a);T(o)||s(n)}},Nt=(e,t,s,r,i,n,a=!0)=>{if(!T(e)||se(e))return;let o=ye(e);for(let c of o){let l=Y(e,c),d=S(t,l);Ue(c,d,s,r,i,n,a)}};var It=e=>{let t=F(_(e,"src","vitnode.config.ts"));return F(_(e,"src","vitnode.api.config.ts"))&&!t?"api":t?"web":null},ir=(e,t,s,r)=>{let i=[],n=_(t,"apps");if(F(n)){let o=F(n)?er(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of o){let l=_(t,"apps",c);It(l)==="web"&&i.push({sourceDir:_(e,"src","routes","admin"),destinationDir:_(l,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","main"),destinationDir:_(l,"src","app","[locale]","(main)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","blank"),destinationDir:_(l,"src","app","[locale]","(blank)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","breadcrumb","admin"),destinationDir:_(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:_(e,"src","routes","breadcrumb","main"),destinationDir:_(l,"src","app","[locale]","(main)","@breadcrumb")})}}else{let o=process.cwd();It(o)==="web"&&i.push({sourceDir:_(e,"src","routes","admin"),destinationDir:_(o,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","main"),destinationDir:_(o,"src","app","[locale]","(main)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","blank"),destinationDir:_(o,"src","app","[locale]","(blank)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","breadcrumb","admin"),destinationDir:_(o,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:_(e,"src","routes","breadcrumb","main"),destinationDir:_(o,"src","app","[locale]","(main)","@breadcrumb")})}return i},nr=e=>{for(let{sourceDir:t,destinationDir:s}of e)F(t)&&!se(t)&&!F(s)&&Zs(s,{recursive:!0})},or=(e,t,s,r)=>({copyFileWrapper:(a,o)=>{Ue(a,o,e,t,s,r)},removeFile:a=>{try{if(F(a)&&(sr(a),console.log(`\x1B[33mRemoved:\x1B[0m ${a}`),/^page\.(tsx|ts|jsx|js)$/i.test(Pt(a)))){let o=te(a,s);t.get(o)===a&&t.delete(o)}}catch(o){console.error(`\x1B[31mError removing file:\x1B[0m ${a}`,o)}}}),ar=e=>t=>{let s=e.filter(({sourceDir:r})=>{let i=t.replace(/\\/g,"/"),n=r.replace(/\\/g,"/");return i===n||i.startsWith(`${n}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${t}`);return s.map(r=>{let i=rr(r.sourceDir,t);return _(r.destinationDir,i)})},cr=(e,t,s,r)=>{let i=yt.watch(e,{ignoreInitial:!1,persistent:!0});return i.on("add",n=>{t(n).forEach(o=>s(n,o))}).on("change",n=>{t(n).forEach(o=>s(n,o))}).on("unlink",n=>{t(n).forEach(o=>r(o))}).on("error",n=>{console.error("\x1B[31mWatcher error:\x1B[0m",n)}),i},xe=({initMessage:e})=>{let t=process.cwd(),s=K(t),r=be(s),i=_e(r),n=Pt(t);try{let f=_(t,"package.json");F(f)&&(n=JSON.parse(tr(f,"utf-8")).name??"")}catch(f){console.error("\x1B[31mError reading package.json:\x1B[0m",f);return}let a=n.replace(/\//g,"-").replace(/@/g,""),o=ir(t,s,n,a);if(o.length===0){console.log(`${e} \x1B[34mNothing to sync - no web app in this project.\x1B[0m`);return}nr(o);let{copyFileWrapper:c,removeFile:l}=or(n,i,r,s);for(let{sourceDir:f,destinationDir:m}of o)Dt(f,m,l);console.log(`${e} \x1B[34mWatching for changes in plugins...\x1B[0m`);let d=o.map(f=>f.sourceDir).filter(f=>F(f)),u=ar(o);cr(d,u,c,l)};var Ke=(e,t)=>{let s=lr(e,t,{stdio:"inherit",shell:process.platform==="win32",env:process.env});return s.on("error",r=>{console.error(`\x1B[31m${e} failed:\x1B[0m`,r)}),s.on("exit",r=>{r!==null&&r!==0&&console.error(`\x1B[31m${e} exited with code ${r}\x1B[0m`)}),s},St=({initMessage:e})=>{let t=[Ke("tsc",["-w","-p","tsconfig.build.json","--preserveWatchOutput"]),Ke("swc",["src","-d","dist","--config-file",".swcrc","--copy-files","-w"]),Ke("tsc-alias",["-w","-p","tsconfig.build.json"])],s=()=>{t.forEach(r=>r.kill()),process.exit(0)};process.on("SIGINT",s),process.on("SIGTERM",s),xe({initMessage:e})};import{existsSync as At,readdirSync as hr,readFileSync as gr}from"fs";import{join as Ve,relative as _r}from"path";import{createJiti as dr}from"jiti";import{existsSync as ur,readdirSync as fr,statSync as pr}from"fs";import{join as Tt}from"path";var mr=(e,t,s=4)=>{let r=(i,n)=>{if(n>s)return null;try{let a=Tt(i,"src",t);if(ur(a))return a;let o=fr(i);for(let c of o){if(c==="node_modules"||c.startsWith(".")||c==="dist"||c==="build"||c==="out")continue;let l=Tt(i,c);try{if(pr(l).isDirectory()){let d=r(l,n+1);if(d)return d}}catch{}}}catch{}return null};return r(e,0)};async function A({type:e="config",optional:t=!1}={}){let s=process.cwd(),r=`vitnode.${e}.ts`,i=mr(s,r);if(!i){if(t)return null;console.error(`Config file not found: ${r}`),console.error(`Searched recursively in ${s} (excluding node_modules, .*, dist, build, out)`),process.exit(1)}try{let n=e==="config"?"vitNodeConfig":"vitNodeApiConfig",c=(await dr(import.meta.url,{interopDefault:!0}).import(i))[n];if(!c){if(t)return null;console.error(`Export "${n}" not found in ${i}`),process.exit(1)}return c}catch(n){if(t)return null;console.error("Failed to load config:",n),process.exit(1)}}var wr="@vitnode/core",G=8,V=e=>`\x1B[90m${e}\x1B[0m`,Ee=e=>`\x1B[31m${e}\x1B[0m`,Ge=e=>`\x1B[33m${e}\x1B[0m`,Rt=e=>`\x1B[32m${e}\x1B[0m`,kt=(e,t="")=>typeof e!="object"||e===null||Array.isArray(e)?t?[t]:[]:Object.entries(e).flatMap(([s,r])=>kt(r,t?`${t}.${s}`:s)),Ct=e=>{if(!At(e))return null;try{return kt(JSON.parse(gr(e,"utf-8")))}catch(t){return console.error(Ee(` Could not parse ${e}: ${String(t)}`)),[]}},br=e=>{let t=Ve(e,"src","locales"),s=[];if(!At(t))return s;let r=(i,n)=>{for(let a of hr(i,{withFileTypes:!0})){let o=Ve(i,a.name);a.isDirectory()?r(o,[...n,a.name]):a.name.endsWith(".json")&&n.length>0&&s.push({locale:a.name.replace(/\.json$/,""),path:o,pluginId:n.join("/")})}};return r(t,[]),s},$t=async e=>{let t=e==="--ci",s=process.cwd(),r=K(s),n=await A({optional:!0})??await A({optional:!0,type:"api.config"});n||(console.error(Ee("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let a=n.i18n?.defaultLocale??"en",o=(n.i18n?.locales??[]).map(w=>w.code),c=n.i18n?.messages??{},l=n.plugins,d=[wr,...l.map(w=>w.pluginId)],u=br(s),f=[...new Set([...o,...u.map(w=>w.locale)])].filter(w=>w!==a);console.log(`\x1B[34m[VitNode]\x1B[0m Checking ${d.length} package(s) against ${f.length||"no"} extra locale(s), default ${V(a)}.`);let m=0,y=0,N=(w,I)=>{let b=we(w,r),v=b?Ct(Ve(b,"src","locales",`${I}.json`)):null,R=u.find(C=>C.pluginId===w&&C.locale===I),Q=R?Ct(R.path):null;return!v&&!Q?null:[...new Set([...v??[],...Q??[]])]};for(let w of d){let I=N(w,a);if(!I){console.log(Ge(` ${w}: no "${a}" messages found - is the package installed?`)),y+=1;continue}for(let b of f){let v=N(w,b);if(!v){console.log(V(` ${w} \xB7 ${b}: not translated, falls back to ${a}`));continue}let R=new Set(I),Q=new Set(v),C=I.filter(O=>!Q.has(O)),j=v.filter(O=>!R.has(O));if(C.length===0&&j.length===0){console.log(Rt(` ${w} \xB7 ${b}: complete`));continue}if(C.length>0){m+=C.length,y+=1,console.log(Ge(` ${w} \xB7 ${b}: ${C.length} key(s) missing, falling back to ${a}`));for(let O of C.slice(0,G))console.log(V(` ${O}`));C.length>G&&console.log(V(` ... and ${C.length-G} more`))}if(j.length>0){y+=1,console.log(Ge(` ${w} \xB7 ${b}: ${j.length} key(s) unknown to ${a} - typo or leftover?`));for(let O of j.slice(0,G))console.log(V(` ${O}`));j.length>G&&console.log(V(` ... and ${j.length-G} more`))}}}for(let w of u){let I=c[w.locale]?.[w.pluginId],b=_r(s,w.path);I?o.length>0&&!o.includes(w.locale)&&(y+=1,console.log(Ee(` ${b} uses a locale that is not in \`i18n.locales\`.`))):(y+=1,console.log(Ee(` ${b} is never loaded - add \`"${w.pluginId}": () => import("./locales/${w.pluginId}/${w.locale}.json")\` under \`i18n.messages.${w.locale}\`.`)))}y===0&&(console.log(Rt(" Everything is translated. Nice.")),process.exit(0)),console.log(`\x1B[34m[VitNode]\x1B[0m ${y} issue(s), ${m} untranslated key(s).`),process.exit(t?1:0)};import{count as Ar,sql as Kt}from"drizzle-orm";import{migrate as kr}from"drizzle-orm/postgres-js/migrator";import{createJiti as $r}from"jiti";import{existsSync as Fr}from"fs";import{join as Lr}from"path";import{relations as Mt}from"drizzle-orm";import{index as Pe,pgTable as Ot}from"drizzle-orm/pg-core";import{pgTable as yr}from"drizzle-orm/pg-core";var D=yr("core_roles",e=>({id:e.serial().primaryKey(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),root:e.boolean().notNull().default(!1),guest:e.boolean().notNull().default(!1),color:e.varchar({length:50}),allowUploadFiles:e.boolean().notNull().default(!1),totalMaxStorage:e.integer(),maxStorageForSubmit:e.integer()})).enableRLS();import{relations as Lt}from"drizzle-orm";import{index as jt,pgTable as Wt}from"drizzle-orm/pg-core";import{relations as re}from"drizzle-orm";import{index as q,pgTable as ie,primaryKey as Er}from"drizzle-orm/pg-core";import{relations as xr}from"drizzle-orm";import{index as qe,pgTable as Ft}from"drizzle-orm/pg-core";var $=Ft("core_languages",e=>({id:e.serial().primaryKey(),code:e.varchar({length:32}).notNull().unique(),name:e.varchar({length:255}).notNull(),timezone:e.varchar({length:255}).notNull().default("UTC"),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),enabled:e.boolean().notNull().default(!0),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[qe("core_languages_code_idx").on(e.code),qe("core_languages_name_idx").on(e.name)]).enableRLS(),ve=Ft("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>$.code,{onDelete:"cascade"}),pluginCode:e.varchar({length:50}).notNull(),itemId:e.integer().notNull(),value:e.text().notNull(),tableName:e.varchar({length:255}).notNull(),variable:e.varchar({length:255}).notNull()}),e=>[qe("core_languages_words_lang_code_idx").on(e.languageCode)]).enableRLS(),Ri=xr(ve,({one:e})=>({language:e($,{fields:[ve.languageCode],references:[$.code]})}));var h=ie("core_users",e=>({id:e.serial().primaryKey(),nameCode:e.varchar({length:255}).notNull().unique(),name:e.varchar({length:255}).notNull().unique(),email:e.varchar({length:255}).notNull().unique(),password:e.varchar(),createdAt:e.timestamp().notNull().defaultNow(),newsletter:e.boolean().notNull().default(!1),avatarColor:e.varchar({length:6}).notNull(),emailVerified:e.boolean().notNull().default(!1),roleId:e.integer().references(()=>D.id).notNull(),birthday:e.timestamp(),ipAddress:e.varchar({length:40}).notNull(),language:e.varchar({length:32}).notNull().default("en").references(()=>$.code,{onDelete:"set default"})}),e=>[q("core_users_name_code_idx").on(e.nameCode),q("core_users_name_idx").on(e.name),q("core_users_email_idx").on(e.email)]).enableRLS(),Li=re(h,({one:e,many:t})=>({group:e(D,{fields:[h.roleId],references:[D.id]}),secondary_roles:t(De),language:e($,{fields:[h.language],references:[$.code]}),confirm_email:e(Ne,{fields:[h.id],references:[Ne.userId]}),sso:t(Be),forgot_password:e(Ie,{fields:[h.id],references:[Ie.userId]})})),De=ie("core_users_secondary_roles",e=>({userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}).notNull(),createdAt:e.timestamp().notNull().defaultNow()}),e=>[Er({columns:[e.userId,e.roleId]}),q("core_users_secondary_roles_user_id_idx").on(e.userId),q("core_users_secondary_roles_role_id_idx").on(e.roleId)]).enableRLS(),ji=re(De,({one:e})=>({user:e(h,{fields:[De.userId],references:[h.id]}),role:e(D,{fields:[De.roleId],references:[D.id]})})),Be=ie("core_users_sso",e=>({userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull(),providerId:e.varchar({length:255}).notNull(),providerAccountId:e.varchar({length:255}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),e=>[q("core_users_sso_user_id_idx").on(e.userId)]).enableRLS(),Wi=re(Be,({one:e})=>({user:e(h,{fields:[Be.userId],references:[h.id]})})),Ne=ie("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull(),token:e.varchar({length:100}).notNull().unique(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),ipAddress:e.varchar({length:40}).notNull()})).enableRLS(),Mi=re(Ne,({one:e})=>({user:e(h,{fields:[Ne.userId],references:[h.id]})})),Ie=ie("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull().unique(),token:e.varchar({length:100}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull()})).enableRLS(),Oi=re(Ie,({one:e})=>({user:e(h,{fields:[Ie.userId],references:[h.id]})}));var ne=Wt("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>L.id,{onDelete:"cascade"}).notNull()}),e=>[jt("core_sessions_user_id_idx").on(e.userId)]).enableRLS(),Ki=Lt(ne,({one:e})=>({user:e(h,{fields:[ne.userId],references:[h.id]}),device:e(L,{fields:[ne.deviceId],references:[L.id]})})),L=Wt("core_sessions_known_devices",e=>({id:e.serial().primaryKey(),publicId:e.varchar({length:32}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),userAgent:e.text().notNull(),lastSeen:e.timestamp().notNull().defaultNow()}),e=>[jt("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]).enableRLS(),Gi=Lt(L,({one:e})=>({session:e(ne,{fields:[L.id],references:[ne.deviceId]})}));var oe=Ot("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[Pe("core_admin_permissions_role_id_idx").on(e.roleId),Pe("core_admin_permissions_user_id_idx").on(e.userId)]).enableRLS(),Zi=Mt(oe,({one:e})=>({group:e(D,{fields:[oe.roleId],references:[D.id]}),user:e(h,{fields:[oe.userId],references:[h.id]})})),Je=Ot("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>L.id,{onDelete:"cascade"}).notNull()}),e=>[Pe("core_admin_sessions_token_idx").on(e.token),Pe("core_admin_sessions_user_id_idx").on(e.userId)]).enableRLS(),en=Mt(Je,({one:e})=>({user:e(h,{fields:[Je.userId],references:[h.id]}),device:e(L,{fields:[Je.deviceId],references:[L.id]})}));import{relations as vr}from"drizzle-orm";import{index as zt,pgTable as Dr}from"drizzle-orm/pg-core";var ae=Dr("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[zt("core_moderators_permissions_role_id_idx").on(e.roleId),zt("core_moderators_permissions_user_id_idx").on(e.userId)]).enableRLS(),an=vr(ae,({one:e})=>({group:e(D,{fields:[ae.roleId],references:[D.id]}),user:e(h,{fields:[ae.userId],references:[h.id]})}));import{sql as Xe}from"drizzle-orm";import{customType as Nr,index as B,pgTable as Ir,unique as Pr}from"drizzle-orm/pg-core";var Sr=Nr({dataType(){return"tsvector"}}),Qe={da:"danish",de:"german",en:"english",es:"spanish",fi:"finnish",fr:"french",hu:"hungarian",it:"italian",nl:"dutch",no:"norwegian",pl:"polish",pt:"portuguese",ro:"romanian",ru:"russian",sv:"swedish",tr:"turkish"},Tr="simple";var Ht=`CASE lower(split_part("core_search_index"."languageCode", '-', 1)) ${Object.entries(Qe).map(([e,t])=>`WHEN '${e}' THEN '${t}'::regconfig`).join(" ")} ELSE '${Tr}'::regconfig END`,Yt=Ir("core_search_index",e=>({id:e.serial().primaryKey(),pluginId:e.varchar({length:255}).notNull(),itemType:e.varchar({length:100}).notNull(),itemId:e.integer().notNull(),languageCode:e.varchar({length:32}).notNull().default(""),authorId:e.integer().references(()=>h.id,{onDelete:"set null",onUpdate:"cascade"}),title:e.text().notNull().default(""),content:e.text().notNull().default(""),searchVector:Sr("search_vector").notNull().generatedAlwaysAs(()=>Xe`setweight(to_tsvector(${Xe.raw(Ht)}, coalesce(${Yt.title}, '')), 'A') || setweight(to_tsvector(${Xe.raw(Ht)}, coalesce(${Yt.content}, '')), 'B')`),containerType:e.varchar({length:100}),containerId:e.integer(),url:e.text(),isPublic:e.boolean().notNull().default(!0),metadata:e.jsonb().$type().notNull().default({}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp(),indexedAt:e.timestamp().notNull().defaultNow()}),e=>[Pr("core_search_index_item_unique").on(e.itemType,e.itemId,e.languageCode),B("core_search_index_search_vector_idx").using("gin",e.searchVector),B("core_search_index_created_at_idx").on(e.createdAt),B("core_search_index_author_id_idx").on(e.authorId),B("core_search_index_item_type_idx").on(e.itemType),B("core_search_index_language_code_idx").on(e.languageCode),B("core_search_index_is_public_idx").on(e.isPublic)]).enableRLS();import{existsSync as W,readdirSync as Rr}from"fs";import{readFile as Cr}from"fs/promises";import{join as g,relative as Ut}from"path";var J=async e=>{let t=process.cwd(),s=W(g(t,"src","vitnode.config.ts")),r=W(g(t,"src","vitnode.api.config.ts")),i;e==="--api"&&r?i=await A({type:"api.config"}):e==="--web"&&s?i=await A({}):r&&!s?i=await A({type:"api.config"}):s?i=await A({}):i={plugins:[]};let n=[...i.plugins.map(d=>d.pluginId),"@vitnode/core"],a=K(process.cwd()),o=be(a),c=_e(o),l=process.cwd();await Promise.all(n.map(async d=>{let u=we(d,a);if(!u){console.error(`\x1B[31mPlugin not found:\x1B[0m ${d} in node_modules`);return}let f="";try{let b=g(u,"package.json");W(b)&&(f=JSON.parse(await Cr(b,"utf-8")).name??"")}catch(b){console.error(`\x1B[31mError reading package.json for ${d}:\x1B[0m`,b);return}let m=d.replace(/\//g,"-").replace(/@/g,""),y=b=>{let v=W(g(b,"src","vitnode.config.ts"));return W(g(b,"src","vitnode.api.config.ts"))&&!v?"api":v?"web":null},N=g(a,"apps"),w=W(N),I=[];if(w){let b=W(N)?Rr(N,{withFileTypes:!0}).filter(v=>v.isDirectory()).map(v=>v.name):[];for(let v of b){let R=g(a,"apps",v);if(y(R)==="web"){let C=g(R,"src","app","[locale]","(main)",g("(plugins)",`(${m})`)),j=g(R,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${m})`));I.push({sourceDir:g(u,"src","routes","admin"),destinationDir:j},{sourceDir:g(u,"src","routes","main"),destinationDir:C},{sourceDir:g(u,"src","routes","blank"),destinationDir:g(R,"src","app","[locale]","(blank)",g("(plugins)",`(${m})`))},{sourceDir:g(u,"src","routes","breadcrumb","admin"),destinationDir:g(R,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:g(u,"src","routes","breadcrumb","main"),destinationDir:g(R,"src","app","[locale]","(main)","@breadcrumb")})}}}else{let b=g(l,"src","app","[locale]","(main)",g("(plugins)",`(${m})`)),v=g(l,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${m})`));I.push({sourceDir:g(u,"src","routes","admin"),destinationDir:v},{sourceDir:g(u,"src","routes","main"),destinationDir:b},{sourceDir:g(u,"src","routes","blank"),destinationDir:g(l,"src","app","[locale]","(blank)",g("(plugins)",`(${m})`))},{sourceDir:g(u,"src","routes","breadcrumb","admin"),destinationDir:g(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:g(u,"src","routes","breadcrumb","main"),destinationDir:g(l,"src","app","[locale]","(main)","@breadcrumb")})}for(let{sourceDir:b,destinationDir:v}of I)W(b)&&!se(b)&&(console.log(`\x1B[36mCopying ${d}:\x1B[0m ${Ut(a,b)} \u2192 ${Ut(a,v)}`),Nt(b,v,f,c,o,a,!1))}))};var Se=async()=>{try{await z("npm",["run","drizzle-kit","up"]),await z("npm",["run","drizzle-kit","generate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},jr=async()=>{let e=Lr(process.cwd(),"drizzle.config.ts");if(Fr(e))try{let s=await $r(import.meta.url,{interopDefault:!0}).import(e),r=s.default?.out??s.out;if(typeof r=="string"&&r.length>0)return r}catch{}return"./migrations"},Wr=async e=>{let t=[...new Set(Object.values(Qe))];if(t.length===0)return;let s=await e.execute(Kt`SELECT cfgname FROM pg_ts_config`),r=new Set(s.map(n=>n.cfgname)),i=t.filter(n=>!r.has(n));if(i.length!==0){console.log(`\x1B[33m[VitNode]\x1B[0m No dictionary installed for text-search config(s) [${i.join(", ")}] - registering a "COPY = simple" fallback (search works, stemming is skipped).`);for(let n of i)try{await e.execute(Kt.raw(`CREATE TEXT SEARCH CONFIGURATION "${n}" (COPY = simple)`))}catch(a){if(a.code!=="42710")throw a}}},Te=async()=>{let e=await A({type:"api.config"});await Wr(e.dbProvider);let t=await jr();try{await kr(e.dbProvider,{migrationsFolder:t})}catch(s){let r=s;console.error("\x1B[31m[VitNode] Database migration failed.\x1B[0m"),r.severity&&console.error(`\x1B[31mSeverity:\x1B[0m ${r.severity}`),r.code&&console.error(`\x1B[31mSQLSTATE:\x1B[0m ${r.code}`),console.error(`\x1B[31mMessage:\x1B[0m ${r.message??String(s)}`),r.detail&&console.error(`\x1B[31mDetail:\x1B[0m ${r.detail}`),r.hint&&console.error(`\x1B[31mHint:\x1B[0m ${r.hint}`),r.where&&console.error(`\x1B[31mWhere:\x1B[0m ${r.where}`),r.position&&console.error(`\x1B[31mPosition:\x1B[0m ${r.position}`),r.query&&console.error(`\x1B[31mFailing SQL:\x1B[0m
|
|
6
|
+
${r.query}`),s instanceof Error&&s.stack&&console.error(`
|
|
7
|
+
\x1B[90m${s.stack}\x1B[0m`),process.exit(1)}},Re=async()=>{let t=(await A({type:"api.config"})).dbProvider,s=await A({type:"config",optional:!0}),[r]=await t.select({count:Ar()}).from(D).limit(1),i=s?.i18n?.locales?.length?s.i18n.locales.map(n=>({code:n.code,name:n.name,default:n.code===s.i18n.defaultLocale,protected:n.code===s.i18n.defaultLocale,timezone:s.i18n.timeZone??"UTC"})):[{code:"en",name:"English (USA)",default:!0,protected:!0,timezone:"America/New_York"}];if(await t.insert($).values(i).onConflictDoNothing({target:$.code}),r.count===0){let n=await t.insert(D).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)",allowUploadFiles:!0},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)",allowUploadFiles:!0}]).returning({id:D.id});await t.insert(ve).values([{languageCode:"en",pluginCode:"core",itemId:n[0].id,value:"Guest",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:n[1].id,value:"Member",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:n[2].id,value:"Moderator",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:n[3].id,value:"Administrator",tableName:"core_roles",variable:"name"}]),await t.insert(ae).values([{roleId:n[2].id,protected:!0,unrestricted:!0},{roleId:n[3].id,protected:!0,unrestricted:!0}]),await t.insert(oe).values({roleId:n[3].id,protected:!0,unrestricted:!0})}},Gt=async({initMessage:e,flag:t})=>{let s=[];t==="--web"?s.push({label:"Prepare plugins files...",action:async()=>await J(t)}):t==="--api"?s.push({label:"Prepare plugins files...",action:async()=>await J(t)},{label:"Generate migrations...",action:Se},{label:"Run migrations...",action:Te},{label:"Insert initial data...",action:Re}):s.push({label:"Prepare plugins files...",action:async()=>await J(t)},{label:"Generate migrations...",action:Se},{label:"Run migrations...",action:Te},{label:"Insert initial data...",action:Re});for(let r=0;r<s.length;r++){let i=s[r],n=`[${r+1}/${s.length}]`;i.label==="Insert initial data..."?console.log(`
|
|
8
|
+
${e} ${n} ${i.label}`):console.log(`${e} ${n} ${i.label}`),await i.action()}console.log(`${e} \x1B[32mInitial setup completed.\x1B[0m`),process.exit(0)};Mr({quiet:!0});var M="\x1B[34m[VitNode]\x1B[0m",Vt=process.argv[2],X=process.argv[3];switch(Vt){case"build":try{await Ze(),console.log(`${M} \x1B[32mBuild completed successfully.\x1B[0m`),process.exit(0)}catch{process.exit(1)}break;case"dev":St({initMessage:M});break;case"i18n:check":await $t(X);break;case"init":Gt({initMessage:M,flag:X});break;case"migrate":await Se(),X==="--generate"&&(console.log(`${M} \x1B[32mDatabase migrations generated successfully.\x1B[0m`),process.exit(0)),await Te(),await Re(),console.log(`${M} \x1B[32mDatabase migrated successfully.\x1B[0m`),process.exit(0);break;case"plugin":(X==="--w"||X==="--watch")&&xe({initMessage:M});break;case"prepare-plugins":await J(X),console.log(`${M} \x1B[32mPlugins prepared successfully.\x1B[0m`),process.exit(0);break;default:console.log(`${M} \x1B[31mCommand not found: "${Vt??""}"\x1B[0m`),process.exit(1)}
|
|
7
9
|
/*! Bundled license information:
|
|
8
10
|
|
|
9
11
|
chokidar/index.js:
|
|
@@ -2,6 +2,7 @@ export declare const routeKey: (filePath: string, localeRoot: string) => string;
|
|
|
2
2
|
export declare const buildInitialRouteMap: (localeRoot: string) => Map<string, string>;
|
|
3
3
|
export declare const transformFileImports: (content: string, pluginName: string) => string;
|
|
4
4
|
export declare function findRepoRoot(startPath: string): string;
|
|
5
|
+
export declare function findPackagePath(packageName: string, repoRoot: string): null | string;
|
|
5
6
|
export declare function findLocaleRoot(repoRoot: string): string;
|
|
6
7
|
export declare const getAllFiles: (dir: string) => string[];
|
|
7
8
|
export declare const isDirectoryEmpty: (dir: string) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../../scripts/shared/file-utils.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,EAAE,YAAY,MAAM,KAAG,MAY/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,KACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAwBpB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,YAAY,MAAM,KACjB,MA8DF,CAAC;AAEF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkEvD;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAM,EAgB/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,OAM9C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,GACnB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoEf,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,cAAc,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,SAmBlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoBf,CAAC"}
|
|
1
|
+
{"version":3,"file":"file-utils.d.ts","sourceRoot":"","sources":["../../../scripts/shared/file-utils.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,QAAQ,GAAI,UAAU,MAAM,EAAE,YAAY,MAAM,KAAG,MAY/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,YAAY,MAAM,KACjB,GAAG,CAAC,MAAM,EAAE,MAAM,CAwBpB,CAAC;AAGF,eAAO,MAAM,oBAAoB,GAC/B,SAAS,MAAM,EACf,YAAY,MAAM,KACjB,MA8DF,CAAC;AAEF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiBtD;AAMD,wBAAgB,eAAe,CAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,IAAI,GAAG,MAAM,CAQf;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkEvD;AAED,eAAO,MAAM,WAAW,GAAI,KAAK,MAAM,KAAG,MAAM,EAgB/C,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,OAM9C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,QAAQ,GACnB,SAAS,MAAM,EACf,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoEf,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,cAAc,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,SAmBlC,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,WAAW,MAAM,EACjB,gBAAgB,MAAM,EACtB,YAAY,MAAM,EAClB,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC7B,YAAY,MAAM,EAClB,UAAU,MAAM,EAChB,iBAAc,SAoBf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/events/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAS7B,eAAO,MAAM,kBAAkB,QAAO,eAiDpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const LocalEventsAdapter=()=>({name:"local",publish:async(c,envelope)=>{const listeners=c.get("core").events.listeners.filter(listener=>listener.event===envelope.name);const failures=[];let delivered=0;for(const listener of listeners){try{await listener.handler(c,envelope.payload,envelope);delivered++}catch(err){const error=err instanceof Error?err.message:String(err);failures.push({pluginId:listener.pluginId,module:listener.module,listener:listener.name,error});const message=`Event listener "${listener.pluginId}:${listener.module}:${listener.name}" for "${envelope.name}" failed: ${error}`;try{await c.get("log").error(message)}catch{console.error(`[VitNode] Failed to log event listener failure: ${message}`)}}}return{eventId:envelope.eventId,status:"delivered",delivered,failures}}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/search/postgres.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAEV,uBAAuB,EAGxB,MAAM,qBAAqB,CAAC;AAoD7B,eAAO,MAAM,qBAAqB,QAAO,uBAuIvC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{and,asc,count,desc,eq,gt,gte,inArray,lt,lte,or,sql}from"drizzle-orm";import{core_search_index,resolveSearchTextConfig}from"../../../database/search.js";import{core_users}from"../../../database/users.js";const DEFAULT_PAGE_SIZE=20;const MAX_PAGE_SIZE=100;const buildFilters=params=>{const conditions=[];const term=params.term?.trim();if(term){const config=resolveSearchTextConfig(params.languageCode);conditions.push(sql`"core_search_index"."search_vector" @@ websearch_to_tsquery(${config}::regconfig, ${term})`)}if(params.languageCode){const languageCondition=or(eq(core_search_index.languageCode,params.languageCode),eq(core_search_index.languageCode,""));if(languageCondition){conditions.push(languageCondition)}}if(params.itemTypes?.length){conditions.push(inArray(core_search_index.itemType,params.itemTypes))}if(params.authorId!==undefined){conditions.push(eq(core_search_index.authorId,params.authorId))}if(params.containerId!==undefined){conditions.push(eq(core_search_index.containerId,params.containerId))}if(params.dateFrom){conditions.push(gte(core_search_index.createdAt,params.dateFrom))}if(params.dateTo){conditions.push(lte(core_search_index.createdAt,params.dateTo))}if(!params.includePrivate){conditions.push(eq(core_search_index.isPublic,true))}return conditions.length?and(...conditions):undefined};export const PostgresSearchAdapter=()=>({name:"postgres",capabilities:{authorBoost:false,facets:false,timeDecay:false},index:async()=>{},bulkIndex:async()=>{},delete:async()=>{},clear:async()=>{},ping:async c=>{try{await c.get("db").execute(sql`select 1`);return true}catch{return false}},search:async(c,params)=>{const db=c.get("db");const term=params.term?.trim();const useRelevance=params.sort==="relevance"&&!!term;const size=Math.min(params.first??DEFAULT_PAGE_SIZE,MAX_PAGE_SIZE);const filters=buildFilters(params);const[{total}]=await db.select({total:count()}).from(core_search_index).where(filters);const config=resolveSearchTextConfig(params.languageCode);const rankExpr=term?sql`ts_rank("core_search_index"."search_vector", websearch_to_tsquery(${config}::regconfig, ${term}))`:sql`NULL`;const cursorValue=params.cursor?Number(params.cursor):undefined;const orderBy=[];let where=filters;let offset=0;if(useRelevance){orderBy.push(sql`${rankExpr} DESC`,desc(core_search_index.id));offset=cursorValue??0}else if(params.sort==="oldest"){orderBy.push(asc(core_search_index.createdAt),asc(core_search_index.id));if(cursorValue){const cond=gt(core_search_index.id,cursorValue);where=where?and(where,cond):cond}}else{orderBy.push(desc(core_search_index.createdAt),desc(core_search_index.id));if(cursorValue){const cond=lt(core_search_index.id,cursorValue);where=where?and(where,cond):cond}}const rows=await db.select({id:core_search_index.id,pluginId:core_search_index.pluginId,itemType:core_search_index.itemType,itemId:core_search_index.itemId,languageCode:core_search_index.languageCode,authorId:core_search_index.authorId,title:core_search_index.title,content:core_search_index.content,containerType:core_search_index.containerType,containerId:core_search_index.containerId,url:core_search_index.url,metadata:core_search_index.metadata,createdAt:core_search_index.createdAt,score:rankExpr,author:{id:core_users.id,name:core_users.name,nameCode:core_users.nameCode,avatarColor:core_users.avatarColor}}).from(core_search_index).leftJoin(core_users,eq(core_users.id,core_search_index.authorId)).where(where).orderBy(...orderBy).limit(size+1).offset(useRelevance?offset:0);const hasNextPage=rows.length>size;const sliced=rows.slice(0,size);const edges=sliced.map(row=>({id:row.id,pluginId:row.pluginId,itemType:row.itemType,itemId:row.itemId,languageCode:row.languageCode,authorId:row.authorId,title:row.title,content:row.content,containerType:row.containerType,containerId:row.containerId,url:row.url,metadata:row.metadata,createdAt:row.createdAt,score:row.score,author:row.author?.id?row.author:null}));const startCursor=useRelevance?offset:edges[0]?.id??null;const endCursor=useRelevance?offset+edges.length:edges.at(-1)?.id??null;return{edges,pageInfo:{totalCount:total,count:edges.length,hasNextPage,hasPreviousPage:useRelevance?offset>0:!!cursorValue,startCursor,endCursor}}}});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/storage/local.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,sBAAsB,CAAC;AAgB9B,eAAO,MAAM,mBAAmB,GAAI,2BAGjC;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,KAAG,gBAmCR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{mkdir,rm,writeFile}from"node:fs/promises";import{dirname,join}from"node:path";import{CONFIG}from"../../../lib/config.js";export const LocalStorageAdapter=({baseUrl,publicPath="/api/uploads"}={})=>{const resolvePath=key=>join(process.cwd(),"public","uploads",key);const getUrl=key=>{const base=(baseUrl??CONFIG.api.origin).replace(/\/$/,"");const path=publicPath.replace(/^\/|\/$/g,"");return`${base}/${path}/${key}`};const mountPath=`${publicPath.replace(/^\/api/,"")}/*`;return{delete:async key=>{await rm(resolvePath(key),{force:true})},getUrl,static:{mountPath,root:"./public/uploads",stripPrefix:publicPath},upload:async({body,key})=>{const filePath=resolvePath(key);await mkdir(dirname(filePath),{recursive:true});await writeFile(filePath,body);return{key,url:getUrl(key)}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAezD,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EACF,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,GAC3D,MAAM,GACN,MAAM,EAAE,CAAC;CACd;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAC5E,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACrD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,EACjB,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,oCAgGA"}
|
package/dist/src/api/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{swaggerUI}from"@hono/swagger-ui";import{cors}from"hono/cors";import{csrf}from"hono/csrf";import{HTTPException}from"hono/http-exception";import{createCacheClient}from"./lib/cache-client.js";import{newBuildPluginApiCore}from"./plugin.js";import{CONFIG_PLUGIN}from"../config.js";import{initRealtimePubSub}from"../ws/registry.js";import{globalAdminMiddleware,globalMiddleware}from"./middlewares/global.middleware.js";import{rateLimiterMiddleware}from"./middlewares/rate-limiter.middleware.js";export function VitNodeAPI({app,cors:corsOptions,csrf:csrfOptions,vitNodeApiConfig}){const redisClient=createCacheClient(vitNodeApiConfig.redis);initRealtimePubSub(redisClient);app.doc("/swagger/doc",{openapi:"3.0.0",info:{version:CONFIG_PLUGIN.version,title:"VitNode API"}});app.use(cors(corsOptions));app.use(csrf(csrfOptions));app.use("*",rateLimiterMiddleware(vitNodeApiConfig.rateLimiter,redisClient));app.get("/swagger",swaggerUI({url:"/api/swagger/doc"}));app.use("*",globalMiddleware({
|
|
1
|
+
import{swaggerUI}from"@hono/swagger-ui";import{cors}from"hono/cors";import{csrf}from"hono/csrf";import{HTTPException}from"hono/http-exception";import{createCacheClient}from"./lib/cache-client.js";import{collectCronJobs}from"./lib/cron.js";import{newBuildPluginApiCore}from"./plugin.js";import{CONFIG_PLUGIN}from"../config.js";import{initRealtimePubSub}from"../ws/registry.js";import{globalAdminMiddleware,globalMiddleware}from"./middlewares/global.middleware.js";import{rateLimiterMiddleware}from"./middlewares/rate-limiter.middleware.js";import{registerCronJobs}from"./modules/cron/helpers/register-cron-jobs.js";export function VitNodeAPI({app,cors:corsOptions,csrf:csrfOptions,vitNodeApiConfig}){const redisClient=createCacheClient(vitNodeApiConfig.redis);initRealtimePubSub(redisClient);app.doc("/swagger/doc",{openapi:"3.0.0",info:{version:CONFIG_PLUGIN.version,title:"VitNode API"}});app.use(cors(corsOptions));app.use(csrf(csrfOptions));app.use("*",rateLimiterMiddleware(vitNodeApiConfig.rateLimiter,redisClient));app.get("/swagger",swaggerUI({url:"/api/swagger/doc"}));app.use("*",globalMiddleware({i18n:vitNodeApiConfig.i18n,email:vitNodeApiConfig.email,metadata:vitNodeApiConfig.metadata,authorization:vitNodeApiConfig.authorization,dbProvider:vitNodeApiConfig.dbProvider,captcha:vitNodeApiConfig.captcha,cron:vitNodeApiConfig.cron,events:vitNodeApiConfig.events,search:vitNodeApiConfig.search,storage:vitNodeApiConfig.storage,plugins:[newBuildPluginApiCore,...vitNodeApiConfig.plugins],cacheClient:redisClient}));app.use(async(c,next)=>{if(c.req.path.includes("/admin/")){return await globalAdminMiddleware()(c,next)}return next()});if(vitNodeApiConfig.cron){vitNodeApiConfig.cron.schedule()}const plugins=[newBuildPluginApiCore,...vitNodeApiConfig.plugins];plugins.map(root=>{app.route(`/${root.pluginId}`,root.hono)});registerCronJobs(vitNodeApiConfig.dbProvider,collectCronJobs(plugins)).catch(error=>{console.warn(`\x1b[34m[VitNode]\x1b[0m \x1b[33mFailed to register cron jobs:\x1b[0m ${error}`)});app.onError(async(error,c)=>{if(error instanceof HTTPException){return error.getResponse()}const errorMessage=error?.message??"Unknown error";try{const logger=c.get("log");if(logger){await logger.error(`Unhandled error: ${errorMessage}`)}}catch{}return new Response(process.env.NODE_ENV==="development"?errorMessage:"Internal Server Error",{status:500})});return app}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-staff-permission.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/check-staff-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAUpC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAS5B,eAAO,MAAM,cAAc,GACzB,GAAG,OAAO,EACV,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,EAAE,CAQlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,GAAG,OAAO,EACV,iBAGG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KACrE,OAAO,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"check-staff-permission.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/check-staff-permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAUpC,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAS5B,eAAO,MAAM,cAAc,GACzB,GAAG,OAAO,EACV,MAAM;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KACnC,OAAO,CAAC,MAAM,EAAE,CAQlB,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,GAAG,OAAO,EACV,iBAGG;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KACrE,OAAO,CAAC,kBAAkB,CAwC5B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,GAAG,OAAO,EACV,mBAAmB,oBAAoB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,KACtE,OAAO,CAAC,OAAO,CAOjB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAChC,GAAG,OAAO,EACV,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,KACzD,OAAO,CAAC,IAAI,CAKd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{and,eq,inArray,or}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{core_admin_permissions}from"../../database/admins.js";import{core_moderators_permissions}from"../../database/moderators.js";import{core_roles}from"../../database/roles.js";import{core_users_secondary_roles}from"../../database/users.js";import{hasStaffPermission,staffPermissionKey}from"./staff-permission.js";const tableByType={admin:core_admin_permissions,moderator:core_moderators_permissions};export const getUserRoleIds=async(c,user)=>{const secondary=await c.get("db").select({roleId:core_users_secondary_roles.roleId}).from(core_users_secondary_roles).where(eq(core_users_secondary_roles.userId,user.id));return[...new Set([user.roleId,...secondary.map(row=>row.roleId)])]};export const resolveStaffPermissions=async(c,{type,user})=>{const roleIds=await getUserRoleIds(c,user);const rootRoles=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(inArray(core_roles.id,roleIds),eq(core_roles.root,true))).limit(1);if(rootRoles.length>0){return{root:true,permissions:[]}}const table=tableByType[type];const entries=await c.get("db").select({
|
|
1
|
+
import{and,eq,inArray,or}from"drizzle-orm";import{HTTPException}from"hono/http-exception";import{core_admin_permissions}from"../../database/admins.js";import{core_moderators_permissions}from"../../database/moderators.js";import{core_roles}from"../../database/roles.js";import{core_users_secondary_roles}from"../../database/users.js";import{hasStaffPermission,staffPermissionKey}from"./staff-permission.js";const tableByType={admin:core_admin_permissions,moderator:core_moderators_permissions};export const getUserRoleIds=async(c,user)=>{const secondary=await c.get("db").select({roleId:core_users_secondary_roles.roleId}).from(core_users_secondary_roles).where(eq(core_users_secondary_roles.userId,user.id));return[...new Set([user.roleId,...secondary.map(row=>row.roleId)])]};export const resolveStaffPermissions=async(c,{type,user})=>{const roleIds=await getUserRoleIds(c,user);const rootRoles=await c.get("db").select({id:core_roles.id}).from(core_roles).where(and(inArray(core_roles.id,roleIds),eq(core_roles.root,true))).limit(1);if(rootRoles.length>0){return{root:true,permissions:[]}}const table=tableByType[type];const entries=await c.get("db").select({unrestricted:table.unrestricted,permissions:table.permissions}).from(table).where(or(eq(table.userId,user.id),inArray(table.roleId,roleIds)));if(entries.some(entry=>entry.unrestricted)){return{root:true,permissions:[]}}const seen=new Set;const permissions=[];for(const entry of entries){for(const permission of entry.permissions??[]){const key=staffPermissionKey(permission);if(seen.has(key))continue;seen.add(key);permissions.push(permission)}}return{root:false,permissions}};export const checkStaffPermission=async(c,{type,...args})=>{const user=type==="admin"?c.get("admin")?.user:c.get("user");if(!user)return false;const set=await resolveStaffPermissions(c,{type,user});return hasStaffPermission(set,args)};export const assertStaffPermission=async(c,args)=>{const allowed=await checkStaffPermission(c,args);if(!allowed){throw new HTTPException(403,{message:"Forbidden"})}};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Context } from "hono";
|
|
2
2
|
import type { EnvVitNode } from "../middlewares/global.middleware";
|
|
3
|
+
import type { BuildPluginApiReturn } from "./plugin";
|
|
3
4
|
export interface CronAdapter {
|
|
4
5
|
schedule: () => void;
|
|
5
6
|
}
|
|
@@ -14,5 +15,6 @@ export interface CronJobConfig extends BuildCronReturn {
|
|
|
14
15
|
pluginId: string;
|
|
15
16
|
}
|
|
16
17
|
export declare function buildCron({ name, schedule, handler, description, }: BuildCronReturn): BuildCronReturn;
|
|
18
|
+
export declare function collectCronJobs(plugins: BuildPluginApiReturn[]): CronJobConfig[];
|
|
17
19
|
export declare const handleCronJobs: () => Promise<void>;
|
|
18
20
|
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE,eAAe,GAAG,eAAe,CAEnC;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,oBAAoB,EAAE,GAC9B,aAAa,EAAE,CAWjB;AAED,eAAO,MAAM,cAAc,qBAc1B,CAAC"}
|
package/dist/src/api/lib/cron.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{CONFIG}from"../../lib/config.js";export function buildCron({name,schedule,handler,description}){return{name,schedule,handler,description}}export const handleCronJobs=async()=>{const url=new URL("/api/@vitnode/core/cron",CONFIG.api.origin);const headers={"Content-Type":"application/json"};if(CONFIG.cronJobSecret){headers.authorization=`Bearer ${CONFIG.cronJobSecret}`}await fetch(url.toString(),{method:"POST",headers})};
|
|
1
|
+
import{CONFIG}from"../../lib/config.js";export function buildCron({name,schedule,handler,description}){return{name,schedule,handler,description}}export function collectCronJobs(plugins){return plugins.flatMap(plugin=>(plugin.cronJobs??[]).map(cronJob=>({pluginId:plugin.pluginId,module:cronJob.module,name:cronJob.name,schedule:cronJob.schedule,handler:cronJob.handler,description:cronJob.description})))}export const handleCronJobs=async()=>{const url=new URL("/api/@vitnode/core/cron",CONFIG.api.origin);const headers={"Content-Type":"application/json"};if(CONFIG.cronJobSecret){headers.authorization=`Bearer ${CONFIG.cronJobSecret}`}await fetch(url.toString(),{method:"POST",headers})};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Context } from "hono";
|
|
2
|
+
import type { EnvVitNode } from "../middlewares/global.middleware";
|
|
3
|
+
import type { EventEnvelope, VitNodeEventName, VitNodeEvents } from "../models/events";
|
|
4
|
+
export interface BuildEventListenerReturn<K extends VitNodeEventName = VitNodeEventName> {
|
|
5
|
+
description?: string;
|
|
6
|
+
event: K;
|
|
7
|
+
handler: (c: Context<EnvVitNode>, payload: VitNodeEvents[K], envelope: EventEnvelope<K>) => Promise<void> | void;
|
|
8
|
+
name: string;
|
|
9
|
+
}
|
|
10
|
+
export interface EventListenerConfig extends BuildEventListenerReturn {
|
|
11
|
+
module: string;
|
|
12
|
+
pluginId: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildEventListener<K extends VitNodeEventName>(args: BuildEventListenerReturn<K>): BuildEventListenerReturn;
|
|
15
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACd,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,wBAAwB,CACvC,CAAC,SAAS,gBAAgB,GAAG,gBAAgB;IAE7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,CACP,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EACtB,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,EACzB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,KACvB,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,gBAAgB,EAC3D,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,GAChC,wBAAwB,CAI1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function buildEventListener(args){return args}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { OpenAPIHono } from "@hono/zod-openapi";
|
|
2
2
|
import type { BuildCronReturn } from "./cron";
|
|
3
|
+
import type { BuildEventListenerReturn } from "./events";
|
|
3
4
|
import type { BuildQueueTaskReturn } from "./queue";
|
|
4
5
|
import type { Route } from "./route";
|
|
5
6
|
import type { BuildWebSocketReturn } from "./websocket";
|
|
@@ -9,6 +10,7 @@ export interface BuildModuleType<T extends Route, Plugin extends string> {
|
|
|
9
10
|
}
|
|
10
11
|
export interface BaseBuildModuleReturn<P extends string = string, M extends string = string, Routes extends Route<P>[] = Route<P>[]> {
|
|
11
12
|
cronJobs: BuildCronReturn[];
|
|
13
|
+
events: BuildEventListenerReturn[];
|
|
12
14
|
hono: OpenAPIHono;
|
|
13
15
|
modules?: BaseBuildModuleReturn<P>[];
|
|
14
16
|
name: M;
|
|
@@ -20,8 +22,9 @@ export interface BaseBuildModuleReturn<P extends string = string, M extends stri
|
|
|
20
22
|
export interface BuildModuleReturn<P extends string, M extends string, Routes extends Route<P>[] = Route<P>[], Modules extends BaseBuildModuleReturn<P>[] = BaseBuildModuleReturn<P>[]> extends BaseBuildModuleReturn<P, M, Routes> {
|
|
21
23
|
modules?: Modules;
|
|
22
24
|
}
|
|
23
|
-
export declare function buildModule<const P extends string, const M extends string, const Routes extends Route<P>[], Modules extends BaseBuildModuleReturn<P>[]>({ routes, pluginId, name, modules, cronJobs, queueTasks, webSockets, }: {
|
|
25
|
+
export declare function buildModule<const P extends string, const M extends string, const Routes extends Route<P>[], Modules extends BaseBuildModuleReturn<P>[]>({ routes, pluginId, name, modules, cronJobs, events, queueTasks, webSockets, }: {
|
|
24
26
|
cronJobs?: BuildCronReturn[];
|
|
27
|
+
events?: BuildEventListenerReturn[];
|
|
25
28
|
modules?: Modules;
|
|
26
29
|
name: M;
|
|
27
30
|
pluginId: P;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAEtC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtC,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACvE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAC/B,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC1C,EACA,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAa,EACb,UAAe,EACf,UAAe,GAChB,EAAE;IACD,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAEtC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,wBAAwB,EAAE,CAAC;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,EAAE,oBAAoB,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtC,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACvE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAC/B,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC1C,EACA,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAa,EACb,MAAW,EACX,UAAe,EACf,UAAe,GAChB,EAAE;IACD,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACrC,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CA0B3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{OpenAPIHono}from"@hono/zod-openapi";export function buildModule({routes,pluginId,name,modules,cronJobs=[],queueTasks=[],webSockets=[]}){const hono=new OpenAPIHono;if(routes){routes.forEach(({handler,route})=>{hono.openapi(route,handler)})}if(modules){modules.forEach(module=>{hono.route(`/${module.name}`,module.hono)})}return{routes,pluginId,hono,name,modules,cronJobs,queueTasks,webSockets}}
|
|
1
|
+
import{OpenAPIHono}from"@hono/zod-openapi";export function buildModule({routes,pluginId,name,modules,cronJobs=[],events=[],queueTasks=[],webSockets=[]}){const hono=new OpenAPIHono;if(routes){routes.forEach(({handler,route})=>{hono.openapi(route,handler)})}if(modules){modules.forEach(module=>{hono.route(`/${module.name}`,module.hono)})}return{routes,pluginId,hono,name,modules,cronJobs,events,queueTasks,webSockets}}
|
|
@@ -19,10 +19,6 @@ export interface PermissionsStaffArgs {
|
|
|
19
19
|
permission: string;
|
|
20
20
|
plugin: string;
|
|
21
21
|
}
|
|
22
|
-
export interface StaffPermissionsData {
|
|
23
|
-
permissions: PermissionsStaffArgs[];
|
|
24
|
-
unrestricted: boolean;
|
|
25
|
-
}
|
|
26
22
|
export interface PermissionStaffCatalogEntry {
|
|
27
23
|
admin: PermissionStaffModules;
|
|
28
24
|
moderator: PermissionStaffModules;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission-staff.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/permission-staff.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,yBAAyB,GACnC,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,yBAAyB,EAAE,CAC5B,CAAC;AAOF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,CAAC;AAOxD,eAAO,MAAM,+BAA+B,GAC1C,UAAS,2BAAgC,KACxC,sBAUA,CAAC;
|
|
1
|
+
{"version":3,"file":"permission-staff.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/permission-staff.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,yBAAyB,GACnC,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAKxD,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAC9C,MAAM,EACN,yBAAyB,EAAE,CAC5B,CAAC;AAOF,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;AAE5E,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,2BAA2B,CAAC;IACpC,SAAS,CAAC,EAAE,2BAA2B,CAAC;CACzC;AAED,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,WAAW,CAAC;AAOxD,eAAO,MAAM,+BAA+B,GAC1C,UAAS,2BAAgC,KACxC,sBAUA,CAAC;AAQJ,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,sBAAsB,CAAC;IAC9B,SAAS,EAAE,sBAAsB,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,IAAI,EAAE,OAAO,CAAC;CACf"}
|