12870d3b1d
Promises do not seem reliable as they are in Chrome 34. Rather than continue to implement hacks that can work around these problems, let's just go back to callbacks. Maybe we don't need to be on the cutting edge _all_ the time. |
||
---|---|---|
.. | ||
file.js | ||
readme.md | ||
settingsProvider.js | ||
syncfile.js | ||
syncFS.js |
Module descriptions - storage/*
file.js
Wraps the chrome.fileSystem APIs in a friendly File constructor. File objects have the following methods or properties, most of which should be self explanatory. Most methods return promises, but also accept node-style callbacks.
open
read
write
stat
retain
restore
getPath
entry
- contains the actual entry object.
All storage in Caret, regardless of its actual backing structure, goes through objects adhering to the File interface, which makes it much easier to open many types of data through the same tab/editor UI. It also makes persistence much more consistent and less verbose throughout Caret.
settingsProvider.js
The actual singleton returned when modules load configs via the settings
plugin. Provides the following API:
get
Retrieves the current settings object by name, with all layers `(project, local, and default) merged over top each other.getAsString
Retrieves the local settings as a string, mostly used when opening settings for editing.getAsFile
load
Requests a fresh copy of the local settings from sync storage, usually called after either writing to settings or when the dependent module does not have a settings cache.setProject
Sets the top-most JSON object to be merged when callingSettings.get()
, used for the project-specific settings overrides.clearProject
Removes the top-most JSON object, so that only local and default settings are merged.pull
Calls load/get for you on the list of arguments, and returns a promise that's fullfilled with a hash of the requested settings.
syncFile.js
A constructor matching the File interface, but backed by chrome.storage.sync. Used to open settings "files."
syncFS.js
An abstraction over top of chrome.storage.sync, capable of storing data larger than the sync storage limit by splitting it into multiple entries behind the scenes. Returns promises for all methods.