From 9f2f75dd9281153888776e5d39d4926655c15f2a Mon Sep 17 00:00:00 2001 From: amankumarsingh77 Date: Mon, 27 Jul 2026 23:26:50 +0530 Subject: refactor(domains): drop CDP casts, share the box-model unwrap ref-resolve.ts and snapshot.ts had the same box-model unwrap, both using data.model! to work around an untyped response. Extracted to domains/box.ts; the typed schema makes the assertions unnecessary. Both derived the centre identically (quad corner + half the model width/height), so centreOf keeps that derivation; the shared zero-size rejection moved into boxOf, and snapshot keeps its own off-viewport (x/y < 0) filter. evalInIsolatedTab now goes through evaluateJson with the tab's own sessionId and a caller-supplied guard; both callers evaluate expressions ending in JSON.stringify, so they pass isJsonText rather than a check that checks nothing. Runtime.evaluate/callFunctionOn result casts in form.ts, forms.ts and keyboard.ts are replaced by named guards over the in-page result shapes. Runtime.callFunctionOn's params schema gained arguments/returnByValue/ awaitPromise/userGesture: four domain call sites legitimately pass them and typebox's additionalProperties:true does not widen the static type, so the params type was rejecting valid CDP fields. Params schemas are type-only (only results are compiled), so this is a compile-time widening with no runtime effect. tsc is green again for both tsconfigs. Co-Authored-By: Claude Opus 5 (1M context) --- src/cdp/commands.ts | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/cdp') diff --git a/src/cdp/commands.ts b/src/cdp/commands.ts index d7faa34..95c8be2 100644 --- a/src/cdp/commands.ts +++ b/src/cdp/commands.ts @@ -36,6 +36,15 @@ const RemoteObject = Type.Object( { additionalProperties: true }, ); +const CallArgument = Type.Object( + { + value: Type.Optional(Type.Unknown()), + objectId: Type.Optional(Type.String()), + unserializableValue: Type.Optional(Type.String()), + }, + { additionalProperties: true }, +); + const ExceptionDetails = Type.Object( { text: Type.String(), exception: Type.Optional(RemoteObject) }, { additionalProperties: true }, @@ -142,7 +151,14 @@ export const COMMANDS = { ), "Runtime.callFunctionOn": cmd( Type.Object( - { functionDeclaration: Type.String(), objectId: Type.Optional(Type.String()) }, + { + functionDeclaration: Type.String(), + objectId: Type.Optional(Type.String()), + arguments: Type.Optional(Type.Array(CallArgument)), + returnByValue: Type.Optional(Type.Boolean()), + awaitPromise: Type.Optional(Type.Boolean()), + userGesture: Type.Optional(Type.Boolean()), + }, { additionalProperties: true }, ), Type.Object({ result: RemoteObject, exceptionDetails: Type.Optional(ExceptionDetails) }), -- cgit v1.2.3