An offline-first resource wrapper for Angular