Function: ghub--graphql-walk-response
ghub--graphql-walk-response is a byte-compiled function defined in
ghub-graphql.el.
Signature
(ghub--graphql-walk-response REQ DATA)
Source Code
;; Defined in ~/.emacs.d/elpa/ghub-20260401.1239/ghub-graphql.el
(defun ghub--graphql-walk-response (req data)
(let* ((loc (ghub--req-value req))
(loc (if (not loc)
(ghub--alist-zip data)
(setq data (ghub--graphql-narrow-data
data (ghub--graphql-lineage loc)))
(setf (alist-get 'edges data)
(append (alist-get 'edges (treepy-node loc))
(or (alist-get 'edges data)
(error "BUG: Expected new nodes"))))
(treepy-replace loc data))))
(catch :done
(while t
(when (eq (car-safe (treepy-node loc)) 'edges)
(setq loc (treepy-up loc))
(pcase-let ((`(,key . ,val) (treepy-node loc)))
(let-alist val
(let* ((cursor (and .pageInfo.hasNextPage
.pageInfo.endCursor))
(until (cdr (assq (intern (format "%s-until" key))
(ghub--graphql-req-until req))))
(nodes (mapcar #'cdar .edges))
(nodes (if until
(seq-take-while
(lambda (node)
(or (string> (cdr (assq 'updatedAt node))
until)
(setq cursor nil)))
nodes)
nodes)))
(cond (cursor
(setf (ghub--req-value req) loc)
(ghub--graphql-retrieve req
(ghub--graphql-lineage loc)
cursor)
(throw :done nil))
((setq loc (treepy-replace loc (cons key nodes)))))))))
(if (treepy-end-p loc)
(progn (ghub--graphql-handle-success req (treepy-root loc))
(throw :done nil))
(setq loc (treepy-next loc)))))))