@swishapp/browser
Version:
JS library to integrate Swish into a browser environment.
109 lines (108 loc) • 6.34 kB
TypeScript
import type { CreateItemInput, CreateListInput, DeleteItemsInput, IdentifyProfileInput, ItemControllerFindData, ListControllerFindData, AddItemsToListInput, SetListItemsOrderInput, UpdateItemInput, UpdateListInput } from "@swishapp/api-client";
import type { LoadProductCardDataArgs, LoadProductCardDataResponse, LoadProductOptionsArgs, LoadProductOptionsResponse, LoadSelectedVariantArgs } from "./storefront-api";
import type { AddToCartRequest, AddToCartResponse, Cart } from "./ajax-api";
import type { SwishAppOptions } from "./types";
import { EventBus } from "./events";
import { LoadProductDetailDataArgs, LoadProductDetailDataResponse } from "./storefront-api/loadProductDetailData";
import { LoadProductImagesArgs, LoadProductImagesResponse } from "./storefront-api/loadProductImages";
import { LoadSelectedVariantResponse } from "./storefront-api/loadSelectedVariant";
export declare const swishApp: (options: SwishAppOptions) => Promise<SwishApp>;
export declare class SwishApp {
private readonly worker;
private readonly rpc;
private readonly options;
private initPromise?;
readonly events: EventBus;
constructor(options: SwishAppOptions);
init(): Promise<void>;
private _init;
private storeProfile;
private deleteProfile;
readonly api: {
items: {
list: (query?: ItemControllerFindData["query"]) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").Item[]>>;
create: (body: CreateItemInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").Item>>;
delete: (body: DeleteItemsInput) => Promise<import("@swishapp/api-client").ApiResponse<unknown>>;
findById: (id: string) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").ItemDetail>>;
updateById: (id: string, body: UpdateItemInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").Item>>;
deleteById: (id: string) => Promise<import("@swishapp/api-client").ApiResponse<unknown>>;
setListsById: (id: string, listIds: string[]) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").ItemDetail>>;
};
lists: {
list: () => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List[]>>;
findById: (id: string, query?: ListControllerFindData["query"]) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").ListDetail>>;
create: (body: CreateListInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List>>;
updateById: (id: string, body: UpdateListInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List>>;
deleteById: (id: string) => Promise<import("@swishapp/api-client").ApiResponse<unknown>>;
orderItems: (id: string, body: SetListItemsOrderInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").List>>;
addItemsToList: (id: string, body: AddItemsToListInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").ListDetail>>;
};
profiles: {
customerAccountsVersion: () => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").AccountsVersionResult>>;
identify: (body: IdentifyProfileInput) => Promise<import("@swishapp/api-client").ApiResponse<import("@swishapp/api-client").IdentifyProfileResult>>;
};
};
readonly storefront: {
loadProductOptions: (args: LoadProductOptionsArgs) => Promise<LoadProductOptionsResponse>;
loadSelectedVariant: (args: LoadSelectedVariantArgs) => Promise<LoadSelectedVariantResponse>;
loadProductCardData: (args: LoadProductCardDataArgs) => Promise<LoadProductCardDataResponse>;
loadProductDetailData: (args: LoadProductDetailDataArgs) => Promise<LoadProductDetailDataResponse>;
loadProductImages: (args: LoadProductImagesArgs) => Promise<LoadProductImagesResponse>;
};
readonly ajax: {
fetchCart: () => Promise<Cart>;
addToCart: (request: AddToCartRequest) => Promise<AddToCartResponse>;
};
readonly ui: {
showSignIn: (options?: {
returnTo?: string;
}) => Promise<void>;
showVariantSelect: <TData = unknown>(options?: {
productId?: string;
productHandle?: string;
variantId?: string;
displayType?: "rows" | "pills";
action?: "none" | "save";
onSubmit: (data: TData) => void | Promise<void>;
}) => Promise<void>;
initShopBridge: ({ onShopModalOpen, }: {
onShopModalOpen: () => void;
}) => Promise<import(".").ShopBridge>;
showNotification: (options: {
title?: string;
text: string;
image?: string;
action?: {
label: string;
url?: string;
onAction?: () => void;
};
}) => Promise<void>;
hideAllNotifications: () => Promise<void>;
showListSelect: <TData = unknown>(options: import("./swish-ui").ListSelectOptions<TData>) => Promise<void>;
showDrawer: () => Promise<void>;
showListEditor: <TData = unknown>(options?: {
listId?: string;
variantId?: string;
onSubmit: (data: TData) => void | Promise<void>;
}) => Promise<void>;
showUnsaveAlert: (options: {
itemId: string;
onSubmit?: () => void | Promise<void>;
onCancel?: () => void | Promise<void>;
}) => Promise<void>;
hideModal: (element: string | HTMLElement) => Promise<void>;
showModal: (element: string | HTMLElement) => Promise<void>;
showListMenu: (options: {
listId: string;
onClose?: (data: {
reason: string;
}) => void;
}) => Promise<void>;
showDeleteListAlert: (options: {
listId: string;
onSubmit?: () => void | Promise<void>;
onCancel?: () => void | Promise<void>;
}) => Promise<void>;
};
}