A JavaScript persistence abstraction layer