UNPKG

adnbn

Version:

Addon Bone - Cross-browser web extension framework with shared code base

56 lines (53 loc) 2.8 kB
import { Required } from 'utility-types'; import { T as EntrypointOptions } from '../manifest-DAV18Z2K.js'; import { Awaiter, DeepAsyncProxy } from './helpers.js'; import { MessageSendOptions, MessageSender } from './message.js'; import 'react'; import './app.js'; import './browser.js'; import './locale.js'; type TransportType = ((...args: any[]) => Promise<any>) | { [key: string]: any | TransportType; }; interface TransportDictionary { [key: string]: any; } type TransportName = Extract<keyof TransportDictionary, string>; type TransportTarget<T extends TransportDictionary, K extends keyof T> = T[K]; type TransportProxyTarget<T extends TransportDictionary, K extends keyof T> = DeepAsyncProxy<T[K]>; interface TransportManager { add<K extends TransportName>(name: K, instance: TransportDictionary[K]): this; get<K extends TransportName>(name: K): TransportDictionary[K] | undefined; has(name: TransportName): boolean; remove<K extends TransportName>(name: K): TransportDictionary[K] | undefined; clear(): this; } interface TransportMessageData { path?: string; args: any[]; } interface TransportMessage { send(data: TransportMessageData, options?: MessageSendOptions): any; watch(handler: (data: TransportMessageData, sender: MessageSender) => any): void; } interface TransportProvider<T extends TransportType> { get(): T; destroy(): void; } interface TransportRegister<T extends TransportType, A extends any[] = []> extends TransportProvider<T> { register(...args: A): T; } interface TransportConfig { name: string; } type TransportOptions = TransportConfig & EntrypointOptions; type TransportEntrypointOptions = Partial<TransportOptions>; type TransportInitGetter<O extends TransportEntrypointOptions, T extends TransportType> = (options: O) => T; type TransportMainHandler<O extends TransportEntrypointOptions, T extends TransportType> = (instance: T, options: O) => Awaiter<void>; type TransportDefinition<O extends TransportOptions, T extends TransportType> = TransportEntrypointOptions & { init: TransportInitGetter<O, T>; main?: TransportMainHandler<O, T>; }; type TransportUnresolvedDefinition<O extends TransportOptions, T extends TransportType> = Partial<TransportDefinition<O, T>>; type TransportResolvedDefinition<O extends TransportOptions, T extends TransportType> = Required<TransportDefinition<O, T>, "name" | "init">; export type { TransportConfig, TransportDefinition, TransportDictionary, TransportEntrypointOptions, TransportInitGetter, TransportMainHandler, TransportManager, TransportMessage, TransportMessageData, TransportName, TransportOptions, TransportProvider, TransportProxyTarget, TransportRegister, TransportResolvedDefinition, TransportTarget, TransportType, TransportUnresolvedDefinition };