@hal313/settings-manager-chrome-extension-adapter
Version:
A backing repository for settings-manager, falling on chrome.storage.local (or sync) as an implementation.
106 lines (65 loc) • 4.74 kB
Markdown
# [settings-manager-chrome-extension-adapter](https://github.com/hal313/settings-manager-chrome-extension-adapter)
> A wrapper to adapt Chrome storage storage API (for extensions) to [settings-manager](https://github.com/hal313/settings-manager).
[](https://travis-ci.org/hal313/settings-manager-chrome-extension-adapter)
[](https://www.npmjs.com/package/settings-manager-chrome-extension-adapter)
[](https://david-dm.org/hal313/settings-manager-chrome-extension-adapter)
## Introduction
A wrapper to adapt the Chrome storage API (for extensions) to the [settings-manager](https://github.com/hal313/settings-manager) API.
See an [example](https://hal313.github.io/settings-manager-example/) of the SettingsManager API with promises.
## Using
### API
> new SettingsManagerChromeExtensionAdapter([useSync][, path])
Creates a new ChromeExtensionSettingsManager instance. If `useSync` is falsey, then local storage will be used; otherwise, sync storage is used. The `path` string
specifies the key within storage.
> load()
Loads the settings. Returns a promise which resolves with the settings or rejects on failure.
> save(settings)
Saves the settings. Requires the settings to save and returns a promise which resolves on success or rejects on failure.
> clear()
Clears the settings. Returns a promise which resolves on success or rejects on failure.
### Importing
Depending on your environment, you may incorporate the SettingsManager:
| Style | File | Import Statement | Instantiate |
| ----- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| ES5 | `SettingsManagerChromeExtensionAdapter.js` | `<script src="SettingsManagerChromeExtensionAdapter.js"></script>` | `var settingsManagerChromeExtensionAdapter = new SettingsManagerChromeExtensionAdapter.SettingsManagerChromeExtensionAdapter();` |
| CJS | `SettingsManagerChromeExtensionAdapter.js` | `<script src="SettingsManagerChromeExtensionAdapter.js"></script>` | `var settingsManagerChromeExtensionAdapter = new SettingsManagerChromeExtensionAdapter.SettingsManager(ChromeExtensionAdapter);` |
| AMD | `SettingsManagerChromeExtensionAdapter.js` | `<script src="SettingsManagerChromeExtensionAdapter.js"></script>` | `var settingsManagerChromeExtensionAdapter = new SettingsManagerChromeExtensionAdapter.SettingsManagerChromeExtensionAdapter();` |
| ES6 | `SettingsManagerChromeExtensionAdapter.es6.js` | `import { SettingsManagerChromeExtensionAdapter } from 'SettingsManagerChromeExtensionAdapter.js';` | `let settingsManagerChromeExtensionAdapter = new SettingsManagerChromeExtensionAdapter();` |
### Examples
The [GitHub Pages](https://hal313.github.io/settings-manager-chrome-extension-adapter/) documentation illustrates several examples.
## Developing
### Setup
```bash
npm install
```
### Building
A build will check the source code and place code in the `dist` directory.
```bash
npm run build
```
To run a build on source code changes:
```bash
npm run watch:build
```
To build distributable artifacts (which includes a minimized version):
```bash
npm run dist
```
### Running Tests
To run tests against the source code and dist folder (including coverage):
```bash
npm test
```
To run tests against the source code and dist folder (including coverage), with reload:
```bash
npm run test:watch
```
### Build a Release
This is a basic script which can be used to build and deploy (to NPM) the project.
```bash
npm run release
```
Releases to the NPM registry are handled by Travis CI. Pushing `master` to GitHub will trigger a build and deploy to the NPM registry. The release script will NOT push to the repository. When pushing, tags should be included:
```bash
git push --all && git push --tags
```