API Docs for: 0.4.0.9e0c4433
Show:

File: addon/adapters/abstract.js

import BuildNamespaceMixin from '../mixins/build-namespace';
import Ember from 'ember';

/**
 * @module ember-cli-storagekit
 * @submodule adapters
 */

/**
 * @class BaseAdapter
 * @extends Ember.Object
 * @uses EmberCliStoragekit/Mixins/BuildNamespace
 * @public
 */

export default Ember.Object.extend(BuildNamespaceMixin, {

  /**
   * @property {*} storage The storage service to delegate to
   * @private
   */
  storage: null,

  /**
   * The serializer to use when storing values into storage
   * @property {*} serializer
   * @private
   */
  serializer: null,

  /**
   * Sets a value into storage under a provided key
   * @method setItem
   * @param {string} key The key name to store the given value under
   * @param {*} value A value to store under a specified key
   * @public
   */
  setItem(key, value) {
    this.get('storage').setItem(this.buildNamespace(key), this.get('serializer').serialize(value));
  },

  /**
   * Gets a value from storage based on a given key
   * @method getItem
   * @param {string} key The key to use when retrieving a value from storage
   * @return The value retrieved from storage based on the given key
   * @public
   */
  getItem(key) {
    return this.get('serializer').deserialize(this.get('storage').getItem(this.buildNamespace(key)));
  },

  /**
   * Removes a value from storage using a given key
   * @method removeItem
   * @param {string} key The key/value to remove from storage
   * @public
   */
  removeItem(key){
    this.get('storage').removeItem(this.buildNamespace(key));
  },

  /**
   * @method key
   */
  key(index) {
    return this.keys()[index] || null;
  },

  /**
   * Returns all the keys that are currently in the storage "world" in sorted order
   * (where the namespace defines the world boundary).
   * @method keys
   * @public
   */
  keys() {
    return Object.keys(this.get('storage'))
      .filter(key => this.isNamespaced(key))
      .map(key => this.stripNamespace(key))
      .sort();
  },

  /**
   * Clears all key/value pairs from storage
   * @method clear
   * @public
   */
  clear() {
    this.keys().forEach(key => this.removeItem(key));
  },

  /**
   * The current length/number of items in storage
   * @method length
   * @return {Number} The number of items in storage
   * @public
   */
  length() {
    return this.keys().length;
  }
});