UNPKG

@ufdevsllc/authme2.0

Version:

SDK for license management and remote monitoring with automatic system tracking, license validation, and remote control capabilities

1,083 lines (789 loc) 22.4 kB
# License Monitoring SDK - Complete API Reference ## Overview This document provides a comprehensive reference for all classes, methods, and interfaces in the License Monitoring SDK. It covers both public APIs for client integration and internal architecture details. ## Table of Contents 1. [Main SDK Class](#main-sdk-class) 2. [Database Manager](#database-manager) 3. [License Validator](#license-validator) 4. [System Tracker](#system-tracker) 5. [Remote Control Handler](#remote-control-handler) 6. [Data Logger](#data-logger) 7. [Error Handler](#error-handler) 8. [Data Models](#data-models) 9. [Configuration Options](#configuration-options) 10. [Error Types](#error-types) --- ## Main SDK Class ### `LicenseMonitoringSDK` The main entry point for the SDK. #### Constructor ```javascript new LicenseMonitoringSDK() ``` Creates a new SDK instance. No parameters required. #### Methods ##### `init(licenseKey, options)` Initializes the SDK with a license key and optional configuration. **Parameters:** - `licenseKey` (string, required): The license key provided by your vendor - `options` (object, optional): Configuration options **Options:** ```javascript { validateLicense: boolean, // Default: true startSystemTracking: boolean, // Default: true startRemoteControl: boolean, // Default: true exitOnLicenseFailure: boolean, // Default: true logToConsole: boolean, // Default: true retryAttempts: number, // Default: 3 retryDelay: number, // Default: 5000 (ms) connectionOptions: { // MongoDB connection options maxPoolSize: number, // Default: 10 minPoolSize: number, // Default: 2 maxIdleTimeMS: number, // Default: 30000 serverSelectionTimeoutMS: number // Default: 5000 } } ``` **Returns:** `Promise<void>` **Throws:** - `LicenseValidationError`: If license validation fails - `DatabaseConnectionError`: If database connection fails - `InitializationError`: If SDK initialization fails **Example:** ```javascript const sdk = new LicenseMonitoringSDK(); // Basic initialization await sdk.init('YOUR-LICENSE-KEY'); // Advanced initialization await sdk.init('YOUR-LICENSE-KEY', { validateLicense: true, startSystemTracking: true, exitOnLicenseFailure: false, retryAttempts: 5, connectionOptions: { maxPoolSize: 20 } }); ``` ##### `logData(collection, data, operation)` Logs application data to the monitoring database. **Parameters:** - `collection` (string, required): Collection name for the data - `data` (object, required): Data to log - `operation` (string, required): Operation type (e.g., 'create', 'update', 'delete') **Returns:** `Promise<void>` **Throws:** - `ValidationError`: If parameters are invalid - `DatabaseError`: If database operation fails **Example:** ```javascript await sdk.logData('orders', { orderId: 'ORD-001', customerId: 'CUST-123', total: 99.99, status: 'completed' }, 'create'); ``` ##### `logUserActivity(userId, action, details)` Logs user activity and behavior. **Parameters:** - `userId` (string, required): User identifier - `action` (string, required): Action performed - `details` (object, optional): Additional details about the action **Returns:** `Promise<void>` **Example:** ```javascript await sdk.logUserActivity('user123', 'login', { ip: '192.168.1.100', userAgent: 'Chrome/120.0', timestamp: new Date() }); ``` ##### `logModelOperation(modelName, operation, data)` Logs database model operations. **Parameters:** - `modelName` (string, required): Name of the model/entity - `operation` (string, required): Operation performed ('create', 'update', 'delete', etc.) - `data` (object, required): Operation data **Returns:** `Promise<void>` **Example:** ```javascript await sdk.logModelOperation('User', 'update', { userId: 'user123', changes: { email: 'new@email.com' } }); ``` ##### `bulkLog(operations)` Performs bulk logging operations for better performance. **Parameters:** - `operations` (array, required): Array of operation objects **Operation Object:** ```javascript { collection: string, data: object, operation: string } ``` **Returns:** `Promise<void>` **Example:** ```javascript await sdk.bulkLog([ { collection: 'page_views', data: { page: '/home', userId: 'user1' }, operation: 'track' }, { collection: 'clicks', data: { element: 'button', userId: 'user1' }, operation: 'track' } ]); ``` ##### `isLicenseValid()` Checks if the current license is valid. **Returns:** `Promise<boolean>` **Example:** ```javascript const isValid = await sdk.isLicenseValid(); if (!isValid) { console.log('License is invalid or expired'); } ``` ##### `getLicenseStatus()` Gets detailed license status information. **Returns:** `Promise<LicenseStatus>` **LicenseStatus Object:** ```javascript { licenseKey: string, isActive: boolean, expiresAt: Date, distributionLimit: number, currentDistributions: number, validationCount: number, lastValidated: Date } ``` **Example:** ```javascript const status = await sdk.getLicenseStatus(); console.log('License expires:', status.expiresAt); console.log('Usage:', `${status.currentDistributions}/${status.distributionLimit}`); ``` ##### `isApplicationBlocked()` Checks if the application is currently blocked by remote control. **Returns:** `boolean` **Example:** ```javascript if (sdk.isApplicationBlocked()) { console.log('Application is blocked'); } ``` ##### `getBlockReason()` Gets the reason why the application is blocked. **Returns:** `string | null` **Example:** ```javascript if (sdk.isApplicationBlocked()) { console.log('Block reason:', sdk.getBlockReason()); } ``` ##### `healthCheck()` Performs a comprehensive health check on all SDK components. **Returns:** `Promise<HealthStatus>` **HealthStatus Object:** ```javascript { overall: boolean, components: { database: { healthy: boolean, error?: string, latency?: number }, license: { healthy: boolean, error?: string, status?: string }, systemTracker: { healthy: boolean, error?: string, lastUpdate?: Date }, remoteControl: { healthy: boolean, error?: string, lastCheck?: Date } }, timestamp: Date } ``` **Example:** ```javascript const health = await sdk.healthCheck(); console.log('Overall health:', health.overall); if (!health.components.database.healthy) { console.error('Database issue:', health.components.database.error); } ``` ##### `getStatus()` Gets current SDK status and configuration. **Returns:** `SDKStatus` **SDKStatus Object:** ```javascript { initialized: boolean, licenseKey: string, version: string, uptime: number, components: { databaseManager: boolean, licenseValidator: boolean, systemTracker: boolean, remoteControlHandler: boolean, dataLogger: boolean } } ``` ##### `shutdown()` Properly shuts down the SDK and cleans up resources. **Returns:** `Promise<void>` **Example:** ```javascript // Graceful shutdown process.on('SIGINT', async () => { console.log('Shutting down...'); await sdk.shutdown(); process.exit(0); }); ``` --- ## Database Manager ### `DatabaseManager` Handles MongoDB connections and database operations. #### Methods ##### `initMonitoringConnection()` Initializes connection to the monitoring database. **Returns:** `Promise<void>` ##### `getMonitoringDB()` Gets the monitoring database instance. **Returns:** `Db` (MongoDB database instance) ##### `saveUserData(collection, data)` Saves user data to the monitoring database. **Parameters:** - `collection` (string): Collection name - `data` (object): Data to save **Returns:** `Promise<InsertOneResult>` ##### `closeConnection()` Closes the database connection. **Returns:** `Promise<void>` --- ## License Validator ### `LicenseValidator` Handles license validation and tracking. #### Methods ##### `validateLicense(licenseKey)` Validates a license key against the database. **Parameters:** - `licenseKey` (string): License key to validate **Returns:** `Promise<ValidationResult>` **ValidationResult Object:** ```javascript { valid: boolean, license?: LicenseDocument, error?: string, reason?: string } ``` ##### `trackUsage(licenseKey, systemInfo)` Tracks license usage and system information. **Parameters:** - `licenseKey` (string): License key - `systemInfo` (object): System information **Returns:** `Promise<void>` ##### `checkDistributionLimit(licenseKey)` Checks if the license has exceeded its distribution limit. **Parameters:** - `licenseKey` (string): License key **Returns:** `Promise<boolean>` ##### `isLicenseActive(licenseKey)` Checks if a license is currently active. **Parameters:** - `licenseKey` (string): License key **Returns:** `Promise<boolean>` --- ## System Tracker ### `SystemTracker` Collects and tracks system information. #### Methods ##### `collectSystemInfo()` Collects current system information. **Returns:** `SystemInfo` **SystemInfo Object:** ```javascript { os: string, platform: string, arch: string, memory: number, cpu: { model: string, cores: number, speed: number }, nodeVersion: string } ``` ##### `collectDeploymentInfo()` Collects deployment-specific information. **Returns:** `Promise<DeploymentInfo>` **DeploymentInfo Object:** ```javascript { ipAddress: string, serverLocation: string, environment: string, timestamp: Date, nodeVersion: string } ``` ##### `collectCORSInfo()` Collects CORS configuration information. **Returns:** `CORSInfo` **CORSInfo Object:** ```javascript { allowedOrigins: string[], methods: string[], headers: string[] } ``` ##### `saveToMonitoring(data)` Saves collected data to the monitoring database. **Parameters:** - `data` (object): Data to save **Returns:** `Promise<void>` ##### `startPeriodicTracking()` Starts periodic system tracking. **Returns:** `void` --- ## Remote Control Handler ### `RemoteControlHandler` Handles remote control commands from the vendor backend. #### Methods ##### `checkForCommands()` Checks the database for pending remote commands. **Returns:** `Promise<RemoteCommand[]>` ##### `executeCommand(command)` Executes a remote command. **Parameters:** - `command` (RemoteCommand): Command to execute **Returns:** `Promise<CommandResult>` **CommandResult Object:** ```javascript { success: boolean, result?: any, error?: string, executedAt: Date } ``` ##### `blockApplication(reason)` Blocks the application with a specified reason. **Parameters:** - `reason` (string): Reason for blocking **Returns:** `void` ##### `updateLicenseStatus(status)` Updates the license status based on remote commands. **Parameters:** - `status` (string): New license status **Returns:** `Promise<void>` ##### `startCommandPolling()` Starts polling for remote commands. **Returns:** `void` --- ## Data Logger ### `DataLogger` Handles data logging operations. #### Methods ##### `logData(collectionName, data, operation)` Logs data to a specific collection. **Parameters:** - `collectionName` (string): Collection name - `data` (object): Data to log - `operation` (string): Operation type **Returns:** `Promise<void>` ##### `logUserActivity(userId, action, details)` Logs user activity. **Parameters:** - `userId` (string): User identifier - `action` (string): Action performed - `details` (object): Additional details **Returns:** `Promise<void>` ##### `logModelOperation(modelName, operation, data)` Logs model operations. **Parameters:** - `modelName` (string): Model name - `operation` (string): Operation type - `data` (object): Operation data **Returns:** `Promise<void>` ##### `bulkLog(operations)` Performs bulk logging operations. **Parameters:** - `operations` (array): Array of operations **Returns:** `Promise<void>` --- ## Error Handler ### `ErrorHandler` Handles errors and logging throughout the SDK. #### Methods ##### `handleError(error, context)` Handles and logs errors. **Parameters:** - `error` (Error): Error object - `context` (string): Error context **Returns:** `void` ##### `logError(error, metadata)` Logs errors to the monitoring database. **Parameters:** - `error` (Error): Error object - `metadata` (object): Additional metadata **Returns:** `Promise<void>` --- ## Data Models ### License Document ```javascript { _id: ObjectId, licenseKey: string, distributionLimit: number, currentDistributions: number, isActive: boolean, createdAt: Date, expiresAt: Date, vendorId: string, productId: string, clientInfo: { companyName: string, contactEmail: string, purchaseDate: Date, licenseType: string }, features: { maxUsers: number, apiAccess: boolean, premiumSupport: boolean, customBranding: boolean }, validationCount: number, lastValidated: Date, systems: [{ systemId: string, firstSeen: Date, lastSeen: Date, isActive: boolean }] } ``` ### System Tracking Document ```javascript { _id: ObjectId, licenseKey: string, systemId: string, systemInfo: { os: string, platform: string, arch: string, memory: number, cpu: { model: string, cores: number, speed: number } }, deploymentInfo: { ipAddress: string, serverLocation: string, environment: string, nodeVersion: string, timestamp: Date }, corsSettings: { allowedOrigins: string[], methods: string[], headers: string[] }, environmentVariables: object, lastSeen: Date, isActive: boolean } ``` ### Usage Log Document ```javascript { _id: ObjectId, licenseKey: string, collection: string, operation: string, data: object, timestamp: Date, systemId: string, metadata: { userAgent: string, ipAddress: string, sessionId: string } } ``` ### Remote Command Document ```javascript { _id: ObjectId, licenseKey: string, command: string, parameters: object, status: string, // 'pending', 'executing', 'completed', 'failed' createdAt: Date, executedAt: Date, result: object, priority: string, // 'low', 'medium', 'high', 'critical' retryCount: number, maxRetries: number } ``` --- ## Configuration Options ### SDK Initialization Options ```javascript { // License validation settings validateLicense: boolean, // Enable license validation (default: true) exitOnLicenseFailure: boolean, // Exit process on license failure (default: true) // Component settings startSystemTracking: boolean, // Enable system tracking (default: true) startRemoteControl: boolean, // Enable remote control (default: true) // Logging settings logToConsole: boolean, // Enable console logging (default: true) // Connection settings retryAttempts: number, // Connection retry attempts (default: 3) retryDelay: number, // Retry delay in ms (default: 5000) // MongoDB connection options connectionOptions: { maxPoolSize: number, // Maximum connection pool size (default: 10) minPoolSize: number, // Minimum connection pool size (default: 2) maxIdleTimeMS: number, // Max idle time for connections (default: 30000) serverSelectionTimeoutMS: number, // Server selection timeout (default: 5000) connectTimeoutMS: number, // Connection timeout (default: 10000) socketTimeoutMS: number, // Socket timeout (default: 0) heartbeatFrequencyMS: number, // Heartbeat frequency (default: 10000) retryWrites: boolean, // Enable retry writes (default: true) w: string | number, // Write concern (default: 'majority') readPreference: string // Read preference (default: 'primary') } } ``` ### Environment Variables ```bash # Required LICENSE_KEY=your-license-key-here # Optional NODE_ENV=production SDK_LOG_LEVEL=info SDK_RETRY_ATTEMPTS=3 SDK_RETRY_DELAY=5000 ``` --- ## Error Types ### `LicenseValidationError` Thrown when license validation fails. **Properties:** - `message`: Error message - `licenseKey`: The license key that failed validation - `reason`: Specific reason for failure **Example:** ```javascript try { await sdk.init('invalid-license'); } catch (error) { if (error instanceof LicenseValidationError) { console.error('License validation failed:', error.reason); } } ``` ### `DatabaseConnectionError` Thrown when database connection fails. **Properties:** - `message`: Error message - `connectionString`: Database connection string (sanitized) - `retryAttempts`: Number of retry attempts made ### `InitializationError` Thrown when SDK initialization fails. **Properties:** - `message`: Error message - `component`: Component that failed to initialize - `originalError`: Original error that caused the failure ### `ValidationError` Thrown when input validation fails. **Properties:** - `message`: Error message - `field`: Field that failed validation - `value`: Value that failed validation ### `DatabaseError` Thrown when database operations fail. **Properties:** - `message`: Error message - `operation`: Database operation that failed - `collection`: Collection involved in the operation --- ## Event System The SDK emits events for monitoring and debugging purposes. ### Events #### `initialized` Emitted when the SDK is successfully initialized. ```javascript sdk.on('initialized', (data) => { console.log('SDK initialized:', data); }); ``` #### `license-validated` Emitted when license validation completes. ```javascript sdk.on('license-validated', (result) => { console.log('License validation result:', result); }); ``` #### `data-logged` Emitted when data is successfully logged. ```javascript sdk.on('data-logged', (logInfo) => { console.log('Data logged:', logInfo); }); ``` #### `error` Emitted when an error occurs. ```javascript sdk.on('error', (error) => { console.error('SDK error:', error); }); ``` #### `command-received` Emitted when a remote command is received. ```javascript sdk.on('command-received', (command) => { console.log('Remote command received:', command); }); ``` #### `application-blocked` Emitted when the application is blocked. ```javascript sdk.on('application-blocked', (reason) => { console.log('Application blocked:', reason); }); ``` --- ## Utilities ### `generateSystemId()` Generates a unique system identifier. **Returns:** `string` ### `sanitizeData(data, options)` Sanitizes data before logging. **Parameters:** - `data` (object): Data to sanitize - `options` (object): Sanitization options **Returns:** `object` ### `validateLicenseKey(licenseKey)` Validates license key format. **Parameters:** - `licenseKey` (string): License key to validate **Returns:** `boolean` --- ## TypeScript Definitions ```typescript declare module '@ufdevsllc/authme2.0' { interface SDKOptions { validateLicense?: boolean; startSystemTracking?: boolean; startRemoteControl?: boolean; exitOnLicenseFailure?: boolean; logToConsole?: boolean; retryAttempts?: number; retryDelay?: number; connectionOptions?: { maxPoolSize?: number; minPoolSize?: number; maxIdleTimeMS?: number; serverSelectionTimeoutMS?: number; }; } interface LicenseStatus { licenseKey: string; isActive: boolean; expiresAt: Date; distributionLimit: number; currentDistributions: number; validationCount: number; lastValidated: Date; } interface HealthStatus { overall: boolean; components: { database: ComponentHealth; license: ComponentHealth; systemTracker: ComponentHealth; remoteControl: ComponentHealth; }; timestamp: Date; } interface ComponentHealth { healthy: boolean; error?: string; [key: string]: any; } class LicenseMonitoringSDK { constructor(); init(licenseKey: string, options?: SDKOptions): Promise<void>; logData(collection: string, data: object, operation: string): Promise<void>; logUserActivity(userId: string, action: string, details?: object): Promise<void>; logModelOperation(modelName: string, operation: string, data: object): Promise<void>; bulkLog(operations: Array<{collection: string, data: object, operation: string}>): Promise<void>; isLicenseValid(): Promise<boolean>; getLicenseStatus(): Promise<LicenseStatus>; isApplicationBlocked(): boolean; getBlockReason(): string | null; healthCheck(): Promise<HealthStatus>; getStatus(): object; shutdown(): Promise<void>; } export = LicenseMonitoringSDK; } ``` --- ## Version History ### v1.0.0 - Initial release - Basic license validation - Data logging capabilities - System tracking - Remote control functionality ### v1.1.0 (Current) - Enhanced error handling - Bulk logging operations - Performance improvements - Extended health monitoring - TypeScript definitions --- ## Support For API-specific questions and technical support: - **Documentation**: https://docs.ufdevsllc.com/license-monitoring-sdk - **API Reference**: https://api.ufdevsllc.com/docs - **GitHub Issues**: https://github.com/ufdevsllc/authme2.0/issues - **Email**: api-support@ufdevsllc.com --- *This API reference is automatically generated from the source code and is kept up-to-date with each release.*