diff options
| author | amankumarsingh77 <amankumarsingh7702@gmail.com> | 2026-07-27 23:26:50 +0530 |
|---|---|---|
| committer | Aman Kumar <145339995+amankumarsingh77@users.noreply.github.com> | 2026-08-02 19:12:46 +0530 |
| commit | 9f2f75dd9281153888776e5d39d4926655c15f2a (patch) | |
| tree | 89c23c8ad333b5096d39b661b142eaad544cf004 /src/cdp | |
| parent | 931576443dcb990761cb7e68e354465145f9292d (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.ts | 18 |
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) }), |
