Code overview

The code of remoteStorage.js consists of files in the src/ folder of this repo. These are built into a single file in the release/ folder using webpack. Unit tests live in the test/ folder and are based on Jaribu.

The structure of the code is based around feature loading. Most files in src/ correspond to a feature, e.g. discover.ts to RemoteStorage.Discover or caching.ts to RemoteStorage.Caching.

The feature loading happens synchronously during the page load in src/remotestorage.ts (just including this script in your app will lead to executing the code that loads the features).

Most features load under their own name, but for remoteStorage.local a choice is made between RemoteStorage.IndexedDB, RemoteStorage.LocalStorage and RemoteStorage.InMemoryCaching, depending on what the environment (browser, node.js, Electron, WebView, or other) supports.

For remoteStorage.local we then also have a special mixin called src/cachinglayer.ts, which mixes in some common functions into the object.

The remoteStorage.remote feature is not loaded immediately, but only when RemoteStorage.Discover calls remoteStorage.setBackend(), at which point a choice is made between RemoteStorage.WireClient, RemoteStorage.GoogleDrive, RemoteStorage.Dropbox (or any other future backend) to become the remote.