{"version":3,"sources":["modules/env/storages-by-path/local.es6.js"],"names":["DEFAULT_STORAGE_KEY","config","storage","key","Storage","storageKey","options","result","path","storageType","value","window","setItem","JSON","stringify","parse","getItem","_prepareOptions","callback","Array","isArray","undefined","shift","data","_get","length","_commit","removeItem","clear","transformProvider","mixin","oldValue","newValue","shared"],"mappings":"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","file":"modules/env/storages-by-path/local.js","sourceRoot":"/source/","sourcesContent":["import getByPath from 'modules/utils/path';\nimport setByPath from 'modules/utils/set-by-path';\nimport removeByPath from 'modules/utils/remove-by-path';\nimport config from 'config';\nimport mixin from 'modules/utils/mixin';\nimport { singleton } from 'modules/utils/singleton';\n\nconst DEFAULT_STORAGE_KEY = config.storage ? config.storage.key : '__appdata';\n\nexport default class Storage {\n static shared = singleton((options) => new Storage(options));\n\n constructor({ storageKey = DEFAULT_STORAGE_KEY }) {\n this.storageKey = storageKey;\n }\n\n _prepareOptions(options = {}) {\n let result = options;\n\n if (typeof options === 'string') {\n result = {\n path: [this.storageKey, options]\n };\n }\n\n if (typeof options.path === 'undefined' && options.key) {\n result.path = [this.storageKey, options.key];\n }\n\n result.storageType = options.storageType ? options.storageType : 'local';\n\n return result;\n }\n\n _commit(key, value, storageType = 'local') {\n window[`${storageType}Storage`].setItem(key, JSON.stringify(value));\n }\n\n _get(key, storageType = 'local') {\n return JSON.parse(window[`${storageType}Storage`].getItem(key));\n }\n\n getItem(options) {\n const { path, callback, storageType } = this._prepareOptions(options);\n\n if (!Array.isArray(path)) { return undefined; }\n\n const key = path.shift();\n let data = this._get(key, storageType);\n\n data = path.length ? getByPath(path, data) : data;\n\n callback && callback(data);\n\n return data;\n }\n\n setItem(options) {\n const { path, value, callback, storageType } = this._prepareOptions(options);\n\n if (!Array.isArray(path) || path.length === 0 || typeof value === 'undefined') { return false; }\n\n const key = path.shift();\n let data = this._get(key, storageType);\n\n data = path.length ? setByPath(path, data, value) : value;\n\n this._commit(key, data, storageType);\n\n callback && callback(true);\n\n return true;\n }\n\n removeItem(options) {\n const { path, callback, storageType } = this._prepareOptions(options);\n\n if (!Array.isArray(path) || path.length === 0) { return false; }\n\n const key = path.shift();\n let data = this._get(key, storageType);\n\n if (path.length) {\n data = removeByPath(path, data);\n this._commit(key, data, storageType);\n } else {\n window[`${storageType}Storage`].removeItem(key);\n }\n\n callback && callback(true);\n\n return true;\n }\n\n clear(options) {\n const { callback, storageType } = this._prepareOptions(options);\n\n window[`${storageType}Storage`].clear();\n\n callback && callback(true);\n\n return true;\n }\n\n patch(options) {\n const { path, value, callback, storageType, transformProvider = mixin } = this._prepareOptions(options);\n\n if (!Array.isArray(path) || path.length === 0 || typeof value === 'undefined') { return false; }\n\n if (typeof value !== 'object') { return this.setItem(options); }\n\n const key = path.shift();\n let data = this._get(key, storageType);\n\n const oldValue = path.length ? getByPath(path, data) : data;\n const newValue = transformProvider(typeof oldValue === 'object' ? oldValue : {}, value);\n\n data = path.length ? setByPath(path, data, newValue) : newValue;\n\n this._commit(key, data, storageType);\n\n callback && callback(true);\n\n return true;\n }\n}\n\n"]}