@mittwald/kubernetes
Advanced tools
Comparing version 3.2.2 to 3.3.0
@@ -26,3 +26,7 @@ "use strict"; | ||
}; | ||
const watchHandle = this.resource.listWatch(handler, undefined, this.opts); | ||
const opts = Object.assign({ skipAddEventsOnResync: true, onResync: (objs) => { | ||
debug("resynced %d objects", objs.length); | ||
this.store.sync(objs); | ||
} }, this.opts); | ||
const watchHandle = this.resource.listWatch(handler, undefined, opts); | ||
return { | ||
@@ -29,0 +33,0 @@ waitForInitialList: () => watchHandle.initialized, |
@@ -7,2 +7,3 @@ import { MetadataObject } from "../types/meta"; | ||
pull(obj: R): void; | ||
sync(objs: R[]): void; | ||
} | ||
@@ -12,2 +13,3 @@ export interface ObservableStore<R extends MetadataObject> extends Store<R> { | ||
onRemoved(fn: (obj: R) => any): void; | ||
onSynced(fn: (objs: R[]) => any): void; | ||
} | ||
@@ -18,8 +20,11 @@ export declare class ObservableStoreDecorator<R extends MetadataObject> implements ObservableStore<R> { | ||
private onRemoveHandlers; | ||
private onSyncedHandlers; | ||
constructor(inner: Store<R>); | ||
onStoredOrUpdated(fn: (obj: R) => any): void; | ||
onRemoved(fn: (obj: R) => any): void; | ||
onSynced(fn: (objs: R[]) => any): void; | ||
get(namespace: string, name: string): Promise<R | undefined>; | ||
pull(obj: R): void; | ||
store(obj: R): void; | ||
sync(objs: R[]): void; | ||
} | ||
@@ -30,2 +35,3 @@ export declare class InMemoryStore<R extends MetadataObject> implements Store<R> { | ||
pull(obj: R): void; | ||
sync(objs: R[]): void; | ||
get(namespace: string, name: string): Promise<R | undefined>; | ||
@@ -38,4 +44,5 @@ } | ||
store(obj: R): void; | ||
sync(objs: R[]): void; | ||
get(namespace: string, name: string): Promise<R | undefined>; | ||
pull(obj: R): void; | ||
} |
@@ -17,2 +17,3 @@ "use strict"; | ||
this.onRemoveHandlers = []; | ||
this.onSyncedHandlers = []; | ||
} | ||
@@ -25,2 +26,5 @@ onStoredOrUpdated(fn) { | ||
} | ||
onSynced(fn) { | ||
this.onSyncedHandlers.push(fn); | ||
} | ||
get(namespace, name) { | ||
@@ -37,2 +41,6 @@ return this.inner.get(namespace, name); | ||
} | ||
sync(objs) { | ||
this.inner.sync(objs); | ||
this.onSyncedHandlers.forEach(fn => fn(objs)); | ||
} | ||
} | ||
@@ -50,2 +58,6 @@ exports.ObservableStoreDecorator = ObservableStoreDecorator; | ||
} | ||
sync(objs) { | ||
this.objects = new Map(); | ||
objs.forEach(o => this.store(o)); | ||
} | ||
get(namespace, name) { | ||
@@ -66,2 +78,5 @@ return __awaiter(this, void 0, void 0, function* () { | ||
} | ||
sync(objs) { | ||
// no-op | ||
} | ||
get(namespace, name) { | ||
@@ -68,0 +83,0 @@ return __awaiter(this, void 0, void 0, function* () { |
@@ -64,3 +64,3 @@ { | ||
}, | ||
"version": "3.2.2" | ||
"version": "3.3.0" | ||
} |
@@ -7,2 +7,6 @@ import { IKubernetesRESTClient, ListOptions, MandatorySelectorOptions, WatchOptions, WatchResult } from "./client"; | ||
import { JSONPatch, JSONPatchElement, RecursivePartial } from "./api_patch"; | ||
export interface ListWatchOptions<R extends MetadataObject> extends WatchOptions { | ||
onResync?: (objs: R[]) => any; | ||
skipAddEventsOnResync?: boolean; | ||
} | ||
export interface IResourceClient<R extends MetadataObject, K, V, O extends R = R> { | ||
@@ -20,3 +24,3 @@ list(listOptions?: ListOptions): Promise<Array<APIObject<K, V> & O>>; | ||
watch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: WatchOptions): Promise<WatchResult>; | ||
listWatch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: WatchOptions): WatchHandle; | ||
listWatch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: ListWatchOptions<O>): WatchHandle; | ||
} | ||
@@ -40,3 +44,3 @@ export interface INamespacedResourceClient<R extends MetadataObject, K, V, O extends R = R> extends IResourceClient<R, K, V, O> { | ||
watch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: WatchOptions): Promise<WatchResult>; | ||
listWatch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: WatchOptions): WatchHandle; | ||
listWatch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: ListWatchOptions<O>): WatchHandle; | ||
patchJSON(resourceOrName: string | R, patch: JSONPatchElement[]): Promise<R>; | ||
@@ -62,3 +66,3 @@ patchStrategic(resourceOrName: string | R, patch: RecursivePartial<R>): Promise<APIObject<K, V> & O>; | ||
watch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: WatchOptions): Promise<WatchResult>; | ||
listWatch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: WatchOptions): WatchHandle; | ||
listWatch(handler: (event: WatchEvent<O>) => any, errorHandler?: (error: any) => any, opts?: ListWatchOptions<O>): WatchHandle; | ||
apply(resource: R): Promise<APIObject<K, V> & O>; | ||
@@ -65,0 +69,0 @@ put(resource: R): Promise<APIObject<K, V> & O>; |
@@ -125,6 +125,11 @@ "use strict"; | ||
resourceVersion = parseInt(list.metadata.resourceVersion, 10); | ||
for (const i of list.items || []) { | ||
const event = { type: "ADDED", object: i }; | ||
handler(event); | ||
if (opts.onResync) { | ||
opts.onResync(list.items || []); | ||
} | ||
if (!opts.skipAddEventsOnResync) { | ||
for (const i of list.items || []) { | ||
const event = { type: "ADDED", object: i }; | ||
handler(event); | ||
} | ||
} | ||
}); | ||
@@ -131,0 +136,0 @@ const initialized = resync(); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
189266
3471