firestore-queue
Version:
A powerful, scalable queue system built on Google Firestore with time-based indexing, auto-configuration, and connection reuse
94 lines • 2.25 kB
TypeScript
import { QueueMessageInput } from '../types';
/**
* Writer interface for different data entry methods
*/
export interface WriterInterface {
write(message: QueueMessageInput): Promise<WriteResult>;
writeBatch(messages: QueueMessageInput[]): Promise<BulkWriteResult>;
close?(): Promise<void>;
}
/**
* Writer configuration
*/
export interface WriterConfig {
queueName: string;
projectId: string;
databaseId?: string;
serviceAccountPath?: string;
firestoreInstance?: any;
validatePayload?: boolean;
maxPayloadSize?: number;
allowedMessageTypes?: string[];
enableBatching?: boolean;
batchSize?: number;
batchTimeoutMs?: number;
retryAttempts?: number;
retryDelayMs?: number;
deadLetterQueue?: string;
enableMetrics?: boolean;
metricsCallback?: (metrics: WriterMetrics) => void;
}
/**
* Write operation result
*/
export interface WriteResult {
success: boolean;
messageId?: string;
error?: string;
timestamp: Date;
latencyMs: number;
}
/**
* Bulk write operation result
*/
export interface BulkWriteResult {
success: boolean;
totalMessages: number;
successfulWrites: number;
failedWrites: number;
messageIds: string[];
errors: Array<{
index: number;
error: string;
}>;
timestamp: Date;
latencyMs: number;
}
/**
* Writer metrics
*/
export interface WriterMetrics {
totalWrites: number;
successfulWrites: number;
failedWrites: number;
averageLatencyMs: number;
currentBatchSize: number;
lastWriteTimestamp: Date;
}
/**
* HTTP endpoint configuration
*/
export interface HTTPWriterConfig extends WriterConfig {
endpoint: string;
authToken?: string;
headers?: Record<string, string>;
timeout?: number;
}
/**
* Stream writer configuration
*/
export interface StreamWriterConfig extends WriterConfig {
flushIntervalMs?: number;
maxBufferSize?: number;
compression?: boolean;
}
/**
* Cloud Function writer configuration
*/
export interface CloudFunctionWriterConfig extends WriterConfig {
functionName: string;
region?: string;
triggerType?: 'http' | 'firestore' | 'schedule';
schedule?: string;
}
//# sourceMappingURL=types.d.ts.map