UNPKG

@open-tender/utils

Version:

A library of utils for use with Open Tender applications that utilize our cloud-based Order API.

219 lines (218 loc) 10.5 kB
import { Cart, CartItem, CartItemGroups, CartLevels, CartItemOption, CartOwner, CheckoutConfig, CheckoutFormAddress, CheckoutFormCustomer, CheckoutPromoCodes, CheckoutTenders, DisplayItem, DisplayItems, Favorites, GroupOrderGuest, GroupOrderGuests, MenuCategories, MenuItem, MenuItems, Money, NutritionalInfo, NutritionalInfoCalcs, Order, OrderCreate, OrderCreateDiscounts, OrderCreateSurcharges, OrderData, OrderItem, OrderItemGroups, Orders, SimpleCart, SimpleCartGroups, SimpleCartItem, SoldOut, Images, CartErrors, BaseItem, FavoritesLookup, RequestedAt } from '@open-tender/types'; export declare const getItemOptions: <T extends BaseItem>(item: T) => BaseItem[]; export declare const makeModifierNames: <T extends BaseItem>(item: T) => string; export declare const makeModifierNamesForGroups: (groups: CartItemGroups) => string; export declare const hasGroupsBelowMin: (option: CartItemOption | null, groups: CartItemGroups) => boolean; export declare const makeModifierGroups: (groups: CartItemGroups) => [CartItemGroups, CartLevels]; export declare const makeUpsellItems: (itemIds: number[], itemLookup: Record<string, MenuItem>) => (CartItemOption | CartItem)[]; export declare const makeUpsellItemIds: (item: CartItem, cartIds: number[], soldOut: number[]) => number[]; export declare const makeUpsellItemsForCart: (categories: MenuCategories, cartIds: number[], soldOut: number[]) => (CartItemOption | CartItem)[]; export declare const calcNutrition: (item: CartItem | CartItemOption) => NutritionalInfoCalcs; export declare const calcNutritionalInfo: (item: CartItem | CartItemOption) => NutritionalInfo; export declare const calcPrices: (item: CartItem | CartItemOption) => CartItem | CartItemOption; export declare const checkSoldOut: (id: number, suspendUntil: number | null, soldOut: number[] | undefined, requestedAt: RequestedAt | null) => boolean; export declare const makeOrderItem: (item: MenuItem, isEdit?: boolean, soldOut?: SoldOut, simpleItem?: SimpleCartItem, hasPoints?: boolean, requestedAt?: RequestedAt | null) => CartItemOption | CartItem; export declare const calcCartCounts: (cart: Cart) => Record<string, number>; export declare const rehydrateOrderItem: (menuItem: MenuItem, simpleCartItem: SimpleCartItem, soldOut?: number[], requestedAt?: RequestedAt | null) => CartItem; export declare const rehydrateCart: (menuItems: MenuItems, simpleCartItems: SimpleCart, soldOut?: number[]) => { cart: { index: number; cartGuestId: number | null; customerId: number | null; madeFor: string | null; notes: string | null; signature?: string | undefined; similarItems: number[]; upsellItems: number[]; list_name: string | null; list_id: string | null; menu_position: number | null; allergens: string[]; allergens_list?: import("@open-tender/types").MenuItemAllergens | undefined; cals: number | null; description: string | null; groups: CartItemGroups; id: number; imageUrl: string | null; appImageUrl?: string | null | undefined; increment: number; ingredients: string | null; isSoldOut: boolean; max: number; min: number; name: string; nutritionalInfo: NutritionalInfo | null; points: number | null; pos_ext_id: string | null; price: number; quantity: number; shorthand: string | null; shortDescription: string | null; shortName: string; slug: string; suspend_until: number | null; tags: string[]; tags_list?: import("@open-tender/types").MenuItemTags | undefined; totalAllergens: string[]; totalCals: number | null; totalPoints: number | null; totalPrice: number | null; itemShape: import("@open-tender/types").PizzaShape | null; excludeFromBuilder: boolean; }[]; cartCounts: Record<string, number>; }; export declare const rehydrateCheckoutForm: (order: Order) => { details: { cart_id: number | null | undefined; eating_utensils: boolean | undefined; notes: string | null | undefined; person_count: number | null | undefined; serving_utensils: boolean | undefined; tax_exempt_id: string | null | undefined; }; customer: CheckoutFormCustomer; address: CheckoutFormAddress; surcharges: OrderCreateSurcharges; discounts: OrderCreateDiscounts; promoCodes: CheckoutPromoCodes; tenders: (import("@open-tender/types").OrderTenderGiftCard | { card_type: import("@open-tender/types").CardType; card_type_name: import("@open-tender/types").CardTypeName; customer_card_id: number; has_profile?: boolean | undefined; is_default: boolean; last4: string; masked: string; credit_card: import("@open-tender/types").CreditCard; amount: `${number}.${number}`; created_at?: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}-${number}${number}:${number}${number}` | `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}+${number}${number}:${number}${number}` | undefined; is_replaced?: boolean | undefined; parent_tender_uuid?: string | undefined; tender_index?: number | undefined; tender_status: import("@open-tender/types").TenderStatus; tender_type: import("@open-tender/types").TenderType; tender_uuid?: string | undefined; } | { house_account_id: number; name: string; house_account: { house_account_id: number; name: string; }; amount: `${number}.${number}`; created_at?: `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}-${number}${number}:${number}${number}` | `${number}${number}${number}${number}-${number}${number}-${number}${number}T${number}${number}:${number}${number}:${number}${number}+${number}${number}:${number}${number}` | undefined; is_replaced?: boolean | undefined; parent_tender_uuid?: string | undefined; tender_index?: number | undefined; tender_status: import("@open-tender/types").TenderStatus; tender_type: import("@open-tender/types").TenderType; tender_uuid?: string | undefined; })[] | undefined; tip: `${number}.${number}`; }; export declare const makeGuestLookup: (cartGuests: GroupOrderGuests) => Record<string, GroupOrderGuest>; export declare const compareCarts: (cart: Cart | null) => CartItem[] | null; export declare const combineCarts: (cart: Cart, guestCart: Cart, cartOwner: CartOwner, cartGuests: GroupOrderGuests) => { madeFor: string | null; cartGuestId: number | null; customerId: number | null; index?: number | undefined; notes: string | null; signature?: string | undefined; similarItems: number[]; upsellItems: number[]; list_name: string | null; list_id: string | null; menu_position: number | null; allergens: string[]; allergens_list?: import("@open-tender/types").MenuItemAllergens | undefined; cals: number | null; description: string | null; groups: CartItemGroups; id: number; imageUrl: string | null; appImageUrl?: string | null | undefined; increment: number; ingredients: string | null; isSoldOut: boolean; max: number; min: number; name: string; nutritionalInfo: NutritionalInfo | null; points: number | null; pos_ext_id: string | null; price: number; quantity: number; shorthand: string | null; shortDescription: string | null; shortName: string; slug: string; suspend_until: number | null; tags: string[]; tags_list?: import("@open-tender/types").MenuItemTags | undefined; totalAllergens: string[]; totalCals: number | null; totalPoints: number | null; totalPrice: number | null; itemShape: import("@open-tender/types").PizzaShape | null; excludeFromBuilder: boolean; }[]; export declare const makeItemImageUrl: (images: Images) => any; export declare const makeDisplayItemGroups: (optionGroups: OrderItemGroups) => { options: DisplayItem[]; id: number; name: string; short_name: string; }[]; export declare const makeDisplayItem: (item: OrderItem, isOption?: boolean) => DisplayItem; export declare const makeDisplayItems: (orders: Orders) => DisplayItem[]; export declare const makeUniqueDisplayItems: (orders: Orders) => DisplayItems; export declare const makeFavoritesLookup: (favorites: Favorites) => FavoritesLookup; export declare const makeItemSignature: (item: SimpleCartItem) => string; export declare const makeCartItemSignature: (item: CartItem) => string; export declare const addItem: (cart: Cart, item: CartItem) => { cart: Cart; cartCounts: Record<string, number>; }; export declare const removeItem: (cart: Cart, index: number) => { cart: Cart; cartCounts: Record<string, number>; }; export declare const incrementItem: (cart: Cart, index: number) => { cart: Cart; cartCounts: Record<string, number>; }; export declare const decrementItem: (cart: Cart, index: number) => { cart: Cart; cartCounts: Record<string, number>; }; export declare const makeSimpleCart: <C extends { id: number; quantity: number; groups: T[]; madeFor?: string | null | undefined; made_for?: string | null | undefined; notes?: string | null | undefined; }[], T extends { id: number; options: K[]; }, K extends { id: number; quantity: number; groups: T[]; }>(cart: C) => { id: number; quantity: number; groups: SimpleCartGroups; made_for: string; notes: string; }[]; export declare const validateCart: (cart: Cart, categories: MenuCategories, soldOut: SoldOut, requestedAt: RequestedAt) => { newCart: Cart; errors: CartErrors | null; }; export declare const getDefaultTip: (config: CheckoutConfig) => string | null; export declare const prepareOrder: (data: OrderData) => OrderCreate; export declare const checkAmountRemaining: (total: Money, tenders: CheckoutTenders) => number; export declare const makeDeviceType: (deviceType: string, deviceId?: string) => "DESKTOP" | "MOBILE" | "TABLET";