From 47f8670c1aa0f317d7f3349a132fbe1ab9d500d1 Mon Sep 17 00:00:00 2001 From: "Tommy D. Rossi" Date: Sat, 22 Nov 2025 11:00:21 +0100 Subject: [PATCH] use cdp types safety --- playwriter/src/extension/protocol.ts | 49 ++++++++++++++++++---------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/playwriter/src/extension/protocol.ts b/playwriter/src/extension/protocol.ts index 858136a..c1c3454 100644 --- a/playwriter/src/extension/protocol.ts +++ b/playwriter/src/extension/protocol.ts @@ -1,20 +1,26 @@ +import { CDPCommand, CDPEvent, ProtocolMapping } from '../cdp-types.js' + export const VERSION = 1 +type ForwardCDPCommand = + { + [K in keyof ProtocolMapping.Commands]: { + id: number + method: 'forwardCDPCommand' + params: { + method: K + sessionId?: string + params?: ProtocolMapping.Commands[K]['paramsType'][0] + } + } + }[keyof ProtocolMapping.Commands] + export type ExtensionCommandMessage = | { id: number method: 'attachToTab' - params?: object - } - | { - id: number - method: 'forwardCDPCommand' - params: { - method: string - sessionId?: string - params?: any - } } + | ForwardCDPCommand export type ExtensionResponseMessage = { id: number @@ -22,13 +28,20 @@ export type ExtensionResponseMessage = { error?: string } -export type ExtensionEventMessage = { - method: 'forwardCDPEvent' - params: { - method: string - sessionId?: string - params?: any - } -} +/** + * This produces a discriminated union for narrowing, similar to ForwardCDPCommand, + * but for forwarded CDP events. Uses CDPEvent to maintain proper type extraction. + */ +export type ExtensionEventMessage = + { + [K in keyof ProtocolMapping.Events]: { + method: 'forwardCDPEvent' + params: { + method: CDPEvent['method'] + sessionId?: string + params?: CDPEvent['params'] + } + } + }[keyof ProtocolMapping.Events] export type ExtensionMessage = ExtensionResponseMessage | ExtensionEventMessage