@spree/sdk 0.3.1 → 0.4.0

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 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\n */\n create: (options?: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('POST', '/cart', 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 (individual order management & checkout)\n // ============================================\n\n readonly orders = {\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: Orders (customer order history)\n */\n 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', '/customer/orders', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\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"]}
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 /** Country ISO code for market resolution (e.g., 'US', 'DE') */\n country?: 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, country, 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 if (country) {\n requestHeaders['x-spree-country'] = country;\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 StoreMarket,\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 // Markets & Geography\n // ============================================\n\n readonly markets = {\n /**\n * List all markets with their countries\n * Used to build a country/currency switcher on the frontend\n */\n list: (options?: RequestOptions): Promise<{ data: StoreMarket[] }> =>\n this.request<{ data: StoreMarket[] }>('GET', '/markets', options),\n\n /**\n * Get a single market by prefixed ID\n * @param id - Market prefixed ID (e.g., \"mkt_abc123\")\n */\n get: (id: string, options?: RequestOptions): Promise<StoreMarket> =>\n this.request<StoreMarket>('GET', `/markets/${id}`, options),\n\n /**\n * Resolve which market a country belongs to\n * @param countryIso - ISO 3166-1 alpha-2 code (e.g., \"US\", \"DE\")\n */\n resolve: (\n countryIso: string,\n options?: RequestOptions\n ): Promise<StoreMarket> =>\n this.request<StoreMarket>('GET', '/markets/resolve', {\n ...options,\n params: { country: countryIso },\n }),\n\n /**\n * Nested resource: Countries within a market (for checkout address forms)\n */\n countries: {\n /**\n * List countries in a market's zone\n * @param marketId - Market prefixed ID (e.g., \"mkt_abc123\")\n */\n list: (\n marketId: string,\n options?: RequestOptions\n ): Promise<{ data: StoreCountry[] }> =>\n this.request<{ data: StoreCountry[] }>(\n 'GET',\n `/markets/${marketId}/countries`,\n options\n ),\n\n /**\n * Get a country by ISO code with states (for address form validation)\n * @param marketId - Market prefixed ID (e.g., \"mkt_abc123\")\n * @param iso - ISO 3166-1 alpha-2 code (e.g., \"US\", \"DE\")\n */\n get: (\n marketId: string,\n iso: string,\n options?: RequestOptions\n ): Promise<StoreCountry> =>\n this.request<StoreCountry>(\n 'GET',\n `/markets/${marketId}/countries/${iso}`,\n options\n ),\n },\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\n */\n create: (options?: RequestOptions): Promise<StoreOrder & { token: string }> =>\n this.request<StoreOrder & { token: string }>('POST', '/cart', 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 (individual order management & checkout)\n // ============================================\n\n readonly orders = {\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: Orders (customer order history)\n */\n 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', '/customer/orders', {\n ...options,\n params: params as Record<string, string | number | undefined>,\n }),\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"]}
@@ -24,8 +24,8 @@ type AdminCustomer = {
24
24
  created_at: string;
25
25
  updated_at: string;
26
26
  addresses: Array<StoreAddress>;
27
- default_billing_address: StoreAddress;
28
- default_shipping_address: StoreAddress;
27
+ default_billing_address: StoreAddress | null;
28
+ default_shipping_address: StoreAddress | null;
29
29
  phone: string | null;
30
30
  login: string | null;
31
31
  accepts_email_marketing: boolean;
@@ -231,8 +231,6 @@ type StoreCountry = {
231
231
  name: string;
232
232
  states_required: boolean;
233
233
  zipcode_required: boolean;
234
- default_currency: string | null;
235
- default_locale: string | null;
236
234
  states?: Array<StoreState>;
237
235
  };
238
236
 
@@ -255,8 +253,8 @@ type StoreCustomer = {
255
253
  created_at: string;
256
254
  updated_at: string;
257
255
  addresses: Array<StoreAddress>;
258
- default_billing_address: StoreAddress;
259
- default_shipping_address: StoreAddress;
256
+ default_billing_address: StoreAddress | null;
257
+ default_shipping_address: StoreAddress | null;
260
258
  };
261
259
 
262
260
  type StoreDigitalLink = {
@@ -342,6 +340,17 @@ type StoreLineItem = {
342
340
  digital_links: Array<StoreDigitalLink>;
343
341
  };
344
342
 
343
+ type StoreMarket = {
344
+ id: string;
345
+ name: string;
346
+ currency: string;
347
+ default_locale: string;
348
+ tax_inclusive: boolean;
349
+ default: boolean;
350
+ supported_locales: Array<string>;
351
+ countries: Array<StoreCountry>;
352
+ };
353
+
345
354
  type StoreMetafield = {
346
355
  id: string;
347
356
  name: string;
@@ -860,4 +869,4 @@ interface ProductFiltersParams {
860
869
  q?: Record<string, unknown>;
861
870
  }
862
871
 
863
- 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 };
872
+ 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, StoreMarket, 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 };
@@ -24,8 +24,8 @@ type AdminCustomer = {
24
24
  created_at: string;
25
25
  updated_at: string;
26
26
  addresses: Array<StoreAddress>;
27
- default_billing_address: StoreAddress;
28
- default_shipping_address: StoreAddress;
27
+ default_billing_address: StoreAddress | null;
28
+ default_shipping_address: StoreAddress | null;
29
29
  phone: string | null;
30
30
  login: string | null;
31
31
  accepts_email_marketing: boolean;
@@ -231,8 +231,6 @@ type StoreCountry = {
231
231
  name: string;
232
232
  states_required: boolean;
233
233
  zipcode_required: boolean;
234
- default_currency: string | null;
235
- default_locale: string | null;
236
234
  states?: Array<StoreState>;
237
235
  };
238
236
 
@@ -255,8 +253,8 @@ type StoreCustomer = {
255
253
  created_at: string;
256
254
  updated_at: string;
257
255
  addresses: Array<StoreAddress>;
258
- default_billing_address: StoreAddress;
259
- default_shipping_address: StoreAddress;
256
+ default_billing_address: StoreAddress | null;
257
+ default_shipping_address: StoreAddress | null;
260
258
  };
261
259
 
262
260
  type StoreDigitalLink = {
@@ -342,6 +340,17 @@ type StoreLineItem = {
342
340
  digital_links: Array<StoreDigitalLink>;
343
341
  };
344
342
 
343
+ type StoreMarket = {
344
+ id: string;
345
+ name: string;
346
+ currency: string;
347
+ default_locale: string;
348
+ tax_inclusive: boolean;
349
+ default: boolean;
350
+ supported_locales: Array<string>;
351
+ countries: Array<StoreCountry>;
352
+ };
353
+
345
354
  type StoreMetafield = {
346
355
  id: string;
347
356
  name: string;
@@ -860,4 +869,4 @@ interface ProductFiltersParams {
860
869
  q?: Record<string, unknown>;
861
870
  }
862
871
 
863
- 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 };
872
+ 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, StoreMarket, 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 };
@@ -212,8 +212,8 @@ var AdminCustomerSchema = zod.z.object({
212
212
  created_at: zod.z.string(),
213
213
  updated_at: zod.z.string(),
214
214
  addresses: zod.z.array(StoreAddressSchema),
215
- default_billing_address: StoreAddressSchema,
216
- default_shipping_address: StoreAddressSchema,
215
+ default_billing_address: StoreAddressSchema.nullable(),
216
+ default_shipping_address: StoreAddressSchema.nullable(),
217
217
  phone: zod.z.string().nullable(),
218
218
  login: zod.z.string().nullable(),
219
219
  accepts_email_marketing: zod.z.boolean(),
@@ -438,8 +438,6 @@ var StoreCountrySchema = zod.z.object({
438
438
  name: zod.z.string(),
439
439
  states_required: zod.z.boolean(),
440
440
  zipcode_required: zod.z.boolean(),
441
- default_currency: zod.z.string().nullable(),
442
- default_locale: zod.z.string().nullable(),
443
441
  states: zod.z.array(StoreStateSchema).optional()
444
442
  });
445
443
  var StoreCreditCardSchema = zod.z.object({
@@ -460,8 +458,8 @@ var StoreCustomerSchema = zod.z.object({
460
458
  created_at: zod.z.string(),
461
459
  updated_at: zod.z.string(),
462
460
  addresses: zod.z.array(StoreAddressSchema),
463
- default_billing_address: StoreAddressSchema,
464
- default_shipping_address: StoreAddressSchema
461
+ default_billing_address: StoreAddressSchema.nullable(),
462
+ default_shipping_address: StoreAddressSchema.nullable()
465
463
  });
466
464
  var StoreGiftCardSchema = zod.z.object({
467
465
  id: zod.z.string(),
@@ -482,6 +480,16 @@ var StoreGiftCardSchema = zod.z.object({
482
480
  created_at: zod.z.string(),
483
481
  updated_at: zod.z.string()
484
482
  });
483
+ var StoreMarketSchema = zod.z.object({
484
+ id: zod.z.string(),
485
+ name: zod.z.string(),
486
+ currency: zod.z.string(),
487
+ default_locale: zod.z.string(),
488
+ tax_inclusive: zod.z.boolean(),
489
+ default: zod.z.boolean(),
490
+ supported_locales: zod.z.array(zod.z.string()),
491
+ countries: zod.z.array(StoreCountrySchema)
492
+ });
485
493
  var StoreOrderSchema = zod.z.object({
486
494
  id: zod.z.string(),
487
495
  number: zod.z.string(),
@@ -692,6 +700,7 @@ exports.StoreDigitalLinkSchema = StoreDigitalLinkSchema;
692
700
  exports.StoreGiftCardSchema = StoreGiftCardSchema;
693
701
  exports.StoreImageSchema = StoreImageSchema;
694
702
  exports.StoreLineItemSchema = StoreLineItemSchema;
703
+ exports.StoreMarketSchema = StoreMarketSchema;
695
704
  exports.StoreMetafieldSchema = StoreMetafieldSchema;
696
705
  exports.StoreOptionTypeSchema = StoreOptionTypeSchema;
697
706
  exports.StoreOptionValueSchema = StoreOptionValueSchema;