reactive-python / reactpy

It's React, but in Python
https://reactpy.dev
MIT License
7.89k stars 317 forks source link

Rewrite `event_to_object` package #1196

Open Archmonger opened 9 months ago

Archmonger commented 9 months ago

Current Situation

Right now we need to manually declare everything that gets serialized on our front end.

This is primarily to prevent infinite recursive serialization of events.

Related issues

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.

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