dome-embedded-app-sdk
Version:
Build Dome cards and document viewers with a single SDK. Cards let you extend a dome with custom functionality, while viewers let you render and edit documents inside Dome.
242 lines (241 loc) • 5.32 kB
TypeScript
/**
* Permissions map keyed by role abbreviations.
*/
export type CardPermissionsMap = Record<string, string>;
/**
* Permission codes available to cards.
*/
export declare enum CardPermission {
READ = "r",
WRITE = "w",
FORWARD = "f",
SHARE = "s",
DOWNLOAD = "d"
}
/**
* Convenience alias for permission enum.
*/
export declare const cardPermission: typeof CardPermission;
/**
* Role metadata for the current user.
*/
export interface CardUserRole {
key?: string;
name?: string;
description?: string | null;
abbr?: string;
}
/**
* Name fields for a user profile.
*/
export interface CardUserName {
prefix?: string;
given?: string;
middle?: string;
family?: string;
suffix?: string;
}
/**
* Photo metadata for a user.
*/
export interface CardUserPhoto {
url?: string;
[key: string]: any;
}
/**
* Organization details for a user.
*/
export interface CardUserOrganization {
company?: string;
department?: string;
position?: string;
[key: string]: any;
}
/**
* Cover photo metadata for a user profile.
*/
export interface CardUserCoverPhoto {
url?: string;
[key: string]: any;
}
/**
* Cover properties for a user profile.
*/
export interface CardUserCover {
photo?: CardUserCoverPhoto;
color?: string;
[key: string]: any;
}
/**
* User profile payload delivered with onInit.
*/
export interface CardUser {
name?: CardUserName;
photo?: CardUserPhoto;
organization?: CardUserOrganization;
about_me?: string | null;
cover?: CardUserCover;
iid?: string;
mci?: string;
user_iuid?: string;
iuid?: string;
type?: string;
label?: string;
valid?: boolean;
can_delete?: boolean;
read_only?: boolean;
share_url?: string;
getFullName?: () => string;
[key: string]: any;
}
/**
* UI metadata passed with init data.
*/
export interface CardUiProps {
theme?: "light" | "dark";
[key: string]: any;
}
/**
* Payload delivered to onInit.
*/
export interface CardInitData {
api_token?: string;
iuid?: string;
user?: CardUser;
perms_v2?: CardPermissionsMap | null;
role?: CardUserRole | null;
container?: {
iuid?: string;
[key: string]: any;
};
ui?: CardUiProps;
[key: string]: any;
}
/**
* Payload delivered to onInitError.
*/
export interface CardInitErrorPayload {
error_code?: string | number;
message?: string;
[key: string]: any;
}
/**
* Payload delivered when file data changes.
*/
export type CardFileChangePayload = Record<string, any>;
/**
* Payload delivered when a refresh is requested.
*/
export type CardRefreshRequestPayload = Record<string, any>;
/**
* Callback signature for cardFS updates.
*/
export type CardFsCallback<T = any> = (payload: T) => void;
export declare enum CardFsFileType {
TEXT = "text",
JSON = "json",
BINARY = "binary"
}
/**
* CardFS error codes.
*/
export declare enum CardFsErrorCode {
NO_INTERNET = "NO_INTERNET",
NO_PERMISSION = "NO_PERMISSION",
NOT_FOUND = "NOT_FOUND",
SERVER_ERROR = "SERVER_ERROR",
TIMEOUT = "TIMEOUT",
INVALID_REQUEST = "INVALID_REQUEST",
UNKNOWN = "UNKNOWN"
}
/**
* CardFS error payload.
*/
export interface CardFsErrorPayload {
message: string;
code?: CardFsErrorCode;
}
/**
* CardFS read result payload.
*/
export interface CardFsReadResult {
name?: string;
iuid?: string | null;
object?: any;
data?: any;
is_dirty?: boolean;
is_stale: boolean;
is_complete: boolean;
}
/**
* CardFS write update payload.
*/
export interface CardFsWriteUpdatePayload {
status: "uploading" | "completed" | "unknown";
progress?: number;
uploaded_bytes?: number;
[key: string]: any;
}
/**
* CardFS read update payload.
*/
export interface CardFsReadUpdatePayload {
status: "downloading" | "completed" | "unknown";
progress?: number;
downloaded_bytes?: number;
[key: string]: any;
}
/**
* CardFS read handler interface.
*/
export interface CardFsReadHandler {
next: CardFsCallback<CardFsReadResult>;
error?: CardFsCallback<CardFsErrorPayload>;
}
/**
* CardFS list handler interface.
*/
export interface CardFsListHandler {
next: CardFsCallback<CardFsListResult>;
error?: CardFsCallback<CardFsErrorPayload>;
}
/**
* CardFS list result payload.
*/
export interface CardFsListResult {
documents: any[];
is_stale: boolean;
is_complete: boolean;
is_dirty: boolean;
folder_name?: string;
folder_iuid?: string;
last_index?: number | null;
last_page?: number | boolean | null;
[key: string]: any;
}
/**
* Event handler interface for card SDK lifecycle events.
*/
export interface CardEventHandler {
onInit: (data: CardInitData) => void;
onInitError?: (data: CardInitErrorPayload) => void;
onError?: (data: {
error_code: string | number;
message: string;
data: any;
}) => void;
onFileChange?: (data: CardFileChangePayload) => void;
onRefreshRequest?: (data: CardRefreshRequestPayload) => void;
}
/**
* Card key blob v1 payload shape.
*/
export interface CardKeyBlobV1 {
v: number;
seed: number;
obf: number[];
}
/**
* Supported card key blob payloads.
*/
export type CardKeyBlob = CardKeyBlobV1;