diff options
Diffstat (limited to 'src/devtools-protocol.lisp')
-rw-r--r-- | src/devtools-protocol.lisp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/devtools-protocol.lisp b/src/devtools-protocol.lisp new file mode 100644 index 0000000..2d67033 --- /dev/null +++ b/src/devtools-protocol.lisp @@ -0,0 +1,45 @@ +;;;; DevTools Protocol messages. + +(in-package :extreload) + +(defun target-get-targets-msg (call-id) + "DevTools Protocol `Target.getTargets` message." + (jsown:to-json + `(:obj ("id" . ,call-id) + ("method" . "Target.getTargets")))) + +(defun target-attach-to-target-msg (call-id target-id) + "DevTools Protocol `Target.attachToTarget` message." + (jsown:to-json + `(:obj ("id" . ,call-id) + ("method" . "Target.attachToTarget") + ("params" . (:obj ("targetId" . ,target-id) + ("flatten" . t)))))) + +(defun target-attached-to-target-msg-p (message) + "Returns true if `message` is `Target.attachedToTarget`." + (equal + (json-obj-get message "method") + "Target.attachedToTarget")) + +(defun runtime-evaluate-msg (call-id session-id expression) + "DevTools Protocol `Runtime.evaluate` message." + (jsown:to-json + `(:obj ("id" . ,call-id) + ("sessionId" . ,session-id) + ("method" . "Runtime.evaluate") + ("params" . (:obj ("expression" . ,expression)))))) + +(defun runtime-evaluate-msg-p (message) + "Returns true if `message` is a response to `Runtime.evaluate`." + (jsown:keyp (json-obj-get message "result") "sessionId")) + +(defun runtime-evaluate-exception-p (message) + "Returns true if `message` describes a runtime exception" + (jsown:keyp (json-obj-get message "result") "exceptionDetails")) + +(defun parse-get-targets-response (response) + "Parses a list of target info objects from the response to `Target.getTargets`." + (let* ((result (json-obj-get response "result")) + (targetInfos (json-obj-get result "targetInfos"))) + targetInfos)) |