@joist/di
Version:
Dependency Injection for Vanilla JS classes
22 lines (21 loc) • 951 B
TypeScript
declare global {
interface ElementEventMap {
"context-request": ContextRequestEvent<Context<unknown, unknown>>;
}
interface DocumentEventMap {
"context-request": ContextRequestEvent<Context<unknown, unknown>>;
}
}
export type Context<KeyType, ValueType> = KeyType & {
__context__: ValueType;
};
export type UnknownContext = Context<unknown, unknown>;
export type ContextType<T extends UnknownContext> = T extends Context<infer _, infer V> ? V : never;
export declare function createContext<KeyType, ValueType>(key: KeyType): Context<KeyType, ValueType>;
export type ContextCallback<ValueType> = (value: ValueType, unsubscribe?: () => void) => void;
export declare class ContextRequestEvent<T extends UnknownContext> extends Event {
context: T;
callback: ContextCallback<ContextType<T>>;
subscribe?: boolean;
constructor(context: T, callback: ContextCallback<ContextType<T>>, subscribe?: boolean);
}