@devcycle/nodejs-server-sdk
Version:
The DevCycle NodeJS Server SDK used for feature management.
60 lines (59 loc) • 2.15 kB
TypeScript
import { DVCRequestEvent } from './models/requestEvent';
import { BucketedUserConfig, DVCLogger, DVCReporter } from '@devcycle/types';
import { DevCycleEvent, DVCPopulatedUser } from '@devcycle/js-cloud-server-sdk';
import { WASMBucketingExports } from '@devcycle/bucketing-assembly-script';
export declare const AggregateEventTypes: Record<string, string>;
export declare const EventTypes: Record<string, string>;
type UserEventsBatchRecord = {
user: DVCPopulatedUser;
events: DVCRequestEvent[];
};
export type FlushPayload = {
payloadId: string;
eventCount: number;
records: UserEventsBatchRecord[];
};
export type EventQueueOptions = {
eventFlushIntervalMS?: number;
disableAutomaticEventLogging?: boolean;
disableCustomEventLogging?: boolean;
eventRequestChunkSize?: number;
maxEventQueueSize?: number;
flushEventQueueSize?: number;
logger: DVCLogger;
reporter?: DVCReporter;
eventsAPIURI?: string;
};
export declare class EventQueue {
private readonly sdkKey;
private readonly clientUUID;
private readonly bucketing;
private readonly logger;
private readonly reporter?;
private readonly eventsAPIURI?;
eventFlushIntervalMS: number;
flushEventQueueSize: number;
maxEventQueueSize: number;
disabledEventFlush: boolean;
private flushInterval;
private flushInProgress;
private flushCallbacks;
constructor(sdkKey: string, clientUUID: string, bucketing: WASMBucketingExports, options: EventQueueOptions);
cleanup(): void;
private _flushEvents;
/**
* Flush events in queue to DevCycle Events API. Requeue events if flush fails
*/
flushEvents(): Promise<void>;
/**
* Queue DVCAPIEvent for publishing to DevCycle Events API.
*/
queueEvent(user: DVCPopulatedUser, event: DevCycleEvent): void;
/**
* Queue DVCEvent that can be aggregated together, where multiple calls are aggregated
* by incrementing the 'value' field.
*/
queueAggregateEvent(user: DVCPopulatedUser, event: DevCycleEvent, bucketedConfig?: BucketedUserConfig): void;
private checkEventQueueSize;
}
export {};