@payloadcms/plugin-ecommerce 3.84.0-internal.d5d6e43 → 3.84.1

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.
Files changed (58) hide show
  1. package/dist/collections/orders/createOrdersCollection.d.ts +0 -6
  2. package/dist/collections/orders/createOrdersCollection.d.ts.map +1 -1
  3. package/dist/collections/orders/createOrdersCollection.js +1 -7
  4. package/dist/collections/orders/createOrdersCollection.js.map +1 -1
  5. package/dist/collections/transactions/createTransactionsCollection.d.ts +0 -6
  6. package/dist/collections/transactions/createTransactionsCollection.d.ts.map +1 -1
  7. package/dist/collections/transactions/createTransactionsCollection.js +1 -7
  8. package/dist/collections/transactions/createTransactionsCollection.js.map +1 -1
  9. package/dist/endpoints/confirmOrder.d.ts +1 -11
  10. package/dist/endpoints/confirmOrder.d.ts.map +1 -1
  11. package/dist/endpoints/confirmOrder.js +2 -74
  12. package/dist/endpoints/confirmOrder.js.map +1 -1
  13. package/dist/endpoints/initiatePayment.d.ts +1 -11
  14. package/dist/endpoints/initiatePayment.d.ts.map +1 -1
  15. package/dist/endpoints/initiatePayment.js +3 -74
  16. package/dist/endpoints/initiatePayment.js.map +1 -1
  17. package/dist/exports/types.d.ts +1 -1
  18. package/dist/exports/types.d.ts.map +1 -1
  19. package/dist/exports/types.js.map +1 -1
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +0 -11
  22. package/dist/index.js.map +1 -1
  23. package/dist/payments/adapters/stripe/index.d.ts +1 -2
  24. package/dist/payments/adapters/stripe/index.d.ts.map +1 -1
  25. package/dist/payments/adapters/stripe/index.js.map +1 -1
  26. package/dist/payments/adapters/stripe/initiatePayment.d.ts.map +1 -1
  27. package/dist/payments/adapters/stripe/initiatePayment.js +3 -6
  28. package/dist/payments/adapters/stripe/initiatePayment.js.map +1 -1
  29. package/dist/react/provider/index.d.ts +1 -0
  30. package/dist/react/provider/index.d.ts.map +1 -1
  31. package/dist/react/provider/index.js +9 -7
  32. package/dist/react/provider/index.js.map +1 -1
  33. package/dist/types/index.d.ts +6 -201
  34. package/dist/types/index.d.ts.map +1 -1
  35. package/dist/types/index.js.map +1 -1
  36. package/dist/ui/PriceCell/index.d.ts.map +1 -1
  37. package/dist/ui/PriceCell/index.js +9 -11
  38. package/dist/ui/PriceCell/index.js.map +1 -1
  39. package/dist/ui/PriceRowLabel/index.d.ts.map +1 -1
  40. package/dist/ui/PriceRowLabel/index.js +15 -15
  41. package/dist/ui/PriceRowLabel/index.js.map +1 -1
  42. package/dist/ui/utilities.d.ts +11 -0
  43. package/dist/ui/utilities.d.ts.map +1 -1
  44. package/dist/ui/utilities.js +14 -0
  45. package/dist/ui/utilities.js.map +1 -1
  46. package/dist/utilities/sanitizePluginConfig.spec.js +0 -35
  47. package/dist/utilities/sanitizePluginConfig.spec.js.map +1 -1
  48. package/package.json +7 -7
  49. package/dist/fields/summaryField.d.ts +0 -14
  50. package/dist/fields/summaryField.d.ts.map +0 -1
  51. package/dist/fields/summaryField.js +0 -83
  52. package/dist/fields/summaryField.js.map +0 -1
  53. package/dist/utilities/runPaymentHooks.d.ts +0 -28
  54. package/dist/utilities/runPaymentHooks.d.ts.map +0 -1
  55. package/dist/utilities/runPaymentHooks.js +0 -68
  56. package/dist/utilities/runPaymentHooks.js.map +0 -1
  57. package/dist/utilities/runPaymentHooks.spec.js +0 -324
  58. package/dist/utilities/runPaymentHooks.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/react/provider/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultDocumentIDType, TypedUser } from 'payload'\n\nimport { deepMergeSimple, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type {\n AddressesCollection,\n CartsCollection,\n ContextProps,\n Currency,\n EcommerceConfig,\n EcommerceContextType,\n} from '../../types/index.js'\n\nconst defaultContext: EcommerceContextType = {\n addItem: async () => {},\n clearCart: async () => {},\n clearSession: () => {},\n config: {\n addressesSlug: 'addresses',\n api: {\n apiRoute: '/api',\n },\n cartsSlug: 'carts',\n customersSlug: 'users',\n },\n confirmOrder: async () => {},\n createAddress: async () => {},\n currenciesConfig: {\n defaultCurrency: 'USD',\n supportedCurrencies: [\n {\n code: 'USD',\n decimals: 2,\n label: 'US Dollar',\n symbol: '$',\n },\n ],\n },\n currency: {\n code: 'USD',\n decimals: 2,\n label: 'US Dollar',\n symbol: '$',\n },\n decrementItem: async () => {},\n incrementItem: async () => {},\n initiatePayment: async () => {},\n isLoading: false,\n mergeCart: async () => {},\n onLogin: async () => {},\n onLogout: () => {},\n paymentMethods: [],\n refreshCart: async () => {},\n removeItem: async () => {},\n setCurrency: () => {},\n updateAddress: async () => {},\n user: null,\n}\n\nconst EcommerceContext = createContext<EcommerceContextType>(defaultContext)\n\nconst defaultLocalStorage = {\n key: 'cart',\n}\n\nexport const EcommerceProvider: React.FC<ContextProps> = ({\n addressesSlug = 'addresses',\n api,\n cartsSlug = 'carts',\n children,\n currenciesConfig = {\n defaultCurrency: 'USD',\n supportedCurrencies: [\n {\n code: 'USD',\n decimals: 2,\n label: 'US Dollar',\n symbol: '$',\n },\n ],\n },\n customersSlug = 'users',\n debug = false,\n paymentMethods = [],\n syncLocalStorage = true,\n}) => {\n const localStorageConfig =\n syncLocalStorage && typeof syncLocalStorage === 'object'\n ? {\n ...defaultLocalStorage,\n ...syncLocalStorage,\n }\n : defaultLocalStorage\n\n const { apiRoute = '/api', cartsFetchQuery = {} } = api || {}\n const baseAPIURL = formatAdminURL({\n apiRoute,\n path: '',\n })\n\n const config = useMemo<EcommerceConfig>(\n () => ({\n addressesSlug,\n api: {\n apiRoute,\n },\n cartsSlug,\n customersSlug,\n }),\n [addressesSlug, apiRoute, cartsSlug, customersSlug],\n )\n\n const [isLoading, setIsLoading] = useState(false)\n\n const [user, setUser] = useState<null | TypedUser>(null)\n\n const [addresses, setAddresses] = useState<AddressesCollection[]>()\n\n const hasRendered = useRef(false)\n\n /**\n * The ID of the cart associated with the current session.\n * This is used to identify the cart in the database or local storage.\n * It can be null if no cart has been created yet.\n */\n const [cartID, setCartID] = useState<DefaultDocumentIDType>()\n /**\n * The secret for accessing guest carts without authentication.\n * This is generated when a guest user creates a cart.\n */\n const [cartSecret, setCartSecret] = useState<string | undefined>(undefined)\n const [cart, setCart] = useState<CartsCollection>()\n\n const [selectedCurrency, setSelectedCurrency] = useState<Currency>(\n () =>\n currenciesConfig.supportedCurrencies.find(\n (c) => c.code === currenciesConfig.defaultCurrency,\n )!,\n )\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<null | string>(null)\n\n const cartQuery = useMemo(() => {\n const priceField = `priceIn${selectedCurrency.code}`\n\n const baseQuery = {\n depth: 0,\n populate: {\n products: {\n [priceField]: true,\n },\n variants: {\n options: true,\n [priceField]: true,\n },\n },\n select: {\n items: true,\n subtotal: true,\n },\n }\n\n return deepMergeSimple(baseQuery, cartsFetchQuery)\n }, [selectedCurrency.code, cartsFetchQuery])\n\n const createCart = useCallback(\n async (initialData: Record<string, unknown>) => {\n const query = qs.stringify(cartQuery)\n\n const response = await fetch(`${baseAPIURL}/${cartsSlug}?${query}`, {\n body: JSON.stringify({\n ...initialData,\n currency: selectedCurrency.code,\n customer: user?.id,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to create cart: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Cart creation error: ${data.error}`)\n }\n\n // Store the secret for guest cart access\n if (!user && data.doc?.secret) {\n setCartSecret(data.doc.secret)\n }\n\n return data.doc as CartsCollection\n },\n [baseAPIURL, cartQuery, cartsSlug, selectedCurrency.code, user],\n )\n\n const getCart = useCallback(\n async (cartID: DefaultDocumentIDType, options?: { secret?: string }) => {\n const query = qs.stringify({\n ...cartQuery,\n ...(options?.secret ? { secret: options.secret } : {}),\n })\n\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}?${query}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to fetch cart: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Cart fetch error: ${data.error}`)\n }\n\n return data as CartsCollection\n },\n [baseAPIURL, cartQuery, cartsSlug],\n )\n\n const refreshCart = useCallback<EcommerceContextType['refreshCart']>(async () => {\n if (!cartID) {\n return\n }\n const updatedCart = await getCart(cartID)\n setCart(updatedCart)\n }, [cartID, getCart])\n\n // Persist cart ID and secret to localStorage\n useEffect(() => {\n if (hasRendered.current) {\n if (syncLocalStorage) {\n if (cartID) {\n localStorage.setItem(localStorageConfig.key, cartID as string)\n } else {\n localStorage.removeItem(localStorageConfig.key)\n }\n\n if (cartSecret) {\n localStorage.setItem(`${localStorageConfig.key}_secret`, cartSecret)\n } else {\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n }\n }\n }\n }, [cartID, cartSecret, localStorageConfig.key, syncLocalStorage])\n\n const addItem: EcommerceContextType['addItem'] = useCallback(\n async (item, quantity = 1) => {\n setIsLoading(true)\n try {\n if (cartID) {\n // Use server-side endpoint for adding items\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/add-item`, {\n body: JSON.stringify({\n item,\n quantity,\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to add item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } else {\n // If no cartID exists, create a new cart with the item\n const newCart = await createCart({ items: [{ ...item, quantity }] })\n\n setCartID(newCart.id)\n setCart(newCart)\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error adding item to cart:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, createCart, debug, getCart],\n )\n\n const removeItem: EcommerceContextType['removeItem'] = useCallback(\n async (targetID) => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/remove-item`, {\n body: JSON.stringify({\n itemID: targetID,\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to remove item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error removing item from cart:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart],\n )\n\n const incrementItem: EcommerceContextType['incrementItem'] = useCallback(\n async (targetID) => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/update-item`, {\n body: JSON.stringify({\n itemID: targetID,\n quantity: { $inc: 1 },\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to increment item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error incrementing item quantity:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart],\n )\n\n const decrementItem: EcommerceContextType['decrementItem'] = useCallback(\n async (targetID) => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/update-item`, {\n body: JSON.stringify({\n itemID: targetID,\n quantity: { $inc: -1 },\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to decrement item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error decrementing item quantity:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart],\n )\n\n const clearCart: EcommerceContextType['clearCart'] = useCallback(async () => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/clear`, {\n body: JSON.stringify({\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to clear cart: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error clearing cart:', error)\n }\n } finally {\n setIsLoading(false)\n }\n }, [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart])\n\n const setCurrency: EcommerceContextType['setCurrency'] = useCallback(\n (currency) => {\n if (selectedCurrency.code === currency) {\n return\n }\n\n const foundCurrency = currenciesConfig.supportedCurrencies.find((c) => c.code === currency)\n if (!foundCurrency) {\n throw new Error(`Currency with code \"${currency}\" not found in config`)\n }\n\n setSelectedCurrency(foundCurrency)\n },\n [currenciesConfig.supportedCurrencies, selectedCurrency.code],\n )\n\n const initiatePayment = useCallback<EcommerceContextType['initiatePayment']>(\n async (paymentMethodID, options) => {\n const paymentMethod = paymentMethods.find((method) => method.name === paymentMethodID)\n\n if (!paymentMethod) {\n throw new Error(`Payment method with ID \"${paymentMethodID}\" not found`)\n }\n\n if (!cartID) {\n throw new Error(`No cart is provided.`)\n }\n\n setSelectedPaymentMethod(paymentMethodID)\n\n if (paymentMethod.initiatePayment) {\n try {\n const response = await fetch(`${baseAPIURL}/payments/${paymentMethodID}/initiate`, {\n body: JSON.stringify({\n cartID,\n currency: selectedCurrency.code,\n secret: cartSecret,\n ...(options?.additionalData || {}),\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const responseError = await response.text()\n throw new Error(responseError)\n }\n\n const responseData = await response.json()\n\n if (responseData.error) {\n throw new Error(responseData.error)\n }\n\n return responseData\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error initiating payment:', error)\n }\n throw new Error(error instanceof Error ? error.message : 'Failed to initiate payment')\n }\n } else {\n throw new Error(`Payment method \"${paymentMethodID}\" does not support payment initiation`)\n }\n },\n [baseAPIURL, cartID, cartSecret, debug, paymentMethods, selectedCurrency.code],\n )\n\n const confirmOrder = useCallback<EcommerceContextType['initiatePayment']>(\n async (paymentMethodID, options) => {\n if (!cartID) {\n throw new Error(`Cart is empty.`)\n }\n\n const paymentMethod = paymentMethods.find((pm) => pm.name === paymentMethodID)\n\n if (!paymentMethod) {\n throw new Error(`Payment method with ID \"${paymentMethodID}\" not found`)\n }\n\n if (paymentMethod.confirmOrder) {\n const response = await fetch(`${baseAPIURL}/payments/${paymentMethodID}/confirm-order`, {\n body: JSON.stringify({\n cartID,\n currency: selectedCurrency.code,\n secret: cartSecret,\n ...(options?.additionalData || {}),\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const responseError = await response.text()\n throw new Error(responseError)\n }\n\n const responseData = await response.json()\n\n if (responseData.error) {\n throw new Error(responseData.error)\n }\n\n return responseData\n } else {\n throw new Error(`Payment method \"${paymentMethodID}\" does not support order confirmation`)\n }\n },\n [baseAPIURL, cartID, cartSecret, paymentMethods, selectedCurrency.code],\n )\n\n const getUser = useCallback(async () => {\n try {\n const query = qs.stringify({\n depth: 0,\n select: {\n id: true,\n cart: true,\n },\n })\n\n const response = await fetch(`${baseAPIURL}/${customersSlug}/me?${query}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to fetch user: ${errorText}`)\n }\n\n const userData = await response.json()\n\n if (userData.error) {\n throw new Error(`User fetch error: ${userData.error}`)\n }\n\n if (userData.user) {\n setUser(userData.user as TypedUser)\n return userData.user as TypedUser\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error fetching user:', error)\n }\n setUser(null)\n throw new Error(\n `Failed to fetch user: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n }, [baseAPIURL, customersSlug, debug])\n\n const getAddresses = useCallback(async () => {\n if (!user) {\n return\n }\n\n try {\n const query = qs.stringify({\n depth: 0,\n limit: 0,\n pagination: false,\n })\n\n const response = await fetch(`${baseAPIURL}/${addressesSlug}?${query}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n\n throw new Error(errorText)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Address fetch error: ${data.error}`)\n }\n\n if (data.docs && data.docs.length > 0) {\n setAddresses(data.docs)\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error fetching addresses:', error)\n }\n setAddresses(undefined)\n throw new Error(\n `Failed to fetch addresses: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n }, [user, baseAPIURL, addressesSlug, debug])\n\n const updateAddress = useCallback<EcommerceContextType['updateAddress']>(\n async (addressID, address) => {\n if (!user) {\n throw new Error('User must be logged in to update or create an address')\n }\n\n try {\n const response = await fetch(`${baseAPIURL}/${addressesSlug}/${addressID}`, {\n body: JSON.stringify(address),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to update or create address: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Address update/create error: ${data.error}`)\n }\n\n // Refresh addresses after updating or creating\n await getAddresses()\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error updating or creating address:', error)\n }\n\n throw new Error(\n `Failed to update or create address: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n },\n [user, baseAPIURL, addressesSlug, getAddresses, debug],\n )\n\n const createAddress = useCallback<EcommerceContextType['createAddress']>(\n async (address) => {\n if (!user) {\n throw new Error('User must be logged in to update or create an address')\n }\n\n try {\n const response = await fetch(`${baseAPIURL}/${addressesSlug}`, {\n body: JSON.stringify(address),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to update or create address: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Address update/create error: ${data.error}`)\n }\n\n // Refresh addresses after updating or creating\n await getAddresses()\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error updating or creating address:', error)\n }\n\n throw new Error(\n `Failed to update or create address: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n },\n [user, baseAPIURL, addressesSlug, getAddresses, debug],\n )\n\n /**\n * Clears all ecommerce session data from state and localStorage.\n * Used during logout to ensure no user data persists.\n */\n const clearSession = useCallback(() => {\n setCart(undefined)\n setCartID(undefined)\n setCartSecret(undefined)\n setAddresses(undefined)\n setUser(null)\n\n if (syncLocalStorage) {\n localStorage.removeItem(localStorageConfig.key)\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n }\n }, [localStorageConfig.key, syncLocalStorage])\n\n /**\n * Called during logout. Clears all session data.\n */\n const onLogout = useCallback(() => {\n clearSession()\n }, [clearSession])\n\n /**\n * Merges items from a source cart into a target cart.\n * Useful for merging a guest cart into a user's existing cart after login.\n *\n * @param targetCartID - The ID of the cart to merge items into\n * @param sourceCartID - The ID of the cart to merge items from\n * @param sourceSecret - The secret for the source cart (required for guest carts)\n * @returns The merged cart\n */\n const mergeCart = useCallback<EcommerceContextType['mergeCart']>(\n async (targetCartID, sourceCartID, sourceSecret) => {\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${targetCartID}/merge`, {\n body: JSON.stringify({\n sourceCartID,\n sourceSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to merge carts: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n throw new Error(result.message || 'Failed to merge carts')\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(targetCartID)\n setCart(refreshedCart)\n setCartID(targetCartID)\n\n return refreshedCart\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error merging carts:', error)\n }\n throw error\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartsSlug, debug, getCart],\n )\n\n /**\n * Called after login to properly set up cart state.\n * Handles merging guest cart with user's existing cart if applicable.\n */\n const onLogin = useCallback(async () => {\n // Store reference to any existing guest cart before fetching user\n const guestCartID = cartID\n const guestSecret = cartSecret\n\n // Fetch fresh user data\n const fetchedUser = await getUser()\n\n if (!fetchedUser) {\n // No user means login failed, keep current state\n return\n }\n\n // Clear the guest cart secret - authenticated users don't need it\n setCartSecret(undefined)\n if (syncLocalStorage) {\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n }\n\n // Check if user has an existing cart\n const userCartID =\n fetchedUser.cart?.docs && fetchedUser.cart.docs.length > 0\n ? typeof fetchedUser.cart.docs[0] === 'object'\n ? fetchedUser.cart.docs[0].id\n : fetchedUser.cart.docs[0]\n : undefined\n\n if (guestCartID && guestSecret) {\n // Guest had a cart - need to handle merge/transfer\n if (userCartID) {\n // User has existing cart - merge guest cart into user's cart\n try {\n await mergeCart(userCartID, guestCartID, guestSecret)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error merging carts:', error)\n }\n // Fall back to user's cart\n const userCart = await getCart(userCartID)\n setCart(userCart)\n setCartID(userCartID)\n }\n } else {\n // User has no existing cart - transfer guest cart to user\n try {\n const response = await fetch(\n `${baseAPIURL}/${cartsSlug}/${guestCartID}?secret=${guestSecret}`,\n {\n body: JSON.stringify({\n customer: fetchedUser.id,\n secret: null, // Clear the secret since it's now owned by user\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n\n if (response.ok) {\n // Fetch updated cart\n const updatedCart = await getCart(guestCartID)\n setCart(updatedCart)\n setCartID(guestCartID)\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error transferring cart to user:', error)\n }\n }\n }\n } else if (userCartID) {\n // No guest cart, but user has a cart - fetch it\n const userCart = await getCart(userCartID)\n setCart(userCart)\n setCartID(userCartID)\n }\n\n // Update localStorage with user's cart ID (no secret needed)\n if (syncLocalStorage && cartID) {\n localStorage.setItem(localStorageConfig.key, cartID as string)\n }\n }, [\n baseAPIURL,\n cartID,\n cartSecret,\n cartsSlug,\n debug,\n getCart,\n getUser,\n localStorageConfig.key,\n mergeCart,\n syncLocalStorage,\n ])\n\n // If localStorage is enabled, restore cart from storage\n useEffect(() => {\n if (!hasRendered.current) {\n if (syncLocalStorage) {\n const storedCartID = localStorage.getItem(localStorageConfig.key)\n const storedSecret = localStorage.getItem(`${localStorageConfig.key}_secret`)\n\n if (storedCartID) {\n getCart(storedCartID, { secret: storedSecret || undefined })\n .then((fetchedCart) => {\n setCart(fetchedCart)\n setCartID(storedCartID as DefaultDocumentIDType)\n if (storedSecret) {\n setCartSecret(storedSecret)\n }\n })\n .catch((_) => {\n // console.error('Error fetching cart from localStorage:', error)\n // If there's an error fetching the cart, clear it from localStorage\n localStorage.removeItem(localStorageConfig.key)\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n })\n }\n }\n\n hasRendered.current = true\n\n void getUser().then((user) => {\n if (user && user.cart?.docs && user.cart.docs.length > 0) {\n // If the user has carts, we can set the cartID to the first cart\n const cartID =\n typeof user.cart.docs[0] === 'object' ? user.cart.docs[0].id : user.cart.docs[0]\n\n if (cartID) {\n getCart(cartID)\n .then((fetchedCart) => {\n setCart(fetchedCart)\n setCartID(cartID)\n })\n .catch((error) => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error fetching user cart:', error)\n }\n\n setCart(undefined)\n setCartID(undefined)\n\n throw new Error(`Failed to fetch user cart: ${error.message}`)\n })\n }\n }\n })\n }\n }, [debug, getAddresses, getCart, getUser, localStorageConfig.key, syncLocalStorage])\n\n useEffect(() => {\n if (user) {\n // If the user is logged in, fetch their addresses\n void getAddresses()\n } else {\n // If no user is logged in, clear addresses\n setAddresses(undefined)\n }\n }, [getAddresses, user])\n\n return (\n <EcommerceContext\n value={{\n addItem,\n addresses,\n cart,\n clearCart,\n clearSession,\n config,\n confirmOrder,\n createAddress,\n currenciesConfig,\n currency: selectedCurrency,\n decrementItem,\n incrementItem,\n initiatePayment,\n isLoading,\n mergeCart,\n onLogin,\n onLogout,\n paymentMethods,\n refreshCart,\n removeItem,\n selectedPaymentMethod,\n setCurrency,\n updateAddress,\n user,\n }}\n >\n {children}\n </EcommerceContext>\n )\n}\n\nexport const useEcommerce = () => {\n const context = use(EcommerceContext)\n\n if (!context) {\n throw new Error('useEcommerce must be used within an EcommerceProvider')\n }\n\n return context\n}\n\nexport const useEcommerceConfig = () => {\n const { config } = useEcommerce()\n\n return config\n}\n\nexport const useCurrency = () => {\n const { currenciesConfig, currency, setCurrency } = useEcommerce()\n\n const formatCurrency = useCallback(\n (value?: null | number, options?: { currency?: Currency }): string => {\n if (value === undefined || value === null) {\n return ''\n }\n\n const currencyToUse = options?.currency || currency\n\n if (!currencyToUse) {\n return value.toString()\n }\n\n if (value === 0) {\n return `${currencyToUse.symbol}0.${'0'.repeat(currencyToUse.decimals)}`\n }\n\n // Convert from base value (e.g., cents) to decimal value (e.g., dollars)\n const decimalValue = value / Math.pow(10, currencyToUse.decimals)\n\n // Format with the correct number of decimal places\n return `${currencyToUse.symbol}${decimalValue.toFixed(currencyToUse.decimals)}`\n },\n [currency],\n )\n\n if (!currency) {\n throw new Error('useCurrency must be used within an EcommerceProvider')\n }\n\n return {\n currency,\n formatCurrency,\n setCurrency,\n supportedCurrencies: currenciesConfig.supportedCurrencies,\n }\n}\n\nexport function useCart<T extends CartsCollection>() {\n const {\n addItem,\n cart,\n clearCart,\n decrementItem,\n incrementItem,\n isLoading,\n refreshCart,\n removeItem,\n } = useEcommerce()\n\n if (!addItem) {\n throw new Error('useCart must be used within an EcommerceProvider')\n }\n\n return {\n addItem,\n cart: cart as T,\n clearCart,\n decrementItem,\n incrementItem,\n isLoading,\n refreshCart,\n removeItem,\n }\n}\n\nexport const usePayments = () => {\n const { confirmOrder, initiatePayment, isLoading, paymentMethods, selectedPaymentMethod } =\n useEcommerce()\n\n if (!initiatePayment) {\n throw new Error('usePayments must be used within an EcommerceProvider')\n }\n\n return { confirmOrder, initiatePayment, isLoading, paymentMethods, selectedPaymentMethod }\n}\n\nexport function useAddresses<T extends AddressesCollection>() {\n const { addresses, createAddress, isLoading, updateAddress } = useEcommerce()\n\n if (!createAddress) {\n throw new Error('usePayments must be used within an EcommerceProvider')\n }\n\n return { addresses: addresses as T[], createAddress, isLoading, updateAddress }\n}\n"],"names":["deepMergeSimple","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","defaultContext","addItem","clearCart","clearSession","config","addressesSlug","api","apiRoute","cartsSlug","customersSlug","confirmOrder","createAddress","currenciesConfig","defaultCurrency","supportedCurrencies","code","decimals","label","symbol","currency","decrementItem","incrementItem","initiatePayment","isLoading","mergeCart","onLogin","onLogout","paymentMethods","refreshCart","removeItem","setCurrency","updateAddress","user","EcommerceContext","defaultLocalStorage","key","EcommerceProvider","children","debug","syncLocalStorage","localStorageConfig","cartsFetchQuery","baseAPIURL","path","setIsLoading","setUser","addresses","setAddresses","hasRendered","cartID","setCartID","cartSecret","setCartSecret","undefined","cart","setCart","selectedCurrency","setSelectedCurrency","find","c","selectedPaymentMethod","setSelectedPaymentMethod","cartQuery","priceField","baseQuery","depth","populate","products","variants","options","select","items","subtotal","createCart","initialData","query","stringify","response","fetch","body","JSON","customer","id","credentials","headers","method","ok","errorText","text","Error","data","json","error","doc","secret","getCart","updatedCart","current","localStorage","setItem","item","quantity","result","success","refreshedCart","newCart","console","targetID","itemID","$inc","foundCurrency","paymentMethodID","paymentMethod","name","additionalData","responseError","responseData","message","pm","getUser","userData","getAddresses","limit","pagination","docs","length","addressID","address","targetCartID","sourceCartID","sourceSecret","guestCartID","guestSecret","fetchedUser","userCartID","userCart","storedCartID","getItem","storedSecret","then","fetchedCart","catch","_","value","useEcommerce","context","useEcommerceConfig","useCurrency","formatCurrency","currencyToUse","toString","repeat","decimalValue","Math","pow","toFixed","useCart","usePayments","useAddresses"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/react/provider/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultDocumentIDType, TypedUser } from 'payload'\n\nimport { deepMergeSimple, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type {\n AddressesCollection,\n CartsCollection,\n ContextProps,\n Currency,\n EcommerceConfig,\n EcommerceContextType,\n} from '../../types/index.js'\n\nconst defaultContext: EcommerceContextType = {\n addItem: async () => {},\n clearCart: async () => {},\n clearSession: () => {},\n config: {\n addressesSlug: 'addresses',\n api: {\n apiRoute: '/api',\n },\n cartsSlug: 'carts',\n customersSlug: 'users',\n },\n confirmOrder: async () => {},\n createAddress: async () => {},\n currenciesConfig: {\n defaultCurrency: 'USD',\n supportedCurrencies: [\n {\n code: 'USD',\n decimals: 2,\n label: 'US Dollar',\n symbol: '$',\n },\n ],\n },\n currency: {\n code: 'USD',\n decimals: 2,\n label: 'US Dollar',\n symbol: '$',\n },\n decrementItem: async () => {},\n incrementItem: async () => {},\n initiatePayment: async () => {},\n isLoading: false,\n mergeCart: async () => {},\n onLogin: async () => {},\n onLogout: () => {},\n paymentMethods: [],\n refreshCart: async () => {},\n removeItem: async () => {},\n setCurrency: () => {},\n updateAddress: async () => {},\n user: null,\n}\n\nconst EcommerceContext = createContext<EcommerceContextType>(defaultContext)\n\nconst defaultLocalStorage = {\n key: 'cart',\n}\n\nexport const EcommerceProvider: React.FC<ContextProps> = ({\n addressesSlug = 'addresses',\n api,\n cartsSlug = 'carts',\n children,\n currenciesConfig = {\n defaultCurrency: 'USD',\n supportedCurrencies: [\n {\n code: 'USD',\n decimals: 2,\n label: 'US Dollar',\n symbol: '$',\n },\n ],\n },\n customersSlug = 'users',\n debug = false,\n paymentMethods = [],\n syncLocalStorage = true,\n}) => {\n const localStorageConfig =\n syncLocalStorage && typeof syncLocalStorage === 'object'\n ? {\n ...defaultLocalStorage,\n ...syncLocalStorage,\n }\n : defaultLocalStorage\n\n const { apiRoute = '/api', cartsFetchQuery = {} } = api || {}\n const baseAPIURL = formatAdminURL({\n apiRoute,\n path: '',\n })\n\n const config = useMemo<EcommerceConfig>(\n () => ({\n addressesSlug,\n api: {\n apiRoute,\n },\n cartsSlug,\n customersSlug,\n }),\n [addressesSlug, apiRoute, cartsSlug, customersSlug],\n )\n\n const [isLoading, setIsLoading] = useState(false)\n\n const [user, setUser] = useState<null | TypedUser>(null)\n\n const [addresses, setAddresses] = useState<AddressesCollection[]>()\n\n const hasRendered = useRef(false)\n\n /**\n * The ID of the cart associated with the current session.\n * This is used to identify the cart in the database or local storage.\n * It can be null if no cart has been created yet.\n */\n const [cartID, setCartID] = useState<DefaultDocumentIDType>()\n /**\n * The secret for accessing guest carts without authentication.\n * This is generated when a guest user creates a cart.\n */\n const [cartSecret, setCartSecret] = useState<string | undefined>(undefined)\n const [cart, setCart] = useState<CartsCollection>()\n\n const [selectedCurrency, setSelectedCurrency] = useState<Currency>(\n () =>\n currenciesConfig.supportedCurrencies.find(\n (c) => c.code === currenciesConfig.defaultCurrency,\n )!,\n )\n\n const [selectedPaymentMethod, setSelectedPaymentMethod] = useState<null | string>(null)\n\n const cartQuery = useMemo(() => {\n const priceField = `priceIn${selectedCurrency.code}`\n\n const baseQuery = {\n depth: 0,\n populate: {\n products: {\n [priceField]: true,\n },\n variants: {\n options: true,\n [priceField]: true,\n },\n },\n select: {\n items: true,\n subtotal: true,\n },\n }\n\n return deepMergeSimple(baseQuery, cartsFetchQuery)\n }, [selectedCurrency.code, cartsFetchQuery])\n\n const createCart = useCallback(\n async (initialData: Record<string, unknown>) => {\n const query = qs.stringify(cartQuery)\n\n const response = await fetch(`${baseAPIURL}/${cartsSlug}?${query}`, {\n body: JSON.stringify({\n ...initialData,\n currency: selectedCurrency.code,\n customer: user?.id,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to create cart: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Cart creation error: ${data.error}`)\n }\n\n // Store the secret for guest cart access\n if (!user && data.doc?.secret) {\n setCartSecret(data.doc.secret)\n }\n\n return data.doc as CartsCollection\n },\n [baseAPIURL, cartQuery, cartsSlug, selectedCurrency.code, user],\n )\n\n const getCart = useCallback(\n async (cartID: DefaultDocumentIDType, options?: { secret?: string }) => {\n const query = qs.stringify({\n ...cartQuery,\n ...(options?.secret ? { secret: options.secret } : {}),\n })\n\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}?${query}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to fetch cart: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Cart fetch error: ${data.error}`)\n }\n\n return data as CartsCollection\n },\n [baseAPIURL, cartQuery, cartsSlug],\n )\n\n const refreshCart = useCallback<EcommerceContextType['refreshCart']>(async () => {\n if (!cartID) {\n return\n }\n const updatedCart = await getCart(cartID)\n setCart(updatedCart)\n }, [cartID, getCart])\n\n // Persist cart ID and secret to localStorage\n useEffect(() => {\n if (hasRendered.current) {\n if (syncLocalStorage) {\n if (cartID) {\n localStorage.setItem(localStorageConfig.key, cartID as string)\n } else {\n localStorage.removeItem(localStorageConfig.key)\n }\n\n if (cartSecret) {\n localStorage.setItem(`${localStorageConfig.key}_secret`, cartSecret)\n } else {\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n }\n }\n }\n }, [cartID, cartSecret, localStorageConfig.key, syncLocalStorage])\n\n const addItem: EcommerceContextType['addItem'] = useCallback(\n async (item, quantity = 1) => {\n setIsLoading(true)\n try {\n if (cartID) {\n // Use server-side endpoint for adding items\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/add-item`, {\n body: JSON.stringify({\n item,\n quantity,\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to add item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } else {\n // If no cartID exists, create a new cart with the item\n const newCart = await createCart({ items: [{ ...item, quantity }] })\n\n setCartID(newCart.id)\n setCart(newCart)\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error adding item to cart:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, createCart, debug, getCart],\n )\n\n const removeItem: EcommerceContextType['removeItem'] = useCallback(\n async (targetID) => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/remove-item`, {\n body: JSON.stringify({\n itemID: targetID,\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to remove item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error removing item from cart:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart],\n )\n\n const incrementItem: EcommerceContextType['incrementItem'] = useCallback(\n async (targetID) => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/update-item`, {\n body: JSON.stringify({\n itemID: targetID,\n quantity: { $inc: 1 },\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to increment item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error incrementing item quantity:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart],\n )\n\n const decrementItem: EcommerceContextType['decrementItem'] = useCallback(\n async (targetID) => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/update-item`, {\n body: JSON.stringify({\n itemID: targetID,\n quantity: { $inc: -1 },\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to decrement item: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error decrementing item quantity:', error)\n }\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart],\n )\n\n const clearCart: EcommerceContextType['clearCart'] = useCallback(async () => {\n if (!cartID) {\n return\n }\n\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${cartID}/clear`, {\n body: JSON.stringify({\n secret: cartSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to clear cart: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n // Cart not found - reset state\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n return\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(cartID, { secret: cartSecret })\n setCart(refreshedCart)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error clearing cart:', error)\n }\n } finally {\n setIsLoading(false)\n }\n }, [baseAPIURL, cartID, cartSecret, cartsSlug, debug, getCart])\n\n const setCurrency: EcommerceContextType['setCurrency'] = useCallback(\n (currency) => {\n if (selectedCurrency.code === currency) {\n return\n }\n\n const foundCurrency = currenciesConfig.supportedCurrencies.find((c) => c.code === currency)\n if (!foundCurrency) {\n throw new Error(`Currency with code \"${currency}\" not found in config`)\n }\n\n setSelectedCurrency(foundCurrency)\n },\n [currenciesConfig.supportedCurrencies, selectedCurrency.code],\n )\n\n const initiatePayment = useCallback<EcommerceContextType['initiatePayment']>(\n async (paymentMethodID, options) => {\n const paymentMethod = paymentMethods.find((method) => method.name === paymentMethodID)\n\n if (!paymentMethod) {\n throw new Error(`Payment method with ID \"${paymentMethodID}\" not found`)\n }\n\n if (!cartID) {\n throw new Error(`No cart is provided.`)\n }\n\n setSelectedPaymentMethod(paymentMethodID)\n\n if (paymentMethod.initiatePayment) {\n try {\n const response = await fetch(`${baseAPIURL}/payments/${paymentMethodID}/initiate`, {\n body: JSON.stringify({\n cartID,\n currency: selectedCurrency.code,\n secret: cartSecret,\n ...(options?.additionalData || {}),\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const responseError = await response.text()\n throw new Error(responseError)\n }\n\n const responseData = await response.json()\n\n if (responseData.error) {\n throw new Error(responseData.error)\n }\n\n return responseData\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error initiating payment:', error)\n }\n throw new Error(error instanceof Error ? error.message : 'Failed to initiate payment')\n }\n } else {\n throw new Error(`Payment method \"${paymentMethodID}\" does not support payment initiation`)\n }\n },\n [baseAPIURL, cartID, cartSecret, debug, paymentMethods, selectedCurrency.code],\n )\n\n const confirmOrder = useCallback<EcommerceContextType['initiatePayment']>(\n async (paymentMethodID, options) => {\n if (!cartID) {\n throw new Error(`Cart is empty.`)\n }\n\n const paymentMethod = paymentMethods.find((pm) => pm.name === paymentMethodID)\n\n if (!paymentMethod) {\n throw new Error(`Payment method with ID \"${paymentMethodID}\" not found`)\n }\n\n if (paymentMethod.confirmOrder) {\n const response = await fetch(`${baseAPIURL}/payments/${paymentMethodID}/confirm-order`, {\n body: JSON.stringify({\n cartID,\n currency: selectedCurrency.code,\n secret: cartSecret,\n ...(options?.additionalData || {}),\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const responseError = await response.text()\n throw new Error(responseError)\n }\n\n const responseData = await response.json()\n\n if (responseData.error) {\n throw new Error(responseData.error)\n }\n\n return responseData\n } else {\n throw new Error(`Payment method \"${paymentMethodID}\" does not support order confirmation`)\n }\n },\n [baseAPIURL, cartID, cartSecret, paymentMethods, selectedCurrency.code],\n )\n\n const getUser = useCallback(async () => {\n try {\n const query = qs.stringify({\n depth: 0,\n select: {\n id: true,\n cart: true,\n },\n })\n\n const response = await fetch(`${baseAPIURL}/${customersSlug}/me?${query}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to fetch user: ${errorText}`)\n }\n\n const userData = await response.json()\n\n if (userData.error) {\n throw new Error(`User fetch error: ${userData.error}`)\n }\n\n if (userData.user) {\n setUser(userData.user as TypedUser)\n return userData.user as TypedUser\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error fetching user:', error)\n }\n setUser(null)\n throw new Error(\n `Failed to fetch user: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n }, [baseAPIURL, customersSlug, debug])\n\n const getAddresses = useCallback(async () => {\n if (!user) {\n return\n }\n\n try {\n const query = qs.stringify({\n depth: 0,\n limit: 0,\n pagination: false,\n })\n\n const response = await fetch(`${baseAPIURL}/${addressesSlug}?${query}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'GET',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n\n throw new Error(errorText)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Address fetch error: ${data.error}`)\n }\n\n if (data.docs && data.docs.length > 0) {\n setAddresses(data.docs)\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error fetching addresses:', error)\n }\n setAddresses(undefined)\n throw new Error(\n `Failed to fetch addresses: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n }, [user, baseAPIURL, addressesSlug, debug])\n\n const updateAddress = useCallback<EcommerceContextType['updateAddress']>(\n async (addressID, address) => {\n if (!user) {\n throw new Error('User must be logged in to update or create an address')\n }\n\n try {\n const response = await fetch(`${baseAPIURL}/${addressesSlug}/${addressID}`, {\n body: JSON.stringify(address),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to update or create address: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Address update/create error: ${data.error}`)\n }\n\n // Refresh addresses after updating or creating\n await getAddresses()\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error updating or creating address:', error)\n }\n\n throw new Error(\n `Failed to update or create address: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n },\n [user, baseAPIURL, addressesSlug, getAddresses, debug],\n )\n\n const createAddress = useCallback<EcommerceContextType['createAddress']>(\n async (address) => {\n if (!user) {\n throw new Error('User must be logged in to update or create an address')\n }\n\n try {\n const response = await fetch(`${baseAPIURL}/${addressesSlug}`, {\n body: JSON.stringify(address),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to update or create address: ${errorText}`)\n }\n\n const data = await response.json()\n\n if (data.error) {\n throw new Error(`Address update/create error: ${data.error}`)\n }\n\n // Refresh addresses after updating or creating\n await getAddresses()\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error updating or creating address:', error)\n }\n\n throw new Error(\n `Failed to update or create address: ${error instanceof Error ? error.message : 'Unknown error'}`,\n )\n }\n },\n [user, baseAPIURL, addressesSlug, getAddresses, debug],\n )\n\n /**\n * Clears all ecommerce session data from state and localStorage.\n * Used during logout to ensure no user data persists.\n */\n const clearSession = useCallback(() => {\n setCart(undefined)\n setCartID(undefined)\n setCartSecret(undefined)\n setAddresses(undefined)\n setUser(null)\n\n if (syncLocalStorage) {\n localStorage.removeItem(localStorageConfig.key)\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n }\n }, [localStorageConfig.key, syncLocalStorage])\n\n /**\n * Called during logout. Clears all session data.\n */\n const onLogout = useCallback(() => {\n clearSession()\n }, [clearSession])\n\n /**\n * Merges items from a source cart into a target cart.\n * Useful for merging a guest cart into a user's existing cart after login.\n *\n * @param targetCartID - The ID of the cart to merge items into\n * @param sourceCartID - The ID of the cart to merge items from\n * @param sourceSecret - The secret for the source cart (required for guest carts)\n * @returns The merged cart\n */\n const mergeCart = useCallback<EcommerceContextType['mergeCart']>(\n async (targetCartID, sourceCartID, sourceSecret) => {\n setIsLoading(true)\n try {\n const response = await fetch(`${baseAPIURL}/${cartsSlug}/${targetCartID}/merge`, {\n body: JSON.stringify({\n sourceCartID,\n sourceSecret,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n if (!response.ok) {\n const errorText = await response.text()\n throw new Error(`Failed to merge carts: ${errorText}`)\n }\n\n const result = await response.json()\n\n if (!result.success) {\n throw new Error(result.message || 'Failed to merge carts')\n }\n\n // Refresh cart with proper depth/populate settings for UI\n const refreshedCart = await getCart(targetCartID)\n setCart(refreshedCart)\n setCartID(targetCartID)\n\n return refreshedCart\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error merging carts:', error)\n }\n throw error\n } finally {\n setIsLoading(false)\n }\n },\n [baseAPIURL, cartsSlug, debug, getCart],\n )\n\n /**\n * Called after login to properly set up cart state.\n * Handles merging guest cart with user's existing cart if applicable.\n */\n const onLogin = useCallback(async () => {\n // Store reference to any existing guest cart before fetching user\n const guestCartID = cartID\n const guestSecret = cartSecret\n\n // Fetch fresh user data\n const fetchedUser = await getUser()\n\n if (!fetchedUser) {\n // No user means login failed, keep current state\n return\n }\n\n // Clear the guest cart secret - authenticated users don't need it\n setCartSecret(undefined)\n if (syncLocalStorage) {\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n }\n\n // Check if user has an existing cart\n const userCartID =\n fetchedUser.cart?.docs && fetchedUser.cart.docs.length > 0\n ? typeof fetchedUser.cart.docs[0] === 'object'\n ? fetchedUser.cart.docs[0].id\n : fetchedUser.cart.docs[0]\n : undefined\n\n if (guestCartID && guestSecret) {\n // Guest had a cart - need to handle merge/transfer\n if (userCartID) {\n // User has existing cart - merge guest cart into user's cart\n try {\n await mergeCart(userCartID, guestCartID, guestSecret)\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error merging carts:', error)\n }\n // Fall back to user's cart\n const userCart = await getCart(userCartID)\n setCart(userCart)\n setCartID(userCartID)\n }\n } else {\n // User has no existing cart - transfer guest cart to user\n try {\n const response = await fetch(\n `${baseAPIURL}/${cartsSlug}/${guestCartID}?secret=${guestSecret}`,\n {\n body: JSON.stringify({\n customer: fetchedUser.id,\n secret: null, // Clear the secret since it's now owned by user\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'PATCH',\n },\n )\n\n if (response.ok) {\n // Fetch updated cart\n const updatedCart = await getCart(guestCartID)\n setCart(updatedCart)\n setCartID(guestCartID)\n }\n } catch (error) {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error transferring cart to user:', error)\n }\n }\n }\n } else if (userCartID) {\n // No guest cart, but user has a cart - fetch it\n const userCart = await getCart(userCartID)\n setCart(userCart)\n setCartID(userCartID)\n }\n\n // Update localStorage with user's cart ID (no secret needed)\n if (syncLocalStorage && cartID) {\n localStorage.setItem(localStorageConfig.key, cartID as string)\n }\n }, [\n baseAPIURL,\n cartID,\n cartSecret,\n cartsSlug,\n debug,\n getCart,\n getUser,\n localStorageConfig.key,\n mergeCart,\n syncLocalStorage,\n ])\n\n // If localStorage is enabled, restore cart from storage\n useEffect(() => {\n if (!hasRendered.current) {\n if (syncLocalStorage) {\n const storedCartID = localStorage.getItem(localStorageConfig.key)\n const storedSecret = localStorage.getItem(`${localStorageConfig.key}_secret`)\n\n if (storedCartID) {\n getCart(storedCartID, { secret: storedSecret || undefined })\n .then((fetchedCart) => {\n setCart(fetchedCart)\n setCartID(storedCartID as DefaultDocumentIDType)\n if (storedSecret) {\n setCartSecret(storedSecret)\n }\n })\n .catch((_) => {\n // console.error('Error fetching cart from localStorage:', error)\n // If there's an error fetching the cart, clear it from localStorage\n localStorage.removeItem(localStorageConfig.key)\n localStorage.removeItem(`${localStorageConfig.key}_secret`)\n setCartID(undefined)\n setCart(undefined)\n setCartSecret(undefined)\n })\n }\n }\n\n hasRendered.current = true\n\n void getUser().then((user) => {\n if (user && user.cart?.docs && user.cart.docs.length > 0) {\n // If the user has carts, we can set the cartID to the first cart\n const cartID =\n typeof user.cart.docs[0] === 'object' ? user.cart.docs[0].id : user.cart.docs[0]\n\n if (cartID) {\n getCart(cartID)\n .then((fetchedCart) => {\n setCart(fetchedCart)\n setCartID(cartID)\n })\n .catch((error) => {\n if (debug) {\n // eslint-disable-next-line no-console\n console.error('Error fetching user cart:', error)\n }\n\n setCart(undefined)\n setCartID(undefined)\n\n throw new Error(`Failed to fetch user cart: ${error.message}`)\n })\n }\n }\n })\n }\n }, [debug, getAddresses, getCart, getUser, localStorageConfig.key, syncLocalStorage])\n\n useEffect(() => {\n if (user) {\n // If the user is logged in, fetch their addresses\n void getAddresses()\n } else {\n // If no user is logged in, clear addresses\n setAddresses(undefined)\n }\n }, [getAddresses, user])\n\n return (\n <EcommerceContext\n value={{\n addItem,\n addresses,\n cart,\n clearCart,\n clearSession,\n config,\n confirmOrder,\n createAddress,\n currenciesConfig,\n currency: selectedCurrency,\n decrementItem,\n incrementItem,\n initiatePayment,\n isLoading,\n mergeCart,\n onLogin,\n onLogout,\n paymentMethods,\n refreshCart,\n removeItem,\n selectedPaymentMethod,\n setCurrency,\n updateAddress,\n user,\n }}\n >\n {children}\n </EcommerceContext>\n )\n}\n\nexport const useEcommerce = () => {\n const context = use(EcommerceContext)\n\n if (!context) {\n throw new Error('useEcommerce must be used within an EcommerceProvider')\n }\n\n return context\n}\n\nexport const useEcommerceConfig = () => {\n const { config } = useEcommerce()\n\n return config\n}\n\nexport const useCurrency = () => {\n const { currenciesConfig, currency, setCurrency } = useEcommerce()\n\n const formatCurrency = useCallback(\n (value?: null | number, options?: { currency?: Currency; locale?: string }): string => {\n if (value === undefined || value === null) {\n return ''\n }\n\n const currencyToUse = options?.currency || currency\n if (!currencyToUse) {\n return value.toString()\n }\n\n const { code, decimals, symbolDisplay } = currencyToUse\n\n const locale = options?.locale || 'en'\n\n return new Intl.NumberFormat(locale, {\n currency: code,\n currencyDisplay: symbolDisplay || 'symbol',\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals,\n style: 'currency',\n }).format(value / Math.pow(10, decimals))\n },\n [currency],\n )\n\n if (!currency) {\n throw new Error('useCurrency must be used within an EcommerceProvider')\n }\n\n return {\n currency,\n formatCurrency,\n setCurrency,\n supportedCurrencies: currenciesConfig.supportedCurrencies,\n }\n}\n\nexport function useCart<T extends CartsCollection>() {\n const {\n addItem,\n cart,\n clearCart,\n decrementItem,\n incrementItem,\n isLoading,\n refreshCart,\n removeItem,\n } = useEcommerce()\n\n if (!addItem) {\n throw new Error('useCart must be used within an EcommerceProvider')\n }\n\n return {\n addItem,\n cart: cart as T,\n clearCart,\n decrementItem,\n incrementItem,\n isLoading,\n refreshCart,\n removeItem,\n }\n}\n\nexport const usePayments = () => {\n const { confirmOrder, initiatePayment, isLoading, paymentMethods, selectedPaymentMethod } =\n useEcommerce()\n\n if (!initiatePayment) {\n throw new Error('usePayments must be used within an EcommerceProvider')\n }\n\n return { confirmOrder, initiatePayment, isLoading, paymentMethods, selectedPaymentMethod }\n}\n\nexport function useAddresses<T extends AddressesCollection>() {\n const { addresses, createAddress, isLoading, updateAddress } = useEcommerce()\n\n if (!createAddress) {\n throw new Error('usePayments must be used within an EcommerceProvider')\n }\n\n return { addresses: addresses as T[], createAddress, isLoading, updateAddress }\n}\n"],"names":["deepMergeSimple","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","defaultContext","addItem","clearCart","clearSession","config","addressesSlug","api","apiRoute","cartsSlug","customersSlug","confirmOrder","createAddress","currenciesConfig","defaultCurrency","supportedCurrencies","code","decimals","label","symbol","currency","decrementItem","incrementItem","initiatePayment","isLoading","mergeCart","onLogin","onLogout","paymentMethods","refreshCart","removeItem","setCurrency","updateAddress","user","EcommerceContext","defaultLocalStorage","key","EcommerceProvider","children","debug","syncLocalStorage","localStorageConfig","cartsFetchQuery","baseAPIURL","path","setIsLoading","setUser","addresses","setAddresses","hasRendered","cartID","setCartID","cartSecret","setCartSecret","undefined","cart","setCart","selectedCurrency","setSelectedCurrency","find","c","selectedPaymentMethod","setSelectedPaymentMethod","cartQuery","priceField","baseQuery","depth","populate","products","variants","options","select","items","subtotal","createCart","initialData","query","stringify","response","fetch","body","JSON","customer","id","credentials","headers","method","ok","errorText","text","Error","data","json","error","doc","secret","getCart","updatedCart","current","localStorage","setItem","item","quantity","result","success","refreshedCart","newCart","console","targetID","itemID","$inc","foundCurrency","paymentMethodID","paymentMethod","name","additionalData","responseError","responseData","message","pm","getUser","userData","getAddresses","limit","pagination","docs","length","addressID","address","targetCartID","sourceCartID","sourceSecret","guestCartID","guestSecret","fetchedUser","userCartID","userCart","storedCartID","getItem","storedSecret","then","fetchedCart","catch","_","value","useEcommerce","context","useEcommerceConfig","useCurrency","formatCurrency","currencyToUse","toString","symbolDisplay","locale","Intl","NumberFormat","currencyDisplay","maximumFractionDigits","minimumFractionDigits","style","format","Math","pow","useCart","usePayments","useAddresses"],"mappings":"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"}
@@ -25,174 +25,12 @@ type DefaultCartType = {
25
25
  subtotal?: number;
26
26
  };
27
27
  export type Cart = DefaultCartType;
28
- export type LineType = 'custom' | 'discount' | 'gift_card' | 'shipping' | 'subtotal' | 'tax';
29
- /**
30
- * A single line item making up a payment summary — items, tax, shipping, discount, etc.
31
- */
32
- export type Line = {
33
- /**
34
- * The signed amount of the line in the smallest currency unit (e.g. cents for USD).
35
- * Positive values increase the total (tax, shipping).
36
- * Negative values decrease the total (discount, gift card).
37
- */
38
- amount: number;
39
- /**
40
- * Human-readable label for display (e.g., "CA Sales Tax", "Standard Shipping").
41
- */
42
- label: string;
43
- /**
44
- * Optional metadata for adapter-specific or user-specific data. A common pattern
45
- * is to stash a `taxable` flag here so later hooks know whether to include this line,
46
- * or an external identifier for idempotency with a tax/shipping provider.
47
- */
48
- metadata?: Record<string, unknown>;
49
- /**
50
- * The type of line.
51
- */
52
- type: LineType;
53
- };
54
- /**
55
- * Full breakdown of the payment amount. Passed through the beforeInitiatePayment hook
56
- * pipeline and returned in the `/payments/{provider}/initiate` response.
57
- *
58
- * The plugin recomputes `total` from `lines` after every hook, so you never need to
59
- * update `total` yourself inside a hook — just return the updated `lines`. The first
60
- * line is always the cart subtotal and is managed by the plugin; removing it or changing
61
- * its amount will throw.
62
- */
63
- export type Summary = {
64
- /**
65
- * The ISO currency code used for all line amounts.
66
- */
67
- currency: string;
68
- /**
69
- * Ordered list of line items contributing to the total.
70
- * `lines[0]` is always the cart subtotal and is managed by the plugin.
71
- */
72
- lines: Line[];
73
- /**
74
- * The final amount charged. Always equal to `sum(lines[].amount)`. This value is
75
- * recomputed by the plugin after each hook — any value a hook sets is ignored.
76
- */
77
- total: number;
78
- };
79
- /**
80
- * Context provided to payment hooks during the initiate payment flow.
81
- */
82
- export type PaymentHookContext = {
83
- /**
84
- * Billing address, if provided.
85
- */
86
- billingAddress?: TypedCollection['addresses'];
87
- /**
88
- * The validated cart with items.
89
- */
90
- cart: Cart;
91
- /**
92
- * The currencies configuration.
93
- */
94
- currenciesConfig: CurrenciesConfig;
95
- /**
96
- * The resolved currency code.
97
- */
98
- currency: string;
99
- /**
100
- * Customer email address.
101
- */
102
- customerEmail: string;
103
- /**
104
- * The Payload request object.
105
- */
106
- req: PayloadRequest;
107
- /**
108
- * Shipping address, if provided.
109
- */
110
- shippingAddress?: TypedCollection['addresses'];
111
- };
112
- /**
113
- * Hook that runs before payment initiation, after validation.
114
- *
115
- * Receives the current `Summary` (total, currency, lines) and must return an updated
116
- * `Summary`. Typically you'll spread the incoming summary and append your line:
117
- *
118
- * ```ts
119
- * return {
120
- * ...summary,
121
- * lines: [...summary.lines, { type: 'tax', label: 'Sales Tax', amount: 1500 }],
122
- * }
123
- * ```
124
- *
125
- * The plugin recomputes `summary.total` from `summary.lines` after this hook runs,
126
- * so you never need to update `total` yourself.
127
- *
128
- * Throwing an error aborts the payment.
129
- */
130
- export type BeforeInitiatePaymentHook = (args: {
131
- /**
132
- * The running summary — the cart subtotal plus any lines contributed by prior hooks.
133
- * Return a new summary with your line appended (or existing lines modified).
134
- */
135
- summary: Summary;
136
- } & PaymentHookContext) => Promise<Summary> | Summary;
137
- /**
138
- * Hook that runs before order confirmation.
139
- * Can inspect data before the adapter confirms. Throwing an error aborts the confirmation.
140
- */
141
- export type BeforeConfirmOrderHook = (args: {
142
- /**
143
- * Customer email.
144
- */
145
- customerEmail: string;
146
- /**
147
- * All data passed to the confirm-order endpoint.
148
- */
149
- data: Record<string, unknown>;
150
- /**
151
- * The Payload request object.
152
- */
153
- req: PayloadRequest;
154
- }) => Promise<void> | void;
155
- /**
156
- * Hook that runs after order confirmation succeeds.
157
- * For side effects only (sending emails, updating external systems, redeeming gift cards).
158
- * Return value is ignored. Errors are logged but do not fail the response.
159
- */
160
- export type AfterConfirmOrderHook = (args: {
161
- /**
162
- * The created order ID.
163
- */
164
- orderID: DefaultDocumentIDType;
165
- /**
166
- * The Payload request object.
167
- */
168
- req: PayloadRequest;
169
- /**
170
- * The transaction ID.
171
- */
172
- transactionID: DefaultDocumentIDType;
173
- }) => Promise<void> | void;
174
- /**
175
- * Hook configuration for the payment flow. Used at both the plugin level
176
- * (runs for all payment methods) and the adapter level (runs for that adapter only).
177
- */
178
- export type PaymentHooks = {
179
- afterConfirmOrder?: AfterConfirmOrderHook[];
180
- beforeConfirmOrder?: BeforeConfirmOrderHook[];
181
- beforeInitiatePayment?: BeforeInitiatePaymentHook[];
182
- };
183
28
  type InitiatePaymentReturnType = {
184
29
  /**
185
30
  * Allows for additional data to be returned, such as payment method specific data
186
31
  */
187
32
  [key: string]: any;
188
33
  message: string;
189
- /**
190
- * Optional ID of the transaction record created during initiation. When returned,
191
- * the plugin will write the computed `summary` onto this transaction — so the
192
- * breakdown (subtotal, tax, shipping, etc.) is available on the record alongside
193
- * the total.
194
- */
195
- transactionID?: DefaultDocumentIDType;
196
34
  };
197
35
  type InitiatePayment = (args: {
198
36
  /**
@@ -217,12 +55,6 @@ type InitiatePayment = (args: {
217
55
  * Shipping address for the payment.
218
56
  */
219
57
  shippingAddress?: TypedCollection['addresses'];
220
- /**
221
- * The final payment summary after all beforeInitiatePayment hooks have run.
222
- * Use `summary.total` as the amount to charge and store `summary.lines` if you
223
- * need to persist the breakdown (e.g. in provider metadata).
224
- */
225
- summary: Summary;
226
58
  };
227
59
  req: PayloadRequest;
228
60
  /**
@@ -334,21 +166,6 @@ export type PaymentAdapter = {
334
166
  * ```
335
167
  */
336
168
  group: GroupField;
337
- /**
338
- * Hooks specific to this payment adapter. These run after plugin-level hooks.
339
- *
340
- * @example
341
- * ```ts
342
- * hooks: {
343
- * beforeInitiatePayment: [
344
- * async ({ subtotal }) => {
345
- * return [{ type: 'tax', label: 'Stripe Tax', amount: calculatedTax }]
346
- * },
347
- * ],
348
- * }
349
- * ```
350
- */
351
- hooks?: PaymentHooks;
352
169
  /**
353
170
  * The function that is called via the `/api/payments/{provider_name}/initiate` endpoint to initiate a payment for an order.
354
171
  *
@@ -387,7 +204,7 @@ export type PaymentAdapterClient = {
387
204
  export type Currency = {
388
205
  /**
389
206
  * The ISO 4217 currency code
390
- * @example 'usd'
207
+ * @example 'USD'
391
208
  */
392
209
  code: string;
393
210
  /**
@@ -406,6 +223,11 @@ export type Currency = {
406
223
  * @example '$'
407
224
  */
408
225
  symbol: string;
226
+ /**
227
+ * The display format for the currency symbol in formatted output.
228
+ * @example 'symbol'
229
+ */
230
+ symbolDisplay?: 'code' | 'symbol';
409
231
  };
410
232
  /**
411
233
  * Commonly used arguments for a Payment Adapter function, it's use is entirely optional.
@@ -589,22 +411,6 @@ export type CustomQuery = {
589
411
  where?: Where;
590
412
  };
591
413
  export type PaymentsConfig = {
592
- /**
593
- * Hooks that run for all payment methods. Plugin-level hooks execute before adapter-level hooks.
594
- *
595
- * @example
596
- * ```ts
597
- * hooks: {
598
- * beforeInitiatePayment: [
599
- * async ({ subtotal, shippingAddress }) => {
600
- * const taxRate = await fetchTaxRate(shippingAddress)
601
- * return [{ type: 'tax', label: 'Sales Tax', amount: Math.round(subtotal * taxRate) }]
602
- * },
603
- * ],
604
- * }
605
- * ```
606
- */
607
- hooks?: PaymentHooks;
608
414
  paymentMethods?: PaymentAdapter[];
609
415
  productsQuery?: CustomQuery;
610
416
  variantsQuery?: CustomQuery;
@@ -940,7 +746,6 @@ export type SanitizedEcommercePluginConfig = {
940
746
  currencies: Required<CurrenciesConfig>;
941
747
  inventory?: InventoryConfig;
942
748
  payments: {
943
- hooks?: PaymentHooks;
944
749
  paymentMethods: [] | PaymentAdapter[];
945
750
  };
946
751
  } & Omit<Required<EcommercePluginConfig>, 'access' | 'addresses' | 'currencies' | 'inventory' | 'payments'>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}