restraint propagation javascript library