@pscoped/ng2-cache
Version:
> ng2-cache library compatible with AoT compilation & Tree shaking like an official package.
1 lines • 21.8 kB
Source Map (JSON)
{"version":3,"file":"pscoped-ng2-cache.mjs","sources":["../../../lib/src/lib/ng2-cache.module.ts","../../../lib/src/lib/enums/cache-storages.enum.ts","../../../lib/src/lib/services/storage/cache-storage-abstract.service.ts","../../../lib/src/lib/services/storage/session-storage/cache-session-storage.service.ts","../../../lib/src/lib/services/storage/local-storage/cache-local-storage.service.ts","../../../lib/src/lib/services/storage/memory/cache-memory.service.ts","../../../lib/src/lib/services/cache.service.ts","../../../lib/src/pscoped-ng2-cache.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class Ng2CacheModule {}\n","export enum CacheStoragesEnum {\n LOCAL_STORAGE,\n SESSION_STORAGE,\n MEMORY\n}\n","import {CacheStoragesEnum} from '../../enums/cache-storages.enum';\nimport {StorageValueInterface} from '../../interfaces/storage-value.interface';\n\n/**\n * Abstract cache storage\n */\nexport abstract class CacheStorageAbstract {\n\n /**\n * Get item from storage\n * @param key\n */\n public abstract getItem(key: string): StorageValueInterface;\n\n /**\n * Set item to storage\n * @param key\n * @param value\n */\n public abstract setItem(key: string, value: StorageValueInterface): boolean;\n\n /**\n * Remove item from storage\n * @param key\n */\n public abstract removeItem(key: string): void;\n\n /**\n * Clear item in storage\n */\n public abstract clear(): void;\n\n /**\n * Get current storage type\n */\n public abstract type(): CacheStoragesEnum;\n\n /**\n * Check if storage is enabled\n */\n public abstract isEnabled(): boolean;\n\n}\n","import {Injectable} from '@angular/core';\nimport {CacheStorageAbstract} from '../cache-storage-abstract.service';\nimport {CacheStoragesEnum} from '../../../enums/cache-storages.enum';\nimport {StorageValueInterface} from '../../../interfaces/storage-value.interface';\n\n/**\n * Service for storing data in session storage\n */\n@Injectable()\nexport class CacheSessionStorage extends CacheStorageAbstract {\n\n public getItem(key: string) {\n let value = sessionStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n }\n\n public setItem(key: string, value: StorageValueInterface) {\n try {\n sessionStorage.setItem(key, JSON.stringify(value));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public removeItem(key: string) {\n sessionStorage.removeItem(key);\n }\n\n public clear() {\n sessionStorage.clear();\n }\n\n public type() {\n return CacheStoragesEnum.SESSION_STORAGE;\n }\n\n public isEnabled() {\n try {\n sessionStorage.setItem('test', 'test');\n sessionStorage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {CacheStorageAbstract} from '../cache-storage-abstract.service';\nimport {CacheStoragesEnum} from '../../../enums/cache-storages.enum';\nimport {StorageValueInterface} from '../../../interfaces/storage-value.interface';\n\n/**\n * Service for storing data in local storage\n */\n@Injectable()\nexport class CacheLocalStorage extends CacheStorageAbstract {\n\n public getItem(key: string) {\n const value = localStorage.getItem(key);\n return value ? JSON.parse(value) : null;\n }\n\n public setItem(key: string, value: StorageValueInterface) {\n try {\n localStorage.setItem(key, JSON.stringify(value));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public removeItem(key: string) {\n localStorage.removeItem(key);\n }\n\n public clear() {\n localStorage.clear();\n }\n\n public type() {\n return CacheStoragesEnum.LOCAL_STORAGE;\n }\n\n public isEnabled() {\n try {\n localStorage.setItem('test', 'test');\n localStorage.removeItem('test');\n return true;\n } catch (e) {\n return false;\n }\n }\n}\n","import {Injectable} from '@angular/core';\nimport {CacheStorageAbstract} from '../cache-storage-abstract.service';\nimport {CacheStoragesEnum} from '../../../enums/cache-storages.enum';\nimport {StorageValueInterface} from '../../../interfaces/storage-value.interface';\n\n/**\n * Service for storing data in local storage\n */\n@Injectable()\nexport class CacheMemoryStorage extends CacheStorageAbstract {\n\n private _data: {[key: string]: any} = {};\n\n public getItem(key: string) {\n return this._data[key] ? this._data[key] : null;\n }\n\n public setItem(key: string, value: StorageValueInterface) {\n this._data[key] = value;\n return true;\n }\n\n public removeItem(key: string) {\n delete this._data[key];\n }\n\n public clear() {\n this._data = [];\n }\n\n public type() {\n return CacheStoragesEnum.MEMORY;\n }\n\n public isEnabled() {\n return true;\n }\n}\n","import {Injectable, Optional} from '@angular/core';\nimport {CacheOptionsInterface} from '../interfaces/cache-options.interface';\nimport {CacheStoragesEnum} from '../enums/cache-storages.enum';\nimport {CacheStorageAbstract} from './storage/cache-storage-abstract.service';\nimport {CacheSessionStorage} from './storage/session-storage/cache-session-storage.service';\nimport {CacheLocalStorage} from './storage/local-storage/cache-local-storage.service';\nimport {CacheMemoryStorage} from './storage/memory/cache-memory.service';\nimport {StorageValueInterface} from '../interfaces/storage-value.interface';\n\nconst CACHE_PREFIX = 'CacheService';\n\nconst DEFAULT_STORAGE = CacheStoragesEnum.SESSION_STORAGE;\nconst DEFAULT_ENABLED_STORAGE = CacheStoragesEnum.MEMORY;\n\n@Injectable()\nexport class CacheService {\n\n /**\n * Default cache options\n */\n private _defaultOptions: CacheOptionsInterface = {\n expires: Number.MAX_VALUE,\n maxAge : Number.MAX_VALUE\n };\n\n /**\n * Cache prefix\n */\n private _prefix: string = CACHE_PREFIX;\n\n public constructor(@Optional() private _storage: CacheStorageAbstract) {\n this._validateStorage();\n }\n\n /**\n * Set data to cache\n * @param key\n * @param value\n * @param options\n */\n public set(key: string, value: any, options?: CacheOptionsInterface) {\n let storageKey = this._toStorageKey(key);\n options = options ? options : this._defaultOptions;\n if (this._storage.setItem(storageKey, this._toStorageValue(value, options))) {\n if (!this._isSystemKey(key) && options.tag) {\n this._saveTag(options.tag, storageKey);\n }\n return true;\n }\n return false;\n }\n\n\n /**\n * Get data from cache\n * @param key\n * @returns any\n */\n public get(key: string): any {\n let storageValue = this._storage.getItem(this._toStorageKey(key)),\n value: any = null;\n if (storageValue) {\n if (this._validateStorageValue(storageValue)) {\n value = storageValue.value;\n } else {\n this.remove(key);\n }\n }\n return value;\n }\n\n /**\n * Check if value exists\n * @param key\n * @returns boolean\n */\n public exists(key: string): boolean {\n return !!this.get(key);\n }\n\n /**\n * Remove item from cache\n * @param key\n */\n public remove(key: string) {\n this._storage.removeItem(this._toStorageKey(key));\n this._removeFromTag(this._toStorageKey(key));\n }\n\n /**\n * Remove all from cache\n */\n public removeAll() {\n this._storage.clear();\n }\n\n /**\n * Get all tag data\n * @param tag\n * @returns Array\n */\n public getTagData(tag: string) {\n let tags = this.get(this._tagsStorageKey()) || {},\n result : {[key: string]: any} = {};\n if (tags[tag]) {\n tags[tag].forEach((key: string) => {\n let data = this.get(this._fromStorageKey(key));\n if (data) {\n result[this._fromStorageKey(key)] = data;\n }\n });\n }\n return result;\n }\n\n /**\n * Create a new instance of cache with needed storage\n * @param type\n * returns CacheService\n */\n public useStorage(type: CacheStoragesEnum) {\n let service = new CacheService(this._initStorage(type));\n service.setGlobalPrefix(this._getCachePrefix());\n return service;\n }\n\n /**\n * Remove all by tag\n * @param tag\n */\n public removeTag(tag: string) {\n let tags = this.get(this._tagsStorageKey()) || {};\n if (tags[tag]) {\n tags[tag].forEach((key: string) => {\n this._storage.removeItem(key);\n });\n delete tags[tag];\n this.set(this._tagsStorageKey(), tags);\n }\n }\n\n /**\n * Set global cache key prefix\n * @param prefix\n */\n public setGlobalPrefix(prefix: string) {\n this._prefix = prefix;\n }\n\n /**\n * Validate cache storage\n */\n private _validateStorage() {\n if (!this._storage) {\n this._storage = this._initStorage(DEFAULT_STORAGE);\n }\n if (!this._storage.isEnabled()) {\n this._storage = this._initStorage(DEFAULT_ENABLED_STORAGE);\n }\n }\n\n /**\n * Remove key from tags keys list\n * @param key\n */\n private _removeFromTag(key: string) {\n let tags = this.get(this._tagsStorageKey()) || {},\n index: number;\n for (let tag in tags) {\n index = tags[tag].indexOf(key);\n if (index !== -1) {\n tags[tag].splice(index, 1);\n this.set(this._tagsStorageKey(), tags);\n break;\n }\n }\n }\n\n /**\n * Init storage by type\n * @param type\n * @returns CacheStorageAbstract\n */\n private _initStorage(type: CacheStoragesEnum) {\n let storage: CacheStorageAbstract;\n switch (type) {\n case CacheStoragesEnum.SESSION_STORAGE:\n storage = new CacheSessionStorage();\n break;\n case CacheStoragesEnum.LOCAL_STORAGE:\n storage = new CacheLocalStorage();\n break;\n default: storage = new CacheMemoryStorage();\n }\n return storage;\n }\n\n private _toStorageKey(key: string) {\n return this._getCachePrefix() + key;\n }\n\n private _fromStorageKey(key: string) {\n return key.replace(this._getCachePrefix(), '');\n }\n\n /**\n * Prepare value to set to storage\n * @param value\n * @param options\n * returns {value: any, options: CacheOptionsInterface}\n */\n private _toStorageValue(value: any, options: CacheOptionsInterface): StorageValueInterface {\n return {\n value: value,\n options: this._toStorageOptions(options)\n };\n }\n\n /**\n * Prepare options to set to storage\n * @param options\n * @returns CacheOptionsInterface\n */\n private _toStorageOptions(options: CacheOptionsInterface): CacheOptionsInterface {\n var storageOptions: CacheOptionsInterface = {};\n storageOptions.expires = options.expires ? options.expires :\n (options.maxAge ? Date.now() + (options.maxAge * 1000) : this._defaultOptions.expires);\n storageOptions.maxAge = options.maxAge ? options.maxAge : this._defaultOptions.maxAge;\n return storageOptions;\n }\n\n /**\n * Validate storage value\n * @param value\n * @returns boolean\n */\n private _validateStorageValue(value: StorageValueInterface) {\n return !!value.options.expires && value.options.expires > Date.now();\n }\n\n /**\n * check if its system cache key\n * @param key\n * returns boolean\n */\n private _isSystemKey(key: string) {\n return [this._tagsStorageKey()].indexOf(key) !== -1;\n }\n\n /**\n * Save tag to list of tags\n * @param tag\n * @param key\n */\n private _saveTag(tag: string, key: string) {\n let tags = this.get(this._tagsStorageKey()) || {};\n if (!tags[tag]) {\n tags[tag] = [key];\n } else {\n tags[tag].push(key);\n }\n this.set(this._tagsStorageKey(), tags);\n }\n\n /**\n * Get global cache prefix\n * returns {string}\n * private\n */\n private _getCachePrefix() {\n return this._prefix;\n }\n\n private _tagsStorageKey() {\n return 'CacheService_tags';\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.CacheStorageAbstract"],"mappings":"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"}