@spree/sdk 0.2.3 → 0.2.5

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/request.ts","../src/store-client.ts","../src/admin-client.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { ErrorResponse } from './types';\n\nexport interface RetryConfig {\n /** Maximum number of retries (default: 2) */\n maxRetries?: number;\n /** HTTP status codes to retry on (default: [429, 500, 502, 503, 504]) */\n retryOnStatus?: number[];\n /** Base delay in ms for exponential backoff (default: 300) */\n baseDelay?: number;\n /** Maximum delay in ms (default: 10000) */\n maxDelay?: number;\n /** Whether to retry on network errors (default: true) */\n retryOnNetworkError?: boolean;\n}\n\nexport interface RequestOptions {\n /** Bearer token for authenticated requests */\n token?: string;\n /** Order token for guest checkout */\n orderToken?: string;\n /** Locale for translated content (e.g., 'en', 'fr') */\n locale?: string;\n /** Currency for prices (e.g., 'USD', 'EUR') */\n currency?: string;\n /** Custom headers */\n headers?: Record<string, string>;\n}\n\nexport interface InternalRequestOptions extends RequestOptions {\n body?: unknown;\n params?: Record<string, string | number | undefined>;\n}\n\nexport class SpreeError extends Error {\n public readonly code: string;\n public readonly status: number;\n public readonly details?: Record<string, string[]>;\n\n constructor(response: ErrorResponse, status: number) {\n super(response.error.message);\n this.name = 'SpreeError';\n this.code = response.error.code;\n this.status = status;\n this.details = response.error.details;\n }\n}\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n options?: InternalRequestOptions\n) => Promise<T>;\n\nfunction calculateDelay(attempt: number, config: Required<RetryConfig>): number {\n const exponentialDelay = config.baseDelay * Math.pow(2, attempt);\n const jitter = Math.random() * config.baseDelay;\n return Math.min(exponentialDelay + jitter, config.maxDelay);\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction shouldRetryOnStatus(method: string, status: number, config: Required<RetryConfig>): boolean {\n const isIdempotent = method === 'GET' || method === 'HEAD';\n if (isIdempotent) {\n return config.retryOnStatus.includes(status);\n }\n return status === 429;\n}\n\nfunction shouldRetryOnNetworkError(method: string, config: Required<RetryConfig>): boolean {\n if (!config.retryOnNetworkError) return false;\n return method === 'GET' || method === 'HEAD';\n}\n\nexport interface RequestConfig {\n baseUrl: string;\n fetchFn: typeof fetch;\n retryConfig: Required<RetryConfig> | false;\n}\n\nexport interface AuthConfig {\n headerName: string;\n headerValue: string;\n}\n\n/**\n * Creates a bound request function for a specific API scope (store or admin).\n */\nexport function createRequestFn(\n config: RequestConfig,\n basePath: string,\n auth: AuthConfig\n): RequestFn {\n return async function request<T>(\n method: string,\n path: string,\n options: InternalRequestOptions = {}\n ): Promise<T> {\n const { token, orderToken, locale, currency, headers = {}, body, params } = options;\n\n // Build URL with query params\n const url = new URL(`${config.baseUrl}${basePath}${path}`);\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n value.forEach((v) => url.searchParams.append(key, String(v)));\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n });\n }\n if (orderToken) {\n url.searchParams.set('order_token', orderToken);\n }\n\n // Build headers\n const requestHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n [auth.headerName]: auth.headerValue,\n ...headers,\n };\n\n if (token) {\n requestHeaders['Authorization'] = `Bearer ${token}`;\n }\n\n if (orderToken) {\n requestHeaders['x-spree-order-token'] = orderToken;\n }\n\n if (locale) {\n requestHeaders['x-spree-locale'] = locale;\n }\n\n if (currency) {\n requestHeaders['x-spree-currency'] = currency;\n }\n\n const maxAttempts = config.retryConfig ? config.retryConfig.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const response = await config.fetchFn(url.toString(), {\n method,\n headers: requestHeaders,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const isLastAttempt = attempt >= maxAttempts - 1;\n\n if (!isLastAttempt && config.retryConfig && shouldRetryOnStatus(method, response.status, config.retryConfig)) {\n const retryAfter = response.headers.get('Retry-After');\n const delay = retryAfter\n ? Math.min(parseInt(retryAfter, 10) * 1000, config.retryConfig.maxDelay)\n : calculateDelay(attempt, config.retryConfig);\n await sleep(delay);\n continue;\n }\n\n const errorBody = await response.json() as ErrorResponse;\n throw new SpreeError(errorBody, response.status);\n }\n\n // Handle 204 No Content\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n } catch (error) {\n if (error instanceof SpreeError) {\n throw error;\n }\n\n const isLastAttempt = attempt >= maxAttempts - 1;\n\n if (!isLastAttempt && config.retryConfig && shouldRetryOnNetworkError(method, config.retryConfig)) {\n const delay = calculateDelay(attempt, config.retryConfig);\n await sleep(delay);\n continue;\n }\n\n throw error;\n }\n }\n\n // This should never be reached, but TypeScript needs it\n throw new Error('Unexpected end of retry loop');\n };\n}\n","import type { RequestFn, RequestOptions } from './request';\nimport type {\n AuthTokens,\n LoginCredentials,\n RegisterParams,\n PaginatedResponse,\n ListParams,\n ProductListParams,\n ProductFiltersParams,\n ProductFiltersResponse,\n TaxonListParams,\n OrderListParams,\n AddLineItemParams,\n UpdateLineItemParams,\n UpdateOrderParams,\n AddressParams,\n CreatePaymentSessionParams,\n UpdatePaymentSessionParams,\n CompletePaymentSessionParams,\n StoreCreditCard,\n StoreGiftCard,\n StoreProduct,\n StoreOrder,\n StoreCountry,\n StoreTaxonomy,\n StoreTaxon,\n StorePayment,\n StorePaymentMethod,\n StorePaymentSession,\n StoreShipment,\n StoreStore,\n StoreWishlist,\n StoreWishedItem,\n StoreAddress,\n StoreCustomer,\n} from './types';\n\nexport class StoreClient {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n // ============================================\n // Authentication\n // ============================================\n\n readonly auth = {\n /**\n * Login with email and password\n */\n login: (credentials: LoginCredentials): Promise<AuthTokens> =>\n this.request<AuthTokens>('POST', '/auth/login', { body: credentials }),\n\n /**\n * Register a new customer account\n */\n register: (params: RegisterParams): Promise<AuthTokens> =>\n this.request<AuthTokens>('POST', '/auth/register', { body: params }),\n\n /**\n * Refresh access token (requires valid Bearer token)\n */\n refresh: (options: RequestOptions): Promise<AuthTokens> =>\n this.request<AuthTokens>('POST', '/auth/refresh', options),\n };\n\n // ============================================\n // Store\n // ============================================\n\n readonly store = {\n /**\n * Get current store information\n */\n get: (options?: RequestOptions): Promise<StoreStore> =>\n this.request<StoreStore>('GET', '/store', options),\n };\n\n // ============================================\n // Products\n // ============================================\n\n readonly products = {\n /**\n * List products\n */\n list: (\n params?: ProductListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreProduct>> =>\n this.request<PaginatedResponse<StoreProduct>>('GET', '/products', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a product by ID or slug\n */\n get: (\n idOrSlug: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreProduct> =>\n this.request<StoreProduct>('GET', `/products/${idOrSlug}`, {\n ...options,\n params,\n }),\n\n /**\n * Get available filters for products\n * Returns filter options (price range, availability, option types, taxons) with counts\n */\n filters: (\n params?: ProductFiltersParams,\n options?: RequestOptions\n ): Promise<ProductFiltersResponse> =>\n this.request<ProductFiltersResponse>('GET', '/products/filters', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n };\n\n // ============================================\n // Taxonomies & Taxons\n // ============================================\n\n readonly taxonomies = {\n /**\n * List taxonomies\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreTaxonomy>> =>\n this.request<PaginatedResponse<StoreTaxonomy>>('GET', '/taxonomies', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a taxonomy by ID\n */\n get: (\n id: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreTaxonomy> =>\n this.request<StoreTaxonomy>('GET', `/taxonomies/${id}`, {\n ...options,\n params,\n }),\n };\n\n readonly taxons = {\n /**\n * List taxons\n */\n list: (\n params?: TaxonListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreTaxon>> =>\n this.request<PaginatedResponse<StoreTaxon>>('GET', '/taxons', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a taxon by ID or permalink\n */\n get: (\n idOrPermalink: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreTaxon> =>\n this.request<StoreTaxon>('GET', `/taxons/${idOrPermalink}`, {\n ...options,\n params,\n }),\n\n /**\n * Nested resource: Products in a taxon\n */\n products: {\n /**\n * List products in a taxon\n * @param taxonId - Taxon ID (prefix_id) or permalink\n */\n list: (\n taxonId: string,\n params?: ProductListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreProduct>> =>\n this.request<PaginatedResponse<StoreProduct>>(\n 'GET',\n `/taxons/${taxonId}/products`,\n {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }\n ),\n },\n };\n\n // ============================================\n // Geography\n // ============================================\n\n readonly countries = {\n /**\n * List countries available for checkout\n * Returns countries from the store's checkout zone without states\n */\n list: (options?: RequestOptions): Promise<{ data: StoreCountry[] }> =>\n this.request<{ data: StoreCountry[] }>('GET', '/countries', options),\n\n /**\n * Get a country by ISO code with states\n * @param iso - ISO 3166-1 alpha-2 code (e.g., \"US\", \"DE\")\n */\n get: (iso: string, options?: RequestOptions): Promise<StoreCountry> =>\n this.request<StoreCountry>('GET', `/countries/${iso}`, options),\n };\n\n // ============================================\n // Cart (convenience wrapper for current incomplete order)\n // ============================================\n\n readonly cart = {\n /**\n * Get current cart (returns null if none exists)\n * Pass orderToken for guest checkout, or use JWT for authenticated users\n */\n get: (options?: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('GET', '/cart', options),\n\n /**\n * Create a new cart (alias for orders.create)\n */\n create: (options?: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('POST', '/orders', options),\n\n /**\n * Associate a guest cart with the currently authenticated user\n * Requires both JWT token (for authentication) and orderToken (to identify the cart)\n * @param options - Must include both `token` (JWT) and `orderToken` (guest cart token)\n */\n associate: (options: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('PATCH', '/cart/associate', options),\n };\n\n // ============================================\n // Orders (all orders - complete and incomplete)\n // ============================================\n\n readonly orders = {\n /**\n * List orders for the authenticated customer\n */\n list: (\n params?: OrderListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreOrder>> =>\n this.request<PaginatedResponse<StoreOrder>>('GET', '/orders', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Create a new order (cart)\n */\n create: (options?: RequestOptions): Promise<StoreOrder & { order_token: string }> =>\n this.request<StoreOrder & { order_token: string }>('POST', '/orders', options),\n\n /**\n * Get an order by ID or number\n */\n get: (\n idOrNumber: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('GET', `/orders/${idOrNumber}`, {\n ...options,\n params,\n }),\n\n /**\n * Update an order\n */\n update: (\n idOrNumber: string,\n params: UpdateOrderParams,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}`, {\n ...options,\n body: params,\n }),\n\n /**\n * Advance order to next checkout step\n */\n next: (idOrNumber: string, options?: RequestOptions): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}/next`, options),\n\n /**\n * Advance through all checkout steps\n */\n advance: (idOrNumber: string, options?: RequestOptions): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}/advance`, options),\n\n /**\n * Complete the order\n */\n complete: (idOrNumber: string, options?: RequestOptions): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}/complete`, options),\n\n /**\n * Add store credit to order\n */\n addStoreCredit: (\n idOrNumber: string,\n amount?: number,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('POST', `/orders/${idOrNumber}/store_credits`, {\n ...options,\n body: amount ? { amount } : undefined,\n }),\n\n /**\n * Remove store credit from order\n */\n removeStoreCredit: (\n idOrNumber: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('DELETE', `/orders/${idOrNumber}/store_credits`, options),\n\n /**\n * Nested resource: Line items\n */\n lineItems: {\n /**\n * Add a line item to an order.\n * Returns the updated order with recalculated totals.\n */\n create: (\n orderId: string,\n params: AddLineItemParams,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('POST', `/orders/${orderId}/line_items`, {\n ...options,\n body: params,\n }),\n\n /**\n * Update a line item quantity.\n * Returns the updated order with recalculated totals.\n */\n update: (\n orderId: string,\n lineItemId: string,\n params: UpdateLineItemParams,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'PATCH',\n `/orders/${orderId}/line_items/${lineItemId}`,\n { ...options, body: params }\n ),\n\n /**\n * Remove a line item from an order.\n * Returns the updated order with recalculated totals.\n */\n delete: (\n orderId: string,\n lineItemId: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'DELETE',\n `/orders/${orderId}/line_items/${lineItemId}`,\n options\n ),\n },\n\n /**\n * Nested resource: Payments\n */\n payments: {\n /**\n * List payments for an order\n */\n list: (\n orderId: string,\n options?: RequestOptions\n ): Promise<{ data: StorePayment[]; meta: object }> =>\n this.request<{ data: StorePayment[]; meta: object }>(\n 'GET',\n `/orders/${orderId}/payments`,\n options\n ),\n\n /**\n * Get a payment by ID\n */\n get: (\n orderId: string,\n paymentId: string,\n options?: RequestOptions\n ): Promise<StorePayment> =>\n this.request<StorePayment>(\n 'GET',\n `/orders/${orderId}/payments/${paymentId}`,\n options\n ),\n },\n\n /**\n * Nested resource: Payment methods\n */\n paymentMethods: {\n /**\n * List available payment methods for an order\n */\n list: (\n orderId: string,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StorePaymentMethod>> =>\n this.request<PaginatedResponse<StorePaymentMethod>>(\n 'GET',\n `/orders/${orderId}/payment_methods`,\n options\n ),\n },\n\n /**\n * Nested resource: Payment sessions\n */\n paymentSessions: {\n /**\n * Create a payment session for an order\n * Delegates to the payment gateway to initialize a provider-specific session\n */\n create: (\n orderId: string,\n params: CreatePaymentSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'POST',\n `/orders/${orderId}/payment_sessions`,\n { ...options, body: params }\n ),\n\n /**\n * Get a payment session by ID\n */\n get: (\n orderId: string,\n sessionId: string,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'GET',\n `/orders/${orderId}/payment_sessions/${sessionId}`,\n options\n ),\n\n /**\n * Update a payment session\n * Delegates to the payment gateway to sync changes with the provider\n */\n update: (\n orderId: string,\n sessionId: string,\n params: UpdatePaymentSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'PATCH',\n `/orders/${orderId}/payment_sessions/${sessionId}`,\n { ...options, body: params }\n ),\n\n /**\n * Complete a payment session\n * Confirms the payment with the provider, triggering capture/authorization\n */\n complete: (\n orderId: string,\n sessionId: string,\n params?: CompletePaymentSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'PATCH',\n `/orders/${orderId}/payment_sessions/${sessionId}/complete`,\n { ...options, body: params }\n ),\n },\n\n /**\n * Nested resource: Coupon codes\n */\n couponCodes: {\n /**\n * Apply a coupon code to an order\n */\n apply: (\n orderId: string,\n code: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('POST', `/orders/${orderId}/coupon_codes`, {\n ...options,\n body: { code },\n }),\n\n /**\n * Remove a coupon code from an order\n * @param promotionId - The promotion prefix_id (e.g., 'promo_xxx')\n */\n remove: (\n orderId: string,\n promotionId: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'DELETE',\n `/orders/${orderId}/coupon_codes/${promotionId}`,\n options\n ),\n },\n\n /**\n * Nested resource: Shipments\n */\n shipments: {\n /**\n * List shipments for an order\n */\n list: (\n orderId: string,\n options?: RequestOptions\n ): Promise<{ data: StoreShipment[] }> =>\n this.request<{ data: StoreShipment[] }>(\n 'GET',\n `/orders/${orderId}/shipments`,\n options\n ),\n\n /**\n * Select a shipping rate for a shipment.\n * Returns the updated order with recalculated totals.\n */\n update: (\n orderId: string,\n shipmentId: string,\n params: { selected_shipping_rate_id: string },\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'PATCH',\n `/orders/${orderId}/shipments/${shipmentId}`,\n { ...options, body: params }\n ),\n },\n };\n\n // ============================================\n // Customer\n // ============================================\n\n readonly customer = {\n /**\n * Get current customer profile\n */\n get: (options?: RequestOptions): Promise<StoreCustomer> =>\n this.request<StoreCustomer>('GET', '/customer', options),\n\n /**\n * Update current customer profile\n */\n update: (\n params: {\n first_name?: string\n last_name?: string\n email?: string\n password?: string\n password_confirmation?: string\n accepts_email_marketing?: boolean\n phone?: string\n },\n options?: RequestOptions\n ): Promise<StoreCustomer> =>\n this.request<StoreCustomer>('PATCH', '/customer', {\n ...options,\n body: params,\n }),\n\n /**\n * Nested resource: Addresses\n */\n addresses: {\n /**\n * List customer addresses\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreAddress>> =>\n this.request<PaginatedResponse<StoreAddress>>(\n 'GET',\n '/customer/addresses',\n { ...options, params: params as Record<string, string | number | undefined> }\n ),\n\n /**\n * Get an address by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StoreAddress> =>\n this.request<StoreAddress>('GET', `/customer/addresses/${id}`, options),\n\n /**\n * Create an address\n */\n create: (\n params: AddressParams,\n options?: RequestOptions\n ): Promise<StoreAddress> =>\n this.request<StoreAddress>('POST', '/customer/addresses', {\n ...options,\n body: params,\n }),\n\n /**\n * Update an address\n */\n update: (\n id: string,\n params: Partial<AddressParams>,\n options?: RequestOptions\n ): Promise<StoreAddress> =>\n this.request<StoreAddress>('PATCH', `/customer/addresses/${id}`, {\n ...options,\n body: params,\n }),\n\n /**\n * Delete an address\n */\n delete: (id: string, options?: RequestOptions): Promise<void> =>\n this.request<void>('DELETE', `/customer/addresses/${id}`, options),\n\n /**\n * Mark an address as default billing or shipping\n */\n markAsDefault: (\n id: string,\n kind: 'billing' | 'shipping',\n options?: RequestOptions\n ): Promise<StoreAddress> =>\n this.request<StoreAddress>('PATCH', `/customer/addresses/${id}/mark_as_default`, {\n ...options,\n body: { kind },\n }),\n },\n\n /**\n * Nested resource: Credit Cards\n */\n creditCards: {\n /**\n * List customer credit cards\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreCreditCard>> =>\n this.request<PaginatedResponse<StoreCreditCard>>(\n 'GET',\n '/customer/credit_cards',\n { ...options, params: params as Record<string, string | number | undefined> }\n ),\n\n /**\n * Get a credit card by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StoreCreditCard> =>\n this.request<StoreCreditCard>('GET', `/customer/credit_cards/${id}`, options),\n\n /**\n * Delete a credit card\n */\n delete: (id: string, options?: RequestOptions): Promise<void> =>\n this.request<void>('DELETE', `/customer/credit_cards/${id}`, options),\n },\n\n /**\n * Nested resource: Gift Cards\n */\n giftCards: {\n /**\n * List customer gift cards\n * Returns gift cards associated with the current user, ordered by newest first\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreGiftCard>> =>\n this.request<PaginatedResponse<StoreGiftCard>>(\n 'GET',\n '/customer/gift_cards',\n { ...options, params: params as Record<string, string | number | undefined> }\n ),\n\n /**\n * Get a gift card by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StoreGiftCard> =>\n this.request<StoreGiftCard>('GET', `/customer/gift_cards/${id}`, options),\n },\n };\n\n // ============================================\n // Wishlists\n // ============================================\n\n readonly wishlists = {\n /**\n * List wishlists\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreWishlist>> =>\n this.request<PaginatedResponse<StoreWishlist>>('GET', '/wishlists', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a wishlist by ID\n */\n get: (\n id: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreWishlist> =>\n this.request<StoreWishlist>('GET', `/wishlists/${id}`, {\n ...options,\n params,\n }),\n\n /**\n * Create a wishlist\n */\n create: (\n params: { name: string; is_private?: boolean; is_default?: boolean },\n options?: RequestOptions\n ): Promise<StoreWishlist> =>\n this.request<StoreWishlist>('POST', '/wishlists', {\n ...options,\n body: params,\n }),\n\n /**\n * Update a wishlist\n */\n update: (\n id: string,\n params: { name?: string; is_private?: boolean; is_default?: boolean },\n options?: RequestOptions\n ): Promise<StoreWishlist> =>\n this.request<StoreWishlist>('PATCH', `/wishlists/${id}`, {\n ...options,\n body: params,\n }),\n\n /**\n * Delete a wishlist\n */\n delete: (id: string, options?: RequestOptions): Promise<void> =>\n this.request<void>('DELETE', `/wishlists/${id}`, options),\n\n /**\n * Nested resource: Wishlist items\n */\n items: {\n /**\n * Add an item to a wishlist\n */\n create: (\n wishlistId: string,\n params: { variant_id: string; quantity?: number },\n options?: RequestOptions\n ): Promise<StoreWishedItem> =>\n this.request<StoreWishedItem>('POST', `/wishlists/${wishlistId}/items`, {\n ...options,\n body: params,\n }),\n\n /**\n * Update a wishlist item\n */\n update: (\n wishlistId: string,\n itemId: string,\n params: { quantity: number },\n options?: RequestOptions\n ): Promise<StoreWishedItem> =>\n this.request<StoreWishedItem>(\n 'PATCH',\n `/wishlists/${wishlistId}/items/${itemId}`,\n { ...options, body: params }\n ),\n\n /**\n * Remove an item from a wishlist\n */\n delete: (\n wishlistId: string,\n itemId: string,\n options?: RequestOptions\n ): Promise<void> =>\n this.request<void>(\n 'DELETE',\n `/wishlists/${wishlistId}/items/${itemId}`,\n options\n ),\n },\n };\n}\n","import type { RequestFn } from './request';\n\nexport class AdminClient {\n /** @internal */\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n\n // Prevent \"unused\" TS error — will be used as admin endpoints are added\n void this.request;\n }\n}\n","import { createRequestFn } from './request';\nimport type { RetryConfig, RequestConfig } from './request';\nimport { StoreClient } from './store-client';\nimport { AdminClient } from './admin-client';\n\n// Re-export types for convenience\nexport type { AddressParams, StoreCreditCard } from './types';\n\nexport interface SpreeClientConfig {\n /** Base URL of the Spree API (e.g., 'https://api.mystore.com') */\n baseUrl: string;\n /** Publishable API key for Store API access */\n publishableKey: string;\n /** Secret API key for Admin API access (optional) */\n secretKey?: string;\n /** Custom fetch implementation (optional, defaults to global fetch) */\n fetch?: typeof fetch;\n /** Retry configuration. Enabled by default. Pass false to disable. */\n retry?: RetryConfig | false;\n}\n\nexport class SpreeClient {\n /** Store API — customer-facing endpoints (products, cart, checkout, account) */\n readonly store: StoreClient;\n /** Admin API — administrative endpoints (manage orders, products, settings) */\n readonly admin: AdminClient;\n\n constructor(config: SpreeClientConfig) {\n const baseUrl = config.baseUrl.replace(/\\/$/, '');\n // Bind fetch to globalThis to avoid \"Illegal invocation\" errors in browsers\n const fetchFn = config.fetch || fetch.bind(globalThis);\n\n let retryConfig: Required<RetryConfig> | false;\n if (config.retry === false) {\n retryConfig = false;\n } else {\n retryConfig = {\n maxRetries: config.retry?.maxRetries ?? 2,\n retryOnStatus: config.retry?.retryOnStatus ?? [429, 500, 502, 503, 504],\n baseDelay: config.retry?.baseDelay ?? 300,\n maxDelay: config.retry?.maxDelay ?? 10000,\n retryOnNetworkError: config.retry?.retryOnNetworkError ?? true,\n };\n }\n\n const requestConfig: RequestConfig = { baseUrl, fetchFn, retryConfig };\n\n const storeRequestFn = createRequestFn(\n requestConfig,\n '/api/v3/store',\n { headerName: 'x-spree-api-key', headerValue: config.publishableKey }\n );\n\n const adminRequestFn = createRequestFn(\n requestConfig,\n '/api/v3/admin',\n {\n headerName: 'Authorization',\n headerValue: config.secretKey ? `Bearer ${config.secretKey}` : '',\n }\n );\n\n this.store = new StoreClient(storeRequestFn);\n this.admin = new AdminClient(adminRequestFn);\n }\n}\n\n/**\n * Create a new Spree SDK client\n */\nexport function createSpreeClient(config: SpreeClientConfig): SpreeClient {\n return new SpreeClient(config);\n}\n"]}
1
+ {"version":3,"sources":["../src/request.ts","../src/store-client.ts","../src/admin-client.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { ErrorResponse } from './types';\n\nexport interface RetryConfig {\n /** Maximum number of retries (default: 2) */\n maxRetries?: number;\n /** HTTP status codes to retry on (default: [429, 500, 502, 503, 504]) */\n retryOnStatus?: number[];\n /** Base delay in ms for exponential backoff (default: 300) */\n baseDelay?: number;\n /** Maximum delay in ms (default: 10000) */\n maxDelay?: number;\n /** Whether to retry on network errors (default: true) */\n retryOnNetworkError?: boolean;\n}\n\nexport interface RequestOptions {\n /** Bearer token for authenticated requests */\n token?: string;\n /** Order token for guest checkout */\n orderToken?: string;\n /** Locale for translated content (e.g., 'en', 'fr') */\n locale?: string;\n /** Currency for prices (e.g., 'USD', 'EUR') */\n currency?: string;\n /** Custom headers */\n headers?: Record<string, string>;\n}\n\nexport interface InternalRequestOptions extends RequestOptions {\n body?: unknown;\n params?: Record<string, string | number | undefined>;\n}\n\nexport class SpreeError extends Error {\n public readonly code: string;\n public readonly status: number;\n public readonly details?: Record<string, string[]>;\n\n constructor(response: ErrorResponse, status: number) {\n super(response.error.message);\n this.name = 'SpreeError';\n this.code = response.error.code;\n this.status = status;\n this.details = response.error.details;\n }\n}\n\nexport type RequestFn = <T>(\n method: string,\n path: string,\n options?: InternalRequestOptions\n) => Promise<T>;\n\nfunction calculateDelay(attempt: number, config: Required<RetryConfig>): number {\n const exponentialDelay = config.baseDelay * Math.pow(2, attempt);\n const jitter = Math.random() * config.baseDelay;\n return Math.min(exponentialDelay + jitter, config.maxDelay);\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction shouldRetryOnStatus(method: string, status: number, config: Required<RetryConfig>): boolean {\n const isIdempotent = method === 'GET' || method === 'HEAD';\n if (isIdempotent) {\n return config.retryOnStatus.includes(status);\n }\n return status === 429;\n}\n\nfunction shouldRetryOnNetworkError(method: string, config: Required<RetryConfig>): boolean {\n if (!config.retryOnNetworkError) return false;\n return method === 'GET' || method === 'HEAD';\n}\n\nexport interface RequestConfig {\n baseUrl: string;\n fetchFn: typeof fetch;\n retryConfig: Required<RetryConfig> | false;\n}\n\nexport interface AuthConfig {\n headerName: string;\n headerValue: string;\n}\n\n/**\n * Creates a bound request function for a specific API scope (store or admin).\n */\nexport function createRequestFn(\n config: RequestConfig,\n basePath: string,\n auth: AuthConfig\n): RequestFn {\n return async function request<T>(\n method: string,\n path: string,\n options: InternalRequestOptions = {}\n ): Promise<T> {\n const { token, orderToken, locale, currency, headers = {}, body, params } = options;\n\n // Build URL with query params\n const url = new URL(`${config.baseUrl}${basePath}${path}`);\n if (params) {\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined) {\n if (Array.isArray(value)) {\n value.forEach((v) => url.searchParams.append(key, String(v)));\n } else {\n url.searchParams.set(key, String(value));\n }\n }\n });\n }\n if (orderToken) {\n url.searchParams.set('order_token', orderToken);\n }\n\n // Build headers\n const requestHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n [auth.headerName]: auth.headerValue,\n ...headers,\n };\n\n if (token) {\n requestHeaders['Authorization'] = `Bearer ${token}`;\n }\n\n if (orderToken) {\n requestHeaders['x-spree-order-token'] = orderToken;\n }\n\n if (locale) {\n requestHeaders['x-spree-locale'] = locale;\n }\n\n if (currency) {\n requestHeaders['x-spree-currency'] = currency;\n }\n\n const maxAttempts = config.retryConfig ? config.retryConfig.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n try {\n const response = await config.fetchFn(url.toString(), {\n method,\n headers: requestHeaders,\n body: body ? JSON.stringify(body) : undefined,\n });\n\n if (!response.ok) {\n const isLastAttempt = attempt >= maxAttempts - 1;\n\n if (!isLastAttempt && config.retryConfig && shouldRetryOnStatus(method, response.status, config.retryConfig)) {\n const retryAfter = response.headers.get('Retry-After');\n const delay = retryAfter\n ? Math.min(parseInt(retryAfter, 10) * 1000, config.retryConfig.maxDelay)\n : calculateDelay(attempt, config.retryConfig);\n await sleep(delay);\n continue;\n }\n\n const errorBody = await response.json() as ErrorResponse;\n throw new SpreeError(errorBody, response.status);\n }\n\n // Handle 204 No Content\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json() as Promise<T>;\n } catch (error) {\n if (error instanceof SpreeError) {\n throw error;\n }\n\n const isLastAttempt = attempt >= maxAttempts - 1;\n\n if (!isLastAttempt && config.retryConfig && shouldRetryOnNetworkError(method, config.retryConfig)) {\n const delay = calculateDelay(attempt, config.retryConfig);\n await sleep(delay);\n continue;\n }\n\n throw error;\n }\n }\n\n // This should never be reached, but TypeScript needs it\n throw new Error('Unexpected end of retry loop');\n };\n}\n","import type { RequestFn, RequestOptions } from './request';\nimport type {\n AuthTokens,\n LoginCredentials,\n RegisterParams,\n PaginatedResponse,\n ListParams,\n ProductListParams,\n ProductFiltersParams,\n ProductFiltersResponse,\n TaxonListParams,\n OrderListParams,\n AddLineItemParams,\n UpdateLineItemParams,\n UpdateOrderParams,\n AddressParams,\n CreatePaymentSessionParams,\n UpdatePaymentSessionParams,\n CompletePaymentSessionParams,\n CreatePaymentSetupSessionParams,\n CompletePaymentSetupSessionParams,\n StoreCreditCard,\n StoreGiftCard,\n StoreProduct,\n StoreOrder,\n StoreCountry,\n StoreTaxonomy,\n StoreTaxon,\n StorePayment,\n StorePaymentMethod,\n StorePaymentSession,\n StorePaymentSetupSession,\n StoreShipment,\n StoreStore,\n StoreWishlist,\n StoreWishedItem,\n StoreAddress,\n StoreCustomer,\n} from './types';\n\nexport class StoreClient {\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n }\n\n // ============================================\n // Authentication\n // ============================================\n\n readonly auth = {\n /**\n * Login with email and password\n */\n login: (credentials: LoginCredentials): Promise<AuthTokens> =>\n this.request<AuthTokens>('POST', '/auth/login', { body: credentials }),\n\n /**\n * Register a new customer account\n */\n register: (params: RegisterParams): Promise<AuthTokens> =>\n this.request<AuthTokens>('POST', '/auth/register', { body: params }),\n\n /**\n * Refresh access token (requires valid Bearer token)\n */\n refresh: (options: RequestOptions): Promise<AuthTokens> =>\n this.request<AuthTokens>('POST', '/auth/refresh', options),\n };\n\n // ============================================\n // Store\n // ============================================\n\n readonly store = {\n /**\n * Get current store information\n */\n get: (options?: RequestOptions): Promise<StoreStore> =>\n this.request<StoreStore>('GET', '/store', options),\n };\n\n // ============================================\n // Products\n // ============================================\n\n readonly products = {\n /**\n * List products\n */\n list: (\n params?: ProductListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreProduct>> =>\n this.request<PaginatedResponse<StoreProduct>>('GET', '/products', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a product by ID or slug\n */\n get: (\n idOrSlug: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreProduct> =>\n this.request<StoreProduct>('GET', `/products/${idOrSlug}`, {\n ...options,\n params,\n }),\n\n /**\n * Get available filters for products\n * Returns filter options (price range, availability, option types, taxons) with counts\n */\n filters: (\n params?: ProductFiltersParams,\n options?: RequestOptions\n ): Promise<ProductFiltersResponse> =>\n this.request<ProductFiltersResponse>('GET', '/products/filters', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n };\n\n // ============================================\n // Taxonomies & Taxons\n // ============================================\n\n readonly taxonomies = {\n /**\n * List taxonomies\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreTaxonomy>> =>\n this.request<PaginatedResponse<StoreTaxonomy>>('GET', '/taxonomies', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a taxonomy by ID\n */\n get: (\n id: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreTaxonomy> =>\n this.request<StoreTaxonomy>('GET', `/taxonomies/${id}`, {\n ...options,\n params,\n }),\n };\n\n readonly taxons = {\n /**\n * List taxons\n */\n list: (\n params?: TaxonListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreTaxon>> =>\n this.request<PaginatedResponse<StoreTaxon>>('GET', '/taxons', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a taxon by ID or permalink\n */\n get: (\n idOrPermalink: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreTaxon> =>\n this.request<StoreTaxon>('GET', `/taxons/${idOrPermalink}`, {\n ...options,\n params,\n }),\n\n /**\n * Nested resource: Products in a taxon\n */\n products: {\n /**\n * List products in a taxon\n * @param taxonId - Taxon ID (prefix_id) or permalink\n */\n list: (\n taxonId: string,\n params?: ProductListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreProduct>> =>\n this.request<PaginatedResponse<StoreProduct>>(\n 'GET',\n `/taxons/${taxonId}/products`,\n {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }\n ),\n },\n };\n\n // ============================================\n // Geography\n // ============================================\n\n readonly countries = {\n /**\n * List countries available for checkout\n * Returns countries from the store's checkout zone without states\n */\n list: (options?: RequestOptions): Promise<{ data: StoreCountry[] }> =>\n this.request<{ data: StoreCountry[] }>('GET', '/countries', options),\n\n /**\n * Get a country by ISO code with states\n * @param iso - ISO 3166-1 alpha-2 code (e.g., \"US\", \"DE\")\n */\n get: (iso: string, options?: RequestOptions): Promise<StoreCountry> =>\n this.request<StoreCountry>('GET', `/countries/${iso}`, options),\n };\n\n // ============================================\n // Cart (convenience wrapper for current incomplete order)\n // ============================================\n\n readonly cart = {\n /**\n * Get current cart (returns null if none exists)\n * Pass orderToken for guest checkout, or use JWT for authenticated users\n */\n get: (options?: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('GET', '/cart', options),\n\n /**\n * Create a new cart (alias for orders.create)\n */\n create: (options?: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('POST', '/orders', options),\n\n /**\n * Associate a guest cart with the currently authenticated user\n * Requires both JWT token (for authentication) and orderToken (to identify the cart)\n * @param options - Must include both `token` (JWT) and `orderToken` (guest cart token)\n */\n associate: (options: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('PATCH', '/cart/associate', options),\n };\n\n // ============================================\n // Orders (all orders - complete and incomplete)\n // ============================================\n\n readonly orders = {\n /**\n * List orders for the authenticated customer\n */\n list: (\n params?: OrderListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreOrder>> =>\n this.request<PaginatedResponse<StoreOrder>>('GET', '/orders', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Create a new order (cart)\n */\n create: (options?: RequestOptions): Promise<StoreOrder & { order_token: string }> =>\n this.request<StoreOrder & { order_token: string }>('POST', '/orders', options),\n\n /**\n * Get an order by ID or number\n */\n get: (\n idOrNumber: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('GET', `/orders/${idOrNumber}`, {\n ...options,\n params,\n }),\n\n /**\n * Update an order\n */\n update: (\n idOrNumber: string,\n params: UpdateOrderParams,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}`, {\n ...options,\n body: params,\n }),\n\n /**\n * Advance order to next checkout step\n */\n next: (idOrNumber: string, options?: RequestOptions): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}/next`, options),\n\n /**\n * Advance through all checkout steps\n */\n advance: (idOrNumber: string, options?: RequestOptions): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}/advance`, options),\n\n /**\n * Complete the order\n */\n complete: (idOrNumber: string, options?: RequestOptions): Promise<StoreOrder> =>\n this.request<StoreOrder>('PATCH', `/orders/${idOrNumber}/complete`, options),\n\n /**\n * Add store credit to order\n */\n addStoreCredit: (\n idOrNumber: string,\n amount?: number,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('POST', `/orders/${idOrNumber}/store_credits`, {\n ...options,\n body: amount ? { amount } : undefined,\n }),\n\n /**\n * Remove store credit from order\n */\n removeStoreCredit: (\n idOrNumber: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('DELETE', `/orders/${idOrNumber}/store_credits`, options),\n\n /**\n * Nested resource: Line items\n */\n lineItems: {\n /**\n * Add a line item to an order.\n * Returns the updated order with recalculated totals.\n */\n create: (\n orderId: string,\n params: AddLineItemParams,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('POST', `/orders/${orderId}/line_items`, {\n ...options,\n body: params,\n }),\n\n /**\n * Update a line item quantity.\n * Returns the updated order with recalculated totals.\n */\n update: (\n orderId: string,\n lineItemId: string,\n params: UpdateLineItemParams,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'PATCH',\n `/orders/${orderId}/line_items/${lineItemId}`,\n { ...options, body: params }\n ),\n\n /**\n * Remove a line item from an order.\n * Returns the updated order with recalculated totals.\n */\n delete: (\n orderId: string,\n lineItemId: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'DELETE',\n `/orders/${orderId}/line_items/${lineItemId}`,\n options\n ),\n },\n\n /**\n * Nested resource: Payments\n */\n payments: {\n /**\n * List payments for an order\n */\n list: (\n orderId: string,\n options?: RequestOptions\n ): Promise<{ data: StorePayment[]; meta: object }> =>\n this.request<{ data: StorePayment[]; meta: object }>(\n 'GET',\n `/orders/${orderId}/payments`,\n options\n ),\n\n /**\n * Get a payment by ID\n */\n get: (\n orderId: string,\n paymentId: string,\n options?: RequestOptions\n ): Promise<StorePayment> =>\n this.request<StorePayment>(\n 'GET',\n `/orders/${orderId}/payments/${paymentId}`,\n options\n ),\n },\n\n /**\n * Nested resource: Payment methods\n */\n paymentMethods: {\n /**\n * List available payment methods for an order\n */\n list: (\n orderId: string,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StorePaymentMethod>> =>\n this.request<PaginatedResponse<StorePaymentMethod>>(\n 'GET',\n `/orders/${orderId}/payment_methods`,\n options\n ),\n },\n\n /**\n * Nested resource: Payment sessions\n */\n paymentSessions: {\n /**\n * Create a payment session for an order\n * Delegates to the payment gateway to initialize a provider-specific session\n */\n create: (\n orderId: string,\n params: CreatePaymentSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'POST',\n `/orders/${orderId}/payment_sessions`,\n { ...options, body: params }\n ),\n\n /**\n * Get a payment session by ID\n */\n get: (\n orderId: string,\n sessionId: string,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'GET',\n `/orders/${orderId}/payment_sessions/${sessionId}`,\n options\n ),\n\n /**\n * Update a payment session\n * Delegates to the payment gateway to sync changes with the provider\n */\n update: (\n orderId: string,\n sessionId: string,\n params: UpdatePaymentSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'PATCH',\n `/orders/${orderId}/payment_sessions/${sessionId}`,\n { ...options, body: params }\n ),\n\n /**\n * Complete a payment session\n * Confirms the payment with the provider, triggering capture/authorization\n */\n complete: (\n orderId: string,\n sessionId: string,\n params?: CompletePaymentSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSession> =>\n this.request<StorePaymentSession>(\n 'PATCH',\n `/orders/${orderId}/payment_sessions/${sessionId}/complete`,\n { ...options, body: params }\n ),\n },\n\n /**\n * Nested resource: Coupon codes\n */\n couponCodes: {\n /**\n * Apply a coupon code to an order\n */\n apply: (\n orderId: string,\n code: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>('POST', `/orders/${orderId}/coupon_codes`, {\n ...options,\n body: { code },\n }),\n\n /**\n * Remove a coupon code from an order\n * @param promotionId - The promotion prefix_id (e.g., 'promo_xxx')\n */\n remove: (\n orderId: string,\n promotionId: string,\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'DELETE',\n `/orders/${orderId}/coupon_codes/${promotionId}`,\n options\n ),\n },\n\n /**\n * Nested resource: Shipments\n */\n shipments: {\n /**\n * List shipments for an order\n */\n list: (\n orderId: string,\n options?: RequestOptions\n ): Promise<{ data: StoreShipment[] }> =>\n this.request<{ data: StoreShipment[] }>(\n 'GET',\n `/orders/${orderId}/shipments`,\n options\n ),\n\n /**\n * Select a shipping rate for a shipment.\n * Returns the updated order with recalculated totals.\n */\n update: (\n orderId: string,\n shipmentId: string,\n params: { selected_shipping_rate_id: string },\n options?: RequestOptions\n ): Promise<StoreOrder> =>\n this.request<StoreOrder>(\n 'PATCH',\n `/orders/${orderId}/shipments/${shipmentId}`,\n { ...options, body: params }\n ),\n },\n };\n\n // ============================================\n // Customer\n // ============================================\n\n readonly customer = {\n /**\n * Get current customer profile\n */\n get: (options?: RequestOptions): Promise<StoreCustomer> =>\n this.request<StoreCustomer>('GET', '/customer', options),\n\n /**\n * Update current customer profile\n */\n update: (\n params: {\n first_name?: string\n last_name?: string\n email?: string\n password?: string\n password_confirmation?: string\n accepts_email_marketing?: boolean\n phone?: string\n },\n options?: RequestOptions\n ): Promise<StoreCustomer> =>\n this.request<StoreCustomer>('PATCH', '/customer', {\n ...options,\n body: params,\n }),\n\n /**\n * Nested resource: Addresses\n */\n addresses: {\n /**\n * List customer addresses\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreAddress>> =>\n this.request<PaginatedResponse<StoreAddress>>(\n 'GET',\n '/customer/addresses',\n { ...options, params: params as Record<string, string | number | undefined> }\n ),\n\n /**\n * Get an address by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StoreAddress> =>\n this.request<StoreAddress>('GET', `/customer/addresses/${id}`, options),\n\n /**\n * Create an address\n */\n create: (\n params: AddressParams,\n options?: RequestOptions\n ): Promise<StoreAddress> =>\n this.request<StoreAddress>('POST', '/customer/addresses', {\n ...options,\n body: params,\n }),\n\n /**\n * Update an address\n */\n update: (\n id: string,\n params: Partial<AddressParams>,\n options?: RequestOptions\n ): Promise<StoreAddress> =>\n this.request<StoreAddress>('PATCH', `/customer/addresses/${id}`, {\n ...options,\n body: params,\n }),\n\n /**\n * Delete an address\n */\n delete: (id: string, options?: RequestOptions): Promise<void> =>\n this.request<void>('DELETE', `/customer/addresses/${id}`, options),\n\n /**\n * Mark an address as default billing or shipping\n */\n markAsDefault: (\n id: string,\n kind: 'billing' | 'shipping',\n options?: RequestOptions\n ): Promise<StoreAddress> =>\n this.request<StoreAddress>('PATCH', `/customer/addresses/${id}/mark_as_default`, {\n ...options,\n body: { kind },\n }),\n },\n\n /**\n * Nested resource: Credit Cards\n */\n creditCards: {\n /**\n * List customer credit cards\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreCreditCard>> =>\n this.request<PaginatedResponse<StoreCreditCard>>(\n 'GET',\n '/customer/credit_cards',\n { ...options, params: params as Record<string, string | number | undefined> }\n ),\n\n /**\n * Get a credit card by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StoreCreditCard> =>\n this.request<StoreCreditCard>('GET', `/customer/credit_cards/${id}`, options),\n\n /**\n * Delete a credit card\n */\n delete: (id: string, options?: RequestOptions): Promise<void> =>\n this.request<void>('DELETE', `/customer/credit_cards/${id}`, options),\n },\n\n /**\n * Nested resource: Gift Cards\n */\n giftCards: {\n /**\n * List customer gift cards\n * Returns gift cards associated with the current user, ordered by newest first\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreGiftCard>> =>\n this.request<PaginatedResponse<StoreGiftCard>>(\n 'GET',\n '/customer/gift_cards',\n { ...options, params: params as Record<string, string | number | undefined> }\n ),\n\n /**\n * Get a gift card by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StoreGiftCard> =>\n this.request<StoreGiftCard>('GET', `/customer/gift_cards/${id}`, options),\n },\n\n /**\n * Nested resource: Payment Setup Sessions (save payment methods for future use)\n */\n paymentSetupSessions: {\n /**\n * Create a payment setup session\n * Delegates to the payment gateway to initialize a setup flow for saving a payment method\n */\n create: (\n params: CreatePaymentSetupSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSetupSession> =>\n this.request<StorePaymentSetupSession>(\n 'POST',\n '/customer/payment_setup_sessions',\n { ...options, body: params }\n ),\n\n /**\n * Get a payment setup session by ID\n */\n get: (id: string, options?: RequestOptions): Promise<StorePaymentSetupSession> =>\n this.request<StorePaymentSetupSession>('GET', `/customer/payment_setup_sessions/${id}`, options),\n\n /**\n * Complete a payment setup session\n * Confirms the setup with the provider, resulting in a saved payment method\n */\n complete: (\n id: string,\n params?: CompletePaymentSetupSessionParams,\n options?: RequestOptions\n ): Promise<StorePaymentSetupSession> =>\n this.request<StorePaymentSetupSession>(\n 'PATCH',\n `/customer/payment_setup_sessions/${id}/complete`,\n { ...options, body: params }\n ),\n },\n };\n\n // ============================================\n // Wishlists\n // ============================================\n\n readonly wishlists = {\n /**\n * List wishlists\n */\n list: (\n params?: ListParams,\n options?: RequestOptions\n ): Promise<PaginatedResponse<StoreWishlist>> =>\n this.request<PaginatedResponse<StoreWishlist>>('GET', '/wishlists', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\n\n /**\n * Get a wishlist by ID\n */\n get: (\n id: string,\n params?: { includes?: string },\n options?: RequestOptions\n ): Promise<StoreWishlist> =>\n this.request<StoreWishlist>('GET', `/wishlists/${id}`, {\n ...options,\n params,\n }),\n\n /**\n * Create a wishlist\n */\n create: (\n params: { name: string; is_private?: boolean; is_default?: boolean },\n options?: RequestOptions\n ): Promise<StoreWishlist> =>\n this.request<StoreWishlist>('POST', '/wishlists', {\n ...options,\n body: params,\n }),\n\n /**\n * Update a wishlist\n */\n update: (\n id: string,\n params: { name?: string; is_private?: boolean; is_default?: boolean },\n options?: RequestOptions\n ): Promise<StoreWishlist> =>\n this.request<StoreWishlist>('PATCH', `/wishlists/${id}`, {\n ...options,\n body: params,\n }),\n\n /**\n * Delete a wishlist\n */\n delete: (id: string, options?: RequestOptions): Promise<void> =>\n this.request<void>('DELETE', `/wishlists/${id}`, options),\n\n /**\n * Nested resource: Wishlist items\n */\n items: {\n /**\n * Add an item to a wishlist\n */\n create: (\n wishlistId: string,\n params: { variant_id: string; quantity?: number },\n options?: RequestOptions\n ): Promise<StoreWishedItem> =>\n this.request<StoreWishedItem>('POST', `/wishlists/${wishlistId}/items`, {\n ...options,\n body: params,\n }),\n\n /**\n * Update a wishlist item\n */\n update: (\n wishlistId: string,\n itemId: string,\n params: { quantity: number },\n options?: RequestOptions\n ): Promise<StoreWishedItem> =>\n this.request<StoreWishedItem>(\n 'PATCH',\n `/wishlists/${wishlistId}/items/${itemId}`,\n { ...options, body: params }\n ),\n\n /**\n * Remove an item from a wishlist\n */\n delete: (\n wishlistId: string,\n itemId: string,\n options?: RequestOptions\n ): Promise<void> =>\n this.request<void>(\n 'DELETE',\n `/wishlists/${wishlistId}/items/${itemId}`,\n options\n ),\n },\n };\n}\n","import type { RequestFn } from './request';\n\nexport class AdminClient {\n /** @internal */\n private readonly request: RequestFn;\n\n constructor(request: RequestFn) {\n this.request = request;\n\n // Prevent \"unused\" TS error — will be used as admin endpoints are added\n void this.request;\n }\n}\n","import { createRequestFn } from './request';\nimport type { RetryConfig, RequestConfig } from './request';\nimport { StoreClient } from './store-client';\nimport { AdminClient } from './admin-client';\n\n// Re-export types for convenience\nexport type { AddressParams, StoreCreditCard } from './types';\n\nexport interface SpreeClientConfig {\n /** Base URL of the Spree API (e.g., 'https://api.mystore.com') */\n baseUrl: string;\n /** Publishable API key for Store API access */\n publishableKey: string;\n /** Secret API key for Admin API access (optional) */\n secretKey?: string;\n /** Custom fetch implementation (optional, defaults to global fetch) */\n fetch?: typeof fetch;\n /** Retry configuration. Enabled by default. Pass false to disable. */\n retry?: RetryConfig | false;\n}\n\nexport class SpreeClient {\n /** Store API — customer-facing endpoints (products, cart, checkout, account) */\n readonly store: StoreClient;\n /** Admin API — administrative endpoints (manage orders, products, settings) */\n readonly admin: AdminClient;\n\n constructor(config: SpreeClientConfig) {\n const baseUrl = config.baseUrl.replace(/\\/$/, '');\n // Bind fetch to globalThis to avoid \"Illegal invocation\" errors in browsers\n const fetchFn = config.fetch || fetch.bind(globalThis);\n\n let retryConfig: Required<RetryConfig> | false;\n if (config.retry === false) {\n retryConfig = false;\n } else {\n retryConfig = {\n maxRetries: config.retry?.maxRetries ?? 2,\n retryOnStatus: config.retry?.retryOnStatus ?? [429, 500, 502, 503, 504],\n baseDelay: config.retry?.baseDelay ?? 300,\n maxDelay: config.retry?.maxDelay ?? 10000,\n retryOnNetworkError: config.retry?.retryOnNetworkError ?? true,\n };\n }\n\n const requestConfig: RequestConfig = { baseUrl, fetchFn, retryConfig };\n\n const storeRequestFn = createRequestFn(\n requestConfig,\n '/api/v3/store',\n { headerName: 'x-spree-api-key', headerValue: config.publishableKey }\n );\n\n const adminRequestFn = createRequestFn(\n requestConfig,\n '/api/v3/admin',\n {\n headerName: 'Authorization',\n headerValue: config.secretKey ? `Bearer ${config.secretKey}` : '',\n }\n );\n\n this.store = new StoreClient(storeRequestFn);\n this.admin = new AdminClient(adminRequestFn);\n }\n}\n\n/**\n * Create a new Spree SDK client\n */\nexport function createSpreeClient(config: SpreeClientConfig): SpreeClient {\n return new SpreeClient(config);\n}\n"]}
@@ -312,6 +312,7 @@ type StoreLineItem = {
312
312
  id: string;
313
313
  variant_id: string;
314
314
  quantity: number;
315
+ currency: string;
315
316
  name: string;
316
317
  slug: string;
317
318
  options_text: string;
@@ -432,6 +433,9 @@ type StorePayment = {
432
433
  display_amount: string;
433
434
  created_at: string;
434
435
  updated_at: string;
436
+ source_type: 'credit_card' | 'store_credit' | 'payment_source' | null;
437
+ source_id: string | null;
438
+ source: StoreCreditCard | StoreStoreCredit | StorePaymentSource | null;
435
439
  payment_method: StorePaymentMethod;
436
440
  };
437
441
 
@@ -452,6 +456,27 @@ type StorePaymentSession = {
452
456
  payment?: StorePayment;
453
457
  };
454
458
 
459
+ type StorePaymentSetupSession = {
460
+ id: string;
461
+ status: string;
462
+ external_id: string | null;
463
+ external_client_secret: string | null;
464
+ external_data: Record<string, unknown>;
465
+ created_at: string;
466
+ updated_at: string;
467
+ payment_method_id: string | null;
468
+ payment_source_id: string | null;
469
+ payment_source_type: string | null;
470
+ customer_id: string | null;
471
+ payment_method: StorePaymentMethod;
472
+ };
473
+
474
+ type StorePaymentSource = {
475
+ id: string;
476
+ gateway_payment_profile_id: string | null;
477
+ public_metadata: Record<string, unknown> | null;
478
+ };
479
+
455
480
  type StorePrice = {
456
481
  id: string;
457
482
  amount: string | null;
@@ -542,6 +567,17 @@ type StoreStockLocation = {
542
567
  state_text: string | null;
543
568
  };
544
569
 
570
+ type StoreStoreCredit = {
571
+ id: string;
572
+ amount: string;
573
+ amount_used: string;
574
+ amount_remaining: string;
575
+ display_amount: string;
576
+ display_amount_used: string;
577
+ display_amount_remaining: string;
578
+ currency: string;
579
+ };
580
+
545
581
  type StoreStore = {
546
582
  id: string;
547
583
  name: string;
@@ -761,6 +797,13 @@ interface CompletePaymentSessionParams {
761
797
  session_result?: string;
762
798
  external_data?: Record<string, unknown>;
763
799
  }
800
+ interface CreatePaymentSetupSessionParams {
801
+ payment_method_id: string;
802
+ external_data?: Record<string, unknown>;
803
+ }
804
+ interface CompletePaymentSetupSessionParams {
805
+ external_data?: Record<string, unknown>;
806
+ }
764
807
  interface FilterOption {
765
808
  id: string;
766
809
  label: string;
@@ -816,4 +859,4 @@ interface ProductFiltersParams {
816
859
  q?: Record<string, unknown>;
817
860
  }
818
861
 
819
- export type { AddLineItemParams, AddressParams, AdminCustomer, AdminMetafield, AdminOrder, AdminPrice, AdminProduct, AdminTaxon, AdminTaxonomy, AdminVariant, AuthTokens, AvailabilityFilter, CompletePaymentSessionParams, CreatePaymentSessionParams, ErrorResponse, FilterOption, ListParams, LoginCredentials, OptionFilter, OptionFilterOption, OrderListParams, PaginatedResponse, PaginationMeta, PriceRangeFilter, ProductFilter, ProductFiltersParams, ProductFiltersResponse, ProductListParams, RegisterParams, SortOption, StoreAddress, StoreBase, StoreCountry, StoreCreditCard, StoreCustomer, StoreDigitalLink, StoreGiftCard, StoreImage, StoreLineItem, StoreMetafield, StoreOptionType, StoreOptionValue, StoreOrder, StoreOrderPromotion, StorePayment, StorePaymentMethod, StorePaymentSession, StorePrice, StoreProduct, StoreShipment, StoreShippingMethod, StoreShippingRate, StoreState, StoreStockLocation, StoreStore, StoreTaxon, StoreTaxonomy, StoreVariant, StoreWishedItem, StoreWishlist, TaxonFilter, TaxonFilterOption, TaxonListParams, UpdateLineItemParams, UpdateOrderParams, UpdatePaymentSessionParams };
862
+ export type { AddLineItemParams, AddressParams, AdminCustomer, AdminMetafield, AdminOrder, AdminPrice, AdminProduct, AdminTaxon, AdminTaxonomy, AdminVariant, AuthTokens, AvailabilityFilter, CompletePaymentSessionParams, CompletePaymentSetupSessionParams, CreatePaymentSessionParams, CreatePaymentSetupSessionParams, ErrorResponse, FilterOption, ListParams, LoginCredentials, OptionFilter, OptionFilterOption, OrderListParams, PaginatedResponse, PaginationMeta, PriceRangeFilter, ProductFilter, ProductFiltersParams, ProductFiltersResponse, ProductListParams, RegisterParams, SortOption, StoreAddress, StoreBase, StoreCountry, StoreCreditCard, StoreCustomer, StoreDigitalLink, StoreGiftCard, StoreImage, StoreLineItem, StoreMetafield, StoreOptionType, StoreOptionValue, StoreOrder, StoreOrderPromotion, StorePayment, StorePaymentMethod, StorePaymentSession, StorePaymentSetupSession, StorePaymentSource, StorePrice, StoreProduct, StoreShipment, StoreShippingMethod, StoreShippingRate, StoreState, StoreStockLocation, StoreStore, StoreStoreCredit, StoreTaxon, StoreTaxonomy, StoreVariant, StoreWishedItem, StoreWishlist, TaxonFilter, TaxonFilterOption, TaxonListParams, UpdateLineItemParams, UpdateOrderParams, UpdatePaymentSessionParams };
@@ -312,6 +312,7 @@ type StoreLineItem = {
312
312
  id: string;
313
313
  variant_id: string;
314
314
  quantity: number;
315
+ currency: string;
315
316
  name: string;
316
317
  slug: string;
317
318
  options_text: string;
@@ -432,6 +433,9 @@ type StorePayment = {
432
433
  display_amount: string;
433
434
  created_at: string;
434
435
  updated_at: string;
436
+ source_type: 'credit_card' | 'store_credit' | 'payment_source' | null;
437
+ source_id: string | null;
438
+ source: StoreCreditCard | StoreStoreCredit | StorePaymentSource | null;
435
439
  payment_method: StorePaymentMethod;
436
440
  };
437
441
 
@@ -452,6 +456,27 @@ type StorePaymentSession = {
452
456
  payment?: StorePayment;
453
457
  };
454
458
 
459
+ type StorePaymentSetupSession = {
460
+ id: string;
461
+ status: string;
462
+ external_id: string | null;
463
+ external_client_secret: string | null;
464
+ external_data: Record<string, unknown>;
465
+ created_at: string;
466
+ updated_at: string;
467
+ payment_method_id: string | null;
468
+ payment_source_id: string | null;
469
+ payment_source_type: string | null;
470
+ customer_id: string | null;
471
+ payment_method: StorePaymentMethod;
472
+ };
473
+
474
+ type StorePaymentSource = {
475
+ id: string;
476
+ gateway_payment_profile_id: string | null;
477
+ public_metadata: Record<string, unknown> | null;
478
+ };
479
+
455
480
  type StorePrice = {
456
481
  id: string;
457
482
  amount: string | null;
@@ -542,6 +567,17 @@ type StoreStockLocation = {
542
567
  state_text: string | null;
543
568
  };
544
569
 
570
+ type StoreStoreCredit = {
571
+ id: string;
572
+ amount: string;
573
+ amount_used: string;
574
+ amount_remaining: string;
575
+ display_amount: string;
576
+ display_amount_used: string;
577
+ display_amount_remaining: string;
578
+ currency: string;
579
+ };
580
+
545
581
  type StoreStore = {
546
582
  id: string;
547
583
  name: string;
@@ -761,6 +797,13 @@ interface CompletePaymentSessionParams {
761
797
  session_result?: string;
762
798
  external_data?: Record<string, unknown>;
763
799
  }
800
+ interface CreatePaymentSetupSessionParams {
801
+ payment_method_id: string;
802
+ external_data?: Record<string, unknown>;
803
+ }
804
+ interface CompletePaymentSetupSessionParams {
805
+ external_data?: Record<string, unknown>;
806
+ }
764
807
  interface FilterOption {
765
808
  id: string;
766
809
  label: string;
@@ -816,4 +859,4 @@ interface ProductFiltersParams {
816
859
  q?: Record<string, unknown>;
817
860
  }
818
861
 
819
- export type { AddLineItemParams, AddressParams, AdminCustomer, AdminMetafield, AdminOrder, AdminPrice, AdminProduct, AdminTaxon, AdminTaxonomy, AdminVariant, AuthTokens, AvailabilityFilter, CompletePaymentSessionParams, CreatePaymentSessionParams, ErrorResponse, FilterOption, ListParams, LoginCredentials, OptionFilter, OptionFilterOption, OrderListParams, PaginatedResponse, PaginationMeta, PriceRangeFilter, ProductFilter, ProductFiltersParams, ProductFiltersResponse, ProductListParams, RegisterParams, SortOption, StoreAddress, StoreBase, StoreCountry, StoreCreditCard, StoreCustomer, StoreDigitalLink, StoreGiftCard, StoreImage, StoreLineItem, StoreMetafield, StoreOptionType, StoreOptionValue, StoreOrder, StoreOrderPromotion, StorePayment, StorePaymentMethod, StorePaymentSession, StorePrice, StoreProduct, StoreShipment, StoreShippingMethod, StoreShippingRate, StoreState, StoreStockLocation, StoreStore, StoreTaxon, StoreTaxonomy, StoreVariant, StoreWishedItem, StoreWishlist, TaxonFilter, TaxonFilterOption, TaxonListParams, UpdateLineItemParams, UpdateOrderParams, UpdatePaymentSessionParams };
862
+ export type { AddLineItemParams, AddressParams, AdminCustomer, AdminMetafield, AdminOrder, AdminPrice, AdminProduct, AdminTaxon, AdminTaxonomy, AdminVariant, AuthTokens, AvailabilityFilter, CompletePaymentSessionParams, CompletePaymentSetupSessionParams, CreatePaymentSessionParams, CreatePaymentSetupSessionParams, ErrorResponse, FilterOption, ListParams, LoginCredentials, OptionFilter, OptionFilterOption, OrderListParams, PaginatedResponse, PaginationMeta, PriceRangeFilter, ProductFilter, ProductFiltersParams, ProductFiltersResponse, ProductListParams, RegisterParams, SortOption, StoreAddress, StoreBase, StoreCountry, StoreCreditCard, StoreCustomer, StoreDigitalLink, StoreGiftCard, StoreImage, StoreLineItem, StoreMetafield, StoreOptionType, StoreOptionValue, StoreOrder, StoreOrderPromotion, StorePayment, StorePaymentMethod, StorePaymentSession, StorePaymentSetupSession, StorePaymentSource, StorePrice, StoreProduct, StoreShipment, StoreShippingMethod, StoreShippingRate, StoreState, StoreStockLocation, StoreStore, StoreStoreCredit, StoreTaxon, StoreTaxonomy, StoreVariant, StoreWishedItem, StoreWishlist, TaxonFilter, TaxonFilterOption, TaxonListParams, UpdateLineItemParams, UpdateOrderParams, UpdatePaymentSessionParams };
@@ -20,15 +20,6 @@ var StoreAddressSchema = zod.z.object({
20
20
  state_abbr: zod.z.string().nullable(),
21
21
  state_name: zod.z.string().nullable()
22
22
  });
23
- var StoreOptionValueSchema = zod.z.object({
24
- id: zod.z.string(),
25
- option_type_id: zod.z.string(),
26
- name: zod.z.string(),
27
- presentation: zod.z.string(),
28
- position: zod.z.number(),
29
- option_type_name: zod.z.string(),
30
- option_type_presentation: zod.z.string()
31
- });
32
23
  var StoreDigitalLinkSchema = zod.z.object({
33
24
  id: zod.z.string(),
34
25
  access_counter: zod.z.number(),
@@ -40,12 +31,22 @@ var StoreDigitalLinkSchema = zod.z.object({
40
31
  expired: zod.z.boolean(),
41
32
  access_limit_exceeded: zod.z.boolean()
42
33
  });
34
+ var StoreOptionValueSchema = zod.z.object({
35
+ id: zod.z.string(),
36
+ option_type_id: zod.z.string(),
37
+ name: zod.z.string(),
38
+ presentation: zod.z.string(),
39
+ position: zod.z.number(),
40
+ option_type_name: zod.z.string(),
41
+ option_type_presentation: zod.z.string()
42
+ });
43
43
 
44
44
  // src/zod/generated/StoreLineItem.ts
45
45
  var StoreLineItemSchema = zod.z.object({
46
46
  id: zod.z.string(),
47
47
  variant_id: zod.z.string(),
48
48
  quantity: zod.z.number(),
49
+ currency: zod.z.string(),
49
50
  name: zod.z.string(),
50
51
  slug: zod.z.string(),
51
52
  options_text: zod.z.string(),
@@ -86,7 +87,8 @@ var StorePaymentMethodSchema = zod.z.object({
86
87
  id: zod.z.string(),
87
88
  name: zod.z.string(),
88
89
  description: zod.z.string().nullable(),
89
- type: zod.z.string()
90
+ type: zod.z.string(),
91
+ session_required: zod.z.boolean()
90
92
  });
91
93
 
92
94
  // src/zod/generated/StorePayment.ts
@@ -100,6 +102,9 @@ var StorePaymentSchema = zod.z.object({
100
102
  display_amount: zod.z.string(),
101
103
  created_at: zod.z.string(),
102
104
  updated_at: zod.z.string(),
105
+ source_type: zod.z.string().nullable(),
106
+ source_id: zod.z.string().nullable(),
107
+ source: zod.z.any(),
103
108
  payment_method: StorePaymentMethodSchema
104
109
  });
105
110
  var StoreShippingMethodSchema = zod.z.object({
@@ -176,12 +181,12 @@ var AdminOrderSchema = zod.z.object({
176
181
  completed_at: zod.z.string().nullable(),
177
182
  created_at: zod.z.string(),
178
183
  updated_at: zod.z.string(),
179
- order_promotions: zod.z.array(StoreOrderPromotionSchema).optional(),
180
- line_items: zod.z.array(StoreLineItemSchema).optional(),
181
- shipments: zod.z.array(StoreShipmentSchema).optional(),
182
- payments: zod.z.array(StorePaymentSchema).optional(),
183
- bill_address: StoreAddressSchema.optional(),
184
- ship_address: StoreAddressSchema.optional(),
184
+ order_promotions: zod.z.array(StoreOrderPromotionSchema),
185
+ line_items: zod.z.array(StoreLineItemSchema),
186
+ shipments: zod.z.array(StoreShipmentSchema),
187
+ payments: zod.z.array(StorePaymentSchema),
188
+ bill_address: StoreAddressSchema.nullable(),
189
+ ship_address: StoreAddressSchema.nullable(),
185
190
  payment_methods: zod.z.array(StorePaymentMethodSchema),
186
191
  channel: zod.z.string().nullable(),
187
192
  last_ip_address: zod.z.string().nullable(),
@@ -443,7 +448,8 @@ var StoreCreditCardSchema = zod.z.object({
443
448
  month: zod.z.number(),
444
449
  year: zod.z.number(),
445
450
  name: zod.z.string().nullable(),
446
- default: zod.z.boolean()
451
+ default: zod.z.boolean(),
452
+ gateway_payment_profile_id: zod.z.string().nullable()
447
453
  });
448
454
  var StoreCustomerSchema = zod.z.object({
449
455
  id: zod.z.string(),
@@ -505,14 +511,35 @@ var StoreOrderSchema = zod.z.object({
505
511
  completed_at: zod.z.string().nullable(),
506
512
  created_at: zod.z.string(),
507
513
  updated_at: zod.z.string(),
508
- order_promotions: zod.z.array(StoreOrderPromotionSchema).optional(),
509
- line_items: zod.z.array(StoreLineItemSchema).optional(),
510
- shipments: zod.z.array(StoreShipmentSchema).optional(),
511
- payments: zod.z.array(StorePaymentSchema).optional(),
512
- bill_address: StoreAddressSchema.optional(),
513
- ship_address: StoreAddressSchema.optional(),
514
+ order_promotions: zod.z.array(StoreOrderPromotionSchema),
515
+ line_items: zod.z.array(StoreLineItemSchema),
516
+ shipments: zod.z.array(StoreShipmentSchema),
517
+ payments: zod.z.array(StorePaymentSchema),
518
+ bill_address: StoreAddressSchema.nullable(),
519
+ ship_address: StoreAddressSchema.nullable(),
514
520
  payment_methods: zod.z.array(StorePaymentMethodSchema)
515
521
  });
522
+ var StorePaymentSessionSchema = zod.z.object({
523
+ id: zod.z.string(),
524
+ status: zod.z.string(),
525
+ currency: zod.z.string(),
526
+ external_id: zod.z.string(),
527
+ external_data: zod.z.record(zod.z.string(), zod.z.unknown()),
528
+ customer_external_id: zod.z.string().nullable(),
529
+ expires_at: zod.z.string().nullable(),
530
+ created_at: zod.z.string(),
531
+ updated_at: zod.z.string(),
532
+ amount: zod.z.string(),
533
+ payment_method_id: zod.z.string(),
534
+ order_id: zod.z.string(),
535
+ payment_method: StorePaymentMethodSchema,
536
+ payment: StorePaymentSchema.optional()
537
+ });
538
+ var StorePaymentSourceSchema = zod.z.object({
539
+ id: zod.z.string(),
540
+ gateway_payment_profile_id: zod.z.string().nullable(),
541
+ public_metadata: zod.z.record(zod.z.string(), zod.z.unknown()).nullable()
542
+ });
516
543
  var StoreVariantSchema = zod.z.object({
517
544
  id: zod.z.string(),
518
545
  product_id: zod.z.string(),
@@ -592,6 +619,16 @@ var StoreStoreSchema = zod.z.object({
592
619
  supported_locales: zod.z.array(zod.z.string()),
593
620
  payment_methods: zod.z.array(StorePaymentMethodSchema)
594
621
  });
622
+ var StoreStoreCreditSchema = zod.z.object({
623
+ id: zod.z.string(),
624
+ amount: zod.z.string(),
625
+ amount_used: zod.z.string(),
626
+ amount_remaining: zod.z.string(),
627
+ display_amount: zod.z.string(),
628
+ display_amount_used: zod.z.string(),
629
+ display_amount_remaining: zod.z.string(),
630
+ currency: zod.z.string()
631
+ });
595
632
  var StoreTaxonomySchema = zod.z.object({
596
633
  id: zod.z.string(),
597
634
  name: zod.z.string(),
@@ -647,6 +684,8 @@ exports.StoreOrderPromotionSchema = StoreOrderPromotionSchema;
647
684
  exports.StoreOrderSchema = StoreOrderSchema;
648
685
  exports.StorePaymentMethodSchema = StorePaymentMethodSchema;
649
686
  exports.StorePaymentSchema = StorePaymentSchema;
687
+ exports.StorePaymentSessionSchema = StorePaymentSessionSchema;
688
+ exports.StorePaymentSourceSchema = StorePaymentSourceSchema;
650
689
  exports.StorePriceSchema = StorePriceSchema;
651
690
  exports.StoreProductSchema = StoreProductSchema;
652
691
  exports.StoreShipmentSchema = StoreShipmentSchema;
@@ -654,6 +693,7 @@ exports.StoreShippingMethodSchema = StoreShippingMethodSchema;
654
693
  exports.StoreShippingRateSchema = StoreShippingRateSchema;
655
694
  exports.StoreStateSchema = StoreStateSchema;
656
695
  exports.StoreStockLocationSchema = StoreStockLocationSchema;
696
+ exports.StoreStoreCreditSchema = StoreStoreCreditSchema;
657
697
  exports.StoreStoreSchema = StoreStoreSchema;
658
698
  exports.StoreTaxonSchema = StoreTaxonSchema;
659
699
  exports.StoreTaxonomySchema = StoreTaxonomySchema;