reactpy icon indicating copy to clipboard operation
reactpy copied to clipboard

Rewrite `event_to_object` package

Open Archmonger opened this issue 1 year ago • 0 comments

Current Situation

Right now, the event_to_object JS package within this repo manually declares every attribute that is serializable.

This is primarily to prevent infinite recursive serialization of events. As a result, it currently only attempts to serialize pre-defined "safe" attributes.

Related issues

  • #1188
  • #1186
  • #1070
  • #634

Proposed Actions

Re-write event_to_object to either have a max-depth of something reasonable like 10, or perform serialization in a way that auto-detects recursive behavior, and skips non-serializable objects.

In terms of auto detection, the core idea would be to keep an temporary list of all events that have been serialized, and make sure to not serialize them twice. Here's some quick and dirty psuedocode...

function convert(event){
   let current_objects = []
   for object in event:
      if !(object in current_objects){
         current_objects.add(object)
      }
   ...
}

For things that aren't serializable, we can skip them.

Ref: https://stackoverflow.com/questions/11547672/how-to-stringify-event-object

Archmonger avatar Feb 14 '24 06:02 Archmonger