@rovela-ai/sdk 0.1.18 → 0.1.19
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.js +5 -11
- package/dist/admin/api/auth.js.map +1 -1
- package/dist/admin/api/categories.js +43 -50
- package/dist/admin/api/categories.js.map +1 -1
- package/dist/admin/api/check.js +6 -9
- package/dist/admin/api/check.js.map +1 -1
- package/dist/admin/api/customers.js +17 -21
- package/dist/admin/api/customers.js.map +1 -1
- package/dist/admin/api/index.js +10 -38
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/orders.js +30 -35
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/products.js +56 -66
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/api/refund.js +26 -29
- package/dist/admin/api/refund.js.map +1 -1
- package/dist/admin/api/settings.js +17 -21
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/setup.js +17 -20
- package/dist/admin/api/setup.js.map +1 -1
- package/dist/admin/api/stats.js +14 -17
- package/dist/admin/api/stats.js.map +1 -1
- package/dist/admin/components/AdminGuard.js +13 -17
- package/dist/admin/components/AdminGuard.js.map +1 -1
- package/dist/admin/components/AdminHeader.js +8 -11
- package/dist/admin/components/AdminHeader.js.map +1 -1
- package/dist/admin/components/AdminLayout.js +5 -8
- package/dist/admin/components/AdminLayout.js.map +1 -1
- package/dist/admin/components/AdminLoginForm.js +11 -14
- package/dist/admin/components/AdminLoginForm.js.map +1 -1
- package/dist/admin/components/AdminNav.js +11 -14
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/AdminSetupForm.js +11 -14
- package/dist/admin/components/AdminSetupForm.js.map +1 -1
- package/dist/admin/components/InventoryEditor.js +16 -19
- package/dist/admin/components/InventoryEditor.js.map +1 -1
- package/dist/admin/components/LowStockAlert.js +6 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderDetails.js +15 -18
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.js +13 -16
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/ProductForm.js +17 -20
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/ProductTable.js +15 -18
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/RecentOrders.js +6 -9
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RefundDialog.js +12 -15
- package/dist/admin/components/RefundDialog.js.map +1 -1
- package/dist/admin/components/StatsCards.js +7 -10
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/StoreSettings.js +10 -13
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/index.js +16 -35
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/config.js +12 -54
- package/dist/admin/config.js.map +1 -1
- package/dist/admin/hooks/index.js +4 -11
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminAuth.js +9 -12
- package/dist/admin/hooks/useAdminAuth.js.map +1 -1
- package/dist/admin/hooks/useAdminOrders.js +11 -14
- package/dist/admin/hooks/useAdminOrders.js.map +1 -1
- package/dist/admin/hooks/useAdminProducts.js +13 -16
- package/dist/admin/hooks/useAdminProducts.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +11 -14
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/index.js +13 -66
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/server/admin-service.js +39 -83
- package/dist/admin/server/admin-service.js.map +1 -1
- package/dist/admin/server/index.js +3 -13
- package/dist/admin/server/index.js.map +1 -1
- package/dist/admin/types.js +1 -2
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/api/auth.js +6 -14
- package/dist/auth/api/auth.js.map +1 -1
- package/dist/auth/api/forgot-password.js +8 -11
- package/dist/auth/api/forgot-password.js.map +1 -1
- package/dist/auth/api/index.js +6 -18
- package/dist/auth/api/index.js.map +1 -1
- package/dist/auth/api/register.js +17 -20
- package/dist/auth/api/register.js.map +1 -1
- package/dist/auth/api/resend-verification.js +9 -12
- package/dist/auth/api/resend-verification.js.map +1 -1
- package/dist/auth/api/reset-password.js +18 -22
- package/dist/auth/api/reset-password.js.map +1 -1
- package/dist/auth/api/verify-email.js +14 -18
- package/dist/auth/api/verify-email.js.map +1 -1
- package/dist/auth/components/AuthGuard.js +13 -17
- package/dist/auth/components/AuthGuard.js.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.js +11 -14
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
- package/dist/auth/components/ResetPasswordForm.js +18 -21
- package/dist/auth/components/ResetPasswordForm.js.map +1 -1
- package/dist/auth/components/SignInForm.js +13 -16
- package/dist/auth/components/SignInForm.js.map +1 -1
- package/dist/auth/components/SignUpForm.js +15 -18
- package/dist/auth/components/SignUpForm.js.map +1 -1
- package/dist/auth/components/UserMenu.js +13 -16
- package/dist/auth/components/UserMenu.js.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.js +10 -13
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
- package/dist/auth/components/index.js +7 -18
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/config.js +9 -49
- package/dist/auth/config.js.map +1 -1
- package/dist/auth/hooks/index.js +1 -5
- package/dist/auth/hooks/index.js.map +1 -1
- package/dist/auth/hooks/useAuth.js +14 -17
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/dist/auth/index.js +15 -37
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server/customer-service.js +39 -83
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/auth/server/email-sender.js +11 -17
- package/dist/auth/server/email-sender.js.map +1 -1
- package/dist/auth/server/index.js +5 -36
- package/dist/auth/server/index.js.map +1 -1
- package/dist/auth/server/password-reset-service.js +30 -70
- package/dist/auth/server/password-reset-service.js.map +1 -1
- package/dist/auth/server/password.js +9 -18
- package/dist/auth/server/password.js.map +1 -1
- package/dist/auth/server/verification-service.js +35 -76
- package/dist/auth/server/verification-service.js.map +1 -1
- package/dist/auth/types.js +1 -2
- package/dist/auth/types.js.map +1 -1
- package/dist/cart/CartProvider.js +13 -17
- package/dist/cart/CartProvider.js.map +1 -1
- package/dist/cart/components/AddToCartButton.js +16 -19
- package/dist/cart/components/AddToCartButton.js.map +1 -1
- package/dist/cart/components/CartDrawer.js +17 -23
- package/dist/cart/components/CartDrawer.js.map +1 -1
- package/dist/cart/components/CartIcon.js +9 -12
- package/dist/cart/components/CartIcon.js.map +1 -1
- package/dist/cart/components/CartItem.js +7 -13
- package/dist/cart/components/CartItem.js.map +1 -1
- package/dist/cart/components/CartSummary.js +12 -15
- package/dist/cart/components/CartSummary.js.map +1 -1
- package/dist/cart/components/QuantitySelector.js +9 -12
- package/dist/cart/components/QuantitySelector.js.map +1 -1
- package/dist/cart/components/index.js +6 -15
- package/dist/cart/components/index.js.map +1 -1
- package/dist/cart/index.js +3 -17
- package/dist/cart/index.js.map +1 -1
- package/dist/cart/store.js +8 -13
- package/dist/cart/store.js.map +1 -1
- package/dist/checkout/api/checkout.js +12 -15
- package/dist/checkout/api/checkout.js.map +1 -1
- package/dist/checkout/api/index.js +2 -7
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/webhook.js +8 -11
- package/dist/checkout/api/webhook.js.map +1 -1
- package/dist/checkout/components/CheckoutButton.js +8 -11
- package/dist/checkout/components/CheckoutButton.js.map +1 -1
- package/dist/checkout/components/CheckoutSuccess.js +11 -14
- package/dist/checkout/components/CheckoutSuccess.js.map +1 -1
- package/dist/checkout/components/OrderSummary.js +8 -11
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/components/ShippingForm.js +14 -17
- package/dist/checkout/components/ShippingForm.js.map +1 -1
- package/dist/checkout/components/index.js +4 -11
- package/dist/checkout/components/index.js.map +1 -1
- package/dist/checkout/hooks/index.js +1 -6
- package/dist/checkout/hooks/index.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +10 -19
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/index.js +7 -28
- package/dist/checkout/index.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +11 -16
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +21 -24
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/index.js +3 -13
- package/dist/checkout/server/index.js.map +1 -1
- package/dist/checkout/server/order-service.js +11 -16
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/stripe/client.js +13 -29
- package/dist/checkout/stripe/client.js.map +1 -1
- package/dist/checkout/stripe/index.js +1 -15
- package/dist/checkout/stripe/index.js.map +1 -1
- package/dist/checkout/types.js +1 -2
- package/dist/checkout/types.js.map +1 -1
- package/dist/core/config.js +12 -57
- package/dist/core/config.js.map +1 -1
- package/dist/core/db/client.js +16 -62
- package/dist/core/db/client.js.map +1 -1
- package/dist/core/db/index.js +14 -93
- package/dist/core/db/index.js.map +1 -1
- package/dist/core/db/queries.d.ts +6 -6
- package/dist/core/db/queries.js +207 -284
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.js +179 -182
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index.js +12 -42
- package/dist/core/index.js.map +1 -1
- package/dist/core/server/index.js +16 -68
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils.js +26 -51
- package/dist/core/utils.js.map +1 -1
- package/dist/emails/config.js +13 -21
- package/dist/emails/config.js.map +1 -1
- package/dist/emails/index.js +10 -72
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/send/auth.js +26 -34
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/index.js +2 -21
- package/dist/emails/send/index.js.map +1 -1
- package/dist/emails/send/orders.js +38 -50
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.js +7 -12
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/templates/base.js +37 -53
- package/dist/emails/templates/base.js.map +1 -1
- package/dist/emails/templates/email-verification.js +12 -16
- package/dist/emails/templates/email-verification.js.map +1 -1
- package/dist/emails/templates/index.js +9 -43
- package/dist/emails/templates/index.js.map +1 -1
- package/dist/emails/templates/order-cancelled.js +18 -22
- package/dist/emails/templates/order-cancelled.js.map +1 -1
- package/dist/emails/templates/order-confirmation.js +30 -34
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/templates/order-delivered.js +20 -24
- package/dist/emails/templates/order-delivered.js.map +1 -1
- package/dist/emails/templates/order-shipped.js +19 -23
- package/dist/emails/templates/order-shipped.js.map +1 -1
- package/dist/emails/templates/password-reset.js +12 -16
- package/dist/emails/templates/password-reset.js.map +1 -1
- package/dist/emails/templates/refund-processed.js +17 -21
- package/dist/emails/templates/refund-processed.js.map +1 -1
- package/dist/emails/templates/welcome.js +11 -15
- package/dist/emails/templates/welcome.js.map +1 -1
- package/dist/emails/types.js +1 -2
- package/dist/emails/types.js.map +1 -1
- package/dist/emails/utils.js +9 -20
- package/dist/emails/utils.js.map +1 -1
- package/dist/index.js +24 -176
- package/dist/index.js.map +1 -1
- package/dist/products/api/categories.js +7 -10
- package/dist/products/api/categories.js.map +1 -1
- package/dist/products/api/index.js +3 -9
- package/dist/products/api/index.js.map +1 -1
- package/dist/products/api/product.js +10 -13
- package/dist/products/api/product.js.map +1 -1
- package/dist/products/api/products.js +8 -11
- package/dist/products/api/products.js.map +1 -1
- package/dist/products/components/CategoryNav.js +20 -26
- package/dist/products/components/CategoryNav.js.map +1 -1
- package/dist/products/components/ProductBreadcrumb.js +7 -13
- package/dist/products/components/ProductBreadcrumb.js.map +1 -1
- package/dist/products/components/ProductCard.js +6 -12
- package/dist/products/components/ProductCard.js.map +1 -1
- package/dist/products/components/ProductDetails.js +14 -17
- package/dist/products/components/ProductDetails.js.map +1 -1
- package/dist/products/components/ProductFilters.js +15 -18
- package/dist/products/components/ProductFilters.js.map +1 -1
- package/dist/products/components/ProductGallery.js +17 -23
- package/dist/products/components/ProductGallery.js.map +1 -1
- package/dist/products/components/ProductGrid.js +10 -13
- package/dist/products/components/ProductGrid.js.map +1 -1
- package/dist/products/components/ProductSearch.js +14 -17
- package/dist/products/components/ProductSearch.js.map +1 -1
- package/dist/products/components/ProductSort.js +8 -11
- package/dist/products/components/ProductSort.js.map +1 -1
- package/dist/products/components/VariantSelector.js +16 -19
- package/dist/products/components/VariantSelector.js.map +1 -1
- package/dist/products/components/index.js +10 -23
- package/dist/products/components/index.js.map +1 -1
- package/dist/products/hooks/index.js +4 -11
- package/dist/products/hooks/index.js.map +1 -1
- package/dist/products/hooks/useCategories.js +12 -15
- package/dist/products/hooks/useCategories.js.map +1 -1
- package/dist/products/hooks/useProduct.js +9 -12
- package/dist/products/hooks/useProduct.js.map +1 -1
- package/dist/products/hooks/useProductAttributes.js +10 -13
- package/dist/products/hooks/useProductAttributes.js.map +1 -1
- package/dist/products/hooks/useProducts.js +15 -18
- package/dist/products/hooks/useProducts.js.map +1 -1
- package/dist/products/index.js +6 -23
- package/dist/products/index.js.map +1 -1
- package/dist/theme/ThemeProvider.js +12 -14
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/colors.js +3 -8
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/defaults.js +27 -30
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/fonts.js +12 -18
- package/dist/theme/fonts.js.map +1 -1
- package/dist/theme/generator.js +63 -69
- package/dist/theme/generator.js.map +1 -1
- package/dist/theme/hooks.js +11 -16
- package/dist/theme/hooks.js.map +1 -1
- package/dist/theme/index.js +6 -42
- package/dist/theme/index.js.map +1 -1
- package/package.json +31 -30
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"customer-service.js","sourceRoot":"","sources":["../../../src/auth/server/customer-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"customer-service.js","sourceRoot":"","sources":["../../../src/auth/server/customer-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAuBzD,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,QAAgB,EAChB,IAAa;IAEb,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,gBAAgB;IAChB,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;IAEjD,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;aACxB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;aACxB,MAAM,CAAC;YACN,QAAQ;YACR,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;YACjC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI;YAC1B,YAAY;YACZ,aAAa,EAAE,IAAI,EAAE,yBAAyB;SAC/C,CAAC;aACD,SAAS,EAAE,CAAA;QAEd,OAAO,EAAE,QAAQ,EAAE,CAAA;IACrB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,wCAAwC;QACxC,MAAM,GAAG,GAAG,KAAqD,CAAA;QACjE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YACxD,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,QAAgB,EAChB,mBAAmB,GAAG,IAAI;IAE1B,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,yBAAyB;IACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SACtB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CACvD,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAA;IAEX,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B;YAClC,IAAI,EAAE,qBAAqB;SAC5B,CAAA;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,eAAe,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAA;IAC7E,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,2BAA2B;YAClC,IAAI,EAAE,qBAAqB;SAC5B,CAAA;IACH,CAAC;IAED,2BAA2B;IAC3B,IAAI,mBAAmB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACnD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,4CAA4C;YACnD,IAAI,EAAE,oBAAoB;SAC3B,CAAA;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AACpC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB;IAElB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,CAAC;QACN,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE;QACvB,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK;QAC7B,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI;QAC3B,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;KAC9C,CAAC;SACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SACtB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CACpC,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAA;IAEX,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa;KACxC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAa;IAEb,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SACtB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CACvD,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAA;IAEX,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAkB;IAElB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,EAAE;SACR,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SACtB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CACpC,CACF;SACA,KAAK,CAAC,CAAC,CAAC,CAAA;IAEX,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAAkB,EAClB,IAAuC;IAEvC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,UAAU,GAAgC,EAAE,CAAA;IAElD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,CAAA;IAC7C,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;IACpD,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzC,6CAA6C;QAC7C,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;SACxB,GAAG,CAAC,UAAU,CAAC;SACf,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CACpC,CACF;SACA,SAAS,EAAE,CAAA;IAEd,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,UAAkB,EAClB,WAAmB;IAEnB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,CAAA;IAEpD,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;SACxB,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC;SACrB,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CACpC,CACF,CAAA;AACL,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACxD,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAE9B,MAAM,EAAE;SACL,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;SACxB,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;SAClC,KAAK,CACJ,GAAG,CACD,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,EACvC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CACpC,CACF,CAAA;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAa;IAC7C,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAA;IACjD,OAAO,CAAC,CAAC,QAAQ,CAAA;AACnB,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server/email-sender
|
|
4
3
|
*
|
|
@@ -10,12 +9,7 @@
|
|
|
10
9
|
* import { sendVerificationEmail, sendWelcomeEmail } from '@rovela/sdk/emails'
|
|
11
10
|
* ```
|
|
12
11
|
*/
|
|
13
|
-
|
|
14
|
-
exports.sendVerificationEmail = sendVerificationEmail;
|
|
15
|
-
exports.sendPasswordResetEmail = sendPasswordResetEmail;
|
|
16
|
-
exports.sendWelcomeEmail = sendWelcomeEmail;
|
|
17
|
-
exports.getStoreName = getStoreName;
|
|
18
|
-
const emails_1 = require("../../emails");
|
|
12
|
+
import { sendVerificationEmail as sendVerification, sendPasswordResetEmail as sendPasswordReset, sendWelcomeEmail as sendWelcome, getStoreName as getStoreNameFromEmails, getStoreUrl, } from '../../emails';
|
|
19
13
|
// =============================================================================
|
|
20
14
|
// Re-exported Functions (Backward Compatible API)
|
|
21
15
|
// =============================================================================
|
|
@@ -33,10 +27,10 @@ const emails_1 = require("../../emails");
|
|
|
33
27
|
*
|
|
34
28
|
* @deprecated Use `sendVerificationEmail` from '@rovela/sdk/emails' for more options
|
|
35
29
|
*/
|
|
36
|
-
async function sendVerificationEmail(email, token, storeName) {
|
|
37
|
-
const storeUrl =
|
|
30
|
+
export async function sendVerificationEmail(email, token, storeName) {
|
|
31
|
+
const storeUrl = getStoreUrl();
|
|
38
32
|
const verificationLink = `${storeUrl}/auth/verify-email?token=${token}`;
|
|
39
|
-
const result = await (
|
|
33
|
+
const result = await sendVerification({
|
|
40
34
|
to: email,
|
|
41
35
|
customerName: email.split('@')[0], // Fallback to email prefix
|
|
42
36
|
verificationLink,
|
|
@@ -61,10 +55,10 @@ async function sendVerificationEmail(email, token, storeName) {
|
|
|
61
55
|
*
|
|
62
56
|
* @deprecated Use `sendPasswordResetEmail` from '@rovela/sdk/emails' for more options
|
|
63
57
|
*/
|
|
64
|
-
async function sendPasswordResetEmail(email, token, storeName) {
|
|
65
|
-
const storeUrl =
|
|
58
|
+
export async function sendPasswordResetEmail(email, token, storeName) {
|
|
59
|
+
const storeUrl = getStoreUrl();
|
|
66
60
|
const resetLink = `${storeUrl}/auth/reset-password?token=${token}`;
|
|
67
|
-
const result = await (
|
|
61
|
+
const result = await sendPasswordReset({
|
|
68
62
|
to: email,
|
|
69
63
|
customerName: email.split('@')[0], // Fallback to email prefix
|
|
70
64
|
resetLink,
|
|
@@ -89,9 +83,9 @@ async function sendPasswordResetEmail(email, token, storeName) {
|
|
|
89
83
|
*
|
|
90
84
|
* @deprecated Use `sendWelcomeEmail` from '@rovela/sdk/emails' for more options
|
|
91
85
|
*/
|
|
92
|
-
async function sendWelcomeEmail(email, name, storeName) {
|
|
86
|
+
export async function sendWelcomeEmail(email, name, storeName) {
|
|
93
87
|
const customerName = name || 'there';
|
|
94
|
-
const result = await (
|
|
88
|
+
const result = await sendWelcome({
|
|
95
89
|
to: email,
|
|
96
90
|
customerName,
|
|
97
91
|
});
|
|
@@ -106,7 +100,7 @@ async function sendWelcomeEmail(email, name, storeName) {
|
|
|
106
100
|
*
|
|
107
101
|
* @deprecated Use `getStoreName` from '@rovela/sdk/emails'
|
|
108
102
|
*/
|
|
109
|
-
async function getStoreName() {
|
|
110
|
-
return (
|
|
103
|
+
export async function getStoreName() {
|
|
104
|
+
return getStoreNameFromEmails();
|
|
111
105
|
}
|
|
112
106
|
//# sourceMappingURL=email-sender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email-sender.js","sourceRoot":"","sources":["../../../src/auth/server/email-sender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"email-sender.js","sourceRoot":"","sources":["../../../src/auth/server/email-sender.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,qBAAqB,IAAI,gBAAgB,EACzC,sBAAsB,IAAI,iBAAiB,EAC3C,gBAAgB,IAAI,WAAW,EAC/B,YAAY,IAAI,sBAAsB,EACtC,WAAW,GACZ,MAAM,cAAc,CAAA;AAErB,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAAa,EACb,KAAa,EACb,SAAiB;IAEjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,gBAAgB,GAAG,GAAG,QAAQ,4BAA4B,KAAK,EAAE,CAAA;IAEvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC;QACpC,EAAE,EAAE,KAAK;QACT,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,2BAA2B;QAC9D,gBAAgB;QAChB,UAAU,EAAE,IAAI;KACjB,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,iDAAiD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAC9E,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAa,EACb,KAAa,EACb,SAAiB;IAEjB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,SAAS,GAAG,GAAG,QAAQ,8BAA8B,KAAK,EAAE,CAAA;IAElE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;QACrC,EAAE,EAAE,KAAK;QACT,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,2BAA2B;QAC9D,SAAS;QACT,UAAU,EAAE,GAAG;KAChB,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,mDAAmD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAChF,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAa,EACb,IAA+B,EAC/B,SAAiB;IAEjB,MAAM,YAAY,GAAG,IAAI,IAAI,OAAO,CAAA;IAEpC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,EAAE,EAAE,KAAK;QACT,YAAY;KACb,CAAC,CAAA;IAEF,sDAAsD;IACtD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,OAAO,sBAAsB,EAAE,CAAA;AACjC,CAAC"}
|
|
@@ -1,48 +1,17 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server
|
|
4
3
|
*
|
|
5
4
|
* Server-side authentication utilities.
|
|
6
5
|
* Import from '@rovela/sdk/auth/server' in server components and API routes.
|
|
7
6
|
*/
|
|
8
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
-
exports.cleanupExpiredResetTokens = exports.deletePasswordResetTokens = exports.resetPassword = exports.validateResetToken = exports.requestPasswordReset = exports.cleanupExpiredTokens = exports.isEmailVerified = exports.resendVerificationEmail = exports.deleteVerificationTokens = exports.verifyEmail = exports.createVerificationToken = exports.emailExists = exports.markEmailVerified = exports.updateCustomerPassword = exports.updateCustomer = exports.findCustomerById = exports.findCustomerByEmail = exports.findCustomerForSession = exports.authenticateCustomer = exports.createCustomer = exports.getStoreName = exports.sendWelcomeEmail = exports.sendPasswordResetEmail = exports.sendVerificationEmail = exports.MIN_PASSWORD_LENGTH = exports.validatePassword = exports.verifyPassword = exports.hashPassword = void 0;
|
|
10
7
|
// Password utilities
|
|
11
|
-
|
|
12
|
-
Object.defineProperty(exports, "hashPassword", { enumerable: true, get: function () { return password_1.hashPassword; } });
|
|
13
|
-
Object.defineProperty(exports, "verifyPassword", { enumerable: true, get: function () { return password_1.verifyPassword; } });
|
|
14
|
-
Object.defineProperty(exports, "validatePassword", { enumerable: true, get: function () { return password_1.validatePassword; } });
|
|
15
|
-
Object.defineProperty(exports, "MIN_PASSWORD_LENGTH", { enumerable: true, get: function () { return password_1.MIN_PASSWORD_LENGTH; } });
|
|
8
|
+
export { hashPassword, verifyPassword, validatePassword, MIN_PASSWORD_LENGTH, } from './password';
|
|
16
9
|
// Email utilities
|
|
17
|
-
|
|
18
|
-
Object.defineProperty(exports, "sendVerificationEmail", { enumerable: true, get: function () { return email_sender_1.sendVerificationEmail; } });
|
|
19
|
-
Object.defineProperty(exports, "sendPasswordResetEmail", { enumerable: true, get: function () { return email_sender_1.sendPasswordResetEmail; } });
|
|
20
|
-
Object.defineProperty(exports, "sendWelcomeEmail", { enumerable: true, get: function () { return email_sender_1.sendWelcomeEmail; } });
|
|
21
|
-
Object.defineProperty(exports, "getStoreName", { enumerable: true, get: function () { return email_sender_1.getStoreName; } });
|
|
10
|
+
export { sendVerificationEmail, sendPasswordResetEmail, sendWelcomeEmail, getStoreName, } from './email-sender';
|
|
22
11
|
// Customer service
|
|
23
|
-
|
|
24
|
-
Object.defineProperty(exports, "createCustomer", { enumerable: true, get: function () { return customer_service_1.createCustomer; } });
|
|
25
|
-
Object.defineProperty(exports, "authenticateCustomer", { enumerable: true, get: function () { return customer_service_1.authenticateCustomer; } });
|
|
26
|
-
Object.defineProperty(exports, "findCustomerForSession", { enumerable: true, get: function () { return customer_service_1.findCustomerForSession; } });
|
|
27
|
-
Object.defineProperty(exports, "findCustomerByEmail", { enumerable: true, get: function () { return customer_service_1.findCustomerByEmail; } });
|
|
28
|
-
Object.defineProperty(exports, "findCustomerById", { enumerable: true, get: function () { return customer_service_1.findCustomerById; } });
|
|
29
|
-
Object.defineProperty(exports, "updateCustomer", { enumerable: true, get: function () { return customer_service_1.updateCustomer; } });
|
|
30
|
-
Object.defineProperty(exports, "updateCustomerPassword", { enumerable: true, get: function () { return customer_service_1.updateCustomerPassword; } });
|
|
31
|
-
Object.defineProperty(exports, "markEmailVerified", { enumerable: true, get: function () { return customer_service_1.markEmailVerified; } });
|
|
32
|
-
Object.defineProperty(exports, "emailExists", { enumerable: true, get: function () { return customer_service_1.emailExists; } });
|
|
12
|
+
export { createCustomer, authenticateCustomer, findCustomerForSession, findCustomerByEmail, findCustomerById, updateCustomer, updateCustomerPassword, markEmailVerified, emailExists, } from './customer-service';
|
|
33
13
|
// Verification service
|
|
34
|
-
|
|
35
|
-
Object.defineProperty(exports, "createVerificationToken", { enumerable: true, get: function () { return verification_service_1.createVerificationToken; } });
|
|
36
|
-
Object.defineProperty(exports, "verifyEmail", { enumerable: true, get: function () { return verification_service_1.verifyEmail; } });
|
|
37
|
-
Object.defineProperty(exports, "deleteVerificationTokens", { enumerable: true, get: function () { return verification_service_1.deleteVerificationTokens; } });
|
|
38
|
-
Object.defineProperty(exports, "resendVerificationEmail", { enumerable: true, get: function () { return verification_service_1.resendVerificationEmail; } });
|
|
39
|
-
Object.defineProperty(exports, "isEmailVerified", { enumerable: true, get: function () { return verification_service_1.isEmailVerified; } });
|
|
40
|
-
Object.defineProperty(exports, "cleanupExpiredTokens", { enumerable: true, get: function () { return verification_service_1.cleanupExpiredTokens; } });
|
|
14
|
+
export { createVerificationToken, verifyEmail, deleteVerificationTokens, resendVerificationEmail, isEmailVerified, cleanupExpiredTokens, } from './verification-service';
|
|
41
15
|
// Password reset service
|
|
42
|
-
|
|
43
|
-
Object.defineProperty(exports, "requestPasswordReset", { enumerable: true, get: function () { return password_reset_service_1.requestPasswordReset; } });
|
|
44
|
-
Object.defineProperty(exports, "validateResetToken", { enumerable: true, get: function () { return password_reset_service_1.validateResetToken; } });
|
|
45
|
-
Object.defineProperty(exports, "resetPassword", { enumerable: true, get: function () { return password_reset_service_1.resetPassword; } });
|
|
46
|
-
Object.defineProperty(exports, "deletePasswordResetTokens", { enumerable: true, get: function () { return password_reset_service_1.deletePasswordResetTokens; } });
|
|
47
|
-
Object.defineProperty(exports, "cleanupExpiredResetTokens", { enumerable: true, get: function () { return password_reset_service_1.cleanupExpiredResetTokens; } });
|
|
16
|
+
export { requestPasswordReset, validateResetToken, resetPassword, deletePasswordResetTokens, cleanupExpiredResetTokens, } from './password-reset-service';
|
|
48
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/server/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qBAAqB;AACrB,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAEnB,kBAAkB;AAClB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,YAAY,GACb,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,GACZ,MAAM,oBAAoB,CAAA;AAO3B,uBAAuB;AACvB,OAAO,EACL,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,EACf,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAE/B,yBAAyB;AACzB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA"}
|
|
@@ -1,55 +1,15 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server/password-reset-service
|
|
4
3
|
*
|
|
5
4
|
* Password reset token management.
|
|
6
5
|
* Handles creating, validating, and using reset tokens.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
-
exports.requestPasswordReset = requestPasswordReset;
|
|
43
|
-
exports.validateResetToken = validateResetToken;
|
|
44
|
-
exports.resetPassword = resetPassword;
|
|
45
|
-
exports.deletePasswordResetTokens = deletePasswordResetTokens;
|
|
46
|
-
exports.cleanupExpiredResetTokens = cleanupExpiredResetTokens;
|
|
47
|
-
const drizzle_orm_1 = require("drizzle-orm");
|
|
48
|
-
const nanoid_1 = require("nanoid");
|
|
49
|
-
const client_1 = require("../../core/db/client");
|
|
50
|
-
const schema = __importStar(require("../../core/db/schema"));
|
|
51
|
-
const customer_service_1 = require("./customer-service");
|
|
52
|
-
const email_sender_1 = require("./email-sender");
|
|
7
|
+
import { eq, and, lt } from 'drizzle-orm';
|
|
8
|
+
import { nanoid } from 'nanoid';
|
|
9
|
+
import { getDb, getTenantId } from '../../core/db/client';
|
|
10
|
+
import * as schema from '../../core/db/schema';
|
|
11
|
+
import { findCustomerByEmail, updateCustomerPassword } from './customer-service';
|
|
12
|
+
import { sendPasswordResetEmail, getStoreName } from './email-sender';
|
|
53
13
|
// =============================================================================
|
|
54
14
|
// Constants
|
|
55
15
|
// =============================================================================
|
|
@@ -80,9 +40,9 @@ const TOKEN_LENGTH = 32;
|
|
|
80
40
|
* // Always show "If an account exists, we've sent a reset email"
|
|
81
41
|
* ```
|
|
82
42
|
*/
|
|
83
|
-
async function requestPasswordReset(email) {
|
|
43
|
+
export async function requestPasswordReset(email) {
|
|
84
44
|
// Find customer by email
|
|
85
|
-
const customer = await
|
|
45
|
+
const customer = await findCustomerByEmail(email);
|
|
86
46
|
if (!customer) {
|
|
87
47
|
// Don't reveal if email exists - return success anyway
|
|
88
48
|
return { success: true };
|
|
@@ -90,9 +50,9 @@ async function requestPasswordReset(email) {
|
|
|
90
50
|
// Delete any existing reset tokens for this customer
|
|
91
51
|
await deletePasswordResetTokens(customer.id);
|
|
92
52
|
// Generate new token
|
|
93
|
-
const db =
|
|
94
|
-
const tenantId =
|
|
95
|
-
const token =
|
|
53
|
+
const db = getDb();
|
|
54
|
+
const tenantId = getTenantId();
|
|
55
|
+
const token = nanoid(TOKEN_LENGTH);
|
|
96
56
|
const expires = new Date(Date.now() + TOKEN_EXPIRY_MS);
|
|
97
57
|
await db.insert(schema.customerPasswordResetTokens).values({
|
|
98
58
|
tenantId,
|
|
@@ -101,8 +61,8 @@ async function requestPasswordReset(email) {
|
|
|
101
61
|
expires,
|
|
102
62
|
});
|
|
103
63
|
// Send reset email (don't wait, but log errors)
|
|
104
|
-
const storeName = await
|
|
105
|
-
|
|
64
|
+
const storeName = await getStoreName();
|
|
65
|
+
sendPasswordResetEmail(email, token, storeName).catch((error) => {
|
|
106
66
|
console.error('[Auth Reset] Failed to send password reset email:', error);
|
|
107
67
|
});
|
|
108
68
|
return { success: true };
|
|
@@ -124,13 +84,13 @@ async function requestPasswordReset(email) {
|
|
|
124
84
|
* }
|
|
125
85
|
* ```
|
|
126
86
|
*/
|
|
127
|
-
async function validateResetToken(token) {
|
|
128
|
-
const db =
|
|
87
|
+
export async function validateResetToken(token) {
|
|
88
|
+
const db = getDb();
|
|
129
89
|
// Find the token (not tenant-scoped since we only have the token)
|
|
130
90
|
const [tokenRecord] = await db
|
|
131
91
|
.select()
|
|
132
92
|
.from(schema.customerPasswordResetTokens)
|
|
133
|
-
.where(
|
|
93
|
+
.where(eq(schema.customerPasswordResetTokens.token, token))
|
|
134
94
|
.limit(1);
|
|
135
95
|
if (!tokenRecord) {
|
|
136
96
|
return {
|
|
@@ -143,7 +103,7 @@ async function validateResetToken(token) {
|
|
|
143
103
|
// Clean up expired token
|
|
144
104
|
await db
|
|
145
105
|
.delete(schema.customerPasswordResetTokens)
|
|
146
|
-
.where(
|
|
106
|
+
.where(eq(schema.customerPasswordResetTokens.id, tokenRecord.id));
|
|
147
107
|
return {
|
|
148
108
|
valid: false,
|
|
149
109
|
error: 'Reset link has expired. Please request a new one.',
|
|
@@ -169,13 +129,13 @@ async function validateResetToken(token) {
|
|
|
169
129
|
* }
|
|
170
130
|
* ```
|
|
171
131
|
*/
|
|
172
|
-
async function resetPassword(token, newPassword) {
|
|
173
|
-
const db =
|
|
132
|
+
export async function resetPassword(token, newPassword) {
|
|
133
|
+
const db = getDb();
|
|
174
134
|
// Find the token
|
|
175
135
|
const [tokenRecord] = await db
|
|
176
136
|
.select()
|
|
177
137
|
.from(schema.customerPasswordResetTokens)
|
|
178
|
-
.where(
|
|
138
|
+
.where(eq(schema.customerPasswordResetTokens.token, token))
|
|
179
139
|
.limit(1);
|
|
180
140
|
if (!tokenRecord) {
|
|
181
141
|
return {
|
|
@@ -188,18 +148,18 @@ async function resetPassword(token, newPassword) {
|
|
|
188
148
|
// Clean up expired token
|
|
189
149
|
await db
|
|
190
150
|
.delete(schema.customerPasswordResetTokens)
|
|
191
|
-
.where(
|
|
151
|
+
.where(eq(schema.customerPasswordResetTokens.id, tokenRecord.id));
|
|
192
152
|
return {
|
|
193
153
|
success: false,
|
|
194
154
|
error: 'Reset link has expired. Please request a new one.',
|
|
195
155
|
};
|
|
196
156
|
}
|
|
197
157
|
// Update the customer's password
|
|
198
|
-
await
|
|
158
|
+
await updateCustomerPassword(tokenRecord.customerId, newPassword);
|
|
199
159
|
// Delete all reset tokens for this customer
|
|
200
160
|
await db
|
|
201
161
|
.delete(schema.customerPasswordResetTokens)
|
|
202
|
-
.where(
|
|
162
|
+
.where(eq(schema.customerPasswordResetTokens.customerId, tokenRecord.customerId));
|
|
203
163
|
return { success: true };
|
|
204
164
|
}
|
|
205
165
|
/**
|
|
@@ -212,12 +172,12 @@ async function resetPassword(token, newPassword) {
|
|
|
212
172
|
* await deletePasswordResetTokens(customerId)
|
|
213
173
|
* ```
|
|
214
174
|
*/
|
|
215
|
-
async function deletePasswordResetTokens(customerId) {
|
|
216
|
-
const db =
|
|
217
|
-
const tenantId =
|
|
175
|
+
export async function deletePasswordResetTokens(customerId) {
|
|
176
|
+
const db = getDb();
|
|
177
|
+
const tenantId = getTenantId();
|
|
218
178
|
await db
|
|
219
179
|
.delete(schema.customerPasswordResetTokens)
|
|
220
|
-
.where(
|
|
180
|
+
.where(and(eq(schema.customerPasswordResetTokens.tenantId, tenantId), eq(schema.customerPasswordResetTokens.customerId, customerId)));
|
|
221
181
|
}
|
|
222
182
|
/**
|
|
223
183
|
* Clean up expired password reset tokens.
|
|
@@ -225,11 +185,11 @@ async function deletePasswordResetTokens(customerId) {
|
|
|
225
185
|
*
|
|
226
186
|
* @returns Number of tokens deleted
|
|
227
187
|
*/
|
|
228
|
-
async function cleanupExpiredResetTokens() {
|
|
229
|
-
const db =
|
|
188
|
+
export async function cleanupExpiredResetTokens() {
|
|
189
|
+
const db = getDb();
|
|
230
190
|
const result = await db
|
|
231
191
|
.delete(schema.customerPasswordResetTokens)
|
|
232
|
-
.where(
|
|
192
|
+
.where(lt(schema.customerPasswordResetTokens.expires, new Date()))
|
|
233
193
|
.returning({ id: schema.customerPasswordResetTokens.id });
|
|
234
194
|
return result.length;
|
|
235
195
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset-service.js","sourceRoot":"","sources":["../../../src/auth/server/password-reset-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"password-reset-service.js","sourceRoot":"","sources":["../../../src/auth/server/password-reset-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/auth/server/password
|
|
4
3
|
*
|
|
5
4
|
* Password hashing and verification utilities.
|
|
6
5
|
* Uses bcryptjs with 12 salt rounds for security.
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.MIN_PASSWORD_LENGTH = void 0;
|
|
13
|
-
exports.hashPassword = hashPassword;
|
|
14
|
-
exports.verifyPassword = verifyPassword;
|
|
15
|
-
exports.validatePassword = validatePassword;
|
|
16
|
-
const bcryptjs_1 = __importDefault(require("bcryptjs"));
|
|
7
|
+
import bcrypt from 'bcryptjs';
|
|
17
8
|
// =============================================================================
|
|
18
9
|
// Constants
|
|
19
10
|
// =============================================================================
|
|
@@ -25,7 +16,7 @@ const SALT_ROUNDS = 12;
|
|
|
25
16
|
/**
|
|
26
17
|
* Minimum password length required.
|
|
27
18
|
*/
|
|
28
|
-
|
|
19
|
+
export const MIN_PASSWORD_LENGTH = 8;
|
|
29
20
|
// =============================================================================
|
|
30
21
|
// Password Hashing
|
|
31
22
|
// =============================================================================
|
|
@@ -41,8 +32,8 @@ exports.MIN_PASSWORD_LENGTH = 8;
|
|
|
41
32
|
* // Store hash in database
|
|
42
33
|
* ```
|
|
43
34
|
*/
|
|
44
|
-
async function hashPassword(password) {
|
|
45
|
-
return
|
|
35
|
+
export async function hashPassword(password) {
|
|
36
|
+
return bcrypt.hash(password, SALT_ROUNDS);
|
|
46
37
|
}
|
|
47
38
|
/**
|
|
48
39
|
* Verify a password against a hash.
|
|
@@ -59,8 +50,8 @@ async function hashPassword(password) {
|
|
|
59
50
|
* }
|
|
60
51
|
* ```
|
|
61
52
|
*/
|
|
62
|
-
async function verifyPassword(password, hashedPassword) {
|
|
63
|
-
return
|
|
53
|
+
export async function verifyPassword(password, hashedPassword) {
|
|
54
|
+
return bcrypt.compare(password, hashedPassword);
|
|
64
55
|
}
|
|
65
56
|
// =============================================================================
|
|
66
57
|
// Password Validation
|
|
@@ -79,14 +70,14 @@ async function verifyPassword(password, hashedPassword) {
|
|
|
79
70
|
* }
|
|
80
71
|
* ```
|
|
81
72
|
*/
|
|
82
|
-
function validatePassword(password) {
|
|
73
|
+
export function validatePassword(password) {
|
|
83
74
|
if (!password) {
|
|
84
75
|
return { valid: false, error: 'Password is required' };
|
|
85
76
|
}
|
|
86
|
-
if (password.length <
|
|
77
|
+
if (password.length < MIN_PASSWORD_LENGTH) {
|
|
87
78
|
return {
|
|
88
79
|
valid: false,
|
|
89
|
-
error: `Password must be at least ${
|
|
80
|
+
error: `Password must be at least ${MIN_PASSWORD_LENGTH} characters`,
|
|
90
81
|
};
|
|
91
82
|
}
|
|
92
83
|
return { valid: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../../src/auth/server/password.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"password.js","sourceRoot":"","sources":["../../../src/auth/server/password.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,UAAU,CAAA;AAE7B,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,WAAW,GAAG,EAAE,CAAA;AAEtB;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAEpC,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB;IACjD,OAAO,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,cAAsB;IAEtB,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAA;AACjD,CAAC;AAED,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAI/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAA;IACxD,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QAC1C,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,6BAA6B,mBAAmB,aAAa;SACrE,CAAA;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;AACxB,CAAC"}
|