UNPKG

@discoveryjs/discovery

Version:

Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards

581 lines (578 loc) 18.2 kB
// Generated by dts-bundle-generator v9.5.1 declare const logLevels: readonly [ "silent", "error", "warn", "info", "perf", "debug" ]; type LogLevel = typeof logLevels[number]; type ConsoleMethodName = "log" | "error" | "warn" | "info" | "debug" | "group" | "groupCollapsed" | "groupEnd"; type ConsoleMethod = (...args: unknown[]) => void; type ConsoleLike = { [K in ConsoleMethodName]: ConsoleMethod; }; type LoogerMethod = ConsoleMethod & { group(message: string, content: (() => unknown[] | void) | unknown[]): void; groupCollapsed(message: string, content: (() => unknown[] | void) | unknown[]): void; }; declare class Logger { #private; error: LoogerMethod; warn: LoogerMethod; info: LoogerMethod; perf: LoogerMethod; debug: LoogerMethod; log: LoogerMethod; constructor(prefix?: string, logLevel?: LogLevel, consoleLikeApi?: ConsoleLike); shouldLogLevel(logLevel: LogLevel): boolean; get logLevel(): LogLevel; set logLevel(logLevel: LogLevel); } type EventMap = Record<string, unknown[]>; type Callback<P extends unknown[]> = (...args: P) => void; type Listener<P extends unknown[]> = { callback: Callback<P> | null; next: Listener<P> | null; }; declare class Emitter<Events extends EventMap> { listeners: { [EventName in keyof Events]: Listener<Events[EventName]> | null; }; constructor(); on<E extends keyof Events>(event: E, callback: Callback<Events[E]>): this; once<E extends keyof Events>(event: E, callback: Callback<Events[E]>): this; off<E extends keyof Events>(event: E, callback: Callback<Events[E]>): this; emit<E extends keyof Events>(event: E, ...args: Events[E]): boolean; } type OnChangeCallback<T> = (value: T, unsubscribe: () => void) => void | Promise<void>; type Subscriber<T> = { callback: OnChangeCallback<T> | null; subscriber: Subscriber<T> | null; }; declare class Observer<T> { #private; subscriber: Subscriber<T> | null; value: T; constructor(initValue: T, shouldUpdate?: (a: T, b: T) => boolean); get readonly(): { subscribe: Observer<T>["subscribe"]; subscribeSync: Observer<T>["subscribeSync"]; unsubscribe: Observer<T>["unsubscribe"]; readonly value: T; }; subscribe(callback: OnChangeCallback<T>): () => void; subscribeSync(callback: OnChangeCallback<T>): () => void; unsubscribe(callback: OnChangeCallback<T>): void; shouldUpdate(newValue: T, oldValue: T): boolean; set(value: T): boolean; asyncSet(value: T): Promise<boolean>; } type LoadDataState = { stage: "inited" | "request" | "receiving" | "decoding" | "received"; progress?: LoadDataStateProgress; step?: string; } | { stage: "error"; error: Error; }; type LoadDataStateProgress = { done: boolean; elapsed: number; units?: "bytes"; completed: number; total?: number; }; type LoadDataResourceSource = Response | File | Blob | ArrayBufferView | string; type LoadDataResourceMetadata = { type?: string; name?: string; size?: number | null; encodedSize?: number; createdAt?: string | number; [k: string]: unknown; }; type ExtractResourceOptions = { isResponseOk?: (response: Response) => boolean; getContentSize?: (response: Response) => string | undefined; getContentEncodedSize?: (response: Response) => string | undefined; getContentCreatedAt?: (response: Response) => string | undefined; }; type ProgressbarStage = keyof typeof loadStages; type ProgressbarState = { stage: ProgressbarStage; progress: LoadDataStateProgress | null; error: Error | null; }; export declare const loadStages: { inited: { value: number; duration: number; title: string; }; request: { value: number; duration: number; title: string; }; receiving: { value: number; duration: number; title: string; }; decoding: { value: number; duration: number; title: string; }; received: { value: number; duration: number; title: string; }; prepare: { value: number; duration: number; title: string; }; initui: { value: number; duration: number; title: string; }; done: { value: number; duration: number; title: string; }; error: { value: number; duration: number; title: string; }; }; export declare function decodeStageProgress(stage: ProgressbarStage, progress: ProgressbarState["progress"], step?: string): { stageTitle: string; progressValue: number; progressText: string | null; stepText: string; title: string; }; declare function extractResourceMetadata(source: LoadDataResourceSource, options?: ExtractResourceOptions): LoadDataResourceMetadata | undefined; type PageId = string; type PageRef = string | number | null; type PageParams = Record<string, unknown> | [ string, unknown ][] | string; type PageAnchor = string | null; type PageHashStateWithAnchor = PageHashState & { anchor: PageAnchor; }; type PageHashState = { id: PageId; ref: PageRef; params: PageParams; }; type SerializedColorSchemeValue = typeof colorSchemeSerializedValues[number]; type ColorSchemeState = typeof colorSchemeStateValues[number]; declare const colorSchemeSerializedValues: readonly [ "auto", "light", "dark" ]; declare const colorSchemeStateValues: readonly [ "auto", "light", "dark", "light-only", "dark-only" ]; type PopupTriggerEl = HTMLElement | null | undefined; type PopupRender = (el: HTMLElement, triggerEl: PopupTriggerEl, hide: () => void) => void; type PopupOptions = { position: "trigger" | "pointer"; positionMode: "safe" | "natural"; pointerOffsetX: number; pointerOffsetY: number; showDelay: boolean | number | ((triggerEl: PopupTriggerEl) => boolean | number); hoverTriggers: string | null; hoverPin: false | "popup-hover" | "trigger-click"; hideIfEventOutside: boolean; hideOnResize: boolean; render: PopupRender; className: string; }; type RenderFunction = (el: HTMLElement | DocumentFragment, props: RenderProps, data?: any, context?: any) => Promise<any> | void; type RawViewConfig = SingleViewConfig | RenderFunction | string | RawViewConfig[]; type ClassNameFn = (data: any, context: any) => string | false | null | undefined; type queryFn = (data: any, context: any) => any; type query = string | queryFn | boolean; interface SingleViewConfig { view: string | RenderFunction; when?: query; context?: query; data?: query; whenData?: query; className?: string | ClassNameFn | (string | ClassNameFn)[]; tooltip?: TooltipConfig | RawViewConfig; [key: string]: any; } type RenderPropsForbiddenKeys = "view" | "when" | "context" | "data" | "whenData" | "postRender" | "className" | "tooltip"; type RenderProps = { [K in string]: K extends RenderPropsForbiddenKeys ? never : any; }; type TooltipConfig = Partial<{ showDelay: boolean | number; className: string; position: PopupOptions["position"]; positionMode: PopupOptions["positionMode"]; pointerOffsetX: number; pointerOffsetY: number; content: RawViewConfig; }>; type NavItemConfig = Omit<SingleViewConfig, "view"> & { view?: string; }; type CreateMessageType<T extends Record<string, any>> = { [K in keyof T]: { from: "discoveryjs-app"; id: string; type: K; payload: T[K]; }; }[keyof T]; type NavSection = "primary" | "secondary" | "menu"; type NavInsertPosition = "before" | "after" | number; type EmbedHostToPreinitMessage = CreateMessageType<{ defineAction: string; setPageHash: { hash: string; replace?: boolean; }; setRouterPreventLocationUpdate: boolean; }>; type EmbedPreinitToHostMessage = CreateMessageType<{ preinit: { page: { hash: string; }; }; loadingState: LoadDataState; destroy: null; }>; type EmbedHostToClientMessage = CreateMessageType<{ defineAction: string; notification: { name: string; details: any; }; setPageHash: { hash: string; replace?: boolean; }; setPageHashState: Partial<PageHashState> & { replace?: boolean; }; setPageHashStateWithAnchor: Partial<PageHashStateWithAnchor> & { replace?: boolean; }; setPage: PageHashState & { replace?: boolean; }; setPageRef: { ref: PageRef; replace?: boolean; }; setPageParams: { params: PageParams; replace: boolean; }; setPageAnchor: { anchor: PageAnchor; replace: boolean; }; setColorSchemeState: ColorSchemeState; setRouterPreventLocationUpdate: boolean; unloadData: null; actionResult: { callId: string; value: unknown; } | { callId: string; error: string; }; changeNavButtons: { section: NavSection; action: "insert"; name: string; position: NavInsertPosition; config: NavItemConfig; commands: string[]; } | { section: NavSection; action: "prepend"; config: NavItemConfig; commands: string[]; } | { section: NavSection; action: "append"; config: NavItemConfig; commands: string[]; } | { section: NavSection; action: "before"; name: string; config: NavItemConfig; commands: string[]; } | { section: NavSection; action: "after"; name: string; config: NavItemConfig; commands: string[]; } | { section: NavSection; action: "replace"; name: string; config: NavItemConfig; commands: string[]; } | { section: NavSection; action: "remove"; name: string; }; dataStream: { stream: ReadableStream; resource: LoadDataResourceMetadata; }; startChunkedDataUpload: { acceptToken: string; resource: LoadDataResourceMetadata; }; dataChunk: { acceptToken: string; value: Uint8Array | undefined; done: boolean; }; cancelChunkedDataUpload: { acceptToken: string; error: string; }; }>; type EmbedClientToHostMessage = CreateMessageType<{ ready: { page: PageHashStateWithAnchor & { hash: string; }; colorScheme: { value: SerializedColorSchemeValue; state: ColorSchemeState; }; }; pageHashChanged: PageHashStateWithAnchor & { hash: string; replace: boolean; }; colorSchemeChanged: { value: SerializedColorSchemeValue; state: ColorSchemeState; }; action: { callId: string; name: string; args: unknown[]; }; navMethod: string; loadingState: ProgressbarState; data: null; unloadData: null; destroy: null; }>; type LocationSync = ReturnType<typeof createLocationSync>; declare function createLocationSync(onChange: (newHash: string, oldHash: string) => void, logger?: Logger): { set(hash: string, replace: boolean): void; dispose(): void; }; export type BaseAppEvents = { destroy: [ ]; }; export interface EmbedPreinitAppEvents extends BaseAppEvents { loadingStateChanged: [ state: LoadDataState ]; } export interface EmbedAppEvents extends BaseAppEvents { colorSchemeChanged: [ value: { state: ColorSchemeState; value: SerializedColorSchemeValue; } ]; loadingStateChanged: [ state: ProgressbarState ]; pageHashChanged: [ hash: string, replace: boolean ]; unloadData: [ ]; data: [ ]; } export type onDisconnectCallback = () => void; export type onPreinitCallback = (api: typeof EmbedPreinitApp.prototype.publicApi) => onDisconnectCallback | void; export type onConnectCallback = (api: typeof EmbedApp.prototype.publicApi) => onDisconnectCallback | void; export type ActionsMap = Map<string, (...args: unknown[]) => unknown>; declare class BaseApp<Message extends EmbedHostToPreinitMessage | EmbedHostToClientMessage, Events extends BaseAppEvents = BaseAppEvents> extends Emitter<Events> { window: Window; id: string; actions: ActionsMap; dataLoadToken: string | null; constructor(window: Window, id: string, actions: ActionsMap); sendMessage<T extends Message["type"]>(type: T, payload: Extract<Message, { type: T; }>["payload"], transfer?: Transferable[]): void; destroy(): void; } declare class EmbedPreinitApp extends BaseApp<EmbedHostToPreinitMessage, EmbedPreinitAppEvents> { publicApi: ReturnType<typeof EmbedPreinitApp.createPublicApi>; static createPublicApi(app: EmbedPreinitApp): Readonly<{ on: EmbedPreinitApp["on"]; once: EmbedPreinitApp["once"]; off: EmbedPreinitApp["off"]; defineAction(name: string, fn: (...args: unknown[]) => unknown): void; setPageHash(hash: string, replace?: boolean): void; setRouterPreventLocationUpdate(allow?: boolean): void; }>; constructor(window: Window, id: string, actions: ActionsMap); processMessage(message: EmbedPreinitToHostMessage): void; } declare class EmbedApp extends BaseApp<EmbedHostToClientMessage, EmbedAppEvents> { commandMap: Map<string, (...args: unknown[]) => unknown>; dataLoadToken: string | null; pageHash: Observer<string>; pageId: Observer<string>; pageRef: Observer<PageRef>; pageParams: Observer<PageParams>; pageAnchor: Observer<PageAnchor>; locationSync: LocationSync | null; colorScheme: Observer<{ state: ColorSchemeState | "unknown"; value: SerializedColorSchemeValue | "unknown"; }>; publicApi: ReturnType<typeof EmbedApp.createPublicApi>; static createPublicApi(app: EmbedApp): Readonly<{ pageHash: { subscribe: (callback: (value: string, unsubscribe: () => void) => void | Promise<void>) => () => void; subscribeSync: (callback: (value: string, unsubscribe: () => void) => void | Promise<void>) => () => void; unsubscribe: (callback: (value: string, unsubscribe: () => void) => void | Promise<void>) => void; readonly value: string; }; pageId: { subscribe: (callback: (value: string, unsubscribe: () => void) => void | Promise<void>) => () => void; subscribeSync: (callback: (value: string, unsubscribe: () => void) => void | Promise<void>) => () => void; unsubscribe: (callback: (value: string, unsubscribe: () => void) => void | Promise<void>) => void; readonly value: string; }; pageRef: { subscribe: (callback: (value: PageRef, unsubscribe: () => void) => void | Promise<void>) => () => void; subscribeSync: (callback: (value: PageRef, unsubscribe: () => void) => void | Promise<void>) => () => void; unsubscribe: (callback: (value: PageRef, unsubscribe: () => void) => void | Promise<void>) => void; readonly value: PageRef; }; pageAnchor: { subscribe: (callback: (value: PageAnchor, unsubscribe: () => void) => void | Promise<void>) => () => void; subscribeSync: (callback: (value: PageAnchor, unsubscribe: () => void) => void | Promise<void>) => () => void; unsubscribe: (callback: (value: PageAnchor, unsubscribe: () => void) => void | Promise<void>) => void; readonly value: PageAnchor; }; pageParams: { subscribe: (callback: (value: PageParams, unsubscribe: () => void) => void | Promise<void>) => () => void; subscribeSync: (callback: (value: PageParams, unsubscribe: () => void) => void | Promise<void>) => () => void; unsubscribe: (callback: (value: PageParams, unsubscribe: () => void) => void | Promise<void>) => void; readonly value: PageParams; }; colorScheme: { subscribe: (callback: (value: { state: ColorSchemeState | "unknown"; value: SerializedColorSchemeValue | "unknown"; }, unsubscribe: () => void) => void | Promise<void>) => () => void; subscribeSync: (callback: (value: { state: ColorSchemeState | "unknown"; value: SerializedColorSchemeValue | "unknown"; }, unsubscribe: () => void) => void | Promise<void>) => () => void; unsubscribe: (callback: (value: { state: ColorSchemeState | "unknown"; value: SerializedColorSchemeValue | "unknown"; }, unsubscribe: () => void) => void | Promise<void>) => void; readonly value: { state: ColorSchemeState | "unknown"; value: SerializedColorSchemeValue | "unknown"; }; }; on: EmbedApp["on"]; once: EmbedApp["once"]; off: EmbedApp["off"]; nav: { insert(config: NavItemConfig, position: NavInsertPosition, name: string): void; prepend(config: NavItemConfig): void; append(config: NavItemConfig): void; before(name: string, config: NavItemConfig): void; after(name: string, config: NavItemConfig): void; replace(name: string, config: NavItemConfig): void; remove(name: string): void; } & { primary: { insert(config: NavItemConfig, position: NavInsertPosition, name: string): void; prepend(config: NavItemConfig): void; append(config: NavItemConfig): void; before(name: string, config: NavItemConfig): void; after(name: string, config: NavItemConfig): void; replace(name: string, config: NavItemConfig): void; remove(name: string): void; }; secondary: { insert(config: NavItemConfig, position: NavInsertPosition, name: string): void; prepend(config: NavItemConfig): void; append(config: NavItemConfig): void; before(name: string, config: NavItemConfig): void; after(name: string, config: NavItemConfig): void; replace(name: string, config: NavItemConfig): void; remove(name: string): void; }; menu: { insert(config: NavItemConfig, position: NavInsertPosition, name: string): void; prepend(config: NavItemConfig): void; append(config: NavItemConfig): void; before(name: string, config: NavItemConfig): void; after(name: string, config: NavItemConfig): void; replace(name: string, config: NavItemConfig): void; remove(name: string): void; }; }; notify(name: string, details: any): void; defineAction(name: string, fn: (...args: unknown[]) => unknown): void; setPageHash(hash: string, replace?: boolean): void; setPageHashState(pageState: Partial<PageHashState>, replace?: boolean): void; setPageHashStateWithAnchor(pageStateWithAnchor: Partial<PageHashStateWithAnchor>, replace?: boolean): void; setPage(id: string, ref: PageRef, params: PageParams, replace?: boolean): void; setPageRef(ref: PageRef, replace?: boolean): void; setPageParams(params: PageParams, replace?: boolean): void; setPageAnchor(anchor: PageAnchor, replace?: boolean): void; setColorSchemeState(value: ColorSchemeState): void; setRouterPreventLocationUpdate(allow?: boolean): void; setLocationSync(enabled?: boolean): void; unloadData(): void; uploadData(source: unknown, getResourceMetadataFromSource: typeof extractResourceMetadata): Promise<void>; }>; constructor(window: Window, id: string, actions: ActionsMap); processMessage(message: EmbedClientToHostMessage): Promise<void>; destroy(): void; } export declare function connectToEmbedApp(iframe: HTMLIFrameElement, onConnect: onConnectCallback): onDisconnectCallback; export declare function connectToEmbedApp(iframe: HTMLIFrameElement, onPreinit: onPreinitCallback | void, onConnect: onConnectCallback): onDisconnectCallback; export {};