@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
TypeScript
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";