CacheControl / json-rules-engine

A rules engine expressed in JSON
ISC License
2.54k stars 455 forks source link

Cannot convert object to primitive value #309

Open robross0606 opened 1 year ago

robross0606 commented 1 year ago

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.

robross0606 commented 1 year ago

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.