Skip to content

Commit

Permalink
fix: form evaluate errors
Browse files Browse the repository at this point in the history
  • Loading branch information
armed committed Jan 6, 2023
1 parent 0393cb1 commit 623f563
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 27 deletions.
43 changes: 23 additions & 20 deletions src/k16/gx/beta/core.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -322,26 +322,29 @@
;; Binding vars is not passed to nested async code
;; Workaround for CLJS: propagating error context manually
(let [err-ctx gx.err/*err-ctx*]
(p/let [props-result
(if (fn? resolved-props-fn)
(run-props-fn resolved-props-fn dep-nodes-vals)
(impl/postwalk-evaluate dep-nodes-vals resolved-props))
validate-error (with-err-ctx err-ctx
(validate-props props-schema props-result))
[error result] (when-not validate-error
(run-processor
processor
{:props props-result
:value (:gx/value node)
:state (:gx/state node)
:instance (:gx/instance node)}
#?(:cljs err-ctx)))
new-value (or (:gx/value result) result)]
(if-let [e (or validate-error error)]
(assoc node :gx/failure e)
(merge node {:gx/value new-value
:gx/instance (:gx/instance result)
:gx/state to-state}))))
(-> (p/let [props-result
(with-err-ctx err-ctx
(if (fn? resolved-props-fn)
(run-props-fn resolved-props-fn dep-nodes-vals)
(impl/postwalk-evaluate dep-nodes-vals resolved-props)))
validate-error (with-err-ctx err-ctx
(validate-props props-schema props-result))
[error result] (when-not validate-error
(run-processor
processor
{:props props-result
:value (:gx/value node)
:state (:gx/state node)
:instance (:gx/instance node)}
#?(:cljs err-ctx)))
new-value (or (:gx/value result) result)]
(if-let [e (or validate-error error)]
(assoc node :gx/failure e)
(merge node {:gx/value new-value
:gx/instance (:gx/instance result)
:gx/state to-state})))
(p/catch (fn [e]
(assoc node :gx/failure (ex-data e))))))

:else (assoc node :gx/state to-state)))))

Expand Down
6 changes: 4 additions & 2 deletions src/k16/gx/beta/errors.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,11 @@

(defn throw-gx-err
([message]
(throw-gx-err message nil))
(throw-gx-err message nil nil))
([message internal-data]
(throw (ex-info message (gx-err-data message internal-data)))))
(throw-gx-err message internal-data nil))
([message internal-data cause]
(throw (ex-info message (gx-err-data message internal-data cause)))))

(defn ex->gx-err-data
[ex]
Expand Down
6 changes: 5 additions & 1 deletion src/k16/gx/beta/impl.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,11 @@
(parse-local props x)

(and (seq? x) (ifn? (first x)))
(apply (first x) (rest x))
(try
(apply (first x) (rest x))
(catch #?(:clj Throwable :cljs :default) e
(gx.err/throw-gx-err
(str "Form evaluate error: " form) {:props props} e)))

:else x))
form))
Expand Down
10 changes: 6 additions & 4 deletions src/k16/gx/beta/system.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,13 @@

(defn throw-root-exception!
[failures]
(let [{:keys [message causes]} (last failures)
(let [{:keys [message causes node-key]} (last failures)
{:keys [exception]} (first causes)]
(cond
exception (throw exception)
:else (throw (ex-info message {:failures failures})))))
(let [msg (str node-key
"\n\t" message
(when exception
(str "\n\t" (ex-message exception))))]
(throw (ex-info msg {:failures failures})))))

(defn states
"Gets list of states of the graph as map.
Expand Down

1 comment on commit 623f563

@vercel
Copy link

@vercel vercel bot commented on 623f563 Jan 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

gx – ./

gx-kepler16.vercel.app
gx-git-master-kepler16.vercel.app
gx.kepler16.com

Please sign in to comment.