{"version":3,"sources":["modules/env/storages-by-path/xdls.es6.js"],"names":["addTrialMetaTag","composeUrl","product","location","hostname","split","TRIAL_CODE","metaTag","document","querySelector","setAttribute","meta","createElement","httpEquiv","content","head","append","DEFAULT_STORAGE_KEY","config","storage","key","MESSAGE_NAMESPACE","host","window","btoa","Xdls","storageKey","that","url","id","Date","now","Math","floor","random","isReady","iframe","queue","requestId","state","fallbackTimeout","receiveMessage","bind","readyState","init","addEventListener","event","target","temp","innerHTML","setTimeout","isFallback","flush","body","appendChild","getElementById","options","result","path","storageType","data","JSON","parse","err","namespace","value","clearTimeout","forEach","func","contentWindow","postMessage","stringify","action","prepareOptions","callback","Promise","resolve","push","setItem","buildMessage","Array","isArray","undefined","getItem","length","removeItem","clear","transformProvider","mixin","patch","oldValue","newValue","shared"],"mappings":"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","file":"modules/env/storages-by-path/xdls.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 mixin from 'modules/utils/mixin';\nimport { singleton } from 'modules/utils/singleton';\nimport config from 'config';\n\nexport function addTrialMetaTag() {\n const product = location.hostname.split('.')[1];\n const TRIAL_CODE = {\n 'anastasiadate': 'At/K/mWD5qp9PPGKe+7hi6DBu96R9QAfImjxqO4fvWEwQsZxolZX188oYE2sZln3wI1yvUH/0kVU8+BG0xQwuwMAAACCeyJvcmlnaW4iOiJodHRwczovL2FuYXN0YXNpYWRhdGUuY29tOjQ0MyIsImZlYXR1cmUiOiJEaXNhYmxlVGhpcmRQYXJ0eVN0b3JhZ2VQYXJ0aXRpb25pbmciLCJleHBpcnkiOjE3MjU0MDc5OTksImlzU3ViZG9tYWluIjp0cnVlfQ==',\n 'asiandate': 'AuAc2lJFa39GVMYEQQbTF3Z16ITUsmwyr9MGxUJO50jEBo/FkzynIhw/ydT0XP2yvwe0ioTHRjg5jfLqlbGWEAEAAAB+eyJvcmlnaW4iOiJodHRwczovL2FzaWFuZGF0ZS5jb206NDQzIiwiZmVhdHVyZSI6IkRpc2FibGVUaGlyZFBhcnR5U3RvcmFnZVBhcnRpdGlvbmluZyIsImV4cGlyeSI6MTcyNTQwNzk5OSwiaXNTdWJkb21haW4iOnRydWV9'\n }\n\n var metaTag = document.querySelector('meta[http-equiv=\"origin-trial\"]');\n\n if (metaTag) {\n metaTag.setAttribute('content', TRIAL_CODE[product]);\n } else {\n const meta = document.createElement('meta');\n meta.httpEquiv = 'origin-trial';\n\n meta.content = TRIAL_CODE[product];\n document.head.append(meta);\n }\n}\n\nconst DEFAULT_STORAGE_KEY = config.storage ? config.storage.key : '__appdata';\n\nconst MESSAGE_NAMESPACE = 'cross-domain-product-storage-message';\n\nexport function composeUrl(host) {\n return `https://${host}/app/xdls/${window.btoa(window.document.location.host)}`;\n}\n\nexport default class Xdls {\n static shared = singleton((options) => new Xdls(options));\n\n constructor({ host, storageKey = DEFAULT_STORAGE_KEY }) {\n const that = this;\n this.storageKey = storageKey;\n this.url = composeUrl(host);\n this.id = +(Date.now() + '' + Math.floor((Math.random() * 9000) + 1000));\n this.isReady = false;\n this.iframe = null;\n this.queue = [];\n this.requestId = -1;\n this.state = {};\n this.fallbackTimeout = null;\n\n this.receiveMessage = this.receiveMessage.bind(this);\n\n if (window.document.readyState === 'complete') {\n this.init();\n } else {\n document.addEventListener('readystatechange', event => {\n if (event.target.readyState === 'complete') {\n that.init();\n }\n });\n }\n }\n\n init() {\n var temp = document.createElement('div');\n temp.innerHTML = '';\n\n window.addEventListener('message', this.receiveMessage, false);\n\n this.fallbackTimeout = setTimeout(() => {\n this.isFallback = true;\n this.flush();\n }, 1000);\n\n document.body.appendChild(temp);\n this.iframe = document.getElementById(this.id);\n setTimeout(() => {\n addTrialMetaTag();\n }, 0);\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 receiveMessage(event) {\n var data;\n\n try {\n data = JSON.parse(event.data);\n } catch (err) {\n //not our message, can ignore\n }\n\n if (data && data.namespace === MESSAGE_NAMESPACE) {\n if (data.id === 'iframe-ready') {\n this.state = data.value;\n this.isReady = true;\n this.fallbackTimeout && clearTimeout(this.fallbackTimeout);\n this.flush();\n } else if (data.id === 'actualize' && this.isReady) {\n const { key, value, storageType } = data;\n this.state[storageType][key] = value;\n }\n }\n }\n\n flush() {\n this.queue.forEach((func) => { func(); });\n this.queue = [];\n }\n\n postMessage(data) {\n this.iframe.contentWindow.postMessage(JSON.stringify(data), '*');\n }\n\n buildMessage(action, path, value, storageType) {\n this.requestId++;\n\n const data = {\n namespace: MESSAGE_NAMESPACE,\n id: this.requestId,\n action: action,\n path: path,\n value: value,\n storage: storageType\n };\n\n this.postMessage(data);\n }\n\n setItem(options) {\n const { path, value, callback, storageType } = this.prepareOptions(options);\n\n if (typeof path === 'undefined' || typeof value === 'undefined') { return false; }\n\n if (!this.isReady) {\n if (this.isFallback) {\n callback && callback();\n return;\n }\n return new Promise((resolve) => {\n this.queue.push(() => {\n resolve(this.setItem(options));\n });\n });\n }\n\n this.buildMessage('setbypath', path, value, storageType);\n\n if (Array.isArray(path)) {\n setByPath(path, this.state[storageType], value);\n } else {\n this.state[storageType][path] = value;\n }\n\n callback && callback(true);\n\n return true;\n }\n\n getItem(options) {\n const { path, callback, storageType } = this.prepareOptions(options);\n\n if (typeof path === 'undefined') { return undefined; }\n\n if (!this.isReady) {\n if (this.isFallback) {\n callback && callback();\n return;\n }\n return new Promise((resolve) => {\n this.queue.push(() => {\n resolve(this.getItem(options));\n });\n });\n }\n\n const data = Array.isArray(path) ? getByPath(path, this.state[storageType]) : this.state[storageType][path];\n\n callback && callback(data);\n\n return data;\n }\n\n removeItem(options) {\n const { path, callback, storageType } = this.prepareOptions(options);\n\n if (typeof path === 'undefined' || (Array.isArray(path) && path.length === 0)) { return false; }\n\n if (!this.isReady) {\n if (this.isFallback) {\n callback && callback();\n return;\n }\n return new Promise((resolve) => {\n this.queue.push(() => {\n resolve(this.removeItem(options));\n });\n });\n }\n\n this.buildMessage('removebypath', path, null, storageType);\n\n if (Array.isArray(path)) {\n removeByPath(path, this.state[storageType]);\n } else {\n delete this.state[storageType][path];\n }\n\n callback && callback(true);\n\n return true;\n }\n\n clear(options) {\n if (!this.isReady) {\n if (this.isFallback) {\n callback && callback();\n return;\n }\n return new Promise((resolve) => {\n this.queue.push(() => {\n resolve(this.clear(options));\n });\n });\n }\n\n const { callback, storageType } = this.prepareOptions(options);\n\n this.buildMessage('clear', null, null, storageType);\n\n delete this.state[storageType];\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 (typeof path === 'undefined' || typeof value === 'undefined') { return false; }\n\n if (typeof value !== 'object') { return this.setItem(options); }\n\n if (!this.isReady) {\n if (this.isFallback) {\n callback && callback();\n return;\n }\n return new Promise((resolve) => {\n this.queue.push(() => {\n resolve(this.patch(options));\n });\n });\n }\n\n const oldValue = Array.isArray(path) ? getByPath(path, this.state[storageType]) : this.state[storageType][path];\n const newValue = transformProvider(typeof oldValue === 'object' ? oldValue : {}, value);\n\n this.buildMessage('setbypath', path, newValue, storageType);\n\n if (Array.isArray(path)) {\n setByPath(path, this.state[storageType], newValue);\n } else {\n this.state[storageType][path] = newValue;\n }\n\n callback && callback(true);\n\n return true;\n }\n}\n"]}