summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js
diff options
context:
space:
mode:
Diffstat (limited to 'ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js')
-rw-r--r--ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js1111
1 files changed, 1111 insertions, 0 deletions
diff --git a/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js
new file mode 100644
index 00000000..6a62e9b7
--- /dev/null
+++ b/ecomp-portal-FE/client/bower_components/angular-cache/dist/angular-cache.js
@@ -0,0 +1,1111 @@
+/**
+ * angular-cache
+ * @version 4.6.0 - Homepage <https://github.com/jmdobry/angular-cache>
+ * @copyright (c) 2013-2016 angular-cache project authors
+ * @license MIT <https://github.com/jmdobry/angular-cache/blob/master/LICENSE>
+ * @overview angular-cache is a very useful replacement for Angular's $cacheFactory.
+ */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(typeof angular === 'undefined' ? require('angular') : angular) :
+ typeof define === 'function' && define.amd ? define('angular-cache', ['angular'], factory) :
+ (global.angularCacheModuleName = factory(global.angular));
+}(this, function (angular) { 'use strict';
+
+ angular = 'default' in angular ? angular['default'] : angular;
+
+ var babelHelpers = {};
+ babelHelpers.typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
+ return typeof obj;
+ } : function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj;
+ };
+
+ /**
+ * @method bubbleUp
+ * @param {array} heap The heap.
+ * @param {function} weightFunc The weight function.
+ * @param {number} n The index of the element to bubble up.
+ */
+ var bubbleUp = function bubbleUp(heap, weightFunc, n) {
+ var element = heap[n];
+ var weight = weightFunc(element);
+ // When at 0, an element can not go up any further.
+ while (n > 0) {
+ // Compute the parent element's index, and fetch it.
+ var parentN = Math.floor((n + 1) / 2) - 1;
+ var parent = heap[parentN];
+ // If the parent has a lesser weight, things are in order and we
+ // are done.
+ if (weight >= weightFunc(parent)) {
+ break;
+ } else {
+ heap[parentN] = element;
+ heap[n] = parent;
+ n = parentN;
+ }
+ }
+ };
+
+ /**
+ * @method bubbleDown
+ * @param {array} heap The heap.
+ * @param {function} weightFunc The weight function.
+ * @param {number} n The index of the element to sink down.
+ */
+ var bubbleDown = function bubbleDown(heap, weightFunc, n) {
+ var length = heap.length;
+ var node = heap[n];
+ var nodeWeight = weightFunc(node);
+
+ while (true) {
+ var child2N = (n + 1) * 2;
+ var child1N = child2N - 1;
+ var swap = null;
+ if (child1N < length) {
+ var child1 = heap[child1N];
+ var child1Weight = weightFunc(child1);
+ // If the score is less than our node's, we need to swap.
+ if (child1Weight < nodeWeight) {
+ swap = child1N;
+ }
+ }
+ // Do the same checks for the other child.
+ if (child2N < length) {
+ var child2 = heap[child2N];
+ var child2Weight = weightFunc(child2);
+ if (child2Weight < (swap === null ? nodeWeight : weightFunc(heap[child1N]))) {
+ swap = child2N;
+ }
+ }
+
+ if (swap === null) {
+ break;
+ } else {
+ heap[n] = heap[swap];
+ heap[swap] = node;
+ n = swap;
+ }
+ }
+ };
+
+ function BinaryHeap(weightFunc, compareFunc) {
+ if (!weightFunc) {
+ weightFunc = function weightFunc(x) {
+ return x;
+ };
+ }
+ if (!compareFunc) {
+ compareFunc = function compareFunc(x, y) {
+ return x === y;
+ };
+ }
+ if (typeof weightFunc !== 'function') {
+ throw new Error('BinaryHeap([weightFunc][, compareFunc]): "weightFunc" must be a function!');
+ }
+ if (typeof compareFunc !== 'function') {
+ throw new Error('BinaryHeap([weightFunc][, compareFunc]): "compareFunc" must be a function!');
+ }
+ this.weightFunc = weightFunc;
+ this.compareFunc = compareFunc;
+ this.heap = [];
+ }
+
+ var BHProto = BinaryHeap.prototype;
+
+ BHProto.push = function (node) {
+ this.heap.push(node);
+ bubbleUp(this.heap, this.weightFunc, this.heap.length - 1);
+ };
+
+ BHProto.peek = function () {
+ return this.heap[0];
+ };
+
+ BHProto.pop = function () {
+ var front = this.heap[0];
+ var end = this.heap.pop();
+ if (this.heap.length > 0) {
+ this.heap[0] = end;
+ bubbleDown(this.heap, this.weightFunc, 0);
+ }
+ return front;
+ };
+
+ BHProto.remove = function (node) {
+ var length = this.heap.length;
+ for (var i = 0; i < length; i++) {
+ if (this.compareFunc(this.heap[i], node)) {
+ var removed = this.heap[i];
+ var end = this.heap.pop();
+ if (i !== length - 1) {
+ this.heap[i] = end;
+ bubbleUp(this.heap, this.weightFunc, i);
+ bubbleDown(this.heap, this.weightFunc, i);
+ }
+ return removed;
+ }
+ }
+ return null;
+ };
+
+ BHProto.removeAll = function () {
+ this.heap = [];
+ };
+
+ BHProto.size = function () {
+ return this.heap.length;
+ };
+
+ var _Promise = null;
+ try {
+ _Promise = window.Promise;
+ } catch (e) {}
+
+ var utils = {
+ isNumber: function isNumber(value) {
+ return typeof value === 'number';
+ },
+ isString: function isString(value) {
+ return typeof value === 'string';
+ },
+ isObject: function isObject(value) {
+ return value !== null && (typeof value === 'undefined' ? 'undefined' : babelHelpers.typeof(value)) === 'object';
+ },
+ isFunction: function isFunction(value) {
+ return typeof value === 'function';
+ },
+ fromJson: function fromJson(value) {
+ return JSON.parse(value);
+ },
+ equals: function equals(a, b) {
+ return a === b;
+ },
+
+ Promise: _Promise
+ };
+
+ function _keys(collection) {
+ var keys = [];
+ var key = void 0;
+ if (!utils.isObject(collection)) {
+ return keys;
+ }
+ for (key in collection) {
+ if (collection.hasOwnProperty(key)) {
+ keys.push(key);
+ }
+ }
+ return keys;
+ }
+
+ function _isPromiseLike(value) {
+ return value && typeof value.then === 'function';
+ }
+
+ function _stringifyNumber(number) {
+ if (utils.isNumber(number)) {
+ return number.toString();
+ }
+ return number;
+ }
+
+ function _keySet(collection) {
+ var keySet = {};
+ var key = void 0;
+ if (!utils.isObject(collection)) {
+ return keySet;
+ }
+ for (key in collection) {
+ if (collection.hasOwnProperty(key)) {
+ keySet[key] = key;
+ }
+ }
+ return keySet;
+ }
+
+ var defaults = {
+ capacity: Number.MAX_VALUE,
+ maxAge: Number.MAX_VALUE,
+ deleteOnExpire: 'none',
+ onExpire: null,
+ cacheFlushInterval: null,
+ recycleFreq: 1000,
+ storageMode: 'memory',
+ storageImpl: null,
+ disabled: false,
+ storagePrefix: 'cachefactory.caches.',
+ storeOnResolve: false,
+ storeOnReject: false
+ };
+
+ var caches = {};
+
+ function createCache(cacheId, options) {
+ if (cacheId in caches) {
+ throw new Error(cacheId + ' already exists!');
+ } else if (!utils.isString(cacheId)) {
+ throw new Error('cacheId must be a string!');
+ }
+
+ var $$data = {};
+ var $$promises = {};
+ var $$storage = null;
+ var $$expiresHeap = new BinaryHeap(function (x) {
+ return x.expires;
+ }, utils.equals);
+ var $$lruHeap = new BinaryHeap(function (x) {
+ return x.accessed;
+ }, utils.equals);
+
+ var cache = caches[cacheId] = {
+
+ $$id: cacheId,
+
+ destroy: function destroy() {
+ clearInterval(this.$$cacheFlushIntervalId);
+ clearInterval(this.$$recycleFreqId);
+ this.removeAll();
+ if ($$storage) {
+ $$storage().removeItem(this.$$prefix + '.keys');
+ $$storage().removeItem(this.$$prefix);
+ }
+ $$storage = null;
+ $$data = null;
+ $$lruHeap = null;
+ $$expiresHeap = null;
+ this.$$prefix = null;
+ delete caches[this.$$id];
+ },
+ disable: function disable() {
+ this.$$disabled = true;
+ },
+ enable: function enable() {
+ delete this.$$disabled;
+ },
+ get: function get(key, options) {
+ var _this2 = this;
+
+ if (Array.isArray(key)) {
+ var _ret = function () {
+ var keys = key;
+ var values = [];
+
+ keys.forEach(function (key) {
+ var value = _this2.get(key, options);
+ if (value !== null && value !== undefined) {
+ values.push(value);
+ }
+ });
+
+ return {
+ v: values
+ };
+ }();
+
+ if ((typeof _ret === 'undefined' ? 'undefined' : babelHelpers.typeof(_ret)) === "object") return _ret.v;
+ } else {
+ key = _stringifyNumber(key);
+
+ if (this.$$disabled) {
+ return;
+ }
+ }
+
+ options = options || {};
+ if (!utils.isString(key)) {
+ throw new Error('key must be a string!');
+ } else if (options && !utils.isObject(options)) {
+ throw new Error('options must be an object!');
+ } else if (options.onExpire && !utils.isFunction(options.onExpire)) {
+ throw new Error('options.onExpire must be a function!');
+ }
+
+ var item = void 0;
+
+ if ($$storage) {
+ if ($$promises[key]) {
+ return $$promises[key];
+ }
+
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ item = utils.fromJson(itemJson);
+ } else {
+ return;
+ }
+ } else if (utils.isObject($$data)) {
+ if (!(key in $$data)) {
+ return;
+ }
+
+ item = $$data[key];
+ }
+
+ var value = item.value;
+ var now = new Date().getTime();
+
+ if ($$storage) {
+ $$lruHeap.remove({
+ key: key,
+ accessed: item.accessed
+ });
+ item.accessed = now;
+ $$lruHeap.push({
+ key: key,
+ accessed: now
+ });
+ } else {
+ $$lruHeap.remove(item);
+ item.accessed = now;
+ $$lruHeap.push(item);
+ }
+
+ if (this.$$deleteOnExpire === 'passive' && 'expires' in item && item.expires < now) {
+ this.remove(key);
+
+ if (this.$$onExpire) {
+ this.$$onExpire(key, item.value, options.onExpire);
+ } else if (options.onExpire) {
+ options.onExpire.call(this, key, item.value);
+ }
+ value = undefined;
+ } else if ($$storage) {
+ $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));
+ }
+
+ return value;
+ },
+ info: function info(key) {
+ if (key) {
+ var item = void 0;
+ if ($$storage) {
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ item = utils.fromJson(itemJson);
+ return {
+ created: item.created,
+ accessed: item.accessed,
+ expires: item.expires,
+ isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)
+ };
+ } else {
+ return undefined;
+ }
+ } else if (utils.isObject($$data) && key in $$data) {
+ item = $$data[key];
+
+ return {
+ created: item.created,
+ accessed: item.accessed,
+ expires: item.expires,
+ isExpired: new Date().getTime() - item.created > (item.maxAge || this.$$maxAge)
+ };
+ } else {
+ return undefined;
+ }
+ } else {
+ return {
+ id: this.$$id,
+ capacity: this.$$capacity,
+ maxAge: this.$$maxAge,
+ deleteOnExpire: this.$$deleteOnExpire,
+ onExpire: this.$$onExpire,
+ cacheFlushInterval: this.$$cacheFlushInterval,
+ recycleFreq: this.$$recycleFreq,
+ storageMode: this.$$storageMode,
+ storageImpl: $$storage ? $$storage() : undefined,
+ disabled: !!this.$$disabled,
+ size: $$lruHeap && $$lruHeap.size() || 0
+ };
+ }
+ },
+ keys: function keys() {
+ if ($$storage) {
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+
+ if (keysJson) {
+ return utils.fromJson(keysJson);
+ } else {
+ return [];
+ }
+ } else {
+ return _keys($$data);
+ }
+ },
+ keySet: function keySet() {
+ if ($$storage) {
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+ var kSet = {};
+
+ if (keysJson) {
+ var keys = utils.fromJson(keysJson);
+
+ for (var i = 0; i < keys.length; i++) {
+ kSet[keys[i]] = keys[i];
+ }
+ }
+ return kSet;
+ } else {
+ return _keySet($$data);
+ }
+ },
+ put: function put(key, value, options) {
+ var _this3 = this;
+
+ options || (options = {});
+
+ var storeOnResolve = 'storeOnResolve' in options ? !!options.storeOnResolve : this.$$storeOnResolve;
+ var storeOnReject = 'storeOnReject' in options ? !!options.storeOnReject : this.$$storeOnReject;
+
+ var getHandler = function getHandler(store, isError) {
+ return function (v) {
+ if (store) {
+ delete $$promises[key];
+ if (utils.isObject(v) && 'status' in v && 'data' in v) {
+ v = [v.status, v.data, v.headers(), v.statusText];
+ _this3.put(key, v);
+ } else {
+ _this3.put(key, v);
+ }
+ }
+ if (isError) {
+ if (utils.Promise) {
+ return utils.Promise.reject(v);
+ } else {
+ throw v;
+ }
+ } else {
+ return v;
+ }
+ };
+ };
+
+ if (this.$$disabled || !utils.isObject($$data) || value === null || value === undefined) {
+ return;
+ }
+ key = _stringifyNumber(key);
+
+ if (!utils.isString(key)) {
+ throw new Error('key must be a string!');
+ }
+
+ var now = new Date().getTime();
+ var item = {
+ key: key,
+ value: _isPromiseLike(value) ? value.then(getHandler(storeOnResolve, false), getHandler(storeOnReject, true)) : value,
+ created: options.created === undefined ? now : options.created,
+ accessed: options.accessed === undefined ? now : options.accessed
+ };
+ if (options.maxAge) {
+ item.maxAge = options.maxAge;
+ }
+
+ if (options.expires === undefined) {
+ item.expires = item.created + (item.maxAge || this.$$maxAge);
+ } else {
+ item.expires = options.expires;
+ }
+
+ if ($$storage) {
+ if (_isPromiseLike(item.value)) {
+ $$promises[key] = item.value;
+ return $$promises[key];
+ }
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+ var keys = keysJson ? utils.fromJson(keysJson) : [];
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ // Remove existing
+ if (itemJson) {
+ this.remove(key);
+ }
+ // Add to expires heap
+ $$expiresHeap.push({
+ key: key,
+ expires: item.expires
+ });
+ // Add to lru heap
+ $$lruHeap.push({
+ key: key,
+ accessed: item.accessed
+ });
+ // Set item
+ $$storage().setItem(this.$$prefix + '.data.' + key, JSON.stringify(item));
+ var exists = false;
+ for (var i = 0; i < keys.length; i++) {
+ if (keys[i] === key) {
+ exists = true;
+ break;
+ }
+ }
+ if (!exists) {
+ keys.push(key);
+ }
+ $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));
+ } else {
+ // Remove existing
+ if ($$data[key]) {
+ this.remove(key);
+ }
+ // Add to expires heap
+ $$expiresHeap.push(item);
+ // Add to lru heap
+ $$lruHeap.push(item);
+ // Set item
+ $$data[key] = item;
+ delete $$promises[key];
+ }
+
+ // Handle exceeded capacity
+ if ($$lruHeap.size() > this.$$capacity) {
+ this.remove($$lruHeap.peek().key);
+ }
+
+ return value;
+ },
+ remove: function remove(key) {
+ key += '';
+ delete $$promises[key];
+ if ($$storage) {
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ var item = utils.fromJson(itemJson);
+ $$lruHeap.remove({
+ key: key,
+ accessed: item.accessed
+ });
+ $$expiresHeap.remove({
+ key: key,
+ expires: item.expires
+ });
+ $$storage().removeItem(this.$$prefix + '.data.' + key);
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+ var keys = keysJson ? utils.fromJson(keysJson) : [];
+ var index = keys.indexOf(key);
+
+ if (index >= 0) {
+ keys.splice(index, 1);
+ }
+ $$storage().setItem(this.$$prefix + '.keys', JSON.stringify(keys));
+ return item.value;
+ }
+ } else if (utils.isObject($$data)) {
+ var value = $$data[key] ? $$data[key].value : undefined;
+ $$lruHeap.remove($$data[key]);
+ $$expiresHeap.remove($$data[key]);
+ $$data[key] = null;
+ delete $$data[key];
+ return value;
+ }
+ },
+ removeAll: function removeAll() {
+ if ($$storage) {
+ $$lruHeap.removeAll();
+ $$expiresHeap.removeAll();
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+
+ if (keysJson) {
+ var keys = utils.fromJson(keysJson);
+
+ for (var i = 0; i < keys.length; i++) {
+ this.remove(keys[i]);
+ }
+ }
+ $$storage().setItem(this.$$prefix + '.keys', JSON.stringify([]));
+ } else if (utils.isObject($$data)) {
+ $$lruHeap.removeAll();
+ $$expiresHeap.removeAll();
+ for (var key in $$data) {
+ $$data[key] = null;
+ }
+ $$data = {};
+ } else {
+ $$lruHeap.removeAll();
+ $$expiresHeap.removeAll();
+ $$data = {};
+ }
+ $$promises = {};
+ },
+ removeExpired: function removeExpired() {
+ var now = new Date().getTime();
+ var expired = {};
+ var key = void 0;
+ var expiredItem = void 0;
+
+ while ((expiredItem = $$expiresHeap.peek()) && expiredItem.expires <= now) {
+ expired[expiredItem.key] = expiredItem.value ? expiredItem.value : null;
+ $$expiresHeap.pop();
+ }
+
+ if ($$storage) {
+ for (key in expired) {
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+ if (itemJson) {
+ expired[key] = utils.fromJson(itemJson).value;
+ this.remove(key);
+ }
+ }
+ } else {
+ for (key in expired) {
+ this.remove(key);
+ }
+ }
+
+ if (this.$$onExpire) {
+ for (key in expired) {
+ this.$$onExpire(key, expired[key]);
+ }
+ }
+
+ return expired;
+ },
+ setCacheFlushInterval: function setCacheFlushInterval(cacheFlushInterval) {
+ var _this = this;
+ if (cacheFlushInterval === null) {
+ delete _this.$$cacheFlushInterval;
+ } else if (!utils.isNumber(cacheFlushInterval)) {
+ throw new Error('cacheFlushInterval must be a number!');
+ } else if (cacheFlushInterval < 0) {
+ throw new Error('cacheFlushInterval must be greater than zero!');
+ } else if (cacheFlushInterval !== _this.$$cacheFlushInterval) {
+ _this.$$cacheFlushInterval = cacheFlushInterval;
+
+ clearInterval(_this.$$cacheFlushIntervalId); // eslint-disable-line
+
+ _this.$$cacheFlushIntervalId = setInterval(function () {
+ _this.removeAll();
+ }, _this.$$cacheFlushInterval);
+ }
+ },
+ setCapacity: function setCapacity(capacity) {
+ if (capacity === null) {
+ delete this.$$capacity;
+ } else if (!utils.isNumber(capacity)) {
+ throw new Error('capacity must be a number!');
+ } else if (capacity < 0) {
+ throw new Error('capacity must be greater than zero!');
+ } else {
+ this.$$capacity = capacity;
+ }
+ var removed = {};
+ while ($$lruHeap.size() > this.$$capacity) {
+ removed[$$lruHeap.peek().key] = this.remove($$lruHeap.peek().key);
+ }
+ return removed;
+ },
+ setDeleteOnExpire: function setDeleteOnExpire(deleteOnExpire, setRecycleFreq) {
+ if (deleteOnExpire === null) {
+ delete this.$$deleteOnExpire;
+ } else if (!utils.isString(deleteOnExpire)) {
+ throw new Error('deleteOnExpire must be a string!');
+ } else if (deleteOnExpire !== 'none' && deleteOnExpire !== 'passive' && deleteOnExpire !== 'aggressive') {
+ throw new Error('deleteOnExpire must be "none", "passive" or "aggressive"!');
+ } else {
+ this.$$deleteOnExpire = deleteOnExpire;
+ }
+ if (setRecycleFreq !== false) {
+ this.setRecycleFreq(this.$$recycleFreq);
+ }
+ },
+ setMaxAge: function setMaxAge(maxAge) {
+ if (maxAge === null) {
+ this.$$maxAge = Number.MAX_VALUE;
+ } else if (!utils.isNumber(maxAge)) {
+ throw new Error('maxAge must be a number!');
+ } else if (maxAge < 0) {
+ throw new Error('maxAge must be greater than zero!');
+ } else {
+ this.$$maxAge = maxAge;
+ }
+ var i = void 0,
+ keys = void 0,
+ key = void 0;
+
+ $$expiresHeap.removeAll();
+
+ if ($$storage) {
+ var keysJson = $$storage().getItem(this.$$prefix + '.keys');
+
+ keys = keysJson ? utils.fromJson(keysJson) : [];
+
+ for (i = 0; i < keys.length; i++) {
+ key = keys[i];
+ var itemJson = $$storage().getItem(this.$$prefix + '.data.' + key);
+
+ if (itemJson) {
+ var item = utils.fromJson(itemJson);
+ if (this.$$maxAge === Number.MAX_VALUE) {
+ item.expires = Number.MAX_VALUE;
+ } else {
+ item.expires = item.created + (item.maxAge || this.$$maxAge);
+ }
+ $$expiresHeap.push({
+ key: key,
+ expires: item.expires
+ });
+ }
+ }
+ } else {
+ keys = _keys($$data);
+
+ for (i = 0; i < keys.length; i++) {
+ key = keys[i];
+ if (this.$$maxAge === Number.MAX_VALUE) {
+ $$data[key].expires = Number.MAX_VALUE;
+ } else {
+ $$data[key].expires = $$data[key].created + ($$data[key].maxAge || this.$$maxAge);
+ }
+ $$expiresHeap.push($$data[key]);
+ }
+ }
+ if (this.$$deleteOnExpire === 'aggressive') {
+ return this.removeExpired();
+ } else {
+ return {};
+ }
+ },
+ setOnExpire: function setOnExpire(onExpire) {
+ if (onExpire === null) {
+ delete this.$$onExpire;
+ } else if (!utils.isFunction(onExpire)) {
+ throw new Error('onExpire must be a function!');
+ } else {
+ this.$$onExpire = onExpire;
+ }
+ },
+ setOptions: function setOptions(cacheOptions, strict) {
+ cacheOptions = cacheOptions || {};
+ strict = !!strict;
+ if (!utils.isObject(cacheOptions)) {
+ throw new Error('cacheOptions must be an object!');
+ }
+
+ if ('storagePrefix' in cacheOptions) {
+ this.$$storagePrefix = cacheOptions.storagePrefix;
+ } else if (strict) {
+ this.$$storagePrefix = defaults.storagePrefix;
+ }
+
+ this.$$prefix = this.$$storagePrefix + this.$$id;
+
+ if ('disabled' in cacheOptions) {
+ this.$$disabled = !!cacheOptions.disabled;
+ } else if (strict) {
+ this.$$disabled = defaults.disabled;
+ }
+
+ if ('deleteOnExpire' in cacheOptions) {
+ this.setDeleteOnExpire(cacheOptions.deleteOnExpire, false);
+ } else if (strict) {
+ this.setDeleteOnExpire(defaults.deleteOnExpire, false);
+ }
+
+ if ('recycleFreq' in cacheOptions) {
+ this.setRecycleFreq(cacheOptions.recycleFreq);
+ } else if (strict) {
+ this.setRecycleFreq(defaults.recycleFreq);
+ }
+
+ if ('maxAge' in cacheOptions) {
+ this.setMaxAge(cacheOptions.maxAge);
+ } else if (strict) {
+ this.setMaxAge(defaults.maxAge);
+ }
+
+ if ('storeOnResolve' in cacheOptions) {
+ this.$$storeOnResolve = !!cacheOptions.storeOnResolve;
+ } else if (strict) {
+ this.$$storeOnResolve = defaults.storeOnResolve;
+ }
+
+ if ('storeOnReject' in cacheOptions) {
+ this.$$storeOnReject = !!cacheOptions.storeOnReject;
+ } else if (strict) {
+ this.$$storeOnReject = defaults.storeOnReject;
+ }
+
+ if ('capacity' in cacheOptions) {
+ this.setCapacity(cacheOptions.capacity);
+ } else if (strict) {
+ this.setCapacity(defaults.capacity);
+ }
+
+ if ('cacheFlushInterval' in cacheOptions) {
+ this.setCacheFlushInterval(cacheOptions.cacheFlushInterval);
+ } else if (strict) {
+ this.setCacheFlushInterval(defaults.cacheFlushInterval);
+ }
+
+ if ('onExpire' in cacheOptions) {
+ this.setOnExpire(cacheOptions.onExpire);
+ } else if (strict) {
+ this.setOnExpire(defaults.onExpire);
+ }
+
+ if ('storageMode' in cacheOptions || 'storageImpl' in cacheOptions) {
+ this.setStorageMode(cacheOptions.storageMode || defaults.storageMode, cacheOptions.storageImpl || defaults.storageImpl);
+ } else if (strict) {
+ this.setStorageMode(defaults.storageMode, defaults.storageImpl);
+ }
+ },
+ setRecycleFreq: function setRecycleFreq(recycleFreq) {
+ if (recycleFreq === null) {
+ delete this.$$recycleFreq;
+ } else if (!utils.isNumber(recycleFreq)) {
+ throw new Error('recycleFreq must be a number!');
+ } else if (recycleFreq < 0) {
+ throw new Error('recycleFreq must be greater than zero!');
+ } else {
+ this.$$recycleFreq = recycleFreq;
+ }
+ clearInterval(this.$$recycleFreqId);
+ if (this.$$deleteOnExpire === 'aggressive') {
+ (function (self) {
+ self.$$recycleFreqId = setInterval(function () {
+ self.removeExpired();
+ }, self.$$recycleFreq);
+ })(this);
+ } else {
+ delete this.$$recycleFreqId;
+ }
+ },
+ setStorageMode: function setStorageMode(storageMode, storageImpl) {
+ if (!utils.isString(storageMode)) {
+ throw new Error('storageMode must be a string!');
+ } else if (storageMode !== 'memory' && storageMode !== 'localStorage' && storageMode !== 'sessionStorage') {
+ throw new Error('storageMode must be "memory", "localStorage" or "sessionStorage"!');
+ }
+
+ var prevStorage = $$storage;
+ var prevData = $$data;
+ var shouldReInsert = false;
+ var items = {};
+
+ function load(prevStorage, prevData) {
+ var keys = this.keys();
+ var length = keys.length;
+ if (length) {
+ var _key = void 0;
+ var prevDataIsObject = utils.isObject(prevData);
+ for (var i = 0; i < length; i++) {
+ _key = keys[i];
+ if (prevStorage) {
+ var itemJson = prevStorage().getItem(this.$$prefix + '.data.' + _key);
+ if (itemJson) {
+ items[_key] = utils.fromJson(itemJson);
+ }
+ } else if (prevDataIsObject) {
+ items[_key] = prevData[_key];
+ }
+ this.remove(_key);
+ }
+ shouldReInsert = true;
+ }
+ }
+
+ if (!this.$$initializing) {
+ load.call(this, prevStorage, prevData);
+ }
+
+ this.$$storageMode = storageMode;
+
+ if (storageImpl) {
+ if (!utils.isObject(storageImpl)) {
+ throw new Error('storageImpl must be an object!');
+ } else if (!('setItem' in storageImpl) || typeof storageImpl.setItem !== 'function') {
+ throw new Error('storageImpl must implement "setItem(key, value)"!');
+ } else if (!('getItem' in storageImpl) || typeof storageImpl.getItem !== 'function') {
+ throw new Error('storageImpl must implement "getItem(key)"!');
+ } else if (!('removeItem' in storageImpl) || typeof storageImpl.removeItem !== 'function') {
+ throw new Error('storageImpl must implement "removeItem(key)"!');
+ }
+ $$storage = function $$storage() {
+ return storageImpl;
+ };
+ } else if (this.$$storageMode === 'localStorage') {
+ try {
+ localStorage.setItem('cachefactory', 'cachefactory');
+ localStorage.removeItem('cachefactory');
+ $$storage = function $$storage() {
+ return localStorage;
+ };
+ } catch (e) {
+ $$storage = null;
+ this.$$storageMode = 'memory';
+ }
+ } else if (this.$$storageMode === 'sessionStorage') {
+ try {
+ sessionStorage.setItem('cachefactory', 'cachefactory');
+ sessionStorage.removeItem('cachefactory');
+ $$storage = function $$storage() {
+ return sessionStorage;
+ };
+ } catch (e) {
+ $$storage = null;
+ this.$$storageMode = 'memory';
+ }
+ } else {
+ $$storage = null;
+ this.$$storageMode = 'memory';
+ }
+
+ if (this.$$initializing) {
+ load.call(this, $$storage, $$data);
+ }
+
+ if (shouldReInsert) {
+ var item = void 0;
+ for (var key in items) {
+ item = items[key];
+ this.put(key, item.value, {
+ created: item.created,
+ accessed: item.accessed,
+ expires: item.expires
+ });
+ }
+ }
+ },
+ touch: function touch(key, options) {
+ var _this4 = this;
+
+ if (key) {
+ var val = this.get(key, {
+ onExpire: function onExpire(k, v) {
+ return _this4.put(k, v);
+ }
+ });
+ if (val) {
+ this.put(key, val, options);
+ }
+ } else {
+ var keys = this.keys();
+ for (var i = 0; i < keys.length; i++) {
+ this.touch(keys[i], options);
+ }
+ }
+ },
+ values: function values() {
+ var keys = this.keys();
+ var items = [];
+ for (var i = 0; i < keys.length; i++) {
+ items.push(this.get(keys[i]));
+ }
+ return items;
+ }
+ };
+
+ cache.$$initializing = true;
+ cache.setOptions(options, true);
+ cache.$$initializing = false;
+
+ return cache;
+ }
+
+ function CacheFactory(cacheId, options) {
+ return createCache(cacheId, options);
+ }
+
+ CacheFactory.createCache = createCache;
+ CacheFactory.defaults = defaults;
+
+ CacheFactory.info = function () {
+ var keys = _keys(caches);
+ var info = {
+ size: keys.length,
+ caches: {}
+ };
+ for (var opt in defaults) {
+ if (defaults.hasOwnProperty(opt)) {
+ info[opt] = defaults[opt];
+ }
+ }
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ info.caches[key] = caches[key].info();
+ }
+ return info;
+ };
+
+ CacheFactory.get = function (cacheId) {
+ return caches[cacheId];
+ };
+ CacheFactory.keySet = function () {
+ return _keySet(caches);
+ };
+ CacheFactory.keys = function () {
+ return _keys(caches);
+ };
+ CacheFactory.destroy = function (cacheId) {
+ if (caches[cacheId]) {
+ caches[cacheId].destroy();
+ delete caches[cacheId];
+ }
+ };
+ CacheFactory.destroyAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].destroy();
+ }
+ caches = {};
+ };
+ CacheFactory.clearAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].removeAll();
+ }
+ };
+ CacheFactory.removeExpiredFromAll = function () {
+ var expired = {};
+ for (var cacheId in caches) {
+ expired[cacheId] = caches[cacheId].removeExpired();
+ }
+ return expired;
+ };
+ CacheFactory.enableAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].$$disabled = false;
+ }
+ };
+ CacheFactory.disableAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].$$disabled = true;
+ }
+ };
+ CacheFactory.touchAll = function () {
+ for (var cacheId in caches) {
+ caches[cacheId].touch();
+ }
+ };
+
+ CacheFactory.utils = utils;
+ CacheFactory.BinaryHeap = BinaryHeap;
+
+ CacheFactory.utils.equals = angular.equals;
+ CacheFactory.utils.isObject = angular.isObject;
+ CacheFactory.utils.fromJson = angular.fromJson;
+
+ function BinaryHeapProvider() {
+ this.$get = function () {
+ return CacheFactory.BinaryHeap;
+ };
+ }
+
+ function CacheFactoryProvider() {
+ this.defaults = CacheFactory.defaults;
+ this.defaults.storagePrefix = 'angular-cache.caches.';
+
+ this.$get = ['$q', function ($q) {
+ CacheFactory.utils.Promise = $q;
+ return CacheFactory;
+ }];
+ }
+
+ angular.module('angular-cache', []).provider('BinaryHeap', BinaryHeapProvider).provider('CacheFactory', CacheFactoryProvider);
+
+ var index = 'angular-cache';
+
+ return index;
+
+}));
+//# sourceMappingURL=angular-cache.js.map \ No newline at end of file