UNPKG

@adpt/core

Version:
65 lines 3.22 kB
import { Logger } from "@adpt/utils"; import { AdaptElement, AdaptElementOrNull } from "../jsx"; import { Action, ActionInfo, Plugin, PluginOptions } from "./deploy_types"; export interface WidgetPair<E extends AdaptElement, O extends object> { queryDomainKey: QueryDomainKey; actionInfo: ActionInfo; element?: E; observed?: O; } export interface QueryDomain<Id, Secret> { id: Id; secret: Secret; } declare type QueryDomainKey = string; export declare type WidgetId = string; export interface WidgetChange<E extends AdaptElement> { id: WidgetId; from?: E; to?: E; } interface Expected<E extends AdaptElement> { [queryDomainKey: string]: WidgetChange<E>[]; } export interface Observed<O extends object> { [queryDomainKey: string]: O[]; } declare type ComputeChanges<E extends AdaptElement, O extends object> = (e: WidgetChange<E>, o: O | undefined) => ActionInfo; declare type TranslateAction<QD extends QueryDomain<any, any>, E extends AdaptElement, O extends object> = (d: QD, p: WidgetPair<E, O>) => void | Promise<void>; export declare abstract class WidgetPlugin<WidgetElem extends AdaptElement, WidgetObs extends object, QDomain extends QueryDomain<any, any>> implements Plugin<Observed<WidgetObs>> { deployID_?: string; log_?: Logger; dataDir_?: string; queryDomains: Map<string, QDomain>; findElems: (dom: AdaptElementOrNull) => WidgetElem[]; getElemQueryDomain: (el: WidgetElem) => QDomain; getWidgetTypeFromElem: (el: WidgetElem) => string; getWidgetTypeFromObs: (obs: WidgetObs) => string; getWidgetIdFromElem: (el: WidgetElem) => WidgetId; getWidgetIdFromObs: (obs: WidgetObs) => WidgetId; computeChanges: ComputeChanges<WidgetElem, WidgetObs>; getObservations: (domain: QDomain, deployID: string, elemsInQDomain: WidgetChange<WidgetElem>[]) => Promise<WidgetObs[]>; createWidget: (domain: QDomain, deployID: string, resource: WidgetPair<WidgetElem, WidgetObs>) => Promise<void>; destroyWidget: (domain: QDomain, deployID: string, resource: WidgetPair<WidgetElem, WidgetObs>) => Promise<void>; modifyWidget: (domain: QDomain, deployID: string, resource: WidgetPair<WidgetElem, WidgetObs>) => Promise<void>; start(options: PluginOptions): Promise<void>; createExpected(oldDom: AdaptElementOrNull, newDom: AdaptElementOrNull, createQueryDomains?: boolean): Expected<WidgetElem>; observe(oldDom: AdaptElementOrNull, dom: AdaptElementOrNull): Promise<Observed<WidgetObs>>; analyze(oldDom: AdaptElementOrNull, dom: AdaptElementOrNull, obs: Observed<WidgetObs>): Action[]; finish(): Promise<void>; readonly deployID: string; readonly dataDir: string; log: (arg: any, ...args: any[]) => void; queryDomain(key: QueryDomainKey): QDomain | undefined; widgetInfo(pair: WidgetPair<WidgetElem, WidgetObs>): { type: string; id: string; key: string | undefined; }; /** * Translate WidgetPairs into plugin Actions */ translatePairs(actions: Action[], pairs: WidgetPair<WidgetElem, WidgetObs>[], actionType: string, action: TranslateAction<QDomain, WidgetElem, WidgetObs>): void; } export {}; //# sourceMappingURL=widget_plugin.d.ts.map