CacheControl/json-rules-engine

Cannot convert object to primitive value

robross0606 opened this issue · 1 comments

In almanac you have debug lines like this:

(0, _debug2.default)('almanac::constructor initialized runtime fact:' + fact.id + ' with ' + fact.value + '<' + _typeof(fact.value) + '>');

This line does string concatenation on fact.value which seems to also consider passed in params as facts. This basically requires that all passed in params have a toString() function such as what is available in a prototype. However, not all JavaScript variables are guaranteed to have a prototype or a toString() function (e.g. new Object(null)).

For starters, since this appears to be a debug log line, is there a way to disable this entirely? If not, this should be changed to use something like fast-safe-stringify or similar to convert param values to a String form.

As it happens, Apollo Client response data returns structs with no prototypes so this debug line appears to be preventing us from directly using that response data as a param in rules.