browser-debugger-cli
Version:
DevTools telemetry in your terminal. For humans and agents. Direct WebSocket to Chrome's debugging port.
69 lines • 2.44 kB
TypeScript
/**
* Type guards for runtime type validation.
*
* Provides type-safe validation of IPC response data, replacing unsafe
* `as unknown as` type assertions with proper runtime checks.
*
* WHY: Type assertions bypass TypeScript's type system and can lead to
* runtime errors. Type guards provide actual runtime validation while
* maintaining type safety.
*/
import type { NetworkRequest, ConsoleMessage } from '../types.js';
/**
* Type guard to check if a value is a valid NetworkRequest.
*
* Validates the presence of required NetworkRequest properties.
*
* @param value - Unknown value to validate
* @returns True if value is a valid NetworkRequest
*
* @example
* ```typescript
* if (isNetworkRequest(item)) {
* console.log(item.url); // TypeScript knows item is NetworkRequest
* }
* ```
*/
export declare function isNetworkRequest(value: unknown): value is NetworkRequest;
/**
* Type guard to check if a value is a valid ConsoleMessage.
*
* Validates the presence of required ConsoleMessage properties.
*
* @param value - Unknown value to validate
* @returns True if value is a valid ConsoleMessage
*
* @example
* ```typescript
* if (isConsoleMessage(item)) {
* console.log(item.text); // TypeScript knows item is ConsoleMessage
* }
* ```
*/
export declare function isConsoleMessage(value: unknown): value is ConsoleMessage;
/**
* Validate and return a details item with proper type safety.
*
* Replaces unsafe `as unknown as` assertions with runtime validation.
* Throws CommandError if validation fails.
*
* Uses function overloads to return the correct type based on the `type` parameter,
* enabling proper type narrowing in discriminated unions.
*
* @param item - Unknown item from IPC response
* @param type - Expected type ('network' or 'console')
* @returns Validated NetworkRequest or ConsoleMessage based on type parameter
* @throws CommandError if item fails validation
*
* @example
* ```typescript
* const networkItem = validateDetailsItem(response.data.item, 'network');
* // networkItem is typed as NetworkRequest
*
* const consoleItem = validateDetailsItem(response.data.item, 'console');
* // consoleItem is typed as ConsoleMessage
* ```
*/
export declare function validateDetailsItem(item: unknown, type: 'network'): NetworkRequest;
export declare function validateDetailsItem(item: unknown, type: 'console'): ConsoleMessage;
//# sourceMappingURL=typeGuards.d.ts.map