@rovela-ai/sdk 0.4.1 → 0.4.2
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/admin/api/accept-invite.d.ts +65 -0
- package/dist/admin/api/accept-invite.d.ts.map +1 -0
- package/dist/admin/api/accept-invite.js +115 -0
- package/dist/admin/api/accept-invite.js.map +1 -0
- package/dist/admin/api/categories.d.ts +68 -0
- package/dist/admin/api/categories.d.ts.map +1 -0
- package/dist/admin/api/categories.js +266 -0
- package/dist/admin/api/categories.js.map +1 -0
- package/dist/admin/api/check.d.ts +38 -0
- package/dist/admin/api/check.d.ts.map +1 -0
- package/dist/admin/api/check.js +49 -0
- package/dist/admin/api/check.js.map +1 -0
- package/dist/admin/api/customers.d.ts +77 -0
- package/dist/admin/api/customers.d.ts.map +1 -0
- package/dist/admin/api/customers.js +219 -0
- package/dist/admin/api/customers.js.map +1 -0
- package/dist/admin/api/forgot-password.d.ts +39 -0
- package/dist/admin/api/forgot-password.d.ts.map +1 -0
- package/dist/admin/api/forgot-password.js +66 -0
- package/dist/admin/api/forgot-password.js.map +1 -0
- package/dist/admin/api/index.d.ts +109 -0
- package/dist/admin/api/index.d.ts.map +1 -0
- package/dist/admin/api/index.js +128 -0
- package/dist/admin/api/index.js.map +1 -0
- package/dist/admin/api/linked-customer.d.ts +32 -0
- package/dist/admin/api/linked-customer.d.ts.map +1 -0
- package/dist/admin/api/linked-customer.js +45 -0
- package/dist/admin/api/linked-customer.js.map +1 -0
- package/dist/admin/api/me.d.ts +72 -0
- package/dist/admin/api/me.d.ts.map +1 -0
- package/dist/admin/api/me.js +177 -0
- package/dist/admin/api/me.js.map +1 -0
- package/dist/admin/api/orders.d.ts +91 -0
- package/dist/admin/api/orders.d.ts.map +1 -0
- package/dist/admin/api/orders.js +390 -0
- package/dist/admin/api/orders.js.map +1 -0
- package/dist/admin/api/products-bulk.d.ts +38 -0
- package/dist/admin/api/products-bulk.d.ts.map +1 -0
- package/dist/admin/api/products-bulk.js +135 -0
- package/dist/admin/api/products-bulk.js.map +1 -0
- package/dist/admin/api/products-stats.d.ts +34 -0
- package/dist/admin/api/products-stats.d.ts.map +1 -0
- package/dist/admin/api/products-stats.js +43 -0
- package/dist/admin/api/products-stats.js.map +1 -0
- package/dist/admin/api/products.d.ts +104 -0
- package/dist/admin/api/products.d.ts.map +1 -0
- package/dist/admin/api/products.js +491 -0
- package/dist/admin/api/products.js.map +1 -0
- package/dist/admin/api/refund.d.ts +29 -0
- package/dist/admin/api/refund.d.ts.map +1 -0
- package/dist/admin/api/refund.js +142 -0
- package/dist/admin/api/refund.js.map +1 -0
- package/dist/admin/api/reset-password.d.ts +49 -0
- package/dist/admin/api/reset-password.d.ts.map +1 -0
- package/dist/admin/api/reset-password.js +99 -0
- package/dist/admin/api/reset-password.js.map +1 -0
- package/dist/admin/api/return.d.ts +47 -0
- package/dist/admin/api/return.d.ts.map +1 -0
- package/dist/admin/api/return.js +186 -0
- package/dist/admin/api/return.js.map +1 -0
- package/dist/admin/api/settings.d.ts +49 -0
- package/dist/admin/api/settings.d.ts.map +1 -0
- package/dist/admin/api/settings.js +201 -0
- package/dist/admin/api/settings.js.map +1 -0
- package/dist/admin/api/setup-guide.d.ts +78 -0
- package/dist/admin/api/setup-guide.d.ts.map +1 -0
- package/dist/admin/api/setup-guide.js +235 -0
- package/dist/admin/api/setup-guide.js.map +1 -0
- package/dist/admin/api/setup.d.ts +60 -0
- package/dist/admin/api/setup.d.ts.map +1 -0
- package/dist/admin/api/setup.js +126 -0
- package/dist/admin/api/setup.js.map +1 -0
- package/dist/admin/api/shipping.d.ts +287 -0
- package/dist/admin/api/shipping.d.ts.map +1 -0
- package/dist/admin/api/shipping.js +746 -0
- package/dist/admin/api/shipping.js.map +1 -0
- package/dist/admin/api/stats.d.ts +43 -0
- package/dist/admin/api/stats.d.ts.map +1 -0
- package/dist/admin/api/stats.js +92 -0
- package/dist/admin/api/stats.js.map +1 -0
- package/dist/admin/api/stripe-status.d.ts +39 -0
- package/dist/admin/api/stripe-status.d.ts.map +1 -0
- package/dist/admin/api/stripe-status.js +99 -0
- package/dist/admin/api/stripe-status.js.map +1 -0
- package/dist/admin/api/tax-zones.d.ts +97 -0
- package/dist/admin/api/tax-zones.d.ts.map +1 -0
- package/dist/admin/api/tax-zones.js +265 -0
- package/dist/admin/api/tax-zones.js.map +1 -0
- package/dist/admin/api/users.d.ts +142 -0
- package/dist/admin/api/users.d.ts.map +1 -0
- package/dist/admin/api/users.js +355 -0
- package/dist/admin/api/users.js.map +1 -0
- package/dist/admin/components/AdminAcceptInviteForm.d.ts +3 -0
- package/dist/admin/components/AdminAcceptInviteForm.d.ts.map +1 -0
- package/dist/admin/components/AdminAcceptInviteForm.js +137 -0
- package/dist/admin/components/AdminAcceptInviteForm.js.map +1 -0
- package/dist/admin/components/AdminAccountPage.d.ts +10 -0
- package/dist/admin/components/AdminAccountPage.d.ts.map +1 -0
- package/dist/admin/components/AdminAccountPage.js +126 -0
- package/dist/admin/components/AdminAccountPage.js.map +1 -0
- package/dist/admin/components/AdminBarBanner.d.ts +2 -0
- package/dist/admin/components/AdminBarBanner.d.ts.map +1 -0
- package/dist/admin/components/AdminBarBanner.js +266 -0
- package/dist/admin/components/AdminBarBanner.js.map +1 -0
- package/dist/admin/components/AdminForgotPasswordForm.d.ts +8 -0
- package/dist/admin/components/AdminForgotPasswordForm.d.ts.map +1 -0
- package/dist/admin/components/AdminForgotPasswordForm.js +59 -0
- package/dist/admin/components/AdminForgotPasswordForm.js.map +1 -0
- package/dist/admin/components/AdminGuard.d.ts +40 -0
- package/dist/admin/components/AdminGuard.d.ts.map +1 -0
- package/dist/admin/components/AdminGuard.js +94 -0
- package/dist/admin/components/AdminGuard.js.map +1 -0
- package/dist/admin/components/AdminLayout.d.ts +40 -0
- package/dist/admin/components/AdminLayout.d.ts.map +1 -0
- package/dist/admin/components/AdminLayout.js +39 -0
- package/dist/admin/components/AdminLayout.js.map +1 -0
- package/dist/admin/components/AdminLoginForm.d.ts +18 -0
- package/dist/admin/components/AdminLoginForm.d.ts.map +1 -0
- package/dist/admin/components/AdminLoginForm.js +61 -0
- package/dist/admin/components/AdminLoginForm.js.map +1 -0
- package/dist/admin/components/AdminNav.d.ts +44 -0
- package/dist/admin/components/AdminNav.d.ts.map +1 -0
- package/dist/admin/components/AdminNav.js +175 -0
- package/dist/admin/components/AdminNav.js.map +1 -0
- package/dist/admin/components/AdminResetPasswordForm.d.ts +12 -0
- package/dist/admin/components/AdminResetPasswordForm.d.ts.map +1 -0
- package/dist/admin/components/AdminResetPasswordForm.js +134 -0
- package/dist/admin/components/AdminResetPasswordForm.js.map +1 -0
- package/dist/admin/components/AdminSelect.d.ts +47 -0
- package/dist/admin/components/AdminSelect.d.ts.map +1 -0
- package/dist/admin/components/AdminSelect.js +71 -0
- package/dist/admin/components/AdminSelect.js.map +1 -0
- package/dist/admin/components/AdminToast.d.ts +31 -0
- package/dist/admin/components/AdminToast.d.ts.map +1 -0
- package/dist/admin/components/AdminToast.js +83 -0
- package/dist/admin/components/AdminToast.js.map +1 -0
- package/dist/admin/components/AdminUserMenu.d.ts +14 -0
- package/dist/admin/components/AdminUserMenu.d.ts.map +1 -0
- package/dist/admin/components/AdminUserMenu.js +34 -0
- package/dist/admin/components/AdminUserMenu.js.map +1 -0
- package/dist/admin/components/CategoryForm.d.ts +30 -0
- package/dist/admin/components/CategoryForm.d.ts.map +1 -0
- package/dist/admin/components/CategoryForm.js +152 -0
- package/dist/admin/components/CategoryForm.js.map +1 -0
- package/dist/admin/components/CategorySelect.d.ts +32 -0
- package/dist/admin/components/CategorySelect.d.ts.map +1 -0
- package/dist/admin/components/CategorySelect.js +139 -0
- package/dist/admin/components/CategorySelect.js.map +1 -0
- package/dist/admin/components/CustomerDetails.d.ts +15 -0
- package/dist/admin/components/CustomerDetails.d.ts.map +1 -0
- package/dist/admin/components/CustomerDetails.js +177 -0
- package/dist/admin/components/CustomerDetails.js.map +1 -0
- package/dist/admin/components/CustomerTable.d.ts +13 -0
- package/dist/admin/components/CustomerTable.d.ts.map +1 -0
- package/dist/admin/components/CustomerTable.js +112 -0
- package/dist/admin/components/CustomerTable.js.map +1 -0
- package/dist/admin/components/DeleteConfirmDialog.d.ts +56 -0
- package/dist/admin/components/DeleteConfirmDialog.d.ts.map +1 -0
- package/dist/admin/components/DeleteConfirmDialog.js +46 -0
- package/dist/admin/components/DeleteConfirmDialog.js.map +1 -0
- package/dist/admin/components/ExampleContentBanner.d.ts +2 -0
- package/dist/admin/components/ExampleContentBanner.d.ts.map +1 -0
- package/dist/admin/components/ExampleContentBanner.js +153 -0
- package/dist/admin/components/ExampleContentBanner.js.map +1 -0
- package/dist/admin/components/InventoryEditor.d.ts +15 -0
- package/dist/admin/components/InventoryEditor.d.ts.map +1 -0
- package/dist/admin/components/InventoryEditor.js +86 -0
- package/dist/admin/components/InventoryEditor.js.map +1 -0
- package/dist/admin/components/InviteUserDialog.d.ts +3 -0
- package/dist/admin/components/InviteUserDialog.d.ts.map +1 -0
- package/dist/admin/components/InviteUserDialog.js +126 -0
- package/dist/admin/components/InviteUserDialog.js.map +1 -0
- package/dist/admin/components/LogoUpload.d.ts +22 -0
- package/dist/admin/components/LogoUpload.d.ts.map +1 -0
- package/dist/admin/components/LogoUpload.js +210 -0
- package/dist/admin/components/LogoUpload.js.map +1 -0
- package/dist/admin/components/LowStockAlert.d.ts +11 -0
- package/dist/admin/components/LowStockAlert.d.ts.map +1 -0
- package/dist/admin/components/LowStockAlert.js +33 -0
- package/dist/admin/components/LowStockAlert.js.map +1 -0
- package/dist/admin/components/OrderDetails.d.ts +14 -0
- package/dist/admin/components/OrderDetails.d.ts.map +1 -0
- package/dist/admin/components/OrderDetails.js +210 -0
- package/dist/admin/components/OrderDetails.js.map +1 -0
- package/dist/admin/components/OrderStatusChart.d.ts +21 -0
- package/dist/admin/components/OrderStatusChart.d.ts.map +1 -0
- package/dist/admin/components/OrderStatusChart.js +61 -0
- package/dist/admin/components/OrderStatusChart.js.map +1 -0
- package/dist/admin/components/OrderTable.d.ts +13 -0
- package/dist/admin/components/OrderTable.d.ts.map +1 -0
- package/dist/admin/components/OrderTable.js +117 -0
- package/dist/admin/components/OrderTable.js.map +1 -0
- package/dist/admin/components/PaymentSettings.d.ts +13 -0
- package/dist/admin/components/PaymentSettings.d.ts.map +1 -0
- package/dist/admin/components/PaymentSettings.js +117 -0
- package/dist/admin/components/PaymentSettings.js.map +1 -0
- package/dist/admin/components/PeriodSelector.d.ts +9 -0
- package/dist/admin/components/PeriodSelector.d.ts.map +1 -0
- package/dist/admin/components/PeriodSelector.js +19 -0
- package/dist/admin/components/PeriodSelector.js.map +1 -0
- package/dist/admin/components/PermissionsMatrix.d.ts +8 -0
- package/dist/admin/components/PermissionsMatrix.d.ts.map +1 -0
- package/dist/admin/components/PermissionsMatrix.js +70 -0
- package/dist/admin/components/PermissionsMatrix.js.map +1 -0
- package/dist/admin/components/PrimaryMetricsRow.d.ts +11 -0
- package/dist/admin/components/PrimaryMetricsRow.d.ts.map +1 -0
- package/dist/admin/components/PrimaryMetricsRow.js +73 -0
- package/dist/admin/components/PrimaryMetricsRow.js.map +1 -0
- package/dist/admin/components/ProductForm.d.ts +18 -0
- package/dist/admin/components/ProductForm.d.ts.map +1 -0
- package/dist/admin/components/ProductForm.js +251 -0
- package/dist/admin/components/ProductForm.js.map +1 -0
- package/dist/admin/components/ProductTable.d.ts +14 -0
- package/dist/admin/components/ProductTable.d.ts.map +1 -0
- package/dist/admin/components/ProductTable.js +384 -0
- package/dist/admin/components/ProductTable.js.map +1 -0
- package/dist/admin/components/RecentOrders.d.ts +11 -0
- package/dist/admin/components/RecentOrders.d.ts.map +1 -0
- package/dist/admin/components/RecentOrders.js +63 -0
- package/dist/admin/components/RecentOrders.js.map +1 -0
- package/dist/admin/components/RefundDialog.d.ts +17 -0
- package/dist/admin/components/RefundDialog.d.ts.map +1 -0
- package/dist/admin/components/RefundDialog.js +90 -0
- package/dist/admin/components/RefundDialog.js.map +1 -0
- package/dist/admin/components/RevenueChart.d.ts +23 -0
- package/dist/admin/components/RevenueChart.d.ts.map +1 -0
- package/dist/admin/components/RevenueChart.js +75 -0
- package/dist/admin/components/RevenueChart.js.map +1 -0
- package/dist/admin/components/SEOPreview.d.ts +33 -0
- package/dist/admin/components/SEOPreview.d.ts.map +1 -0
- package/dist/admin/components/SEOPreview.js +30 -0
- package/dist/admin/components/SEOPreview.js.map +1 -0
- package/dist/admin/components/SecondaryMetricsRow.d.ts +14 -0
- package/dist/admin/components/SecondaryMetricsRow.d.ts.map +1 -0
- package/dist/admin/components/SecondaryMetricsRow.js +45 -0
- package/dist/admin/components/SecondaryMetricsRow.js.map +1 -0
- package/dist/admin/components/SetupGuide.d.ts +4 -0
- package/dist/admin/components/SetupGuide.d.ts.map +1 -0
- package/dist/admin/components/SetupGuide.js +244 -0
- package/dist/admin/components/SetupGuide.js.map +1 -0
- package/dist/admin/components/ShippingSettings.d.ts +3 -0
- package/dist/admin/components/ShippingSettings.d.ts.map +1 -0
- package/dist/admin/components/ShippingSettings.js +553 -0
- package/dist/admin/components/ShippingSettings.js.map +1 -0
- package/dist/admin/components/StatsCards.d.ts +18 -0
- package/dist/admin/components/StatsCards.d.ts.map +1 -0
- package/dist/admin/components/StatsCards.js +71 -0
- package/dist/admin/components/StatsCards.js.map +1 -0
- package/dist/admin/components/StoreSettings.d.ts +19 -0
- package/dist/admin/components/StoreSettings.d.ts.map +1 -0
- package/dist/admin/components/StoreSettings.js +149 -0
- package/dist/admin/components/StoreSettings.js.map +1 -0
- package/dist/admin/components/TagInput.d.ts +29 -0
- package/dist/admin/components/TagInput.d.ts.map +1 -0
- package/dist/admin/components/TagInput.js +69 -0
- package/dist/admin/components/TagInput.js.map +1 -0
- package/dist/admin/components/TaxSettings.d.ts +12 -0
- package/dist/admin/components/TaxSettings.d.ts.map +1 -0
- package/dist/admin/components/TaxSettings.js +272 -0
- package/dist/admin/components/TaxSettings.js.map +1 -0
- package/dist/admin/components/UsersTable.d.ts +3 -0
- package/dist/admin/components/UsersTable.d.ts.map +1 -0
- package/dist/admin/components/UsersTable.js +388 -0
- package/dist/admin/components/UsersTable.js.map +1 -0
- package/dist/admin/components/VariantManager.d.ts +44 -0
- package/dist/admin/components/VariantManager.d.ts.map +1 -0
- package/dist/admin/components/VariantManager.js +324 -0
- package/dist/admin/components/VariantManager.js.map +1 -0
- package/dist/admin/components/index.d.ts +69 -0
- package/dist/admin/components/index.d.ts.map +1 -0
- package/dist/admin/components/index.js +86 -0
- package/dist/admin/components/index.js.map +1 -0
- package/dist/admin/config.d.ts +51 -0
- package/dist/admin/config.d.ts.map +1 -0
- package/dist/admin/config.js +224 -0
- package/dist/admin/config.js.map +1 -0
- package/dist/admin/hooks/fetchAdminApi.d.ts +65 -0
- package/dist/admin/hooks/fetchAdminApi.d.ts.map +1 -0
- package/dist/admin/hooks/fetchAdminApi.js +96 -0
- package/dist/admin/hooks/fetchAdminApi.js.map +1 -0
- package/dist/admin/hooks/index.d.ts +24 -0
- package/dist/admin/hooks/index.d.ts.map +1 -0
- package/dist/admin/hooks/index.js +19 -0
- package/dist/admin/hooks/index.js.map +1 -0
- package/dist/admin/hooks/useAdminAuth.d.ts +25 -0
- package/dist/admin/hooks/useAdminAuth.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminAuth.js +183 -0
- package/dist/admin/hooks/useAdminAuth.js.map +1 -0
- package/dist/admin/hooks/useAdminCategories.d.ts +9 -0
- package/dist/admin/hooks/useAdminCategories.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminCategories.js +112 -0
- package/dist/admin/hooks/useAdminCategories.js.map +1 -0
- package/dist/admin/hooks/useAdminCustomers.d.ts +3 -0
- package/dist/admin/hooks/useAdminCustomers.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminCustomers.js +110 -0
- package/dist/admin/hooks/useAdminCustomers.js.map +1 -0
- package/dist/admin/hooks/useAdminMe.d.ts +31 -0
- package/dist/admin/hooks/useAdminMe.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminMe.js +78 -0
- package/dist/admin/hooks/useAdminMe.js.map +1 -0
- package/dist/admin/hooks/useAdminOrders.d.ts +3 -0
- package/dist/admin/hooks/useAdminOrders.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminOrders.js +118 -0
- package/dist/admin/hooks/useAdminOrders.js.map +1 -0
- package/dist/admin/hooks/useAdminPermissions.d.ts +3 -0
- package/dist/admin/hooks/useAdminPermissions.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminPermissions.js +51 -0
- package/dist/admin/hooks/useAdminPermissions.js.map +1 -0
- package/dist/admin/hooks/useAdminProductMetrics.d.ts +3 -0
- package/dist/admin/hooks/useAdminProductMetrics.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminProductMetrics.js +32 -0
- package/dist/admin/hooks/useAdminProductMetrics.js.map +1 -0
- package/dist/admin/hooks/useAdminProducts.d.ts +3 -0
- package/dist/admin/hooks/useAdminProducts.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminProducts.js +132 -0
- package/dist/admin/hooks/useAdminProducts.js.map +1 -0
- package/dist/admin/hooks/useAdminSession.d.ts +23 -0
- package/dist/admin/hooks/useAdminSession.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminSession.js +117 -0
- package/dist/admin/hooks/useAdminSession.js.map +1 -0
- package/dist/admin/hooks/useAdminStats.d.ts +47 -0
- package/dist/admin/hooks/useAdminStats.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminStats.js +128 -0
- package/dist/admin/hooks/useAdminStats.js.map +1 -0
- package/dist/admin/hooks/useAdminUsers.d.ts +3 -0
- package/dist/admin/hooks/useAdminUsers.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminUsers.js +177 -0
- package/dist/admin/hooks/useAdminUsers.js.map +1 -0
- package/dist/admin/hooks/useLinkedCustomerStatus.d.ts +3 -0
- package/dist/admin/hooks/useLinkedCustomerStatus.d.ts.map +1 -0
- package/dist/admin/hooks/useLinkedCustomerStatus.js +48 -0
- package/dist/admin/hooks/useLinkedCustomerStatus.js.map +1 -0
- package/dist/admin/hooks/useSetupGuide.d.ts +45 -0
- package/dist/admin/hooks/useSetupGuide.d.ts.map +1 -0
- package/dist/admin/hooks/useSetupGuide.js +60 -0
- package/dist/admin/hooks/useSetupGuide.js.map +1 -0
- package/dist/admin/index.d.ts +66 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +144 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/permissions.d.ts +79 -0
- package/dist/admin/permissions.d.ts.map +1 -0
- package/dist/admin/permissions.js +182 -0
- package/dist/admin/permissions.js.map +1 -0
- package/dist/admin/server/admin-invite.d.ts +122 -0
- package/dist/admin/server/admin-invite.d.ts.map +1 -0
- package/dist/admin/server/admin-invite.js +235 -0
- package/dist/admin/server/admin-invite.js.map +1 -0
- package/dist/admin/server/admin-password-reset.d.ts +87 -0
- package/dist/admin/server/admin-password-reset.d.ts.map +1 -0
- package/dist/admin/server/admin-password-reset.js +220 -0
- package/dist/admin/server/admin-password-reset.js.map +1 -0
- package/dist/admin/server/admin-self-service.d.ts +86 -0
- package/dist/admin/server/admin-self-service.d.ts.map +1 -0
- package/dist/admin/server/admin-self-service.js +188 -0
- package/dist/admin/server/admin-self-service.js.map +1 -0
- package/dist/admin/server/admin-service.d.ts +131 -0
- package/dist/admin/server/admin-service.d.ts.map +1 -0
- package/dist/admin/server/admin-service.js +278 -0
- package/dist/admin/server/admin-service.js.map +1 -0
- package/dist/admin/server/admin-session.d.ts +173 -0
- package/dist/admin/server/admin-session.d.ts.map +1 -0
- package/dist/admin/server/admin-session.js +272 -0
- package/dist/admin/server/admin-session.js.map +1 -0
- package/dist/admin/server/index.d.ts +17 -0
- package/dist/admin/server/index.d.ts.map +1 -0
- package/dist/admin/server/index.js +39 -0
- package/dist/admin/server/index.js.map +1 -0
- package/dist/admin/server/user-management.d.ts +221 -0
- package/dist/admin/server/user-management.d.ts.map +1 -0
- package/dist/admin/server/user-management.js +838 -0
- package/dist/admin/server/user-management.js.map +1 -0
- package/dist/admin/types.d.ts +1161 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +10 -0
- package/dist/admin/types.js.map +1 -0
- package/dist/auth/api/forgot-password.d.ts +41 -0
- package/dist/auth/api/forgot-password.d.ts.map +1 -0
- package/dist/auth/api/forgot-password.js +65 -0
- package/dist/auth/api/forgot-password.js.map +1 -0
- package/dist/auth/api/index.d.ts +37 -0
- package/dist/auth/api/index.d.ts.map +1 -0
- package/dist/auth/api/index.js +44 -0
- package/dist/auth/api/index.js.map +1 -0
- package/dist/auth/api/register.d.ts +41 -0
- package/dist/auth/api/register.d.ts.map +1 -0
- package/dist/auth/api/register.js +99 -0
- package/dist/auth/api/register.js.map +1 -0
- package/dist/auth/api/request-refund.d.ts +38 -0
- package/dist/auth/api/request-refund.d.ts.map +1 -0
- package/dist/auth/api/request-refund.js +142 -0
- package/dist/auth/api/request-refund.js.map +1 -0
- package/dist/auth/api/request-return.d.ts +39 -0
- package/dist/auth/api/request-return.d.ts.map +1 -0
- package/dist/auth/api/request-return.js +109 -0
- package/dist/auth/api/request-return.js.map +1 -0
- package/dist/auth/api/resend-verification.d.ts +41 -0
- package/dist/auth/api/resend-verification.d.ts.map +1 -0
- package/dist/auth/api/resend-verification.js +68 -0
- package/dist/auth/api/resend-verification.js.map +1 -0
- package/dist/auth/api/reset-password.d.ts +67 -0
- package/dist/auth/api/reset-password.d.ts.map +1 -0
- package/dist/auth/api/reset-password.js +106 -0
- package/dist/auth/api/reset-password.js.map +1 -0
- package/dist/auth/api/verify-email.d.ts +47 -0
- package/dist/auth/api/verify-email.d.ts.map +1 -0
- package/dist/auth/api/verify-email.js +90 -0
- package/dist/auth/api/verify-email.js.map +1 -0
- package/dist/auth/components/AuthGuard.d.ts +52 -0
- package/dist/auth/components/AuthGuard.d.ts.map +1 -0
- package/dist/auth/components/AuthGuard.js +109 -0
- package/dist/auth/components/AuthGuard.js.map +1 -0
- package/dist/auth/components/ForgotPasswordForm.d.ts +15 -0
- package/dist/auth/components/ForgotPasswordForm.d.ts.map +1 -0
- package/dist/auth/components/ForgotPasswordForm.js +43 -0
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -0
- package/dist/auth/components/Label.d.ts +19 -0
- package/dist/auth/components/Label.d.ts.map +1 -0
- package/dist/auth/components/Label.js +18 -0
- package/dist/auth/components/Label.js.map +1 -0
- package/dist/auth/components/ResetPasswordForm.d.ts +18 -0
- package/dist/auth/components/ResetPasswordForm.d.ts.map +1 -0
- package/dist/auth/components/ResetPasswordForm.js +87 -0
- package/dist/auth/components/ResetPasswordForm.js.map +1 -0
- package/dist/auth/components/SignInForm.d.ts +21 -0
- package/dist/auth/components/SignInForm.d.ts.map +1 -0
- package/dist/auth/components/SignInForm.js +61 -0
- package/dist/auth/components/SignInForm.js.map +1 -0
- package/dist/auth/components/SignUpForm.d.ts +18 -0
- package/dist/auth/components/SignUpForm.d.ts.map +1 -0
- package/dist/auth/components/SignUpForm.js +78 -0
- package/dist/auth/components/SignUpForm.js.map +1 -0
- package/dist/auth/components/UserMenu.d.ts +18 -0
- package/dist/auth/components/UserMenu.d.ts.map +1 -0
- package/dist/auth/components/UserMenu.js +73 -0
- package/dist/auth/components/UserMenu.js.map +1 -0
- package/dist/auth/components/VerifyEmailNotice.d.ts +20 -0
- package/dist/auth/components/VerifyEmailNotice.d.ts.map +1 -0
- package/dist/auth/components/VerifyEmailNotice.js +57 -0
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -0
- package/dist/auth/components/index.d.ts +15 -0
- package/dist/auth/components/index.d.ts.map +1 -0
- package/dist/auth/components/index.js +14 -0
- package/dist/auth/components/index.js.map +1 -0
- package/dist/auth/config.d.ts +52 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +243 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/hooks/index.d.ts +7 -0
- package/dist/auth/hooks/index.d.ts.map +1 -0
- package/dist/auth/hooks/index.js +7 -0
- package/dist/auth/hooks/index.js.map +1 -0
- package/dist/auth/hooks/useAuth.d.ts +30 -0
- package/dist/auth/hooks/useAuth.d.ts.map +1 -0
- package/dist/auth/hooks/useAuth.js +251 -0
- package/dist/auth/hooks/useAuth.js.map +1 -0
- package/dist/auth/index.d.ts +55 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +67 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/server/customer-service.d.ts +140 -0
- package/dist/auth/server/customer-service.d.ts.map +1 -0
- package/dist/auth/server/customer-service.js +266 -0
- package/dist/auth/server/customer-service.js.map +1 -0
- package/dist/auth/server/customer-session.d.ts +79 -0
- package/dist/auth/server/customer-session.d.ts.map +1 -0
- package/dist/auth/server/customer-session.js +103 -0
- package/dist/auth/server/customer-session.js.map +1 -0
- package/dist/auth/server/index.d.ts +14 -0
- package/dist/auth/server/index.d.ts.map +1 -0
- package/dist/auth/server/index.js +17 -0
- package/dist/auth/server/index.js.map +1 -0
- package/dist/auth/server/password-reset-service.d.ts +87 -0
- package/dist/auth/server/password-reset-service.d.ts.map +1 -0
- package/dist/auth/server/password-reset-service.js +203 -0
- package/dist/auth/server/password-reset-service.js.map +1 -0
- package/dist/auth/server/password.d.ts +58 -0
- package/dist/auth/server/password.d.ts.map +1 -0
- package/dist/auth/server/password.js +85 -0
- package/dist/auth/server/password.js.map +1 -0
- package/dist/auth/server/verification-service.d.ts +88 -0
- package/dist/auth/server/verification-service.d.ts.map +1 -0
- package/dist/auth/server/verification-service.js +231 -0
- package/dist/auth/server/verification-service.js.map +1 -0
- package/dist/auth/types.d.ts +311 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +7 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/cart/CartProvider.d.ts +65 -0
- package/dist/cart/CartProvider.d.ts.map +1 -0
- package/dist/cart/CartProvider.js +96 -0
- package/dist/cart/CartProvider.js.map +1 -0
- package/dist/cart/components/AddToCartButton.d.ts +77 -0
- package/dist/cart/components/AddToCartButton.d.ts.map +1 -0
- package/dist/cart/components/AddToCartButton.js +122 -0
- package/dist/cart/components/AddToCartButton.js.map +1 -0
- package/dist/cart/components/CartDrawer.d.ts +71 -0
- package/dist/cart/components/CartDrawer.d.ts.map +1 -0
- package/dist/cart/components/CartDrawer.js +117 -0
- package/dist/cart/components/CartDrawer.js.map +1 -0
- package/dist/cart/components/CartIcon.d.ts +36 -0
- package/dist/cart/components/CartIcon.d.ts.map +1 -0
- package/dist/cart/components/CartIcon.js +68 -0
- package/dist/cart/components/CartIcon.js.map +1 -0
- package/dist/cart/components/CartItem.d.ts +52 -0
- package/dist/cart/components/CartItem.d.ts.map +1 -0
- package/dist/cart/components/CartItem.js +55 -0
- package/dist/cart/components/CartItem.js.map +1 -0
- package/dist/cart/components/CartSummary.d.ts +43 -0
- package/dist/cart/components/CartSummary.d.ts.map +1 -0
- package/dist/cart/components/CartSummary.js +60 -0
- package/dist/cart/components/CartSummary.js.map +1 -0
- package/dist/cart/components/QuantitySelector.d.ts +39 -0
- package/dist/cart/components/QuantitySelector.d.ts.map +1 -0
- package/dist/cart/components/QuantitySelector.js +85 -0
- package/dist/cart/components/QuantitySelector.js.map +1 -0
- package/dist/cart/components/index.d.ts +18 -0
- package/dist/cart/components/index.d.ts.map +1 -0
- package/dist/cart/components/index.js +12 -0
- package/dist/cart/components/index.js.map +1 -0
- package/dist/cart/index.d.ts +109 -0
- package/dist/cart/index.d.ts.map +1 -0
- package/dist/cart/index.js +115 -0
- package/dist/cart/index.js.map +1 -0
- package/dist/cart/store.d.ts +150 -0
- package/dist/cart/store.d.ts.map +1 -0
- package/dist/cart/store.js +315 -0
- package/dist/cart/store.js.map +1 -0
- package/dist/checkout/api/checkout.js +112 -0
- package/dist/checkout/api/checkout.js.map +1 -0
- package/dist/checkout/api/countries.d.ts +17 -0
- package/dist/checkout/api/countries.d.ts.map +1 -0
- package/dist/checkout/api/countries.js +38 -0
- package/dist/checkout/api/countries.js.map +1 -0
- package/dist/checkout/api/index.js +11 -0
- package/dist/checkout/api/index.js.map +1 -0
- package/dist/checkout/api/payment-status.d.ts +45 -0
- package/dist/checkout/api/payment-status.d.ts.map +1 -0
- package/dist/checkout/api/payment-status.js +104 -0
- package/dist/checkout/api/payment-status.js.map +1 -0
- package/dist/checkout/api/shipping.d.ts +34 -0
- package/dist/checkout/api/shipping.d.ts.map +1 -0
- package/dist/checkout/api/shipping.js +247 -0
- package/dist/checkout/api/shipping.js.map +1 -0
- package/dist/checkout/api/webhook.js +55 -0
- package/dist/checkout/api/webhook.js.map +1 -0
- package/dist/checkout/components/CheckoutButton.d.ts +55 -0
- package/dist/checkout/components/CheckoutButton.d.ts.map +1 -0
- package/dist/checkout/components/CheckoutButton.js +132 -0
- package/dist/checkout/components/CheckoutButton.js.map +1 -0
- package/dist/checkout/components/CheckoutFlow.d.ts +53 -0
- package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -0
- package/dist/checkout/components/CheckoutFlow.js +286 -0
- package/dist/checkout/components/CheckoutFlow.js.map +1 -0
- package/dist/checkout/components/CheckoutSuccess.d.ts +29 -0
- package/dist/checkout/components/CheckoutSuccess.d.ts.map +1 -0
- package/dist/checkout/components/CheckoutSuccess.js +49 -0
- package/dist/checkout/components/CheckoutSuccess.js.map +1 -0
- package/dist/checkout/components/OrderSummary.d.ts +37 -0
- package/dist/checkout/components/OrderSummary.d.ts.map +1 -0
- package/dist/checkout/components/OrderSummary.js +71 -0
- package/dist/checkout/components/OrderSummary.js.map +1 -0
- package/dist/checkout/components/ShippingForm.d.ts +30 -0
- package/dist/checkout/components/ShippingForm.d.ts.map +1 -0
- package/dist/checkout/components/ShippingForm.js +185 -0
- package/dist/checkout/components/ShippingForm.js.map +1 -0
- package/dist/checkout/components/ShippingOptions.d.ts +51 -0
- package/dist/checkout/components/ShippingOptions.d.ts.map +1 -0
- package/dist/checkout/components/ShippingOptions.js +93 -0
- package/dist/checkout/components/ShippingOptions.js.map +1 -0
- package/dist/checkout/components/index.d.ts +12 -0
- package/dist/checkout/components/index.d.ts.map +1 -0
- package/dist/checkout/components/index.js +12 -0
- package/dist/checkout/components/index.js.map +1 -0
- package/dist/checkout/constants.d.ts +244 -0
- package/dist/checkout/constants.d.ts.map +1 -0
- package/dist/checkout/constants.js +119 -0
- package/dist/checkout/constants.js.map +1 -0
- package/dist/checkout/hooks/index.d.ts +9 -0
- package/dist/checkout/hooks/index.d.ts.map +1 -0
- package/dist/checkout/hooks/index.js +8 -0
- package/dist/checkout/hooks/index.js.map +1 -0
- package/dist/checkout/hooks/useCheckout.d.ts +38 -0
- package/dist/checkout/hooks/useCheckout.d.ts.map +1 -0
- package/dist/checkout/hooks/useCheckout.js +134 -0
- package/dist/checkout/hooks/useCheckout.js.map +1 -0
- package/dist/checkout/hooks/usePaymentStatus.d.ts +42 -0
- package/dist/checkout/hooks/usePaymentStatus.d.ts.map +1 -0
- package/dist/checkout/hooks/usePaymentStatus.js +71 -0
- package/dist/checkout/hooks/usePaymentStatus.js.map +1 -0
- package/dist/checkout/index.js +135 -0
- package/dist/checkout/index.js.map +1 -0
- package/dist/checkout/server/coupons.d.ts +91 -0
- package/dist/checkout/server/coupons.d.ts.map +1 -0
- package/dist/checkout/server/coupons.js +192 -0
- package/dist/checkout/server/coupons.js.map +1 -0
- package/dist/checkout/server/index.js +10 -0
- package/dist/checkout/server/index.js.map +1 -0
- package/dist/checkout/stripe/client.d.ts +74 -0
- package/dist/checkout/stripe/client.d.ts.map +1 -0
- package/dist/checkout/stripe/client.js +175 -0
- package/dist/checkout/stripe/client.js.map +1 -0
- package/dist/checkout/stripe/index.d.ts +7 -0
- package/dist/checkout/stripe/index.d.ts.map +1 -0
- package/dist/checkout/stripe/index.js +7 -0
- package/dist/checkout/stripe/index.js.map +1 -0
- package/dist/checkout/types.d.ts +489 -0
- package/dist/checkout/types.d.ts.map +1 -0
- package/dist/checkout/types.js +8 -0
- package/dist/checkout/types.js.map +1 -0
- package/dist/core/StoreSettingsProvider.d.ts +107 -0
- package/dist/core/StoreSettingsProvider.d.ts.map +1 -0
- package/dist/core/StoreSettingsProvider.js +200 -0
- package/dist/core/StoreSettingsProvider.js.map +1 -0
- package/dist/core/api/index.d.ts +7 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/index.js +7 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/settings.d.ts +42 -0
- package/dist/core/api/settings.d.ts.map +1 -0
- package/dist/core/api/settings.js +74 -0
- package/dist/core/api/settings.js.map +1 -0
- package/dist/core/config.d.ts +270 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +80 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/cookie-consent/CookieBanner.d.ts +2 -0
- package/dist/core/cookie-consent/CookieBanner.d.ts.map +1 -0
- package/dist/core/cookie-consent/CookieBanner.js +243 -0
- package/dist/core/cookie-consent/CookieBanner.js.map +1 -0
- package/dist/core/cookie-consent/CookieConsentProvider.d.ts +53 -0
- package/dist/core/cookie-consent/CookieConsentProvider.d.ts.map +1 -0
- package/dist/core/cookie-consent/CookieConsentProvider.js +162 -0
- package/dist/core/cookie-consent/CookieConsentProvider.js.map +1 -0
- package/dist/core/cookie-consent/CookiePreferencesLink.d.ts +15 -0
- package/dist/core/cookie-consent/CookiePreferencesLink.d.ts.map +1 -0
- package/dist/core/cookie-consent/CookiePreferencesLink.js +12 -0
- package/dist/core/cookie-consent/CookiePreferencesLink.js.map +1 -0
- package/dist/core/cookie-consent/index.d.ts +17 -0
- package/dist/core/cookie-consent/index.d.ts.map +1 -0
- package/dist/core/cookie-consent/index.js +16 -0
- package/dist/core/cookie-consent/index.js.map +1 -0
- package/dist/core/cookie-consent/types.d.ts +31 -0
- package/dist/core/cookie-consent/types.d.ts.map +1 -0
- package/dist/core/cookie-consent/types.js +10 -0
- package/dist/core/cookie-consent/types.js.map +1 -0
- package/dist/core/cookie-consent/useCookieConsent.d.ts +14 -0
- package/dist/core/cookie-consent/useCookieConsent.d.ts.map +1 -0
- package/dist/core/cookie-consent/useCookieConsent.js +25 -0
- package/dist/core/cookie-consent/useCookieConsent.js.map +1 -0
- package/dist/core/db/client.d.ts +39 -0
- package/dist/core/db/client.d.ts.map +1 -0
- package/dist/core/db/client.js +86 -0
- package/dist/core/db/client.js.map +1 -0
- package/dist/core/db/index.d.ts +11 -0
- package/dist/core/db/index.d.ts.map +1 -0
- package/dist/core/db/index.js +36 -0
- package/dist/core/db/index.js.map +1 -0
- package/dist/core/db/queries.d.ts +1427 -0
- package/dist/core/db/queries.d.ts.map +1 -0
- package/dist/core/db/queries.js +1932 -0
- package/dist/core/db/queries.js.map +1 -0
- package/dist/core/db/schema.d.ts +3462 -0
- package/dist/core/db/schema.d.ts.map +1 -0
- package/dist/core/db/schema.js +495 -0
- package/dist/core/db/schema.js.map +1 -0
- package/dist/core/index.d.ts +22 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +43 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/server/index.d.ts +18 -0
- package/dist/core/server/index.d.ts.map +1 -0
- package/dist/core/server/index.js +47 -0
- package/dist/core/server/index.js.map +1 -0
- package/dist/core/types.d.ts +246 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +8 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils.d.ts +147 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +309 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/emails/config.d.ts +69 -0
- package/dist/emails/config.d.ts.map +1 -0
- package/dist/emails/config.js +147 -0
- package/dist/emails/config.js.map +1 -0
- package/dist/emails/index.d.ts +85 -0
- package/dist/emails/index.d.ts.map +1 -0
- package/dist/emails/index.js +110 -0
- package/dist/emails/index.js.map +1 -0
- package/dist/emails/send/admin-auth.d.ts +94 -0
- package/dist/emails/send/admin-auth.d.ts.map +1 -0
- package/dist/emails/send/admin-auth.js +118 -0
- package/dist/emails/send/admin-auth.js.map +1 -0
- package/dist/emails/send/auth.d.ts +91 -0
- package/dist/emails/send/auth.d.ts.map +1 -0
- package/dist/emails/send/auth.js +130 -0
- package/dist/emails/send/auth.js.map +1 -0
- package/dist/emails/send/index.d.ts +12 -0
- package/dist/emails/send/index.d.ts.map +1 -0
- package/dist/emails/send/index.js +18 -0
- package/dist/emails/send/index.js.map +1 -0
- package/dist/emails/send/orders.d.ts +186 -0
- package/dist/emails/send/orders.d.ts.map +1 -0
- package/dist/emails/send/orders.js +258 -0
- package/dist/emails/send/orders.js.map +1 -0
- package/dist/emails/sender.d.ts +72 -0
- package/dist/emails/sender.d.ts.map +1 -0
- package/dist/emails/sender.js +116 -0
- package/dist/emails/sender.js.map +1 -0
- package/dist/emails/templates/admin-invite.d.ts +40 -0
- package/dist/emails/templates/admin-invite.d.ts.map +1 -0
- package/dist/emails/templates/admin-invite.js +62 -0
- package/dist/emails/templates/admin-invite.js.map +1 -0
- package/dist/emails/templates/base.d.ts +109 -0
- package/dist/emails/templates/base.d.ts.map +1 -0
- package/dist/emails/templates/base.js +334 -0
- package/dist/emails/templates/base.js.map +1 -0
- package/dist/emails/templates/email-verification.d.ts +28 -0
- package/dist/emails/templates/email-verification.d.ts.map +1 -0
- package/dist/emails/templates/email-verification.js +52 -0
- package/dist/emails/templates/email-verification.js.map +1 -0
- package/dist/emails/templates/index.d.ts +16 -0
- package/dist/emails/templates/index.d.ts.map +1 -0
- package/dist/emails/templates/index.js +28 -0
- package/dist/emails/templates/index.js.map +1 -0
- package/dist/emails/templates/order-cancelled.d.ts +30 -0
- package/dist/emails/templates/order-cancelled.d.ts.map +1 -0
- package/dist/emails/templates/order-cancelled.js +83 -0
- package/dist/emails/templates/order-cancelled.js.map +1 -0
- package/dist/emails/templates/order-confirmation.d.ts +36 -0
- package/dist/emails/templates/order-confirmation.d.ts.map +1 -0
- package/dist/emails/templates/order-confirmation.js +174 -0
- package/dist/emails/templates/order-confirmation.js.map +1 -0
- package/dist/emails/templates/order-delivered.d.ts +31 -0
- package/dist/emails/templates/order-delivered.d.ts.map +1 -0
- package/dist/emails/templates/order-delivered.js +100 -0
- package/dist/emails/templates/order-delivered.js.map +1 -0
- package/dist/emails/templates/order-shipped.d.ts +32 -0
- package/dist/emails/templates/order-shipped.d.ts.map +1 -0
- package/dist/emails/templates/order-shipped.js +83 -0
- package/dist/emails/templates/order-shipped.js.map +1 -0
- package/dist/emails/templates/password-reset.d.ts +27 -0
- package/dist/emails/templates/password-reset.d.ts.map +1 -0
- package/dist/emails/templates/password-reset.js +51 -0
- package/dist/emails/templates/password-reset.js.map +1 -0
- package/dist/emails/templates/refund-processed.d.ts +32 -0
- package/dist/emails/templates/refund-processed.d.ts.map +1 -0
- package/dist/emails/templates/refund-processed.js +92 -0
- package/dist/emails/templates/refund-processed.js.map +1 -0
- package/dist/emails/templates/welcome.d.ts +27 -0
- package/dist/emails/templates/welcome.d.ts.map +1 -0
- package/dist/emails/templates/welcome.js +52 -0
- package/dist/emails/templates/welcome.js.map +1 -0
- package/dist/emails/types.d.ts +229 -0
- package/dist/emails/types.d.ts.map +1 -0
- package/dist/emails/types.js +7 -0
- package/dist/emails/types.js.map +1 -0
- package/dist/emails/utils.d.ts +94 -0
- package/dist/emails/utils.d.ts.map +1 -0
- package/dist/emails/utils.js +218 -0
- package/dist/emails/utils.js.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/media/api/delete.d.ts +43 -0
- package/dist/media/api/delete.d.ts.map +1 -0
- package/dist/media/api/delete.js +124 -0
- package/dist/media/api/delete.js.map +1 -0
- package/dist/media/api/index.d.ts +17 -0
- package/dist/media/api/index.d.ts.map +1 -0
- package/dist/media/api/index.js +17 -0
- package/dist/media/api/index.js.map +1 -0
- package/dist/media/api/presign.d.ts +38 -0
- package/dist/media/api/presign.d.ts.map +1 -0
- package/dist/media/api/presign.js +130 -0
- package/dist/media/api/presign.js.map +1 -0
- package/dist/media/components/DropZone.d.ts +18 -0
- package/dist/media/components/DropZone.d.ts.map +1 -0
- package/dist/media/components/DropZone.js +107 -0
- package/dist/media/components/DropZone.js.map +1 -0
- package/dist/media/components/ImageGalleryUpload.d.ts +21 -0
- package/dist/media/components/ImageGalleryUpload.d.ts.map +1 -0
- package/dist/media/components/ImageGalleryUpload.js +193 -0
- package/dist/media/components/ImageGalleryUpload.js.map +1 -0
- package/dist/media/components/ImageUpload.d.ts +17 -0
- package/dist/media/components/ImageUpload.d.ts.map +1 -0
- package/dist/media/components/ImageUpload.js +89 -0
- package/dist/media/components/ImageUpload.js.map +1 -0
- package/dist/media/components/index.d.ts +10 -0
- package/dist/media/components/index.d.ts.map +1 -0
- package/dist/media/components/index.js +9 -0
- package/dist/media/components/index.js.map +1 -0
- package/dist/media/config.d.ts +83 -0
- package/dist/media/config.d.ts.map +1 -0
- package/dist/media/config.js +189 -0
- package/dist/media/config.js.map +1 -0
- package/dist/media/hooks/index.d.ts +8 -0
- package/dist/media/hooks/index.d.ts.map +1 -0
- package/dist/media/hooks/index.js +7 -0
- package/dist/media/hooks/index.js.map +1 -0
- package/dist/media/hooks/useUpload.d.ts +32 -0
- package/dist/media/hooks/useUpload.d.ts.map +1 -0
- package/dist/media/hooks/useUpload.js +260 -0
- package/dist/media/hooks/useUpload.js.map +1 -0
- package/dist/media/index.d.ts +57 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +68 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/server/delete.d.ts +59 -0
- package/dist/media/server/delete.d.ts.map +1 -0
- package/dist/media/server/delete.js +176 -0
- package/dist/media/server/delete.js.map +1 -0
- package/dist/media/server/index.d.ts +10 -0
- package/dist/media/server/index.d.ts.map +1 -0
- package/dist/media/server/index.js +13 -0
- package/dist/media/server/index.js.map +1 -0
- package/dist/media/server/presign.d.ts +57 -0
- package/dist/media/server/presign.d.ts.map +1 -0
- package/dist/media/server/presign.js +112 -0
- package/dist/media/server/presign.js.map +1 -0
- package/dist/media/server/r2-client.d.ts +30 -0
- package/dist/media/server/r2-client.d.ts.map +1 -0
- package/dist/media/server/r2-client.js +76 -0
- package/dist/media/server/r2-client.js.map +1 -0
- package/dist/media/types.d.ts +316 -0
- package/dist/media/types.d.ts.map +1 -0
- package/dist/media/types.js +95 -0
- package/dist/media/types.js.map +1 -0
- package/dist/products/api/categories.d.ts +29 -0
- package/dist/products/api/categories.d.ts.map +1 -0
- package/dist/products/api/categories.js +46 -0
- package/dist/products/api/categories.js.map +1 -0
- package/dist/products/api/index.d.ts +24 -0
- package/dist/products/api/index.d.ts.map +1 -0
- package/dist/products/api/index.js +24 -0
- package/dist/products/api/index.js.map +1 -0
- package/dist/products/api/product.d.ts +36 -0
- package/dist/products/api/product.d.ts.map +1 -0
- package/dist/products/api/product.js +67 -0
- package/dist/products/api/product.js.map +1 -0
- package/dist/products/api/products.d.ts +41 -0
- package/dist/products/api/products.d.ts.map +1 -0
- package/dist/products/api/products.js +99 -0
- package/dist/products/api/products.js.map +1 -0
- package/dist/products/components/ProductCard.d.ts +54 -0
- package/dist/products/components/ProductCard.d.ts.map +1 -0
- package/dist/products/components/ProductCard.js +72 -0
- package/dist/products/components/ProductCard.js.map +1 -0
- package/dist/products/components/ProductDetails.d.ts +63 -0
- package/dist/products/components/ProductDetails.d.ts.map +1 -0
- package/dist/products/components/ProductDetails.js +137 -0
- package/dist/products/components/ProductDetails.js.map +1 -0
- package/dist/products/components/ProductGallery.d.ts +30 -0
- package/dist/products/components/ProductGallery.d.ts.map +1 -0
- package/dist/products/components/ProductGallery.js +91 -0
- package/dist/products/components/ProductGallery.js.map +1 -0
- package/dist/products/components/ProductGrid.d.ts +50 -0
- package/dist/products/components/ProductGrid.d.ts.map +1 -0
- package/dist/products/components/ProductGrid.js +81 -0
- package/dist/products/components/ProductGrid.js.map +1 -0
- package/dist/products/components/ProductSearch.d.ts +43 -0
- package/dist/products/components/ProductSearch.d.ts.map +1 -0
- package/dist/products/components/ProductSearch.js +97 -0
- package/dist/products/components/ProductSearch.js.map +1 -0
- package/dist/products/components/ProductSort.d.ts +43 -0
- package/dist/products/components/ProductSort.d.ts.map +1 -0
- package/dist/products/components/ProductSort.js +59 -0
- package/dist/products/components/ProductSort.js.map +1 -0
- package/dist/products/components/VariantSelector.d.ts +43 -0
- package/dist/products/components/VariantSelector.d.ts.map +1 -0
- package/dist/products/components/VariantSelector.js +147 -0
- package/dist/products/components/VariantSelector.js.map +1 -0
- package/dist/products/components/index.d.ts +20 -0
- package/dist/products/components/index.d.ts.map +1 -0
- package/dist/products/components/index.js +15 -0
- package/dist/products/components/index.js.map +1 -0
- package/dist/products/hooks/index.d.ts +10 -0
- package/dist/products/hooks/index.d.ts.map +1 -0
- package/dist/products/hooks/index.js +8 -0
- package/dist/products/hooks/index.js.map +1 -0
- package/dist/products/hooks/useProduct.d.ts +44 -0
- package/dist/products/hooks/useProduct.d.ts.map +1 -0
- package/dist/products/hooks/useProduct.js +87 -0
- package/dist/products/hooks/useProduct.js.map +1 -0
- package/dist/products/hooks/useProducts.d.ts +67 -0
- package/dist/products/hooks/useProducts.d.ts.map +1 -0
- package/dist/products/hooks/useProducts.js +131 -0
- package/dist/products/hooks/useProducts.js.map +1 -0
- package/dist/products/index.d.ts +69 -0
- package/dist/products/index.d.ts.map +1 -0
- package/dist/products/index.js +79 -0
- package/dist/products/index.js.map +1 -0
- package/dist/shipping/index.d.ts +8 -0
- package/dist/shipping/index.d.ts.map +1 -0
- package/dist/shipping/index.js +8 -0
- package/dist/shipping/index.js.map +1 -0
- package/dist/shipping/shippo.d.ts +77 -0
- package/dist/shipping/shippo.d.ts.map +1 -0
- package/dist/shipping/shippo.js +280 -0
- package/dist/shipping/shippo.js.map +1 -0
- package/dist/theme/colors.d.ts +134 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/theme/colors.js +214 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/theme/defaults.d.ts +133 -0
- package/dist/theme/defaults.d.ts.map +1 -0
- package/dist/theme/defaults.js +210 -0
- package/dist/theme/defaults.js.map +1 -0
- package/dist/theme/fonts.d.ts +28 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/fonts.js +55 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/theme/generator.d.ts +43 -0
- package/dist/theme/generator.d.ts.map +1 -0
- package/dist/theme/generator.js +272 -0
- package/dist/theme/generator.js.map +1 -0
- package/dist/theme/index.d.ts +23 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +30 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +2 -2
- /package/dist/admin/{admin-theme.css → styles/admin-theme.css} +0 -0
|
@@ -0,0 +1,746 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/admin/api/shipping
|
|
3
|
+
*
|
|
4
|
+
* API route handlers for admin shipping carrier, zone, and rate management.
|
|
5
|
+
* Implements a carrier-first hierarchy: Carrier → Zone → Rate
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // app/api/admin/shipping/carriers/route.ts
|
|
10
|
+
* export { getCarriers as GET, createCarrier as POST } from '@rovela/sdk/admin/api/shipping'
|
|
11
|
+
*
|
|
12
|
+
* // app/api/admin/shipping/carriers/[id]/route.ts
|
|
13
|
+
* export { getCarrier as GET, updateCarrier as PUT, deleteCarrier as DELETE } from '@rovela/sdk/admin/api/shipping'
|
|
14
|
+
*
|
|
15
|
+
* // app/api/admin/shipping/zones/route.ts
|
|
16
|
+
* export { getZones as GET, createZone as POST } from '@rovela/sdk/admin/api/shipping'
|
|
17
|
+
*
|
|
18
|
+
* // app/api/admin/shipping/zones/[id]/route.ts
|
|
19
|
+
* export { getZone as GET, updateZone as PUT, deleteZone as DELETE } from '@rovela/sdk/admin/api/shipping'
|
|
20
|
+
*
|
|
21
|
+
* // app/api/admin/shipping/rates/route.ts
|
|
22
|
+
* export { createRate as POST } from '@rovela/sdk/admin/api/shipping'
|
|
23
|
+
*
|
|
24
|
+
* // app/api/admin/shipping/rates/[id]/route.ts
|
|
25
|
+
* export { updateRate as PUT, deleteRate as DELETE } from '@rovela/sdk/admin/api/shipping'
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import { NextResponse } from 'next/server';
|
|
29
|
+
import { requireAdmin } from '../server/admin-session';
|
|
30
|
+
import {
|
|
31
|
+
// Carrier queries
|
|
32
|
+
findCarriersWithZonesAndRates, findShippingCarrierById, createShippingCarrier, updateShippingCarrier, deleteShippingCarrier,
|
|
33
|
+
// Zone queries
|
|
34
|
+
findShippingZones, findShippingZoneById, createShippingZone, updateShippingZone, deleteShippingZone,
|
|
35
|
+
// Rate queries
|
|
36
|
+
createShippingRate, updateShippingRate, deleteShippingRate,
|
|
37
|
+
// Settings queries (for Shippo API key)
|
|
38
|
+
findSettings, upsertSettings, } from '../../core/db/queries';
|
|
39
|
+
// =============================================================================
|
|
40
|
+
// Shipping Carriers - List & Create
|
|
41
|
+
// =============================================================================
|
|
42
|
+
/**
|
|
43
|
+
* GET /api/admin/shipping/carriers
|
|
44
|
+
*
|
|
45
|
+
* List all shipping carriers with their zones and rates.
|
|
46
|
+
* Returns carriers sorted by sortOrder, each with nested zones/rates.
|
|
47
|
+
*/
|
|
48
|
+
export async function getCarriers() {
|
|
49
|
+
// Shipping config is part of store settings — read permission.
|
|
50
|
+
const guard = await requireAdmin({ permission: 'settings.read' });
|
|
51
|
+
if (!guard.ok) {
|
|
52
|
+
return guard.response;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const carriers = await findCarriersWithZonesAndRates();
|
|
56
|
+
return NextResponse.json({ data: carriers });
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.error('[Admin Shipping API] getCarriers error:', error);
|
|
60
|
+
return NextResponse.json({ error: 'Failed to fetch shipping carriers', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* POST /api/admin/shipping/carriers
|
|
65
|
+
*
|
|
66
|
+
* Create a new shipping carrier.
|
|
67
|
+
* Store owners define their own carriers (e.g., "Standard Delivery", "Local Pickup").
|
|
68
|
+
*
|
|
69
|
+
* Request Body:
|
|
70
|
+
* ```json
|
|
71
|
+
* {
|
|
72
|
+
* "name": "Standard Delivery",
|
|
73
|
+
* "code": "standard",
|
|
74
|
+
* "description": "Regular shipping via postal service",
|
|
75
|
+
* "isActive": true,
|
|
76
|
+
* "sortOrder": 0
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export async function createCarrier(request) {
|
|
81
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
82
|
+
if (!guard.ok) {
|
|
83
|
+
return guard.response;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
const body = await request.json();
|
|
87
|
+
// Validate required fields
|
|
88
|
+
if (!body.name || typeof body.name !== 'string' || body.name.trim().length === 0) {
|
|
89
|
+
return NextResponse.json({ error: 'Carrier name is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
90
|
+
}
|
|
91
|
+
if (!body.code || typeof body.code !== 'string' || body.code.trim().length === 0) {
|
|
92
|
+
return NextResponse.json({ error: 'Carrier code is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
93
|
+
}
|
|
94
|
+
// Sanitize code: lowercase, alphanumeric + hyphens only
|
|
95
|
+
const code = body.code
|
|
96
|
+
.toLowerCase()
|
|
97
|
+
.trim()
|
|
98
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
99
|
+
.replace(/-+/g, '-')
|
|
100
|
+
.slice(0, 50);
|
|
101
|
+
if (code.length === 0) {
|
|
102
|
+
return NextResponse.json({ error: 'Carrier code must contain alphanumeric characters', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
103
|
+
}
|
|
104
|
+
const carrier = await createShippingCarrier({
|
|
105
|
+
name: body.name.trim().slice(0, 255),
|
|
106
|
+
code,
|
|
107
|
+
description: body.description ? body.description.trim().slice(0, 500) : undefined,
|
|
108
|
+
isActive: body.isActive !== false,
|
|
109
|
+
sortOrder: typeof body.sortOrder === 'number' ? body.sortOrder : 0,
|
|
110
|
+
});
|
|
111
|
+
return NextResponse.json({ success: true, data: carrier }, { status: 201 });
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
console.error('[Admin Shipping API] createCarrier error:', error);
|
|
115
|
+
// Handle unique constraint violation
|
|
116
|
+
if (error instanceof Error && error.message.includes('unique')) {
|
|
117
|
+
return NextResponse.json({ error: 'A carrier with this code already exists', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
118
|
+
}
|
|
119
|
+
return NextResponse.json({ error: 'Failed to create shipping carrier', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// =============================================================================
|
|
123
|
+
// Shipping Carriers - Single Operations
|
|
124
|
+
// =============================================================================
|
|
125
|
+
/**
|
|
126
|
+
* GET /api/admin/shipping/carriers/[id]
|
|
127
|
+
*
|
|
128
|
+
* Get a single shipping carrier by ID with its zones and rates.
|
|
129
|
+
*/
|
|
130
|
+
export async function getCarrier(_request, { params }) {
|
|
131
|
+
const guard = await requireAdmin({ permission: 'settings.read' });
|
|
132
|
+
if (!guard.ok) {
|
|
133
|
+
return guard.response;
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
const { id } = await params;
|
|
137
|
+
const carrier = await findShippingCarrierById(id);
|
|
138
|
+
if (!carrier) {
|
|
139
|
+
return NextResponse.json({ error: 'Shipping carrier not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
140
|
+
}
|
|
141
|
+
return NextResponse.json({ data: carrier });
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error('[Admin Shipping API] getCarrier error:', error);
|
|
145
|
+
return NextResponse.json({ error: 'Failed to fetch shipping carrier', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* PUT /api/admin/shipping/carriers/[id]
|
|
150
|
+
*
|
|
151
|
+
* Update a shipping carrier by ID.
|
|
152
|
+
*
|
|
153
|
+
* Request Body:
|
|
154
|
+
* ```json
|
|
155
|
+
* {
|
|
156
|
+
* "name": "Express Delivery",
|
|
157
|
+
* "code": "express",
|
|
158
|
+
* "description": "Fast shipping option",
|
|
159
|
+
* "isActive": true,
|
|
160
|
+
* "sortOrder": 1
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export async function updateCarrier(request, { params }) {
|
|
165
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
166
|
+
if (!guard.ok) {
|
|
167
|
+
return guard.response;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const { id } = await params;
|
|
171
|
+
const body = await request.json();
|
|
172
|
+
// Check carrier exists
|
|
173
|
+
const existing = await findShippingCarrierById(id);
|
|
174
|
+
if (!existing) {
|
|
175
|
+
return NextResponse.json({ error: 'Shipping carrier not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
176
|
+
}
|
|
177
|
+
// Build update data
|
|
178
|
+
const updateData = {};
|
|
179
|
+
if (body.name !== undefined) {
|
|
180
|
+
if (typeof body.name !== 'string' || body.name.trim().length === 0) {
|
|
181
|
+
return NextResponse.json({ error: 'Carrier name cannot be empty', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
182
|
+
}
|
|
183
|
+
updateData.name = body.name.trim().slice(0, 255);
|
|
184
|
+
}
|
|
185
|
+
if (body.code !== undefined) {
|
|
186
|
+
const code = body.code
|
|
187
|
+
.toLowerCase()
|
|
188
|
+
.trim()
|
|
189
|
+
.replace(/[^a-z0-9-]/g, '-')
|
|
190
|
+
.replace(/-+/g, '-')
|
|
191
|
+
.slice(0, 50);
|
|
192
|
+
if (code.length === 0) {
|
|
193
|
+
return NextResponse.json({ error: 'Carrier code must contain alphanumeric characters', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
194
|
+
}
|
|
195
|
+
updateData.code = code;
|
|
196
|
+
}
|
|
197
|
+
if (body.description !== undefined) {
|
|
198
|
+
updateData.description = body.description ? body.description.trim().slice(0, 500) : null;
|
|
199
|
+
}
|
|
200
|
+
if (body.isActive !== undefined) {
|
|
201
|
+
updateData.isActive = Boolean(body.isActive);
|
|
202
|
+
}
|
|
203
|
+
if (body.sortOrder !== undefined) {
|
|
204
|
+
updateData.sortOrder = typeof body.sortOrder === 'number' ? body.sortOrder : 0;
|
|
205
|
+
}
|
|
206
|
+
const carrier = await updateShippingCarrier(id, updateData);
|
|
207
|
+
return NextResponse.json({ success: true, data: carrier });
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
console.error('[Admin Shipping API] updateCarrier error:', error);
|
|
211
|
+
// Handle unique constraint violation
|
|
212
|
+
if (error instanceof Error && error.message.includes('unique')) {
|
|
213
|
+
return NextResponse.json({ error: 'A carrier with this code already exists', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
214
|
+
}
|
|
215
|
+
return NextResponse.json({ error: 'Failed to update shipping carrier', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* DELETE /api/admin/shipping/carriers/[id]
|
|
220
|
+
*
|
|
221
|
+
* Delete a shipping carrier by ID.
|
|
222
|
+
* This cascades to delete all zones and rates under this carrier.
|
|
223
|
+
*/
|
|
224
|
+
export async function deleteCarrier(_request, { params }) {
|
|
225
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
226
|
+
if (!guard.ok) {
|
|
227
|
+
return guard.response;
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
const { id } = await params;
|
|
231
|
+
const deleted = await deleteShippingCarrier(id);
|
|
232
|
+
if (!deleted) {
|
|
233
|
+
return NextResponse.json({ error: 'Shipping carrier not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
234
|
+
}
|
|
235
|
+
return NextResponse.json({ success: true });
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
console.error('[Admin Shipping API] deleteCarrier error:', error);
|
|
239
|
+
return NextResponse.json({ error: 'Failed to delete shipping carrier', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
// =============================================================================
|
|
243
|
+
// Shipping Zones - List & Create
|
|
244
|
+
// =============================================================================
|
|
245
|
+
/**
|
|
246
|
+
* GET /api/admin/shipping/zones
|
|
247
|
+
*
|
|
248
|
+
* List all shipping zones with their rates.
|
|
249
|
+
*/
|
|
250
|
+
export async function getZones() {
|
|
251
|
+
const guard = await requireAdmin({ permission: 'settings.read' });
|
|
252
|
+
if (!guard.ok) {
|
|
253
|
+
return guard.response;
|
|
254
|
+
}
|
|
255
|
+
try {
|
|
256
|
+
const zones = await findShippingZones();
|
|
257
|
+
return NextResponse.json({ data: zones });
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
console.error('[Admin Shipping API] getZones error:', error);
|
|
261
|
+
return NextResponse.json({ error: 'Failed to fetch shipping zones', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* POST /api/admin/shipping/zones
|
|
266
|
+
*
|
|
267
|
+
* Create a new shipping zone under a carrier.
|
|
268
|
+
* Zones must belong to a carrier (carrier-first architecture).
|
|
269
|
+
*
|
|
270
|
+
* Request Body:
|
|
271
|
+
* ```json
|
|
272
|
+
* {
|
|
273
|
+
* "carrierId": "uuid",
|
|
274
|
+
* "name": "Domestic",
|
|
275
|
+
* "countries": ["US", "CA"],
|
|
276
|
+
* "isActive": true,
|
|
277
|
+
* "sortOrder": 0
|
|
278
|
+
* }
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
export async function createZone(request) {
|
|
282
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
283
|
+
if (!guard.ok) {
|
|
284
|
+
return guard.response;
|
|
285
|
+
}
|
|
286
|
+
try {
|
|
287
|
+
const body = await request.json();
|
|
288
|
+
// Validate required fields
|
|
289
|
+
if (!body.carrierId || typeof body.carrierId !== 'string') {
|
|
290
|
+
return NextResponse.json({ error: 'Carrier ID is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
291
|
+
}
|
|
292
|
+
if (!body.name || typeof body.name !== 'string') {
|
|
293
|
+
return NextResponse.json({ error: 'Zone name is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
294
|
+
}
|
|
295
|
+
if (!Array.isArray(body.countries) || body.countries.length === 0) {
|
|
296
|
+
return NextResponse.json({ error: 'At least one country is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
297
|
+
}
|
|
298
|
+
// Verify carrier exists
|
|
299
|
+
const carrier = await findShippingCarrierById(body.carrierId);
|
|
300
|
+
if (!carrier) {
|
|
301
|
+
return NextResponse.json({ error: 'Shipping carrier not found', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
302
|
+
}
|
|
303
|
+
// Sanitize countries (uppercase, 2-char codes, or '*')
|
|
304
|
+
const countries = body.countries
|
|
305
|
+
.filter((c) => typeof c === 'string')
|
|
306
|
+
.map((c) => c.toUpperCase().trim())
|
|
307
|
+
.filter((c) => c === '*' || c.length === 2);
|
|
308
|
+
if (countries.length === 0) {
|
|
309
|
+
return NextResponse.json({ error: 'Invalid country codes. Use 2-letter ISO codes or "*" for all countries.', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
310
|
+
}
|
|
311
|
+
const zone = await createShippingZone({
|
|
312
|
+
carrierId: body.carrierId,
|
|
313
|
+
name: body.name.trim().slice(0, 255),
|
|
314
|
+
countries,
|
|
315
|
+
isActive: body.isActive !== false,
|
|
316
|
+
sortOrder: typeof body.sortOrder === 'number' ? body.sortOrder : 0,
|
|
317
|
+
});
|
|
318
|
+
return NextResponse.json({ success: true, data: zone }, { status: 201 });
|
|
319
|
+
}
|
|
320
|
+
catch (error) {
|
|
321
|
+
console.error('[Admin Shipping API] createZone error:', error);
|
|
322
|
+
return NextResponse.json({ error: 'Failed to create shipping zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// =============================================================================
|
|
326
|
+
// Shipping Zones - Single Operations
|
|
327
|
+
// =============================================================================
|
|
328
|
+
/**
|
|
329
|
+
* GET /api/admin/shipping/zones/[id]
|
|
330
|
+
*
|
|
331
|
+
* Get a single shipping zone by ID with its rates.
|
|
332
|
+
*/
|
|
333
|
+
export async function getZone(_request, { params }) {
|
|
334
|
+
const guard = await requireAdmin({ permission: 'settings.read' });
|
|
335
|
+
if (!guard.ok) {
|
|
336
|
+
return guard.response;
|
|
337
|
+
}
|
|
338
|
+
try {
|
|
339
|
+
const { id } = await params;
|
|
340
|
+
const zone = await findShippingZoneById(id);
|
|
341
|
+
if (!zone) {
|
|
342
|
+
return NextResponse.json({ error: 'Shipping zone not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
343
|
+
}
|
|
344
|
+
return NextResponse.json({ data: zone });
|
|
345
|
+
}
|
|
346
|
+
catch (error) {
|
|
347
|
+
console.error('[Admin Shipping API] getZone error:', error);
|
|
348
|
+
return NextResponse.json({ error: 'Failed to fetch shipping zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* PUT /api/admin/shipping/zones/[id]
|
|
353
|
+
*
|
|
354
|
+
* Update a shipping zone by ID.
|
|
355
|
+
* Can move zone to a different carrier by changing carrierId.
|
|
356
|
+
*
|
|
357
|
+
* Request Body:
|
|
358
|
+
* ```json
|
|
359
|
+
* {
|
|
360
|
+
* "carrierId": "uuid",
|
|
361
|
+
* "name": "Updated Zone Name",
|
|
362
|
+
* "countries": ["US", "CA", "MX"],
|
|
363
|
+
* "isActive": true,
|
|
364
|
+
* "sortOrder": 1
|
|
365
|
+
* }
|
|
366
|
+
* ```
|
|
367
|
+
*/
|
|
368
|
+
export async function updateZone(request, { params }) {
|
|
369
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
370
|
+
if (!guard.ok) {
|
|
371
|
+
return guard.response;
|
|
372
|
+
}
|
|
373
|
+
try {
|
|
374
|
+
const { id } = await params;
|
|
375
|
+
const body = await request.json();
|
|
376
|
+
// Check zone exists
|
|
377
|
+
const existing = await findShippingZoneById(id);
|
|
378
|
+
if (!existing) {
|
|
379
|
+
return NextResponse.json({ error: 'Shipping zone not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
380
|
+
}
|
|
381
|
+
// Build update data
|
|
382
|
+
const updateData = {};
|
|
383
|
+
// Allow moving zone to different carrier
|
|
384
|
+
if (body.carrierId !== undefined) {
|
|
385
|
+
if (typeof body.carrierId !== 'string') {
|
|
386
|
+
return NextResponse.json({ error: 'Invalid carrier ID', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
387
|
+
}
|
|
388
|
+
// Verify new carrier exists
|
|
389
|
+
const carrier = await findShippingCarrierById(body.carrierId);
|
|
390
|
+
if (!carrier) {
|
|
391
|
+
return NextResponse.json({ error: 'Shipping carrier not found', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
392
|
+
}
|
|
393
|
+
updateData.carrierId = body.carrierId;
|
|
394
|
+
}
|
|
395
|
+
if (body.name !== undefined) {
|
|
396
|
+
updateData.name = body.name.trim().slice(0, 255);
|
|
397
|
+
}
|
|
398
|
+
if (body.countries !== undefined) {
|
|
399
|
+
if (!Array.isArray(body.countries) || body.countries.length === 0) {
|
|
400
|
+
return NextResponse.json({ error: 'At least one country is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
401
|
+
}
|
|
402
|
+
const countries = body.countries
|
|
403
|
+
.filter((c) => typeof c === 'string')
|
|
404
|
+
.map((c) => c.toUpperCase().trim())
|
|
405
|
+
.filter((c) => c === '*' || c.length === 2);
|
|
406
|
+
if (countries.length === 0) {
|
|
407
|
+
return NextResponse.json({ error: 'Invalid country codes', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
408
|
+
}
|
|
409
|
+
updateData.countries = countries;
|
|
410
|
+
}
|
|
411
|
+
if (body.isActive !== undefined) {
|
|
412
|
+
updateData.isActive = Boolean(body.isActive);
|
|
413
|
+
}
|
|
414
|
+
if (body.sortOrder !== undefined) {
|
|
415
|
+
updateData.sortOrder = typeof body.sortOrder === 'number' ? body.sortOrder : 0;
|
|
416
|
+
}
|
|
417
|
+
const zone = await updateShippingZone(id, updateData);
|
|
418
|
+
return NextResponse.json({ success: true, data: zone });
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
console.error('[Admin Shipping API] updateZone error:', error);
|
|
422
|
+
return NextResponse.json({ error: 'Failed to update shipping zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* DELETE /api/admin/shipping/zones/[id]
|
|
427
|
+
*
|
|
428
|
+
* Delete a shipping zone by ID. This cascades to delete all rates in the zone.
|
|
429
|
+
*/
|
|
430
|
+
export async function deleteZone(_request, { params }) {
|
|
431
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
432
|
+
if (!guard.ok) {
|
|
433
|
+
return guard.response;
|
|
434
|
+
}
|
|
435
|
+
try {
|
|
436
|
+
const { id } = await params;
|
|
437
|
+
const deleted = await deleteShippingZone(id);
|
|
438
|
+
if (!deleted) {
|
|
439
|
+
return NextResponse.json({ error: 'Shipping zone not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
440
|
+
}
|
|
441
|
+
return NextResponse.json({ success: true });
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
console.error('[Admin Shipping API] deleteZone error:', error);
|
|
445
|
+
return NextResponse.json({ error: 'Failed to delete shipping zone', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
// =============================================================================
|
|
449
|
+
// Shipping Rates - Create
|
|
450
|
+
// =============================================================================
|
|
451
|
+
/**
|
|
452
|
+
* POST /api/admin/shipping/rates
|
|
453
|
+
*
|
|
454
|
+
* Create a new shipping rate for a zone.
|
|
455
|
+
*
|
|
456
|
+
* Request Body:
|
|
457
|
+
* ```json
|
|
458
|
+
* {
|
|
459
|
+
* "zoneId": "uuid",
|
|
460
|
+
* "name": "Standard Shipping",
|
|
461
|
+
* "description": "5-7 business days",
|
|
462
|
+
* "price": 5.99,
|
|
463
|
+
* "minOrderAmount": 0,
|
|
464
|
+
* "maxOrderAmount": null,
|
|
465
|
+
* "estimatedDays": "5-7",
|
|
466
|
+
* "isActive": true,
|
|
467
|
+
* "sortOrder": 0
|
|
468
|
+
* }
|
|
469
|
+
* ```
|
|
470
|
+
*/
|
|
471
|
+
export async function createRate(request) {
|
|
472
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
473
|
+
if (!guard.ok) {
|
|
474
|
+
return guard.response;
|
|
475
|
+
}
|
|
476
|
+
try {
|
|
477
|
+
const body = await request.json();
|
|
478
|
+
// Validate required fields
|
|
479
|
+
if (!body.zoneId || typeof body.zoneId !== 'string') {
|
|
480
|
+
return NextResponse.json({ error: 'Zone ID is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
481
|
+
}
|
|
482
|
+
if (!body.name || typeof body.name !== 'string') {
|
|
483
|
+
return NextResponse.json({ error: 'Rate name is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
484
|
+
}
|
|
485
|
+
if (typeof body.price !== 'number' || body.price < 0) {
|
|
486
|
+
return NextResponse.json({ error: 'Valid price is required (non-negative number)', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
487
|
+
}
|
|
488
|
+
// Verify zone exists
|
|
489
|
+
const zone = await findShippingZoneById(body.zoneId);
|
|
490
|
+
if (!zone) {
|
|
491
|
+
return NextResponse.json({ error: 'Shipping zone not found', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
492
|
+
}
|
|
493
|
+
const rate = await createShippingRate({
|
|
494
|
+
zoneId: body.zoneId,
|
|
495
|
+
name: body.name.trim().slice(0, 255),
|
|
496
|
+
description: body.description ? body.description.trim().slice(0, 500) : undefined,
|
|
497
|
+
price: body.price,
|
|
498
|
+
minOrderAmount: typeof body.minOrderAmount === 'number' && body.minOrderAmount >= 0
|
|
499
|
+
? body.minOrderAmount
|
|
500
|
+
: undefined,
|
|
501
|
+
maxOrderAmount: typeof body.maxOrderAmount === 'number' && body.maxOrderAmount >= 0
|
|
502
|
+
? body.maxOrderAmount
|
|
503
|
+
: undefined,
|
|
504
|
+
estimatedDays: body.estimatedDays ? body.estimatedDays.trim().slice(0, 50) : undefined,
|
|
505
|
+
isActive: body.isActive !== false,
|
|
506
|
+
sortOrder: typeof body.sortOrder === 'number' ? body.sortOrder : 0,
|
|
507
|
+
});
|
|
508
|
+
return NextResponse.json({ success: true, data: rate }, { status: 201 });
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
console.error('[Admin Shipping API] createRate error:', error);
|
|
512
|
+
return NextResponse.json({ error: 'Failed to create shipping rate', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
// =============================================================================
|
|
516
|
+
// Shipping Rates - Update & Delete
|
|
517
|
+
// =============================================================================
|
|
518
|
+
/**
|
|
519
|
+
* PUT /api/admin/shipping/rates/[id]
|
|
520
|
+
*
|
|
521
|
+
* Update a shipping rate by ID.
|
|
522
|
+
*
|
|
523
|
+
* Request Body:
|
|
524
|
+
* ```json
|
|
525
|
+
* {
|
|
526
|
+
* "name": "Express Shipping",
|
|
527
|
+
* "description": "2-3 business days",
|
|
528
|
+
* "price": 12.99,
|
|
529
|
+
* "minOrderAmount": 0,
|
|
530
|
+
* "maxOrderAmount": 100,
|
|
531
|
+
* "estimatedDays": "2-3",
|
|
532
|
+
* "isActive": true,
|
|
533
|
+
* "sortOrder": 1
|
|
534
|
+
* }
|
|
535
|
+
* ```
|
|
536
|
+
*/
|
|
537
|
+
export async function updateRate(request, { params }) {
|
|
538
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
539
|
+
if (!guard.ok) {
|
|
540
|
+
return guard.response;
|
|
541
|
+
}
|
|
542
|
+
try {
|
|
543
|
+
const { id } = await params;
|
|
544
|
+
const body = await request.json();
|
|
545
|
+
// Build update data
|
|
546
|
+
const updateData = {};
|
|
547
|
+
if (body.name !== undefined) {
|
|
548
|
+
updateData.name = body.name.trim().slice(0, 255);
|
|
549
|
+
}
|
|
550
|
+
if (body.description !== undefined) {
|
|
551
|
+
updateData.description = body.description ? body.description.trim().slice(0, 500) : null;
|
|
552
|
+
}
|
|
553
|
+
if (body.price !== undefined) {
|
|
554
|
+
if (typeof body.price !== 'number' || body.price < 0) {
|
|
555
|
+
return NextResponse.json({ error: 'Price must be a non-negative number', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
556
|
+
}
|
|
557
|
+
updateData.price = body.price;
|
|
558
|
+
}
|
|
559
|
+
if (body.minOrderAmount !== undefined) {
|
|
560
|
+
updateData.minOrderAmount = typeof body.minOrderAmount === 'number' && body.minOrderAmount >= 0
|
|
561
|
+
? body.minOrderAmount
|
|
562
|
+
: null;
|
|
563
|
+
}
|
|
564
|
+
if (body.maxOrderAmount !== undefined) {
|
|
565
|
+
updateData.maxOrderAmount = typeof body.maxOrderAmount === 'number' && body.maxOrderAmount >= 0
|
|
566
|
+
? body.maxOrderAmount
|
|
567
|
+
: null;
|
|
568
|
+
}
|
|
569
|
+
if (body.estimatedDays !== undefined) {
|
|
570
|
+
updateData.estimatedDays = body.estimatedDays ? body.estimatedDays.trim().slice(0, 50) : null;
|
|
571
|
+
}
|
|
572
|
+
if (body.isActive !== undefined) {
|
|
573
|
+
updateData.isActive = Boolean(body.isActive);
|
|
574
|
+
}
|
|
575
|
+
if (body.sortOrder !== undefined) {
|
|
576
|
+
updateData.sortOrder = typeof body.sortOrder === 'number' ? body.sortOrder : 0;
|
|
577
|
+
}
|
|
578
|
+
const rate = await updateShippingRate(id, updateData);
|
|
579
|
+
if (!rate) {
|
|
580
|
+
return NextResponse.json({ error: 'Shipping rate not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
581
|
+
}
|
|
582
|
+
return NextResponse.json({ success: true, data: rate });
|
|
583
|
+
}
|
|
584
|
+
catch (error) {
|
|
585
|
+
console.error('[Admin Shipping API] updateRate error:', error);
|
|
586
|
+
return NextResponse.json({ error: 'Failed to update shipping rate', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* DELETE /api/admin/shipping/rates/[id]
|
|
591
|
+
*
|
|
592
|
+
* Delete a shipping rate by ID.
|
|
593
|
+
*/
|
|
594
|
+
export async function deleteRate(_request, { params }) {
|
|
595
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
596
|
+
if (!guard.ok) {
|
|
597
|
+
return guard.response;
|
|
598
|
+
}
|
|
599
|
+
try {
|
|
600
|
+
const { id } = await params;
|
|
601
|
+
const deleted = await deleteShippingRate(id);
|
|
602
|
+
if (!deleted) {
|
|
603
|
+
return NextResponse.json({ error: 'Shipping rate not found', code: 'NOT_FOUND' }, { status: 404 });
|
|
604
|
+
}
|
|
605
|
+
return NextResponse.json({ success: true });
|
|
606
|
+
}
|
|
607
|
+
catch (error) {
|
|
608
|
+
console.error('[Admin Shipping API] deleteRate error:', error);
|
|
609
|
+
return NextResponse.json({ error: 'Failed to delete shipping rate', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
// =============================================================================
|
|
613
|
+
// Shippo API Validation
|
|
614
|
+
// =============================================================================
|
|
615
|
+
/**
|
|
616
|
+
* POST /api/admin/shipping/shippo/validate
|
|
617
|
+
*
|
|
618
|
+
* Validate Shippo API key.
|
|
619
|
+
* Checks database first for store-specific key, falls back to environment variable.
|
|
620
|
+
*
|
|
621
|
+
* Response:
|
|
622
|
+
* ```json
|
|
623
|
+
* { "valid": true, "hasStoredKey": true, "maskedKey": "...abc1" }
|
|
624
|
+
* // or
|
|
625
|
+
* { "valid": false, "error": "Invalid API key", "hasStoredKey": false }
|
|
626
|
+
* ```
|
|
627
|
+
*/
|
|
628
|
+
export async function validateShippoApiKey() {
|
|
629
|
+
const guard = await requireAdmin({ permission: 'settings.read' });
|
|
630
|
+
if (!guard.ok) {
|
|
631
|
+
return guard.response;
|
|
632
|
+
}
|
|
633
|
+
try {
|
|
634
|
+
// 1. Check database for stored API key first
|
|
635
|
+
const settings = await findSettings();
|
|
636
|
+
let apiKey = settings?.shippoApiKey;
|
|
637
|
+
const hasStoredKey = !!apiKey;
|
|
638
|
+
// 2. Fallback to environment variable
|
|
639
|
+
if (!apiKey) {
|
|
640
|
+
apiKey = process.env.SHIPPO_API_KEY;
|
|
641
|
+
}
|
|
642
|
+
if (!apiKey) {
|
|
643
|
+
return NextResponse.json({
|
|
644
|
+
valid: false,
|
|
645
|
+
error: 'No Shippo API key configured. Add it in Settings > Shipping.',
|
|
646
|
+
hasStoredKey: false,
|
|
647
|
+
maskedKey: null,
|
|
648
|
+
});
|
|
649
|
+
}
|
|
650
|
+
// 3. Validate with Shippo API
|
|
651
|
+
const { validateShippoKey } = await import('../../shipping/shippo');
|
|
652
|
+
const result = await validateShippoKey(apiKey);
|
|
653
|
+
return NextResponse.json({
|
|
654
|
+
...result,
|
|
655
|
+
hasStoredKey,
|
|
656
|
+
maskedKey: hasStoredKey ? `...${apiKey.slice(-4)}` : null,
|
|
657
|
+
});
|
|
658
|
+
}
|
|
659
|
+
catch (error) {
|
|
660
|
+
console.error('[Admin Shipping API] validateShippoApiKey error:', error);
|
|
661
|
+
return NextResponse.json({ error: 'Failed to validate Shippo API key', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
/**
|
|
665
|
+
* POST /api/admin/shipping/shippo/api-key
|
|
666
|
+
*
|
|
667
|
+
* Save Shippo API key to database.
|
|
668
|
+
* Validates the key with Shippo before saving.
|
|
669
|
+
*
|
|
670
|
+
* Request:
|
|
671
|
+
* ```json
|
|
672
|
+
* { "apiKey": "shippo_live_abc123..." }
|
|
673
|
+
* ```
|
|
674
|
+
*
|
|
675
|
+
* Response:
|
|
676
|
+
* ```json
|
|
677
|
+
* { "success": true, "maskedKey": "...c123", "message": "Shippo API key saved successfully" }
|
|
678
|
+
* ```
|
|
679
|
+
*/
|
|
680
|
+
export async function saveShippoApiKey(request) {
|
|
681
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
682
|
+
if (!guard.ok) {
|
|
683
|
+
return guard.response;
|
|
684
|
+
}
|
|
685
|
+
try {
|
|
686
|
+
const body = await request.json();
|
|
687
|
+
const { apiKey } = body;
|
|
688
|
+
// Validate input
|
|
689
|
+
if (!apiKey || typeof apiKey !== 'string') {
|
|
690
|
+
return NextResponse.json({ error: 'API key is required', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
691
|
+
}
|
|
692
|
+
const trimmedKey = apiKey.trim();
|
|
693
|
+
if (trimmedKey.length < 10) {
|
|
694
|
+
return NextResponse.json({ error: 'Invalid API key format', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
695
|
+
}
|
|
696
|
+
// Validate the key actually works with Shippo
|
|
697
|
+
const { validateShippoKey } = await import('../../shipping/shippo');
|
|
698
|
+
const validation = await validateShippoKey(trimmedKey);
|
|
699
|
+
if (!validation.valid) {
|
|
700
|
+
return NextResponse.json({ error: validation.error || 'Invalid Shippo API key', code: 'VALIDATION_ERROR' }, { status: 400 });
|
|
701
|
+
}
|
|
702
|
+
// Save to database
|
|
703
|
+
await upsertSettings({ shippoApiKey: trimmedKey });
|
|
704
|
+
// Return masked key for UI display
|
|
705
|
+
const maskedKey = `...${trimmedKey.slice(-4)}`;
|
|
706
|
+
return NextResponse.json({
|
|
707
|
+
success: true,
|
|
708
|
+
maskedKey,
|
|
709
|
+
message: 'Shippo API key saved successfully',
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
catch (error) {
|
|
713
|
+
console.error('[Admin Shipping API] saveShippoApiKey error:', error);
|
|
714
|
+
return NextResponse.json({ error: 'Failed to save Shippo API key', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
/**
|
|
718
|
+
* DELETE /api/admin/shipping/shippo/api-key
|
|
719
|
+
*
|
|
720
|
+
* Remove Shippo API key from database.
|
|
721
|
+
* After removal, system will fallback to SHIPPO_API_KEY environment variable if set.
|
|
722
|
+
*
|
|
723
|
+
* Response:
|
|
724
|
+
* ```json
|
|
725
|
+
* { "success": true, "message": "Shippo API key removed" }
|
|
726
|
+
* ```
|
|
727
|
+
*/
|
|
728
|
+
export async function deleteShippoApiKey() {
|
|
729
|
+
const guard = await requireAdmin({ permission: 'settings.write' });
|
|
730
|
+
if (!guard.ok) {
|
|
731
|
+
return guard.response;
|
|
732
|
+
}
|
|
733
|
+
try {
|
|
734
|
+
// Set to null in database
|
|
735
|
+
await upsertSettings({ shippoApiKey: null });
|
|
736
|
+
return NextResponse.json({
|
|
737
|
+
success: true,
|
|
738
|
+
message: 'Shippo API key removed. Will fallback to environment variable if configured.',
|
|
739
|
+
});
|
|
740
|
+
}
|
|
741
|
+
catch (error) {
|
|
742
|
+
console.error('[Admin Shipping API] deleteShippoApiKey error:', error);
|
|
743
|
+
return NextResponse.json({ error: 'Failed to remove Shippo API key', code: 'INTERNAL_ERROR' }, { status: 500 });
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
//# sourceMappingURL=shipping.js.map
|