I just want to raise my concern about the security issues the current implementation provides. At a glance the update method provides a simple way to execute arbitrary SQL.
No matter how hard you try. If queries are dynamically created, you (or your lib's user) will most certainly miss a spot were an attacker cloud sneak an offensive query.
You fixed the $i, but what about $table? What about $conditions's keys?
See the problem? And we are just talking about a single method ;-)
https://github.com/resonantcore/lib/blob/7b719907e8954241ff9...
Developer abuse ought to be sufficiently mitigated now. Thanks for saying something :)