@pulzar/core
Version:
Next-generation Node.js framework for ultra-fast web applications with zero-reflection DI, GraphQL, WebSockets, events, and edge runtime support
127 lines • 2.98 kB
TypeScript
import { EventAdapter, EventEnvelope, EventHandler, SubscribeOptions, SubscriptionHandle, AdapterStats, AdapterCapabilities, PublishResult, HealthStatus } from "../types";
interface NATSConfig {
servers?: string | string[];
user?: string;
pass?: string;
token?: string;
nkey?: string;
jwt?: string;
seed?: string;
timeout?: number;
reconnect?: boolean;
maxReconnectAttempts?: number;
reconnectTimeWait?: number;
jetstream?: {
enabled: boolean;
domain?: string;
apiPrefix?: string;
timeout?: number;
};
}
export declare class NATSEventAdapter implements EventAdapter {
readonly name = "nats";
readonly version = "1.0.0";
readonly capabilities: AdapterCapabilities;
private client;
private jetStream;
private jetStreamManager;
private config;
private connected;
private subscriptions;
private stats;
constructor(config?: NATSConfig);
/**
* Connect to NATS server
*/
connect(): Promise<void>;
/**
* Disconnect from NATS
*/
disconnect(): Promise<void>;
/**
* Check if connected
*/
isConnected(): boolean;
/**
* Publish event to NATS/JetStream
*/
publish(subject: string, event: EventEnvelope): Promise<PublishResult>;
/**
* Subscribe to events
*/
subscribe(subject: string, handler: EventHandler, options?: SubscribeOptions): Promise<SubscriptionHandle>;
/**
* Unsubscribe from events
*/
unsubscribe(handle: SubscriptionHandle): Promise<void>;
/**
* Acknowledge message
*/
ack(event: EventEnvelope): Promise<void>;
/**
* Negative acknowledge message
*/
nack(event: EventEnvelope, requeue?: boolean): Promise<void>;
/**
* Flush pending messages
*/
flush(): Promise<void>;
/**
* Get adapter statistics
*/
getStats(): Promise<AdapterStats>;
/**
* Health check
*/
healthCheck(): Promise<HealthStatus>;
/**
* Create JetStream consumer
*/
private createJetStreamConsumer;
/**
* Handle incoming message
*/
private handleMessage;
/**
* Ensure stream exists
*/
private ensureStream;
/**
* Get stream name from subject
*/
private getStreamName;
/**
* Create NATS headers
*/
private createHeaders;
/**
* Serialize event for transmission
*/
private serialize;
/**
* Deserialize received message
*/
private deserialize;
/**
* Setup connection event handlers
*/
private setupEventHandlers;
/**
* Try to import NATS package
*/
private importNATS;
/**
* Update statistics
*/
private updateStats;
/**
* Reset statistics
*/
private resetStats;
/**
* Generate unique ID
*/
private generateId;
}
export default NATSEventAdapter;
//# sourceMappingURL=nats.d.ts.map