firewalk
Version:
A collection traversal library for Firestore
20 lines (19 loc) • 1.98 kB
TypeScript
import type { firestore } from 'firebase-admin';
import type { BatchCallback, ExitEarlyPredicate, Traversable, TraversalConfig, TraversalResult, TraverseEachCallback, TraverseEachConfig, Traverser } from '../../../api';
export type OnAfterBatchProcess = () => void | Promise<void>;
export type BatchProcessor<AppModelType = firestore.DocumentData, DbModelType extends firestore.DocumentData = firestore.DocumentData> = (...args: Parameters<BatchCallback<AppModelType, DbModelType>>) => void | Promise<void> | OnAfterBatchProcess | Promise<OnAfterBatchProcess>;
export declare abstract class AbstractTraverser<AppModelType = firestore.DocumentData, DbModelType extends firestore.DocumentData = firestore.DocumentData> implements Traverser<AppModelType, DbModelType> {
#private;
readonly traversalConfig: TraversalConfig;
protected readonly exitEarlyPredicates: ExitEarlyPredicate<AppModelType, DbModelType>[];
protected static readonly baseConfig: TraversalConfig;
protected static readonly baseTraverseEachConfig: TraverseEachConfig;
protected constructor(traversalConfig: TraversalConfig, exitEarlyPredicates: ExitEarlyPredicate<AppModelType, DbModelType>[]);
traverseEach(callback: TraverseEachCallback<AppModelType, DbModelType>, config?: Partial<TraverseEachConfig>): Promise<TraversalResult>;
protected runTraversal(processBatch: BatchProcessor<AppModelType, DbModelType>): Promise<TraversalResult>;
protected shouldExitEarly(batchDocs: firestore.QueryDocumentSnapshot<AppModelType, DbModelType>[], batchIndex: number): boolean;
abstract readonly traversable: Traversable<AppModelType, DbModelType>;
abstract withConfig(config: Partial<TraversalConfig>): Traverser<AppModelType, DbModelType>;
abstract withExitEarlyPredicate(predicate: ExitEarlyPredicate<AppModelType, DbModelType>): Traverser<AppModelType, DbModelType>;
abstract traverse(callback: BatchCallback<AppModelType, DbModelType>): Promise<TraversalResult>;
}