mirror of
https://github.com/vercel/commerce.git
synced 2025-05-18 23:46:58 +00:00
113 lines
2.0 KiB
TypeScript
113 lines
2.0 KiB
TypeScript
import * as Core from '@vercel/commerce/types/cart'
|
|
import { Customer } from '@vercel/commerce/types'
|
|
import { CheckoutLineItem } from './schema'
|
|
|
|
export type SwellImage = {
|
|
file: {
|
|
url: String
|
|
height: Number
|
|
width: Number
|
|
}
|
|
id: string
|
|
}
|
|
|
|
export type CartLineItem = {
|
|
id: string
|
|
product: SwellProduct
|
|
price: number
|
|
variant: {
|
|
name: string | null
|
|
sku: string | null
|
|
id: string
|
|
}
|
|
quantity: number
|
|
}
|
|
|
|
export type SwellCart = {
|
|
id: string
|
|
account_id: number
|
|
currency: string
|
|
tax_included_total: number
|
|
sub_total: number
|
|
grand_total: number
|
|
discount_total: number
|
|
quantity: number
|
|
items: CartLineItem[]
|
|
date_created: string
|
|
discounts?: { id: number; amount: number }[] | null
|
|
// TODO: add missing fields
|
|
}
|
|
|
|
export type SwellVariant = {
|
|
id: string
|
|
option_value_ids: string[]
|
|
name: string
|
|
price?: number
|
|
stock_status?: string
|
|
__type?: 'MultipleChoiceOption' | undefined
|
|
}
|
|
|
|
export interface SwellProductOptionValue {
|
|
id: string
|
|
label: string
|
|
hexColors?: string[]
|
|
}
|
|
|
|
export interface ProductOptionValue {
|
|
label: string
|
|
hexColors?: string[]
|
|
}
|
|
|
|
export type ProductOptions = {
|
|
id: string
|
|
name: string
|
|
variant: boolean
|
|
values: ProductOptionValue[]
|
|
required: boolean
|
|
active: boolean
|
|
attribute_id: string
|
|
}
|
|
|
|
export interface SwellProduct {
|
|
id: string
|
|
description: string
|
|
name: string
|
|
slug: string
|
|
currency: string
|
|
price: number
|
|
images: any[]
|
|
options: any[]
|
|
variants: any[]
|
|
}
|
|
|
|
export type SwellCustomer = any
|
|
|
|
export type SwellCheckout = {
|
|
id: string
|
|
webUrl: string
|
|
lineItems: CheckoutLineItem[]
|
|
}
|
|
|
|
export interface Cart extends Core.Cart {
|
|
id: string
|
|
lineItems: LineItem[]
|
|
}
|
|
|
|
export interface LineItem extends Core.LineItem {
|
|
options?: any[]
|
|
}
|
|
|
|
/**
|
|
* Cart mutations
|
|
*/
|
|
|
|
export type OptionSelections = {
|
|
option_id: number
|
|
option_value: number | string
|
|
}
|
|
|
|
export type CartItemBody = Core.CartItemBody & {
|
|
productId: string // The product id is always required for BC
|
|
optionSelections?: OptionSelections
|
|
}
|