UNPKG

@chordcommerce/analytics

Version:

Chord Commerce event tracking

126 lines (125 loc) 4.26 kB
// Generated by ts-to-zod import { z } from 'zod'; export const identifyTraitsSchema = z.record(z.any()).and(z.object({ address: z .record(z.any()) .and(z.object({ city: z.string().optional(), country: z.string().optional(), postalCode: z.string().optional(), state: z.string().optional(), street: z.string().optional(), })) .optional(), age: z.number().optional(), avatar: z.string().optional(), birthday: z.string().optional(), company: z .record(z.any()) .and(z.object({ name: z.string().optional(), id: z.union([z.string(), z.number()]).optional(), industry: z.string().optional(), employeeCount: z.number().optional(), plan: z.string().optional(), })) .optional(), createdAt: z.string().optional(), description: z.string().optional(), email: z.string().optional(), firstName: z.string().optional(), gender: z.string().optional(), id: z.string().optional(), lastName: z.string().optional(), name: z.string().optional(), phone: z.string().optional(), title: z.string().optional(), username: z.string().optional(), website: z.string().optional(), })); export const productSchema = z.object({ affiliation: z.string().optional(), brand: z.string().optional(), bundle: z.boolean().optional(), category: z.string().optional(), description: z.string().optional(), image_url: z.string().optional(), name: z.string(), option_values: z.array(z.string()).optional(), position: z.number().optional(), price: z.number(), product_id: z.string(), sku: z.string(), slug: z.string().optional(), url: z.string().optional(), variant: z.string().optional(), }); export const lineItemSchema = productSchema.extend({ coupon: z.string().optional(), line_item_id: z.string().optional(), quantity: z.number(), }); export const orderSchema = z.object({ affiliation: z.string().optional(), campaign_id: z.number().optional(), channel: z.string().optional(), checkout_type: z.string().optional(), coupon: z.string().optional(), currency: z.string().optional(), discount: z.number().optional(), email: z.string().optional(), first_name: z.string().optional(), has_subscription: z.boolean().optional(), is_recurring: z.boolean().optional(), last_name: z.string().optional(), metadata: z.record(z.unknown()).optional(), order_date: z.string().optional(), order_id: z.string().optional(), phone: z.string().optional(), products: z .array(lineItemSchema.and(z.object({ bundle_size: z.number().optional(), cross_sold_quantity: z.number().optional(), variant_metadata: z.record(z.unknown()).optional(), }))) .optional(), purl_link: z.string().optional(), referral_identifier_id: z.string().optional(), revenue: z.number().optional(), shipping: z.number().optional(), shipping_city: z.string().optional(), shipping_country: z.string().optional(), shipping_method_details: z .object({ shipping_code: z.string().optional(), shipping_method: z.string().optional(), }) .optional(), shipping_state: z.string().optional(), shipping_zipcode: z.string().optional(), tax: z.number().optional(), template_id: z.number().optional(), total: z.number().optional(), tracking_ids: z.record(z.unknown()).optional(), }); export const checkoutSchema = z.object({ affiliation: z.string().optional(), checkout_type: z.string().optional(), coupon: z.string().optional(), currency: z.string().optional(), discount: z.number().optional(), order_id: z.string().optional(), order_name: z.string().optional(), products: z.array(lineItemSchema), revenue: z.number().optional(), shipping: z.number().optional(), tax: z.number().optional(), value: z.number().optional(), step: z.number().optional(), }); export const cartSchema = z.object({ cart_id: z.string().optional(), currency: z.string().optional(), products: z.array(lineItemSchema), value: z.number().optional(), });