@croct/plug
Version:
A fully-featured devkit for building natively personalized applications.
42 lines (39 loc) • 1.44 kB
TypeScript
import { TokenStore } from '@croct/sdk/token';
import { EvaluatorFacade } from '@croct/sdk/facade/evaluatorFacade';
import { TrackerFacade } from '@croct/sdk/facade/trackerFacade';
import { SdkEventManager } from './sdk/index.js';
import { UserFacade } from '@croct/sdk/facade/userFacade';
import { SessionFacade } from '@croct/sdk/facade/sessionFacade';
import { Tab } from '@croct/sdk/tab';
import { CidAssigner } from '@croct/sdk/cid';
import { Logger } from '@croct/sdk/logging';
import '@croct/sdk/eventManager';
import '@croct/sdk/sdkEvents';
interface PluginSdk {
readonly version: string;
readonly appId: string;
readonly tracker: TrackerFacade;
readonly evaluator: EvaluatorFacade;
readonly user: UserFacade;
readonly session: SessionFacade;
readonly tab: Tab;
readonly userTokenStore: TokenStore;
readonly previewTokenStore: TokenStore;
readonly cidAssigner: CidAssigner;
readonly eventManager: SdkEventManager;
getLogger(...namespace: string[]): Logger;
getTabStorage(...namespace: string[]): Storage;
getBrowserStorage(...namespace: string[]): Storage;
}
interface PluginArguments<T = any> {
options: T;
sdk: PluginSdk;
}
interface PluginFactory<T = any> {
(args: PluginArguments<T>): Plugin;
}
interface Plugin {
enable(): Promise<void> | void;
disable?(): Promise<void> | void;
}
export type { Plugin, PluginArguments, PluginFactory, PluginSdk };