@tulip-systems/core 0.8.2 → 0.9.0
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/dist/auth/client.d.mts +10 -10
- package/dist/auth/client.mjs +10 -10
- package/dist/auth/server.d.mts +7 -7
- package/dist/auth/server.mjs +7 -7
- package/dist/auth.d.mts +5 -5
- package/dist/auth.mjs +5 -5
- package/dist/commands/client.d.mts +17 -16
- package/dist/commands/client.mjs +17 -16
- package/dist/commands.d.mts +3 -3
- package/dist/commands.mjs +3 -2
- package/dist/components/client.d.mts +48 -48
- package/dist/components/client.mjs +48 -48
- package/dist/components/common/icons.d.mts +1 -2
- package/dist/components/common/icons.mjs +1 -2
- package/dist/components/common/status.d.mts +1 -2
- package/dist/components/common/status.mjs +1 -2
- package/dist/components/editor/components/content.client.d.mts +1 -2
- package/dist/components/editor/components/content.client.mjs +1 -2
- package/dist/components/editor/components/editor.client.d.mts +1 -2
- package/dist/components/editor/components/editor.client.mjs +1 -2
- package/dist/components/editor/components/menu-nodes.client.mjs +1 -2
- package/dist/components/editor/components/menu.client.d.mts +1 -2
- package/dist/components/editor/components/menu.client.mjs +1 -2
- package/dist/components/editor/extensions/file-handler/extension.d.mts +1 -2
- package/dist/components/editor/extensions/file-handler/extension.mjs +1 -2
- package/dist/components/editor/extensions/file-handler/strategy.d.mts +1 -2
- package/dist/components/editor/extensions/file-handler/strategy.mjs +1 -2
- package/dist/components/editor/extensions/file-handler/utils.mjs +1 -2
- package/dist/components/editor/extensions/image/extension.d.mts +1 -2
- package/dist/components/editor/extensions/image/extension.mjs +1 -2
- package/dist/components/editor/extensions/skeleton/extension.mjs +1 -2
- package/dist/components/editor/extensions/skeleton/renderer.mjs +1 -2
- package/dist/components/editor/lib/constants.d.mts +1 -2
- package/dist/components/editor/lib/constants.mjs +1 -2
- package/dist/components/editor/lib/extensions.d.mts +1 -2
- package/dist/components/editor/lib/extensions.mjs +1 -2
- package/dist/components/editor/lib/helpers.d.mts +1 -2
- package/dist/components/editor/lib/helpers.mjs +1 -2
- package/dist/components/editor/lib/types.d.mts +1 -2
- package/dist/components/editor/lib/variants.mjs +1 -2
- package/dist/components/emails/forget-password-email.mjs +2 -3
- package/dist/components/header/back-button.client.d.mts +1 -2
- package/dist/components/header/back-button.client.mjs +1 -2
- package/dist/components/header/bottom-bar.client.d.mts +1 -2
- package/dist/components/header/bottom-bar.client.mjs +1 -2
- package/dist/components/header/breadcrumbs.client.d.mts +1 -2
- package/dist/components/header/breadcrumbs.client.mjs +1 -2
- package/dist/components/header/header.client.d.mts +1 -2
- package/dist/components/header/header.client.mjs +1 -2
- package/dist/components/header/indicator.client.mjs +1 -2
- package/dist/components/header/mobile-nav-switcher.client.d.mts +1 -2
- package/dist/components/header/mobile-nav-switcher.client.mjs +1 -2
- package/dist/components/header/top-bar.client.d.mts +1 -2
- package/dist/components/header/top-bar.client.mjs +1 -2
- package/dist/components/layouts/admin-content.client.d.mts +1 -2
- package/dist/components/layouts/admin-content.client.mjs +1 -2
- package/dist/components/layouts/admin-error-pages.d.mts +1 -2
- package/dist/components/layouts/admin-error-pages.mjs +1 -2
- package/dist/components/layouts/admin-layout.d.mts +1 -2
- package/dist/components/layouts/admin-layout.mjs +1 -2
- package/dist/components/layouts/admin-loading.d.mts +1 -2
- package/dist/components/layouts/admin-loading.mjs +1 -2
- package/dist/components/layouts/empty-page.d.mts +1 -2
- package/dist/components/layouts/empty-page.mjs +1 -2
- package/dist/components/layouts/error-page.d.mts +1 -2
- package/dist/components/layouts/error-page.mjs +1 -2
- package/dist/components/layouts/error-sections.d.mts +1 -2
- package/dist/components/layouts/error-sections.mjs +1 -2
- package/dist/components/layouts/list-layout.d.mts +1 -2
- package/dist/components/layouts/list-layout.mjs +1 -2
- package/dist/components/layouts/providers.client.d.mts +1 -2
- package/dist/components/layouts/providers.client.mjs +1 -2
- package/dist/components/layouts/root-error-pages.d.mts +1 -2
- package/dist/components/layouts/root-error-pages.mjs +1 -2
- package/dist/components/layouts/root-layout.server.d.mts +1 -2
- package/dist/components/layouts/root-layout.server.mjs +1 -2
- package/dist/components/layouts/root-loading.d.mts +1 -2
- package/dist/components/layouts/root-loading.mjs +1 -2
- package/dist/components/layouts/tab-layout.d.mts +1 -2
- package/dist/components/layouts/tab-layout.mjs +1 -2
- package/dist/components/lists/data-list.d.mts +1 -2
- package/dist/components/lists/data-list.mjs +1 -2
- package/dist/components/lists/data-stack.d.mts +1 -2
- package/dist/components/lists/data-stack.mjs +1 -2
- package/dist/components/navigation/admin-sidebar-header.client.mjs +1 -2
- package/dist/components/navigation/admin-sidebar-paths.client.d.mts +1 -2
- package/dist/components/navigation/admin-sidebar-paths.client.mjs +1 -2
- package/dist/components/navigation/admin-sidebar-skeleton.mjs +1 -2
- package/dist/components/server.d.mts +2 -2
- package/dist/components/server.mjs +2 -2
- package/dist/components/ui/accordion.client.d.mts +1 -2
- package/dist/components/ui/accordion.client.mjs +1 -2
- package/dist/components/ui/alert-dialog.client.d.mts +1 -2
- package/dist/components/ui/alert-dialog.client.mjs +1 -2
- package/dist/components/ui/alert.d.mts +1 -2
- package/dist/components/ui/alert.mjs +1 -2
- package/dist/components/ui/aspect-ratio.client.d.mts +1 -2
- package/dist/components/ui/aspect-ratio.client.mjs +1 -2
- package/dist/components/ui/avatar.client.d.mts +1 -2
- package/dist/components/ui/avatar.client.mjs +1 -2
- package/dist/components/ui/badge.d.mts +2 -3
- package/dist/components/ui/badge.mjs +1 -2
- package/dist/components/ui/breadcrumb.d.mts +1 -2
- package/dist/components/ui/breadcrumb.mjs +1 -2
- package/dist/components/ui/button-group.d.mts +1 -2
- package/dist/components/ui/button-group.mjs +1 -2
- package/dist/components/ui/button.d.mts +2 -3
- package/dist/components/ui/button.mjs +1 -2
- package/dist/components/ui/calendar.client.d.mts +1 -2
- package/dist/components/ui/calendar.client.mjs +1 -2
- package/dist/components/ui/card.d.mts +1 -2
- package/dist/components/ui/card.mjs +1 -2
- package/dist/components/ui/carousel.client.d.mts +1 -2
- package/dist/components/ui/carousel.client.mjs +1 -2
- package/dist/components/ui/chart.client.d.mts +1 -2
- package/dist/components/ui/chart.client.mjs +1 -2
- package/dist/components/ui/checkbox.client.d.mts +1 -2
- package/dist/components/ui/checkbox.client.mjs +2 -3
- package/dist/components/ui/collapsible.client.d.mts +1 -2
- package/dist/components/ui/collapsible.client.mjs +1 -2
- package/dist/components/ui/color-picker.client.d.mts +1 -2
- package/dist/components/ui/color-picker.client.mjs +1 -2
- package/dist/components/ui/combobox-dropdown.client.d.mts +1 -2
- package/dist/components/ui/combobox-dropdown.client.mjs +1 -2
- package/dist/components/ui/combobox.client.d.mts +1 -2
- package/dist/components/ui/combobox.client.mjs +1 -2
- package/dist/components/ui/command.client.d.mts +5 -2
- package/dist/components/ui/command.client.mjs +10 -4
- package/dist/components/ui/context-menu.client.d.mts +1 -2
- package/dist/components/ui/context-menu.client.mjs +1 -2
- package/dist/components/ui/date-picker.client.d.mts +1 -2
- package/dist/components/ui/date-picker.client.mjs +1 -2
- package/dist/components/ui/dialog.client.d.mts +1 -2
- package/dist/components/ui/dialog.client.mjs +1 -2
- package/dist/components/ui/drawer.client.d.mts +1 -2
- package/dist/components/ui/drawer.client.mjs +1 -2
- package/dist/components/ui/dropdown-menu.client.d.mts +1 -2
- package/dist/components/ui/dropdown-menu.client.mjs +1 -2
- package/dist/components/ui/empty.d.mts +1 -2
- package/dist/components/ui/empty.mjs +1 -2
- package/dist/components/ui/field.client.d.mts +1 -2
- package/dist/components/ui/field.client.mjs +2 -3
- package/dist/components/ui/form.client.d.mts +1 -2
- package/dist/components/ui/form.client.mjs +1 -2
- package/dist/components/ui/hover-card.client.d.mts +1 -2
- package/dist/components/ui/hover-card.client.mjs +1 -2
- package/dist/components/ui/input-date-time.client.d.mts +1 -2
- package/dist/components/ui/input-date-time.client.mjs +1 -2
- package/dist/components/ui/input-date.d.mts +1 -2
- package/dist/components/ui/input-date.mjs +1 -2
- package/dist/components/ui/input-group.client.d.mts +1 -2
- package/dist/components/ui/input-group.client.mjs +1 -2
- package/dist/components/ui/input-recipient.d.mts +1 -2
- package/dist/components/ui/input-recipient.mjs +2 -3
- package/dist/components/ui/input-time.d.mts +1 -2
- package/dist/components/ui/input-time.mjs +1 -2
- package/dist/components/ui/input.d.mts +1 -2
- package/dist/components/ui/input.mjs +1 -2
- package/dist/components/ui/item.d.mts +2 -3
- package/dist/components/ui/item.mjs +1 -2
- package/dist/components/ui/kbd.d.mts +1 -2
- package/dist/components/ui/kbd.mjs +1 -2
- package/dist/components/ui/label.d.mts +1 -2
- package/dist/components/ui/label.mjs +1 -2
- package/dist/components/ui/loader.d.mts +1 -2
- package/dist/components/ui/loader.mjs +1 -2
- package/dist/components/ui/navigation-menu.d.mts +1 -2
- package/dist/components/ui/navigation-menu.mjs +1 -2
- package/dist/components/ui/pagination.d.mts +1 -2
- package/dist/components/ui/pagination.mjs +1 -2
- package/dist/components/ui/popover.client.d.mts +1 -2
- package/dist/components/ui/popover.client.mjs +1 -2
- package/dist/components/ui/progress.client.d.mts +1 -2
- package/dist/components/ui/progress.client.mjs +1 -2
- package/dist/components/ui/radio-group.d.mts +1 -2
- package/dist/components/ui/radio-group.mjs +2 -3
- package/dist/components/ui/resizable.client.d.mts +1 -2
- package/dist/components/ui/resizable.client.mjs +1 -2
- package/dist/components/ui/scroll-area.d.mts +1 -2
- package/dist/components/ui/scroll-area.mjs +1 -2
- package/dist/components/ui/select.client.d.mts +1 -2
- package/dist/components/ui/select.client.mjs +1 -2
- package/dist/components/ui/separator.d.mts +1 -2
- package/dist/components/ui/separator.mjs +1 -2
- package/dist/components/ui/sheet.client.d.mts +1 -2
- package/dist/components/ui/sheet.client.mjs +1 -2
- package/dist/components/ui/sidebar.client.d.mts +1 -2
- package/dist/components/ui/sidebar.client.mjs +1 -2
- package/dist/components/ui/skeleton.d.mts +1 -2
- package/dist/components/ui/skeleton.mjs +1 -2
- package/dist/components/ui/slider.d.mts +1 -2
- package/dist/components/ui/slider.mjs +1 -2
- package/dist/components/ui/sonner.client.d.mts +1 -2
- package/dist/components/ui/sonner.client.mjs +1 -2
- package/dist/components/ui/spinner.d.mts +1 -2
- package/dist/components/ui/spinner.mjs +1 -2
- package/dist/components/ui/switch.client.d.mts +1 -2
- package/dist/components/ui/switch.client.mjs +1 -2
- package/dist/components/ui/tabs.client.d.mts +1 -2
- package/dist/components/ui/tabs.client.mjs +2 -3
- package/dist/components/ui/textarea.d.mts +1 -2
- package/dist/components/ui/textarea.mjs +1 -2
- package/dist/components/ui/toggle-group.client.d.mts +1 -2
- package/dist/components/ui/toggle-group.client.mjs +1 -2
- package/dist/components/ui/toggle.client.d.mts +1 -2
- package/dist/components/ui/toggle.client.mjs +1 -2
- package/dist/components/ui/tooltip.client.d.mts +1 -2
- package/dist/components/ui/tooltip.client.mjs +1 -2
- package/dist/components.d.mts +39 -39
- package/dist/components.mjs +38 -38
- package/dist/config.d.mts +6 -6
- package/dist/config.mjs +4 -4
- package/dist/data-tables/client.d.mts +21 -18
- package/dist/data-tables/client.mjs +21 -18
- package/dist/data-tables/server.d.mts +7 -7
- package/dist/data-tables/server.mjs +7 -7
- package/dist/data-tables.d.mts +14 -14
- package/dist/data-tables.mjs +13 -13
- package/dist/database/server.d.mts +1 -1
- package/dist/database/server.mjs +1 -1
- package/dist/database.d.mts +2 -2
- package/dist/database.mjs +1 -1
- package/dist/dist/config.d.mts +5 -0
- package/dist/dist/modules/auth/handler/service.server.d.mts +8 -0
- package/dist/dist/modules/auth/lib/permissions.d.mts +2 -0
- package/dist/dist/modules/config/lib/context.d.mts +4 -0
- package/dist/dist/modules/config/paths/helpers.d.mts +1 -0
- package/dist/dist/modules/config/paths/types.d.mts +3 -0
- package/dist/dist/modules/database/lib/helpers.d.mts +2 -0
- package/dist/dist/modules/database/lib/service.server.d.mts +2 -0
- package/dist/dist/modules/database/lib/types.d.mts +5 -0
- package/dist/dist/modules/emails/lib/service.server.d.mts +2 -0
- package/dist/dist/modules/storage/lib/schema.d.mts +1 -0
- package/dist/dist/modules/storage/lib/service.server.d.mts +5 -0
- package/dist/dist/modules/storage/lib/validators.d.mts +4 -0
- package/dist/dist/modules/storage/providers/lib/types.d.mts +1 -0
- package/dist/dist/modules/storage/providers/lib/validators.d.mts +2 -0
- package/dist/emails/server.d.mts +1 -1
- package/dist/emails/server.mjs +1 -1
- package/dist/inline/client.d.mts +16 -0
- package/dist/inline/client.mjs +17 -0
- package/dist/inline.d.mts +2 -0
- package/dist/inline.mjs +3 -0
- package/dist/lib/client.d.mts +4 -4
- package/dist/lib/client.mjs +4 -4
- package/dist/lib/hooks/use-action.d.mts +1 -2
- package/dist/lib/hooks/use-action.mjs +1 -2
- package/dist/lib/hooks/use-indicator.d.mts +1 -2
- package/dist/lib/hooks/use-indicator.mjs +1 -2
- package/dist/lib/hooks/use-mobile.client.d.mts +1 -2
- package/dist/lib/hooks/use-mobile.client.mjs +1 -2
- package/dist/lib/types/config.d.mts +1 -2
- package/dist/lib/utils/array-move.d.mts +1 -2
- package/dist/lib/utils/array-move.mjs +1 -2
- package/dist/lib/utils/cn.d.mts +1 -2
- package/dist/lib/utils/cn.mjs +1 -2
- package/dist/lib/utils/fonts.d.mts +1 -2
- package/dist/lib/utils/fonts.mjs +1 -2
- package/dist/lib/utils/format.d.mts +1 -2
- package/dist/lib/utils/format.mjs +1 -2
- package/dist/lib/utils/manifest.d.mts +1 -2
- package/dist/lib/utils/manifest.mjs +1 -2
- package/dist/lib/utils/markdown.d.mts +1 -2
- package/dist/lib/utils/markdown.mjs +1 -2
- package/dist/lib/utils/url.d.mts +1 -2
- package/dist/lib/utils/url.mjs +1 -2
- package/dist/lib/utils/user-agent.mjs +1 -2
- package/dist/lib.d.mts +7 -7
- package/dist/lib.mjs +6 -6
- package/dist/modules/auth/components/allowed.client.d.mts +2 -4
- package/dist/modules/auth/components/allowed.client.mjs +1 -2
- package/dist/modules/auth/components/auth-layout.server.d.mts +1 -2
- package/dist/modules/auth/components/auth-layout.server.mjs +1 -2
- package/dist/modules/auth/components/auth-loading.d.mts +1 -2
- package/dist/modules/auth/components/auth-loading.mjs +1 -2
- package/dist/modules/auth/components/create-first-user-guard.server.d.mts +1 -2
- package/dist/modules/auth/components/create-first-user-guard.server.mjs +1 -2
- package/dist/modules/auth/components/create-first-user-page.client.d.mts +1 -2
- package/dist/modules/auth/components/create-first-user-page.client.mjs +1 -2
- package/dist/modules/auth/components/forget-password-page.client.d.mts +1 -2
- package/dist/modules/auth/components/forget-password-page.client.mjs +1 -2
- package/dist/modules/auth/components/guard.server.d.mts +1 -2
- package/dist/modules/auth/components/guard.server.mjs +1 -2
- package/dist/modules/auth/components/login-page.client.d.mts +1 -2
- package/dist/modules/auth/components/login-page.client.mjs +1 -2
- package/dist/modules/auth/components/reset-password-page.client.d.mts +1 -2
- package/dist/modules/auth/components/reset-password-page.client.mjs +1 -2
- package/dist/modules/auth/components/update-password-command.d.mts +2 -3
- package/dist/modules/auth/components/update-password-command.mjs +2 -3
- package/dist/modules/auth/db/schema.d.mts +1 -2
- package/dist/modules/auth/db/schema.mjs +1 -2
- package/dist/modules/auth/handler/create-client.client.d.mts +903 -665
- package/dist/modules/auth/handler/create-client.client.mjs +1 -2
- package/dist/modules/auth/handler/proxy.server.d.mts +1 -2
- package/dist/modules/auth/handler/proxy.server.mjs +1 -2
- package/dist/modules/auth/handler/route.server.d.mts +1 -2
- package/dist/modules/auth/handler/route.server.mjs +1 -2
- package/dist/modules/auth/handler/service.server.d.mts +121 -94
- package/dist/modules/auth/handler/service.server.mjs +1 -2
- package/dist/modules/auth/hooks/use-auth-client.d.mts +1 -2
- package/dist/modules/auth/hooks/use-auth-client.mjs +1 -2
- package/dist/modules/auth/hooks/use-permission.d.mts +1 -2
- package/dist/modules/auth/hooks/use-permission.mjs +1 -2
- package/dist/modules/auth/hooks/use-session.d.mts +3 -4
- package/dist/modules/auth/hooks/use-session.mjs +1 -2
- package/dist/modules/auth/lib/helpers.server.d.mts +2 -3
- package/dist/modules/auth/lib/helpers.server.mjs +1 -2
- package/dist/modules/auth/lib/permissions.d.mts +1 -2
- package/dist/modules/auth/lib/permissions.mjs +1 -2
- package/dist/modules/auth/lib/validators.d.mts +238 -2
- package/dist/modules/auth/lib/validators.mjs +5 -2
- package/dist/modules/commands/components/menus/context-menu.client.d.mts +40 -0
- package/dist/modules/commands/components/menus/context-menu.client.mjs +47 -0
- package/dist/modules/commands/components/menus/dropdown-menu.client.d.mts +30 -0
- package/dist/modules/commands/components/menus/dropdown-menu.client.mjs +58 -0
- package/dist/modules/commands/components/menus/floating-menu.client.d.mts +30 -0
- package/dist/modules/commands/components/menus/floating-menu.client.mjs +33 -0
- package/dist/modules/commands/components/menus/inline-menu.client.d.mts +30 -0
- package/dist/modules/commands/components/menus/inline-menu.client.mjs +41 -0
- package/dist/modules/commands/components/menus/responsive-menu.client.d.mts +17 -0
- package/dist/modules/commands/components/menus/responsive-menu.client.mjs +22 -0
- package/dist/modules/commands/components/primitives/alert-dialog-command.client.d.mts +65 -0
- package/dist/modules/commands/components/primitives/alert-dialog-command.client.mjs +138 -0
- package/dist/modules/commands/components/primitives/click-command.client.d.mts +26 -0
- package/dist/modules/commands/components/primitives/click-command.client.mjs +52 -0
- package/dist/modules/commands/components/primitives/command-trigger.client.d.mts +17 -0
- package/dist/modules/commands/components/primitives/command-trigger.client.mjs +42 -0
- package/dist/modules/commands/components/primitives/dialog-command.client.d.mts +53 -0
- package/dist/modules/commands/components/primitives/dialog-command.client.mjs +116 -0
- package/dist/modules/commands/components/primitives/dropdown-command.client.d.mts +47 -0
- package/dist/modules/commands/components/primitives/dropdown-command.client.mjs +131 -0
- package/dist/modules/commands/components/primitives/empty-command.client.d.mts +20 -0
- package/dist/modules/commands/components/primitives/empty-command.client.mjs +44 -0
- package/dist/modules/commands/components/primitives/form-dialog-command.client.d.mts +71 -0
- package/dist/modules/commands/components/primitives/form-dialog-command.client.mjs +163 -0
- package/dist/modules/commands/components/render-command.mjs +41 -7
- package/dist/modules/commands/components/utils/archive-command.client.d.mts +24 -0
- package/dist/modules/commands/components/utils/archive-command.client.mjs +29 -0
- package/dist/modules/commands/components/utils/delete-command.client.d.mts +20 -0
- package/dist/modules/commands/components/utils/delete-command.client.mjs +28 -0
- package/dist/modules/commands/hooks/use-command-mutation.client.d.mts +1 -7
- package/dist/modules/commands/hooks/use-command-mutation.client.mjs +3 -6
- package/dist/modules/commands/hooks/use-command.client.d.mts +31 -0
- package/dist/modules/commands/hooks/use-command.client.mjs +45 -0
- package/dist/modules/commands/lib/builder.d.mts +39 -0
- package/dist/modules/commands/lib/builder.mjs +47 -0
- package/dist/modules/commands/lib/registery.d.mts +35 -0
- package/dist/modules/commands/lib/registery.mjs +43 -0
- package/dist/modules/config/lib/config.d.mts +1 -2
- package/dist/modules/config/lib/config.mjs +1 -2
- package/dist/modules/config/lib/context.d.mts +1 -2
- package/dist/modules/config/lib/context.mjs +1 -2
- package/dist/modules/config/paths/helpers.d.mts +1 -2
- package/dist/modules/config/paths/helpers.mjs +1 -2
- package/dist/modules/config/paths/types.d.mts +1 -2
- package/dist/modules/data-tables/components/cell/common.client.d.mts +1 -2
- package/dist/modules/data-tables/components/cell/common.client.mjs +1 -2
- package/dist/modules/data-tables/components/cell/index.client.d.mts +1 -2
- package/dist/modules/data-tables/components/cell/index.client.mjs +1 -2
- package/dist/modules/data-tables/components/cell/select.client.d.mts +1 -2
- package/dist/modules/data-tables/components/cell/select.client.mjs +1 -2
- package/dist/modules/data-tables/components/column-header.d.mts +1 -2
- package/dist/modules/data-tables/components/column-header.mjs +1 -2
- package/dist/modules/data-tables/components/filters/combobox.client.d.mts +3 -4
- package/dist/modules/data-tables/components/filters/combobox.client.mjs +8 -11
- package/dist/modules/data-tables/components/filters/date-range.client.d.mts +24 -0
- package/dist/modules/data-tables/components/filters/date-range.client.mjs +99 -0
- package/dist/modules/data-tables/components/filters/search.client.d.mts +17 -0
- package/dist/modules/data-tables/components/filters/search.client.mjs +32 -0
- package/dist/modules/data-tables/components/filters/slider.client.d.mts +3 -4
- package/dist/modules/data-tables/components/filters/slider.client.mjs +3 -4
- package/dist/modules/data-tables/components/filters/toggle.client.d.mts +17 -0
- package/dist/modules/data-tables/components/filters/toggle.client.mjs +25 -0
- package/dist/modules/data-tables/components/footer.mjs +1 -2
- package/dist/modules/data-tables/components/header.d.mts +1 -2
- package/dist/modules/data-tables/components/header.mjs +1 -2
- package/dist/modules/data-tables/components/layout.d.mts +1 -2
- package/dist/modules/data-tables/components/layout.mjs +1 -2
- package/dist/modules/data-tables/components/search-input.client.d.mts +1 -2
- package/dist/modules/data-tables/components/search-input.client.mjs +1 -2
- package/dist/modules/data-tables/components/skeleton.d.mts +1 -2
- package/dist/modules/data-tables/components/skeleton.mjs +1 -2
- package/dist/modules/data-tables/components/table.d.mts +1 -2
- package/dist/modules/data-tables/components/table.mjs +1 -2
- package/dist/modules/data-tables/components/toolbar.d.mts +1 -2
- package/dist/modules/data-tables/components/toolbar.mjs +1 -2
- package/dist/modules/data-tables/hooks/use-context.client.d.mts +10 -22
- package/dist/modules/data-tables/hooks/use-context.client.mjs +1 -2
- package/dist/modules/data-tables/hooks/use-search.client.mjs +1 -2
- package/dist/modules/data-tables/hooks/use-selection.client.mjs +9 -4
- package/dist/modules/data-tables/hooks/use-table.client.d.mts +2 -5
- package/dist/modules/data-tables/hooks/use-table.client.mjs +5 -5
- package/dist/modules/data-tables/lib/converters/dto.d.mts +1 -2
- package/dist/modules/data-tables/lib/converters/dto.mjs +1 -2
- package/dist/modules/data-tables/lib/converters/filters.d.mts +40 -0
- package/dist/modules/data-tables/lib/converters/filters.mjs +38 -0
- package/dist/modules/data-tables/lib/converters/pagination.d.mts +17 -0
- package/dist/modules/data-tables/lib/converters/pagination.mjs +15 -0
- package/dist/modules/data-tables/lib/converters/search.d.mts +1 -2
- package/dist/modules/data-tables/lib/converters/search.mjs +1 -2
- package/dist/modules/data-tables/lib/converters/sorting.d.mts +42 -9
- package/dist/modules/data-tables/lib/converters/sorting.mjs +47 -12
- package/dist/modules/data-tables/lib/filters/config.d.mts +1 -2
- package/dist/modules/data-tables/lib/filters/config.mjs +1 -2
- package/dist/modules/data-tables/lib/filters/helpers.d.mts +1 -2
- package/dist/modules/data-tables/lib/filters/helpers.mjs +1 -2
- package/dist/modules/data-tables/lib/filters/parsers.d.mts +6 -2
- package/dist/modules/data-tables/lib/filters/parsers.mjs +10 -2
- package/dist/modules/data-tables/lib/filters/resolvers.d.mts +1 -2
- package/dist/modules/data-tables/lib/filters/resolvers.mjs +1 -2
- package/dist/modules/data-tables/lib/helpers/create-column.mjs +1 -2
- package/dist/modules/data-tables/lib/search-params.d.mts +1 -2
- package/dist/modules/data-tables/lib/search-params.mjs +1 -2
- package/dist/modules/data-tables/lib/types.d.mts +5 -10
- package/dist/modules/data-tables/lib/validators.d.mts +1 -2
- package/dist/modules/data-tables/lib/validators.mjs +1 -2
- package/dist/modules/data-tables/server/get-data.server.d.mts +4 -6
- package/dist/modules/data-tables/server/get-data.server.mjs +6 -7
- package/dist/modules/data-tables/strategies/helpers/sorting.mjs +1 -2
- package/dist/modules/data-tables/strategies/infinite/components.mjs +1 -2
- package/dist/modules/data-tables/strategies/infinite/strategy.d.mts +1 -2
- package/dist/modules/data-tables/strategies/infinite/strategy.mjs +1 -2
- package/dist/modules/data-tables/strategies/pagination/components.mjs +1 -2
- package/dist/modules/data-tables/strategies/pagination/strategy.d.mts +1 -2
- package/dist/modules/data-tables/strategies/pagination/strategy.mjs +1 -2
- package/dist/modules/data-tables/tables/data-table/components/body.mjs +1 -2
- package/dist/modules/data-tables/tables/data-table/components/header.mjs +1 -2
- package/dist/modules/data-tables/tables/data-table/components/row.mjs +1 -2
- package/dist/modules/data-tables/tables/data-table/components/table.d.mts +2 -5
- package/dist/modules/data-tables/tables/data-table/components/table.mjs +2 -3
- package/dist/modules/data-tables/tables/inline-table/components/body.mjs +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.mjs +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.mjs +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.d.mts +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.mjs +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/header.mjs +1 -2
- package/dist/modules/data-tables/tables/inline-table/components/row.client.mjs +3 -9
- package/dist/modules/data-tables/tables/inline-table/components/table.d.mts +2 -5
- package/dist/modules/data-tables/tables/inline-table/components/table.mjs +2 -3
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts +2 -5
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.mjs +1 -2
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.d.mts +2 -3
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.mjs +1 -2
- package/dist/modules/database/lib/helpers.d.mts +1 -2
- package/dist/modules/database/lib/helpers.mjs +1 -2
- package/dist/modules/database/lib/service.server.d.mts +1 -2
- package/dist/modules/database/lib/service.server.mjs +1 -2
- package/dist/modules/database/lib/types.d.mts +1 -2
- package/dist/modules/emails/lib/service.server.d.mts +1 -2
- package/dist/modules/emails/lib/service.server.mjs +1 -2
- package/dist/modules/inline/components/cell.client.d.mts +20 -0
- package/dist/modules/inline/components/cell.client.mjs +46 -0
- package/dist/modules/inline/components/field.client.d.mts +36 -0
- package/dist/modules/inline/components/field.client.mjs +61 -0
- package/dist/modules/inline/components/inputs/combobox-dropdown.client.d.mts +27 -0
- package/dist/modules/inline/components/inputs/combobox-dropdown.client.mjs +49 -0
- package/dist/modules/inline/components/inputs/combobox.client.d.mts +22 -0
- package/dist/modules/inline/components/inputs/combobox.client.mjs +45 -0
- package/dist/modules/inline/components/inputs/date-time.client.d.mts +24 -0
- package/dist/modules/inline/components/inputs/date-time.client.mjs +48 -0
- package/dist/modules/inline/components/inputs/date.client.d.mts +66 -0
- package/dist/modules/inline/components/inputs/date.client.mjs +175 -0
- package/dist/modules/inline/components/inputs/editor.client.d.mts +25 -0
- package/dist/modules/inline/components/inputs/editor.client.mjs +51 -0
- package/dist/modules/inline/components/inputs/input-recipient.client.d.mts +27 -0
- package/dist/modules/inline/components/inputs/input-recipient.client.mjs +48 -0
- package/dist/modules/inline/components/inputs/input.client.d.mts +52 -0
- package/dist/modules/inline/components/inputs/input.client.mjs +129 -0
- package/dist/modules/inline/components/inputs/select.client.d.mts +31 -0
- package/dist/modules/inline/components/inputs/select.client.mjs +64 -0
- package/dist/modules/inline/components/inputs/switch.client.d.mts +21 -0
- package/dist/modules/inline/components/inputs/switch.client.mjs +42 -0
- package/dist/modules/inline/components/inputs/toggle.client.d.mts +24 -0
- package/dist/modules/inline/components/inputs/toggle.client.mjs +47 -0
- package/dist/modules/inline/hooks/inline-provider.d.mts +28 -0
- package/dist/modules/inline/hooks/inline-provider.mjs +25 -0
- package/dist/modules/inline/hooks/inline-state.client.d.mts +30 -0
- package/dist/modules/inline/hooks/inline-state.client.mjs +25 -0
- package/dist/modules/inline/hooks/use-inline.client.d.mts +144 -0
- package/dist/modules/inline/hooks/use-inline.client.mjs +125 -0
- package/dist/modules/inline/lib/validators.d.mts +56 -0
- package/dist/modules/inline/lib/validators.mjs +34 -0
- package/dist/modules/inline/lib/variants.d.mts +11 -0
- package/dist/modules/inline/lib/variants.mjs +21 -0
- package/dist/modules/router/handler/caller.client.d.mts +1 -2
- package/dist/modules/router/handler/caller.client.mjs +1 -2
- package/dist/modules/router/handler/caller.server.d.mts +1 -2
- package/dist/modules/router/handler/caller.server.mjs +1 -2
- package/dist/modules/router/handler/context.server.d.mts +2 -3
- package/dist/modules/router/handler/context.server.mjs +1 -2
- package/dist/modules/router/handler/init.server.d.mts +3 -31
- package/dist/modules/router/handler/init.server.mjs +8 -6
- package/dist/modules/router/handler/register.server.d.mts +1 -2
- package/dist/modules/router/handler/register.server.mjs +1 -2
- package/dist/modules/router/handler/route.server.d.mts +2 -3
- package/dist/modules/router/handler/route.server.mjs +1 -2
- package/dist/modules/router/lib/helpers.mjs +1 -2
- package/dist/modules/router/lib/query-client.d.mts +1 -2
- package/dist/modules/router/lib/query-client.mjs +1 -2
- package/dist/modules/router/lib/query-client.server.d.mts +1 -2
- package/dist/modules/router/lib/query-client.server.mjs +1 -2
- package/dist/modules/router/lib/validators.d.mts +1 -2
- package/dist/modules/router/lib/validators.mjs +1 -2
- package/dist/modules/storage/components/dropzone-context.client.d.mts +1 -2
- package/dist/modules/storage/components/dropzone-context.client.mjs +1 -2
- package/dist/modules/storage/components/dropzone.client.d.mts +3 -4
- package/dist/modules/storage/components/dropzone.client.mjs +1 -2
- package/dist/modules/storage/components/image-grid.client.d.mts +1 -2
- package/dist/modules/storage/components/image-grid.client.mjs +1 -2
- package/dist/modules/storage/components/image.client.d.mts +1 -2
- package/dist/modules/storage/components/image.client.mjs +1 -2
- package/dist/modules/storage/components/upload-button.client.d.mts +1 -2
- package/dist/modules/storage/components/upload-button.client.mjs +1 -2
- package/dist/modules/storage/components/upload-zone-context.client.d.mts +1 -2
- package/dist/modules/storage/components/upload-zone-context.client.mjs +1 -2
- package/dist/modules/storage/components/upload-zone.client.d.mts +1 -2
- package/dist/modules/storage/components/upload-zone.client.mjs +1 -2
- package/dist/modules/storage/lib/constants.d.mts +1 -2
- package/dist/modules/storage/lib/constants.mjs +1 -2
- package/dist/modules/storage/lib/helpers.d.mts +1 -2
- package/dist/modules/storage/lib/helpers.mjs +1 -2
- package/dist/modules/storage/lib/procedures.server.d.mts +10 -11
- package/dist/modules/storage/lib/procedures.server.mjs +1 -2
- package/dist/modules/storage/lib/router-handlers.server.d.mts +2 -3
- package/dist/modules/storage/lib/router-handlers.server.mjs +1 -2
- package/dist/modules/storage/lib/schema.d.mts +2 -3
- package/dist/modules/storage/lib/schema.mjs +1 -2
- package/dist/modules/storage/lib/service.server.d.mts +34 -35
- package/dist/modules/storage/lib/service.server.mjs +1 -2
- package/dist/modules/storage/lib/upload.client.d.mts +1 -2
- package/dist/modules/storage/lib/upload.client.mjs +1 -2
- package/dist/modules/storage/lib/validators.d.mts +5 -6
- package/dist/modules/storage/lib/validators.mjs +1 -2
- package/dist/modules/storage/providers/adapters/s3.server.d.mts +1 -2
- package/dist/modules/storage/providers/adapters/s3.server.mjs +1 -2
- package/dist/modules/storage/providers/lib/constants.d.mts +1 -2
- package/dist/modules/storage/providers/lib/constants.mjs +1 -2
- package/dist/modules/storage/providers/lib/errors.d.mts +1 -2
- package/dist/modules/storage/providers/lib/errors.mjs +1 -2
- package/dist/modules/storage/providers/lib/types.d.mts +1 -2
- package/dist/modules/storage/providers/lib/validators.d.mts +1 -2
- package/dist/modules/storage/providers/lib/validators.mjs +1 -2
- package/dist/router/client.d.mts +1 -1
- package/dist/router/client.mjs +1 -1
- package/dist/router/server.d.mts +7 -7
- package/dist/router/server.mjs +7 -7
- package/dist/router.d.mts +1 -1
- package/dist/router.mjs +1 -1
- package/dist/src/components/common/icons.d.mts +60 -0
- package/dist/src/components/common/icons.mjs +121 -0
- package/dist/src/components/common/status.d.mts +52 -0
- package/dist/src/components/common/status.mjs +55 -0
- package/dist/src/components/editor/components/content.client.d.mts +6 -0
- package/dist/src/components/editor/components/content.client.mjs +16 -0
- package/dist/src/components/editor/components/editor.client.d.mts +48 -0
- package/dist/src/components/editor/components/editor.client.mjs +55 -0
- package/dist/src/components/editor/components/menu-nodes.client.mjs +92 -0
- package/dist/src/components/editor/components/menu.client.d.mts +9 -0
- package/dist/src/components/editor/components/menu.client.mjs +168 -0
- package/dist/src/components/editor/extensions/file-handler/extension.d.mts +20 -0
- package/dist/src/components/editor/extensions/file-handler/extension.mjs +39 -0
- package/dist/src/components/editor/extensions/file-handler/strategy.d.mts +26 -0
- package/dist/src/components/editor/extensions/file-handler/strategy.mjs +110 -0
- package/dist/src/components/editor/extensions/file-handler/utils.mjs +49 -0
- package/dist/src/components/editor/extensions/image/extension.d.mts +7 -0
- package/dist/src/components/editor/extensions/image/extension.mjs +50 -0
- package/dist/src/components/editor/extensions/skeleton/extension.mjs +40 -0
- package/dist/src/components/editor/extensions/skeleton/renderer.mjs +24 -0
- package/dist/src/components/editor/lib/constants.d.mts +62 -0
- package/dist/src/components/editor/lib/constants.mjs +101 -0
- package/dist/src/components/editor/lib/extensions.d.mts +67 -0
- package/dist/src/components/editor/lib/extensions.mjs +49 -0
- package/dist/src/components/editor/lib/helpers.d.mts +21 -0
- package/dist/src/components/editor/lib/helpers.mjs +68 -0
- package/dist/src/components/editor/lib/types.d.mts +9 -0
- package/dist/src/components/editor/lib/variants.mjs +15 -0
- package/dist/src/components/emails/forget-password-email.mjs +50 -0
- package/dist/src/components/header/back-button.client.d.mts +9 -0
- package/dist/src/components/header/back-button.client.mjs +42 -0
- package/dist/src/components/header/bottom-bar.client.d.mts +28 -0
- package/dist/src/components/header/bottom-bar.client.mjs +37 -0
- package/dist/src/components/header/breadcrumbs.client.d.mts +34 -0
- package/dist/src/components/header/breadcrumbs.client.mjs +63 -0
- package/dist/src/components/header/header.client.d.mts +11 -0
- package/dist/src/components/header/header.client.mjs +14 -0
- package/dist/src/components/header/indicator.client.mjs +24 -0
- package/dist/src/components/header/mobile-nav-switcher.client.d.mts +9 -0
- package/dist/src/components/header/mobile-nav-switcher.client.mjs +18 -0
- package/dist/src/components/header/top-bar.client.d.mts +42 -0
- package/dist/src/components/header/top-bar.client.mjs +47 -0
- package/dist/src/components/layouts/admin-content.client.d.mts +12 -0
- package/dist/src/components/layouts/admin-content.client.mjs +22 -0
- package/dist/src/components/layouts/admin-error-pages.d.mts +22 -0
- package/dist/src/components/layouts/admin-error-pages.mjs +59 -0
- package/dist/src/components/layouts/admin-layout.d.mts +7 -0
- package/dist/src/components/layouts/admin-layout.mjs +13 -0
- package/dist/src/components/layouts/admin-loading.d.mts +7 -0
- package/dist/src/components/layouts/admin-loading.mjs +13 -0
- package/dist/src/components/layouts/empty-page.d.mts +30 -0
- package/dist/src/components/layouts/empty-page.mjs +28 -0
- package/dist/src/components/layouts/error-page.d.mts +47 -0
- package/dist/src/components/layouts/error-page.mjs +53 -0
- package/dist/src/components/layouts/error-sections.d.mts +28 -0
- package/dist/src/components/layouts/error-sections.mjs +46 -0
- package/dist/src/components/layouts/list-layout.d.mts +11 -0
- package/dist/src/components/layouts/list-layout.mjs +14 -0
- package/dist/src/components/layouts/providers.client.d.mts +9 -0
- package/dist/src/components/layouts/providers.client.mjs +31 -0
- package/dist/src/components/layouts/root-error-pages.d.mts +9 -0
- package/dist/src/components/layouts/root-error-pages.mjs +16 -0
- package/dist/src/components/layouts/root-layout.server.d.mts +36 -0
- package/dist/src/components/layouts/root-layout.server.mjs +46 -0
- package/dist/src/components/layouts/root-loading.d.mts +6 -0
- package/dist/src/components/layouts/root-loading.mjs +13 -0
- package/dist/src/components/layouts/tab-layout.d.mts +22 -0
- package/dist/src/components/layouts/tab-layout.mjs +50 -0
- package/dist/src/components/lists/data-list.d.mts +30 -0
- package/dist/src/components/lists/data-list.mjs +35 -0
- package/dist/src/components/lists/data-stack.d.mts +48 -0
- package/dist/src/components/lists/data-stack.mjs +56 -0
- package/dist/src/components/navigation/admin-sidebar-header.client.mjs +92 -0
- package/dist/src/components/navigation/admin-sidebar-paths.client.d.mts +91 -0
- package/dist/src/components/navigation/admin-sidebar-paths.client.mjs +143 -0
- package/dist/src/components/navigation/admin-sidebar-skeleton.mjs +30 -0
- package/dist/src/components/ui/accordion.client.d.mts +25 -0
- package/dist/src/components/ui/accordion.client.mjs +57 -0
- package/dist/src/components/ui/alert-dialog.client.d.mts +60 -0
- package/dist/src/components/ui/alert-dialog.client.mjs +103 -0
- package/dist/src/components/ui/alert.d.mts +28 -0
- package/dist/src/components/ui/alert.mjs +44 -0
- package/dist/src/components/ui/aspect-ratio.client.d.mts +9 -0
- package/dist/src/components/ui/aspect-ratio.client.mjs +15 -0
- package/dist/src/components/ui/avatar.client.d.mts +34 -0
- package/dist/src/components/ui/avatar.client.mjs +53 -0
- package/dist/src/components/ui/badge.d.mts +19 -0
- package/dist/src/components/ui/badge.mjs +28 -0
- package/dist/src/components/ui/breadcrumb.d.mts +37 -0
- package/dist/src/components/ui/breadcrumb.mjs +70 -0
- package/dist/src/components/ui/button-group.d.mts +28 -0
- package/dist/src/components/ui/button-group.mjs +40 -0
- package/dist/src/components/ui/button.d.mts +21 -0
- package/dist/src/components/ui/button.mjs +48 -0
- package/dist/src/components/ui/calendar.client.d.mts +30 -0
- package/dist/src/components/ui/calendar.client.mjs +113 -0
- package/dist/src/components/ui/card.d.mts +37 -0
- package/dist/src/components/ui/card.mjs +57 -0
- package/dist/src/components/ui/carousel.client.d.mts +56 -0
- package/dist/src/components/ui/carousel.client.mjs +135 -0
- package/dist/src/components/ui/chart.client.d.mts +71 -0
- package/dist/src/components/ui/chart.client.mjs +142 -0
- package/dist/src/components/ui/checkbox.client.d.mts +11 -0
- package/dist/src/components/ui/checkbox.client.mjs +23 -0
- package/dist/src/components/ui/collapsible.client.d.mts +15 -0
- package/dist/src/components/ui/collapsible.client.mjs +27 -0
- package/dist/src/components/ui/color-picker.client.d.mts +15 -0
- package/dist/src/components/ui/color-picker.client.mjs +38 -0
- package/dist/src/components/ui/combobox-dropdown.client.d.mts +45 -0
- package/dist/src/components/ui/combobox-dropdown.client.mjs +94 -0
- package/dist/src/components/ui/combobox.client.d.mts +30 -0
- package/dist/src/components/ui/combobox.client.mjs +66 -0
- package/dist/src/components/ui/command.client.d.mts +58 -0
- package/dist/src/components/ui/command.client.mjs +97 -0
- package/dist/src/components/ui/context-menu.client.d.mts +85 -0
- package/dist/src/components/ui/context-menu.client.mjs +127 -0
- package/dist/src/components/ui/date-picker.client.d.mts +20 -0
- package/dist/src/components/ui/date-picker.client.mjs +43 -0
- package/dist/src/components/ui/dialog.client.d.mts +51 -0
- package/dist/src/components/ui/dialog.client.mjs +98 -0
- package/dist/src/components/ui/drawer.client.d.mts +44 -0
- package/dist/src/components/ui/drawer.client.mjs +80 -0
- package/dist/src/components/ui/dropdown-menu.client.d.mts +84 -0
- package/dist/src/components/ui/dropdown-menu.client.mjs +130 -0
- package/dist/src/components/ui/empty.d.mts +35 -0
- package/dist/src/components/ui/empty.mjs +61 -0
- package/dist/src/components/ui/field.client.d.mts +64 -0
- package/dist/src/components/ui/field.client.mjs +113 -0
- package/dist/src/components/ui/form.client.d.mts +47 -0
- package/dist/src/components/ui/form.client.mjs +92 -0
- package/dist/src/components/ui/hover-card.client.d.mts +19 -0
- package/dist/src/components/ui/hover-card.client.mjs +34 -0
- package/dist/src/components/ui/input-date-time.client.d.mts +22 -0
- package/dist/src/components/ui/input-date-time.client.mjs +33 -0
- package/dist/src/components/ui/input-date.d.mts +13 -0
- package/dist/src/components/ui/input-date.mjs +15 -0
- package/dist/src/components/ui/input-group.client.d.mts +58 -0
- package/dist/src/components/ui/input-group.client.mjs +105 -0
- package/dist/src/components/ui/input-recipient.d.mts +26 -0
- package/dist/src/components/ui/input-recipient.mjs +218 -0
- package/dist/src/components/ui/input-time.d.mts +13 -0
- package/dist/src/components/ui/input-time.mjs +15 -0
- package/dist/src/components/ui/input.d.mts +11 -0
- package/dist/src/components/ui/input.mjs +15 -0
- package/dist/src/components/ui/item.d.mts +62 -0
- package/dist/src/components/ui/item.mjs +118 -0
- package/dist/src/components/ui/kbd.d.mts +13 -0
- package/dist/src/components/ui/kbd.mjs +21 -0
- package/dist/src/components/ui/label.d.mts +11 -0
- package/dist/src/components/ui/label.mjs +17 -0
- package/dist/src/components/ui/loader.d.mts +6 -0
- package/dist/src/components/ui/loader.mjs +62 -0
- package/dist/src/components/ui/navigation-menu.d.mts +46 -0
- package/dist/src/components/ui/navigation-menu.mjs +81 -0
- package/dist/src/components/ui/pagination.d.mts +45 -0
- package/dist/src/components/ui/pagination.mjs +87 -0
- package/dist/src/components/ui/popover.client.d.mts +34 -0
- package/dist/src/components/ui/popover.client.mjs +58 -0
- package/dist/src/components/ui/progress.client.d.mts +12 -0
- package/dist/src/components/ui/progress.client.mjs +22 -0
- package/dist/src/components/ui/radio-group.d.mts +15 -0
- package/dist/src/components/ui/radio-group.mjs +29 -0
- package/dist/src/components/ui/resizable.client.d.mts +20 -0
- package/dist/src/components/ui/resizable.client.mjs +31 -0
- package/dist/src/components/ui/scroll-area.d.mts +17 -0
- package/dist/src/components/ui/scroll-area.mjs +39 -0
- package/dist/src/components/ui/select.client.d.mts +53 -0
- package/dist/src/components/ui/select.client.mjs +102 -0
- package/dist/src/components/ui/separator.d.mts +13 -0
- package/dist/src/components/ui/separator.mjs +19 -0
- package/dist/src/components/ui/sheet.client.d.mts +42 -0
- package/dist/src/components/ui/sheet.client.mjs +92 -0
- package/dist/src/components/ui/sidebar.client.d.mts +167 -0
- package/dist/src/components/ui/sidebar.client.mjs +373 -0
- package/dist/src/components/ui/skeleton.d.mts +9 -0
- package/dist/src/components/ui/skeleton.mjs +14 -0
- package/dist/src/components/ui/slider.d.mts +15 -0
- package/dist/src/components/ui/slider.mjs +39 -0
- package/dist/src/components/ui/sonner.client.d.mts +9 -0
- package/dist/src/components/ui/sonner.client.mjs +24 -0
- package/dist/src/components/ui/spinner.d.mts +9 -0
- package/dist/src/components/ui/spinner.mjs +16 -0
- package/dist/src/components/ui/switch.client.d.mts +14 -0
- package/dist/src/components/ui/switch.client.mjs +22 -0
- package/dist/src/components/ui/tabs.client.d.mts +30 -0
- package/dist/src/components/ui/tabs.client.mjs +48 -0
- package/dist/src/components/ui/textarea.d.mts +10 -0
- package/dist/src/components/ui/textarea.mjs +14 -0
- package/dist/src/components/ui/toggle-group.client.d.mts +28 -0
- package/dist/src/components/ui/toggle-group.client.mjs +54 -0
- package/dist/src/components/ui/toggle.client.d.mts +19 -0
- package/dist/src/components/ui/toggle.client.mjs +39 -0
- package/dist/src/components/ui/tooltip.client.d.mts +23 -0
- package/dist/src/components/ui/tooltip.client.mjs +38 -0
- package/dist/src/lib/hooks/use-action.d.mts +16 -0
- package/dist/src/lib/hooks/use-action.mjs +41 -0
- package/dist/src/lib/hooks/use-indicator.d.mts +39 -0
- package/dist/src/lib/hooks/use-indicator.mjs +63 -0
- package/dist/src/lib/hooks/use-mobile.client.d.mts +6 -0
- package/dist/src/lib/hooks/use-mobile.client.mjs +21 -0
- package/dist/src/lib/types/config.d.mts +11 -0
- package/dist/src/lib/utils/array-move.d.mts +10 -0
- package/dist/src/lib/utils/array-move.mjs +12 -0
- package/dist/src/lib/utils/cn.d.mts +6 -0
- package/dist/src/lib/utils/cn.mjs +10 -0
- package/dist/src/lib/utils/fonts.d.mts +7 -0
- package/dist/src/lib/utils/fonts.mjs +11 -0
- package/dist/src/lib/utils/format.d.mts +51 -0
- package/dist/src/lib/utils/format.mjs +113 -0
- package/dist/src/lib/utils/manifest.d.mts +7 -0
- package/dist/src/lib/utils/manifest.mjs +35 -0
- package/dist/src/lib/utils/markdown.d.mts +9 -0
- package/dist/src/lib/utils/markdown.mjs +14 -0
- package/dist/src/lib/utils/url.d.mts +9 -0
- package/dist/src/lib/utils/url.mjs +15 -0
- package/dist/src/lib/utils/user-agent.mjs +74 -0
- package/dist/src/modules/auth/components/allowed.client.d.mts +33 -0
- package/dist/src/modules/auth/components/allowed.client.mjs +19 -0
- package/dist/src/modules/auth/components/auth-layout.server.d.mts +9 -0
- package/dist/src/modules/auth/components/auth-layout.server.mjs +36 -0
- package/dist/src/modules/auth/components/auth-loading.d.mts +6 -0
- package/dist/src/modules/auth/components/auth-loading.mjs +17 -0
- package/dist/src/modules/auth/components/create-first-user-guard.server.d.mts +15 -0
- package/dist/src/modules/auth/components/create-first-user-guard.server.mjs +15 -0
- package/dist/src/modules/auth/components/create-first-user-page.client.d.mts +6 -0
- package/dist/src/modules/auth/components/create-first-user-page.client.mjs +153 -0
- package/dist/src/modules/auth/components/forget-password-page.client.d.mts +6 -0
- package/dist/src/modules/auth/components/forget-password-page.client.mjs +72 -0
- package/dist/src/modules/auth/components/guard.server.d.mts +14 -0
- package/dist/src/modules/auth/components/guard.server.mjs +20 -0
- package/dist/src/modules/auth/components/login-page.client.d.mts +11 -0
- package/dist/src/modules/auth/components/login-page.client.mjs +155 -0
- package/dist/src/modules/auth/components/reset-password-page.client.d.mts +11 -0
- package/dist/src/modules/auth/components/reset-password-page.client.mjs +121 -0
- package/dist/src/modules/auth/components/update-password-command.d.mts +22 -0
- package/dist/src/modules/auth/components/update-password-command.mjs +47 -0
- package/dist/src/modules/auth/db/schema.d.mts +983 -0
- package/dist/src/modules/auth/db/schema.mjs +101 -0
- package/dist/src/modules/auth/handler/create-client.client.d.mts +6393 -0
- package/dist/src/modules/auth/handler/create-client.client.mjs +25 -0
- package/dist/src/modules/auth/handler/proxy.server.d.mts +11 -0
- package/dist/src/modules/auth/handler/proxy.server.mjs +20 -0
- package/dist/src/modules/auth/handler/route.server.d.mts +16 -0
- package/dist/src/modules/auth/handler/route.server.mjs +28 -0
- package/dist/src/modules/auth/handler/service.server.d.mts +2101 -0
- package/dist/src/modules/auth/handler/service.server.mjs +87 -0
- package/dist/src/modules/auth/hooks/use-auth-client.d.mts +23 -0
- package/dist/src/modules/auth/hooks/use-auth-client.mjs +30 -0
- package/dist/src/modules/auth/hooks/use-permission.d.mts +42 -0
- package/dist/src/modules/auth/hooks/use-permission.mjs +57 -0
- package/dist/src/modules/auth/hooks/use-session.d.mts +40 -0
- package/dist/src/modules/auth/hooks/use-session.mjs +22 -0
- package/dist/src/modules/auth/lib/helpers.server.d.mts +84 -0
- package/dist/src/modules/auth/lib/helpers.server.mjs +41 -0
- package/dist/src/modules/auth/lib/permissions.d.mts +17 -0
- package/dist/src/modules/auth/lib/permissions.mjs +14 -0
- package/dist/src/modules/auth/lib/validators.d.mts +299 -0
- package/dist/src/modules/auth/lib/validators.mjs +59 -0
- package/dist/src/modules/commands/components/menus/context-menu.client.d.mts +40 -0
- package/dist/src/modules/commands/components/menus/context-menu.client.mjs +47 -0
- package/dist/src/modules/commands/components/menus/dropdown-menu.client.d.mts +30 -0
- package/dist/src/modules/commands/components/menus/dropdown-menu.client.mjs +58 -0
- package/dist/src/modules/commands/components/menus/floating-menu.client.d.mts +30 -0
- package/dist/src/modules/commands/components/menus/floating-menu.client.mjs +33 -0
- package/dist/src/modules/commands/components/menus/inline-menu.client.d.mts +30 -0
- package/dist/src/modules/commands/components/menus/inline-menu.client.mjs +41 -0
- package/dist/src/modules/commands/components/menus/responsive-menu.client.d.mts +17 -0
- package/dist/src/modules/commands/components/menus/responsive-menu.client.mjs +22 -0
- package/dist/src/modules/commands/components/primitives/alert-dialog-command.client.d.mts +65 -0
- package/dist/src/modules/commands/components/primitives/alert-dialog-command.client.mjs +138 -0
- package/dist/src/modules/commands/components/primitives/click-command.client.d.mts +26 -0
- package/dist/src/modules/commands/components/primitives/click-command.client.mjs +52 -0
- package/dist/src/modules/commands/components/primitives/command-trigger.client.d.mts +17 -0
- package/dist/src/modules/commands/components/primitives/command-trigger.client.mjs +42 -0
- package/dist/src/modules/commands/components/primitives/dialog-command.client.d.mts +53 -0
- package/dist/src/modules/commands/components/primitives/dialog-command.client.mjs +116 -0
- package/dist/src/modules/commands/components/primitives/dropdown-command.client.d.mts +47 -0
- package/dist/src/modules/commands/components/primitives/dropdown-command.client.mjs +131 -0
- package/dist/src/modules/commands/components/primitives/empty-command.client.d.mts +20 -0
- package/dist/src/modules/commands/components/primitives/empty-command.client.mjs +44 -0
- package/dist/src/modules/commands/components/primitives/form-dialog-command.client.d.mts +71 -0
- package/dist/src/modules/commands/components/primitives/form-dialog-command.client.mjs +163 -0
- package/dist/src/modules/commands/components/render-command.mjs +50 -0
- package/dist/src/modules/commands/components/utils/archive-command.client.d.mts +24 -0
- package/dist/src/modules/commands/components/utils/archive-command.client.mjs +29 -0
- package/dist/src/modules/commands/components/utils/delete-command.client.d.mts +20 -0
- package/dist/src/modules/commands/components/utils/delete-command.client.mjs +28 -0
- package/dist/src/modules/commands/hooks/use-command-mutation.client.d.mts +11 -0
- package/dist/src/modules/commands/hooks/use-command-mutation.client.mjs +39 -0
- package/dist/src/modules/commands/hooks/use-command.client.d.mts +31 -0
- package/dist/src/modules/commands/hooks/use-command.client.mjs +45 -0
- package/dist/src/modules/commands/lib/builder.d.mts +39 -0
- package/dist/src/modules/commands/lib/builder.mjs +47 -0
- package/dist/src/modules/commands/lib/registery.d.mts +35 -0
- package/dist/src/modules/commands/lib/registery.mjs +43 -0
- package/dist/src/modules/config/lib/config.d.mts +16 -0
- package/dist/src/modules/config/lib/config.mjs +8 -0
- package/dist/src/modules/config/lib/context.d.mts +17 -0
- package/dist/src/modules/config/lib/context.mjs +7 -0
- package/dist/src/modules/config/paths/helpers.d.mts +9 -0
- package/dist/src/modules/config/paths/helpers.mjs +8 -0
- package/dist/src/modules/config/paths/types.d.mts +31 -0
- package/dist/src/modules/data-tables/components/cell/common.client.d.mts +26 -0
- package/dist/src/modules/data-tables/components/cell/common.client.mjs +35 -0
- package/dist/src/modules/data-tables/components/cell/index.client.d.mts +10 -0
- package/dist/src/modules/data-tables/components/cell/index.client.mjs +24 -0
- package/dist/src/modules/data-tables/components/cell/select.client.d.mts +10 -0
- package/dist/src/modules/data-tables/components/cell/select.client.mjs +36 -0
- package/dist/src/modules/data-tables/components/column-header.d.mts +15 -0
- package/dist/src/modules/data-tables/components/column-header.mjs +46 -0
- package/dist/src/modules/data-tables/components/filters/combobox.client.d.mts +27 -0
- package/dist/src/modules/data-tables/components/filters/combobox.client.mjs +97 -0
- package/dist/src/modules/data-tables/components/filters/date-range.client.d.mts +24 -0
- package/dist/src/modules/data-tables/components/filters/date-range.client.mjs +99 -0
- package/dist/src/modules/data-tables/components/filters/search.client.d.mts +17 -0
- package/dist/src/modules/data-tables/components/filters/search.client.mjs +32 -0
- package/dist/src/modules/data-tables/components/filters/slider.client.d.mts +22 -0
- package/dist/src/modules/data-tables/components/filters/slider.client.mjs +128 -0
- package/dist/src/modules/data-tables/components/filters/toggle.client.d.mts +17 -0
- package/dist/src/modules/data-tables/components/filters/toggle.client.mjs +25 -0
- package/dist/src/modules/data-tables/components/footer.mjs +28 -0
- package/dist/src/modules/data-tables/components/header.d.mts +40 -0
- package/dist/src/modules/data-tables/components/header.mjs +43 -0
- package/dist/src/modules/data-tables/components/layout.d.mts +11 -0
- package/dist/src/modules/data-tables/components/layout.mjs +14 -0
- package/dist/src/modules/data-tables/components/search-input.client.d.mts +6 -0
- package/dist/src/modules/data-tables/components/search-input.client.mjs +19 -0
- package/dist/src/modules/data-tables/components/skeleton.d.mts +6 -0
- package/dist/src/modules/data-tables/components/skeleton.mjs +21 -0
- package/dist/src/modules/data-tables/components/table.d.mts +33 -0
- package/dist/src/modules/data-tables/components/table.mjs +55 -0
- package/dist/src/modules/data-tables/components/toolbar.d.mts +22 -0
- package/dist/src/modules/data-tables/components/toolbar.mjs +21 -0
- package/dist/src/modules/data-tables/hooks/use-context.client.d.mts +47 -0
- package/dist/src/modules/data-tables/hooks/use-context.client.mjs +34 -0
- package/dist/src/modules/data-tables/hooks/use-search.client.mjs +39 -0
- package/dist/src/modules/data-tables/hooks/use-selection.client.mjs +44 -0
- package/dist/src/modules/data-tables/hooks/use-table.client.d.mts +10 -0
- package/dist/src/modules/data-tables/hooks/use-table.client.mjs +55 -0
- package/dist/src/modules/data-tables/lib/converters/dto.d.mts +50 -0
- package/dist/src/modules/data-tables/lib/converters/dto.mjs +24 -0
- package/dist/src/modules/data-tables/lib/converters/filters.d.mts +41 -0
- package/dist/src/modules/data-tables/lib/converters/filters.mjs +38 -0
- package/dist/src/modules/data-tables/lib/converters/pagination.d.mts +17 -0
- package/dist/src/modules/data-tables/lib/converters/pagination.mjs +15 -0
- package/dist/src/modules/data-tables/lib/converters/search.d.mts +16 -0
- package/dist/src/modules/data-tables/lib/converters/search.mjs +15 -0
- package/dist/src/modules/data-tables/lib/converters/sorting.d.mts +48 -0
- package/dist/src/modules/data-tables/lib/converters/sorting.mjs +55 -0
- package/dist/src/modules/data-tables/lib/filters/config.d.mts +13 -0
- package/dist/src/modules/data-tables/lib/filters/config.mjs +5 -0
- package/dist/src/modules/data-tables/lib/filters/helpers.d.mts +10 -0
- package/dist/src/modules/data-tables/lib/filters/helpers.mjs +16 -0
- package/dist/src/modules/data-tables/lib/filters/parsers.d.mts +46 -0
- package/dist/src/modules/data-tables/lib/filters/parsers.mjs +47 -0
- package/dist/src/modules/data-tables/lib/filters/resolvers.d.mts +28 -0
- package/dist/src/modules/data-tables/lib/filters/resolvers.mjs +55 -0
- package/dist/src/modules/data-tables/lib/helpers/create-column.mjs +10 -0
- package/dist/src/modules/data-tables/lib/search-params.d.mts +21 -0
- package/dist/src/modules/data-tables/lib/search-params.mjs +16 -0
- package/dist/src/modules/data-tables/lib/types.d.mts +54 -0
- package/dist/src/modules/data-tables/lib/validators.d.mts +19 -0
- package/dist/src/modules/data-tables/lib/validators.mjs +16 -0
- package/dist/src/modules/data-tables/server/get-data.server.d.mts +29 -0
- package/dist/src/modules/data-tables/server/get-data.server.mjs +47 -0
- package/dist/src/modules/data-tables/strategies/helpers/sorting.mjs +37 -0
- package/dist/src/modules/data-tables/strategies/infinite/components.mjs +50 -0
- package/dist/src/modules/data-tables/strategies/infinite/strategy.d.mts +20 -0
- package/dist/src/modules/data-tables/strategies/infinite/strategy.mjs +50 -0
- package/dist/src/modules/data-tables/strategies/pagination/components.mjs +131 -0
- package/dist/src/modules/data-tables/strategies/pagination/strategy.d.mts +12 -0
- package/dist/src/modules/data-tables/strategies/pagination/strategy.mjs +45 -0
- package/dist/src/modules/data-tables/tables/data-table/components/body.mjs +32 -0
- package/dist/src/modules/data-tables/tables/data-table/components/header.mjs +12 -0
- package/dist/src/modules/data-tables/tables/data-table/components/row.mjs +13 -0
- package/dist/src/modules/data-tables/tables/data-table/components/table.d.mts +8 -0
- package/dist/src/modules/data-tables/tables/data-table/components/table.mjs +42 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/body.mjs +69 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/cells/common.d.mts +11 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/cells/common.mjs +14 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts +24 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.mjs +38 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/cells/read-only.d.mts +11 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/cells/read-only.mjs +14 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/header.mjs +10 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/row.client.mjs +24 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/table.d.mts +14 -0
- package/dist/src/modules/data-tables/tables/inline-table/components/table.mjs +52 -0
- package/dist/src/modules/data-tables/tables/inline-table/hooks/context.client.d.mts +48 -0
- package/dist/src/modules/data-tables/tables/inline-table/hooks/context.client.mjs +58 -0
- package/dist/src/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.d.mts +29 -0
- package/dist/src/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.mjs +94 -0
- package/dist/src/modules/database/lib/helpers.d.mts +15 -0
- package/dist/src/modules/database/lib/helpers.mjs +16 -0
- package/dist/src/modules/database/lib/service.server.d.mts +33 -0
- package/dist/src/modules/database/lib/service.server.mjs +23 -0
- package/dist/src/modules/database/lib/types.d.mts +4 -0
- package/dist/src/modules/emails/lib/service.server.d.mts +28 -0
- package/dist/src/modules/emails/lib/service.server.mjs +20 -0
- package/dist/src/modules/inline/components/cell.client.d.mts +20 -0
- package/dist/src/modules/inline/components/cell.client.mjs +46 -0
- package/dist/src/modules/inline/components/field.client.d.mts +36 -0
- package/dist/src/modules/inline/components/field.client.mjs +61 -0
- package/dist/src/modules/inline/components/inputs/combobox-dropdown.client.d.mts +27 -0
- package/dist/src/modules/inline/components/inputs/combobox-dropdown.client.mjs +49 -0
- package/dist/src/modules/inline/components/inputs/combobox.client.d.mts +22 -0
- package/dist/src/modules/inline/components/inputs/combobox.client.mjs +45 -0
- package/dist/src/modules/inline/components/inputs/date-time.client.d.mts +24 -0
- package/dist/src/modules/inline/components/inputs/date-time.client.mjs +48 -0
- package/dist/src/modules/inline/components/inputs/date.client.d.mts +66 -0
- package/dist/src/modules/inline/components/inputs/date.client.mjs +175 -0
- package/dist/src/modules/inline/components/inputs/editor.client.d.mts +25 -0
- package/dist/src/modules/inline/components/inputs/editor.client.mjs +51 -0
- package/dist/src/modules/inline/components/inputs/input-recipient.client.d.mts +27 -0
- package/dist/src/modules/inline/components/inputs/input-recipient.client.mjs +48 -0
- package/dist/src/modules/inline/components/inputs/input.client.d.mts +52 -0
- package/dist/src/modules/inline/components/inputs/input.client.mjs +129 -0
- package/dist/src/modules/inline/components/inputs/select.client.d.mts +31 -0
- package/dist/src/modules/inline/components/inputs/select.client.mjs +64 -0
- package/dist/src/modules/inline/components/inputs/switch.client.d.mts +21 -0
- package/dist/src/modules/inline/components/inputs/switch.client.mjs +42 -0
- package/dist/src/modules/inline/components/inputs/toggle.client.d.mts +24 -0
- package/dist/src/modules/inline/components/inputs/toggle.client.mjs +47 -0
- package/dist/src/modules/inline/hooks/inline-provider.d.mts +28 -0
- package/dist/src/modules/inline/hooks/inline-provider.mjs +25 -0
- package/dist/src/modules/inline/hooks/inline-state.client.d.mts +30 -0
- package/dist/src/modules/inline/hooks/inline-state.client.mjs +25 -0
- package/dist/src/modules/inline/hooks/use-inline.client.d.mts +144 -0
- package/dist/src/modules/inline/hooks/use-inline.client.mjs +125 -0
- package/dist/src/modules/inline/lib/validators.d.mts +56 -0
- package/dist/src/modules/inline/lib/validators.mjs +34 -0
- package/dist/src/modules/inline/lib/variants.d.mts +11 -0
- package/dist/src/modules/inline/lib/variants.mjs +21 -0
- package/dist/src/modules/router/handler/caller.client.d.mts +10 -0
- package/dist/src/modules/router/handler/caller.client.mjs +23 -0
- package/dist/src/modules/router/handler/caller.server.d.mts +6 -0
- package/dist/src/modules/router/handler/caller.server.mjs +7 -0
- package/dist/src/modules/router/handler/context.server.d.mts +62 -0
- package/dist/src/modules/router/handler/context.server.mjs +20 -0
- package/dist/src/modules/router/handler/init.server.d.mts +65 -0
- package/dist/src/modules/router/handler/init.server.mjs +55 -0
- package/dist/src/modules/router/handler/register.server.d.mts +8 -0
- package/dist/src/modules/router/handler/register.server.mjs +10 -0
- package/dist/src/modules/router/handler/route.server.d.mts +21 -0
- package/dist/src/modules/router/handler/route.server.mjs +32 -0
- package/dist/src/modules/router/lib/error.server.d.mts +2 -0
- package/dist/src/modules/router/lib/error.server.mjs +3 -0
- package/dist/src/modules/router/lib/helpers.mjs +7 -0
- package/dist/src/modules/router/lib/query-client.d.mts +9 -0
- package/dist/src/modules/router/lib/query-client.mjs +50 -0
- package/dist/src/modules/router/lib/query-client.server.d.mts +17 -0
- package/dist/src/modules/router/lib/query-client.server.mjs +23 -0
- package/dist/src/modules/router/lib/validators.d.mts +12 -0
- package/dist/src/modules/router/lib/validators.mjs +10 -0
- package/dist/src/modules/storage/components/dropzone-context.client.d.mts +18 -0
- package/dist/src/modules/storage/components/dropzone-context.client.mjs +17 -0
- package/dist/src/modules/storage/components/dropzone.client.d.mts +52 -0
- package/dist/src/modules/storage/components/dropzone.client.mjs +110 -0
- package/dist/src/modules/storage/components/image-grid.client.d.mts +32 -0
- package/dist/src/modules/storage/components/image-grid.client.mjs +167 -0
- package/dist/src/modules/storage/components/image.client.d.mts +7 -0
- package/dist/src/modules/storage/components/image.client.mjs +16 -0
- package/dist/src/modules/storage/components/upload-button.client.d.mts +11 -0
- package/dist/src/modules/storage/components/upload-button.client.mjs +33 -0
- package/dist/src/modules/storage/components/upload-zone-context.client.d.mts +30 -0
- package/dist/src/modules/storage/components/upload-zone-context.client.mjs +20 -0
- package/dist/src/modules/storage/components/upload-zone.client.d.mts +27 -0
- package/dist/src/modules/storage/components/upload-zone.client.mjs +111 -0
- package/dist/src/modules/storage/lib/constants.d.mts +5 -0
- package/dist/src/modules/storage/lib/constants.mjs +5 -0
- package/dist/src/modules/storage/lib/helpers.d.mts +29 -0
- package/dist/src/modules/storage/lib/helpers.mjs +49 -0
- package/dist/src/modules/storage/lib/procedures.server.d.mts +1990 -0
- package/dist/src/modules/storage/lib/procedures.server.mjs +21 -0
- package/dist/src/modules/storage/lib/router-handlers.server.d.mts +40 -0
- package/dist/src/modules/storage/lib/router-handlers.server.mjs +123 -0
- package/dist/src/modules/storage/lib/schema.d.mts +291 -0
- package/dist/src/modules/storage/lib/schema.mjs +37 -0
- package/dist/src/modules/storage/lib/service.server.d.mts +2217 -0
- package/dist/src/modules/storage/lib/service.server.mjs +514 -0
- package/dist/src/modules/storage/lib/upload.client.d.mts +57 -0
- package/dist/src/modules/storage/lib/upload.client.mjs +86 -0
- package/dist/src/modules/storage/lib/validators.d.mts +935 -0
- package/dist/src/modules/storage/lib/validators.mjs +52 -0
- package/dist/src/modules/storage/providers/adapters/s3.server.d.mts +18 -0
- package/dist/src/modules/storage/providers/adapters/s3.server.mjs +172 -0
- package/dist/src/modules/storage/providers/lib/constants.d.mts +5 -0
- package/dist/src/modules/storage/providers/lib/constants.mjs +5 -0
- package/dist/src/modules/storage/providers/lib/errors.d.mts +11 -0
- package/dist/src/modules/storage/providers/lib/errors.mjs +12 -0
- package/dist/src/modules/storage/providers/lib/types.d.mts +20 -0
- package/dist/src/modules/storage/providers/lib/validators.d.mts +111 -0
- package/dist/src/modules/storage/providers/lib/validators.mjs +74 -0
- package/dist/storage/client.d.mts +8 -8
- package/dist/storage/client.mjs +8 -8
- package/dist/storage/server.d.mts +4 -4
- package/dist/storage/server.mjs +4 -4
- package/dist/storage.d.mts +8 -8
- package/dist/storage.mjs +7 -7
- package/package.json +69 -66
- package/src/components/emails/forget-password-email.tsx +1 -1
- package/src/components/ui/accordion.client.tsx +1 -1
- package/src/components/ui/alert.tsx +1 -1
- package/src/components/ui/avatar.client.tsx +1 -1
- package/src/components/ui/breadcrumb.tsx +2 -2
- package/src/components/ui/card.tsx +1 -1
- package/src/components/ui/carousel.client.tsx +2 -2
- package/src/components/ui/chart.client.tsx +2 -2
- package/src/components/ui/checkbox.client.tsx +1 -1
- package/src/components/ui/collapsible.client.tsx +1 -1
- package/src/components/ui/command.client.tsx +19 -4
- package/src/components/ui/context-menu.client.tsx +6 -6
- package/src/components/ui/drawer.client.tsx +5 -5
- package/src/components/ui/dropdown-menu.client.tsx +5 -5
- package/src/components/ui/empty.tsx +1 -1
- package/src/components/ui/field.client.tsx +3 -3
- package/src/components/ui/hover-card.client.tsx +1 -1
- package/src/components/ui/input-group.client.tsx +3 -3
- package/src/components/ui/input-recipient.tsx +1 -1
- package/src/components/ui/item.tsx +5 -5
- package/src/components/ui/navigation-menu.tsx +4 -4
- package/src/components/ui/pagination.tsx +0 -1
- package/src/components/ui/radio-group.tsx +1 -1
- package/src/components/ui/sheet.client.tsx +3 -3
- package/src/components/ui/tabs.client.tsx +3 -3
- package/src/entry.ts +3 -3
- package/src/modules/auth/components/allowed.client.tsx +1 -2
- package/src/modules/auth/components/update-password-command.tsx +1 -1
- package/src/modules/auth/lib/helpers.server.ts +1 -1
- package/src/modules/auth/lib/validators.ts +7 -0
- package/src/modules/commands/components/menus/context-menu.client.tsx +79 -0
- package/src/modules/commands/components/menus/dropdown-menu.client.tsx +85 -0
- package/src/modules/commands/components/menus/floating-menu.client.tsx +64 -0
- package/src/modules/commands/components/menus/inline-menu.client.tsx +66 -0
- package/src/modules/commands/components/menus/responsive-menu.client.tsx +38 -0
- package/src/modules/commands/components/primitives/alert-dialog-command.client.tsx +208 -0
- package/src/modules/commands/components/primitives/click-command.client.tsx +81 -0
- package/src/modules/commands/components/primitives/command-trigger.client.tsx +60 -0
- package/src/modules/commands/components/primitives/dialog-command.client.tsx +151 -0
- package/src/modules/commands/components/primitives/dropdown-command.client.tsx +211 -0
- package/src/modules/commands/components/primitives/empty-command.client.tsx +55 -0
- package/src/modules/commands/components/primitives/form-dialog-command.client.tsx +245 -0
- package/src/modules/commands/components/render-command.tsx +51 -10
- package/src/modules/commands/components/utils/archive-command.client.tsx +54 -0
- package/src/modules/commands/components/utils/delete-command.client.tsx +70 -0
- package/src/modules/commands/entry.client.ts +15 -23
- package/src/modules/commands/entry.ts +5 -2
- package/src/modules/commands/hooks/use-command-mutation.client.ts +48 -0
- package/src/modules/commands/hooks/use-command.client.tsx +78 -0
- package/src/modules/commands/lib/builder.ts +91 -0
- package/src/modules/commands/lib/registery.ts +116 -0
- package/src/modules/data-tables/components/filters/combobox.client.tsx +9 -13
- package/src/modules/data-tables/components/filters/date-range.client.tsx +127 -0
- package/src/modules/data-tables/components/filters/search.client.tsx +37 -0
- package/src/modules/data-tables/components/filters/slider.client.tsx +4 -4
- package/src/modules/data-tables/components/filters/toggle.client.tsx +32 -0
- package/src/modules/data-tables/components/footer.tsx +2 -2
- package/src/modules/data-tables/entry.client.ts +3 -0
- package/src/modules/data-tables/entry.server.ts +2 -2
- package/src/modules/data-tables/hooks/use-context.client.tsx +9 -11
- package/src/modules/data-tables/hooks/use-selection.client.ts +12 -5
- package/src/modules/data-tables/hooks/use-table.client.ts +4 -6
- package/src/modules/data-tables/lib/converters/filters.ts +85 -0
- package/src/modules/data-tables/lib/converters/pagination.ts +13 -0
- package/src/modules/data-tables/lib/converters/sorting.ts +61 -18
- package/src/modules/data-tables/lib/filters/parsers.ts +18 -0
- package/src/modules/data-tables/lib/types.ts +4 -4
- package/src/modules/data-tables/server/get-data.server.ts +19 -10
- package/src/modules/data-tables/strategies/infinite/components.tsx +2 -10
- package/src/modules/data-tables/strategies/pagination/components.tsx +1 -5
- package/src/modules/data-tables/tables/data-table/components/body.tsx +2 -2
- package/src/modules/data-tables/tables/data-table/components/header.tsx +1 -1
- package/src/modules/data-tables/tables/data-table/components/row.tsx +2 -21
- package/src/modules/data-tables/tables/data-table/components/table.tsx +2 -2
- package/src/modules/data-tables/tables/inline-table/components/body.tsx +1 -1
- package/src/modules/data-tables/tables/inline-table/components/header.tsx +1 -5
- package/src/modules/data-tables/tables/inline-table/components/row.client.tsx +7 -11
- package/src/modules/data-tables/tables/inline-table/components/table.tsx +2 -2
- package/src/modules/data-tables/tables/inline-table/hooks/context.client.tsx +1 -1
- package/src/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.ts +1 -2
- package/src/modules/inline/components/cell.client.tsx +53 -0
- package/src/modules/inline/components/field.client.tsx +64 -0
- package/src/modules/inline/components/inputs/combobox-dropdown.client.tsx +106 -0
- package/src/modules/inline/components/inputs/combobox.client.tsx +94 -0
- package/src/modules/inline/components/inputs/date-time.client.tsx +96 -0
- package/src/modules/inline/components/inputs/date.client.tsx +295 -0
- package/src/modules/inline/components/inputs/editor.client.tsx +99 -0
- package/src/modules/inline/components/inputs/input-recipient.client.tsx +97 -0
- package/src/modules/inline/components/inputs/input.client.tsx +244 -0
- package/src/modules/inline/components/inputs/select.client.tsx +126 -0
- package/src/modules/inline/components/inputs/switch.client.tsx +88 -0
- package/src/modules/inline/components/inputs/toggle.client.tsx +94 -0
- package/src/modules/inline/entry.client.ts +23 -0
- package/src/modules/inline/hooks/inline-provider.tsx +32 -0
- package/src/modules/inline/hooks/inline-state.client.tsx +33 -0
- package/src/modules/inline/hooks/use-inline.client.tsx +298 -0
- package/src/modules/router/handler/context.server.ts +1 -1
- package/src/modules/router/handler/init.server.ts +2 -1
- package/src/modules/router/handler/route.server.ts +1 -1
- package/src/modules/storage/lib/procedures.server.ts +1 -1
- package/src/modules/storage/lib/router-handlers.server.ts +1 -1
- package/dist/components/common/icons.d.mts.map +0 -1
- package/dist/components/common/icons.mjs.map +0 -1
- package/dist/components/common/status.d.mts.map +0 -1
- package/dist/components/common/status.mjs.map +0 -1
- package/dist/components/editor/components/content.client.d.mts.map +0 -1
- package/dist/components/editor/components/content.client.mjs.map +0 -1
- package/dist/components/editor/components/editor.client.d.mts.map +0 -1
- package/dist/components/editor/components/editor.client.mjs.map +0 -1
- package/dist/components/editor/components/menu-nodes.client.mjs.map +0 -1
- package/dist/components/editor/components/menu.client.d.mts.map +0 -1
- package/dist/components/editor/components/menu.client.mjs.map +0 -1
- package/dist/components/editor/extensions/file-handler/extension.d.mts.map +0 -1
- package/dist/components/editor/extensions/file-handler/extension.mjs.map +0 -1
- package/dist/components/editor/extensions/file-handler/strategy.d.mts.map +0 -1
- package/dist/components/editor/extensions/file-handler/strategy.mjs.map +0 -1
- package/dist/components/editor/extensions/file-handler/utils.mjs.map +0 -1
- package/dist/components/editor/extensions/image/extension.d.mts.map +0 -1
- package/dist/components/editor/extensions/image/extension.mjs.map +0 -1
- package/dist/components/editor/extensions/skeleton/extension.mjs.map +0 -1
- package/dist/components/editor/extensions/skeleton/renderer.mjs.map +0 -1
- package/dist/components/editor/lib/constants.d.mts.map +0 -1
- package/dist/components/editor/lib/constants.mjs.map +0 -1
- package/dist/components/editor/lib/extensions.d.mts.map +0 -1
- package/dist/components/editor/lib/extensions.mjs.map +0 -1
- package/dist/components/editor/lib/helpers.d.mts.map +0 -1
- package/dist/components/editor/lib/helpers.mjs.map +0 -1
- package/dist/components/editor/lib/types.d.mts.map +0 -1
- package/dist/components/editor/lib/variants.mjs.map +0 -1
- package/dist/components/emails/forget-password-email.mjs.map +0 -1
- package/dist/components/header/back-button.client.d.mts.map +0 -1
- package/dist/components/header/back-button.client.mjs.map +0 -1
- package/dist/components/header/bottom-bar.client.d.mts.map +0 -1
- package/dist/components/header/bottom-bar.client.mjs.map +0 -1
- package/dist/components/header/breadcrumbs.client.d.mts.map +0 -1
- package/dist/components/header/breadcrumbs.client.mjs.map +0 -1
- package/dist/components/header/header.client.d.mts.map +0 -1
- package/dist/components/header/header.client.mjs.map +0 -1
- package/dist/components/header/indicator.client.mjs.map +0 -1
- package/dist/components/header/mobile-nav-switcher.client.d.mts.map +0 -1
- package/dist/components/header/mobile-nav-switcher.client.mjs.map +0 -1
- package/dist/components/header/top-bar.client.d.mts.map +0 -1
- package/dist/components/header/top-bar.client.mjs.map +0 -1
- package/dist/components/layouts/admin-content.client.d.mts.map +0 -1
- package/dist/components/layouts/admin-content.client.mjs.map +0 -1
- package/dist/components/layouts/admin-error-pages.d.mts.map +0 -1
- package/dist/components/layouts/admin-error-pages.mjs.map +0 -1
- package/dist/components/layouts/admin-layout.d.mts.map +0 -1
- package/dist/components/layouts/admin-layout.mjs.map +0 -1
- package/dist/components/layouts/admin-loading.d.mts.map +0 -1
- package/dist/components/layouts/admin-loading.mjs.map +0 -1
- package/dist/components/layouts/empty-page.d.mts.map +0 -1
- package/dist/components/layouts/empty-page.mjs.map +0 -1
- package/dist/components/layouts/error-page.d.mts.map +0 -1
- package/dist/components/layouts/error-page.mjs.map +0 -1
- package/dist/components/layouts/error-sections.d.mts.map +0 -1
- package/dist/components/layouts/error-sections.mjs.map +0 -1
- package/dist/components/layouts/list-layout.d.mts.map +0 -1
- package/dist/components/layouts/list-layout.mjs.map +0 -1
- package/dist/components/layouts/providers.client.d.mts.map +0 -1
- package/dist/components/layouts/providers.client.mjs.map +0 -1
- package/dist/components/layouts/root-error-pages.d.mts.map +0 -1
- package/dist/components/layouts/root-error-pages.mjs.map +0 -1
- package/dist/components/layouts/root-layout.server.d.mts.map +0 -1
- package/dist/components/layouts/root-layout.server.mjs.map +0 -1
- package/dist/components/layouts/root-loading.d.mts.map +0 -1
- package/dist/components/layouts/root-loading.mjs.map +0 -1
- package/dist/components/layouts/tab-layout.d.mts.map +0 -1
- package/dist/components/layouts/tab-layout.mjs.map +0 -1
- package/dist/components/lists/data-list.d.mts.map +0 -1
- package/dist/components/lists/data-list.mjs.map +0 -1
- package/dist/components/lists/data-stack.d.mts.map +0 -1
- package/dist/components/lists/data-stack.mjs.map +0 -1
- package/dist/components/navigation/admin-sidebar-header.client.mjs.map +0 -1
- package/dist/components/navigation/admin-sidebar-paths.client.d.mts.map +0 -1
- package/dist/components/navigation/admin-sidebar-paths.client.mjs.map +0 -1
- package/dist/components/navigation/admin-sidebar-skeleton.mjs.map +0 -1
- package/dist/components/ui/accordion.client.d.mts.map +0 -1
- package/dist/components/ui/accordion.client.mjs.map +0 -1
- package/dist/components/ui/alert-dialog.client.d.mts.map +0 -1
- package/dist/components/ui/alert-dialog.client.mjs.map +0 -1
- package/dist/components/ui/alert.d.mts.map +0 -1
- package/dist/components/ui/alert.mjs.map +0 -1
- package/dist/components/ui/aspect-ratio.client.d.mts.map +0 -1
- package/dist/components/ui/aspect-ratio.client.mjs.map +0 -1
- package/dist/components/ui/avatar.client.d.mts.map +0 -1
- package/dist/components/ui/avatar.client.mjs.map +0 -1
- package/dist/components/ui/badge.d.mts.map +0 -1
- package/dist/components/ui/badge.mjs.map +0 -1
- package/dist/components/ui/breadcrumb.d.mts.map +0 -1
- package/dist/components/ui/breadcrumb.mjs.map +0 -1
- package/dist/components/ui/button-group.d.mts.map +0 -1
- package/dist/components/ui/button-group.mjs.map +0 -1
- package/dist/components/ui/button.d.mts.map +0 -1
- package/dist/components/ui/button.mjs.map +0 -1
- package/dist/components/ui/calendar.client.d.mts.map +0 -1
- package/dist/components/ui/calendar.client.mjs.map +0 -1
- package/dist/components/ui/card.d.mts.map +0 -1
- package/dist/components/ui/card.mjs.map +0 -1
- package/dist/components/ui/carousel.client.d.mts.map +0 -1
- package/dist/components/ui/carousel.client.mjs.map +0 -1
- package/dist/components/ui/chart.client.d.mts.map +0 -1
- package/dist/components/ui/chart.client.mjs.map +0 -1
- package/dist/components/ui/checkbox.client.d.mts.map +0 -1
- package/dist/components/ui/checkbox.client.mjs.map +0 -1
- package/dist/components/ui/collapsible.client.d.mts.map +0 -1
- package/dist/components/ui/collapsible.client.mjs.map +0 -1
- package/dist/components/ui/color-picker.client.d.mts.map +0 -1
- package/dist/components/ui/color-picker.client.mjs.map +0 -1
- package/dist/components/ui/combobox-dropdown.client.d.mts.map +0 -1
- package/dist/components/ui/combobox-dropdown.client.mjs.map +0 -1
- package/dist/components/ui/combobox.client.d.mts.map +0 -1
- package/dist/components/ui/combobox.client.mjs.map +0 -1
- package/dist/components/ui/command.client.d.mts.map +0 -1
- package/dist/components/ui/command.client.mjs.map +0 -1
- package/dist/components/ui/context-menu.client.d.mts.map +0 -1
- package/dist/components/ui/context-menu.client.mjs.map +0 -1
- package/dist/components/ui/date-picker.client.d.mts.map +0 -1
- package/dist/components/ui/date-picker.client.mjs.map +0 -1
- package/dist/components/ui/dialog.client.d.mts.map +0 -1
- package/dist/components/ui/dialog.client.mjs.map +0 -1
- package/dist/components/ui/drawer.client.d.mts.map +0 -1
- package/dist/components/ui/drawer.client.mjs.map +0 -1
- package/dist/components/ui/dropdown-menu.client.d.mts.map +0 -1
- package/dist/components/ui/dropdown-menu.client.mjs.map +0 -1
- package/dist/components/ui/empty.d.mts.map +0 -1
- package/dist/components/ui/empty.mjs.map +0 -1
- package/dist/components/ui/field.client.d.mts.map +0 -1
- package/dist/components/ui/field.client.mjs.map +0 -1
- package/dist/components/ui/form.client.d.mts.map +0 -1
- package/dist/components/ui/form.client.mjs.map +0 -1
- package/dist/components/ui/hover-card.client.d.mts.map +0 -1
- package/dist/components/ui/hover-card.client.mjs.map +0 -1
- package/dist/components/ui/input-date-time.client.d.mts.map +0 -1
- package/dist/components/ui/input-date-time.client.mjs.map +0 -1
- package/dist/components/ui/input-date.d.mts.map +0 -1
- package/dist/components/ui/input-date.mjs.map +0 -1
- package/dist/components/ui/input-group.client.d.mts.map +0 -1
- package/dist/components/ui/input-group.client.mjs.map +0 -1
- package/dist/components/ui/input-recipient.d.mts.map +0 -1
- package/dist/components/ui/input-recipient.mjs.map +0 -1
- package/dist/components/ui/input-time.d.mts.map +0 -1
- package/dist/components/ui/input-time.mjs.map +0 -1
- package/dist/components/ui/input.d.mts.map +0 -1
- package/dist/components/ui/input.mjs.map +0 -1
- package/dist/components/ui/item.d.mts.map +0 -1
- package/dist/components/ui/item.mjs.map +0 -1
- package/dist/components/ui/kbd.d.mts.map +0 -1
- package/dist/components/ui/kbd.mjs.map +0 -1
- package/dist/components/ui/label.d.mts.map +0 -1
- package/dist/components/ui/label.mjs.map +0 -1
- package/dist/components/ui/loader.d.mts.map +0 -1
- package/dist/components/ui/loader.mjs.map +0 -1
- package/dist/components/ui/navigation-menu.d.mts.map +0 -1
- package/dist/components/ui/navigation-menu.mjs.map +0 -1
- package/dist/components/ui/pagination.d.mts.map +0 -1
- package/dist/components/ui/pagination.mjs.map +0 -1
- package/dist/components/ui/popover.client.d.mts.map +0 -1
- package/dist/components/ui/popover.client.mjs.map +0 -1
- package/dist/components/ui/progress.client.d.mts.map +0 -1
- package/dist/components/ui/progress.client.mjs.map +0 -1
- package/dist/components/ui/radio-group.d.mts.map +0 -1
- package/dist/components/ui/radio-group.mjs.map +0 -1
- package/dist/components/ui/resizable.client.d.mts.map +0 -1
- package/dist/components/ui/resizable.client.mjs.map +0 -1
- package/dist/components/ui/scroll-area.d.mts.map +0 -1
- package/dist/components/ui/scroll-area.mjs.map +0 -1
- package/dist/components/ui/select.client.d.mts.map +0 -1
- package/dist/components/ui/select.client.mjs.map +0 -1
- package/dist/components/ui/separator.d.mts.map +0 -1
- package/dist/components/ui/separator.mjs.map +0 -1
- package/dist/components/ui/sheet.client.d.mts.map +0 -1
- package/dist/components/ui/sheet.client.mjs.map +0 -1
- package/dist/components/ui/sidebar.client.d.mts.map +0 -1
- package/dist/components/ui/sidebar.client.mjs.map +0 -1
- package/dist/components/ui/skeleton.d.mts.map +0 -1
- package/dist/components/ui/skeleton.mjs.map +0 -1
- package/dist/components/ui/slider.d.mts.map +0 -1
- package/dist/components/ui/slider.mjs.map +0 -1
- package/dist/components/ui/sonner.client.d.mts.map +0 -1
- package/dist/components/ui/sonner.client.mjs.map +0 -1
- package/dist/components/ui/spinner.d.mts.map +0 -1
- package/dist/components/ui/spinner.mjs.map +0 -1
- package/dist/components/ui/switch.client.d.mts.map +0 -1
- package/dist/components/ui/switch.client.mjs.map +0 -1
- package/dist/components/ui/tabs.client.d.mts.map +0 -1
- package/dist/components/ui/tabs.client.mjs.map +0 -1
- package/dist/components/ui/textarea.d.mts.map +0 -1
- package/dist/components/ui/textarea.mjs.map +0 -1
- package/dist/components/ui/toggle-group.client.d.mts.map +0 -1
- package/dist/components/ui/toggle-group.client.mjs.map +0 -1
- package/dist/components/ui/toggle.client.d.mts.map +0 -1
- package/dist/components/ui/toggle.client.mjs.map +0 -1
- package/dist/components/ui/tooltip.client.d.mts.map +0 -1
- package/dist/components/ui/tooltip.client.mjs.map +0 -1
- package/dist/inline-edit/client.d.mts +0 -15
- package/dist/inline-edit/client.mjs +0 -16
- package/dist/inline-edit.d.mts +0 -2
- package/dist/inline-edit.mjs +0 -3
- package/dist/lib/hooks/use-action.d.mts.map +0 -1
- package/dist/lib/hooks/use-action.mjs.map +0 -1
- package/dist/lib/hooks/use-indicator.d.mts.map +0 -1
- package/dist/lib/hooks/use-indicator.mjs.map +0 -1
- package/dist/lib/hooks/use-mobile.client.d.mts.map +0 -1
- package/dist/lib/hooks/use-mobile.client.mjs.map +0 -1
- package/dist/lib/types/config.d.mts.map +0 -1
- package/dist/lib/utils/array-move.d.mts.map +0 -1
- package/dist/lib/utils/array-move.mjs.map +0 -1
- package/dist/lib/utils/cn.d.mts.map +0 -1
- package/dist/lib/utils/cn.mjs.map +0 -1
- package/dist/lib/utils/fonts.d.mts.map +0 -1
- package/dist/lib/utils/fonts.mjs.map +0 -1
- package/dist/lib/utils/format.d.mts.map +0 -1
- package/dist/lib/utils/format.mjs.map +0 -1
- package/dist/lib/utils/manifest.d.mts.map +0 -1
- package/dist/lib/utils/manifest.mjs.map +0 -1
- package/dist/lib/utils/markdown.d.mts.map +0 -1
- package/dist/lib/utils/markdown.mjs.map +0 -1
- package/dist/lib/utils/url.d.mts.map +0 -1
- package/dist/lib/utils/url.mjs.map +0 -1
- package/dist/lib/utils/user-agent.mjs.map +0 -1
- package/dist/modules/auth/components/allowed.client.d.mts.map +0 -1
- package/dist/modules/auth/components/allowed.client.mjs.map +0 -1
- package/dist/modules/auth/components/auth-layout.server.d.mts.map +0 -1
- package/dist/modules/auth/components/auth-layout.server.mjs.map +0 -1
- package/dist/modules/auth/components/auth-loading.d.mts.map +0 -1
- package/dist/modules/auth/components/auth-loading.mjs.map +0 -1
- package/dist/modules/auth/components/create-first-user-guard.server.d.mts.map +0 -1
- package/dist/modules/auth/components/create-first-user-guard.server.mjs.map +0 -1
- package/dist/modules/auth/components/create-first-user-page.client.d.mts.map +0 -1
- package/dist/modules/auth/components/create-first-user-page.client.mjs.map +0 -1
- package/dist/modules/auth/components/forget-password-page.client.d.mts.map +0 -1
- package/dist/modules/auth/components/forget-password-page.client.mjs.map +0 -1
- package/dist/modules/auth/components/guard.server.d.mts.map +0 -1
- package/dist/modules/auth/components/guard.server.mjs.map +0 -1
- package/dist/modules/auth/components/login-page.client.d.mts.map +0 -1
- package/dist/modules/auth/components/login-page.client.mjs.map +0 -1
- package/dist/modules/auth/components/reset-password-page.client.d.mts.map +0 -1
- package/dist/modules/auth/components/reset-password-page.client.mjs.map +0 -1
- package/dist/modules/auth/components/update-password-command.d.mts.map +0 -1
- package/dist/modules/auth/components/update-password-command.mjs.map +0 -1
- package/dist/modules/auth/db/schema.d.mts.map +0 -1
- package/dist/modules/auth/db/schema.mjs.map +0 -1
- package/dist/modules/auth/handler/create-client.client.d.mts.map +0 -1
- package/dist/modules/auth/handler/create-client.client.mjs.map +0 -1
- package/dist/modules/auth/handler/proxy.server.d.mts.map +0 -1
- package/dist/modules/auth/handler/proxy.server.mjs.map +0 -1
- package/dist/modules/auth/handler/route.server.d.mts.map +0 -1
- package/dist/modules/auth/handler/route.server.mjs.map +0 -1
- package/dist/modules/auth/handler/service.server.d.mts.map +0 -1
- package/dist/modules/auth/handler/service.server.mjs.map +0 -1
- package/dist/modules/auth/hooks/use-auth-client.d.mts.map +0 -1
- package/dist/modules/auth/hooks/use-auth-client.mjs.map +0 -1
- package/dist/modules/auth/hooks/use-permission.d.mts.map +0 -1
- package/dist/modules/auth/hooks/use-permission.mjs.map +0 -1
- package/dist/modules/auth/hooks/use-session.d.mts.map +0 -1
- package/dist/modules/auth/hooks/use-session.mjs.map +0 -1
- package/dist/modules/auth/lib/helpers.server.d.mts.map +0 -1
- package/dist/modules/auth/lib/helpers.server.mjs.map +0 -1
- package/dist/modules/auth/lib/permissions.d.mts.map +0 -1
- package/dist/modules/auth/lib/permissions.mjs.map +0 -1
- package/dist/modules/auth/lib/validators.d.mts.map +0 -1
- package/dist/modules/auth/lib/validators.mjs.map +0 -1
- package/dist/modules/commands/components/alert-dialog-command.client.d.mts +0 -93
- package/dist/modules/commands/components/alert-dialog-command.client.d.mts.map +0 -1
- package/dist/modules/commands/components/alert-dialog-command.client.mjs +0 -159
- package/dist/modules/commands/components/alert-dialog-command.client.mjs.map +0 -1
- package/dist/modules/commands/components/click-command.client.d.mts +0 -27
- package/dist/modules/commands/components/click-command.client.d.mts.map +0 -1
- package/dist/modules/commands/components/click-command.client.mjs +0 -64
- package/dist/modules/commands/components/click-command.client.mjs.map +0 -1
- package/dist/modules/commands/components/command-trigger.client.d.mts +0 -34
- package/dist/modules/commands/components/command-trigger.client.d.mts.map +0 -1
- package/dist/modules/commands/components/command-trigger.client.mjs +0 -50
- package/dist/modules/commands/components/command-trigger.client.mjs.map +0 -1
- package/dist/modules/commands/components/dialog-command.client.d.mts +0 -78
- package/dist/modules/commands/components/dialog-command.client.d.mts.map +0 -1
- package/dist/modules/commands/components/dialog-command.client.mjs +0 -134
- package/dist/modules/commands/components/dialog-command.client.mjs.map +0 -1
- package/dist/modules/commands/components/dropdown-command.client.d.mts +0 -60
- package/dist/modules/commands/components/dropdown-command.client.d.mts.map +0 -1
- package/dist/modules/commands/components/dropdown-command.client.mjs +0 -132
- package/dist/modules/commands/components/dropdown-command.client.mjs.map +0 -1
- package/dist/modules/commands/components/empty-command.client.d.mts +0 -19
- package/dist/modules/commands/components/empty-command.client.d.mts.map +0 -1
- package/dist/modules/commands/components/empty-command.client.mjs +0 -55
- package/dist/modules/commands/components/empty-command.client.mjs.map +0 -1
- package/dist/modules/commands/components/form-dialog-command.client.d.mts +0 -102
- package/dist/modules/commands/components/form-dialog-command.client.d.mts.map +0 -1
- package/dist/modules/commands/components/form-dialog-command.client.mjs +0 -188
- package/dist/modules/commands/components/form-dialog-command.client.mjs.map +0 -1
- package/dist/modules/commands/components/render-command.mjs.map +0 -1
- package/dist/modules/commands/hooks/context.client.mjs +0 -32
- package/dist/modules/commands/hooks/context.client.mjs.map +0 -1
- package/dist/modules/commands/hooks/use-command-menu.client.d.mts +0 -24
- package/dist/modules/commands/hooks/use-command-menu.client.d.mts.map +0 -1
- package/dist/modules/commands/hooks/use-command-menu.client.mjs +0 -84
- package/dist/modules/commands/hooks/use-command-menu.client.mjs.map +0 -1
- package/dist/modules/commands/hooks/use-command-mutation.client.d.mts.map +0 -1
- package/dist/modules/commands/hooks/use-command-mutation.client.mjs.map +0 -1
- package/dist/modules/commands/lib/definitions.d.mts +0 -53
- package/dist/modules/commands/lib/definitions.d.mts.map +0 -1
- package/dist/modules/commands/lib/factory.d.mts +0 -25
- package/dist/modules/commands/lib/factory.d.mts.map +0 -1
- package/dist/modules/commands/lib/factory.mjs +0 -8
- package/dist/modules/commands/lib/factory.mjs.map +0 -1
- package/dist/modules/commands/menus/context-menu.client.d.mts +0 -27
- package/dist/modules/commands/menus/context-menu.client.d.mts.map +0 -1
- package/dist/modules/commands/menus/context-menu.client.mjs +0 -60
- package/dist/modules/commands/menus/context-menu.client.mjs.map +0 -1
- package/dist/modules/commands/menus/dropdown-menu.client.d.mts +0 -19
- package/dist/modules/commands/menus/dropdown-menu.client.d.mts.map +0 -1
- package/dist/modules/commands/menus/dropdown-menu.client.mjs +0 -63
- package/dist/modules/commands/menus/dropdown-menu.client.mjs.map +0 -1
- package/dist/modules/commands/menus/floating-menu.client.d.mts +0 -19
- package/dist/modules/commands/menus/floating-menu.client.d.mts.map +0 -1
- package/dist/modules/commands/menus/floating-menu.client.mjs +0 -46
- package/dist/modules/commands/menus/floating-menu.client.mjs.map +0 -1
- package/dist/modules/commands/menus/inline-menu.client.d.mts +0 -20
- package/dist/modules/commands/menus/inline-menu.client.d.mts.map +0 -1
- package/dist/modules/commands/menus/inline-menu.client.mjs +0 -46
- package/dist/modules/commands/menus/inline-menu.client.mjs.map +0 -1
- package/dist/modules/commands/menus/responsive-menu.client.d.mts +0 -10
- package/dist/modules/commands/menus/responsive-menu.client.d.mts.map +0 -1
- package/dist/modules/commands/menus/responsive-menu.client.mjs +0 -23
- package/dist/modules/commands/menus/responsive-menu.client.mjs.map +0 -1
- package/dist/modules/commands/utils/archive-command.client.d.mts +0 -33
- package/dist/modules/commands/utils/archive-command.client.d.mts.map +0 -1
- package/dist/modules/commands/utils/archive-command.client.mjs +0 -38
- package/dist/modules/commands/utils/archive-command.client.mjs.map +0 -1
- package/dist/modules/commands/utils/delete-command.client.d.mts +0 -28
- package/dist/modules/commands/utils/delete-command.client.d.mts.map +0 -1
- package/dist/modules/commands/utils/delete-command.client.mjs +0 -36
- package/dist/modules/commands/utils/delete-command.client.mjs.map +0 -1
- package/dist/modules/config/lib/config.d.mts.map +0 -1
- package/dist/modules/config/lib/config.mjs.map +0 -1
- package/dist/modules/config/lib/context.d.mts.map +0 -1
- package/dist/modules/config/lib/context.mjs.map +0 -1
- package/dist/modules/config/paths/helpers.d.mts.map +0 -1
- package/dist/modules/config/paths/helpers.mjs.map +0 -1
- package/dist/modules/config/paths/types.d.mts.map +0 -1
- package/dist/modules/data-tables/components/cell/common.client.d.mts.map +0 -1
- package/dist/modules/data-tables/components/cell/common.client.mjs.map +0 -1
- package/dist/modules/data-tables/components/cell/index.client.d.mts.map +0 -1
- package/dist/modules/data-tables/components/cell/index.client.mjs.map +0 -1
- package/dist/modules/data-tables/components/cell/select.client.d.mts.map +0 -1
- package/dist/modules/data-tables/components/cell/select.client.mjs.map +0 -1
- package/dist/modules/data-tables/components/column-header.d.mts.map +0 -1
- package/dist/modules/data-tables/components/column-header.mjs.map +0 -1
- package/dist/modules/data-tables/components/filters/combobox.client.d.mts.map +0 -1
- package/dist/modules/data-tables/components/filters/combobox.client.mjs.map +0 -1
- package/dist/modules/data-tables/components/filters/slider.client.d.mts.map +0 -1
- package/dist/modules/data-tables/components/filters/slider.client.mjs.map +0 -1
- package/dist/modules/data-tables/components/footer.mjs.map +0 -1
- package/dist/modules/data-tables/components/header.d.mts.map +0 -1
- package/dist/modules/data-tables/components/header.mjs.map +0 -1
- package/dist/modules/data-tables/components/layout.d.mts.map +0 -1
- package/dist/modules/data-tables/components/layout.mjs.map +0 -1
- package/dist/modules/data-tables/components/search-input.client.d.mts.map +0 -1
- package/dist/modules/data-tables/components/search-input.client.mjs.map +0 -1
- package/dist/modules/data-tables/components/skeleton.d.mts.map +0 -1
- package/dist/modules/data-tables/components/skeleton.mjs.map +0 -1
- package/dist/modules/data-tables/components/table.d.mts.map +0 -1
- package/dist/modules/data-tables/components/table.mjs.map +0 -1
- package/dist/modules/data-tables/components/toolbar.d.mts.map +0 -1
- package/dist/modules/data-tables/components/toolbar.mjs.map +0 -1
- package/dist/modules/data-tables/hooks/use-context.client.d.mts.map +0 -1
- package/dist/modules/data-tables/hooks/use-context.client.mjs.map +0 -1
- package/dist/modules/data-tables/hooks/use-search.client.mjs.map +0 -1
- package/dist/modules/data-tables/hooks/use-selection.client.mjs.map +0 -1
- package/dist/modules/data-tables/hooks/use-table.client.d.mts.map +0 -1
- package/dist/modules/data-tables/hooks/use-table.client.mjs.map +0 -1
- package/dist/modules/data-tables/lib/converters/cursor.d.mts +0 -18
- package/dist/modules/data-tables/lib/converters/cursor.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/converters/cursor.mjs +0 -16
- package/dist/modules/data-tables/lib/converters/cursor.mjs.map +0 -1
- package/dist/modules/data-tables/lib/converters/dto.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/converters/dto.mjs.map +0 -1
- package/dist/modules/data-tables/lib/converters/filter.d.mts +0 -10
- package/dist/modules/data-tables/lib/converters/filter.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/converters/filter.mjs +0 -14
- package/dist/modules/data-tables/lib/converters/filter.mjs.map +0 -1
- package/dist/modules/data-tables/lib/converters/search.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/converters/search.mjs.map +0 -1
- package/dist/modules/data-tables/lib/converters/sorting.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/converters/sorting.mjs.map +0 -1
- package/dist/modules/data-tables/lib/filters/config.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/filters/config.mjs.map +0 -1
- package/dist/modules/data-tables/lib/filters/helpers.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/filters/helpers.mjs.map +0 -1
- package/dist/modules/data-tables/lib/filters/parsers.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/filters/parsers.mjs.map +0 -1
- package/dist/modules/data-tables/lib/filters/resolvers.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/filters/resolvers.mjs.map +0 -1
- package/dist/modules/data-tables/lib/helpers/create-column.mjs.map +0 -1
- package/dist/modules/data-tables/lib/search-params.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/search-params.mjs.map +0 -1
- package/dist/modules/data-tables/lib/types.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/validators.d.mts.map +0 -1
- package/dist/modules/data-tables/lib/validators.mjs.map +0 -1
- package/dist/modules/data-tables/server/get-data.server.d.mts.map +0 -1
- package/dist/modules/data-tables/server/get-data.server.mjs.map +0 -1
- package/dist/modules/data-tables/strategies/helpers/sorting.mjs.map +0 -1
- package/dist/modules/data-tables/strategies/infinite/components.mjs.map +0 -1
- package/dist/modules/data-tables/strategies/infinite/strategy.d.mts.map +0 -1
- package/dist/modules/data-tables/strategies/infinite/strategy.mjs.map +0 -1
- package/dist/modules/data-tables/strategies/pagination/components.mjs.map +0 -1
- package/dist/modules/data-tables/strategies/pagination/strategy.d.mts.map +0 -1
- package/dist/modules/data-tables/strategies/pagination/strategy.mjs.map +0 -1
- package/dist/modules/data-tables/tables/data-table/components/body.mjs.map +0 -1
- package/dist/modules/data-tables/tables/data-table/components/header.mjs.map +0 -1
- package/dist/modules/data-tables/tables/data-table/components/row.mjs.map +0 -1
- package/dist/modules/data-tables/tables/data-table/components/table.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/data-table/components/table.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/body.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/common.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/drag-handle.client.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/cells/read-only.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/header.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/row.client.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/table.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/components/table.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/context.client.mjs.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.d.mts.map +0 -1
- package/dist/modules/data-tables/tables/inline-table/hooks/use-hotkeys.client.mjs.map +0 -1
- package/dist/modules/database/lib/helpers.d.mts.map +0 -1
- package/dist/modules/database/lib/helpers.mjs.map +0 -1
- package/dist/modules/database/lib/service.server.d.mts.map +0 -1
- package/dist/modules/database/lib/service.server.mjs.map +0 -1
- package/dist/modules/database/lib/types.d.mts.map +0 -1
- package/dist/modules/emails/lib/service.server.d.mts.map +0 -1
- package/dist/modules/emails/lib/service.server.mjs.map +0 -1
- package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts +0 -25
- package/dist/modules/inline-edit/components/combobox-dropdown.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/combobox-dropdown.client.mjs +0 -41
- package/dist/modules/inline-edit/components/combobox-dropdown.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/combobox.client.d.mts +0 -20
- package/dist/modules/inline-edit/components/combobox.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/combobox.client.mjs +0 -37
- package/dist/modules/inline-edit/components/combobox.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/date-input.client.d.mts +0 -19
- package/dist/modules/inline-edit/components/date-input.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/date-input.client.mjs +0 -97
- package/dist/modules/inline-edit/components/date-input.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/date-picker.client.d.mts +0 -22
- package/dist/modules/inline-edit/components/date-picker.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/date-picker.client.mjs +0 -62
- package/dist/modules/inline-edit/components/date-picker.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/date-time.client.d.mts +0 -21
- package/dist/modules/inline-edit/components/date-time.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/date-time.client.mjs +0 -39
- package/dist/modules/inline-edit/components/date-time.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/editor.client.d.mts +0 -23
- package/dist/modules/inline-edit/components/editor.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/editor.client.mjs +0 -40
- package/dist/modules/inline-edit/components/editor.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/input-recipient.client.d.mts +0 -28
- package/dist/modules/inline-edit/components/input-recipient.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/input-recipient.client.mjs +0 -44
- package/dist/modules/inline-edit/components/input-recipient.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/input-toggle.client.d.mts +0 -20
- package/dist/modules/inline-edit/components/input-toggle.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/input-toggle.client.mjs +0 -54
- package/dist/modules/inline-edit/components/input-toggle.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/input.client.d.mts +0 -50
- package/dist/modules/inline-edit/components/input.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/input.client.mjs +0 -101
- package/dist/modules/inline-edit/components/input.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/select.client.d.mts +0 -27
- package/dist/modules/inline-edit/components/select.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/select.client.mjs +0 -56
- package/dist/modules/inline-edit/components/select.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/switch.client.d.mts +0 -18
- package/dist/modules/inline-edit/components/switch.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/switch.client.mjs +0 -34
- package/dist/modules/inline-edit/components/switch.client.mjs.map +0 -1
- package/dist/modules/inline-edit/components/toggle.client.d.mts +0 -19
- package/dist/modules/inline-edit/components/toggle.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/components/toggle.client.mjs +0 -41
- package/dist/modules/inline-edit/components/toggle.client.mjs.map +0 -1
- package/dist/modules/inline-edit/hooks/context.client.d.mts +0 -28
- package/dist/modules/inline-edit/hooks/context.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/hooks/context.client.mjs +0 -28
- package/dist/modules/inline-edit/hooks/context.client.mjs.map +0 -1
- package/dist/modules/inline-edit/hooks/use-inline.client.d.mts +0 -76
- package/dist/modules/inline-edit/hooks/use-inline.client.d.mts.map +0 -1
- package/dist/modules/inline-edit/hooks/use-inline.client.mjs +0 -117
- package/dist/modules/inline-edit/hooks/use-inline.client.mjs.map +0 -1
- package/dist/modules/inline-edit/lib/validators.d.mts +0 -57
- package/dist/modules/inline-edit/lib/validators.d.mts.map +0 -1
- package/dist/modules/inline-edit/lib/validators.mjs +0 -35
- package/dist/modules/inline-edit/lib/validators.mjs.map +0 -1
- package/dist/modules/inline-edit/lib/variants.d.mts +0 -12
- package/dist/modules/inline-edit/lib/variants.d.mts.map +0 -1
- package/dist/modules/inline-edit/lib/variants.mjs +0 -22
- package/dist/modules/inline-edit/lib/variants.mjs.map +0 -1
- package/dist/modules/router/handler/caller.client.d.mts.map +0 -1
- package/dist/modules/router/handler/caller.client.mjs.map +0 -1
- package/dist/modules/router/handler/caller.server.d.mts.map +0 -1
- package/dist/modules/router/handler/caller.server.mjs.map +0 -1
- package/dist/modules/router/handler/context.server.d.mts.map +0 -1
- package/dist/modules/router/handler/context.server.mjs.map +0 -1
- package/dist/modules/router/handler/init.server.d.mts.map +0 -1
- package/dist/modules/router/handler/init.server.mjs.map +0 -1
- package/dist/modules/router/handler/register.server.d.mts.map +0 -1
- package/dist/modules/router/handler/register.server.mjs.map +0 -1
- package/dist/modules/router/handler/route.server.d.mts.map +0 -1
- package/dist/modules/router/handler/route.server.mjs.map +0 -1
- package/dist/modules/router/lib/helpers.mjs.map +0 -1
- package/dist/modules/router/lib/query-client.d.mts.map +0 -1
- package/dist/modules/router/lib/query-client.mjs.map +0 -1
- package/dist/modules/router/lib/query-client.server.d.mts.map +0 -1
- package/dist/modules/router/lib/query-client.server.mjs.map +0 -1
- package/dist/modules/router/lib/validators.d.mts.map +0 -1
- package/dist/modules/router/lib/validators.mjs.map +0 -1
- package/dist/modules/storage/components/dropzone-context.client.d.mts.map +0 -1
- package/dist/modules/storage/components/dropzone-context.client.mjs.map +0 -1
- package/dist/modules/storage/components/dropzone.client.d.mts.map +0 -1
- package/dist/modules/storage/components/dropzone.client.mjs.map +0 -1
- package/dist/modules/storage/components/image-grid.client.d.mts.map +0 -1
- package/dist/modules/storage/components/image-grid.client.mjs.map +0 -1
- package/dist/modules/storage/components/image.client.d.mts.map +0 -1
- package/dist/modules/storage/components/image.client.mjs.map +0 -1
- package/dist/modules/storage/components/upload-button.client.d.mts.map +0 -1
- package/dist/modules/storage/components/upload-button.client.mjs.map +0 -1
- package/dist/modules/storage/components/upload-zone-context.client.d.mts.map +0 -1
- package/dist/modules/storage/components/upload-zone-context.client.mjs.map +0 -1
- package/dist/modules/storage/components/upload-zone.client.d.mts.map +0 -1
- package/dist/modules/storage/components/upload-zone.client.mjs.map +0 -1
- package/dist/modules/storage/lib/constants.d.mts.map +0 -1
- package/dist/modules/storage/lib/constants.mjs.map +0 -1
- package/dist/modules/storage/lib/helpers.d.mts.map +0 -1
- package/dist/modules/storage/lib/helpers.mjs.map +0 -1
- package/dist/modules/storage/lib/procedures.server.d.mts.map +0 -1
- package/dist/modules/storage/lib/procedures.server.mjs.map +0 -1
- package/dist/modules/storage/lib/router-handlers.server.d.mts.map +0 -1
- package/dist/modules/storage/lib/router-handlers.server.mjs.map +0 -1
- package/dist/modules/storage/lib/schema.d.mts.map +0 -1
- package/dist/modules/storage/lib/schema.mjs.map +0 -1
- package/dist/modules/storage/lib/service.server.d.mts.map +0 -1
- package/dist/modules/storage/lib/service.server.mjs.map +0 -1
- package/dist/modules/storage/lib/upload.client.d.mts.map +0 -1
- package/dist/modules/storage/lib/upload.client.mjs.map +0 -1
- package/dist/modules/storage/lib/validators.d.mts.map +0 -1
- package/dist/modules/storage/lib/validators.mjs.map +0 -1
- package/dist/modules/storage/providers/adapters/s3.server.d.mts.map +0 -1
- package/dist/modules/storage/providers/adapters/s3.server.mjs.map +0 -1
- package/dist/modules/storage/providers/lib/constants.d.mts.map +0 -1
- package/dist/modules/storage/providers/lib/constants.mjs.map +0 -1
- package/dist/modules/storage/providers/lib/errors.d.mts.map +0 -1
- package/dist/modules/storage/providers/lib/errors.mjs.map +0 -1
- package/dist/modules/storage/providers/lib/types.d.mts.map +0 -1
- package/dist/modules/storage/providers/lib/validators.d.mts.map +0 -1
- package/dist/modules/storage/providers/lib/validators.mjs.map +0 -1
- package/src/modules/commands/components/alert-dialog-command.client.tsx +0 -237
- package/src/modules/commands/components/click-command.client.tsx +0 -92
- package/src/modules/commands/components/command-trigger.client.tsx +0 -69
- package/src/modules/commands/components/dialog-command.client.tsx +0 -174
- package/src/modules/commands/components/dropdown-command.client.tsx +0 -227
- package/src/modules/commands/components/empty-command.client.tsx +0 -63
- package/src/modules/commands/components/form-dialog-command.client.tsx +0 -287
- package/src/modules/commands/hooks/context.client.tsx +0 -38
- package/src/modules/commands/hooks/use-command-menu.client.tsx +0 -252
- package/src/modules/commands/hooks/use-command-mutation.client.tsx +0 -65
- package/src/modules/commands/lib/definitions.ts +0 -42
- package/src/modules/commands/lib/factory.ts +0 -5
- package/src/modules/commands/lib/schema.ts +0 -23
- package/src/modules/commands/menus/context-menu.client.tsx +0 -69
- package/src/modules/commands/menus/dropdown-menu.client.tsx +0 -62
- package/src/modules/commands/menus/floating-menu.client.tsx +0 -54
- package/src/modules/commands/menus/inline-menu.client.tsx +0 -51
- package/src/modules/commands/menus/responsive-menu.client.tsx +0 -27
- package/src/modules/commands/utils/archive-command.client.tsx +0 -62
- package/src/modules/commands/utils/delete-command.client.tsx +0 -76
- package/src/modules/commands/utils/send-mail-command.client.tsx +0 -150
- package/src/modules/data-tables/lib/converters/cursor.ts +0 -13
- package/src/modules/data-tables/lib/converters/filter.ts +0 -11
- package/src/modules/inline-edit/components/combobox-dropdown.client.tsx +0 -64
- package/src/modules/inline-edit/components/combobox.client.tsx +0 -50
- package/src/modules/inline-edit/components/date-input.client.tsx +0 -116
- package/src/modules/inline-edit/components/date-picker.client.tsx +0 -74
- package/src/modules/inline-edit/components/date-time.client.tsx +0 -55
- package/src/modules/inline-edit/components/editor.client.tsx +0 -56
- package/src/modules/inline-edit/components/input-recipient.client.tsx +0 -59
- package/src/modules/inline-edit/components/input-toggle.client.tsx +0 -75
- package/src/modules/inline-edit/components/input.client.tsx +0 -149
- package/src/modules/inline-edit/components/select.client.tsx +0 -76
- package/src/modules/inline-edit/components/switch.client.tsx +0 -40
- package/src/modules/inline-edit/components/toggle.client.tsx +0 -50
- package/src/modules/inline-edit/entry.client.ts +0 -22
- package/src/modules/inline-edit/hooks/context.client.tsx +0 -30
- package/src/modules/inline-edit/hooks/use-inline.client.tsx +0 -205
- /package/dist/{inline-edit → inline}/server.d.mts +0 -0
- /package/dist/{inline-edit → inline}/server.mjs +0 -0
- /package/src/modules/{inline-edit → inline}/entry.server.ts +0 -0
- /package/src/modules/{inline-edit → inline}/entry.ts +0 -0
- /package/src/modules/{inline-edit → inline}/lib/factory.server.ts +0 -0
- /package/src/modules/{inline-edit → inline}/lib/parsers.ts +0 -0
- /package/src/modules/{inline-edit → inline}/lib/validators.ts +0 -0
- /package/src/modules/{inline-edit → inline}/lib/variants.ts +0 -0
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { ZodType, z as z$1 } from "zod";
|
|
2
|
-
|
|
3
|
-
//#region src/modules/inline-edit/lib/validators.d.ts
|
|
4
|
-
/**
|
|
5
|
-
* Inline edit schema
|
|
6
|
-
*/
|
|
7
|
-
declare const inlineEditSchema: z$1.ZodObject<{
|
|
8
|
-
id: z$1.ZodString;
|
|
9
|
-
}, z$1.core.$strip>;
|
|
10
|
-
type InlineEditSchema<TValue> = z$1.infer<typeof inlineEditSchema> & {
|
|
11
|
-
value: TValue;
|
|
12
|
-
};
|
|
13
|
-
/**
|
|
14
|
-
* Create inline edit schema
|
|
15
|
-
*/
|
|
16
|
-
declare const createInlineEditSchema: <TValue extends ZodType>(value: TValue) => z$1.ZodObject<{
|
|
17
|
-
id: z$1.ZodString;
|
|
18
|
-
value: TValue;
|
|
19
|
-
}, z$1.core.$strip>;
|
|
20
|
-
/**
|
|
21
|
-
* Inline edit string schema
|
|
22
|
-
*/
|
|
23
|
-
declare const inlineEditStringSchema: z$1.ZodObject<{
|
|
24
|
-
id: z$1.ZodString;
|
|
25
|
-
value: z$1.ZodString;
|
|
26
|
-
}, z$1.core.$strip>;
|
|
27
|
-
/**
|
|
28
|
-
* Inline edit number schema
|
|
29
|
-
*/
|
|
30
|
-
declare const inlineEditNumberSchema: z$1.ZodObject<{
|
|
31
|
-
id: z$1.ZodString;
|
|
32
|
-
value: z$1.ZodNumber;
|
|
33
|
-
}, z$1.core.$strip>;
|
|
34
|
-
/**
|
|
35
|
-
* Inline edit boolean schema
|
|
36
|
-
*/
|
|
37
|
-
declare const inlineEditBooleanSchema: z$1.ZodObject<{
|
|
38
|
-
id: z$1.ZodString;
|
|
39
|
-
value: z$1.ZodBoolean;
|
|
40
|
-
}, z$1.core.$strip>;
|
|
41
|
-
/**
|
|
42
|
-
* Inline edit date schema
|
|
43
|
-
*/
|
|
44
|
-
declare const inlineEditDateSchema: z$1.ZodObject<{
|
|
45
|
-
id: z$1.ZodString;
|
|
46
|
-
value: z$1.ZodDate;
|
|
47
|
-
}, z$1.core.$strip>;
|
|
48
|
-
/**
|
|
49
|
-
* Inline edit json schema
|
|
50
|
-
*/
|
|
51
|
-
declare const inlineEditJsonSchema: z$1.ZodObject<{
|
|
52
|
-
id: z$1.ZodString;
|
|
53
|
-
value: z$1.ZodAny;
|
|
54
|
-
}, z$1.core.$strip>;
|
|
55
|
-
//#endregion
|
|
56
|
-
export { InlineEditSchema, createInlineEditSchema, inlineEditBooleanSchema, inlineEditDateSchema, inlineEditJsonSchema, inlineEditNumberSchema, inlineEditStringSchema };
|
|
57
|
-
//# sourceMappingURL=validators.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.mts","names":[],"sources":["../../../../src/modules/inline-edit/lib/validators.ts"],"mappings":";;;;;AAAsC;cAKhC,gBAAA,EAAgB,GAAA,CAAA,SAAA;;;KAIV,gBAAA,WAA2B,GAAA,CAAE,KAAA,QAAa,gBAAA;EACpD,KAAA,EAAO,MAAA;AAAA;;;;cAMI,sBAAA,kBAAyC,OAAA,EAAS,KAAA,EAAO,MAAA,KAAM,GAAA,CAAA,SAAA;;;;;;;cAM/D,sBAAA,EAAsB,GAAA,CAAA,SAAA;;;;;;;cAKtB,sBAAA,EAAsB,GAAA,CAAA,SAAA;;;;;;;cAKtB,uBAAA,EAAuB,GAAA,CAAA,SAAA;;;;;;;cAKvB,oBAAA,EAAoB,GAAA,CAAA,SAAA;;;;;;;cAKpB,oBAAA,EAAoB,GAAA,CAAA,SAAA"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { z as z$1 } from "zod";
|
|
2
|
-
|
|
3
|
-
//#region src/modules/inline-edit/lib/validators.ts
|
|
4
|
-
/**
|
|
5
|
-
* Inline edit schema
|
|
6
|
-
*/
|
|
7
|
-
const inlineEditSchema = z$1.object({ id: z$1.string() });
|
|
8
|
-
/**
|
|
9
|
-
* Create inline edit schema
|
|
10
|
-
*/
|
|
11
|
-
const createInlineEditSchema = (value) => inlineEditSchema.extend({ value });
|
|
12
|
-
/**
|
|
13
|
-
* Inline edit string schema
|
|
14
|
-
*/
|
|
15
|
-
const inlineEditStringSchema = createInlineEditSchema(z$1.string());
|
|
16
|
-
/**
|
|
17
|
-
* Inline edit number schema
|
|
18
|
-
*/
|
|
19
|
-
const inlineEditNumberSchema = createInlineEditSchema(z$1.number());
|
|
20
|
-
/**
|
|
21
|
-
* Inline edit boolean schema
|
|
22
|
-
*/
|
|
23
|
-
const inlineEditBooleanSchema = createInlineEditSchema(z$1.boolean());
|
|
24
|
-
/**
|
|
25
|
-
* Inline edit date schema
|
|
26
|
-
*/
|
|
27
|
-
const inlineEditDateSchema = createInlineEditSchema(z$1.date());
|
|
28
|
-
/**
|
|
29
|
-
* Inline edit json schema
|
|
30
|
-
*/
|
|
31
|
-
const inlineEditJsonSchema = createInlineEditSchema(z$1.any());
|
|
32
|
-
|
|
33
|
-
//#endregion
|
|
34
|
-
export { createInlineEditSchema, inlineEditBooleanSchema, inlineEditDateSchema, inlineEditJsonSchema, inlineEditNumberSchema, inlineEditStringSchema };
|
|
35
|
-
//# sourceMappingURL=validators.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.mjs","names":["z"],"sources":["../../../../src/modules/inline-edit/lib/validators.ts"],"sourcesContent":["import { type ZodType, z } from \"zod\";\n\n/**\n * Inline edit schema\n */\nconst inlineEditSchema = z.object({\n id: z.string(),\n});\n\nexport type InlineEditSchema<TValue> = z.infer<typeof inlineEditSchema> & {\n value: TValue;\n};\n\n/**\n * Create inline edit schema\n */\nexport const createInlineEditSchema = <TValue extends ZodType>(value: TValue) =>\n inlineEditSchema.extend({ value });\n\n/**\n * Inline edit string schema\n */\nexport const inlineEditStringSchema = createInlineEditSchema(z.string());\n\n/**\n * Inline edit number schema\n */\nexport const inlineEditNumberSchema = createInlineEditSchema(z.number());\n\n/**\n * Inline edit boolean schema\n */\nexport const inlineEditBooleanSchema = createInlineEditSchema(z.boolean());\n\n/**\n * Inline edit date schema\n */\nexport const inlineEditDateSchema = createInlineEditSchema(z.date());\n\n/**\n * Inline edit json schema\n */\nexport const inlineEditJsonSchema = createInlineEditSchema(z.any());\n"],"mappings":";;;;;;AAKA,MAAM,mBAAmBA,IAAE,OAAO,EAChC,IAAIA,IAAE,QAAQ,EACf,CAAC;;;;AASF,MAAa,0BAAkD,UAC7D,iBAAiB,OAAO,EAAE,OAAO,CAAC;;;;AAKpC,MAAa,yBAAyB,uBAAuBA,IAAE,QAAQ,CAAC;;;;AAKxE,MAAa,yBAAyB,uBAAuBA,IAAE,QAAQ,CAAC;;;;AAKxE,MAAa,0BAA0B,uBAAuBA,IAAE,SAAS,CAAC;;;;AAK1E,MAAa,uBAAuB,uBAAuBA,IAAE,MAAM,CAAC;;;;AAKpE,MAAa,uBAAuB,uBAAuBA,IAAE,KAAK,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { VariantProps } from "class-variance-authority";
|
|
2
|
-
import * as class_variance_authority_types0 from "class-variance-authority/types";
|
|
3
|
-
|
|
4
|
-
//#region src/modules/inline-edit/lib/variants.d.ts
|
|
5
|
-
declare const inlineEditVariants: (props?: ({
|
|
6
|
-
variant?: "default" | "table" | null | undefined;
|
|
7
|
-
status?: "idle" | "pending" | "success" | "error" | null | undefined;
|
|
8
|
-
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
9
|
-
type InlineEditVariantsProps = VariantProps<typeof inlineEditVariants>;
|
|
10
|
-
//#endregion
|
|
11
|
-
export { InlineEditVariantsProps };
|
|
12
|
-
//# sourceMappingURL=variants.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"variants.d.mts","names":[],"sources":["../../../../src/modules/inline-edit/lib/variants.ts"],"mappings":";;;;cAEa,kBAAA,GAAkB,KAAA;;;IAkB7B,+BAAA,CAAA,SAAA;AAAA,KAEU,uBAAA,GAA0B,YAAA,QAAoB,kBAAA"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { cva } from "class-variance-authority";
|
|
2
|
-
|
|
3
|
-
//#region src/modules/inline-edit/lib/variants.ts
|
|
4
|
-
const inlineEditVariants = cva("", {
|
|
5
|
-
variants: {
|
|
6
|
-
variant: {
|
|
7
|
-
default: "",
|
|
8
|
-
table: "min-h-8 px-3 py-1 text-base md:text-sm rounded-none h-full w-full border-none outline-none ring-0 focus:border-0 focus:outline-none focus:ring-0 focus:ring-offset-0 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0"
|
|
9
|
-
},
|
|
10
|
-
status: {
|
|
11
|
-
idle: "",
|
|
12
|
-
pending: "opacity-70 animate-pulse",
|
|
13
|
-
success: "",
|
|
14
|
-
error: "border-destructive text-destructive"
|
|
15
|
-
}
|
|
16
|
-
},
|
|
17
|
-
defaultVariants: { variant: "default" }
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
//#endregion
|
|
21
|
-
export { inlineEditVariants };
|
|
22
|
-
//# sourceMappingURL=variants.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"variants.mjs","names":[],"sources":["../../../../src/modules/inline-edit/lib/variants.ts"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\n\nexport const inlineEditVariants = cva(\"\", {\n variants: {\n variant: {\n default: \"\",\n table:\n \"min-h-8 px-3 py-1 text-base md:text-sm rounded-none h-full w-full border-none outline-none ring-0 focus:border-0 focus:outline-none focus:ring-0 focus:ring-offset-0 focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-offset-0\",\n },\n status: {\n idle: \"\",\n pending: \"opacity-70 animate-pulse\",\n success: \"\",\n error: \"border-destructive text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n // status: \"idle\",\n },\n});\n\nexport type InlineEditVariantsProps = VariantProps<typeof inlineEditVariants>;\n"],"mappings":";;;AAEA,MAAa,qBAAqB,IAAI,IAAI;CACxC,UAAU;EACR,SAAS;GACP,SAAS;GACT,OACE;GACH;EACD,QAAQ;GACN,MAAM;GACN,SAAS;GACT,SAAS;GACT,OAAO;GACR;EACF;CACD,iBAAiB,EACf,SAAS,WAEV;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caller.client.d.mts","names":[],"sources":["../../../../src/modules/router/handler/caller.client.tsx"],"mappings":";;;;;;AA6BA;iBAAgB,eAAA,iBAAgC,SAAA,CAAA,CAAA,GAAc,cAAA,CAAa,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caller.client.mjs","names":[],"sources":["../../../../src/modules/router/handler/caller.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { createORPCClient } from \"@orpc/client\";\nimport { RPCLink } from \"@orpc/client/fetch\";\nimport type { AnyRouter, RouterClient as ORPCRouterClient } from \"@orpc/server\";\nimport { createTanstackQueryUtils } from \"@orpc/tanstack-query\";\nimport type { RouterClient } from \"./register.server\";\n\n/**\n * Create a new RPC link\n */\nconst link = new RPCLink({\n url: () => {\n if (typeof window === \"undefined\") {\n throw new Error(\"RPCLink is not allowed on the server side.\");\n }\n\n return `${window.location.origin}/api/rpc`;\n },\n});\n\n/**\n * Create a new RPC client\n */\nconst client: ORPCRouterClient<AnyRouter> = createORPCClient(link);\n\n/**\n * Create a new RPC client\n */\nexport function createRPCClient<TRouter extends AnyRouter>(): RouterClient<TRouter> {\n return createTanstackQueryUtils(client as ORPCRouterClient<TRouter>);\n}\n"],"mappings":";;;;;;;;;;AAwBA,MAAM,SAAsC,iBAb/B,IAAI,QAAQ,EACvB,WAAW;AACT,KAAI,OAAO,WAAW,YACpB,OAAM,IAAI,MAAM,6CAA6C;AAG/D,QAAO,GAAG,OAAO,SAAS,OAAO;GAEpC,CAAC,CAKgE;;;;AAKlE,SAAgB,kBAAoE;AAClF,QAAO,yBAAyB,OAAoC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caller.server.d.mts","names":[],"sources":["../../../../src/modules/router/handler/caller.server.ts"],"mappings":";;;cAEa,eAAA,SAAe,kBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"caller.server.mjs","names":[],"sources":["../../../../src/modules/router/handler/caller.server.ts"],"sourcesContent":["import { createRouterClient } from \"@orpc/server\";\n\nexport const createRPCCaller = createRouterClient;\n"],"mappings":";;;AAEA,MAAa,kBAAkB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.server.d.mts","names":[],"sources":["../../../../src/modules/router/handler/context.server.ts"],"mappings":";;;;;;;;;;;;;;;;;;cAUa,gBAAA,mBACY,eAAA,EAAe,KAAA;EAAW,OAAA,EAAS,YAAA,CAAa,OAAA;AAAA,MAAU,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KASvE,UAAA,iBAA2B,eAAA,UAAyB,OAAA,CAC9D,UAAA,QAAkB,gBAAA,CAAiB,OAAA;AAAA,KAIzB,mBAAA,iBAAoC,eAAA,UAAyB,UAAA,CAAW,OAAA;EAClF,OAAA,EAAS,WAAA,CAAY,UAAA,CAAW,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.server.mjs","names":["headers","headersList"],"sources":["../../../../src/modules/router/handler/context.server.ts"],"sourcesContent":["import \"server-cli-only\";\n\nimport { headers as headersList } from \"next/headers\";\nimport { cache } from \"react\";\nimport type { TDatabaseSchema } from \"@/modules/config/db/types\";\nimport type { TulipContext } from \"@/modules/config/entry\";\n\n/**\n * Create the router context\n */\nexport const createRPCContext = cache(\n async <TSchema extends TDatabaseSchema>(props: { context: TulipContext<TSchema> }) => {\n const headers = await headersList();\n const session = await props.context.auth.api.getSession({ headers });\n\n return { ...props.context, session, headers };\n },\n);\n\n// biome-ignore lint/suspicious/noExplicitAny: This is needed to satisfy the system\nexport type RPCContext<TSchema extends TDatabaseSchema = any> = Awaited<\n ReturnType<typeof createRPCContext<TSchema>>\n>;\n\n// biome-ignore lint/suspicious/noExplicitAny: This is needed to satisfy the system\nexport type ProtectedRPCContext<TSchema extends TDatabaseSchema = any> = RPCContext<TSchema> & {\n session: NonNullable<RPCContext<TSchema>[\"session\"]>;\n};\n"],"mappings":";;;;;;;;AAUA,MAAa,mBAAmB,MAC9B,OAAwC,UAA8C;CACpF,MAAMA,YAAU,MAAMC,SAAa;CACnC,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,IAAI,WAAW,EAAE,oBAAS,CAAC;AAEpE,QAAO;EAAE,GAAG,MAAM;EAAS;EAAS;EAAS;EAEhD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.server.d.mts","names":[],"sources":["../../../../src/modules/router/handler/init.server.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;iBAWgB,OAAA,iBAAwB,eAAA,CAAA,CAAA;;;;sCAwBK,UAAA,mBAAU,mBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"init.server.mjs","names":[],"sources":["../../../../src/modules/router/handler/init.server.ts"],"sourcesContent":["import \"server-cli-only\";\n\nimport { os } from \"@orpc/server\";\nimport type { Permission } from \"@/modules/auth/lib/permissions\";\nimport type { TDatabaseSchema } from \"@/modules/config/db/types\";\nimport { ServerError } from \"../lib/error.server\";\nimport type { ProtectedRPCContext, RPCContext } from \"./context.server\";\n\n/**\n * Initialize TRPC\n */\nexport function initRPC<TSchema extends TDatabaseSchema>() {\n /**\n * Create the router\n */\n const o = os.$context<RPCContext<TSchema>>();\n\n /**\n * Middleware function to check if the user is authenticated\n */\n const authMiddleware = o.middleware(async (opts) => {\n if (!opts.context.session) {\n throw new ServerError(\"UNAUTHORIZED\", {\n message: \"Jou hebt geen toegang om deze actie uit te voeren\",\n });\n }\n\n return opts.next({\n context: { ...opts.context, session: opts.context.session } as ProtectedRPCContext<TSchema>,\n });\n });\n\n /**\n * Middleware function to check if the user has the required permission\n */\n function permissionMiddleware(permissions: Permission) {\n /**\n * Middleware function to check if the user has the required permission\n */\n return os.$context<ProtectedRPCContext<TSchema>>().middleware(async (opts) => {\n const { success, error } = await opts.context.auth.api.userHasPermission({\n body: {\n userId: opts.context.session.user.id,\n permissions,\n },\n });\n\n if (error || !success) {\n throw new ServerError(\"UNAUTHORIZED\", {\n message: \"Jou hebt geen toegang om deze actie uit te voeren\",\n });\n }\n\n return opts.next({ context: { ...opts.context } as ProtectedRPCContext<TSchema> });\n });\n }\n\n /**\n * Public procedures\n */\n const publicProcedure = o;\n\n /**\n * Protected procedures\n */\n const protectedProcedure = o.use(authMiddleware);\n\n /**\n * Export\n */\n return {\n publicProcedure,\n protectedProcedure,\n authMiddleware,\n permissionMiddleware,\n };\n}\n"],"mappings":";;;;;;;;AAWA,SAAgB,UAA2C;;;;CAIzD,MAAM,IAAI,GAAG,UAA+B;;;;CAK5C,MAAM,iBAAiB,EAAE,WAAW,OAAO,SAAS;AAClD,MAAI,CAAC,KAAK,QAAQ,QAChB,OAAM,IAAI,YAAY,gBAAgB,EACpC,SAAS,qDACV,CAAC;AAGJ,SAAO,KAAK,KAAK,EACf,SAAS;GAAE,GAAG,KAAK;GAAS,SAAS,KAAK,QAAQ;GAAS,EAC5D,CAAC;GACF;;;;CAKF,SAAS,qBAAqB,aAAyB;;;;AAIrD,SAAO,GAAG,UAAwC,CAAC,WAAW,OAAO,SAAS;GAC5E,MAAM,EAAE,SAAS,UAAU,MAAM,KAAK,QAAQ,KAAK,IAAI,kBAAkB,EACvE,MAAM;IACJ,QAAQ,KAAK,QAAQ,QAAQ,KAAK;IAClC;IACD,EACF,CAAC;AAEF,OAAI,SAAS,CAAC,QACZ,OAAM,IAAI,YAAY,gBAAgB,EACpC,SAAS,qDACV,CAAC;AAGJ,UAAO,KAAK,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,SAAS,EAAkC,CAAC;IAClF;;;;;AAgBJ,QAAO;EACL,iBAXsB;EAYtB,oBAPyB,EAAE,IAAI,eAAe;EAQ9C;EACA;EACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.server.d.mts","names":[],"sources":["../../../../src/modules/router/handler/register.server.ts"],"mappings":";;;;KAKY,cAAA,iBAA6B,SAAA,IAAa,WAAA,CAAY,YAAA,CAAiB,OAAA;AAAA,iBAEnE,oBAAA,iBAAqC,SAAA,CAAA,CAAW,MAAA,EAAQ,YAAA,CAAiB,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"register.server.mjs","names":[],"sources":["../../../../src/modules/router/handler/register.server.ts"],"sourcesContent":["/** biome-ignore-all lint/suspicious/noExplicitAny: This is needed to satisfy the system */\n\nimport type { AnyRouter, RouterClient as ORPCRouterClient } from \"@orpc/server\";\nimport { createTanstackQueryUtils, type RouterUtils } from \"@orpc/tanstack-query\";\n\nexport type RouterClient<TRouter extends AnyRouter> = RouterUtils<ORPCRouterClient<TRouter>>;\n\nexport function registerRouterClient<TRouter extends AnyRouter>(client: ORPCRouterClient<TRouter>) {\n if (!(globalThis as any).$client) {\n (globalThis as any).$client = createTanstackQueryUtils(client);\n }\n\n return (globalThis as any).$client;\n}\n"],"mappings":";;;AAOA,SAAgB,qBAAgD,QAAmC;AACjG,KAAI,CAAE,WAAmB,QACvB,CAAC,WAAmB,UAAU,yBAAyB,OAAO;AAGhE,QAAQ,WAAmB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.server.d.mts","names":[],"sources":["../../../../src/modules/router/handler/route.server.ts"],"mappings":";;;;;;;AAUA;iBAAgB,cAAA,iBAA+B,SAAA,kBAA2B,eAAA,CAAA,CAAiB,KAAA;EACzF,SAAA,EAAW,OAAA;EACX,OAAA,EAAS,YAAA,CAAa,OAAA;AAAA;kBAUgB,OAAA,KAAO,OAAA,CAAA,QAAA;iBAAP,OAAA,KAAO,OAAA,CAAA,QAAA;kBAAP,OAAA,KAAO,OAAA,CAAA,QAAA;iBAAP,OAAA,KAAO,OAAA,CAAA,QAAA;mBAAP,OAAA,KAAO,OAAA,CAAA,QAAA;oBAAP,OAAA,KAAO,OAAA,CAAA,QAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"route.server.mjs","names":[],"sources":["../../../../src/modules/router/handler/route.server.ts"],"sourcesContent":["import { onError } from \"@orpc/client\";\nimport type { AnyRouter } from \"@orpc/server\";\nimport { RPCHandler } from \"@orpc/server/fetch\";\nimport type { TDatabaseSchema } from \"@/modules/config/db/types\";\nimport type { TulipContext } from \"@/modules/config/lib/context\";\nimport { createRPCContext } from \"./context.server\";\n\n/**\n * RPC Route handler\n */\nexport function handleRPCRoute<TRouter extends AnyRouter, TSchema extends TDatabaseSchema>(props: {\n appRouter: TRouter;\n context: TulipContext<TSchema>;\n}) {\n const handler = new RPCHandler(props.appRouter, {\n interceptors: [\n onError((error) => {\n console.error(JSON.stringify(error));\n }),\n ],\n });\n\n async function handleRequest(request: Request) {\n const rpcContext = await createRPCContext({ context: props.context });\n const { response } = await handler.handle(request, {\n prefix: \"/api/rpc\",\n context: rpcContext,\n });\n\n return response ?? new Response(\"Not found\", { status: 404 });\n }\n\n return {\n HEAD: handleRequest,\n GET: handleRequest,\n POST: handleRequest,\n PUT: handleRequest,\n PATCH: handleRequest,\n DELETE: handleRequest,\n };\n}\n"],"mappings":";;;;;;;;AAUA,SAAgB,eAA2E,OAGxF;CACD,MAAM,UAAU,IAAI,WAAW,MAAM,WAAW,EAC9C,cAAc,CACZ,SAAS,UAAU;AACjB,UAAQ,MAAM,KAAK,UAAU,MAAM,CAAC;GACpC,CACH,EACF,CAAC;CAEF,eAAe,cAAc,SAAkB;EAC7C,MAAM,aAAa,MAAM,iBAAiB,EAAE,SAAS,MAAM,SAAS,CAAC;EACrE,MAAM,EAAE,aAAa,MAAM,QAAQ,OAAO,SAAS;GACjD,QAAQ;GACR,SAAS;GACV,CAAC;AAEF,SAAO,YAAY,IAAI,SAAS,aAAa,EAAE,QAAQ,KAAK,CAAC;;AAG/D,QAAO;EACL,MAAM;EACN,KAAK;EACL,MAAM;EACN,KAAK;EACL,OAAO;EACP,QAAQ;EACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/modules/router/lib/helpers.ts"],"sourcesContent":["import { StandardRPCJsonSerializer } from \"@orpc/client/standard\";\n\nexport const serializer = new StandardRPCJsonSerializer();\n"],"mappings":";;;AAEA,MAAa,aAAa,IAAI,2BAA2B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-client.d.mts","names":[],"sources":["../../../../src/modules/router/lib/query-client.ts"],"mappings":";;;;;AAMA;iBAAgB,iBAAA,CAAA,GAAiB,WAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-client.mjs","names":[],"sources":["../../../../src/modules/router/lib/query-client.ts"],"sourcesContent":["import { isServer, MutationCache, QueryClient } from \"@tanstack/react-query\";\nimport { serializer } from \"./helpers\";\n\n/**\n * Create a new query client\n */\nexport function createQueryClient() {\n let queryClient: QueryClient;\n\n const mutationCache = new MutationCache({\n onSuccess: () => {\n // Invalidate all queries in the react-query cache:\n queryClient.invalidateQueries();\n },\n });\n\n queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n queryKeyHashFn(queryKey) {\n const [json, meta] = serializer.serialize(queryKey);\n return JSON.stringify({ json, meta });\n },\n staleTime: 60 * 1000, // > 0 to prevent immediate refetching on mount\n },\n dehydrate: {\n serializeData(data) {\n const [json, meta] = serializer.serialize(data);\n return { json, meta };\n },\n },\n hydrate: {\n deserializeData(data) {\n return serializer.deserialize(data.json, data.meta);\n },\n },\n },\n mutationCache,\n });\n\n return queryClient;\n}\n\n/**\n * Create a stable getter for the query client that will return the same client during the same request.\n */\nlet browserQueryClient: QueryClient;\n\nexport function getQueryClient() {\n if (isServer) {\n // Server: always make a new query client\n return createQueryClient();\n }\n\n // Browser: make a new query client if we don't already have one\n // This is very important, so we don't re-make a new client if React\n // suspends during the initial render. This may not be needed if we\n // have a suspense boundary BELOW the creation of the query client\n if (!browserQueryClient) browserQueryClient = createQueryClient();\n\n return browserQueryClient;\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,oBAAoB;CAClC,IAAI;AASJ,eAAc,IAAI,YAAY;EAC5B,gBAAgB;GACd,SAAS;IACP,eAAe,UAAU;KACvB,MAAM,CAAC,MAAM,QAAQ,WAAW,UAAU,SAAS;AACnD,YAAO,KAAK,UAAU;MAAE;MAAM;MAAM,CAAC;;IAEvC,WAAW,KAAK;IACjB;GACD,WAAW,EACT,cAAc,MAAM;IAClB,MAAM,CAAC,MAAM,QAAQ,WAAW,UAAU,KAAK;AAC/C,WAAO;KAAE;KAAM;KAAM;MAExB;GACD,SAAS,EACP,gBAAgB,MAAM;AACpB,WAAO,WAAW,YAAY,KAAK,MAAM,KAAK,KAAK;MAEtD;GACF;EACD,eA5BoB,IAAI,cAAc,EACtC,iBAAiB;AAEf,eAAY,mBAAmB;KAElC,CAAC;EAwBD,CAAC;AAEF,QAAO;;;;;AAMT,IAAI;AAEJ,SAAgB,iBAAiB;AAC/B,KAAI,SAEF,QAAO,mBAAmB;AAO5B,KAAI,CAAC,mBAAoB,sBAAqB,mBAAmB;AAEjE,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-client.server.d.mts","names":[],"sources":["../../../../src/modules/router/lib/query-client.server.tsx"],"mappings":";;;;;;;;cASa,cAAA,SAAc,iBAAA;;;;iBAKX,aAAA,CAAc,KAAA;EAAS,QAAA,EAAU,KAAA,CAAM,SAAA;AAAA,IAAW,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"query-client.server.mjs","names":[],"sources":["../../../../src/modules/router/lib/query-client.server.tsx"],"sourcesContent":["import \"server-cli-only\";\n\nimport { dehydrate, HydrationBoundary } from \"@tanstack/react-query\";\nimport { cache } from \"react\";\nimport { createQueryClient } from \"./query-client\";\n\n/**\n * Create a stable getter for the query client that will return the same client during the same request.\n */\nexport const getQueryClient = cache(createQueryClient);\n\n/**\n * Hydrate the client with the data from the server\n */\nexport function HydrateClient(props: { children: React.ReactNode }) {\n const queryClient = getQueryClient();\n\n return <HydrationBoundary state={dehydrate(queryClient)}>{props.children}</HydrationBoundary>;\n}\n"],"mappings":";;;;;;;;;;AASA,MAAa,iBAAiB,MAAM,kBAAkB;;;;AAKtD,SAAgB,cAAc,OAAsC;AAGlE,QAAO,oBAAC;EAAkB,OAAO,UAFb,gBAAgB,CAEmB;YAAG,MAAM;GAA6B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.mts","names":[],"sources":["../../../../src/modules/router/lib/validators.ts"],"mappings":";;;;;AAKA;cAAa,gBAAA,EAAgB,GAAA,CAAA,SAAA;;;KAIjB,gBAAA,GAAmB,GAAA,CAAE,KAAA,QAAa,gBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.mjs","names":["z"],"sources":["../../../../src/modules/router/lib/validators.ts"],"sourcesContent":["import { z } from \"zod\";\n\n/**\n * Bulk action schema\n */\nexport const bulkActionSchema = z.object({\n ids: z.array(z.string()),\n});\n\nexport type BulkActionSchema = z.infer<typeof bulkActionSchema>;\n"],"mappings":";;;;;;AAKA,MAAa,mBAAmBA,IAAE,OAAO,EACvC,KAAKA,IAAE,MAAMA,IAAE,QAAQ,CAAC,EACzB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropzone-context.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/dropzone-context.client.tsx"],"mappings":";;;;KAKK,mBAAA;EACH,GAAA,GAAM,IAAA;EACN,MAAA,GAAS,eAAA;EACT,OAAA,GAAU,eAAA;EACV,OAAA,GAAU,eAAA;EACV,QAAA,GAAW,eAAA;AAAA;AAAA,cAGA,eAAA,EAAe,KAAA,CAAA,OAAA,CAAA,mBAAA;;;;iBAKZ,kBAAA,CAAA,GAAkB,mBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropzone-context.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/dropzone-context.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, use } from \"react\";\nimport type { DropzoneOptions } from \"react-dropzone\";\n\ntype DropzoneContextType = {\n src?: File[];\n accept?: DropzoneOptions[\"accept\"];\n maxSize?: DropzoneOptions[\"maxSize\"];\n minSize?: DropzoneOptions[\"minSize\"];\n maxFiles?: DropzoneOptions[\"maxFiles\"];\n};\n\nexport const DropzoneContext = createContext<DropzoneContextType | undefined>(undefined);\n\n/**\n * Dropzone context hook\n */\nexport function useDropzoneContext() {\n const context = use(DropzoneContext);\n if (!context) throw new Error(\"useDropzoneContext must be used within a Dropzone\");\n return context;\n}\n"],"mappings":";;;;;AAaA,MAAa,kBAAkB,cAA+C,OAAU;;;;AAKxF,SAAgB,qBAAqB;CACnC,MAAM,UAAU,IAAI,gBAAgB;AACpC,KAAI,CAAC,QAAS,OAAM,IAAI,MAAM,oDAAoD;AAClF,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropzone.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/dropzone.client.tsx"],"mappings":";;;;;;;;;KAcY,aAAA,GAAgB,IAAA,CAAK,eAAA;EAC/B,GAAA,GAAM,IAAA;EACN,SAAA;EACA,MAAA,IAAU,aAAA,EAAe,IAAA,IAAQ,cAAA,EAAgB,aAAA,IAAiB,KAAA,EAAO,SAAA;EACzE,QAAA,GAAW,SAAA;AAAA;AAAA,iBAGG,QAAA,CAAA;EACd,MAAA;EACA,QAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;EACA,OAAA;EACA,QAAA;EACA,GAAA;EACA,SAAA;EACA,QAAA;EAAA,GACG;AAAA,GACF,aAAA,GAAa,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;KA0CJ,oBAAA;EACV,QAAA,GAAW,SAAA;EACX,SAAA;AAAA;AAAA,iBAKc,eAAA,CAAA;EAAkB,QAAA;EAAU;AAAA,GAAa,oBAAA,qCAAoB,QAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,YAAA,mBAAA,KAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,SAAA,wBAAA,kBAAA,CAAA,GAAA,CAAA,OAAA;;;;KA8BjE,uBAAA;EACV,QAAA,GAAW,SAAA;EACX,SAAA;AAAA;AAAA,iBAGc,kBAAA,CAAA;EAAqB,QAAA;EAAU;AAAA,GAAa,uBAAA,qCAAuB,QAAA,CAAA,SAAA,IAAA,OAAA,sCAAA,KAAA,CAAA,WAAA,GAAA,KAAA,CAAA,YAAA,mBAAA,KAAA,CAAA,qBAAA,SAAA,QAAA,CAAA,SAAA,wBAAA,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dropzone.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/dropzone.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { UploadIcon } from \"lucide-react\";\nimport type { ReactNode } from \"react\";\nimport type { DropEvent, DropzoneOptions, FileRejection } from \"react-dropzone\";\nimport { useDropzone } from \"react-dropzone\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils/cn\";\nimport { renderBytes } from \"../lib/helpers\";\nimport { DropzoneContext, useDropzoneContext } from \"./dropzone-context.client\";\n\n/**\n * Dropzone\n */\nexport type DropzoneProps = Omit<DropzoneOptions, \"onDrop\"> & {\n src?: File[];\n className?: string;\n onDrop?: (acceptedFiles: File[], fileRejections: FileRejection[], event: DropEvent) => void;\n children?: ReactNode;\n};\n\nexport function Dropzone({\n accept,\n maxFiles = 1,\n maxSize,\n minSize,\n onDrop,\n onError,\n disabled,\n src,\n className,\n children,\n ...props\n}: DropzoneProps) {\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n accept,\n maxFiles,\n maxSize,\n minSize,\n onError,\n disabled,\n onDrop: (acceptedFiles, fileRejections, event) => {\n if (fileRejections.length > 0) {\n const message = fileRejections.at(0)?.errors.at(0)?.message;\n onError?.(new Error(message));\n return;\n }\n onDrop?.(acceptedFiles, fileRejections, event);\n },\n ...props,\n });\n\n return (\n <DropzoneContext key={JSON.stringify(src)} value={{ src, accept, maxSize, minSize, maxFiles }}>\n <Button\n className={cn(\n \"relative h-auto w-full flex-col overflow-hidden p-8\",\n isDragActive && \"outline-none ring-1 ring-ring\",\n className,\n )}\n disabled={disabled}\n type=\"button\"\n variant=\"outline\"\n {...getRootProps()}\n >\n <input {...getInputProps()} disabled={disabled} />\n {children}\n </Button>\n </DropzoneContext>\n );\n}\n\n/**\n * DropzoneContent\n */\nexport type DropzoneContentProps = {\n children?: ReactNode;\n className?: string;\n};\n\nconst maxLabelItems = 3;\n\nexport function DropzoneContent({ children, className }: DropzoneContentProps) {\n const { src } = useDropzoneContext();\n if (!src) return null;\n\n if (children) return children;\n\n return (\n <div className={cn(\"flex flex-col items-center justify-center\", className)}>\n <div className=\"flex size-8 items-center justify-center rounded-md bg-muted text-muted-foreground\">\n <UploadIcon size={16} />\n </div>\n\n <p className=\"my-2 w-full truncate font-medium text-sm\">\n {src.length > maxLabelItems\n ? `${new Intl.ListFormat(\"en\").format(\n src.slice(0, maxLabelItems).map((file) => file.name),\n )} and ${src.length - maxLabelItems} more`\n : new Intl.ListFormat(\"en\").format(src.map((file) => file.name))}\n </p>\n\n <p className=\"w-full text-wrap text-muted-foreground text-xs\">\n Drag and drop or click to replace\n </p>\n </div>\n );\n}\n\n/**\n * DropzoneEmptyState\n */\nexport type DropzoneEmptyStateProps = {\n children?: ReactNode;\n className?: string;\n};\n\nexport function DropzoneEmptyState({ children, className }: DropzoneEmptyStateProps) {\n const { src, accept, maxSize, minSize, maxFiles } = useDropzoneContext();\n if (src) {\n return null;\n }\n if (children) {\n return children;\n }\n let caption = \"\";\n if (accept) {\n caption += \"Accepts \";\n caption += new Intl.ListFormat(\"en\").format(Object.keys(accept));\n }\n if (minSize && maxSize) {\n caption += ` between ${renderBytes(minSize)} and ${renderBytes(maxSize)}`;\n } else if (minSize) {\n caption += ` at least ${renderBytes(minSize)}`;\n } else if (maxSize) {\n caption += ` less than ${renderBytes(maxSize)}`;\n }\n return (\n <div className={cn(\"flex flex-col items-center justify-center\", className)}>\n <div className=\"flex size-8 items-center justify-center rounded-md bg-muted text-muted-foreground\">\n <UploadIcon size={16} />\n </div>\n <p className=\"my-2 w-full truncate text-wrap font-medium text-sm\">\n Upload {maxFiles === 1 ? \"a file\" : \"files\"}\n </p>\n <p className=\"w-full truncate text-wrap text-muted-foreground text-xs\">\n Drag and drop or click to upload\n </p>\n {caption && <p className=\"text-wrap text-muted-foreground text-xs\">{caption}.</p>}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAqBA,SAAgB,SAAS,EACvB,QACA,WAAW,GACX,SACA,SACA,QACA,SACA,UACA,KACA,WACA,UACA,GAAG,SACa;CAChB,MAAM,EAAE,cAAc,eAAe,iBAAiB,YAAY;EAChE;EACA;EACA;EACA;EACA;EACA;EACA,SAAS,eAAe,gBAAgB,UAAU;AAChD,OAAI,eAAe,SAAS,GAAG;IAC7B,MAAM,UAAU,eAAe,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE,EAAE;AACpD,cAAU,IAAI,MAAM,QAAQ,CAAC;AAC7B;;AAEF,YAAS,eAAe,gBAAgB,MAAM;;EAEhD,GAAG;EACJ,CAAC;AAEF,QACE,oBAAC;EAA0C,OAAO;GAAE;GAAK;GAAQ;GAAS;GAAS;GAAU;YAC3F,qBAAC;GACC,WAAW,GACT,uDACA,gBAAgB,iCAChB,UACD;GACS;GACV,MAAK;GACL,SAAQ;GACR,GAAI,cAAc;cAElB,oBAAC;IAAM,GAAI,eAAe;IAAY;KAAY,EACjD;IACM;IAdW,KAAK,UAAU,IAAI,CAevB;;AAYtB,MAAM,gBAAgB;AAEtB,SAAgB,gBAAgB,EAAE,UAAU,aAAmC;CAC7E,MAAM,EAAE,QAAQ,oBAAoB;AACpC,KAAI,CAAC,IAAK,QAAO;AAEjB,KAAI,SAAU,QAAO;AAErB,QACE,qBAAC;EAAI,WAAW,GAAG,6CAA6C,UAAU;;GACxE,oBAAC;IAAI,WAAU;cACb,oBAAC,cAAW,MAAM,KAAM;KACpB;GAEN,oBAAC;IAAE,WAAU;cACV,IAAI,SAAS,gBACV,GAAG,IAAI,KAAK,WAAW,KAAK,CAAC,OAC3B,IAAI,MAAM,GAAG,cAAc,CAAC,KAAK,SAAS,KAAK,KAAK,CACrD,CAAC,OAAO,IAAI,SAAS,cAAc,SACpC,IAAI,KAAK,WAAW,KAAK,CAAC,OAAO,IAAI,KAAK,SAAS,KAAK,KAAK,CAAC;KAChE;GAEJ,oBAAC;IAAE,WAAU;cAAiD;KAE1D;;GACA;;AAYV,SAAgB,mBAAmB,EAAE,UAAU,aAAsC;CACnF,MAAM,EAAE,KAAK,QAAQ,SAAS,SAAS,aAAa,oBAAoB;AACxE,KAAI,IACF,QAAO;AAET,KAAI,SACF,QAAO;CAET,IAAI,UAAU;AACd,KAAI,QAAQ;AACV,aAAW;AACX,aAAW,IAAI,KAAK,WAAW,KAAK,CAAC,OAAO,OAAO,KAAK,OAAO,CAAC;;AAElE,KAAI,WAAW,QACb,YAAW,YAAY,YAAY,QAAQ,CAAC,OAAO,YAAY,QAAQ;UAC9D,QACT,YAAW,aAAa,YAAY,QAAQ;UACnC,QACT,YAAW,cAAc,YAAY,QAAQ;AAE/C,QACE,qBAAC;EAAI,WAAW,GAAG,6CAA6C,UAAU;;GACxE,oBAAC;IAAI,WAAU;cACb,oBAAC,cAAW,MAAM,KAAM;KACpB;GACN,qBAAC;IAAE,WAAU;eAAqD,WACxD,aAAa,IAAI,WAAW;KAClC;GACJ,oBAAC;IAAE,WAAU;cAA0D;KAEnE;GACH,WAAW,qBAAC;IAAE,WAAU;eAA2C,SAAQ;KAAK;;GAC7E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-grid.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/image-grid.client.tsx"],"mappings":";;;;;;;;KA4CK,cAAA,GAAiB,cAAA;EACpB,MAAA,EAAQ,YAAA;EACR,QAAA;EACA,UAAA,GAAa,MAAA;IAAU,SAAA;IAAmB,OAAA;EAAA,MAAsB,OAAA;EAChE,UAAA;IACE,IAAA,IAAQ,MAAA;MAAU,SAAA;MAAmB,OAAA;IAAA,MAAsB,OAAA;EAAA;AAAA;AAAA,iBAI/C,SAAA,CAAA;EAAY,MAAA;EAAQ,UAAA;EAAY,UAAA;EAAY,QAAA;EAAA,GAAa;AAAA,GAAS,cAAA,GAAc,kBAAA,CAAA,GAAA,CAAA,OAAA;AAAA,iBAyKhF,iBAAA,CAAkB,KAAA,EAAO,cAAA,UAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-grid.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/image-grid.client.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n closestCenter,\n DndContext,\n type DragEndEvent,\n KeyboardSensor,\n PointerSensor,\n useDroppable,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport {\n rectSortingStrategy,\n SortableContext,\n sortableKeyboardCoordinates,\n useSortable,\n} from \"@dnd-kit/sortable\";\nimport { CSS } from \"@dnd-kit/utilities\";\nimport { GripIcon, UploadIcon } from \"lucide-react\";\nimport React, { type ComponentProps } from \"react\";\nimport { Icons } from \"@/components/common/icons\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card } from \"@/components/ui/card\";\nimport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n} from \"@/components/ui/carousel.client\";\nimport { Dialog, DialogContent, DialogTrigger } from \"@/components/ui/dialog.client\";\nimport { Input } from \"@/components/ui/input\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useAction } from \"@/lib/entry.client\";\nimport { cn } from \"@/lib/utils/cn\";\nimport { getAssetURL } from \"../lib/helpers\";\nimport type { StorageAsset } from \"../lib/validators\";\nimport { StorageImage } from \"./image.client\";\nimport { useUploadZone } from \"./upload-zone-context.client\";\n\n/**\n * Image Grid\n */\ntype ImageGridProps = ComponentProps<\"div\"> & {\n assets: StorageAsset[];\n disabled?: boolean;\n moveAction: (params: { fromIndex: number; toIndex: number }) => Promise<void>;\n optimistic?: {\n move?: (params: { fromIndex: number; toIndex: number }) => Promise<void> | void;\n };\n};\n\nexport function ImageGrid({ assets, moveAction, optimistic, disabled, ...props }: ImageGridProps) {\n const uploadZone = useUploadZone();\n\n const images = assets.flatMap((asset) => ({ ...asset, url: getAssetURL(asset.id) }));\n\n const [current, setCurrent] = React.useState<number>(0);\n\n const { setNodeRef } = useDroppable({ id: \"image-grid\" });\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const moveMuration = useAction({\n mutationFn: async ({ active, over }: DragEndEvent) => {\n if (!moveAction) return Promise.resolve();\n\n const activeId = active.id;\n const overId = over?.id;\n if (!activeId || !overId || activeId === overId) return Promise.resolve();\n\n const fromIndex = images.findIndex((image) => image.id === activeId);\n const toIndex = images.findIndex((image) => image.id === overId);\n\n await optimistic?.move?.({ fromIndex, toIndex });\n await moveAction({ fromIndex, toIndex });\n },\n onSuccess: async () => {\n setCurrent(0);\n await uploadZone.optimistic?.invalidate?.();\n },\n onError: (error) => {\n console.error(\"Error moving image:\", error);\n },\n });\n\n return (\n <Dialog {...props}>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={moveMuration.mutate}\n >\n <div\n ref={setNodeRef}\n className=\"grid grid-cols-[repeat(auto-fill,minmax(10rem,1fr))] gap-5\"\n >\n <SortableContext items={images.map((image) => image.id)} strategy={rectSortingStrategy}>\n {images.map((asset, index) => (\n <ImageGridItem key={asset.id} asset={asset} index={index} setCurrent={setCurrent} />\n ))}\n\n {!disabled && (\n <label\n htmlFor=\"file-upload\"\n className=\"relative flex aspect-square w-full cursor-pointer flex-col items-center justify-center rounded-lg border border-muted-foreground border-dashed bg-muted hover:border-primary\"\n >\n <UploadIcon className=\"h-8 w-8\" />\n <Input\n id=\"file-upload\"\n type=\"file\"\n accept=\"image/jpeg, image/png, image/webp, image/gif\"\n className=\"absolute inset-0 z-10 h-full w-full cursor-pointer opacity-0\"\n multiple\n onChange={(e) => {\n if (!e.target.files) return;\n return Array.from(e.target.files).map(uploadZone.onUpload);\n }}\n />\n </label>\n )}\n </SortableContext>\n </div>\n </DndContext>\n\n <Carousel className=\"w-full\" opts={{ startIndex: current }}>\n <DialogContent className=\"border-none bg-transparent p-0 shadow-none md:max-w-[80vw] xl:max-w-[60vw]\">\n <CarouselContent className=\"md:max-h-[80vh]\">\n {images.map(({ id, url }) => (\n <CarouselItem key={id} className=\"overflow-hidden rounded-xl\">\n <StorageImage\n src={url}\n alt=\"Image Preview\"\n width={1920}\n height={1080}\n className=\"h-full w-full rounded-xl object-contain\"\n />\n </CarouselItem>\n ))}\n </CarouselContent>\n <CarouselPrevious />\n <CarouselNext />\n </DialogContent>\n </Carousel>\n </Dialog>\n );\n}\n\n/**\n * Image Grid Item\n */\ntype ImageGridItemProps = {\n asset: StorageAsset & { url: string };\n index: number;\n setCurrent: React.Dispatch<React.SetStateAction<number>>;\n};\n\nfunction ImageGridItem({ asset, index, setCurrent }: ImageGridItemProps) {\n const uploadZone = useUploadZone();\n\n const { attributes, listeners, setNodeRef, transform, transition } = useSortable({\n id: asset.id,\n });\n\n return (\n <Card\n id={asset.id}\n ref={setNodeRef}\n style={{\n transform: CSS.Transform.toString(transform),\n transition,\n }}\n className={cn(\n \"group relative aspect-square w-full\",\n asset.status === \"pending\" && \"opacity-30\",\n )}\n >\n {asset.status === \"ready\" ? (\n <>\n <DialogTrigger onClick={() => setCurrent(index)}>\n <StorageImage\n src={asset.url}\n alt=\"Image Preview\"\n width={100}\n height={100}\n className=\"absolute inset-0 h-full w-full cursor-pointer rounded-lg bg-muted object-contain\"\n />\n </DialogTrigger>\n\n <Button\n {...attributes}\n {...listeners}\n type=\"button\"\n variant=\"secondary\"\n size=\"icon\"\n className=\"absolute top-2 right-2 hidden p-1 group-hover:flex\"\n >\n <GripIcon className=\"size-4\" />\n </Button>\n\n <Button\n type=\"button\"\n variant=\"destructive\"\n size=\"icon\"\n onClick={() => uploadZone.onRemove([asset.id])}\n className=\"absolute top-2 left-2 hidden p-1 group-hover:flex\"\n >\n <Icons.trash className=\"size-4\" />\n </Button>\n </>\n ) : (\n <Skeleton className=\"absolute inset-0 h-full w-full rounded-lg\" />\n )}\n </Card>\n );\n}\n\nexport function ImageGridSkeleton(props: ComponentProps<\"div\">) {\n return (\n <div\n {...props}\n className={cn(\"grid grid-cols-[repeat(auto-fill,minmax(10rem,1fr))] gap-5\", props.className)}\n >\n {Array.from({ length: 12 }).map((_, index) => (\n <Skeleton key={index} className=\"aspect-square w-full rounded-lg\" />\n ))}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/image.client.tsx"],"mappings":";;;;iBAKgB,YAAA,CAAa,KAAA,EAAO,IAAA,CAAK,UAAA,cAAqB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/image.client.tsx"],"sourcesContent":["\"use client\";\n\nimport Image, { type ImageProps } from \"next/image\";\nimport { imageLoader } from \"../lib/helpers\";\n\nexport function StorageImage(props: Omit<ImageProps, \"loader\">) {\n return <Image {...props} loader={imageLoader} />;\n}\n"],"mappings":";;;;;;;AAKA,SAAgB,aAAa,OAAmC;AAC9D,QAAO,oBAAC;EAAM,GAAI;EAAO,QAAQ;GAAe"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-button.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/upload-button.client.tsx"],"mappings":";;;;;iBASgB,YAAA,CAAA;EAAe,SAAA;EAAA,GAAc;AAAA,GAAS,cAAA,QAAsB,MAAA,IAAO,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-button.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/upload-button.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { UploadIcon } from \"lucide-react\";\nimport type { ComponentProps } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils/cn\";\nimport { useUploadZone } from \"./upload-zone-context.client\";\n\nexport function UploadButton({ className, ...props }: ComponentProps<typeof Button>) {\n const { onUpload } = useUploadZone();\n\n return (\n <Button {...props} className={cn(\"relative gap-2\", className)}>\n <UploadIcon className=\"h-3 w-3\" />\n <span>Upload</span>\n\n <Input\n type=\"file\"\n className=\"absolute inset-0 z-10 h-full w-full cursor-pointer opacity-0\"\n multiple\n onChange={(e) => {\n if (!e.target.files) return;\n Array.from(e.target.files).forEach(onUpload);\n }}\n />\n </Button>\n );\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,aAAa,EAAE,WAAW,GAAG,SAAwC;CACnF,MAAM,EAAE,aAAa,eAAe;AAEpC,QACE,qBAAC;EAAO,GAAI;EAAO,WAAW,GAAG,kBAAkB,UAAU;;GAC3D,oBAAC,cAAW,WAAU,YAAY;GAClC,oBAAC,oBAAK,WAAa;GAEnB,oBAAC;IACC,MAAK;IACL,WAAU;IACV;IACA,WAAW,MAAM;AACf,SAAI,CAAC,EAAE,OAAO,MAAO;AACrB,WAAM,KAAK,EAAE,OAAO,MAAM,CAAC,QAAQ,SAAS;;KAE9C;;GACK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-zone-context.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/upload-zone-context.client.tsx"],"mappings":";;;;;;;AASA;KAAY,sBAAA;EACV,YAAA,EAAc,YAAA;EACd,QAAA,GAAW,IAAA,EAAM,IAAA,KAAS,OAAA,CAAQ,YAAA;EAClC,QAAA,GAAW,GAAA,eAAkB,OAAA;EAC7B,UAAA;IACE,GAAA,IACE,QAAA,EAAU,IAAA,CACR,YAAA,wEAGC,OAAA;IACL,MAAA,IAAU,GAAA,eAAkB,OAAA;IAC5B,UAAA,SAAmB,OAAA;IACnB,MAAA,SAAe,OAAA;EAAA;EAEjB,QAAA;AAAA;;;;cAMW,iBAAA,EAAiB,KAAA,CAAA,OAAA,CAAA,sBAAA;;;;iBAKd,aAAA,CAAA,GAAa,sBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-zone-context.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/upload-zone-context.client.tsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport type { UploadClient } from \"../lib/upload.client\";\nimport type { StorageAsset } from \"../lib/validators\";\n\n/**\n * Upload Zone Context Value\n */\nexport type UploadZoneContextValue = {\n uploadClient: UploadClient;\n onUpload: (file: File) => Promise<StorageAsset>;\n onRemove: (ids: string[]) => Promise<void>;\n optimistic?: {\n add?: (\n newValue: Omit<\n StorageAsset,\n \"id\" | \"key\" | \"bucket\" | \"provider\" | \"createdAt\" | \"updatedAt\"\n >,\n ) => Promise<void> | void;\n remove?: (ids: string[]) => Promise<void> | void;\n invalidate?: () => Promise<void> | void;\n cancel?: () => Promise<void> | void;\n };\n disabled?: boolean;\n};\n\n/**\n * Upload Zone Context\n */\nexport const UploadZoneContext = React.createContext<UploadZoneContextValue | null>(null);\n\n/**\n * Upload Zone Hook\n */\nexport function useUploadZone() {\n const context = React.useContext(UploadZoneContext);\n if (!context) {\n throw new Error(\"useUploadZone must be used within an UploadZoneContext provider\");\n }\n return context;\n}\n"],"mappings":";;;;;;;;AA8BA,MAAa,oBAAoB,MAAM,cAA6C,KAAK;;;;AAKzF,SAAgB,gBAAgB;CAC9B,MAAM,UAAU,MAAM,WAAW,kBAAkB;AACnD,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,kEAAkE;AAEpF,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-zone.client.d.mts","names":[],"sources":["../../../../src/modules/storage/components/upload-zone.client.tsx"],"mappings":";;;;;;;KAWY,eAAA,GAAkB,cAAA,UAC5B,IAAA,CAAK,sBAAA;EACH,SAAA,EAAW,IAAA,CAAK,WAAA;EAChB,WAAA,GAAc,WAAA;EAEd,iBAAA,IAAqB,KAAA,EAAO,YAAA,KAAiB,OAAA;EAC7C,cAAA,IAAkB,KAAA,cAAmB,OAAA;AAAA;AAAA,iBAGzB,UAAA,CAAA;EACd,SAAA;EACA,UAAA;EACA,YAAA;EACA,WAAA;EACA,iBAAA;EACA,cAAA;EACA,QAAA;EACA,QAAA;EACA,SAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload-zone.client.mjs","names":[],"sources":["../../../../src/modules/storage/components/upload-zone.client.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ComponentProps, useCallback } from \"react\";\nimport { useDropzone } from \"react-dropzone\";\nimport { toast } from \"@/components/ui/sonner.client\";\nimport { useAction } from \"@/lib/hooks/use-action\";\nimport { cn } from \"@/lib/utils/cn\";\nimport type { UploadFileRequest, UploadHooks } from \"../lib/upload.client\";\nimport type { StorageAsset, UploadInput } from \"../lib/validators\";\nimport { UploadZoneContext, type UploadZoneContextValue } from \"./upload-zone-context.client\";\n\nexport type UploadZoneProps = ComponentProps<\"div\"> &\n Pick<UploadZoneContextValue, \"optimistic\" | \"uploadClient\" | \"disabled\"> & {\n variables: Pick<UploadInput, \"visibility\">;\n uploadHooks?: UploadHooks;\n\n onUploadCompleted?: (asset: StorageAsset) => Promise<void> | void;\n onUploadFailed?: (error: unknown) => Promise<void> | void;\n };\n\nexport function UploadZone({\n variables,\n optimistic,\n uploadClient,\n uploadHooks,\n onUploadCompleted,\n onUploadFailed,\n disabled = false,\n children,\n className,\n ...props\n}: UploadZoneProps) {\n /**\n * Delete mutation\n */\n const deleteMutation = useAction({\n mutationFn: async (ids: string[]) => {\n await uploadClient.deleteAssets(ids);\n },\n onMutate: async (ids) => {\n await optimistic?.cancel?.();\n await optimistic?.remove?.(ids);\n },\n onError: async (error) => {\n console.error(\"Delete failed upload error: \", error);\n await onUploadFailed?.(error);\n },\n onSettled: () => {\n optimistic?.invalidate?.();\n },\n });\n\n /**\n * Upload mutation\n */\n const uploadMutation = useAction({\n mutationFn: async (params: UploadFileRequest) => uploadClient.upload(params, uploadHooks),\n onMutate: async (variables) => {\n await optimistic?.cancel?.();\n\n const newAsset = {\n ...variables,\n visibility: variables.visibility ?? \"private\",\n status: \"pending\",\n name: variables.file.name,\n size: variables.file.size,\n contentType: variables.file.type || \"application/octet-stream\",\n etag: null,\n metadata: null,\n uploadedAt: new Date(),\n deletedAt: null,\n } as Omit<StorageAsset, \"id\" | \"key\" | \"bucket\" | \"provider\" | \"createdAt\" | \"updatedAt\">;\n\n await optimistic?.add?.(newAsset);\n },\n onSuccess: async (data) => {\n await onUploadCompleted?.(data);\n toast.success(`Succesvol geupload: ${data.name}`);\n },\n onError: async (error) => {\n await onUploadFailed?.(error);\n\n console.error(\"Upload error: \", error);\n toast.error(\"Bestand uploaden mislukt\", {\n description: error instanceof Error ? error.message : undefined,\n });\n },\n onSettled: () => {\n optimistic?.invalidate?.();\n },\n });\n\n /**\n * Upload file handler\n */\n const onUpload = useCallback(\n async (file: File) => {\n console.info(\"Uploading file\", file);\n const req = uploadClient.prepareUpload({ ...variables, file });\n return await uploadMutation.mutateAsync(req);\n },\n [uploadClient, variables, uploadMutation],\n );\n\n /**\n * Drop handler\n */\n const onDrop = useCallback(\n async (acceptedFiles: File[]) => {\n if (acceptedFiles.length === 0) return;\n await Promise.allSettled(acceptedFiles.map(onUpload));\n },\n [onUpload],\n );\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop,\n noClick: true,\n disabled,\n });\n\n return (\n <div {...props} {...getRootProps()} className={cn(\"relative z-0\", className)}>\n <input {...getInputProps()} />\n\n {/* Show drag overlay when drag is active */}\n {isDragActive && (\n <div className=\"absolute inset-0 z-10 rounded-md bg-primary/20 opacity-70 backdrop-blur-3xl\" />\n )}\n\n <UploadZoneContext\n value={{\n uploadClient,\n onUpload,\n onRemove: deleteMutation.mutateAsync,\n optimistic,\n disabled,\n }}\n >\n {children}\n </UploadZoneContext>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;AAoBA,SAAgB,WAAW,EACzB,WACA,YACA,cACA,aACA,mBACA,gBACA,WAAW,OACX,UACA,WACA,GAAG,SACe;;;;CAIlB,MAAM,iBAAiB,UAAU;EAC/B,YAAY,OAAO,QAAkB;AACnC,SAAM,aAAa,aAAa,IAAI;;EAEtC,UAAU,OAAO,QAAQ;AACvB,SAAM,YAAY,UAAU;AAC5B,SAAM,YAAY,SAAS,IAAI;;EAEjC,SAAS,OAAO,UAAU;AACxB,WAAQ,MAAM,gCAAgC,MAAM;AACpD,SAAM,iBAAiB,MAAM;;EAE/B,iBAAiB;AACf,eAAY,cAAc;;EAE7B,CAAC;;;;CAKF,MAAM,iBAAiB,UAAU;EAC/B,YAAY,OAAO,WAA8B,aAAa,OAAO,QAAQ,YAAY;EACzF,UAAU,OAAO,cAAc;AAC7B,SAAM,YAAY,UAAU;GAE5B,MAAM,WAAW;IACf,GAAG;IACH,YAAY,UAAU,cAAc;IACpC,QAAQ;IACR,MAAM,UAAU,KAAK;IACrB,MAAM,UAAU,KAAK;IACrB,aAAa,UAAU,KAAK,QAAQ;IACpC,MAAM;IACN,UAAU;IACV,4BAAY,IAAI,MAAM;IACtB,WAAW;IACZ;AAED,SAAM,YAAY,MAAM,SAAS;;EAEnC,WAAW,OAAO,SAAS;AACzB,SAAM,oBAAoB,KAAK;AAC/B,SAAM,QAAQ,uBAAuB,KAAK,OAAO;;EAEnD,SAAS,OAAO,UAAU;AACxB,SAAM,iBAAiB,MAAM;AAE7B,WAAQ,MAAM,kBAAkB,MAAM;AACtC,SAAM,MAAM,4BAA4B,EACtC,aAAa,iBAAiB,QAAQ,MAAM,UAAU,QACvD,CAAC;;EAEJ,iBAAiB;AACf,eAAY,cAAc;;EAE7B,CAAC;;;;CAKF,MAAM,WAAW,YACf,OAAO,SAAe;AACpB,UAAQ,KAAK,kBAAkB,KAAK;EACpC,MAAM,MAAM,aAAa,cAAc;GAAE,GAAG;GAAW;GAAM,CAAC;AAC9D,SAAO,MAAM,eAAe,YAAY,IAAI;IAE9C;EAAC;EAAc;EAAW;EAAe,CAC1C;CAaD,MAAM,EAAE,cAAc,eAAe,iBAAiB,YAAY;EAChE,QATa,YACb,OAAO,kBAA0B;AAC/B,OAAI,cAAc,WAAW,EAAG;AAChC,SAAM,QAAQ,WAAW,cAAc,IAAI,SAAS,CAAC;KAEvD,CAAC,SAAS,CACX;EAIC,SAAS;EACT;EACD,CAAC;AAEF,QACE,qBAAC;EAAI,GAAI;EAAO,GAAI,cAAc;EAAE,WAAW,GAAG,gBAAgB,UAAU;;GAC1E,oBAAC,WAAM,GAAI,eAAe,GAAI;GAG7B,gBACC,oBAAC,SAAI,WAAU,gFAAgF;GAGjG,oBAAC;IACC,OAAO;KACL;KACA;KACA,UAAU,eAAe;KACzB;KACA;KACD;IAEA;KACiB;;GAChB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/constants.ts"],"mappings":";cACa,iBAAA;AAAA,KACD,gBAAA,WAA2B,iBAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","names":[],"sources":["../../../../src/modules/storage/lib/constants.ts"],"sourcesContent":["// Image dispositions\nexport const imageDispositions = [\"inline\", \"attachment\"] as const;\nexport type ImageDisposition = (typeof imageDispositions)[number];\n"],"mappings":";AACA,MAAa,oBAAoB,CAAC,UAAU,aAAa"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/helpers.ts"],"mappings":";;;;;;AAgBA;;;;;;;;;;iBAAgB,WAAA,CAAY,EAAA,UAAY,OAAA,GAAS,OAAA,CAAQ,gBAAA;;;;iBAYzC,WAAA,CAAA;EAAc;AAAA,GAAO,gBAAA;;;;iBAUrB,WAAA,CAAY,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.mjs","names":[],"sources":["../../../../src/modules/storage/lib/helpers.ts"],"sourcesContent":["import type { ImageLoaderProps } from \"next/image\";\nimport type { GetAssetURLInput } from \"../lib/validators\";\n\n/**\n * Builds the public API route URL for a storage file proxy request.\n *\n * Use this helper when you need a stable file URL in the client/UI\n * without manually composing the route path.\n *\n * @param id - Storage asset id\n * @returns File proxy URL for the storage route handler\n * @example\n * const url = getAssetURL(\"019d0051-2c0d-741e-9e3c-e5a5bc4d16a2\", { disposition: \"attachment\" });\n * // /api/storage/files/019d0051-2c0d-741e-9e3c-e5a5bc4d16a2?disposition=attachment\n */\n\nexport function getAssetURL(id: string, options: Partial<GetAssetURLInput> = {}) {\n const searchParams = new URLSearchParams();\n if (options?.disposition) searchParams.set(\"disposition\", options.disposition);\n\n const queryString = searchParams.toString();\n\n return `/api/storage/files/${id}${queryString ? `?${queryString}` : \"\"}`;\n}\n\n/**\n * Image loader\n */\nexport function imageLoader({ src }: ImageLoaderProps) {\n if (typeof window === \"undefined\") return src;\n\n const url = new URL(src, window.location.origin);\n return url.toString();\n}\n\n/**\n * Render bytes\n */\nexport function renderBytes(bytes: number) {\n const units = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\n\n let size = bytes;\n let unitIndex = 0;\n\n while (size >= 1024 && unitIndex < units.length - 1) {\n size /= 1024;\n unitIndex++;\n }\n\n return `${size.toFixed(2)}${units[unitIndex]}`;\n}\n"],"mappings":";;;;;;;;;;;;;AAgBA,SAAgB,YAAY,IAAY,UAAqC,EAAE,EAAE;CAC/E,MAAM,eAAe,IAAI,iBAAiB;AAC1C,KAAI,SAAS,YAAa,cAAa,IAAI,eAAe,QAAQ,YAAY;CAE9E,MAAM,cAAc,aAAa,UAAU;AAE3C,QAAO,sBAAsB,KAAK,cAAc,IAAI,gBAAgB;;;;;AAMtE,SAAgB,YAAY,EAAE,OAAyB;AACrD,KAAI,OAAO,WAAW,YAAa,QAAO;AAG1C,QADY,IAAI,IAAI,KAAK,OAAO,SAAS,OAAO,CACrC,UAAU;;;;;AAMvB,SAAgB,YAAY,OAAe;CACzC,MAAM,QAAQ;EAAC;EAAK;EAAM;EAAM;EAAM;EAAM;EAAK;CAEjD,IAAI,OAAO;CACX,IAAI,YAAY;AAEhB,QAAO,QAAQ,QAAQ,YAAY,MAAM,SAAS,GAAG;AACnD,UAAQ;AACR;;AAGF,QAAO,GAAG,KAAK,QAAQ,EAAE,GAAG,MAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"procedures.server.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/procedures.server.ts"],"mappings":";;;;;;;;;;iBAWgB,uBAAA,iBAAwC,eAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA8C5C,aAAA,GAAgB,UAAA,QAAkB,uBAAA;AAAA,KAClC,oBAAA,GAAuB,kBAAA,CAAmB,aAAA;AAAA,KAC1C,mBAAA,GAAsB,iBAAA,CAAkB,aAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"procedures.server.mjs","names":["z"],"sources":["../../../../src/modules/storage/lib/procedures.server.ts"],"sourcesContent":["import type { InferRouterInputs, InferRouterOutputs } from \"@orpc/server\";\nimport { z } from \"zod\";\nimport type { TDatabaseSchema } from \"@/modules/config/db/types\";\nimport { initRPC } from \"@/modules/router/handler/init.server\";\nimport {\n confirmUploadInputSchema,\n presignUploadInputSchema,\n presignUploadOutputSchema,\n selectStorageAssetSchema,\n} from \"./validators\";\n\nexport function createStorageProcedures<TSchema extends TDatabaseSchema>() {\n const { protectedProcedure } = initRPC<TSchema>();\n\n return {\n presign: protectedProcedure\n .input(presignUploadInputSchema)\n .output(presignUploadOutputSchema)\n .handler(async ({ context, input }) => context.storage.presignUpload(input)),\n\n confirm: protectedProcedure\n .input(confirmUploadInputSchema)\n .output(selectStorageAssetSchema)\n .handler(async ({ context, input }) => context.storage.confirmUpload(input)),\n\n deleteAsset: protectedProcedure\n .input(z.uuid())\n .output(selectStorageAssetSchema.nullable())\n .handler(async ({ context, input }) => context.storage.deleteAsset(input)),\n\n deleteAssets: protectedProcedure\n .input(z.string().array())\n .output(z.array(selectStorageAssetSchema))\n .handler(async ({ context, input }) => context.storage.deleteAssets(input)),\n\n restoreAsset: protectedProcedure\n .input(z.uuid())\n .output(selectStorageAssetSchema.nullable())\n .handler(async ({ context, input }) => context.storage.restoreAsset(input)),\n\n restoreAssets: protectedProcedure\n .input(z.string().array())\n .output(z.array(selectStorageAssetSchema))\n .handler(async ({ context, input }) => context.storage.restoreAssets(input)),\n\n purgeAsset: protectedProcedure\n .input(z.uuid())\n .output(selectStorageAssetSchema.nullable())\n .handler(async ({ context, input }) => context.storage.purgeAsset(input)),\n\n purgeAssets: protectedProcedure\n .input(z.string().array())\n .output(z.array(selectStorageAssetSchema))\n .handler(async ({ context, input }) => context.storage.purgeAssets(input)),\n };\n}\n\nexport type StorageRouter = ReturnType<typeof createStorageProcedures>;\nexport type StorageRouterOutputs = InferRouterOutputs<StorageRouter>;\nexport type StorageRouterInputs = InferRouterInputs<StorageRouter>;\n"],"mappings":";;;;;AAWA,SAAgB,0BAA2D;CACzE,MAAM,EAAE,uBAAuB,SAAkB;AAEjD,QAAO;EACL,SAAS,mBACN,MAAM,yBAAyB,CAC/B,OAAO,0BAA0B,CACjC,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,cAAc,MAAM,CAAC;EAE9E,SAAS,mBACN,MAAM,yBAAyB,CAC/B,OAAO,yBAAyB,CAChC,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,cAAc,MAAM,CAAC;EAE9E,aAAa,mBACV,MAAMA,IAAE,MAAM,CAAC,CACf,OAAO,yBAAyB,UAAU,CAAC,CAC3C,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,YAAY,MAAM,CAAC;EAE5E,cAAc,mBACX,MAAMA,IAAE,QAAQ,CAAC,OAAO,CAAC,CACzB,OAAOA,IAAE,MAAM,yBAAyB,CAAC,CACzC,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,aAAa,MAAM,CAAC;EAE7E,cAAc,mBACX,MAAMA,IAAE,MAAM,CAAC,CACf,OAAO,yBAAyB,UAAU,CAAC,CAC3C,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,aAAa,MAAM,CAAC;EAE7E,eAAe,mBACZ,MAAMA,IAAE,QAAQ,CAAC,OAAO,CAAC,CACzB,OAAOA,IAAE,MAAM,yBAAyB,CAAC,CACzC,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,cAAc,MAAM,CAAC;EAE9E,YAAY,mBACT,MAAMA,IAAE,MAAM,CAAC,CACf,OAAO,yBAAyB,UAAU,CAAC,CAC3C,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,WAAW,MAAM,CAAC;EAE3E,aAAa,mBACV,MAAMA,IAAE,QAAQ,CAAC,OAAO,CAAC,CACzB,OAAOA,IAAE,MAAM,yBAAyB,CAAC,CACzC,QAAQ,OAAO,EAAE,SAAS,YAAY,QAAQ,QAAQ,YAAY,MAAM,CAAC;EAC7E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router-handlers.server.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/router-handlers.server.ts"],"mappings":";;;;;KAQK,QAAA;EACH,MAAA,EAAQ,OAAA;IAAU,IAAA;EAAA;AAAA;AAAA,KAGf,8BAAA,iBAA+C,eAAA;EAClD,OAAA,EAAS,IAAA,CAAK,YAAA,CAAa,OAAA;AAAA;;;;AAJL;;;;;;;;;;;;;iBAwBR,yBAAA,iBAA0C,eAAA,CAAA,CAAA;EACxD;AAAA,GACC,8BAAA,CAA+B,OAAA;iBAUJ,WAAA,EAAW,GAAA,EAAO,QAAA,KAAQ,OAAA,CAAA,QAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"router-handlers.server.mjs","names":[],"sources":["../../../../src/modules/storage/lib/router-handlers.server.ts"],"sourcesContent":["import { connection, type NextRequest } from \"next/server\";\nimport z from \"zod\";\nimport { getSession } from \"@/modules/auth/lib/helpers.server\";\nimport type { TDatabaseSchema } from \"@/modules/config/db/types\";\nimport type { TulipContext } from \"@/modules/config/lib/context\";\nimport { ServerError } from \"@/modules/router/lib/error.server\";\nimport { getAssetURLSchema } from \"../entry\";\n\ntype RouteCtx = {\n params: Promise<{ rest?: string[] }>;\n};\n\ntype CreateStorageRouteHandlerProps<TSchema extends TDatabaseSchema> = {\n context: Pick<TulipContext<TSchema>, \"auth\" | \"storage\">;\n};\n\n/**\n * Creates a catch-all storage route handler for `/api/storage/[[...rest]]`.\n *\n * Current support:\n * - `GET /api/storage/files/:id`:\n * resolves a storage asset, enforces visibility checks, and redirects\n * to a short-lived signed read URL.\n *\n * Reserved for future extension:\n * - `POST /api/storage/assets/presign`\n * - `POST /api/storage/assets/confirm`\n * - additional storage endpoints under the same catch-all route.\n *\n * @param props - Route handler dependencies (application context)\n * @returns Next.js route handlers for GET, POST, PUT, PATCH, and DELETE\n */\n\nexport function createStorageRouteHandler<TSchema extends TDatabaseSchema>({\n context,\n}: CreateStorageRouteHandlerProps<TSchema>) {\n /**\n * GET /api/storage/[[...rest]]\n *\n * Current route support:\n * - /api/storage/files/:id\n *\n * The file route resolves an asset by id, enforces visibility rules,\n * and redirects to a short-lived signed object URL.\n */\n async function GET(request: NextRequest, ctx: RouteCtx) {\n // Get the params\n const { rest = [] } = await ctx.params;\n const resource = rest[0];\n\n /**\n * Proxy file request\n * GET /api/storage/files/:id\n */\n if (resource === \"files\") {\n const id = rest[1];\n\n // Guard required path segment: /api/storage/files/:id\n if (!id) {\n return Response.json(\n { error: { code: \"BAD_REQUEST\", message: \"Missing id\" } },\n { status: 400 },\n );\n }\n\n console.info(\"Proxying file: \", id);\n\n try {\n // Resolve storage asset record by id\n const asset = await context.storage.getAssetById(id);\n\n if (!asset) {\n return Response.json(\n { error: { code: \"NOT_FOUND\", message: \"Asset not found\" } },\n { status: 404 },\n );\n }\n\n // Enforce private visibility with session auth\n if (asset.visibility === \"private\") {\n const session = await getSession(context);\n if (!session) {\n return Response.json(\n { error: { code: \"UNAUTHORIZED\", message: \"Unauthorized\" } },\n { status: 401 },\n );\n }\n }\n\n // Handle searchParams for disposition\n const searchParams = request.nextUrl.searchParams;\n const disposition = searchParams.get(\"disposition\") ?? undefined;\n\n // Parse the options\n const options = getAssetURLSchema.parse({ disposition });\n\n // Resolve signed read URL and redirect to object storage\n const url = await context.storage.getObjectURL(asset.id, options);\n\n // Return the file\n return Response.redirect(url, 307);\n } catch (error) {\n if (error instanceof z.ZodError) {\n return Response.json(\n { error: { code: \"BAD_REQUEST\", message: \"Invalid request input\" } },\n { status: 400 },\n );\n }\n\n if (error instanceof ServerError) {\n const code = error.code;\n\n if (code === \"BAD_REQUEST\") {\n return Response.json(\n { error: { code: \"BAD_REQUEST\", message: error.message } },\n { status: 400 },\n );\n }\n\n if (code === \"NOT_FOUND\") {\n return Response.json(\n { error: { code: \"NOT_FOUND\", message: error.message } },\n { status: 404 },\n );\n }\n\n if (code === \"UNAUTHORIZED\") {\n return Response.json(\n { error: { code: \"UNAUTHORIZED\", message: error.message } },\n { status: 401 },\n );\n }\n }\n\n if (error instanceof Error && error.message === \"Storage asset not found\") {\n return Response.json(\n { error: { code: \"NOT_FOUND\", message: \"Asset not found\" } },\n { status: 404 },\n );\n }\n\n console.error(\"Storage route error\", error);\n\n return Response.json(\n { error: { code: \"INTERNAL_SERVER_ERROR\", message: \"Something went wrong\" } },\n { status: 500 },\n );\n }\n }\n\n return Response.json(\n { error: { code: \"NOT_FOUND\", message: \"Route not found\" } },\n { status: 404 },\n );\n }\n\n /**\n * POST, PUT, PATCH, DELETE /api/storage/[[...rest]]\n *\n * Reserved for future extension, for example:\n * - POST /api/storage/assets/presign\n * - POST /api/storage/assets/confirm\n */\n async function POST() {\n // Make endpoint dynamic\n await connection();\n\n // future:\n // POST /api/storage/assets/presign\n // POST /api/storage/assets/confirm\n return Response.json(\n { error: { code: \"NOT_FOUND\", message: \"Route not found\" } },\n { status: 404 },\n );\n }\n\n return { GET, POST, PUT: POST, PATCH: POST, DELETE: POST };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAiCA,SAAgB,0BAA2D,EACzE,WAC0C;;;;;;;;;;CAU1C,eAAe,IAAI,SAAsB,KAAe;EAEtD,MAAM,EAAE,OAAO,EAAE,KAAK,MAAM,IAAI;;;;;AAOhC,MANiB,KAAK,OAML,SAAS;GACxB,MAAM,KAAK,KAAK;AAGhB,OAAI,CAAC,GACH,QAAO,SAAS,KACd,EAAE,OAAO;IAAE,MAAM;IAAe,SAAS;IAAc,EAAE,EACzD,EAAE,QAAQ,KAAK,CAChB;AAGH,WAAQ,KAAK,mBAAmB,GAAG;AAEnC,OAAI;IAEF,MAAM,QAAQ,MAAM,QAAQ,QAAQ,aAAa,GAAG;AAEpD,QAAI,CAAC,MACH,QAAO,SAAS,KACd,EAAE,OAAO;KAAE,MAAM;KAAa,SAAS;KAAmB,EAAE,EAC5D,EAAE,QAAQ,KAAK,CAChB;AAIH,QAAI,MAAM,eAAe,WAEvB;SAAI,CADY,MAAM,WAAW,QAAQ,CAEvC,QAAO,SAAS,KACd,EAAE,OAAO;MAAE,MAAM;MAAgB,SAAS;MAAgB,EAAE,EAC5D,EAAE,QAAQ,KAAK,CAChB;;IAML,MAAM,cADe,QAAQ,QAAQ,aACJ,IAAI,cAAc,IAAI;IAGvD,MAAM,UAAU,kBAAkB,MAAM,EAAE,aAAa,CAAC;IAGxD,MAAM,MAAM,MAAM,QAAQ,QAAQ,aAAa,MAAM,IAAI,QAAQ;AAGjE,WAAO,SAAS,SAAS,KAAK,IAAI;YAC3B,OAAO;AACd,QAAI,iBAAiB,EAAE,SACrB,QAAO,SAAS,KACd,EAAE,OAAO;KAAE,MAAM;KAAe,SAAS;KAAyB,EAAE,EACpE,EAAE,QAAQ,KAAK,CAChB;AAGH,QAAI,iBAAiB,aAAa;KAChC,MAAM,OAAO,MAAM;AAEnB,SAAI,SAAS,cACX,QAAO,SAAS,KACd,EAAE,OAAO;MAAE,MAAM;MAAe,SAAS,MAAM;MAAS,EAAE,EAC1D,EAAE,QAAQ,KAAK,CAChB;AAGH,SAAI,SAAS,YACX,QAAO,SAAS,KACd,EAAE,OAAO;MAAE,MAAM;MAAa,SAAS,MAAM;MAAS,EAAE,EACxD,EAAE,QAAQ,KAAK,CAChB;AAGH,SAAI,SAAS,eACX,QAAO,SAAS,KACd,EAAE,OAAO;MAAE,MAAM;MAAgB,SAAS,MAAM;MAAS,EAAE,EAC3D,EAAE,QAAQ,KAAK,CAChB;;AAIL,QAAI,iBAAiB,SAAS,MAAM,YAAY,0BAC9C,QAAO,SAAS,KACd,EAAE,OAAO;KAAE,MAAM;KAAa,SAAS;KAAmB,EAAE,EAC5D,EAAE,QAAQ,KAAK,CAChB;AAGH,YAAQ,MAAM,uBAAuB,MAAM;AAE3C,WAAO,SAAS,KACd,EAAE,OAAO;KAAE,MAAM;KAAyB,SAAS;KAAwB,EAAE,EAC7E,EAAE,QAAQ,KAAK,CAChB;;;AAIL,SAAO,SAAS,KACd,EAAE,OAAO;GAAE,MAAM;GAAa,SAAS;GAAmB,EAAE,EAC5D,EAAE,QAAQ,KAAK,CAChB;;;;;;;;;CAUH,eAAe,OAAO;AAEpB,QAAM,YAAY;AAKlB,SAAO,SAAS,KACd,EAAE,OAAO;GAAE,MAAM;GAAa,SAAS;GAAmB,EAAE,EAC5D,EAAE,QAAQ,KAAK,CAChB;;AAGH,QAAO;EAAE;EAAK;EAAM,KAAK;EAAM,OAAO;EAAM,QAAQ;EAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/schema.ts"],"mappings":";;;cAIa,sBAAA,EAAsF,oBAAA,CAAhE,MAAA;AAAA,cACtB,0BAAA,EAAsF,oBAAA,CAA5D,MAAA;;AADvC;;cAMa,aAAA,uBAAa,kBAAA;;;;cAuBzB,oBAAA,CAAA,QAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":[],"sources":["../../../../src/modules/storage/lib/schema.ts"],"sourcesContent":["import { index, pgEnum, pgTable, unique } from \"drizzle-orm/pg-core\";\nimport { baseColumns } from \"@/modules/database/lib/helpers\";\nimport { storageProviders } from \"../providers/lib/constants\";\n\nexport const storageAssetStatusEnum = pgEnum(\"storage_asset_status\", [\"pending\", \"ready\", \"error\"]);\nexport const storageAssetVisibilityEnum = pgEnum(\"storage_asset_visibility\", [\"private\", \"public\"]);\n\n/**\n * Storage objects table\n */\nexport const storageAssets = pgTable(\n \"storage_assets\",\n (t) => ({\n ...baseColumns,\n provider: t.text({ enum: storageProviders }).notNull(),\n bucket: t.text().notNull(),\n key: t.text().notNull(),\n status: storageAssetStatusEnum().notNull(),\n visibility: storageAssetVisibilityEnum().notNull().default(\"private\"),\n size: t.integer().default(0),\n contentType: t.varchar({ length: 255 }),\n uploadId: t.uuid().notNull().defaultRandom(),\n name: t.text(),\n metadata: t.jsonb(),\n etag: t.text(),\n uploadedAt: t.timestamp().defaultNow().notNull(),\n deletedAt: t.timestamp(),\n }),\n (t) => [\n unique(\"storage_assets_provider_bucket_key_unique\").on(t.provider, t.bucket, t.key),\n index(\"storage_assets_status_idx\").on(t.status),\n index(\"storage_assets_bucket_key_idx\").on(t.bucket, t.key),\n ],\n);\n"],"mappings":";;;;;AAIA,MAAa,yBAAyB,OAAO,wBAAwB;CAAC;CAAW;CAAS;CAAQ,CAAC;AACnG,MAAa,6BAA6B,OAAO,4BAA4B,CAAC,WAAW,SAAS,CAAC;;;;AAKnG,MAAa,gBAAgB,QAC3B,mBACC,OAAO;CACN,GAAG;CACH,UAAU,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC,CAAC,SAAS;CACtD,QAAQ,EAAE,MAAM,CAAC,SAAS;CAC1B,KAAK,EAAE,MAAM,CAAC,SAAS;CACvB,QAAQ,wBAAwB,CAAC,SAAS;CAC1C,YAAY,4BAA4B,CAAC,SAAS,CAAC,QAAQ,UAAU;CACrE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;CAC5B,aAAa,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC;CACvC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,eAAe;CAC5C,MAAM,EAAE,MAAM;CACd,UAAU,EAAE,OAAO;CACnB,MAAM,EAAE,MAAM;CACd,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS;CAChD,WAAW,EAAE,WAAW;CACzB,IACA,MAAM;CACL,OAAO,4CAA4C,CAAC,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI;CACnF,MAAM,4BAA4B,CAAC,GAAG,EAAE,OAAO;CAC/C,MAAM,gCAAgC,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI;CAC3D,CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.server.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/service.server.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.server.mjs","names":["#db","#adapter","#generateKey","#parseError"],"sources":["../../../../src/modules/storage/lib/service.server.ts"],"sourcesContent":["import { and, desc, eq, inArray, isNotNull, isNull } from \"drizzle-orm\";\nimport z from \"zod\";\nimport { generateDefaultUUID } from \"@/modules/database/lib/helpers\";\nimport type { Database } from \"@/modules/database/lib/service.server\";\nimport type { TDatabaseSchema } from \"@/modules/database/lib/types\";\nimport { ServerError } from \"@/modules/router/lib/error.server\";\nimport { StorageAdapterError } from \"../providers/lib/errors\";\nimport type { StorageAdapter } from \"../providers/lib/types\";\nimport type { GetObjectURLOptions } from \"../providers/lib/validators\";\nimport { storageAssets } from \"./schema\";\nimport {\n type ConfirmUploadInput,\n confirmUploadInputSchema,\n type PresignUploadInput,\n presignUploadInputSchema,\n type UploadInput,\n uploadInputSchema,\n} from \"./validators\";\n\nexport type StorageConfig<TSchema extends TDatabaseSchema> = {\n db: Database<TSchema>;\n adapter: StorageAdapter;\n prefix?: string;\n};\n\n/**\n * Storage service for working with asset metadata and object storage.\n *\n * Use `Storage.init()` to create a fully configured instance in app code.\n *\n * @param props - Storage configuration, including `db` and `adapter`\n * @returns A ready-to-use `Storage` instance\n * @example\n * const storage = Storage.init({\n * db: drizzle(dbConnection),\n * adapter: new StorageS3Adapter({\n * bucketName: \"my-app-uploads\",\n * region: \"us-east-1\",\n * credentials: {\n * accessKeyId: process.env.AWS_ACCESS_KEY_ID,\n * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,\n * },\n * }),\n * });\n */\n\nexport class Storage<TSchema extends TDatabaseSchema> {\n #adapter: StorageAdapter;\n #db: Database<TSchema>;\n prefix: string;\n\n private constructor({ db, adapter, prefix }: StorageConfig<TSchema>) {\n this.#db = db;\n this.#adapter = adapter;\n this.prefix = prefix ?? \"uploads\";\n }\n\n /**\n * Create a storage service instance.\n *\n * This keeps the public API aligned with other Tulip services such as\n * `Database.init()`, `Email.init()`, and `Auth.init()`.\n *\n * @param props - Storage configuration, including `db` and `adapter`\n * @returns A new `Storage` instance\n * @example\n * const storage = Storage.init({\n * db: drizzle(dbConnection),\n * adapter: new StorageS3Adapter({\n * bucketName: \"my-app-uploads\",\n * region: \"us-east-1\",\n * credentials: {\n * accessKeyId: process.env.AWS_ACCESS_KEY_ID,\n * secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,\n * },\n * }),\n * });\n */\n static init<TSchema extends TDatabaseSchema>(props: StorageConfig<TSchema>) {\n return new Storage(props);\n }\n\n /**\n * Generates the canonical object key for a storage asset id.\n *\n * This keeps bucket key structure internal to the storage service,\n * so callers only work with asset ids and do not manage object paths.\n *\n * @param input - Storage asset id (UUID)\n * @returns Canonical storage key (e.g. `uploads/<id>`)\n * @example\n * const key = this.#generateKey(\"019d0051-2c0d-741e-9e3c-e5a5bc4d16a2\");\n * // key => \"uploads/019d0051-2c0d-741e-9e3c-e5a5bc4d16a2\"\n */\n #generateKey(input: string) {\n const id = z.uuid().parse(input);\n return `${this.prefix}/${id}`;\n }\n\n /**\n * Builds a query to fetch a storage asset by its ID and the current adapter's provider.\n * @param id - The asset ID to search for\n * @returns A dynamic Drizzle query for fetching a single asset\n * @example\n * let query = storageService.getAssetByIdQuery(\"asset-123\");\n * query = query.where(eq(storageAssets.contentType, \"image/png\")); // Add additional conditions if needed\n * const [asset] = await query;\n */\n getAssetByIdQuery(id: string) {\n return this.#db\n .select()\n .from(storageAssets)\n .where(\n and(\n eq(storageAssets.id, id),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n isNull(storageAssets.deletedAt),\n ),\n )\n .limit(1)\n .$dynamic();\n }\n\n /**\n * Fetches a storage asset by its ID.\n * @param id - The asset ID to retrieve\n * @returns The asset object if found, otherwise null\n * @example\n * const asset = await storageService.getAssetById(\"asset-123\");\n * if (asset) {\n * console.log(asset.key, asset.contentType);\n * }\n */\n async getAssetById(id: string) {\n const parsedId = z.uuid().parse(id);\n const [asset] = await this.getAssetByIdQuery(parsedId);\n return asset ?? null;\n }\n\n /**\n * Builds a query to fetch a single ready storage asset by key\n * within the current adapter provider scope.\n *\n * Notes:\n * - Scoped to `this.#adapter.key` to avoid cross-provider leakage.\n * - Targets ready assets by default.\n * - Uniqueness is expected on `(provider, bucket, key)`.\n *\n * @param key - The object key stored in `storage_assets.key`\n * @returns A dynamic Drizzle query returning max 1 row\n * @example\n * let query = storageService.getAssetByKeyQuery(\"uploads/abc/main\");\n * query = query.leftJoin(otherTable, eq(otherTable.assetId, storageAssets.id));\n * const [asset] = await query;\n */\n getAssetByKeyQuery(key: string) {\n return this.#db\n .select()\n .from(storageAssets)\n .where(\n and(\n eq(storageAssets.key, key),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n eq(storageAssets.status, \"ready\"),\n isNull(storageAssets.deletedAt),\n ),\n )\n .limit(1)\n .$dynamic();\n }\n\n /**\n * Fetches a single ready storage asset by key.\n *\n * This is the convenience wrapper around `getAssetByKeyQuery`.\n * Use this when you only need the result, not query composition.\n *\n * @param key - Asset key to look up\n * @returns The matching asset or `null` if none is found\n * @example\n * const asset = await storageService.getAssetByKey(\"uploads/abc/main\");\n * if (!asset) return;\n */\n async getAssetByKey(key: string) {\n const [result] = await this.getAssetByKeyQuery(key);\n return result ?? null;\n }\n\n /**\n * Builds a base query for listing storage assets.\n *\n * Scope and defaults:\n * - Scoped to the current adapter provider (`this.#adapter.key`)\n * - Orders by newest first (`createdAt DESC`)\n *\n * This method returns a dynamic query so callers can extend it with\n * custom filters, joins, pagination, and limits.\n *\n * @returns A dynamic Drizzle query for listing assets\n * @example\n * const query = storageService\n * .listAssetsQuery()\n * .limit(50);\n * const assets = await query;\n */\n listAssetsQuery() {\n return this.#db\n .select()\n .from(storageAssets)\n .where(\n and(\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n isNull(storageAssets.deletedAt),\n ),\n )\n .orderBy(desc(storageAssets.createdAt))\n .$dynamic();\n }\n\n /**\n * Lists storage assets using safe default pagination.\n *\n * This is the convenience wrapper around `listAssetsQuery`.\n * Use `listAssetsQuery()` directly when you need custom query composition.\n *\n * @returns Up to 100 storage assets sorted by newest first\n * @example\n * const assets = await storageService.listAssets();\n */\n async listAssets() {\n const assets = await this.listAssetsQuery().limit(100);\n return assets ?? [];\n }\n\n /**\n * Creates a pending storage asset record and generates a presigned upload URL.\n *\n * Flow:\n * - Validates the input payload\n * - Inserts a `pending` asset in the catalog (`storage_assets`)\n * - Requests a presigned PUT URL from the storage adapter\n * - Marks the asset as `error` if URL generation fails\n *\n * This method is intended for direct-to-storage browser uploads.\n * The upload should be finalized later via a confirm step.\n *\n * @param props - Presign upload input (contentType, size, metadata)\n * @returns The created asset id, key, and presigned URL\n * @throws {ServerError} If intent creation or URL generation fails\n * @example\n * const result = await storageService.presignUpload({\n * contentType: \"image/png\",\n * size: 120_000,\n * metadata: { uploadToken: crypto.randomUUID() },\n * });\n * // result => { id, uploadId, key, presignedUrl }\n */\n async presignUpload(props: PresignUploadInput) {\n const input = presignUploadInputSchema.parse(props);\n\n const id = generateDefaultUUID();\n const uploadId = input.uploadId ?? generateDefaultUUID();\n const key = this.#generateKey(id);\n\n const { contentType, size, metadata, name, visibility } = input;\n\n const [record] = await this.#db\n .insert(storageAssets)\n .values({\n id,\n uploadId,\n key,\n size,\n contentType,\n name,\n visibility,\n provider: this.#adapter.key,\n bucket: this.#adapter.bucketName,\n status: \"pending\",\n metadata,\n })\n .returning();\n\n if (!record) {\n throw new ServerError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to create upload intent\",\n });\n }\n\n try {\n const presignedUrl = await this.#adapter.putObjectURL({ key, contentType, size, metadata });\n\n return { ...record, presignedUrl };\n } catch (error) {\n await this.#db\n .update(storageAssets)\n .set({ status: \"error\" })\n .where(eq(storageAssets.id, record.id));\n\n throw this.#parseError(error, {\n fallbackMessage: \"Failed to generate upload URL\",\n });\n }\n }\n\n /**\n * Confirms a direct-to-storage upload by verifying object existence\n * and transitioning the asset from `pending` to `ready`.\n *\n * Flow:\n * - Validates confirm input\n * - Loads the asset record scoped to the current adapter provider\n * - Returns early if asset is already `ready` (idempotent behavior)\n * - Verifies object existence/metadata via `adapter.headObject`\n * - Marks asset as `error` if verification fails\n * - Updates status to `ready` and stores upload metadata\n *\n * @param props - Confirm upload payload containing the asset uploadId\n * @returns The updated storage asset record\n * @throws {ServerError} If the asset is missing, verification fails, or update fails\n * @example\n * const asset = await storageService.confirmUpload(\"019d0051-2c0d-741e-9e3c-e5a5bc4d16a2\");\n * // asset.status === \"ready\"\n */\n async confirmUpload(props: ConfirmUploadInput) {\n const uploadId = confirmUploadInputSchema.parse(props);\n\n const [record] = await this.#db\n .select()\n .from(storageAssets)\n .where(\n and(\n eq(storageAssets.uploadId, uploadId),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n isNull(storageAssets.deletedAt),\n ),\n )\n .limit(1);\n\n if (!record) {\n throw new ServerError(\"NOT_FOUND\", { message: \"Storage asset not found\" });\n }\n\n if (record.status === \"ready\") return record;\n\n let head: Awaited<ReturnType<StorageAdapter[\"headObject\"]>>;\n\n try {\n head = await this.#adapter.headObject({ key: record.key });\n } catch (error) {\n await this.#db\n .update(storageAssets)\n .set({ status: \"error\" })\n .where(eq(storageAssets.id, record.id));\n\n throw this.#parseError(error, {\n fallbackMessage: \"Failed to verify uploaded object\",\n });\n }\n\n const [updated] = await this.#db\n .update(storageAssets)\n .set({\n status: \"ready\",\n uploadedAt: new Date(),\n size: head.size ?? record.size,\n contentType: head.contentType ?? record.contentType,\n })\n .where(and(eq(storageAssets.id, record.id), eq(storageAssets.status, \"pending\")))\n .returning();\n\n if (!updated) {\n throw new ServerError(\"INTERNAL_SERVER_ERROR\", { message: \"Failed to confirm upload\" });\n }\n\n return updated;\n }\n\n /**\n * Uploads an asset directly from the server and persists its catalog record.\n *\n * Flow:\n * - Validates upload input\n * - Creates a `pending` asset record in `storage_assets`\n * - Uploads the object bytes through the storage adapter\n * - Marks the record as `ready` and stores upload metadata\n * - Marks the record as `error` if upload fails\n *\n * This method is intended for server-side uploads (non-presigned flow).\n * For browser direct uploads, use `presignUpload` + `confirmUpload`.\n *\n * @param props - Upload payload (body, contentType, size)\n * @returns The finalized storage asset record\n * @throws {ServerError} If record creation, upload, or finalization fails\n * @example\n * const asset = await storageService.upload({\n * body: fileBuffer,\n * contentType: \"application/pdf\",\n * size: fileBuffer.byteLength,\n * });\n */\n async upload(props: UploadInput) {\n const { body, contentType, size, metadata, name, visibility } = uploadInputSchema.parse(props);\n\n const id = generateDefaultUUID();\n const key = this.#generateKey(id);\n\n const [record] = await this.#db\n .insert(storageAssets)\n .values({\n id,\n key,\n size,\n contentType,\n name,\n visibility,\n provider: this.#adapter.key,\n bucket: this.#adapter.bucketName,\n status: \"pending\",\n metadata,\n })\n .returning();\n\n if (!record) {\n throw new ServerError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to create upload record\",\n });\n }\n\n try {\n const uploaded = await this.#adapter.putObject({ key, body, contentType, size, metadata });\n\n const [updated] = await this.#db\n .update(storageAssets)\n .set({\n status: \"ready\",\n uploadedAt: new Date(),\n size: uploaded.size ?? size ?? record.size,\n contentType: uploaded.contentType ?? contentType ?? record.contentType,\n })\n .where(and(eq(storageAssets.id, record.id), eq(storageAssets.status, \"pending\")))\n .returning();\n\n if (!updated) {\n throw new ServerError(\"INTERNAL_SERVER_ERROR\", {\n message: \"Failed to finalize upload\",\n });\n }\n\n return updated;\n } catch (error) {\n await this.#db\n .update(storageAssets)\n .set({ status: \"error\" })\n .where(and(eq(storageAssets.id, record.id), eq(storageAssets.status, \"pending\")));\n\n throw this.#parseError(error, {\n fallbackMessage: \"Failed to upload object\",\n });\n }\n }\n\n /**\n * Retrieves the object content for a ready storage asset.\n *\n * Flow:\n * - Looks up the asset record by id, scoped to the current adapter provider\n * - Ensures the asset is in `ready` status\n * - Fetches object content from the storage adapter using the stored key\n *\n * @param id - The storage asset id\n * @returns The adapter object response (stream/body + metadata)\n * @throws {ServerError} If the asset does not exist or is not ready\n * @example\n * const object = await storageService.getObject(\"asset-123\");\n * // object.body can be streamed/consumed by caller\n */\n async getObject(input: string) {\n const id = z.uuid().parse(input);\n\n const [record] = await this.#db\n .select()\n .from(storageAssets)\n .where(\n and(\n eq(storageAssets.id, id),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n eq(storageAssets.status, \"ready\"),\n isNull(storageAssets.deletedAt),\n ),\n )\n .limit(1);\n\n if (!record) {\n throw new ServerError(\"NOT_FOUND\", { message: \"Storage asset not found\" });\n }\n\n return this.#adapter.getObject(record.key).catch((error) => {\n throw this.#parseError(error, {\n fallbackMessage: \"Failed to retrieve object\",\n });\n });\n }\n\n /**\n * Generates a presigned read URL for a ready storage asset.\n *\n * Flow:\n * - Validates the asset id\n * - Resolves the asset record scoped to the current adapter provider\n * - Ensures the asset is in `ready` status\n * - Delegates URL signing to the storage adapter using the stored key\n *\n * @param input - Storage asset id (UUID)\n * @param options - Optional URL options (for example expiration/disposition)\n * @returns A presigned URL for reading the object\n * @throws {ServerError} If the asset does not exist or is not ready\n * @example\n * const url = await storageService.getObjectURL(\"019d0051-2c0d-741e-9e3c-e5a5bc4d16a2\", {\n * expiresIn: 3600,\n * });\n */\n\n async getObjectURL(input: string, options?: GetObjectURLOptions) {\n const id = z.uuid().parse(input);\n\n const [record] = await this.#db\n .select()\n .from(storageAssets)\n .where(\n and(\n eq(storageAssets.id, id),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n eq(storageAssets.status, \"ready\"),\n isNull(storageAssets.deletedAt),\n ),\n )\n .limit(1);\n\n if (!record) {\n throw new ServerError(\"NOT_FOUND\", { message: \"Storage asset not found\" });\n }\n\n return this.#adapter.getObjectURL(record.key, options).catch((error) => {\n throw this.#parseError(error, {\n fallbackMessage: \"Failed to generate object URL\",\n });\n });\n }\n\n /**\n * Soft deletes a single storage asset by id.\n *\n * This is a convenience wrapper around `deleteAssets`.\n *\n * @param input - Storage asset id (UUID)\n * @returns The soft-deleted asset record, or null if not found/already deleted\n */\n async deleteAsset(input: string) {\n const id = z.uuid().parse(input);\n const [deleted] = await this.deleteAssets([id]);\n return deleted ?? null;\n }\n\n /**\n * Soft deletes multiple storage assets by setting `deletedAt`.\n *\n * Flow:\n * - Validates and de-duplicates ids\n * - Resolves provider-scoped active records\n * - Marks matching rows as deleted by setting `deletedAt`\n *\n * @param input - Storage asset ids (UUID[])\n * @returns Soft-deleted asset records\n */\n async deleteAssets(input: string[]) {\n const ids = [...new Set(z.array(z.uuid()).parse(input))];\n if (ids.length === 0) return [];\n\n return this.#db\n .update(storageAssets)\n .set({ deletedAt: new Date() })\n .where(\n and(\n inArray(storageAssets.id, ids),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n isNull(storageAssets.deletedAt),\n ),\n )\n .returning();\n }\n\n /**\n * Restores a single soft-deleted storage asset.\n *\n * This is a convenience wrapper around `restoreAssets`.\n *\n * @param input - Storage asset id (UUID)\n * @returns The restored asset record, or null if not found/not deleted\n */\n async restoreAsset(input: string) {\n const id = z.uuid().parse(input);\n const [restored] = await this.restoreAssets([id]);\n return restored ?? null;\n }\n\n /**\n * Restores multiple soft-deleted storage assets by clearing `deletedAt`.\n *\n * @param input - Storage asset ids (UUID[])\n * @returns Restored asset records\n */\n async restoreAssets(input: string[]) {\n const ids = [...new Set(z.array(z.uuid()).parse(input))];\n if (ids.length === 0) return [];\n\n return this.#db\n .update(storageAssets)\n .set({ deletedAt: null })\n .where(\n and(\n inArray(storageAssets.id, ids),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n isNotNull(storageAssets.deletedAt),\n ),\n )\n .returning();\n }\n\n /**\n * Hard deletes a single storage asset.\n *\n * This is a convenience wrapper around `purgeAssets`.\n *\n * @param input - Storage asset id (UUID)\n * @returns The purged asset record, or null if not found\n */\n async purgeAsset(input: string) {\n const id = z.uuid().parse(input);\n const [deleted] = await this.purgeAssets([id]);\n return deleted ?? null;\n }\n\n /**\n * Hard deletes multiple storage assets.\n *\n * Flow:\n * - Validates and de-duplicates ids\n * - Resolves provider-scoped records\n * - Deletes physical objects from the adapter by key\n * - Hard deletes DB records\n *\n * @param input - Storage asset ids (UUID[])\n * @returns Purged asset records\n * @throws {ServerError} If provider deletion fails\n */\n async purgeAssets(input: string[]) {\n const ids = [...new Set(z.array(z.uuid()).parse(input))];\n if (ids.length === 0) return [];\n\n const records = await this.#db\n .select({\n id: storageAssets.id,\n key: storageAssets.key,\n })\n .from(storageAssets)\n .where(\n and(\n inArray(storageAssets.id, ids),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n ),\n );\n\n if (records.length === 0) return [];\n\n const keys = records.map((r) => r.key);\n\n try {\n await this.#adapter.deleteObjects(keys);\n } catch (error) {\n throw this.#parseError(error, {\n fallbackMessage: \"Failed to delete storage objects\",\n });\n }\n\n const deletedIds = records.map((r) => r.id);\n\n const deleted = await this.#db\n .delete(storageAssets)\n .where(\n and(\n inArray(storageAssets.id, deletedIds),\n eq(storageAssets.provider, this.#adapter.key),\n eq(storageAssets.bucket, this.#adapter.bucketName),\n ),\n )\n .returning();\n\n return deleted;\n }\n\n /**\n * Normalizes unknown adapter/service errors into a consistent `ServerError`.\n *\n * Behavior:\n * - Returns existing `ServerError` instances unchanged\n * - Maps known storage adapter errors to application-level server errors\n * - Falls back to a generic internal server error for unknown failures\n *\n * This keeps adapter-specific errors inside the storage layer while exposing\n * a stable error contract to route handlers and RPC procedures.\n *\n * @param error - The unknown error to normalize\n * @param options - Optional fallback message for non-specific failures\n * @returns A normalized `ServerError`\n */\n\n #parseError(error: unknown, options?: { fallbackMessage: string }) {\n // If it's already a ServerError, return as-is to avoid double-wrapping\n if (error instanceof ServerError) return error;\n\n // Handle known storage adapter errors and convert to appropriate ServerError\n if (error instanceof StorageAdapterError) {\n if (error.code === \"OBJECT_NOT_FOUND\") {\n return new ServerError(\"NOT_FOUND\", {\n message: \"Storage asset not found\",\n cause: error,\n });\n }\n\n return new ServerError(\"INTERNAL_SERVER_ERROR\", {\n message: options?.fallbackMessage ?? \"Storage adapter error\",\n cause: error,\n });\n }\n\n // For unknown errors, return a generic server error with limited information to avoid leaking details\n return new ServerError(\"INTERNAL_SERVER_ERROR\", {\n message: options?.fallbackMessage ?? \"Unknown storage error\",\n cause: error instanceof Error ? error : undefined,\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload.client.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/upload.client.ts"],"mappings":";;;;;;AAUA;KAAY,iBAAA,GAAoB,kBAAA;EAAuB,IAAA,EAAM,IAAA;AAAA;AAAA,KACjD,kBAAA,GAAqB,IAAA,CAAK,iBAAA;AAAA,KAC1B,WAAA;EACV,aAAA,IAAiB,KAAA,EAAO,iBAAA,KAAsB,OAAA;EAC9C,YAAA,IAAgB,aAAA,EAAe,mBAAA,KAAwB,OAAA;EACvD,aAAA,IAAiB,aAAA,EAAe,mBAAA,KAAwB,OAAA;EACxD,YAAA,IAAgB,KAAA,EAAO,wBAAA,KAA6B,OAAA;AAAA;;;;KAM1C,YAAA;EACV,aAAA,GAAgB,KAAA,EAAO,kBAAA,KAAuB,iBAAA;EAC9C,MAAA,GAAS,KAAA,EAAO,iBAAA,EAAmB,KAAA,GAAQ,WAAA,KAAgB,OAAA,CAAQ,wBAAA;EACnE,WAAA,GAAc,EAAA,aAAe,OAAA,CAAQ,wBAAA;EACrC,YAAA,GAAe,GAAA,eAAkB,OAAA,CAAQ,wBAAA;EACzC,YAAA,GAAe,EAAA,aAAe,OAAA,CAAQ,wBAAA;EACtC,aAAA,GAAgB,GAAA,eAAkB,OAAA,CAAQ,wBAAA;EAC1C,UAAA,GAAa,EAAA,aAAe,OAAA,CAAQ,wBAAA;EACpC,WAAA,GAAc,GAAA,eAAkB,OAAA,CAAQ,wBAAA;AAAA;;;;KAMrC,wBAAA;EACH,SAAA;IACE,OAAA,GAAU,KAAA,EAAO,mBAAA,gBAAmC,OAAA,CAAQ,oBAAA;IAC5D,OAAA,GAAU,QAAA,EAAU,mBAAA,gBAAmC,OAAA,CAAQ,oBAAA;IAC/D,YAAA,GACE,GAAA,EAAK,mBAAA,qBACF,OAAA,CAAQ,oBAAA;IACb,WAAA,GACE,EAAA,EAAI,mBAAA,oBACD,OAAA,CAAQ,oBAAA;IACb,YAAA,GACE,EAAA,EAAI,mBAAA,qBACD,OAAA,CAAQ,oBAAA;IACb,aAAA,GACE,GAAA,EAAK,mBAAA,sBACF,OAAA,CAAQ,oBAAA;IACb,UAAA,GACE,EAAA,EAAI,mBAAA,mBACD,OAAA,CAAQ,oBAAA;IACb,WAAA,GACE,GAAA,EAAK,mBAAA,oBACF,OAAA,CAAQ,oBAAA;EAAA;AAAA;;;;;;;AAnCjB;;;iBAgDgB,kBAAA,CAAmB,KAAA,EAAO,wBAAA,GAA2B,YAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"upload.client.mjs","names":[],"sources":["../../../../src/modules/storage/lib/upload.client.ts"],"sourcesContent":["import type { StorageRouterInputs, StorageRouterOutputs } from \"./procedures.server\";\nimport type {\n PresignUploadInput,\n PresignUploadOutput,\n SelectStorageAssetSchema,\n} from \"./validators\";\n\n/**\n * Upload request\n */\nexport type UploadFileRequest = PresignUploadInput & { file: File };\nexport type PrepareUploadInput = Omit<UploadFileRequest, \"name\" | \"contentType\" | \"size\">;\nexport type UploadHooks = {\n beforePresign?: (input: UploadFileRequest) => Promise<void> | void;\n afterPresign?: (presignResult: PresignUploadOutput) => Promise<void> | void;\n beforeConfirm?: (presignResult: PresignUploadOutput) => Promise<void> | void;\n afterConfirm?: (asset: SelectStorageAssetSchema) => Promise<void> | void;\n};\n\n/**\n * Upload client\n */\nexport type UploadClient = {\n prepareUpload: (input: PrepareUploadInput) => UploadFileRequest;\n upload: (input: UploadFileRequest, hooks?: UploadHooks) => Promise<SelectStorageAssetSchema>;\n deleteAsset: (id: string) => Promise<SelectStorageAssetSchema | null>;\n deleteAssets: (ids: string[]) => Promise<SelectStorageAssetSchema[]>;\n restoreAsset: (id: string) => Promise<SelectStorageAssetSchema | null>;\n restoreAssets: (ids: string[]) => Promise<SelectStorageAssetSchema[]>;\n purgeAsset: (id: string) => Promise<SelectStorageAssetSchema | null>;\n purgeAssets: (ids: string[]) => Promise<SelectStorageAssetSchema[]>;\n};\n\n/**\n * Create upload client props\n */\ntype CreateStorageClientProps = {\n endpoints: {\n presign: (input: StorageRouterInputs[\"presign\"]) => Promise<StorageRouterOutputs[\"presign\"]>;\n confirm: (uploadId: StorageRouterInputs[\"confirm\"]) => Promise<StorageRouterOutputs[\"confirm\"]>;\n deleteAssets: (\n ids: StorageRouterInputs[\"deleteAssets\"],\n ) => Promise<StorageRouterOutputs[\"deleteAssets\"]>;\n deleteAsset: (\n id: StorageRouterInputs[\"deleteAsset\"],\n ) => Promise<StorageRouterOutputs[\"deleteAsset\"]>;\n restoreAsset: (\n id: StorageRouterInputs[\"restoreAsset\"],\n ) => Promise<StorageRouterOutputs[\"restoreAsset\"]>;\n restoreAssets: (\n ids: StorageRouterInputs[\"restoreAssets\"],\n ) => Promise<StorageRouterOutputs[\"restoreAssets\"]>;\n purgeAsset: (\n id: StorageRouterInputs[\"purgeAsset\"],\n ) => Promise<StorageRouterOutputs[\"purgeAsset\"]>;\n purgeAssets: (\n ids: StorageRouterInputs[\"purgeAssets\"],\n ) => Promise<StorageRouterOutputs[\"purgeAssets\"]>;\n };\n};\n\n/**\n * Creates an upload client for the storage module.\n *\n * Flow:\n * - Prepare upload payload with generated id and resolved key\n * - Request presigned upload URL from server\n * - Upload file bytes directly to object storage\n * - Confirm upload and receive finalized storage asset\n */\nexport function createUploadClient(props: CreateStorageClientProps): UploadClient {\n /**\n * Create input schema for the upload method\n * @param {PrepareUploadInput} input\n * @returns {UploadFileRequest}\n */\n function prepareUpload(input: PrepareUploadInput): UploadFileRequest {\n return {\n ...input,\n uploadId: input.uploadId ?? crypto.randomUUID(),\n name: input.file.name,\n size: input.file.size,\n contentType: input.file.type || \"application/octet-stream\",\n };\n }\n\n /**\n * Upload file to the server\n * @param {UploadFileRequest} input\n * @returns {Promise<SelectStorageAssetSchema>}\n */\n async function upload(\n input: UploadFileRequest,\n hooks?: UploadHooks,\n ): Promise<SelectStorageAssetSchema> {\n let presignResult: PresignUploadOutput | null = null;\n\n try {\n /**\n * Presign\n */\n await hooks?.beforePresign?.(input);\n presignResult = await props.endpoints.presign(input);\n await hooks?.afterPresign?.(presignResult);\n\n /**\n * Upload the file\n */\n const uploadResponse = await fetch(presignResult.presignedUrl, {\n method: \"PUT\",\n headers: { \"Content-Type\": input.contentType || \"application/octet-stream\" },\n body: input.file,\n });\n\n if (!uploadResponse.ok) {\n const message = await uploadResponse.text();\n throw new Error(`Upload failed: ${message}`);\n }\n\n /**\n * Confirm\n */\n await hooks?.beforeConfirm?.(presignResult);\n const asset = await props.endpoints.confirm(presignResult.uploadId);\n await hooks?.afterConfirm?.(asset);\n /**\n * Return\n */\n return asset;\n } catch (err) {\n console.error(\"Upload error: \", err);\n\n /**\n * Delete if upload failed\n * */\n if (presignResult) {\n await props.endpoints.deleteAsset(presignResult.id).catch((deleteErr) => {\n console.error(\"Failed to delete asset after upload error: \", deleteErr);\n });\n }\n\n throw err;\n }\n }\n\n return {\n prepareUpload,\n upload,\n deleteAsset: props.endpoints.deleteAsset,\n deleteAssets: props.endpoints.deleteAssets,\n restoreAsset: props.endpoints.restoreAsset,\n restoreAssets: props.endpoints.restoreAssets,\n purgeAsset: props.endpoints.purgeAsset,\n purgeAssets: props.endpoints.purgeAssets,\n };\n}\n"],"mappings":";;;;;;;;;;AAsEA,SAAgB,mBAAmB,OAA+C;;;;;;CAMhF,SAAS,cAAc,OAA8C;AACnE,SAAO;GACL,GAAG;GACH,UAAU,MAAM,YAAY,OAAO,YAAY;GAC/C,MAAM,MAAM,KAAK;GACjB,MAAM,MAAM,KAAK;GACjB,aAAa,MAAM,KAAK,QAAQ;GACjC;;;;;;;CAQH,eAAe,OACb,OACA,OACmC;EACnC,IAAI,gBAA4C;AAEhD,MAAI;;;;AAIF,SAAM,OAAO,gBAAgB,MAAM;AACnC,mBAAgB,MAAM,MAAM,UAAU,QAAQ,MAAM;AACpD,SAAM,OAAO,eAAe,cAAc;;;;GAK1C,MAAM,iBAAiB,MAAM,MAAM,cAAc,cAAc;IAC7D,QAAQ;IACR,SAAS,EAAE,gBAAgB,MAAM,eAAe,4BAA4B;IAC5E,MAAM,MAAM;IACb,CAAC;AAEF,OAAI,CAAC,eAAe,IAAI;IACtB,MAAM,UAAU,MAAM,eAAe,MAAM;AAC3C,UAAM,IAAI,MAAM,kBAAkB,UAAU;;;;;AAM9C,SAAM,OAAO,gBAAgB,cAAc;GAC3C,MAAM,QAAQ,MAAM,MAAM,UAAU,QAAQ,cAAc,SAAS;AACnE,SAAM,OAAO,eAAe,MAAM;;;;AAIlC,UAAO;WACA,KAAK;AACZ,WAAQ,MAAM,kBAAkB,IAAI;;;;AAKpC,OAAI,cACF,OAAM,MAAM,UAAU,YAAY,cAAc,GAAG,CAAC,OAAO,cAAc;AACvE,YAAQ,MAAM,+CAA+C,UAAU;KACvE;AAGJ,SAAM;;;AAIV,QAAO;EACL;EACA;EACA,aAAa,MAAM,UAAU;EAC7B,cAAc,MAAM,UAAU;EAC9B,cAAc,MAAM,UAAU;EAC9B,eAAe,MAAM,UAAU;EAC/B,YAAY,MAAM,UAAU;EAC5B,aAAa,MAAM,UAAU;EAC9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.mts","names":[],"sources":["../../../../src/modules/storage/lib/validators.ts"],"mappings":";;;;;;;;;;KASY,YAAA,UAAsB,aAAA,CAAc,YAAA;;AAAhD;;cAKa,4BAAA,EAA4B,GAAA,CAAA,OAAA;;;;KAC7B,sBAAA,GAAyB,GAAA,CAAE,KAAA,QAAa,4BAAA;;;;cAKvC,wBAAA,eAAwB,WAAA;YAAoC,oBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAE7D,uBAAA,GAA0B,GAAA,CAAE,KAAA,QAAa,wBAAA;AAAA,KACzC,wBAAA,GAA2B,GAAA,CAAE,KAAA,QAAa,wBAAA;;;;cAKzC,wBAAA,eAAwB,WAAA;YAAoC,oBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAE7D,uBAAA,GAA0B,GAAA,CAAE,KAAA,QAAa,wBAAA;AAAA,KACzC,wBAAA,GAA2B,GAAA,CAAE,KAAA,QAAa,wBAAA;;;;cAKzC,wBAAA,eAAwB,WAAA;YAAoC,oBAAA,CAAA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAE7D,wBAAA,GAA2B,GAAA,CAAE,KAAA,QAAa,wBAAA;;;;cAOzC,iBAAA,EAAiB,GAAA,CAAA,SAAA;;;;;;;;;;;cASjB,wBAAA,EAAwB,GAAA,CAAA,SAAA;;;;;;;;;;;cASxB,yBAAA,EAAyB,GAAA,CAAA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAIzB,wBAAA,EAAwB,GAAA,CAAA,OAAA;AAAA,KAIzB,WAAA,GAAc,GAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,kBAAA,GAAqB,GAAA,CAAE,KAAA,QAAa,wBAAA;AAAA,KACpC,mBAAA,GAAsB,GAAA,CAAE,KAAA,QAAa,yBAAA;AAAA,KACrC,kBAAA,GAAqB,GAAA,CAAE,KAAA,QAAa,wBAAA;;;;cAKnC,iBAAA,EAAiB,GAAA,CAAA,SAAA;;;;;;KAIlB,gBAAA,GAAmB,GAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAClC,iBAAA,GAAoB,GAAA,CAAE,KAAA,QAAa,iBAAA"}
|