Description
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, and only attempt to serialize things that are serializable.
Related issues
event["target"]
value for radio input and checkboxes is always'on'
#1188- Inputs within
event["target"]
need to serializename
. #1186 event["target"]["checked"]
does not exist for checkbox inputs #1070- Serialize Data-* Attributes #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