UNPKG

@looker/extension-sdk

Version:
217 lines (216 loc) 8.36 kB
import type { ChattyHostConnection } from '@looker/chatty'; import type { RawVisualizationData, VisualizationDataReceivedCallback, VisualizationSDK } from './visualization'; import type { TileHostData, TileHostDataChangedCallback, TileSDK } from './tile'; export declare enum ExtensionEvent { EXTENSION_HOST_NOTIFICATION = "EXTENSION_NOTIFICATION", EXTENSION_API_REQUEST = "EXTENSION_API_REQUEST" } export declare enum ExtensionRequestType { CONTEXT_DATA = "CONTEXT_DATA", VERIFY_HOST = "VERIFY_HOST", INVOKE_CORE_SDK = "INVOKE_CORE_SDK", RAW_INVOKE_CORE_SDK = "RAW_INVOKE_CORE_SDK", UPDATE_TITLE = "UPDATE_TITLE", UPDATE_LOCATION = "UPDATE_LOCATION", ROUTE_CHANGED = "ROUTE_CHANGED", CLOSE_HOST_POPOVERS = "CLOSE_HOST_POPOVERS", CLIPBOARD = "CLIPBOARD", LOCAL_STORAGE = "LOCAL_STORAGE", USER_ATTRIBUTE = "USER_ATTRIBUTE", TRACK_ACTION = "TRACK_ACTION", ERROR_EVENT = "ERROR_EVENT", INVOKE_EXTERNAL_API = "INVOKE_EXTERNAL_API", EXTENSION_UNLOADED = "EXTENSION_UNLOADED", SPARTAN_LOGOUT = "SPARTAN_LOGOUT", RENDERED = "RENDERED", VIS_DEFAULT_CONFIG = "VIS_DEFAULT_CONFIG", VIS_CONFIG_UPDATE = "VIS_CONFIG_UPDATE", TILE_ADD_ERRORS = "TILE_ADD_ERRORS", TILE_CLEAR_ERRORS = "TILE_CLEAR_ERRORS", TILE_OPEN_DRILL_MENU = "TILE_OPEN_DRILL_MENU", TILE_TOGGLE_CROSS_FILTER = "TILE_TOGGLE_CROSS_FILTER", TILE_ROW_LIMIT_UPDATE = "TILE_ROW_LIMIT_UPDATE", TILE_RUN_DASHBOARD = "TILE_RUN_DASHBOARD", TILE_STOP_DASHBOARD = "TILE_STOP_DASHBOARD", TILE_UPDATE_FILTERS = "TILE_UPDATE_FILTERS", TILE_OPEN_SCHEDULE_DIALOG = "TILE_OPEN_SCHEDULE_DIALOG" } export interface ExtensionRequest { type: ExtensionRequestType; payload?: InvokeCoreSdkRequest | undefined; } export declare enum ApiVersion { sdk40 = "4.0" } export interface InvokeCoreSdkRequest { apiMethodName?: string; httpMethod?: string; path?: string; body?: any; params?: any; options?: any; apiVersion?: ApiVersion; } export interface UpdateTitleRequest { title: string; } export interface UpdateLocationRequest { url: string; state?: any; } export interface ExtensionHostApi extends ExtensionSDK { isDashboardMountSupported: boolean; handleNotification(message: ExtensionNotification): ExtensionInitializationResponse | undefined; invokeCoreSdk(httpMethod: string, path: string, body?: any, params?: any, authenticator?: any, options?: any, apiVersion?: ApiVersion): Promise<any>; invokeCoreSdkRaw(httpMethod: string, path: string, body?: any, params?: any, apiVersion?: ApiVersion): Promise<any>; unloaded(): void; } export interface ExtensionClientApi { handleRequest(message: ExtensionRequest): any | void; } export interface ContextDataRequest { type: 'save' | 'refresh'; contextData?: string; } export interface RouteChangeRequest { route: string; } export interface ClipboardRequest { type: 'write'; value: string; } export interface LocalStorageRequest { type: 'get' | 'set' | 'remove'; name: string; value?: string; } export interface TrackActionRequest { name: string; trackAction: string; attributes?: Record<string, any>; } export interface ErrorEventRequest { errorEvent: ErrorEvent; } export declare enum FetchResponseBodyType { json = "json", text = "text" } export interface FetchDataRequest { resource: string; init?: Extract<RequestInit, 'method' | 'headers' | 'body' | 'credentials'>; responseBodyType?: FetchResponseBodyType; } export declare enum ExtensionNotificationType { ROUTE_CHANGED = "ROUTE_CHANGED", INITIALIZE = "INITIALIZE", VISUALIZATION_DATA = "VISUALIZATION_DATA", TILE_HOST_DATA = "TILE_HOST_DATA" } export interface ExtensionInitializeMessage { type: ExtensionNotificationType.INITIALIZE; payload: LookerHostData; } export interface ExtensionRouteChangedMessage { type: ExtensionNotificationType.ROUTE_CHANGED; payload: RouteChangeData; } export interface ExtensionVisualizationDataMessage { type: ExtensionNotificationType.VISUALIZATION_DATA; payload: RawVisualizationData; } export interface TileHostDataChangedMessage { type: ExtensionNotificationType.TILE_HOST_DATA; payload: Partial<TileHostData>; } export type ExtensionNotification = ExtensionInitializeMessage | ExtensionRouteChangedMessage | ExtensionVisualizationDataMessage | TileHostDataChangedMessage; export interface RouteChangeData { route?: string; routeState?: any; } export type HostType = 'standard' | 'embed' | 'spartan'; export type MountType = 'fullscreen' | undefined; export declare enum MountPoint { standalone = "standalone", dashboardVisualization = "dashboard-visualization", dashboardTile = "dashboard-tile", dashboardTilePopup = "dashboard-tile-popup" } export interface LookerHostData { extensionId: string; lookerVersion: string; route?: string; routeState?: any; hostUrl?: string; hostOrigin?: string; hostType?: HostType; mountType?: MountType; mountPoint: MountPoint; contextData?: string; isRendering?: boolean; extensionDashboardTileEnabled: boolean; } export interface ExtensionInitializationResponse { extensionSdkVersion: string; errorMessage?: string; } export interface ExtensionHostConfiguration { initializedCallback?: (errorMessage?: string) => void; setInitialRoute?: (route: string, routeState?: any) => void; requiredLookerVersion?: string; hostChangedRoute?: (route: string, routeState?: any) => void; chattyTimeout?: number; visualizationDataReceivedCallback?: VisualizationDataReceivedCallback; tileHostDataChangedCallback?: TileHostDataChangedCallback; } export interface ExtensionHostApiConfiguration extends ExtensionHostConfiguration { chattyHost: ChattyHostConnection; } export interface FetchCustomParameters { method?: 'POST' | 'GET' | 'DELETE' | 'PATCH' | 'PUT' | 'HEAD'; headers?: Record<string, string>; body?: string; credentials?: 'omit' | 'same-origin' | 'include'; } export interface FetchProxyDataResponse { ok: boolean; status: number; statusText?: string; headers: Record<string, string>; body?: any; } export interface FetchProxy { fetchProxy(resource: string, init?: FetchCustomParameters, responseBodyType?: FetchResponseBodyType): Promise<FetchProxyDataResponse>; } export interface ExtensionSDK { lookerHostData?: Readonly<LookerHostData>; createSecretKeyTag(keyName: string): string; verifyHostConnection(): Promise<boolean>; updateTitle(title: string): void; updateLocation(url: string, state?: any, target?: string): void; openBrowserWindow(url: string, target?: string): void; closeHostPopovers(): void; localStorageSetItem(name: string, value?: string): Promise<boolean>; localStorageRemoveItem(name: string): Promise<boolean>; localStorageGetItem(name: string): Promise<string | null>; clipboardWrite(value: string): Promise<void>; userAttributeSetItem(name: string, value?: string): Promise<boolean>; userAttributeGetItem(name: string): Promise<string | null>; userAttributeResetItem(name: string): Promise<void>; track(name: string, trackAction: string, attributes?: Record<string, any>): void; error(errorEvent: ErrorEvent): void; clientRouteChanged(route: string, routeState?: any): void; getContextData(): any; saveContextData(contextData: any): Promise<any>; refreshContextData(): Promise<any>; createFetchProxy(baseUrl?: string, init?: FetchCustomParameters, responseBodyType?: FetchResponseBodyType): FetchProxy; fetchProxy(resource: string, init?: FetchCustomParameters, responseBodyType?: FetchResponseBodyType): Promise<FetchProxyDataResponse>; serverProxy(resource: string, init?: FetchCustomParameters, responseBodyType?: FetchResponseBodyType): Promise<FetchProxyDataResponse>; oauth2Authenticate(authEndpoint: string, authParameters: Record<string, string>, httpMethod?: string): Promise<any>; oauth2ExchangeCodeForToken(authEndpoint: string, authParameters: Record<string, string>): Promise<any>; spartanLogout(): void; rendered(failureMessage?: string): void; visualizationSDK: VisualizationSDK; tileSDK: TileSDK; isDashboardMountSupported: boolean; }