/** * @template {import('./TypedData.js').TypedSchema} T * @typedef {(list: string[], added: Set>, removed: Set>) => void} TypedCollectionObserverHandler */ /** @template {import('./TypedData.js').TypedSchema} T */ export class TypedCollection { /** * @param {Object} options * @param {T} options.typedSchema * @param {import('./TypedData.js').ExtractKeysFromSchema[]} [options.watchList] * @param {TypedCollectionObserverHandler} [options.handler] * @param {string} [options.ctxName] */ constructor(options: { typedSchema: T; watchList?: Extract[] | undefined; handler?: TypedCollectionObserverHandler | undefined; ctxName?: string | undefined; }); /** * @private * @type {T} */ private __typedSchema; /** * @private * @type {string} */ private __ctxId; /** * @private * @type {Data} */ private __data; /** * @private * @type {import('./TypedData.js').ExtractKeysFromSchema[]} */ private __watchList; /** * @private * @type {Object['subscribe']>[]>} */ private __subsMap; /** * @private * @type {Set} */ private __propertyObservers; /** * @private * @type {Set>} */ private __collectionObservers; /** * @private * @type {Set} */ private __items; /** * @private * @type {Set>} */ private __removed; /** * @private * @type {Set>} */ private __added; /** * @private * @param {String} propName * @param {String} ctxId */ private __notifyObservers; /** @private */ private __observeTimeout; notify(): void; /** @private */ private __notifyTimeout; /** @param {TypedCollectionObserverHandler} handler */ observeCollection(handler: TypedCollectionObserverHandler): () => void; /** @param {TypedCollectionObserverHandler} handler */ unobserveCollection(handler: TypedCollectionObserverHandler): void; /** * @param {Partial>} init * @returns {string} */ add(init: Partial>): string; /** * @param {string} id * @returns {TypedData | null} */ read(id: string): TypedData | null; /** * @template {import('./TypedData.js').ExtractKeysFromSchema} K * @param {string} id * @param {K} propName * @returns {import('./TypedData.js').ExtractDataFromSchema[propName] | null} */ readProp>(id: string, propName: K): import("./TypedData.js").ExtractDataFromSchema[K] | null; /** * @template {import('./TypedData.js').ExtractKeysFromSchema} K * @param {string} id * @param {K} propName * @param {import('./TypedData.js').ExtractDataFromSchema[K]} value */ publishProp>(id: string, propName: K, value: import("./TypedData.js").ExtractDataFromSchema[K]): void; /** @param {string} id */ remove(id: string): void; clearAll(): void; /** @param {Function} handler */ observeProperties(handler: Function): () => void; /** @param {Function} handler */ unobserveProperties(handler: Function): void; /** * @param {(item: TypedData) => Boolean} checkFn * @returns {string[]} */ findItems(checkFn: (item: TypedData) => boolean): string[]; items(): string[]; get size(): number; destroy(): void; } export type TypedCollectionObserverHandler = (list: string[], added: Set>, removed: Set>) => void; import { TypedData } from './TypedData.js'; //# sourceMappingURL=TypedCollection.d.ts.map