@descope/sdk-component-drivers
Version:
Descope JavaScript SDK mixins
308 lines (282 loc) • 8.37 kB
TypeScript
type Empty = null | undefined;
type RefOrRefFn = Element | (() => HTMLElement | Empty) | Empty;
type Logger = {
error(...data: any[]): void;
warn(...data: any[]): void;
info(...data: any[]): void;
debug(...data: any[]): void;
};
declare class BaseDriver {
#private;
logger: Logger | undefined;
nodeName: string;
constructor(refOrRefFn: RefOrRefFn, config: {
logger: Logger;
});
get asyncEle(): Promise<Element>;
get ele(): Element;
get isExists(): boolean;
}
type Data$4 = {
name: string;
icon: string;
url: string;
}[];
declare class AppsListDriver extends BaseDriver {
nodeName: string;
set data(data: Data$4);
get data(): Data$4;
get ele(): Element & {
data: Data$4;
};
}
declare class AvatarDriver extends BaseDriver {
nodeName: string;
set displayName(name: string);
set image(imgUrl: string);
get flowId(): string;
onClick(cb: (e: Event) => void): () => void;
}
declare class ButtonDriver extends BaseDriver {
nodeName: string;
onClick(cb: (e: Event) => void): () => void;
disable(): void;
enable(): void;
}
declare class FlowDriver extends BaseDriver {
nodeName: string;
set projectId(projectId: string);
set baseUrl(baseUrl: string);
set flowId(flowId: string);
set theme(theme: string | null | undefined);
onSuccess(cb: () => void): () => void;
onPageUpdated(cb: () => void): () => void;
}
declare class GenericFlowButtonDriver extends ButtonDriver {
get flowId(): string;
get enableMode(): 'onlyOne' | 'oneOrMore' | 'always';
}
type Column = {
path: string;
header: string;
type: string;
attrs: Record<string, string>;
};
declare class GridDriver<T extends any> extends BaseDriver {
#private;
nodeName: string;
onSelectedItemsChange(cb: (e: CustomEvent<{
value: T[];
}>) => void): () => void;
get ele(): Element & {
data: T[];
columns: Column[];
renderColumn: ({ path, header, type, attrs }: Column) => string;
};
get data(): T[];
set data(data: T[]);
get columns(): any[];
filterColumns(filterFn: (col: Column) => boolean): void;
onColumnsChange(cb: (columns: Column[]) => void): void;
set renderColumn(renderFn: ({ path, header, type, attrs }: Column) => string);
}
declare class LinkDriver extends BaseDriver {
nodeName: string;
get ele(): Element & {
innerText: string;
getAttribute: (name: string) => string | null;
};
get href(): string;
set href(href: string);
}
declare class ModalDriver extends BaseDriver {
#private;
beforeOpen: undefined | (() => void | Promise<void>);
afterClose: undefined | (() => void);
nodeName: string;
constructor(...args: ConstructorParameters<typeof BaseDriver>);
get isOpen(): boolean;
get isClosed(): boolean;
close(): void;
open(): Promise<void>;
reset(): void;
setContent(template: HTMLTemplateElement): void;
remove(): void;
}
type Mapping = {
tenantId: string;
roleNames: string[];
};
declare class MultiLineMappingsDriver extends BaseDriver {
nodeName: string;
setData(data: Record<string, string[] | {
label?: string;
options: string[];
}>): void;
get value(): Mapping[];
set value(mappings: Mapping[]);
get mergedValue(): Mapping[];
}
declare class MultiSelectDriver extends BaseDriver {
nodeName: string;
setData(data: {
label: string;
value: string;
}[]): Promise<void>;
}
declare class NotificationDriver extends BaseDriver {
nodeName: string;
close(): void;
show(): void;
setContent(template: HTMLTemplateElement): void;
remove(): void;
}
type Data$3 = {
id: string;
name: string;
description?: string;
logo?: string;
isConnected?: boolean;
}[];
type Detail$2 = {
id: string;
action: string;
};
declare class OutboundAppsListDriver extends BaseDriver {
nodeName: string;
set data(data: Data$3);
get data(): Data$3;
get ele(): Element & {
data: Data$3;
};
get connectFlowId(): string;
get disconnectFlowId(): string;
onConnectClick(cb: (detail: Detail$2) => void): () => void;
onDisconnectClick(cb: (detail: Detail$2) => void): () => void;
}
declare class SingleSelectDriver extends BaseDriver {
nodeName: string;
onInput(cb: (e: InputEvent) => void): () => void;
get value(): string;
set value(value: string);
setData(data: {
label: string;
value: string;
}[]): Promise<void>;
setAllowCustomValue(allow: boolean): void;
}
declare class TextDriver extends BaseDriver {
nodeName: string;
get ele(): Element & {
innerText: string;
};
get text(): string;
set text(content: string);
}
declare class TextFieldDriver extends BaseDriver {
nodeName: string;
onInput(cb: (e: InputEvent) => void): () => void;
get value(): string;
set value(value: string);
disable(): void;
enable(): void;
}
declare class UserAttributeDriver extends BaseDriver {
nodeName: string;
set value(value: string);
set badgeLabel(label: string);
get label(): string;
get editFlowId(): string;
get deleteFlowId(): string;
onEditClick(cb: (e: Event) => void): () => void;
onDeleteClick(cb: (e: Event) => void): () => void;
}
declare class UserAuthMethodDriver extends BaseDriver {
nodeName: string;
set fulfilled(isFulfilled: boolean);
onUnfulfilledButtonClick(cb: (e: Event) => void): () => void;
onFulfilledButtonClick(cb: (e: Event) => void): () => void;
get flowId(): string;
get fulfilledFlowId(): string;
}
type Data$2 = {
id: string;
name: string;
lastLoginDate: number;
isCurrent: boolean;
}[];
type Detail$1 = {
id: string;
action: string;
};
declare class DeviceListDriver extends BaseDriver {
nodeName: string;
set displayName(name: string);
get ele(): Element & {
data: Data$2;
};
get data(): Data$2;
set data(data: Data$2);
get flowId(): string;
onRemoveDeviceClick(cb: (detail: Detail$1) => void): () => void;
}
declare class FlowButtonDriver extends ButtonDriver {
get flowId(): string;
}
declare class LastAuthBadgeDriver extends BaseDriver {
nodeName: string;
set position(value: string);
get position(): string;
}
declare class TenantSelectorDriver extends SingleSelectDriver {
get action(): 'reload' | 'none' | '';
get refreshTimeout(): number;
get shouldReload(): boolean;
}
type PasskeyType = 'apple' | 'google' | 'windows' | 'chrome' | 'edge' | 'samsung' | '1password' | 'bitwarden' | 'lastpass' | 'dashlane' | 'keeper' | 'keepassxc' | 'proton' | 'nordpass' | 'enpass' | 'key' | 'phone' | 'other';
type Data$1 = {
id: string;
name: string;
passkeyType: PasskeyType;
createdAt: number;
}[];
type Detail = {
id: string;
action: string;
};
declare class UserPasskeysDriver extends BaseDriver {
nodeName: string;
get ele(): Element & {
data: Data$1;
};
get data(): Data$1;
set data(data: Data$1);
get addPasskeyFlowId(): string;
get removePasskeyFlowId(): string;
onAddPasskeyClick(cb: (e: Event) => void): () => void;
onRemovePasskeyClick(cb: (detail: Detail) => void): () => void;
}
type Data = {
id: string;
name: string;
authType?: string;
isDefault?: boolean;
link?: string;
}[];
type DeleteDetail = {
id: string;
name: string;
};
declare class MultiSsoConfigurationsDriver extends BaseDriver {
nodeName: string;
set data(data: Data);
get data(): Data;
get ele(): Element & {
data: Data;
};
get createFlowId(): string;
get deleteFlowId(): string;
onCreateClicked(cb: () => void): () => void;
onDeleteClicked(cb: (detail: DeleteDetail) => void): () => void;
}
export { AppsListDriver, AvatarDriver, ButtonDriver, DeviceListDriver, FlowButtonDriver, FlowDriver, GenericFlowButtonDriver, GridDriver, LastAuthBadgeDriver, LinkDriver, ModalDriver, MultiLineMappingsDriver, MultiSelectDriver, MultiSsoConfigurationsDriver, NotificationDriver, OutboundAppsListDriver, SingleSelectDriver, TenantSelectorDriver, TextDriver, TextFieldDriver, UserAttributeDriver, UserAuthMethodDriver, UserPasskeysDriver };