@agentman/chat-widget
Version:
Agentman Chat Widget for easy integration with web applications
62 lines (61 loc) • 1.72 kB
TypeScript
import type { ClientMetadata } from '../types/types';
/**
* Utility class for collecting client metadata
*/
export declare class ClientMetadataCollector {
/**
* Generate a unique device ID for this browser/device
*/
private static generateDeviceId;
/**
* Generate a session ID for this browser session
*/
private static generateSessionId;
/**
* Detect browser/device type from user agent
*/
private static detectBrowserDevice;
/**
* Get timezone string
*/
private static getTimezone;
/**
* Fetch IP address and geolocation from external service with security measures
*/
static fetchIPAndGeoLocation(): Promise<{
ip_address?: string;
geo_location?: string;
}>;
/**
* Safely parse and validate IP service response
*/
private static parseAndValidateIPResponse;
/**
* Extract and sanitize IP data from validated response
*/
private static extractIPData;
/**
* Validate IP address format
*/
private static isValidIP;
/**
* Sanitize string values from external APIs
*/
private static sanitizeString;
/**
* Collect all available client metadata
*/
static collect(overrides?: Partial<ClientMetadata>): ClientMetadata;
/**
* Sanitize URL to prevent XSS
*/
private static sanitizeURL;
/**
* Collect metadata including IP (async version)
*/
static collectWithIP(overrides?: Partial<ClientMetadata>): Promise<ClientMetadata>;
/**
* Merge metadata with custom tags
*/
static mergeWithCustomTags(metadata: ClientMetadata, customTags?: Record<string, any>): ClientMetadata;
}