@flarelane/flarelane-web-sdk
Version:
FlareLane Web SDK
216 lines (207 loc) • 7.4 kB
TypeScript
// Generated by dts-bundle v0.7.3
export default FlareLane;
global {
interface Window {
flarelane_state: {
initialized: boolean;
initializing: boolean;
};
FlareLaneBridge?: any;
webkit?: {
messageHandlers?: {
FlareLaneBridge?: {
postMessage: any;
};
};
};
FlareLaneDeferred?: ((FlareLane: FlareLane) => any)[];
}
}
export class FlareLane {
static needEscapeInapp: boolean;
static setLogLevel(logLevel: LogLevelString): void;
static initialize(options: InitializeOptions): Promise<void>;
static _directInitializeFromProxy(): Promise<void>;
static _proxySubscribe(): Promise<void>;
static setUserId(userId: string | null): Promise<true | void>;
static setTags(tags: Record<string, any>): Promise<true | void>;
static setIsSubscribed(isSubscribed: boolean, callback?: GetIsSubscribeHandler, option?: SubscribeOptions): Promise<void>;
static getIsSubscribed(callback: GetIsSubscribeHandler): void;
static getDeviceId(callback: GetDeviceIdHandler): void;
static setConvertedHandler(callback: ConvertedHandler): void;
static setIsSubscribedChangeHandler(callback: IsSubscribedChangeHandler): void;
static trackEvent(type: string, data?: Record<string, string | number>): Promise<void>;
static setCurrentPath(path: string): void;
static toggleWidgetSubcontents(element: HTMLElement): void;
}
export type GetIsSubscribeHandler = (isSubscribed: boolean) => any;
export type GetDeviceIdHandler = (deviceId: string | null) => any;
export type ConvertedHandler = (notification: FlareLaneNotifiaction) => any;
export type IsSubscribedChangeHandler = (isSubscribed: boolean) => Promise<any> | any;
export type PostMessageHandler = (data: PostMessageData, removeEventListener: () => void) => void;
export type LogLevelString = 'none' | 'error' | 'verbose';
export type InitializeOptions = {
projectId: string;
serviceWorkerPath?: string;
};
export type InitializeDefaultOptions = {
serviceWorkerPath?: string;
};
export type CombinedOptions = InitializeDefaultOptions & InitializeOptions;
export type Configs = {
vapidPayload: {
publicKey: string;
};
siteName: string | null;
siteIcon: string | null;
siteBadge: string | null;
originSiteUrl: string | null;
proxySubdomain: string | null;
proxySiteUrl: string | null;
directInit: boolean;
additionalOrigins: string[];
hidePromotion: boolean;
blockedPaths: string[];
enableWebView: boolean;
nativePromptConfig: {
active: true;
perPageViews: number;
waitingTimeSecond: number;
};
widgetConfig: {
active: boolean;
color: string;
size: number;
position: 'left' | 'right';
horizontalMargin: number;
verticalMargin: number;
mobileSize: number;
mobilePosition: 'left' | 'right';
mobileHorizontalMargin: number;
mobileVerticalMargin: number;
hideIfMobile: boolean;
allowedPaths: string[];
customImageUrl: string | null;
mobileCustomImageUrl: string | null;
};
popupConfig: {
active: boolean;
title: string;
body: string;
allowButtonText: string;
closeButtonText: string;
color: string;
retryIntervalDay: number;
waitingTimeSecond: number;
};
};
export type AvailablePermissionState = 'granted' | 'default' | 'denied' | 'prompt';
export type DOMPosition = {
top?: number;
right?: number;
bottom?: number;
left?: number;
};
export type CustomIconSize = {
desktop?: {
width: number;
height: number;
};
mobile?: {
width: number;
height: number;
};
};
export type SubscribeOptions = {
showGrantingPermissionsGuide?: boolean;
usingUserGestureDom?: boolean;
};
interface ManifestIcon {
src: string;
sizes: string;
type: string;
purpose?: 'any' | 'maskable' | 'monochrome';
}
interface ManifestRelatedApplication {
platform: string;
url: string;
id?: string;
}
export interface WebAppManifest {
name?: string;
short_name?: string;
description?: string;
icons?: ManifestIcon[];
start_url: string;
display?: 'fullscreen' | 'standalone' | 'minimal-ui' | 'browser';
background_color?: string;
theme_color?: string;
dir?: 'ltr' | 'rtl';
lang?: string;
orientation?: 'any' | 'natural' | 'landscape' | 'portrait';
prefer_related_applications?: boolean;
related_applications?: ManifestRelatedApplication[];
scope?: string;
screenshots?: ManifestIcon[];
}
export {};
export type AvailableNotificationEventKeys = 'converted' | 'foregroundReceived' | 'backgroundReceived';
export type AvailableNotificationEvents = 'CONVERTED' | 'FOREGROUND_RECEIVED' | 'BACKGROUND_RECEIVED';
export type EventTypes = Record<AvailableNotificationEventKeys, AvailableNotificationEvents>;
export type AvailablePostMessageEventTypeKeys = 'initialized' | 'initializeWithOptionsAndConfigs' | 'db' | 'dbWindow' | 'showPopup' | 'setDissmissed' | 'refreshWidgetState' | 'permission' | 'removeWidgetSubscribe' | 'handlerManagerInit';
export type AvailablePostMessageEventType = 'flarelane_initialized' | 'flarelane_initializeWithOptionsAndConfigs' | 'flarelane_db' | 'flarelane_db_window' | 'flarelane_showPopup' | 'flarelane_setDissmissed' | 'flarelane_refreshWidgetState' | 'flarelane_permission' | 'flarelane_removeWidgetSubscribe' | 'flarelane_handlerManagerInit';
export type PostMessageEventTypes = Record<AvailablePostMessageEventTypeKeys, AvailablePostMessageEventType>;
export type PostMessageData = {
type: AvailablePostMessageEventType;
data: any;
id: string;
};
export type AvailableIndirectDBEventKeys = 'get' | 'getAll' | 'put' | 'delete' | 'clearTable';
export type AvailableIndirectDBEvent = 'flarelane_get' | 'flarelane_getAll' | 'flarelane_put' | 'flarelane_delete' | 'flarelane_clearTable';
export type DBEvent = Record<AvailableIndirectDBEventKeys, AvailableIndirectDBEvent>;
export type DBEventData = {
method: AvailableIndirectDBEvent;
table: string;
key?: string;
value?: any;
};
export type AvailableIndirectPermissionEventKeys = 'getCurrentPermission' | 'getBrowserPermission';
export type AvailableIndirectPermissionEvent = 'flarelane_getCurrentPermission' | 'flarelane_getBrowserPermission';
export type PermissionEventData = {
method: AvailableIndirectPermissionEvent;
};
export type FlareLaneNotifiaction = {
isFlareLane: boolean;
projectId: string;
notificationId: string;
deviceId: string;
title?: string;
body: string;
url?: string;
imageUrl?: string;
data: Record<string, any>;
buttons?: {
label: string;
link: string;
}[];
platform: string;
webPushConfig: {
siteName: string | null;
siteIcon: string | null;
siteBadge: string | null;
originSiteUrl: string | null;
} | null;
};
export type NotificationShowingConfigs = {
title: string;
options: {
body: string;
data: FlareLaneNotifiaction;
vibrate: number[];
};
};
export type NotificationFromShowingEvent = {
title: string;
body: string;
data: FlareLaneNotifiaction;
};