@mittwald/kubernetes
Version:
Kubernetes client library
46 lines (45 loc) • 2.15 kB
TypeScript
import { MetadataObject } from "../types/meta";
import { INamespacedResourceClient } from "../resource";
export interface Store<TResource extends MetadataObject> {
store(obj: TResource): Promise<void> | void;
get(namespace: string, name: string): Promise<TResource | undefined> | TResource | undefined;
pull(obj: TResource): Promise<void> | void;
sync(objs: TResource[]): Promise<void> | void;
}
export interface ObservableStore<TResource extends MetadataObject> extends Store<TResource> {
onStoredOrUpdated(fn: (obj: TResource) => any): void;
onRemoved(fn: (obj: TResource) => any): void;
onSynced(fn: (objs: TResource[]) => any): void;
}
export declare class ObservableStoreDecorator<TResource extends MetadataObject> implements ObservableStore<TResource> {
private readonly inner;
private readonly onStoreHandlers;
private readonly onRemoveHandlers;
private readonly onSyncedHandlers;
constructor(inner: Store<TResource>);
onStoredOrUpdated(fn: (obj: TResource) => any): void;
onRemoved(fn: (obj: TResource) => any): void;
onSynced(fn: (objs: TResource[]) => any): void;
get(namespace: string, name: string): Promise<TResource | undefined> | TResource | undefined;
pull(obj: TResource): Promise<void>;
store(obj: TResource): Promise<void>;
sync(objs: TResource[]): Promise<void>;
}
export declare class InMemoryStore<TResource extends MetadataObject> implements Store<TResource> {
private objects;
store(obj: TResource): void;
pull(obj: TResource): void;
sync(objs: TResource[]): Promise<void>;
get(namespace: string, name: string): TResource | undefined;
}
export declare class CachingLookupStore<TResource extends MetadataObject> implements Store<TResource> {
private readonly api;
private readonly expirationSeconds;
private cache;
constructor(api: INamespacedResourceClient<any, any, any, TResource>, expirationSeconds?: number);
private storeInMap;
store(obj: TResource): void;
sync(objs: TResource[]): void;
get(namespace: string, name: string): Promise<TResource | undefined>;
pull(obj: TResource): void;
}