@rovela-ai/sdk 0.1.2 → 0.1.4
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/auth.d.ts +32 -0
- package/dist/admin/api/auth.d.ts.map +1 -0
- package/dist/admin/api/auth.js +43 -0
- package/dist/admin/api/auth.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 +247 -0
- package/dist/admin/api/categories.js.map +1 -0
- package/dist/admin/api/customers.d.ts +41 -0
- package/dist/admin/api/customers.d.ts.map +1 -0
- package/dist/admin/api/customers.js +113 -0
- package/dist/admin/api/customers.js.map +1 -0
- package/dist/admin/api/index.d.ts +56 -0
- package/dist/admin/api/index.d.ts.map +1 -0
- package/dist/admin/api/index.js +87 -0
- package/dist/admin/api/index.js.map +1 -0
- package/dist/admin/api/orders.d.ts +59 -0
- package/dist/admin/api/orders.d.ts.map +1 -0
- package/dist/admin/api/orders.js +209 -0
- package/dist/admin/api/orders.js.map +1 -0
- package/dist/admin/api/products.d.ts +103 -0
- package/dist/admin/api/products.d.ts.map +1 -0
- package/dist/admin/api/products.js +329 -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 +136 -0
- package/dist/admin/api/refund.js.map +1 -0
- package/dist/admin/api/stats.d.ts +40 -0
- package/dist/admin/api/stats.d.ts.map +1 -0
- package/dist/admin/api/stats.js +74 -0
- package/dist/admin/api/stats.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 +97 -0
- package/dist/admin/components/AdminGuard.js.map +1 -0
- package/dist/admin/components/AdminHeader.d.ts +18 -0
- package/dist/admin/components/AdminHeader.d.ts.map +1 -0
- package/dist/admin/components/AdminHeader.js +33 -0
- package/dist/admin/components/AdminHeader.js.map +1 -0
- package/dist/admin/components/AdminLayout.d.ts +50 -0
- package/dist/admin/components/AdminLayout.d.ts.map +1 -0
- package/dist/admin/components/AdminLayout.js +46 -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 +58 -0
- package/dist/admin/components/AdminLoginForm.js.map +1 -0
- package/dist/admin/components/AdminNav.d.ts +34 -0
- package/dist/admin/components/AdminNav.d.ts.map +1 -0
- package/dist/admin/components/AdminNav.js +61 -0
- package/dist/admin/components/AdminNav.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 +83 -0
- package/dist/admin/components/InventoryEditor.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 +35 -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 +94 -0
- package/dist/admin/components/OrderDetails.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 +89 -0
- package/dist/admin/components/OrderTable.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 +127 -0
- package/dist/admin/components/ProductForm.js.map +1 -0
- package/dist/admin/components/ProductTable.d.ts +13 -0
- package/dist/admin/components/ProductTable.d.ts.map +1 -0
- package/dist/admin/components/ProductTable.js +81 -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 +58 -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 +86 -0
- package/dist/admin/components/RefundDialog.js.map +1 -0
- package/dist/admin/components/StatsCards.d.ts +23 -0
- package/dist/admin/components/StatsCards.d.ts.map +1 -0
- package/dist/admin/components/StatsCards.js +82 -0
- package/dist/admin/components/StatsCards.js.map +1 -0
- package/dist/admin/components/StoreSettings.d.ts +14 -0
- package/dist/admin/components/StoreSettings.d.ts.map +1 -0
- package/dist/admin/components/StoreSettings.js +88 -0
- package/dist/admin/components/StoreSettings.js.map +1 -0
- package/dist/admin/components/index.d.ts +21 -0
- package/dist/admin/components/index.d.ts.map +1 -0
- package/dist/admin/components/index.js +57 -0
- package/dist/admin/components/index.js.map +1 -0
- package/dist/admin/config.d.ts +74 -0
- package/dist/admin/config.d.ts.map +1 -0
- package/dist/admin/config.js +229 -0
- package/dist/admin/config.js.map +1 -0
- package/dist/admin/hooks/index.d.ts +10 -0
- package/dist/admin/hooks/index.d.ts.map +1 -0
- package/dist/admin/hooks/index.js +17 -0
- package/dist/admin/hooks/index.js.map +1 -0
- package/dist/admin/hooks/useAdminOrders.d.ts +41 -0
- package/dist/admin/hooks/useAdminOrders.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminOrders.js +191 -0
- package/dist/admin/hooks/useAdminOrders.js.map +1 -0
- package/dist/admin/hooks/useAdminProducts.d.ts +39 -0
- package/dist/admin/hooks/useAdminProducts.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminProducts.js +235 -0
- package/dist/admin/hooks/useAdminProducts.js.map +1 -0
- package/dist/admin/hooks/useAdminStats.d.ts +50 -0
- package/dist/admin/hooks/useAdminStats.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminStats.js +111 -0
- package/dist/admin/hooks/useAdminStats.js.map +1 -0
- package/dist/admin/index.d.ts +63 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +148 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/server/admin-service.d.ts +130 -0
- package/dist/admin/server/admin-service.d.ts.map +1 -0
- package/dist/admin/server/admin-service.js +298 -0
- package/dist/admin/server/admin-service.js.map +1 -0
- package/dist/admin/server/index.d.ts +8 -0
- package/dist/admin/server/index.d.ts.map +1 -0
- package/dist/admin/server/index.js +25 -0
- package/dist/admin/server/index.js.map +1 -0
- package/dist/admin/types.d.ts +549 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +11 -0
- package/dist/admin/types.js.map +1 -0
- package/dist/auth/api/auth.d.ts +54 -0
- package/dist/auth/api/auth.d.ts.map +1 -0
- package/dist/auth/api/auth.js +67 -0
- package/dist/auth/api/auth.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 +68 -0
- package/dist/auth/api/forgot-password.js.map +1 -0
- package/dist/auth/api/index.d.ts +34 -0
- package/dist/auth/api/index.d.ts.map +1 -0
- package/dist/auth/api/index.js +52 -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 +93 -0
- package/dist/auth/api/register.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 +71 -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 +110 -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 +94 -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 +113 -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 +44 -0
- package/dist/auth/components/ForgotPasswordForm.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 +88 -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 +63 -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 +79 -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 +75 -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 +59 -0
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -0
- package/dist/auth/components/index.d.ts +13 -0
- package/dist/auth/components/index.d.ts.map +1 -0
- package/dist/auth/components/index.js +24 -0
- package/dist/auth/components/index.js.map +1 -0
- package/dist/auth/config.d.ts +42 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +174 -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 +11 -0
- package/dist/auth/hooks/index.js.map +1 -0
- package/dist/auth/index.d.ts +54 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +88 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/server/customer-service.d.ts +138 -0
- package/dist/auth/server/customer-service.d.ts.map +1 -0
- package/dist/auth/server/customer-service.js +309 -0
- package/dist/auth/server/customer-service.js.map +1 -0
- package/dist/auth/server/email-sender.d.ts +64 -0
- package/dist/auth/server/email-sender.d.ts.map +1 -0
- package/dist/auth/server/email-sender.js +112 -0
- package/dist/auth/server/email-sender.js.map +1 -0
- package/dist/auth/server/index.d.ts +13 -0
- package/dist/auth/server/index.d.ts.map +1 -0
- package/dist/auth/server/index.js +48 -0
- package/dist/auth/server/index.js.map +1 -0
- package/dist/auth/server/password-reset-service.d.ts +86 -0
- package/dist/auth/server/password-reset-service.d.ts.map +1 -0
- package/dist/auth/server/password-reset-service.js +236 -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 +94 -0
- package/dist/auth/server/password.js.map +1 -0
- package/dist/auth/server/verification-service.d.ts +87 -0
- package/dist/auth/server/verification-service.d.ts.map +1 -0
- package/dist/auth/server/verification-service.js +268 -0
- package/dist/auth/server/verification-service.js.map +1 -0
- package/dist/auth/types.d.ts +305 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +8 -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 +101 -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 +124 -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 +108 -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 +70 -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 +58 -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 +87 -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 +21 -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 +129 -0
- package/dist/cart/index.js.map +1 -0
- package/dist/cart/store.d.ts +101 -0
- package/dist/cart/store.d.ts.map +1 -0
- package/dist/cart/store.js +207 -0
- package/dist/cart/store.js.map +1 -0
- package/dist/checkout/api/checkout.d.ts +31 -0
- package/dist/checkout/api/checkout.d.ts.map +1 -0
- package/dist/checkout/api/checkout.js +103 -0
- package/dist/checkout/api/checkout.js.map +1 -0
- package/dist/checkout/api/index.d.ts +8 -0
- package/dist/checkout/api/index.d.ts.map +1 -0
- package/dist/checkout/api/index.js +13 -0
- package/dist/checkout/api/index.js.map +1 -0
- package/dist/checkout/api/webhook.d.ts +30 -0
- package/dist/checkout/api/webhook.d.ts.map +1 -0
- package/dist/checkout/api/webhook.js +58 -0
- package/dist/checkout/api/webhook.js.map +1 -0
- package/dist/checkout/components/CheckoutButton.d.ts +44 -0
- package/dist/checkout/components/CheckoutButton.d.ts.map +1 -0
- package/dist/checkout/components/CheckoutButton.js +97 -0
- package/dist/checkout/components/CheckoutButton.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 +60 -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 +70 -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 +125 -0
- package/dist/checkout/components/ShippingForm.js.map +1 -0
- package/dist/checkout/components/index.d.ts +10 -0
- package/dist/checkout/components/index.d.ts.map +1 -0
- package/dist/checkout/components/index.js +17 -0
- package/dist/checkout/components/index.js.map +1 -0
- package/dist/checkout/hooks/index.d.ts +7 -0
- package/dist/checkout/hooks/index.d.ts.map +1 -0
- package/dist/checkout/hooks/index.js +12 -0
- package/dist/checkout/hooks/index.js.map +1 -0
- package/dist/checkout/hooks/useCheckout.d.ts +61 -0
- package/dist/checkout/hooks/useCheckout.d.ts.map +1 -0
- package/dist/checkout/hooks/useCheckout.js +174 -0
- package/dist/checkout/hooks/useCheckout.js.map +1 -0
- package/dist/checkout/index.d.ts +111 -0
- package/dist/checkout/index.d.ts.map +1 -0
- package/dist/checkout/index.js +148 -0
- package/dist/checkout/index.js.map +1 -0
- package/dist/checkout/server/create-checkout-session.d.ts +69 -0
- package/dist/checkout/server/create-checkout-session.d.ts.map +1 -0
- package/dist/checkout/server/create-checkout-session.js +190 -0
- package/dist/checkout/server/create-checkout-session.js.map +1 -0
- package/dist/checkout/server/handle-webhook.d.ts +35 -0
- package/dist/checkout/server/handle-webhook.d.ts.map +1 -0
- package/dist/checkout/server/handle-webhook.js +279 -0
- package/dist/checkout/server/handle-webhook.js.map +1 -0
- package/dist/checkout/server/index.d.ts +10 -0
- package/dist/checkout/server/index.d.ts.map +1 -0
- package/dist/checkout/server/index.js +19 -0
- package/dist/checkout/server/index.js.map +1 -0
- package/dist/checkout/server/order-service.d.ts +43 -0
- package/dist/checkout/server/order-service.d.ts.map +1 -0
- package/dist/checkout/server/order-service.js +196 -0
- package/dist/checkout/server/order-service.js.map +1 -0
- package/dist/checkout/stripe/client.d.ts +72 -0
- package/dist/checkout/stripe/client.d.ts.map +1 -0
- package/dist/checkout/stripe/client.js +189 -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 +21 -0
- package/dist/checkout/stripe/index.js.map +1 -0
- package/dist/checkout/types.d.ts +263 -0
- package/dist/checkout/types.d.ts.map +1 -0
- package/dist/checkout/types.js +9 -0
- package/dist/checkout/types.js.map +1 -0
- package/dist/core/config.d.ts +296 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +162 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/db/client.d.ts +69 -0
- package/dist/core/db/client.d.ts.map +1 -0
- package/dist/core/db/client.js +202 -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 +109 -0
- package/dist/core/db/index.js.map +1 -0
- package/dist/core/db/queries.d.ts +627 -0
- package/dist/core/db/queries.d.ts.map +1 -0
- package/dist/core/db/queries.js +730 -0
- package/dist/core/db/queries.js.map +1 -0
- package/dist/core/db/schema.d.ts +1628 -0
- package/dist/core/db/schema.d.ts.map +1 -0
- package/dist/core/db/schema.js +262 -0
- package/dist/core/db/schema.js.map +1 -0
- package/dist/core/index.d.ts +20 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +71 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/server/index.d.ts +17 -0
- package/dist/core/server/index.d.ts.map +1 -0
- package/dist/core/server/index.js +96 -0
- package/dist/core/server/index.js.map +1 -0
- package/dist/core/types.d.ts +230 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils.d.ts +153 -0
- package/dist/core/utils.d.ts.map +1 -0
- package/dist/core/utils.js +356 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/emails/config.d.ts +42 -0
- package/dist/emails/config.d.ts.map +1 -0
- package/dist/emails/config.js +89 -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 +170 -0
- package/dist/emails/index.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 +132 -0
- package/dist/emails/send/auth.js.map +1 -0
- package/dist/emails/send/index.d.ts +10 -0
- package/dist/emails/send/index.d.ts.map +1 -0
- package/dist/emails/send/index.js +33 -0
- package/dist/emails/send/index.js.map +1 -0
- package/dist/emails/send/orders.d.ts +180 -0
- package/dist/emails/send/orders.d.ts.map +1 -0
- package/dist/emails/send/orders.js +259 -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 +118 -0
- package/dist/emails/sender.js.map +1 -0
- package/dist/emails/templates/base.d.ts +105 -0
- package/dist/emails/templates/base.d.ts.map +1 -0
- package/dist/emails/templates/base.js +291 -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 +56 -0
- package/dist/emails/templates/email-verification.js.map +1 -0
- package/dist/emails/templates/index.d.ts +15 -0
- package/dist/emails/templates/index.d.ts.map +1 -0
- package/dist/emails/templates/index.js +58 -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 +87 -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 +161 -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 +95 -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 +87 -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 +55 -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 +96 -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 +56 -0
- package/dist/emails/templates/welcome.js.map +1 -0
- package/dist/emails/types.d.ts +202 -0
- package/dist/emails/types.d.ts.map +1 -0
- package/dist/emails/types.js +8 -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 +229 -0
- package/dist/emails/utils.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +225 -0
- package/dist/index.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 +49 -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 +30 -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 +70 -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 +102 -0
- package/dist/products/api/products.js.map +1 -0
- package/dist/products/components/CategoryNav.d.ts +51 -0
- package/dist/products/components/CategoryNav.d.ts.map +1 -0
- package/dist/products/components/CategoryNav.js +115 -0
- package/dist/products/components/CategoryNav.js.map +1 -0
- package/dist/products/components/ProductBreadcrumb.d.ts +52 -0
- package/dist/products/components/ProductBreadcrumb.d.ts.map +1 -0
- package/dist/products/components/ProductBreadcrumb.js +78 -0
- package/dist/products/components/ProductBreadcrumb.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 +65 -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 +105 -0
- package/dist/products/components/ProductDetails.js.map +1 -0
- package/dist/products/components/ProductFilters.d.ts +70 -0
- package/dist/products/components/ProductFilters.d.ts.map +1 -0
- package/dist/products/components/ProductFilters.js +127 -0
- package/dist/products/components/ProductFilters.js.map +1 -0
- package/dist/products/components/ProductGallery.d.ts +37 -0
- package/dist/products/components/ProductGallery.d.ts.map +1 -0
- package/dist/products/components/ProductGallery.js +80 -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 +83 -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 +99 -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 +61 -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 +26 -0
- package/dist/products/components/index.d.ts.map +1 -0
- package/dist/products/components/index.js +32 -0
- package/dist/products/components/index.js.map +1 -0
- package/dist/products/hooks/index.d.ts +14 -0
- package/dist/products/hooks/index.d.ts.map +1 -0
- package/dist/products/hooks/index.js +17 -0
- package/dist/products/hooks/index.js.map +1 -0
- package/dist/products/hooks/useCategories.d.ts +56 -0
- package/dist/products/hooks/useCategories.d.ts.map +1 -0
- package/dist/products/hooks/useCategories.js +126 -0
- package/dist/products/hooks/useCategories.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 +86 -0
- package/dist/products/hooks/useProduct.js.map +1 -0
- package/dist/products/hooks/useProductAttributes.d.ts +59 -0
- package/dist/products/hooks/useProductAttributes.d.ts.map +1 -0
- package/dist/products/hooks/useProductAttributes.js +148 -0
- package/dist/products/hooks/useProductAttributes.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 +132 -0
- package/dist/products/hooks/useProducts.js.map +1 -0
- package/dist/products/index.d.ts +94 -0
- package/dist/products/index.d.ts.map +1 -0
- package/dist/products/index.js +123 -0
- package/dist/products/index.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +70 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.js +77 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/colors.d.ts +148 -0
- package/dist/theme/colors.d.ts.map +1 -0
- package/dist/theme/colors.js +219 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/theme/defaults.d.ts +212 -0
- package/dist/theme/defaults.d.ts.map +1 -0
- package/dist/theme/defaults.js +278 -0
- package/dist/theme/defaults.js.map +1 -0
- package/dist/theme/fonts.d.ts +59 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/fonts.js +202 -0
- package/dist/theme/fonts.js.map +1 -0
- package/dist/theme/generator.d.ts +50 -0
- package/dist/theme/generator.d.ts.map +1 -0
- package/dist/theme/generator.js +322 -0
- package/dist/theme/generator.js.map +1 -0
- package/dist/theme/hooks.d.ts +110 -0
- package/dist/theme/hooks.d.ts.map +1 -0
- package/dist/theme/hooks.js +106 -0
- package/dist/theme/hooks.js.map +1 -0
- package/dist/theme/index.d.ts +37 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +85 -0
- package/dist/theme/index.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @rovela/sdk/checkout/server/create-checkout-session
|
|
4
|
+
*
|
|
5
|
+
* Creates a Stripe Checkout session using Direct Charges.
|
|
6
|
+
* The payment is processed ON the connected account, not the platform.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.createCheckoutSession = createCheckoutSession;
|
|
10
|
+
exports.deserializeItemsFromMetadata = deserializeItemsFromMetadata;
|
|
11
|
+
exports.getCheckoutSession = getCheckoutSession;
|
|
12
|
+
const client_1 = require("../stripe/client");
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Main Function
|
|
15
|
+
// =============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Create a Stripe Checkout session for Direct Charges.
|
|
18
|
+
*
|
|
19
|
+
* This creates the checkout session ON the connected account (Direct Charge),
|
|
20
|
+
* meaning the payment shows up in the connected account's dashboard, and
|
|
21
|
+
* the application fee is transferred to the platform.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* const session = await createCheckoutSession({
|
|
26
|
+
* items: [
|
|
27
|
+
* { name: 'T-Shirt', price: 2999, quantity: 1 }
|
|
28
|
+
* ],
|
|
29
|
+
* customerEmail: 'customer@example.com',
|
|
30
|
+
* successUrl: 'https://store.example.com/success?session_id={CHECKOUT_SESSION_ID}',
|
|
31
|
+
* cancelUrl: 'https://store.example.com/cart',
|
|
32
|
+
* })
|
|
33
|
+
*
|
|
34
|
+
* // Redirect customer to Stripe Checkout
|
|
35
|
+
* redirect(session.url)
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
async function createCheckoutSession(request, options = {}) {
|
|
39
|
+
const stripe = (0, client_1.getStripe)();
|
|
40
|
+
const connectedAccountId = (0, client_1.getConnectedAccountId)();
|
|
41
|
+
const currency = (0, client_1.getStoreCurrency)();
|
|
42
|
+
const { collectShippingAddress = true, collectPhoneNumber = false, allowPromotionCodes = false, automaticTax = false, applicationFeeAmount, } = options;
|
|
43
|
+
// Validate request
|
|
44
|
+
if (!request.items || request.items.length === 0) {
|
|
45
|
+
throw new Error('No items provided for checkout');
|
|
46
|
+
}
|
|
47
|
+
if (!request.successUrl || !request.cancelUrl) {
|
|
48
|
+
throw new Error('Success and cancel URLs are required');
|
|
49
|
+
}
|
|
50
|
+
// Calculate subtotal and application fee
|
|
51
|
+
const subtotal = request.items.reduce((sum, item) => sum + item.price * item.quantity, 0);
|
|
52
|
+
const appFee = applicationFeeAmount ?? (0, client_1.calculateApplicationFee)(subtotal);
|
|
53
|
+
// Build line items for Stripe
|
|
54
|
+
const lineItems = request.items.map((item) => ({
|
|
55
|
+
price_data: {
|
|
56
|
+
currency,
|
|
57
|
+
product_data: {
|
|
58
|
+
name: item.name,
|
|
59
|
+
description: item.description,
|
|
60
|
+
images: item.image ? [item.image] : undefined,
|
|
61
|
+
metadata: {
|
|
62
|
+
productId: item.productId || '',
|
|
63
|
+
variantId: item.variantId || '',
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
unit_amount: item.price,
|
|
67
|
+
},
|
|
68
|
+
quantity: item.quantity,
|
|
69
|
+
}));
|
|
70
|
+
// Build session parameters
|
|
71
|
+
const sessionParams = {
|
|
72
|
+
mode: 'payment',
|
|
73
|
+
line_items: lineItems,
|
|
74
|
+
payment_intent_data: {
|
|
75
|
+
// Application fee goes to the platform (Rovela)
|
|
76
|
+
application_fee_amount: appFee,
|
|
77
|
+
// Metadata for the payment intent
|
|
78
|
+
metadata: {
|
|
79
|
+
rovela_platform: 'true',
|
|
80
|
+
...request.metadata,
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
success_url: request.successUrl,
|
|
84
|
+
cancel_url: request.cancelUrl,
|
|
85
|
+
// Store metadata on the session
|
|
86
|
+
metadata: {
|
|
87
|
+
// Store items as JSON for order creation in webhook
|
|
88
|
+
items: JSON.stringify(serializeItemsForMetadata(request.items)),
|
|
89
|
+
// Store customer ID for authenticated checkout
|
|
90
|
+
...(request.customerId && { customerId: request.customerId }),
|
|
91
|
+
...request.metadata,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
// Add customer email if provided
|
|
95
|
+
if (request.customerEmail) {
|
|
96
|
+
sessionParams.customer_email = request.customerEmail;
|
|
97
|
+
}
|
|
98
|
+
// Collect shipping address if enabled
|
|
99
|
+
if (collectShippingAddress) {
|
|
100
|
+
sessionParams.shipping_address_collection = {
|
|
101
|
+
allowed_countries: (0, client_1.getAllowedShippingCountries)(),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// Collect phone number if enabled
|
|
105
|
+
if (collectPhoneNumber) {
|
|
106
|
+
sessionParams.phone_number_collection = {
|
|
107
|
+
enabled: true,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// Allow promotion codes if enabled
|
|
111
|
+
if (allowPromotionCodes) {
|
|
112
|
+
sessionParams.allow_promotion_codes = true;
|
|
113
|
+
}
|
|
114
|
+
// Enable automatic tax if configured
|
|
115
|
+
if (automaticTax) {
|
|
116
|
+
sessionParams.automatic_tax = {
|
|
117
|
+
enabled: true,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
// Create the session ON the connected account (Direct Charge)
|
|
121
|
+
const session = await stripe.checkout.sessions.create(sessionParams, {
|
|
122
|
+
stripeAccount: connectedAccountId,
|
|
123
|
+
});
|
|
124
|
+
if (!session.url) {
|
|
125
|
+
throw new Error('Failed to create checkout session: no URL returned');
|
|
126
|
+
}
|
|
127
|
+
return {
|
|
128
|
+
sessionId: session.id,
|
|
129
|
+
url: session.url,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
// =============================================================================
|
|
133
|
+
// Helpers
|
|
134
|
+
// =============================================================================
|
|
135
|
+
/**
|
|
136
|
+
* Serialize items for storing in Stripe metadata.
|
|
137
|
+
* Metadata has a 500 character limit per value.
|
|
138
|
+
*/
|
|
139
|
+
function serializeItemsForMetadata(items) {
|
|
140
|
+
return items.map((item) => ({
|
|
141
|
+
pid: item.productId,
|
|
142
|
+
vid: item.variantId,
|
|
143
|
+
n: item.name.substring(0, 100), // Limit name length
|
|
144
|
+
p: item.price,
|
|
145
|
+
q: item.quantity,
|
|
146
|
+
}));
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Deserialize items from Stripe metadata.
|
|
150
|
+
*/
|
|
151
|
+
function deserializeItemsFromMetadata(json) {
|
|
152
|
+
try {
|
|
153
|
+
const items = JSON.parse(json);
|
|
154
|
+
return items.map((item) => ({
|
|
155
|
+
productId: item.pid,
|
|
156
|
+
variantId: item.vid,
|
|
157
|
+
name: item.n,
|
|
158
|
+
price: item.p,
|
|
159
|
+
quantity: item.q,
|
|
160
|
+
}));
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
console.error('[Checkout] Failed to parse items from metadata:', json);
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// =============================================================================
|
|
168
|
+
// Session Retrieval
|
|
169
|
+
// =============================================================================
|
|
170
|
+
/**
|
|
171
|
+
* Retrieve a checkout session by ID.
|
|
172
|
+
* Useful for the success page to get order details.
|
|
173
|
+
*/
|
|
174
|
+
async function getCheckoutSession(sessionId) {
|
|
175
|
+
const stripe = (0, client_1.getStripe)();
|
|
176
|
+
const connectedAccountId = (0, client_1.getConnectedAccountId)();
|
|
177
|
+
try {
|
|
178
|
+
const session = await stripe.checkout.sessions.retrieve(sessionId, {
|
|
179
|
+
expand: ['line_items', 'payment_intent', 'customer'],
|
|
180
|
+
}, {
|
|
181
|
+
stripeAccount: connectedAccountId,
|
|
182
|
+
});
|
|
183
|
+
return session;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
console.error('[Checkout] Failed to retrieve session:', error);
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=create-checkout-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-checkout-session.js","sourceRoot":"","sources":["../../../src/checkout/server/create-checkout-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/handle-webhook
|
|
3
|
+
*
|
|
4
|
+
* Stripe webhook handler for processing payment events.
|
|
5
|
+
* Handles events from both the platform account and connected accounts.
|
|
6
|
+
*/
|
|
7
|
+
import type { WebhookResult } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Handle incoming Stripe webhook events.
|
|
10
|
+
*
|
|
11
|
+
* This function:
|
|
12
|
+
* 1. Verifies the webhook signature (tries both account and connect secrets)
|
|
13
|
+
* 2. Parses the event
|
|
14
|
+
* 3. Routes to the appropriate handler
|
|
15
|
+
* 4. Returns the result
|
|
16
|
+
*
|
|
17
|
+
* Supports dual webhook endpoints:
|
|
18
|
+
* - STRIPE_WEBHOOK_SECRET: For platform account events (account.updated)
|
|
19
|
+
* - STRIPE_CONNECT_WEBHOOK_SECRET: For connected account events (checkout.*, payment_intent.*, charge.*)
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // In app/api/webhooks/stripe/route.ts
|
|
24
|
+
* export async function POST(request: Request) {
|
|
25
|
+
* const payload = await request.text()
|
|
26
|
+
* const signature = request.headers.get('stripe-signature')!
|
|
27
|
+
*
|
|
28
|
+
* const result = await handleStripeWebhook(payload, signature)
|
|
29
|
+
*
|
|
30
|
+
* return Response.json(result)
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function handleStripeWebhook(payload: string | Buffer, signature: string): Promise<WebhookResult>;
|
|
35
|
+
//# sourceMappingURL=handle-webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-webhook.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/handle-webhook.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAc7C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CAmDxB"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @rovela/sdk/checkout/server/handle-webhook
|
|
4
|
+
*
|
|
5
|
+
* Stripe webhook handler for processing payment events.
|
|
6
|
+
* Handles events from both the platform account and connected accounts.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.handleStripeWebhook = handleStripeWebhook;
|
|
10
|
+
const client_1 = require("../stripe/client");
|
|
11
|
+
const order_service_1 = require("./order-service");
|
|
12
|
+
const emails_1 = require("../../emails");
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Main Webhook Handler
|
|
15
|
+
// =============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Handle incoming Stripe webhook events.
|
|
18
|
+
*
|
|
19
|
+
* This function:
|
|
20
|
+
* 1. Verifies the webhook signature (tries both account and connect secrets)
|
|
21
|
+
* 2. Parses the event
|
|
22
|
+
* 3. Routes to the appropriate handler
|
|
23
|
+
* 4. Returns the result
|
|
24
|
+
*
|
|
25
|
+
* Supports dual webhook endpoints:
|
|
26
|
+
* - STRIPE_WEBHOOK_SECRET: For platform account events (account.updated)
|
|
27
|
+
* - STRIPE_CONNECT_WEBHOOK_SECRET: For connected account events (checkout.*, payment_intent.*, charge.*)
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // In app/api/webhooks/stripe/route.ts
|
|
32
|
+
* export async function POST(request: Request) {
|
|
33
|
+
* const payload = await request.text()
|
|
34
|
+
* const signature = request.headers.get('stripe-signature')!
|
|
35
|
+
*
|
|
36
|
+
* const result = await handleStripeWebhook(payload, signature)
|
|
37
|
+
*
|
|
38
|
+
* return Response.json(result)
|
|
39
|
+
* }
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
async function handleStripeWebhook(payload, signature) {
|
|
43
|
+
const stripe = (0, client_1.getStripe)();
|
|
44
|
+
const webhookSecrets = (0, client_1.getAllWebhookSecrets)();
|
|
45
|
+
// Try to verify with each webhook secret
|
|
46
|
+
// This handles both account webhooks and connect webhooks
|
|
47
|
+
let event = null;
|
|
48
|
+
let lastError = null;
|
|
49
|
+
for (const secret of webhookSecrets) {
|
|
50
|
+
try {
|
|
51
|
+
event = stripe.webhooks.constructEvent(payload, signature, secret);
|
|
52
|
+
// Successfully verified with this secret
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
lastError = err instanceof Error ? err : new Error('Unknown error');
|
|
57
|
+
// Try next secret
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!event) {
|
|
62
|
+
const message = lastError?.message || 'Unknown signature error';
|
|
63
|
+
console.error('[Webhook] Signature verification failed with all secrets:', message);
|
|
64
|
+
return {
|
|
65
|
+
received: false,
|
|
66
|
+
error: `Webhook signature verification failed: ${message}`,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Log the event for debugging
|
|
70
|
+
console.log('[Webhook] Received event:', event.type, 'from account:', event.account || 'platform');
|
|
71
|
+
// Route to appropriate handler
|
|
72
|
+
try {
|
|
73
|
+
const result = await routeWebhookEvent(event);
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
const message = err instanceof Error ? err.message : 'Unknown error';
|
|
78
|
+
console.error('[Webhook] Error processing event:', event.type, message);
|
|
79
|
+
return {
|
|
80
|
+
received: true,
|
|
81
|
+
event: event.type,
|
|
82
|
+
error: message,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// =============================================================================
|
|
87
|
+
// Event Routing
|
|
88
|
+
// =============================================================================
|
|
89
|
+
/**
|
|
90
|
+
* Route webhook event to the appropriate handler.
|
|
91
|
+
*/
|
|
92
|
+
async function routeWebhookEvent(event) {
|
|
93
|
+
switch (event.type) {
|
|
94
|
+
// Checkout Events
|
|
95
|
+
case 'checkout.session.completed':
|
|
96
|
+
return handleCheckoutSessionCompleted(event.data.object);
|
|
97
|
+
case 'checkout.session.expired':
|
|
98
|
+
return handleCheckoutSessionExpired(event.data.object);
|
|
99
|
+
// Payment Events
|
|
100
|
+
case 'payment_intent.succeeded':
|
|
101
|
+
return handlePaymentIntentSucceeded(event.data.object);
|
|
102
|
+
case 'payment_intent.payment_failed':
|
|
103
|
+
return handlePaymentIntentFailed(event.data.object);
|
|
104
|
+
// Refund Events
|
|
105
|
+
case 'charge.refunded':
|
|
106
|
+
return handleChargeRefunded(event.data.object);
|
|
107
|
+
// Account Events (for monitoring)
|
|
108
|
+
case 'account.updated':
|
|
109
|
+
return handleAccountUpdated(event.data.object);
|
|
110
|
+
// Unhandled events - acknowledge receipt
|
|
111
|
+
default:
|
|
112
|
+
console.log('[Webhook] Unhandled event type:', event.type);
|
|
113
|
+
return { received: true, event: event.type };
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// =============================================================================
|
|
117
|
+
// Checkout Event Handlers
|
|
118
|
+
// =============================================================================
|
|
119
|
+
/**
|
|
120
|
+
* Handle successful checkout session completion.
|
|
121
|
+
* This is the primary event for creating orders.
|
|
122
|
+
*/
|
|
123
|
+
async function handleCheckoutSessionCompleted(session) {
|
|
124
|
+
console.log('[Webhook] Checkout completed:', session.id);
|
|
125
|
+
// Only process completed payment sessions
|
|
126
|
+
if (session.payment_status !== 'paid') {
|
|
127
|
+
console.log('[Webhook] Skipping - payment status:', session.payment_status);
|
|
128
|
+
return { received: true, event: 'checkout.session.completed' };
|
|
129
|
+
}
|
|
130
|
+
// Extract order parameters from session
|
|
131
|
+
const orderParams = (0, order_service_1.extractOrderParamsFromSession)(session);
|
|
132
|
+
// Create the order
|
|
133
|
+
const { orderId, isNew } = await (0, order_service_1.createOrderFromCheckout)(orderParams);
|
|
134
|
+
console.log('[Webhook] Order', isNew ? 'created' : 'already exists', orderId);
|
|
135
|
+
// Send order confirmation email (fire-and-forget, don't block webhook response)
|
|
136
|
+
if (isNew && orderParams.email) {
|
|
137
|
+
sendOrderConfirmationEmail(orderId, orderParams, session);
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
received: true,
|
|
141
|
+
event: 'checkout.session.completed',
|
|
142
|
+
orderId,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Handle expired checkout session.
|
|
147
|
+
* Used for cleanup and analytics.
|
|
148
|
+
*/
|
|
149
|
+
async function handleCheckoutSessionExpired(session) {
|
|
150
|
+
console.log('[Webhook] Checkout expired:', session.id);
|
|
151
|
+
// Could be used for:
|
|
152
|
+
// - Cart abandonment tracking
|
|
153
|
+
// - Sending recovery emails
|
|
154
|
+
// - Analytics
|
|
155
|
+
return { received: true, event: 'checkout.session.expired' };
|
|
156
|
+
}
|
|
157
|
+
// =============================================================================
|
|
158
|
+
// Payment Event Handlers
|
|
159
|
+
// =============================================================================
|
|
160
|
+
/**
|
|
161
|
+
* Handle successful payment intent.
|
|
162
|
+
* This is a backup to checkout.session.completed.
|
|
163
|
+
*/
|
|
164
|
+
async function handlePaymentIntentSucceeded(paymentIntent) {
|
|
165
|
+
console.log('[Webhook] Payment succeeded:', paymentIntent.id);
|
|
166
|
+
// Payment intent success is already handled by checkout.session.completed
|
|
167
|
+
// This is here as a backup and for logging
|
|
168
|
+
return { received: true, event: 'payment_intent.succeeded' };
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Handle failed payment intent.
|
|
172
|
+
* Used for logging and potential notification.
|
|
173
|
+
*/
|
|
174
|
+
async function handlePaymentIntentFailed(paymentIntent) {
|
|
175
|
+
console.log('[Webhook] Payment failed:', paymentIntent.id, paymentIntent.last_payment_error?.message);
|
|
176
|
+
// Could be used for:
|
|
177
|
+
// - Alerting store owner
|
|
178
|
+
// - Customer notification
|
|
179
|
+
// - Analytics
|
|
180
|
+
return { received: true, event: 'payment_intent.payment_failed' };
|
|
181
|
+
}
|
|
182
|
+
// =============================================================================
|
|
183
|
+
// Refund Event Handlers
|
|
184
|
+
// =============================================================================
|
|
185
|
+
/**
|
|
186
|
+
* Handle charge refund.
|
|
187
|
+
* Updates order status when a refund is processed.
|
|
188
|
+
*/
|
|
189
|
+
async function handleChargeRefunded(charge) {
|
|
190
|
+
console.log('[Webhook] Charge refunded:', charge.id);
|
|
191
|
+
const paymentIntentId = typeof charge.payment_intent === 'string'
|
|
192
|
+
? charge.payment_intent
|
|
193
|
+
: charge.payment_intent?.id;
|
|
194
|
+
if (paymentIntentId) {
|
|
195
|
+
await (0, order_service_1.handleRefund)(paymentIntentId, charge.amount_refunded, charge.amount);
|
|
196
|
+
}
|
|
197
|
+
return { received: true, event: 'charge.refunded' };
|
|
198
|
+
}
|
|
199
|
+
// =============================================================================
|
|
200
|
+
// Account Event Handlers
|
|
201
|
+
// =============================================================================
|
|
202
|
+
/**
|
|
203
|
+
* Handle connected account updates.
|
|
204
|
+
* Used to monitor account status.
|
|
205
|
+
*/
|
|
206
|
+
async function handleAccountUpdated(account) {
|
|
207
|
+
console.log('[Webhook] Account updated:', account.id);
|
|
208
|
+
console.log(' - Charges enabled:', account.charges_enabled);
|
|
209
|
+
console.log(' - Payouts enabled:', account.payouts_enabled);
|
|
210
|
+
console.log(' - Details submitted:', account.details_submitted);
|
|
211
|
+
// Could be used for:
|
|
212
|
+
// - Updating store status when account is verified
|
|
213
|
+
// - Notifying platform when account has issues
|
|
214
|
+
// - Blocking checkout if account is disabled
|
|
215
|
+
return { received: true, event: 'account.updated' };
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Send order confirmation email after checkout completion.
|
|
219
|
+
* This is fire-and-forget - errors are logged but don't block the webhook.
|
|
220
|
+
*/
|
|
221
|
+
function sendOrderConfirmationEmail(orderId, params, session) {
|
|
222
|
+
// Extract customer name from session or email
|
|
223
|
+
const customerName = session.customer_details?.name ||
|
|
224
|
+
params.email.split('@')[0] ||
|
|
225
|
+
'Customer';
|
|
226
|
+
// Convert order items to email format
|
|
227
|
+
const items = params.items.map((item) => ({
|
|
228
|
+
name: item.name,
|
|
229
|
+
quantity: item.quantity,
|
|
230
|
+
price: (0, emails_1.formatPrice)(item.price), // Convert cents to formatted price
|
|
231
|
+
imageUrl: item.image, // Note: CheckoutLineItem uses 'image' not 'imageUrl'
|
|
232
|
+
}));
|
|
233
|
+
// Convert shipping address to email format
|
|
234
|
+
const shippingAddress = {
|
|
235
|
+
name: session.customer_details?.name || customerName,
|
|
236
|
+
line1: params.shippingAddress.line1,
|
|
237
|
+
line2: params.shippingAddress.line2,
|
|
238
|
+
city: params.shippingAddress.city,
|
|
239
|
+
state: params.shippingAddress.state,
|
|
240
|
+
postalCode: params.shippingAddress.postalCode,
|
|
241
|
+
country: params.shippingAddress.country,
|
|
242
|
+
};
|
|
243
|
+
// Build order tracking URL (store can customize this)
|
|
244
|
+
const storeUrl = process.env.NEXT_PUBLIC_APP_URL || '';
|
|
245
|
+
const orderTrackingUrl = `${storeUrl}/account/orders/${orderId}`;
|
|
246
|
+
(0, emails_1.sendOrderConfirmationAsync)({
|
|
247
|
+
to: params.email,
|
|
248
|
+
customerName,
|
|
249
|
+
orderNumber: (0, emails_1.formatOrderNumber)(orderId),
|
|
250
|
+
orderDate: (0, emails_1.formatDate)(new Date()),
|
|
251
|
+
paymentStatus: 'Paid',
|
|
252
|
+
items,
|
|
253
|
+
subtotal: (0, emails_1.formatPrice)(params.subtotal),
|
|
254
|
+
shippingCost: params.shipping > 0 ? (0, emails_1.formatPrice)(params.shipping) : 'Free',
|
|
255
|
+
tax: (0, emails_1.formatPrice)(params.tax),
|
|
256
|
+
total: (0, emails_1.formatPrice)(params.total),
|
|
257
|
+
shippingAddress,
|
|
258
|
+
orderTrackingUrl,
|
|
259
|
+
});
|
|
260
|
+
console.log('[Webhook] Order confirmation email queued for:', params.email);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Send refund processed email.
|
|
264
|
+
* This is fire-and-forget - errors are logged but don't block the webhook.
|
|
265
|
+
*/
|
|
266
|
+
function sendRefundEmail(email, customerName, orderNumber, refundAmount, paymentMethod) {
|
|
267
|
+
(0, emails_1.sendRefundProcessedAsync)({
|
|
268
|
+
to: email,
|
|
269
|
+
customerName,
|
|
270
|
+
orderNumber: (0, emails_1.formatOrderNumber)(orderNumber),
|
|
271
|
+
refundAmount: (0, emails_1.formatPrice)(refundAmount),
|
|
272
|
+
refundDate: (0, emails_1.formatDate)(new Date()),
|
|
273
|
+
paymentMethod,
|
|
274
|
+
estimatedArrival: '5-10 business days',
|
|
275
|
+
businessDays: '5-10',
|
|
276
|
+
});
|
|
277
|
+
console.log('[Webhook] Refund email queued for:', email);
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=handle-webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handle-webhook.js","sourceRoot":"","sources":["../../../src/checkout/server/handle-webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server
|
|
3
|
+
*
|
|
4
|
+
* Server-side checkout functions
|
|
5
|
+
*/
|
|
6
|
+
export { createCheckoutSession, getCheckoutSession, deserializeItemsFromMetadata, } from './create-checkout-session';
|
|
7
|
+
export type { CreateCheckoutSessionOptions } from './create-checkout-session';
|
|
8
|
+
export { handleStripeWebhook } from './handle-webhook';
|
|
9
|
+
export { createOrderFromCheckout, extractOrderParamsFromSession, handleRefund, } from './order-service';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,2BAA2B,CAAA;AAElC,YAAY,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAA;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AAEtD,OAAO,EACL,uBAAuB,EACvB,6BAA6B,EAC7B,YAAY,GACb,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @rovela/sdk/checkout/server
|
|
4
|
+
*
|
|
5
|
+
* Server-side checkout functions
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.handleRefund = exports.extractOrderParamsFromSession = exports.createOrderFromCheckout = exports.handleStripeWebhook = exports.deserializeItemsFromMetadata = exports.getCheckoutSession = exports.createCheckoutSession = void 0;
|
|
9
|
+
var create_checkout_session_1 = require("./create-checkout-session");
|
|
10
|
+
Object.defineProperty(exports, "createCheckoutSession", { enumerable: true, get: function () { return create_checkout_session_1.createCheckoutSession; } });
|
|
11
|
+
Object.defineProperty(exports, "getCheckoutSession", { enumerable: true, get: function () { return create_checkout_session_1.getCheckoutSession; } });
|
|
12
|
+
Object.defineProperty(exports, "deserializeItemsFromMetadata", { enumerable: true, get: function () { return create_checkout_session_1.deserializeItemsFromMetadata; } });
|
|
13
|
+
var handle_webhook_1 = require("./handle-webhook");
|
|
14
|
+
Object.defineProperty(exports, "handleStripeWebhook", { enumerable: true, get: function () { return handle_webhook_1.handleStripeWebhook; } });
|
|
15
|
+
var order_service_1 = require("./order-service");
|
|
16
|
+
Object.defineProperty(exports, "createOrderFromCheckout", { enumerable: true, get: function () { return order_service_1.createOrderFromCheckout; } });
|
|
17
|
+
Object.defineProperty(exports, "extractOrderParamsFromSession", { enumerable: true, get: function () { return order_service_1.extractOrderParamsFromSession; } });
|
|
18
|
+
Object.defineProperty(exports, "handleRefund", { enumerable: true, get: function () { return order_service_1.handleRefund; } });
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/checkout/server/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,qEAIkC;AAHhC,gIAAA,qBAAqB,OAAA;AACrB,6HAAA,kBAAkB,OAAA;AAClB,uIAAA,4BAA4B,OAAA;AAK9B,mDAAsD;AAA7C,qHAAA,mBAAmB,OAAA;AAE5B,iDAIwB;AAHtB,wHAAA,uBAAuB,OAAA;AACvB,8HAAA,6BAA6B,OAAA;AAC7B,6GAAA,YAAY,OAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @rovela/sdk/checkout/server/order-service
|
|
3
|
+
*
|
|
4
|
+
* Order creation and management from Stripe Checkout sessions.
|
|
5
|
+
*/
|
|
6
|
+
import type Stripe from 'stripe';
|
|
7
|
+
import type { CreateOrderParams } from '../types';
|
|
8
|
+
/**
|
|
9
|
+
* Create an order from a completed Stripe Checkout session.
|
|
10
|
+
*
|
|
11
|
+
* This function:
|
|
12
|
+
* 1. Checks for existing order (idempotency)
|
|
13
|
+
* 2. Creates the order record
|
|
14
|
+
* 3. Creates order items
|
|
15
|
+
* 4. Returns the created order
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // In webhook handler
|
|
20
|
+
* const order = await createOrderFromCheckout({
|
|
21
|
+
* sessionId: session.id,
|
|
22
|
+
* email: session.customer_details?.email || '',
|
|
23
|
+
* items: JSON.parse(session.metadata?.items || '[]'),
|
|
24
|
+
* subtotal: session.amount_subtotal || 0,
|
|
25
|
+
* // ... other params
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function createOrderFromCheckout(params: CreateOrderParams): Promise<{
|
|
30
|
+
orderId: string;
|
|
31
|
+
isNew: boolean;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* Extract order parameters from a Stripe Checkout Session.
|
|
35
|
+
* Used to convert Stripe's session object to our CreateOrderParams.
|
|
36
|
+
*/
|
|
37
|
+
export declare function extractOrderParamsFromSession(session: Stripe.Checkout.Session): CreateOrderParams;
|
|
38
|
+
/**
|
|
39
|
+
* Handle a refund event from Stripe.
|
|
40
|
+
* Updates the order status to 'refunded'.
|
|
41
|
+
*/
|
|
42
|
+
export declare function handleRefund(paymentIntentId: string, refundAmount: number, totalAmount: number): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=order-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-service.d.ts","sourceRoot":"","sources":["../../../src/checkout/server/order-service.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAShC,OAAO,KAAK,EAAE,iBAAiB,EAAoB,MAAM,UAAU,CAAA;AAOnE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC,CA8C9C;AAMD;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,GAC/B,iBAAiB,CA2CnB;AAMD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,eAAe,EAAE,MAAM,EACvB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|