aboutsummaryrefslogtreecommitdiff
path: root/src/cdp
diff options
context:
space:
mode:
authoramankumarsingh77 <amankumarsingh7702@gmail.com>2026-07-27 23:26:50 +0530
committerAman Kumar <145339995+amankumarsingh77@users.noreply.github.com>2026-08-02 19:12:46 +0530
commit9f2f75dd9281153888776e5d39d4926655c15f2a (patch)
tree89c23c8ad333b5096d39b661b142eaad544cf004 /src/cdp
parent931576443dcb990761cb7e68e354465145f9292d (diff)
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) <noreply@anthropic.com>
Diffstat (limited to 'src/cdp')
-rw-r--r--src/cdp/commands.ts18
1 files changed, 17 insertions, 1 deletions
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) }),