From 8886cb1848dbb829368dc8614d9653a2f42dc206 Mon Sep 17 00:00:00 2001 From: Daybrush Date: Wed, 28 Nov 2018 16:36:00 +0900 Subject: [PATCH] chore(release): Release 2.1.3 --- .gitignore | 1 - dist/persist-migrate.js | 72 +++++++ dist/persist-migrate.js.map | 1 + dist/persist-migrate.min.js | 2 + dist/persist-migrate.min.js.map | 1 + dist/persist.esm.js | 329 ++++++++++++++++++++++++++++++ dist/persist.esm.js.map | 1 + dist/persist.js | 337 ++++++++++++++++++++++++++++++ dist/persist.js.map | 1 + dist/persist.min.js | 2 + dist/persist.min.js.map | 1 + package-lock.json | 349 +++++++++++++++++--------------- package.json | 4 +- 13 files changed, 931 insertions(+), 170 deletions(-) create mode 100644 dist/persist-migrate.js create mode 100644 dist/persist-migrate.js.map create mode 100644 dist/persist-migrate.min.js create mode 100644 dist/persist-migrate.min.js.map create mode 100644 dist/persist.esm.js create mode 100644 dist/persist.esm.js.map create mode 100644 dist/persist.js create mode 100644 dist/persist.js.map create mode 100644 dist/persist.min.js create mode 100644 dist/persist.min.js.map diff --git a/.gitignore b/.gitignore index 4cd00ab..4a4c1c6 100644 --- a/.gitignore +++ b/.gitignore @@ -208,4 +208,3 @@ temp/ doc/ demo/_data/version.yml demo/release -dist/ diff --git a/dist/persist-migrate.js b/dist/persist-migrate.js new file mode 100644 index 0000000..903ac63 --- /dev/null +++ b/dist/persist-migrate.js @@ -0,0 +1,72 @@ +/* +Copyright (c) 2017 NAVER Corp. +@egjs/persist project is licensed under the MIT license + +@egjs/persist JavaScript library + + +@version 2.1.3 +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.eg = global.eg || {}, global.eg.Persist = factory()); +}(this, (function () { 'use strict'; + + var win = typeof window !== "undefined" && window || {}; + var console = win.console; + var document = win.document; + var history = win.history; + var localStorage = win.localStorage; + var location = win.location; + var sessionStorage = win.sessionStorage; + var navigator = win.navigator; + var parseFloat = win.parseFloat; + var performance = win.performance; + + /* eslint-disable */ + var persistMigrate = (function (eg) { + if (!eg || !eg.Persist) { + return; + } + + var GLOBAL_KEY = "KEY___persist___"; + var oldConstructor = eg.Persist.prototype; + var isNeeded = eg.Persist.isNeeded; + var StorageManager = eg.Persist.StorageManager; + + eg.Persist = function Persist(key, value) { + // when called as plain method + if (!(this instanceof Persist)) { + if (arguments.length === 0) { + return StorageManager.getStateByKey(GLOBAL_KEY); + } + + if (arguments.length === 1 && typeof key !== "string") { + var value_ = key; + StorageManager.setStateByKey(GLOBAL_KEY, value_); + return undefined; + } + + if (arguments.length === 2) { + StorageManager.setStateByKey(key, value); + } + + return StorageManager.getStateByKey(key); + } // when called as constructer + + + this.key = key; + return undefined; + }; + + eg.Persist.isNeeded = isNeeded; + eg.Persist.prototype = oldConstructor; + return eg.Persist; + })(win.eg); + /* eslint-enable */ + + return persistMigrate; + +}))); +//# sourceMappingURL=persist-migrate.js.map diff --git a/dist/persist-migrate.js.map b/dist/persist-migrate.js.map new file mode 100644 index 0000000..7daa71b --- /dev/null +++ b/dist/persist-migrate.js.map @@ -0,0 +1 @@ +{"version":3,"file":"persist-migrate.js","sources":["../src/browser.js","../src/persist-migrate.js"],"sourcesContent":["const win = (typeof window !== `undefined` && window) || {};\n\nexport {win as window};\nexport const console = win.console;\nexport const document = win.document;\nexport const history = win.history;\nexport const localStorage = win.localStorage;\nexport const location = win.location;\nexport const sessionStorage = win.sessionStorage;\nexport const navigator = win.navigator;\nexport const parseFloat = win.parseFloat;\nexport const performance = win.performance;\n","/* eslint-disable */\nimport {window} from \"./browser\";\n\nexport default (function(eg) {\n\tif (!eg || !eg.Persist) {\n\t\treturn;\n\t}\n\n\tvar GLOBAL_KEY = \"KEY___persist___\";\n\tvar oldConstructor = eg.Persist.prototype;\n\tvar isNeeded = eg.Persist.isNeeded;\n\tvar StorageManager = eg.Persist.StorageManager;\n\n\teg.Persist = function Persist(key, value) {\n\t\t// when called as plain method\n\t\tif (!(this instanceof Persist)) {\n\t\t\tif (arguments.length === 0) {\n\t\t\t\treturn StorageManager.getStateByKey(GLOBAL_KEY);\n\t\t\t}\n\n\t\t\tif (arguments.length === 1 && typeof key !== \"string\") {\n\t\t\t\tvar value_ = key;\n\n\t\t\t\tStorageManager.setStateByKey(GLOBAL_KEY, value_);\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (arguments.length === 2) {\n\t\t\t\tStorageManager.setStateByKey(key, value);\n\t\t\t}\n\n\t\t\treturn StorageManager.getStateByKey(key);\n\t\t}\n\n\t\t// when called as constructer\n\t\tthis.key = key;\n\t\treturn undefined;\n\t};\n\teg.Persist.isNeeded = isNeeded;\n\teg.Persist.prototype = oldConstructor;\n\treturn eg.Persist;\n})(window.eg);\n\n/* eslint-enable */\n"],"names":["win","window","console","document","history","localStorage","location","sessionStorage","navigator","parseFloat","performance","eg","Persist","GLOBAL_KEY","oldConstructor","prototype","isNeeded","StorageManager","key","value","arguments","length","getStateByKey","value_","setStateByKey","undefined"],"mappings":";;;;;;;;;;;;;;;CAAA,IAAMA,GAAG,GAAI,OAAOC,MAAP,oBAAiCA,MAAlC,IAA6C,EAAzD;AAEA,CACO,IAAMC,OAAO,GAAGF,GAAG,CAACE,OAApB;AACP,CAAO,IAAMC,QAAQ,GAAGH,GAAG,CAACG,QAArB;AACP,CAAO,IAAMC,OAAO,GAAGJ,GAAG,CAACI,OAApB;AACP,CAAO,IAAMC,YAAY,GAAGL,GAAG,CAACK,YAAzB;AACP,CAAO,IAAMC,QAAQ,GAAGN,GAAG,CAACM,QAArB;AACP,CAAO,IAAMC,cAAc,GAAGP,GAAG,CAACO,cAA3B;AACP,CAAO,IAAMC,SAAS,GAAGR,GAAG,CAACQ,SAAtB;AACP,CAAO,IAAMC,UAAU,GAAGT,GAAG,CAACS,UAAvB;AACP,CAAO,IAAMC,WAAW,GAAGV,GAAG,CAACU,WAAxB;;CCXP;AACA,AAEA,sBAAe,CAAC,UAASC,EAAT,EAAa;CAC5B,MAAI,CAACA,EAAD,IAAO,CAACA,EAAE,CAACC,OAAf,EAAwB;CACvB;CACA;;CAED,MAAIC,UAAU,GAAG,kBAAjB;CACA,MAAIC,cAAc,GAAGH,EAAE,CAACC,OAAH,CAAWG,SAAhC;CACA,MAAIC,QAAQ,GAAGL,EAAE,CAACC,OAAH,CAAWI,QAA1B;CACA,MAAIC,cAAc,GAAGN,EAAE,CAACC,OAAH,CAAWK,cAAhC;;CAEAN,EAAAA,EAAE,CAACC,OAAH,GAAa,SAASA,OAAT,CAAiBM,GAAjB,EAAsBC,KAAtB,EAA6B;CACzC;CACA,QAAI,EAAE,gBAAgBP,OAAlB,CAAJ,EAAgC;CAC/B,UAAIQ,SAAS,CAACC,MAAV,KAAqB,CAAzB,EAA4B;CAC3B,eAAOJ,cAAc,CAACK,aAAf,CAA6BT,UAA7B,CAAP;CACA;;CAED,UAAIO,SAAS,CAACC,MAAV,KAAqB,CAArB,IAA0B,OAAOH,GAAP,KAAe,QAA7C,EAAuD;CACtD,YAAIK,MAAM,GAAGL,GAAb;CAEAD,QAAAA,cAAc,CAACO,aAAf,CAA6BX,UAA7B,EAAyCU,MAAzC;CACA,eAAOE,SAAP;CACA;;CAED,UAAIL,SAAS,CAACC,MAAV,KAAqB,CAAzB,EAA4B;CAC3BJ,QAAAA,cAAc,CAACO,aAAf,CAA6BN,GAA7B,EAAkCC,KAAlC;CACA;;CAED,aAAOF,cAAc,CAACK,aAAf,CAA6BJ,GAA7B,CAAP;CACA,KAnBwC;;;CAsBzC,SAAKA,GAAL,GAAWA,GAAX;CACA,WAAOO,SAAP;CACA,GAxBD;;CAyBAd,EAAAA,EAAE,CAACC,OAAH,CAAWI,QAAX,GAAsBA,QAAtB;CACAL,EAAAA,EAAE,CAACC,OAAH,CAAWG,SAAX,GAAuBD,cAAvB;CACA,SAAOH,EAAE,CAACC,OAAV;CACA,CAtCc,EAsCZX,GAAM,CAACU,EAtCK,CAAf;CAwCA;;;;;;;;"} \ No newline at end of file diff --git a/dist/persist-migrate.min.js b/dist/persist-migrate.min.js new file mode 100644 index 0000000..3be3385 --- /dev/null +++ b/dist/persist-migrate.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e.eg=e.eg||{},e.eg.Persist=t())}(this,function(){"use strict";var e="undefined"!=typeof window&&window||{};e.console,e.document,e.history,e.localStorage,e.location,e.sessionStorage,e.navigator,e.parseFloat,e.performance;return function(e){if(e&&e.Persist){var n="KEY___persist___",t=e.Persist.prototype,s=e.Persist.isNeeded,o=e.Persist.StorageManager;return e.Persist=function e(t,s){if(this instanceof e)this.key=t;else{if(0===arguments.length)return o.getStateByKey(n);if(1!==arguments.length||"string"==typeof t)return 2===arguments.length&&o.setStateByKey(t,s),o.getStateByKey(t);var i=t;o.setStateByKey(n,i)}},e.Persist.isNeeded=s,e.Persist.prototype=t,e.Persist}}(e.eg)}); +//# sourceMappingURL=persist-migrate.min.js.map diff --git a/dist/persist-migrate.min.js.map b/dist/persist-migrate.min.js.map new file mode 100644 index 0000000..98d98e1 --- /dev/null +++ b/dist/persist-migrate.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"persist-migrate.min.js","sources":["../src/browser.js","../src/persist-migrate.js"],"sourcesContent":["const win = (typeof window !== `undefined` && window) || {};\n\nexport {win as window};\nexport const console = win.console;\nexport const document = win.document;\nexport const history = win.history;\nexport const localStorage = win.localStorage;\nexport const location = win.location;\nexport const sessionStorage = win.sessionStorage;\nexport const navigator = win.navigator;\nexport const parseFloat = win.parseFloat;\nexport const performance = win.performance;\n","/* eslint-disable */\nimport {window} from \"./browser\";\n\nexport default (function(eg) {\n\tif (!eg || !eg.Persist) {\n\t\treturn;\n\t}\n\n\tvar GLOBAL_KEY = \"KEY___persist___\";\n\tvar oldConstructor = eg.Persist.prototype;\n\tvar isNeeded = eg.Persist.isNeeded;\n\tvar StorageManager = eg.Persist.StorageManager;\n\n\teg.Persist = function Persist(key, value) {\n\t\t// when called as plain method\n\t\tif (!(this instanceof Persist)) {\n\t\t\tif (arguments.length === 0) {\n\t\t\t\treturn StorageManager.getStateByKey(GLOBAL_KEY);\n\t\t\t}\n\n\t\t\tif (arguments.length === 1 && typeof key !== \"string\") {\n\t\t\t\tvar value_ = key;\n\n\t\t\t\tStorageManager.setStateByKey(GLOBAL_KEY, value_);\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (arguments.length === 2) {\n\t\t\t\tStorageManager.setStateByKey(key, value);\n\t\t\t}\n\n\t\t\treturn StorageManager.getStateByKey(key);\n\t\t}\n\n\t\t// when called as constructer\n\t\tthis.key = key;\n\t\treturn undefined;\n\t};\n\teg.Persist.isNeeded = isNeeded;\n\teg.Persist.prototype = oldConstructor;\n\treturn eg.Persist;\n})(window.eg);\n\n/* eslint-enable */\n"],"names":["win","window","console","document","history","localStorage","location","sessionStorage","navigator","parseFloat","performance","eg","Persist","GLOBAL_KEY","oldConstructor","prototype","isNeeded","StorageManager","key","value","this","arguments","length","getStateByKey","setStateByKey","value_"],"mappings":"sMAAA,IAAMA,sBAAcC,QAA0BA,QAAW,GAGlCD,EAAIE,QACHF,EAAIG,SACLH,EAAII,QACCJ,EAAIK,aACRL,EAAIM,SACEN,EAAIO,eACTP,EAAIQ,UACHR,EAAIS,WACHT,EAAIU,mBCRhB,SAAUC,MACnBA,GAAOA,EAAGC,aAIXC,EAAa,mBACbC,EAAiBH,EAAGC,QAAQG,UAC5BC,EAAWL,EAAGC,QAAQI,SACtBC,EAAiBN,EAAGC,QAAQK,sBAEhCN,EAAGC,QAAU,SAASA,EAAQM,EAAKC,MAE5BC,gBAAgBR,OAoBjBM,IAAMA,UAnBe,IAArBG,UAAUC,cACNL,EAAeM,cAAcV,MAGZ,IAArBQ,UAAUC,QAA+B,iBAARJ,SAOZ,IAArBG,UAAUC,QACbL,EAAeO,cAAcN,EAAKC,GAG5BF,EAAeM,cAAcL,OAV/BO,EAASP,EAEbD,EAAeO,cAAcX,EAAYY,KAe5Cd,EAAGC,QAAQI,SAAWA,EACtBL,EAAGC,QAAQG,UAAYD,EAChBH,EAAGC,SArCI,CAsCZX,EAAOU"} \ No newline at end of file diff --git a/dist/persist.esm.js b/dist/persist.esm.js new file mode 100644 index 0000000..fcdb55f --- /dev/null +++ b/dist/persist.esm.js @@ -0,0 +1,329 @@ +/* +Copyright (c) 2017 NAVER Corp. +@egjs/persist project is licensed under the MIT license + +@egjs/persist JavaScript library + + +@version 2.1.3 +*/ +var win = typeof window !== "undefined" && window || {}; +var console$1 = win.console; +var document$1 = win.document; +var history = win.history; +var localStorage = win.localStorage; +var location = win.location; +var sessionStorage = win.sessionStorage; +var navigator = win.navigator; +var parseFloat = win.parseFloat; +var performance = win.performance; + +var userAgent = navigator ? navigator.userAgent : ""; +var TYPE_BACK_FORWARD = performance && performance.navigation.TYPE_BACK_FORWARD || 2; + +var isNeeded = function () { + var isIOS = new RegExp("iPhone|iPad", "i").test(userAgent); + var isMacSafari = new RegExp("Mac", "i").test(userAgent) && !new RegExp("Chrome", "i").test(userAgent) && new RegExp("Apple", "i").test(userAgent); + var isAndroid = new RegExp("Android ", "i").test(userAgent); + var isWebview = new RegExp("wv; |inapp;", "i").test(userAgent); + var androidVersion = isAndroid ? parseFloat(new RegExp("(Android)\\s([\\d_\\.]+|\\d_0)", "i").exec(userAgent)[2]) : undefined; + return !(isIOS || isMacSafari || isAndroid && (androidVersion <= 4.3 && isWebview || androidVersion < 3)); +}(); // In case of IE8, TYPE_BACK_FORWARD is undefined. + + +function isBackForwardNavigated() { + return performance && performance.navigation.type === TYPE_BACK_FORWARD; +} + +var CONST_PERSIST = "___persist___"; + +var isSupportState = history && "replaceState" in history && "state" in history; + +function isStorageAvailable(storage) { + if (!storage) { + return undefined; + } + + var TMP_KEY = "__tmp__" + CONST_PERSIST; + + try { + // In case of iOS safari private mode, calling setItem on storage throws error + storage.setItem(TMP_KEY, CONST_PERSIST); // In Chrome incognito mode, can not get saved value + // In IE8, calling storage.getItem occasionally makes "Permission denied" error + + return storage.getItem(TMP_KEY) === CONST_PERSIST; + } catch (e) { + return false; + } +} + +var storage = function () { + var strg; + + if (isStorageAvailable(sessionStorage)) { + strg = sessionStorage; + } else if (isStorageAvailable(localStorage)) { + strg = localStorage; + } + + return strg; +}(); + +function warnInvalidStorageValue() { + /* eslint-disable no-console */ + console.warn("window.history or session/localStorage has no valid " + "format data to be handled in persist."); + /* eslint-enable no-console */ +} + +function getStorageKey() { + return storage ? location.href + CONST_PERSIST : undefined; +} + +function getStorage() { + return storage; +} +/* + * Get state value + */ + + +function getState() { + var state; + var PERSIST_KEY = location.href + CONST_PERSIST; + var stateStr; + + if (storage) { + stateStr = storage.getItem(PERSIST_KEY); + } else if (history.state) { + if (typeof history.state === "object" && history.state !== null) { + stateStr = history.state[PERSIST_KEY]; + } else { + warnInvalidStorageValue(); + } + } else { + stateStr = history.state; + } // the storage is clean + + + if (stateStr === null) { + return {}; + } // "null" is not a valid + + + var isValidStateStr = typeof stateStr === "string" && stateStr.length > 0 && stateStr !== "null"; + + try { + state = JSON.parse(stateStr); // like '[ ... ]', '1', '1.234', '"123"' is also not valid + + var isValidType = !(typeof state !== "object" || state instanceof Array); + + if (!isValidStateStr || !isValidType) { + throw new Error(); + } + } catch (e) { + warnInvalidStorageValue(); + state = {}; + } // Note2 (Android 4.3) return value is null + + + return state; +} + +function getStateByKey(key) { + if (!isSupportState && !storage) { + return undefined; + } + + var result = getState()[key]; // some device returns "null" or undefined + + if (result === "null" || typeof result === "undefined") { + result = null; + } + + return result; +} +/* + * Set state value + */ + + +function setState(state) { + var PERSIST_KEY = (location ? location.href : "") + CONST_PERSIST; + + if (storage) { + if (state) { + storage.setItem(PERSIST_KEY, JSON.stringify(state)); + } else { + storage.removeItem(PERSIST_KEY); + } + } else { + try { + var historyState = !history || history.state == null ? {} : history.state; + + if (history && typeof historyState === "object") { + historyState[PERSIST_KEY] = JSON.stringify(state); + history.replaceState(historyState, document.title, location.href); + } else { + /* eslint-disable no-console */ + console.warn("To use a history object, it must be an object that is not a primitive type."); + /* eslint-enable no-console */ + } + } catch (e) { + /* eslint-disable no-console */ + console.warn(e.message); + /* eslint-enable no-console */ + } + } + + state ? win[CONST_PERSIST] = true : delete win[CONST_PERSIST]; +} + +function setStateByKey(key, data) { + if (!isSupportState && !storage) { + return; + } + + var beforeData = getState(); + beforeData[key] = data; + setState(beforeData); +} +/* + * flush current history state + */ + + +function reset() { + setState(null); +} // in case of reload + + +!isBackForwardNavigated() && reset(); + +var StorageManager = ({ + reset: reset, + setStateByKey: setStateByKey, + getStateByKey: getStateByKey, + getStorageKey: getStorageKey, + getStorage: getStorage +}); + +function setRec(obj, path, value) { + var _obj = obj; + + if (!_obj) { + _obj = isNaN(path[0]) ? {} : []; + } + + var head = path.shift(); + + if (path.length === 0) { + if (_obj instanceof Array && isNaN(head)) { + console$1.warn("Don't use key string on array"); + } + + _obj[head] = value; + return _obj; + } + + _obj[head] = setRec(_obj[head], path, value); + return _obj; +} +/** + * Get or store the current state of the web page using JSON. + * @ko 웹 페이지의 현재 상태를 JSON 형식으로 저장하거나 읽는다. + * @alias eg.Persist + * + * @support {"ie": "9+", "ch" : "latest", "ff" : "latest", "sf" : "latest" , "edge" : "latest", "ios" : "7+", "an" : "2.3+ (except 3.x)"} + */ + + +var Persist = +/*#__PURE__*/ +function () { + var Persist = + /*#__PURE__*/ + function () { + /** + * Constructor + * @param {String} key The key of the state information to be stored 저장할 상태 정보의 키 + **/ + function Persist(key, value) { + this.key = key; + } + /** + * Read value + * @param {String?} path target path + * @return {String|Number|Boolean|Object|Array} + */ + + + var _proto = Persist.prototype; + + _proto.get = function get(path) { + // find path + var globalState = getStateByKey(this.key); + + if (!path || path.length === 0) { + return globalState; + } + + var pathToken = path.split("."); + var currentItem = globalState; + var isTargetExist = true; + + for (var i = 0; i < pathToken.length; i++) { + if (!currentItem) { + isTargetExist = false; + break; + } + + currentItem = currentItem[pathToken[i]]; + } + + if (!isTargetExist || !currentItem) { + return null; + } + + return currentItem; + }; + /** + * Save value + * @param {String} path target path + * @param {String|Number|Boolean|Object|Array} value value to save + * @return {Persist} + */ + + + _proto.set = function set(path, value) { + // find path + var globalState = getStateByKey(this.key); + + if (path.length === 0) { + setStateByKey(this.key, value); + } else { + setStateByKey(this.key, setRec(globalState, path.split("."), value)); + } + + return this; + }; + /** + * @static + * Return whether you need "Persist" module by checking the bfCache support of the current browser + * @return {Boolean} + */ + + + Persist.isNeeded = function isNeeded$$1() { + return isNeeded; + }; + + return Persist; + }(); + + Persist.VERSION = "2.1.3"; + Persist.StorageManager = StorageManager; + return Persist; +}(); + +export default Persist; +//# sourceMappingURL=persist.esm.js.map diff --git a/dist/persist.esm.js.map b/dist/persist.esm.js.map new file mode 100644 index 0000000..84dd586 --- /dev/null +++ b/dist/persist.esm.js.map @@ -0,0 +1 @@ +{"version":3,"file":"persist.esm.js","sources":["../src/browser.js","../src/utils.js","../src/consts.js","../src/storageManager.js","../src/Persist.js"],"sourcesContent":["const win = (typeof window !== `undefined` && window) || {};\n\nexport {win as window};\nexport const console = win.console;\nexport const document = win.document;\nexport const history = win.history;\nexport const localStorage = win.localStorage;\nexport const location = win.location;\nexport const sessionStorage = win.sessionStorage;\nexport const navigator = win.navigator;\nexport const parseFloat = win.parseFloat;\nexport const performance = win.performance;\n","import {navigator, parseFloat, performance} from \"./browser\";\n\nconst userAgent = navigator ? navigator.userAgent : \"\";\nconst TYPE_BACK_FORWARD = (performance && performance.navigation.TYPE_BACK_FORWARD) || 2;\n\nconst isNeeded = (function() {\n\tconst isIOS = (new RegExp(\"iPhone|iPad\", \"i\")).test(userAgent);\n\tconst isMacSafari = (new RegExp(\"Mac\", \"i\")).test(userAgent) &&\n\t\t!(new RegExp(\"Chrome\", \"i\")).test(userAgent) &&\n\t\t(new RegExp(\"Apple\", \"i\")).test(userAgent);\n\tconst isAndroid = (new RegExp(\"Android \", \"i\")).test(userAgent);\n\tconst isWebview = (new RegExp(\"wv; |inapp;\", \"i\")).test(userAgent);\n\tconst androidVersion = isAndroid ? parseFloat(new RegExp(\n\t\t\"(Android)\\\\s([\\\\d_\\\\.]+|\\\\d_0)\", \"i\"\n\t).exec(userAgent)[2]) : undefined;\n\n\treturn !(isIOS ||\n\t\t\tisMacSafari ||\n\t\t\t(isAndroid &&\n\t\t\t\t((androidVersion <= 4.3 && isWebview) || androidVersion < 3)));\n})();\n\n// In case of IE8, TYPE_BACK_FORWARD is undefined.\nfunction isBackForwardNavigated() {\n\treturn performance && (performance.navigation.type === TYPE_BACK_FORWARD);\n}\n\nexport {\n\tisBackForwardNavigated,\n\tisNeeded,\n};\n","const CONST_PERSIST = \"___persist___\";\n\nexport default CONST_PERSIST;\n","import {window, history, location, sessionStorage, localStorage} from \"./browser\";\nimport {isBackForwardNavigated} from \"./utils\";\nimport CONST_PERSIST from \"./consts\";\n\nconst isSupportState = history && \"replaceState\" in history && \"state\" in history;\n\nfunction isStorageAvailable(storage) {\n\tif (!storage) {\n\t\treturn undefined;\n\t}\n\tconst TMP_KEY = `__tmp__${CONST_PERSIST}`;\n\n\ttry {\n\t\t// In case of iOS safari private mode, calling setItem on storage throws error\n\t\tstorage.setItem(TMP_KEY, CONST_PERSIST);\n\n\t\t// In Chrome incognito mode, can not get saved value\n\t\t// In IE8, calling storage.getItem occasionally makes \"Permission denied\" error\n\t\treturn storage.getItem(TMP_KEY) === CONST_PERSIST;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nconst storage = (function() {\n\tlet strg;\n\n\tif (isStorageAvailable(sessionStorage)) {\n\t\tstrg = sessionStorage;\n\t} else if (isStorageAvailable(localStorage)) {\n\t\tstrg = localStorage;\n\t}\n\n\treturn strg;\n})();\n\nfunction warnInvalidStorageValue() {\n\t/* eslint-disable no-console */\n\tconsole.warn(\"window.history or session/localStorage has no valid \" +\n\t\t\t\"format data to be handled in persist.\");\n\t/* eslint-enable no-console */\n}\n\nfunction getStorageKey() {\n\treturn storage ? location.href + CONST_PERSIST : undefined;\n}\n\nfunction getStorage() {\n\treturn storage;\n}\n\n/*\n * Get state value\n */\nfunction getState() {\n\tlet state;\n\tconst PERSIST_KEY = location.href + CONST_PERSIST;\n\tlet stateStr;\n\n\tif (storage) {\n\t\tstateStr = storage.getItem(PERSIST_KEY);\n\t} else if (history.state) {\n\t\tif (typeof history.state === \"object\" && history.state !== null) {\n\t\t\tstateStr = history.state[PERSIST_KEY];\n\t\t} else {\n\t\t\twarnInvalidStorageValue();\n\t\t}\n\t} else {\n\t\tstateStr = history.state;\n\t}\n\n\t// the storage is clean\n\tif (stateStr === null) {\n\t\treturn {};\n\t}\n\n\t// \"null\" is not a valid\n\tconst isValidStateStr = typeof stateStr === \"string\" &&\n\t\t\t\t\t\t\t\tstateStr.length > 0 && stateStr !== \"null\";\n\n\ttry {\n\t\tstate = JSON.parse(stateStr);\n\n\t\t// like '[ ... ]', '1', '1.234', '\"123\"' is also not valid\n\t\tconst isValidType = !(typeof state !== \"object\" || state instanceof Array);\n\n\t\tif (!isValidStateStr || !isValidType) {\n\t\t\tthrow new Error();\n\t\t}\n\t} catch (e) {\n\t\twarnInvalidStorageValue();\n\t\tstate = {};\n\t}\n\n\t// Note2 (Android 4.3) return value is null\n\treturn state;\n}\n\nfunction getStateByKey(key) {\n\tif (!isSupportState && !storage) {\n\t\treturn undefined;\n\t}\n\n\tlet result = getState()[key];\n\n\t// some device returns \"null\" or undefined\n\tif (result === \"null\" || typeof result === \"undefined\") {\n\t\tresult = null;\n\t}\n\treturn result;\n}\n\n/*\n * Set state value\n */\nfunction setState(state) {\n\tconst PERSIST_KEY = (location ? location.href : \"\") + CONST_PERSIST;\n\n\tif (storage) {\n\t\tif (state) {\n\t\t\tstorage.setItem(\n\t\t\t\tPERSIST_KEY, JSON.stringify(state));\n\t\t} else {\n\t\t\tstorage.removeItem(PERSIST_KEY);\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tconst historyState = !history || history.state == null ? {} : history.state;\n\n\t\t\tif (history && typeof historyState === \"object\") {\n\t\t\t\thistoryState[PERSIST_KEY] = JSON.stringify(state);\n\t\t\t\thistory.replaceState(\n\t\t\t\t\thistoryState,\n\t\t\t\t\tdocument.title,\n\t\t\t\t\tlocation.href\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t/* eslint-disable no-console */\n\t\t\t\tconsole.warn(\"To use a history object, it must be an object that is not a primitive type.\");\n\t\t\t\t/* eslint-enable no-console */\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t/* eslint-disable no-console */\n\t\t\tconsole.warn(e.message);\n\t\t\t/* eslint-enable no-console */\n\t\t}\n\t}\n\n\tstate ? window[CONST_PERSIST] = true : delete window[CONST_PERSIST];\n}\n\nfunction setStateByKey(key, data) {\n\tif (!isSupportState && !storage) {\n\t\treturn;\n\t}\n\n\tconst beforeData = getState();\n\n\tbeforeData[key] = data;\n\tsetState(beforeData);\n}\n\n/*\n * flush current history state\n */\nfunction reset() {\n\tsetState(null);\n}\n\n// in case of reload\n!isBackForwardNavigated() && reset();\n\nexport {\n\treset,\n\tsetStateByKey,\n\tgetStateByKey,\n\tgetStorageKey,\n\tgetStorage,\n};\n","import * as StorageManager from \"./storageManager\";\nimport {isNeeded} from \"./utils\";\nimport {console} from \"./browser\";\n\nfunction setRec(obj, path, value) {\n\tlet _obj = obj;\n\n\tif (!_obj) {\n\t\t_obj = isNaN(path[0]) ? {} : [];\n\t}\n\n\tconst head = path.shift();\n\n\tif (path.length === 0) {\n\t\tif (_obj instanceof Array && isNaN(head)) {\n\t\t\tconsole.warn(\"Don't use key string on array\");\n\t\t}\n\t\t_obj[head] = value;\n\t\treturn _obj;\n\t}\n\n\t_obj[head] = setRec(_obj[head], path, value);\n\treturn _obj;\n}\n\n/**\n * Get or store the current state of the web page using JSON.\n * @ko 웹 페이지의 현재 상태를 JSON 형식으로 저장하거나 읽는다.\n * @alias eg.Persist\n *\n * @support {\"ie\": \"9+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\" , \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.3+ (except 3.x)\"}\n */\nclass Persist {\n\tstatic VERSION = \"#__VERSION__#\";\n\tstatic StorageManager = StorageManager;\n\t/**\n\t* Constructor\n\t* @param {String} key The key of the state information to be stored 저장할 상태 정보의 키\n\t**/\n\tconstructor(key, value) {\n\t\tthis.key = key;\n\t}\n\n\t/**\n\t * Read value\n\t * @param {String?} path target path\n\t * @return {String|Number|Boolean|Object|Array}\n\t */\n\tget(path) {\n\t\t// find path\n\t\tconst globalState =\tStorageManager.getStateByKey(this.key);\n\n\t\tif (!path || path.length === 0) {\n\t\t\treturn globalState;\n\t\t}\n\n\t\tconst pathToken = path.split(\".\");\n\t\tlet currentItem = globalState;\n\t\tlet isTargetExist = true;\n\n\t\tfor (let i = 0; i < pathToken.length; i++) {\n\t\t\tif (!currentItem) {\n\t\t\t\tisTargetExist = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrentItem = currentItem[pathToken[i]];\n\t\t}\n\t\tif (!isTargetExist || !currentItem) {\n\t\t\treturn null;\n\t\t}\n\t\treturn currentItem;\n\t}\n\n\t/**\n\t * Save value\n\t * @param {String} path target path\n\t * @param {String|Number|Boolean|Object|Array} value value to save\n\t * @return {Persist}\n\t */\n\tset(path, value) {\n\t\t// find path\n\t\tconst globalState =\tStorageManager.getStateByKey(this.key);\n\n\t\tif (path.length === 0) {\n\t\t\tStorageManager.setStateByKey(this.key, value);\n\t\t} else {\n\t\t\tStorageManager.setStateByKey(\n\t\t\t\tthis.key,\n\t\t\t\tsetRec(globalState, path.split(\".\"), value)\n\t\t\t);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @static\n\t * Return whether you need \"Persist\" module by checking the bfCache support of the current browser\n\t * @return {Boolean}\n\t */\n\tstatic isNeeded() {\n\t\treturn isNeeded;\n\t}\n}\n\nexport default Persist;\n"],"names":["win","window","console","document","history","localStorage","location","sessionStorage","navigator","parseFloat","performance","userAgent","TYPE_BACK_FORWARD","navigation","isNeeded","isIOS","RegExp","test","isMacSafari","isAndroid","isWebview","androidVersion","exec","undefined","isBackForwardNavigated","type","CONST_PERSIST","isSupportState","isStorageAvailable","storage","TMP_KEY","setItem","getItem","e","strg","warnInvalidStorageValue","warn","getStorageKey","href","getStorage","getState","state","PERSIST_KEY","stateStr","isValidStateStr","length","JSON","parse","isValidType","Array","Error","getStateByKey","key","result","setState","stringify","removeItem","historyState","replaceState","title","message","setStateByKey","data","beforeData","reset","setRec","obj","path","value","_obj","isNaN","head","shift","Persist","get","globalState","StorageManager","pathToken","split","currentItem","isTargetExist","i","set","VERSION"],"mappings":";;;;;;;;;AAAA,IAAMA,GAAG,GAAI,OAAOC,MAAP,oBAAiCA,MAAlC,IAA6C,EAAzD;AAEA,AACO,IAAMC,SAAO,GAAGF,GAAG,CAACE,OAApB;AACP,AAAO,IAAMC,UAAQ,GAAGH,GAAG,CAACG,QAArB;AACP,AAAO,IAAMC,OAAO,GAAGJ,GAAG,CAACI,OAApB;AACP,AAAO,IAAMC,YAAY,GAAGL,GAAG,CAACK,YAAzB;AACP,AAAO,IAAMC,QAAQ,GAAGN,GAAG,CAACM,QAArB;AACP,AAAO,IAAMC,cAAc,GAAGP,GAAG,CAACO,cAA3B;AACP,AAAO,IAAMC,SAAS,GAAGR,GAAG,CAACQ,SAAtB;AACP,AAAO,IAAMC,UAAU,GAAGT,GAAG,CAACS,UAAvB;AACP,AAAO,IAAMC,WAAW,GAAGV,GAAG,CAACU,WAAxB;;ACTP,IAAMC,SAAS,GAAGH,SAAS,GAAGA,SAAS,CAACG,SAAb,GAAyB,EAApD;AACA,IAAMC,iBAAiB,GAAIF,WAAW,IAAIA,WAAW,CAACG,UAAZ,CAAuBD,iBAAvC,IAA6D,CAAvF;;AAEA,IAAME,QAAQ,GAAI,YAAW;MACtBC,KAAK,GAAI,IAAIC,MAAJ,CAAW,aAAX,EAA0B,GAA1B,CAAD,CAAiCC,IAAjC,CAAsCN,SAAtC,CAAd;MACMO,WAAW,GAAI,IAAIF,MAAJ,CAAW,KAAX,EAAkB,GAAlB,CAAD,CAAyBC,IAAzB,CAA8BN,SAA9B,KACnB,CAAE,IAAIK,MAAJ,CAAW,QAAX,EAAqB,GAArB,CAAD,CAA4BC,IAA5B,CAAiCN,SAAjC,CADkB,IAElB,IAAIK,MAAJ,CAAW,OAAX,EAAoB,GAApB,CAAD,CAA2BC,IAA3B,CAAgCN,SAAhC,CAFD;MAGMQ,SAAS,GAAI,IAAIH,MAAJ,CAAW,UAAX,EAAuB,GAAvB,CAAD,CAA8BC,IAA9B,CAAmCN,SAAnC,CAAlB;MACMS,SAAS,GAAI,IAAIJ,MAAJ,CAAW,aAAX,EAA0B,GAA1B,CAAD,CAAiCC,IAAjC,CAAsCN,SAAtC,CAAlB;MACMU,cAAc,GAAGF,SAAS,GAAGV,UAAU,CAAC,IAAIO,MAAJ,CAC7C,gCAD6C,EACX,GADW,EAE5CM,IAF4C,CAEvCX,SAFuC,EAE5B,CAF4B,CAAD,CAAb,GAERY,SAFxB;SAIO,EAAER,KAAK,IACZG,WADO,IAENC,SAAS,KACPE,cAAc,IAAI,GAAlB,IAAyBD,SAA1B,IAAwCC,cAAc,GAAG,CADjD,CAFL,CAAP;CAXgB,EAAjB;;;AAkBA,SAASG,sBAAT,GAAkC;SAC1Bd,WAAW,IAAKA,WAAW,CAACG,UAAZ,CAAuBY,IAAvB,KAAgCb,iBAAvD;;;ACxBD,IAAMc,aAAa,GAAG,eAAtB;;ACIA,IAAMC,cAAc,GAAGvB,OAAO,IAAI,kBAAkBA,OAA7B,IAAwC,WAAWA,OAA1E;;AAEA,SAASwB,kBAAT,CAA4BC,OAA5B,EAAqC;MAChC,CAACA,OAAL,EAAc;WACNN,SAAP;;;MAEKO,OAAO,eAAaJ,aAA1B;;MAEI;;IAEHG,OAAO,CAACE,OAAR,CAAgBD,OAAhB,EAAyBJ,aAAzB,EAFG;;;WAMIG,OAAO,CAACG,OAAR,CAAgBF,OAAhB,MAA6BJ,aAApC;GAND,CAOE,OAAOO,CAAP,EAAU;WACJ,KAAP;;;;AAIF,IAAMJ,OAAO,GAAI,YAAW;MACvBK,IAAJ;;MAEIN,kBAAkB,CAACrB,cAAD,CAAtB,EAAwC;IACvC2B,IAAI,GAAG3B,cAAP;GADD,MAEO,IAAIqB,kBAAkB,CAACvB,YAAD,CAAtB,EAAsC;IAC5C6B,IAAI,GAAG7B,YAAP;;;SAGM6B,IAAP;CATe,EAAhB;;AAYA,SAASC,uBAAT,GAAmC;;EAElCjC,OAAO,CAACkC,IAAR,CAAa,yDACX,uCADF;;;;AAKD,SAASC,aAAT,GAAyB;SACjBR,OAAO,GAAGvB,QAAQ,CAACgC,IAAT,GAAgBZ,aAAnB,GAAmCH,SAAjD;;;AAGD,SAASgB,UAAT,GAAsB;SACdV,OAAP;;;;;;;AAMD,SAASW,QAAT,GAAoB;MACfC,KAAJ;MACMC,WAAW,GAAGpC,QAAQ,CAACgC,IAAT,GAAgBZ,aAApC;MACIiB,QAAJ;;MAEId,OAAJ,EAAa;IACZc,QAAQ,GAAGd,OAAO,CAACG,OAAR,CAAgBU,WAAhB,CAAX;GADD,MAEO,IAAItC,OAAO,CAACqC,KAAZ,EAAmB;QACrB,OAAOrC,OAAO,CAACqC,KAAf,KAAyB,QAAzB,IAAqCrC,OAAO,CAACqC,KAAR,KAAkB,IAA3D,EAAiE;MAChEE,QAAQ,GAAGvC,OAAO,CAACqC,KAAR,CAAcC,WAAd,CAAX;KADD,MAEO;MACNP,uBAAuB;;GAJlB,MAMA;IACNQ,QAAQ,GAAGvC,OAAO,CAACqC,KAAnB;GAdkB;;;MAkBfE,QAAQ,KAAK,IAAjB,EAAuB;WACf,EAAP;GAnBkB;;;MAuBbC,eAAe,GAAG,OAAOD,QAAP,KAAoB,QAApB,IACjBA,QAAQ,CAACE,MAAT,GAAkB,CADD,IACMF,QAAQ,KAAK,MAD3C;;MAGI;IACHF,KAAK,GAAGK,IAAI,CAACC,KAAL,CAAWJ,QAAX,CAAR,CADG;;QAIGK,WAAW,GAAG,EAAE,OAAOP,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,YAAYQ,KAAhD,CAApB;;QAEI,CAACL,eAAD,IAAoB,CAACI,WAAzB,EAAsC;YAC/B,IAAIE,KAAJ,EAAN;;GAPF,CASE,OAAOjB,CAAP,EAAU;IACXE,uBAAuB;IACvBM,KAAK,GAAG,EAAR;GArCkB;;;SAyCZA,KAAP;;;AAGD,SAASU,aAAT,CAAuBC,GAAvB,EAA4B;MACvB,CAACzB,cAAD,IAAmB,CAACE,OAAxB,EAAiC;WACzBN,SAAP;;;MAGG8B,MAAM,GAAGb,QAAQ,GAAGY,GAAH,CAArB,CAL2B;;MAQvBC,MAAM,KAAK,MAAX,IAAqB,OAAOA,MAAP,KAAkB,WAA3C,EAAwD;IACvDA,MAAM,GAAG,IAAT;;;SAEMA,MAAP;;;;;;;AAMD,SAASC,QAAT,CAAkBb,KAAlB,EAAyB;MAClBC,WAAW,GAAG,CAACpC,QAAQ,GAAGA,QAAQ,CAACgC,IAAZ,GAAmB,EAA5B,IAAkCZ,aAAtD;;MAEIG,OAAJ,EAAa;QACRY,KAAJ,EAAW;MACVZ,OAAO,CAACE,OAAR,CACCW,WADD,EACcI,IAAI,CAACS,SAAL,CAAed,KAAf,CADd;KADD,MAGO;MACNZ,OAAO,CAAC2B,UAAR,CAAmBd,WAAnB;;GALF,MAOO;QACF;UACGe,YAAY,GAAG,CAACrD,OAAD,IAAYA,OAAO,CAACqC,KAAR,IAAiB,IAA7B,GAAoC,EAApC,GAAyCrC,OAAO,CAACqC,KAAtE;;UAEIrC,OAAO,IAAI,OAAOqD,YAAP,KAAwB,QAAvC,EAAiD;QAChDA,YAAY,CAACf,WAAD,CAAZ,GAA4BI,IAAI,CAACS,SAAL,CAAed,KAAf,CAA5B;QACArC,OAAO,CAACsD,YAAR,CACCD,YADD,EAECtD,QAAQ,CAACwD,KAFV,EAGCrD,QAAQ,CAACgC,IAHV;OAFD,MAOO;;QAENpC,OAAO,CAACkC,IAAR,CAAa,6EAAb;;;KAZF,CAeE,OAAOH,CAAP,EAAU;;MAEX/B,OAAO,CAACkC,IAAR,CAAaH,CAAC,CAAC2B,OAAf;;;;;EAKFnB,KAAK,GAAGxC,GAAM,CAACyB,aAAD,CAAN,GAAwB,IAA3B,GAAkC,OAAOzB,GAAM,CAACyB,aAAD,CAApD;;;AAGD,SAASmC,aAAT,CAAuBT,GAAvB,EAA4BU,IAA5B,EAAkC;MAC7B,CAACnC,cAAD,IAAmB,CAACE,OAAxB,EAAiC;;;;MAI3BkC,UAAU,GAAGvB,QAAQ,EAA3B;EAEAuB,UAAU,CAACX,GAAD,CAAV,GAAkBU,IAAlB;EACAR,QAAQ,CAACS,UAAD,CAAR;;;;;;;AAMD,SAASC,KAAT,GAAiB;EAChBV,QAAQ,CAAC,IAAD,CAAR;;;;AAID,CAAC9B,sBAAsB,EAAvB,IAA6BwC,KAAK,EAAlC;;;;;;;;;;ACtKA,SAASC,MAAT,CAAgBC,GAAhB,EAAqBC,IAArB,EAA2BC,KAA3B,EAAkC;MAC7BC,IAAI,GAAGH,GAAX;;MAEI,CAACG,IAAL,EAAW;IACVA,IAAI,GAAGC,KAAK,CAACH,IAAI,CAAC,CAAD,CAAL,CAAL,GAAiB,EAAjB,GAAsB,EAA7B;;;MAGKI,IAAI,GAAGJ,IAAI,CAACK,KAAL,EAAb;;MAEIL,IAAI,CAACtB,MAAL,KAAgB,CAApB,EAAuB;QAClBwB,IAAI,YAAYpB,KAAhB,IAAyBqB,KAAK,CAACC,IAAD,CAAlC,EAA0C;MACzCrE,SAAO,CAACkC,IAAR,CAAa,+BAAb;;;IAEDiC,IAAI,CAACE,IAAD,CAAJ,GAAaH,KAAb;WACOC,IAAP;;;EAGDA,IAAI,CAACE,IAAD,CAAJ,GAAaN,MAAM,CAACI,IAAI,CAACE,IAAD,CAAL,EAAaJ,IAAb,EAAmBC,KAAnB,CAAnB;SACOC,IAAP;;;;;;;;;;;IAUKI;;;MAAAA;;;;;;;qBAOOrB,GAAZ,EAAiBgB,KAAjB,EAAwB;WAClBhB,GAAL,GAAWA,GAAX;;;;;;;;;;;WAQDsB,mBAAIP,MAAM;;UAEHQ,WAAW,GAAGC,aAAA,CAA6B,KAAKxB,GAAlC,CAApB;;UAEI,CAACe,IAAD,IAASA,IAAI,CAACtB,MAAL,KAAgB,CAA7B,EAAgC;eACxB8B,WAAP;;;UAGKE,SAAS,GAAGV,IAAI,CAACW,KAAL,CAAW,GAAX,CAAlB;UACIC,WAAW,GAAGJ,WAAlB;UACIK,aAAa,GAAG,IAApB;;WAEK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGJ,SAAS,CAAChC,MAA9B,EAAsCoC,CAAC,EAAvC,EAA2C;YACtC,CAACF,WAAL,EAAkB;UACjBC,aAAa,GAAG,KAAhB;;;;QAGDD,WAAW,GAAGA,WAAW,CAACF,SAAS,CAACI,CAAD,CAAV,CAAzB;;;UAEG,CAACD,aAAD,IAAkB,CAACD,WAAvB,EAAoC;eAC5B,IAAP;;;aAEMA,WAAP;;;;;;;;;;WASDG,mBAAIf,MAAMC,OAAO;;UAEVO,WAAW,GAAGC,aAAA,CAA6B,KAAKxB,GAAlC,CAApB;;UAEIe,IAAI,CAACtB,MAAL,KAAgB,CAApB,EAAuB;QACtB+B,aAAA,CAA6B,KAAKxB,GAAlC,EAAuCgB,KAAvC;OADD,MAEO;QACNQ,aAAA,CACC,KAAKxB,GADN,EAECa,MAAM,CAACU,WAAD,EAAcR,IAAI,CAACW,KAAL,CAAW,GAAX,CAAd,EAA+BV,KAA/B,CAFP;;;aAMM,IAAP;;;;;;;;;YAQMtD,kCAAW;aACVA,QAAP;;;;;;EArEI2D,QACEU,UAAU;EADZV,QAEEG,iBAAiBA;SAFnBH;;;;;"} \ No newline at end of file diff --git a/dist/persist.js b/dist/persist.js new file mode 100644 index 0000000..b879eab --- /dev/null +++ b/dist/persist.js @@ -0,0 +1,337 @@ +/* +Copyright (c) 2017 NAVER Corp. +@egjs/persist project is licensed under the MIT license + +@egjs/persist JavaScript library + + +@version 2.1.3 +*/ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.eg = global.eg || {}, global.eg.Persist = factory()); +}(this, (function () { 'use strict'; + + var win = typeof window !== "undefined" && window || {}; + var console$1 = win.console; + var document$1 = win.document; + var history = win.history; + var localStorage = win.localStorage; + var location = win.location; + var sessionStorage = win.sessionStorage; + var navigator = win.navigator; + var parseFloat = win.parseFloat; + var performance = win.performance; + + var userAgent = navigator ? navigator.userAgent : ""; + var TYPE_BACK_FORWARD = performance && performance.navigation.TYPE_BACK_FORWARD || 2; + + var isNeeded = function () { + var isIOS = new RegExp("iPhone|iPad", "i").test(userAgent); + var isMacSafari = new RegExp("Mac", "i").test(userAgent) && !new RegExp("Chrome", "i").test(userAgent) && new RegExp("Apple", "i").test(userAgent); + var isAndroid = new RegExp("Android ", "i").test(userAgent); + var isWebview = new RegExp("wv; |inapp;", "i").test(userAgent); + var androidVersion = isAndroid ? parseFloat(new RegExp("(Android)\\s([\\d_\\.]+|\\d_0)", "i").exec(userAgent)[2]) : undefined; + return !(isIOS || isMacSafari || isAndroid && (androidVersion <= 4.3 && isWebview || androidVersion < 3)); + }(); // In case of IE8, TYPE_BACK_FORWARD is undefined. + + + function isBackForwardNavigated() { + return performance && performance.navigation.type === TYPE_BACK_FORWARD; + } + + var CONST_PERSIST = "___persist___"; + + var isSupportState = history && "replaceState" in history && "state" in history; + + function isStorageAvailable(storage) { + if (!storage) { + return undefined; + } + + var TMP_KEY = "__tmp__" + CONST_PERSIST; + + try { + // In case of iOS safari private mode, calling setItem on storage throws error + storage.setItem(TMP_KEY, CONST_PERSIST); // In Chrome incognito mode, can not get saved value + // In IE8, calling storage.getItem occasionally makes "Permission denied" error + + return storage.getItem(TMP_KEY) === CONST_PERSIST; + } catch (e) { + return false; + } + } + + var storage = function () { + var strg; + + if (isStorageAvailable(sessionStorage)) { + strg = sessionStorage; + } else if (isStorageAvailable(localStorage)) { + strg = localStorage; + } + + return strg; + }(); + + function warnInvalidStorageValue() { + /* eslint-disable no-console */ + console.warn("window.history or session/localStorage has no valid " + "format data to be handled in persist."); + /* eslint-enable no-console */ + } + + function getStorageKey() { + return storage ? location.href + CONST_PERSIST : undefined; + } + + function getStorage() { + return storage; + } + /* + * Get state value + */ + + + function getState() { + var state; + var PERSIST_KEY = location.href + CONST_PERSIST; + var stateStr; + + if (storage) { + stateStr = storage.getItem(PERSIST_KEY); + } else if (history.state) { + if (typeof history.state === "object" && history.state !== null) { + stateStr = history.state[PERSIST_KEY]; + } else { + warnInvalidStorageValue(); + } + } else { + stateStr = history.state; + } // the storage is clean + + + if (stateStr === null) { + return {}; + } // "null" is not a valid + + + var isValidStateStr = typeof stateStr === "string" && stateStr.length > 0 && stateStr !== "null"; + + try { + state = JSON.parse(stateStr); // like '[ ... ]', '1', '1.234', '"123"' is also not valid + + var isValidType = !(typeof state !== "object" || state instanceof Array); + + if (!isValidStateStr || !isValidType) { + throw new Error(); + } + } catch (e) { + warnInvalidStorageValue(); + state = {}; + } // Note2 (Android 4.3) return value is null + + + return state; + } + + function getStateByKey(key) { + if (!isSupportState && !storage) { + return undefined; + } + + var result = getState()[key]; // some device returns "null" or undefined + + if (result === "null" || typeof result === "undefined") { + result = null; + } + + return result; + } + /* + * Set state value + */ + + + function setState(state) { + var PERSIST_KEY = (location ? location.href : "") + CONST_PERSIST; + + if (storage) { + if (state) { + storage.setItem(PERSIST_KEY, JSON.stringify(state)); + } else { + storage.removeItem(PERSIST_KEY); + } + } else { + try { + var historyState = !history || history.state == null ? {} : history.state; + + if (history && typeof historyState === "object") { + historyState[PERSIST_KEY] = JSON.stringify(state); + history.replaceState(historyState, document.title, location.href); + } else { + /* eslint-disable no-console */ + console.warn("To use a history object, it must be an object that is not a primitive type."); + /* eslint-enable no-console */ + } + } catch (e) { + /* eslint-disable no-console */ + console.warn(e.message); + /* eslint-enable no-console */ + } + } + + state ? win[CONST_PERSIST] = true : delete win[CONST_PERSIST]; + } + + function setStateByKey(key, data) { + if (!isSupportState && !storage) { + return; + } + + var beforeData = getState(); + beforeData[key] = data; + setState(beforeData); + } + /* + * flush current history state + */ + + + function reset() { + setState(null); + } // in case of reload + + + !isBackForwardNavigated() && reset(); + + var StorageManager = ({ + reset: reset, + setStateByKey: setStateByKey, + getStateByKey: getStateByKey, + getStorageKey: getStorageKey, + getStorage: getStorage + }); + + function setRec(obj, path, value) { + var _obj = obj; + + if (!_obj) { + _obj = isNaN(path[0]) ? {} : []; + } + + var head = path.shift(); + + if (path.length === 0) { + if (_obj instanceof Array && isNaN(head)) { + console$1.warn("Don't use key string on array"); + } + + _obj[head] = value; + return _obj; + } + + _obj[head] = setRec(_obj[head], path, value); + return _obj; + } + /** + * Get or store the current state of the web page using JSON. + * @ko 웹 페이지의 현재 상태를 JSON 형식으로 저장하거나 읽는다. + * @alias eg.Persist + * + * @support {"ie": "9+", "ch" : "latest", "ff" : "latest", "sf" : "latest" , "edge" : "latest", "ios" : "7+", "an" : "2.3+ (except 3.x)"} + */ + + + var Persist = + /*#__PURE__*/ + function () { + var Persist = + /*#__PURE__*/ + function () { + /** + * Constructor + * @param {String} key The key of the state information to be stored 저장할 상태 정보의 키 + **/ + function Persist(key, value) { + this.key = key; + } + /** + * Read value + * @param {String?} path target path + * @return {String|Number|Boolean|Object|Array} + */ + + + var _proto = Persist.prototype; + + _proto.get = function get(path) { + // find path + var globalState = getStateByKey(this.key); + + if (!path || path.length === 0) { + return globalState; + } + + var pathToken = path.split("."); + var currentItem = globalState; + var isTargetExist = true; + + for (var i = 0; i < pathToken.length; i++) { + if (!currentItem) { + isTargetExist = false; + break; + } + + currentItem = currentItem[pathToken[i]]; + } + + if (!isTargetExist || !currentItem) { + return null; + } + + return currentItem; + }; + /** + * Save value + * @param {String} path target path + * @param {String|Number|Boolean|Object|Array} value value to save + * @return {Persist} + */ + + + _proto.set = function set(path, value) { + // find path + var globalState = getStateByKey(this.key); + + if (path.length === 0) { + setStateByKey(this.key, value); + } else { + setStateByKey(this.key, setRec(globalState, path.split("."), value)); + } + + return this; + }; + /** + * @static + * Return whether you need "Persist" module by checking the bfCache support of the current browser + * @return {Boolean} + */ + + + Persist.isNeeded = function isNeeded$$1() { + return isNeeded; + }; + + return Persist; + }(); + + Persist.VERSION = "2.1.3"; + Persist.StorageManager = StorageManager; + return Persist; + }(); + + return Persist; + +}))); +//# sourceMappingURL=persist.js.map diff --git a/dist/persist.js.map b/dist/persist.js.map new file mode 100644 index 0000000..56f8401 --- /dev/null +++ b/dist/persist.js.map @@ -0,0 +1 @@ +{"version":3,"file":"persist.js","sources":["../src/browser.js","../src/utils.js","../src/consts.js","../src/storageManager.js","../src/Persist.js"],"sourcesContent":["const win = (typeof window !== `undefined` && window) || {};\n\nexport {win as window};\nexport const console = win.console;\nexport const document = win.document;\nexport const history = win.history;\nexport const localStorage = win.localStorage;\nexport const location = win.location;\nexport const sessionStorage = win.sessionStorage;\nexport const navigator = win.navigator;\nexport const parseFloat = win.parseFloat;\nexport const performance = win.performance;\n","import {navigator, parseFloat, performance} from \"./browser\";\n\nconst userAgent = navigator ? navigator.userAgent : \"\";\nconst TYPE_BACK_FORWARD = (performance && performance.navigation.TYPE_BACK_FORWARD) || 2;\n\nconst isNeeded = (function() {\n\tconst isIOS = (new RegExp(\"iPhone|iPad\", \"i\")).test(userAgent);\n\tconst isMacSafari = (new RegExp(\"Mac\", \"i\")).test(userAgent) &&\n\t\t!(new RegExp(\"Chrome\", \"i\")).test(userAgent) &&\n\t\t(new RegExp(\"Apple\", \"i\")).test(userAgent);\n\tconst isAndroid = (new RegExp(\"Android \", \"i\")).test(userAgent);\n\tconst isWebview = (new RegExp(\"wv; |inapp;\", \"i\")).test(userAgent);\n\tconst androidVersion = isAndroid ? parseFloat(new RegExp(\n\t\t\"(Android)\\\\s([\\\\d_\\\\.]+|\\\\d_0)\", \"i\"\n\t).exec(userAgent)[2]) : undefined;\n\n\treturn !(isIOS ||\n\t\t\tisMacSafari ||\n\t\t\t(isAndroid &&\n\t\t\t\t((androidVersion <= 4.3 && isWebview) || androidVersion < 3)));\n})();\n\n// In case of IE8, TYPE_BACK_FORWARD is undefined.\nfunction isBackForwardNavigated() {\n\treturn performance && (performance.navigation.type === TYPE_BACK_FORWARD);\n}\n\nexport {\n\tisBackForwardNavigated,\n\tisNeeded,\n};\n","const CONST_PERSIST = \"___persist___\";\n\nexport default CONST_PERSIST;\n","import {window, history, location, sessionStorage, localStorage} from \"./browser\";\nimport {isBackForwardNavigated} from \"./utils\";\nimport CONST_PERSIST from \"./consts\";\n\nconst isSupportState = history && \"replaceState\" in history && \"state\" in history;\n\nfunction isStorageAvailable(storage) {\n\tif (!storage) {\n\t\treturn undefined;\n\t}\n\tconst TMP_KEY = `__tmp__${CONST_PERSIST}`;\n\n\ttry {\n\t\t// In case of iOS safari private mode, calling setItem on storage throws error\n\t\tstorage.setItem(TMP_KEY, CONST_PERSIST);\n\n\t\t// In Chrome incognito mode, can not get saved value\n\t\t// In IE8, calling storage.getItem occasionally makes \"Permission denied\" error\n\t\treturn storage.getItem(TMP_KEY) === CONST_PERSIST;\n\t} catch (e) {\n\t\treturn false;\n\t}\n}\n\nconst storage = (function() {\n\tlet strg;\n\n\tif (isStorageAvailable(sessionStorage)) {\n\t\tstrg = sessionStorage;\n\t} else if (isStorageAvailable(localStorage)) {\n\t\tstrg = localStorage;\n\t}\n\n\treturn strg;\n})();\n\nfunction warnInvalidStorageValue() {\n\t/* eslint-disable no-console */\n\tconsole.warn(\"window.history or session/localStorage has no valid \" +\n\t\t\t\"format data to be handled in persist.\");\n\t/* eslint-enable no-console */\n}\n\nfunction getStorageKey() {\n\treturn storage ? location.href + CONST_PERSIST : undefined;\n}\n\nfunction getStorage() {\n\treturn storage;\n}\n\n/*\n * Get state value\n */\nfunction getState() {\n\tlet state;\n\tconst PERSIST_KEY = location.href + CONST_PERSIST;\n\tlet stateStr;\n\n\tif (storage) {\n\t\tstateStr = storage.getItem(PERSIST_KEY);\n\t} else if (history.state) {\n\t\tif (typeof history.state === \"object\" && history.state !== null) {\n\t\t\tstateStr = history.state[PERSIST_KEY];\n\t\t} else {\n\t\t\twarnInvalidStorageValue();\n\t\t}\n\t} else {\n\t\tstateStr = history.state;\n\t}\n\n\t// the storage is clean\n\tif (stateStr === null) {\n\t\treturn {};\n\t}\n\n\t// \"null\" is not a valid\n\tconst isValidStateStr = typeof stateStr === \"string\" &&\n\t\t\t\t\t\t\t\tstateStr.length > 0 && stateStr !== \"null\";\n\n\ttry {\n\t\tstate = JSON.parse(stateStr);\n\n\t\t// like '[ ... ]', '1', '1.234', '\"123\"' is also not valid\n\t\tconst isValidType = !(typeof state !== \"object\" || state instanceof Array);\n\n\t\tif (!isValidStateStr || !isValidType) {\n\t\t\tthrow new Error();\n\t\t}\n\t} catch (e) {\n\t\twarnInvalidStorageValue();\n\t\tstate = {};\n\t}\n\n\t// Note2 (Android 4.3) return value is null\n\treturn state;\n}\n\nfunction getStateByKey(key) {\n\tif (!isSupportState && !storage) {\n\t\treturn undefined;\n\t}\n\n\tlet result = getState()[key];\n\n\t// some device returns \"null\" or undefined\n\tif (result === \"null\" || typeof result === \"undefined\") {\n\t\tresult = null;\n\t}\n\treturn result;\n}\n\n/*\n * Set state value\n */\nfunction setState(state) {\n\tconst PERSIST_KEY = (location ? location.href : \"\") + CONST_PERSIST;\n\n\tif (storage) {\n\t\tif (state) {\n\t\t\tstorage.setItem(\n\t\t\t\tPERSIST_KEY, JSON.stringify(state));\n\t\t} else {\n\t\t\tstorage.removeItem(PERSIST_KEY);\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tconst historyState = !history || history.state == null ? {} : history.state;\n\n\t\t\tif (history && typeof historyState === \"object\") {\n\t\t\t\thistoryState[PERSIST_KEY] = JSON.stringify(state);\n\t\t\t\thistory.replaceState(\n\t\t\t\t\thistoryState,\n\t\t\t\t\tdocument.title,\n\t\t\t\t\tlocation.href\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t/* eslint-disable no-console */\n\t\t\t\tconsole.warn(\"To use a history object, it must be an object that is not a primitive type.\");\n\t\t\t\t/* eslint-enable no-console */\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t/* eslint-disable no-console */\n\t\t\tconsole.warn(e.message);\n\t\t\t/* eslint-enable no-console */\n\t\t}\n\t}\n\n\tstate ? window[CONST_PERSIST] = true : delete window[CONST_PERSIST];\n}\n\nfunction setStateByKey(key, data) {\n\tif (!isSupportState && !storage) {\n\t\treturn;\n\t}\n\n\tconst beforeData = getState();\n\n\tbeforeData[key] = data;\n\tsetState(beforeData);\n}\n\n/*\n * flush current history state\n */\nfunction reset() {\n\tsetState(null);\n}\n\n// in case of reload\n!isBackForwardNavigated() && reset();\n\nexport {\n\treset,\n\tsetStateByKey,\n\tgetStateByKey,\n\tgetStorageKey,\n\tgetStorage,\n};\n","import * as StorageManager from \"./storageManager\";\nimport {isNeeded} from \"./utils\";\nimport {console} from \"./browser\";\n\nfunction setRec(obj, path, value) {\n\tlet _obj = obj;\n\n\tif (!_obj) {\n\t\t_obj = isNaN(path[0]) ? {} : [];\n\t}\n\n\tconst head = path.shift();\n\n\tif (path.length === 0) {\n\t\tif (_obj instanceof Array && isNaN(head)) {\n\t\t\tconsole.warn(\"Don't use key string on array\");\n\t\t}\n\t\t_obj[head] = value;\n\t\treturn _obj;\n\t}\n\n\t_obj[head] = setRec(_obj[head], path, value);\n\treturn _obj;\n}\n\n/**\n * Get or store the current state of the web page using JSON.\n * @ko 웹 페이지의 현재 상태를 JSON 형식으로 저장하거나 읽는다.\n * @alias eg.Persist\n *\n * @support {\"ie\": \"9+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\" , \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.3+ (except 3.x)\"}\n */\nclass Persist {\n\tstatic VERSION = \"#__VERSION__#\";\n\tstatic StorageManager = StorageManager;\n\t/**\n\t* Constructor\n\t* @param {String} key The key of the state information to be stored 저장할 상태 정보의 키\n\t**/\n\tconstructor(key, value) {\n\t\tthis.key = key;\n\t}\n\n\t/**\n\t * Read value\n\t * @param {String?} path target path\n\t * @return {String|Number|Boolean|Object|Array}\n\t */\n\tget(path) {\n\t\t// find path\n\t\tconst globalState =\tStorageManager.getStateByKey(this.key);\n\n\t\tif (!path || path.length === 0) {\n\t\t\treturn globalState;\n\t\t}\n\n\t\tconst pathToken = path.split(\".\");\n\t\tlet currentItem = globalState;\n\t\tlet isTargetExist = true;\n\n\t\tfor (let i = 0; i < pathToken.length; i++) {\n\t\t\tif (!currentItem) {\n\t\t\t\tisTargetExist = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrentItem = currentItem[pathToken[i]];\n\t\t}\n\t\tif (!isTargetExist || !currentItem) {\n\t\t\treturn null;\n\t\t}\n\t\treturn currentItem;\n\t}\n\n\t/**\n\t * Save value\n\t * @param {String} path target path\n\t * @param {String|Number|Boolean|Object|Array} value value to save\n\t * @return {Persist}\n\t */\n\tset(path, value) {\n\t\t// find path\n\t\tconst globalState =\tStorageManager.getStateByKey(this.key);\n\n\t\tif (path.length === 0) {\n\t\t\tStorageManager.setStateByKey(this.key, value);\n\t\t} else {\n\t\t\tStorageManager.setStateByKey(\n\t\t\t\tthis.key,\n\t\t\t\tsetRec(globalState, path.split(\".\"), value)\n\t\t\t);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @static\n\t * Return whether you need \"Persist\" module by checking the bfCache support of the current browser\n\t * @return {Boolean}\n\t */\n\tstatic isNeeded() {\n\t\treturn isNeeded;\n\t}\n}\n\nexport default Persist;\n"],"names":["win","window","console","document","history","localStorage","location","sessionStorage","navigator","parseFloat","performance","userAgent","TYPE_BACK_FORWARD","navigation","isNeeded","isIOS","RegExp","test","isMacSafari","isAndroid","isWebview","androidVersion","exec","undefined","isBackForwardNavigated","type","CONST_PERSIST","isSupportState","isStorageAvailable","storage","TMP_KEY","setItem","getItem","e","strg","warnInvalidStorageValue","warn","getStorageKey","href","getStorage","getState","state","PERSIST_KEY","stateStr","isValidStateStr","length","JSON","parse","isValidType","Array","Error","getStateByKey","key","result","setState","stringify","removeItem","historyState","replaceState","title","message","setStateByKey","data","beforeData","reset","setRec","obj","path","value","_obj","isNaN","head","shift","Persist","get","globalState","StorageManager","pathToken","split","currentItem","isTargetExist","i","set","VERSION"],"mappings":"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"} \ No newline at end of file diff --git a/dist/persist.min.js b/dist/persist.min.js new file mode 100644 index 0000000..6632a54 --- /dev/null +++ b/dist/persist.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e.eg=e.eg||{},e.eg.Persist=t())}(this,function(){"use strict";var e,t,n,r,i,o="undefined"!=typeof window&&window||{},a=o.console,s=(o.document,o.history),u=o.localStorage,f=o.location,c=o.sessionStorage,l=o.navigator,g=o.parseFloat,p=o.performance,y=l?l.userAgent:"",d=p&&p.navigation.TYPE_BACK_FORWARD||2,h=(e=new RegExp("iPhone|iPad","i").test(y),t=new RegExp("Mac","i").test(y)&&!new RegExp("Chrome","i").test(y)&&new RegExp("Apple","i").test(y),n=new RegExp("Android ","i").test(y),r=new RegExp("wv; |inapp;","i").test(y),i=n?g(new RegExp("(Android)\\s([\\d_\\.]+|\\d_0)","i").exec(y)[2]):void 0,!(e||t||n&&(i<=4.3&&r||i<3)));var v="___persist___",w=s&&"replaceState"in s&&"state"in s;function m(e){if(e){var t="__tmp__"+v;try{return e.setItem(t,v),e.getItem(t)===v}catch(e){return!1}}}var S,_=(m(c)?S=c:m(u)&&(S=u),S);function x(){console.warn("window.history or session/localStorage has no valid format data to be handled in persist.")}function E(){var t,e,n=f.href+v;if(_?e=_.getItem(n):s.state?"object"==typeof s.state&&null!==s.state?e=s.state[n]:x():e=s.state,null===e)return{};var r="string"==typeof e&&0 0 && stateStr !== \"null\";\n\n\ttry {\n\t\tstate = JSON.parse(stateStr);\n\n\t\t// like '[ ... ]', '1', '1.234', '\"123\"' is also not valid\n\t\tconst isValidType = !(typeof state !== \"object\" || state instanceof Array);\n\n\t\tif (!isValidStateStr || !isValidType) {\n\t\t\tthrow new Error();\n\t\t}\n\t} catch (e) {\n\t\twarnInvalidStorageValue();\n\t\tstate = {};\n\t}\n\n\t// Note2 (Android 4.3) return value is null\n\treturn state;\n}\n\nfunction getStateByKey(key) {\n\tif (!isSupportState && !storage) {\n\t\treturn undefined;\n\t}\n\n\tlet result = getState()[key];\n\n\t// some device returns \"null\" or undefined\n\tif (result === \"null\" || typeof result === \"undefined\") {\n\t\tresult = null;\n\t}\n\treturn result;\n}\n\n/*\n * Set state value\n */\nfunction setState(state) {\n\tconst PERSIST_KEY = (location ? location.href : \"\") + CONST_PERSIST;\n\n\tif (storage) {\n\t\tif (state) {\n\t\t\tstorage.setItem(\n\t\t\t\tPERSIST_KEY, JSON.stringify(state));\n\t\t} else {\n\t\t\tstorage.removeItem(PERSIST_KEY);\n\t\t}\n\t} else {\n\t\ttry {\n\t\t\tconst historyState = !history || history.state == null ? {} : history.state;\n\n\t\t\tif (history && typeof historyState === \"object\") {\n\t\t\t\thistoryState[PERSIST_KEY] = JSON.stringify(state);\n\t\t\t\thistory.replaceState(\n\t\t\t\t\thistoryState,\n\t\t\t\t\tdocument.title,\n\t\t\t\t\tlocation.href\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t/* eslint-disable no-console */\n\t\t\t\tconsole.warn(\"To use a history object, it must be an object that is not a primitive type.\");\n\t\t\t\t/* eslint-enable no-console */\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t/* eslint-disable no-console */\n\t\t\tconsole.warn(e.message);\n\t\t\t/* eslint-enable no-console */\n\t\t}\n\t}\n\n\tstate ? window[CONST_PERSIST] = true : delete window[CONST_PERSIST];\n}\n\nfunction setStateByKey(key, data) {\n\tif (!isSupportState && !storage) {\n\t\treturn;\n\t}\n\n\tconst beforeData = getState();\n\n\tbeforeData[key] = data;\n\tsetState(beforeData);\n}\n\n/*\n * flush current history state\n */\nfunction reset() {\n\tsetState(null);\n}\n\n// in case of reload\n!isBackForwardNavigated() && reset();\n\nexport {\n\treset,\n\tsetStateByKey,\n\tgetStateByKey,\n\tgetStorageKey,\n\tgetStorage,\n};\n","import * as StorageManager from \"./storageManager\";\nimport {isNeeded} from \"./utils\";\nimport {console} from \"./browser\";\n\nfunction setRec(obj, path, value) {\n\tlet _obj = obj;\n\n\tif (!_obj) {\n\t\t_obj = isNaN(path[0]) ? {} : [];\n\t}\n\n\tconst head = path.shift();\n\n\tif (path.length === 0) {\n\t\tif (_obj instanceof Array && isNaN(head)) {\n\t\t\tconsole.warn(\"Don't use key string on array\");\n\t\t}\n\t\t_obj[head] = value;\n\t\treturn _obj;\n\t}\n\n\t_obj[head] = setRec(_obj[head], path, value);\n\treturn _obj;\n}\n\n/**\n * Get or store the current state of the web page using JSON.\n * @ko 웹 페이지의 현재 상태를 JSON 형식으로 저장하거나 읽는다.\n * @alias eg.Persist\n *\n * @support {\"ie\": \"9+\", \"ch\" : \"latest\", \"ff\" : \"latest\", \"sf\" : \"latest\" , \"edge\" : \"latest\", \"ios\" : \"7+\", \"an\" : \"2.3+ (except 3.x)\"}\n */\nclass Persist {\n\tstatic VERSION = \"#__VERSION__#\";\n\tstatic StorageManager = StorageManager;\n\t/**\n\t* Constructor\n\t* @param {String} key The key of the state information to be stored 저장할 상태 정보의 키\n\t**/\n\tconstructor(key, value) {\n\t\tthis.key = key;\n\t}\n\n\t/**\n\t * Read value\n\t * @param {String?} path target path\n\t * @return {String|Number|Boolean|Object|Array}\n\t */\n\tget(path) {\n\t\t// find path\n\t\tconst globalState =\tStorageManager.getStateByKey(this.key);\n\n\t\tif (!path || path.length === 0) {\n\t\t\treturn globalState;\n\t\t}\n\n\t\tconst pathToken = path.split(\".\");\n\t\tlet currentItem = globalState;\n\t\tlet isTargetExist = true;\n\n\t\tfor (let i = 0; i < pathToken.length; i++) {\n\t\t\tif (!currentItem) {\n\t\t\t\tisTargetExist = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcurrentItem = currentItem[pathToken[i]];\n\t\t}\n\t\tif (!isTargetExist || !currentItem) {\n\t\t\treturn null;\n\t\t}\n\t\treturn currentItem;\n\t}\n\n\t/**\n\t * Save value\n\t * @param {String} path target path\n\t * @param {String|Number|Boolean|Object|Array} value value to save\n\t * @return {Persist}\n\t */\n\tset(path, value) {\n\t\t// find path\n\t\tconst globalState =\tStorageManager.getStateByKey(this.key);\n\n\t\tif (path.length === 0) {\n\t\t\tStorageManager.setStateByKey(this.key, value);\n\t\t} else {\n\t\t\tStorageManager.setStateByKey(\n\t\t\t\tthis.key,\n\t\t\t\tsetRec(globalState, path.split(\".\"), value)\n\t\t\t);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\t/**\n\t * @static\n\t * Return whether you need \"Persist\" module by checking the bfCache support of the current browser\n\t * @return {Boolean}\n\t */\n\tstatic isNeeded() {\n\t\treturn isNeeded;\n\t}\n}\n\nexport default Persist;\n"],"names":["isIOS","isMacSafari","isAndroid","isWebview","androidVersion","win","window","console","history","document","localStorage","location","sessionStorage","navigator","parseFloat","performance","userAgent","TYPE_BACK_FORWARD","navigation","isNeeded","RegExp","test","exec","undefined","CONST_PERSIST","isSupportState","isStorageAvailable","storage","TMP_KEY","setItem","getItem","e","strg","warnInvalidStorageValue","warn","getState","state","stateStr","PERSIST_KEY","href","isValidStateStr","length","isValidType","JSON","parse","Array","Error","getStateByKey","key","result","setState","stringify","removeItem","historyState","replaceState","title","message","setStateByKey","data","beforeData","reset","type","Persist","value","get","path","globalState","StorageManager","this","pathToken","split","currentItem","isTargetExist","i","set","setRec","obj","_obj","isNaN","head","shift","VERSION"],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index ee2cdd1..712af5c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@egjs/persist", - "version": "2.1.0-snapshot", + "version": "2.1.3-rc", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -176,6 +176,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, "requires": { "@babel/types": "7.1.6" } @@ -797,6 +798,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.6.tgz", "integrity": "sha512-DMiUzlY9DSjVsOylJssxLHSgj6tWM9PRFJOGW/RaOglVOK9nzTxoOMfTfRQXGUCUQ/HmlG2efwC+XqUEJ5ay4w==", + "dev": true, "requires": { "esutils": "2.0.2", "lodash": "4.17.11", @@ -810,12 +812,14 @@ "@types/estree": { "version": "0.0.39", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", - "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==" + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true }, "@types/node": { "version": "10.12.10", "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.10.tgz", - "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==" + "integrity": "sha512-8xZEYckCbUVgK8Eg7lf5Iy4COKJ5uXlnIOnePN0WUwSQggy9tolM+tDJf7wMOnT/JT/W9xDYIaYggt3mRV2O5w==", + "dev": true }, "acorn": { "version": "5.7.3", @@ -1203,6 +1207,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, "requires": { "arr-flatten": "1.1.0" } @@ -1210,7 +1215,8 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true }, "arr-union": { "version": "3.1.0", @@ -1221,7 +1227,8 @@ "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=" + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true }, "assign-symbols": { "version": "1.0.0", @@ -1882,10 +1889,17 @@ } } }, + "babylon": { + "version": "7.0.0-beta.19", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.19.tgz", + "integrity": "sha512-Vg0C9s/REX6/WIXN37UKpv5ZhRi6A4pjHlpkE34+8/a6c2W1Q692n3hmc+SZG5lKRnaExLUbxtJ1SVT+KaCQ/A==", + "dev": true + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true }, "base": { "version": "0.11.2", @@ -1967,10 +1981,17 @@ "dev": true, "optional": true }, + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1980,6 +2001,7 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, "requires": { "expand-range": "1.8.2", "preserve": "0.2.0", @@ -2055,6 +2077,15 @@ "integrity": "sha512-u/nxtHGAzCGZzIxt3dA/tpSPOcirBZFWKwz1EPz4aaupnBI2XR0Rbr74g0zc6Hzy41OEM4uMoZ38k56TpYAWjQ==", "dev": true }, + "catharsis": { + "version": "0.8.9", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", + "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", + "dev": true, + "requires": { + "underscore-contrib": "0.3.0" + } + }, "chai": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/chai/-/chai-4.1.1.tgz", @@ -2479,7 +2510,8 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "concat-stream": { "version": "1.6.2", @@ -5668,12 +5700,14 @@ "estree-walker": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", - "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==" + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true }, "event-emitter": { "version": "0.3.5", @@ -5695,6 +5729,7 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, "requires": { "is-posix-bracket": "0.1.1" } @@ -5703,6 +5738,7 @@ "version": "1.8.2", "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, "requires": { "fill-range": "2.2.4" } @@ -5743,6 +5779,7 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, "requires": { "is-extglob": "1.0.0" } @@ -5787,12 +5824,14 @@ "filename-regex": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=" + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true }, "fill-range": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, "requires": { "is-number": "2.1.0", "isobject": "2.1.0", @@ -5857,12 +5896,14 @@ "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true }, "for-own": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, "requires": { "for-in": "1.0.2" } @@ -6719,6 +6760,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, "requires": { "glob-parent": "2.0.0", "is-glob": "2.0.1" @@ -6728,6 +6770,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, "requires": { "is-glob": "2.0.1" } @@ -6991,7 +7034,8 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true }, "is-builtin-module": { "version": "1.0.0", @@ -7045,12 +7089,14 @@ "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=" + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true }, "is-equal-shallow": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, "requires": { "is-primitive": "2.0.0" } @@ -7058,12 +7104,14 @@ "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true }, "is-extglob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=" + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -7075,6 +7123,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, "requires": { "is-extglob": "1.0.0" } @@ -7102,6 +7151,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, "requires": { "kind-of": "3.2.2" } @@ -7132,12 +7182,14 @@ "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=" + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true }, "is-primitive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=" + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true }, "is-promise": { "version": "2.1.0", @@ -7184,7 +7236,8 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "isexe": { "version": "2.0.0", @@ -7196,6 +7249,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, "requires": { "isarray": "1.0.0" } @@ -7636,156 +7690,33 @@ "esprima": "4.0.1" } }, + "js2xmlparser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", + "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", + "dev": true, + "requires": { + "xmlcreate": "1.0.2" + } + }, "jsdoc": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.4.tgz", - "integrity": "sha512-VmTw0J+2L16IxAe0JSDSAcH0F+DbZxaj8wN1AjHtKMQU/hO0ciIl5ZE93XqrrFIbknobuqHKJCXZj6+Hk57MjA==", + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.5.5.tgz", + "integrity": "sha512-6PxB65TAU4WO0Wzyr/4/YhlGovXl0EVYfpKbpSroSj0qBxT4/xod/l40Opkm38dRHRdQgdeY836M0uVnJQG7kg==", "dev": true, "requires": { - "babylon": "7.0.0-beta.21", - "bluebird": "3.5.0", + "babylon": "7.0.0-beta.19", + "bluebird": "3.5.3", "catharsis": "0.8.9", "escape-string-regexp": "1.0.5", "js2xmlparser": "3.0.0", "klaw": "2.0.0", - "marked": "0.3.6", + "marked": "0.3.19", "mkdirp": "0.5.1", "requizzle": "0.2.1", "strip-json-comments": "2.0.1", - "taffydb": "2.6.2", + "taffydb": "https://github.com/hegemonic/taffydb/tarball/7d100bcee0e997ee4977e273cdce60bd8933050e", "underscore": "1.8.3" - }, - "dependencies": { - "babylon": { - "version": "7.0.0-beta.21", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.21.tgz", - "integrity": "sha512-fjhepTXb+WS5Iyu+DATZA5maLpuqaGckPnCgmnIWG80Xkm4SxA1mdTsBHMvaMSbdSKj/4Pocd4pUkI4qgL2wwQ==", - "dev": true - }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, - "catharsis": { - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz", - "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=", - "dev": true, - "requires": { - "underscore-contrib": "0.3.0" - } - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "graceful-fs": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true - }, - "js2xmlparser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-3.0.0.tgz", - "integrity": "sha1-P7YOqgicVED5MZ9RdgzNB+JJlzM=", - "dev": true, - "requires": { - "xmlcreate": "1.0.2" - } - }, - "klaw": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", - "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11" - } - }, - "marked": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.6.tgz", - "integrity": "sha1-ssbGGPzOzk74bE/Gy4p8v1rtqNc=", - "dev": true - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "requizzle": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", - "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", - "dev": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true - }, - "taffydb": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", - "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", - "dev": true - }, - "underscore": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", - "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", - "dev": true - }, - "underscore-contrib": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", - "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", - "dev": true, - "requires": { - "underscore": "1.6.0" - }, - "dependencies": { - "underscore": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", - "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", - "dev": true - } - } - }, - "xmlcreate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", - "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", - "dev": true - } } }, "jsesc": { @@ -11423,10 +11354,20 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, "requires": { "is-buffer": "1.1.6" } }, + "klaw": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-2.0.0.tgz", + "integrity": "sha1-WcEo4Nxc5BAgEVEZTuucv4WGUPY=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -11495,7 +11436,8 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true }, "lodash.cond": { "version": "4.5.2", @@ -11585,6 +11527,7 @@ "version": "0.25.1", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "dev": true, "requires": { "sourcemap-codec": "1.4.4" } @@ -11621,10 +11564,17 @@ "object-visit": "1.0.1" } }, + "marked": { + "version": "0.3.19", + "resolved": "http://registry.npmjs.org/marked/-/marked-0.3.19.tgz", + "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", + "dev": true + }, "math-random": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", - "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=" + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true }, "md5.js": { "version": "1.3.4", @@ -11673,6 +11623,7 @@ "version": "2.3.11", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, "requires": { "arr-diff": "2.0.0", "array-unique": "0.2.1", @@ -11699,6 +11650,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -12101,6 +12053,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, "requires": { "remove-trailing-separator": "1.1.0" } @@ -12176,6 +12129,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, "requires": { "for-own": "0.1.5", "is-extendable": "0.1.1" @@ -12272,6 +12226,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, "requires": { "glob-base": "0.3.0", "is-dotfile": "1.0.3", @@ -12388,7 +12343,8 @@ "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=" + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true }, "private": { "version": "0.1.8", @@ -12418,6 +12374,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, "requires": { "is-number": "4.0.0", "kind-of": "6.0.2", @@ -12427,12 +12384,14 @@ "is-number": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true } } }, @@ -12860,6 +12819,7 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, "requires": { "is-equal-shallow": "0.1.3" } @@ -12920,17 +12880,20 @@ "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true }, "require-uncached": { "version": "1.0.3", @@ -12942,6 +12905,23 @@ "resolve-from": "1.0.1" } }, + "requizzle": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.1.tgz", + "integrity": "sha1-aUPDUwxNmn5G8c3dUcFY/GcM294=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, "resolve": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", @@ -12992,6 +12972,7 @@ "version": "0.67.3", "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.67.3.tgz", "integrity": "sha512-TyNQCz97rKuVVbsKUTXfwIjV7UljWyTVd7cTMuE+aqlQ7WJslkYF5QaYGjMLR2BlQtUOO5CAxSVnpQ55iYp5jg==", + "dev": true, "requires": { "@types/estree": "0.0.39", "@types/node": "10.12.10" @@ -13001,6 +12982,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.0.3.tgz", "integrity": "sha512-/PP0MgbPQyRywI4zRIJim6ySjTcOLo4kQbEbROqp9kOR3kHC3FeU++QpBDZhS2BcHtJTVZMVbBV46flbBN5zxQ==", + "dev": true, "requires": { "@babel/helper-module-imports": "7.0.0", "rollup-pluginutils": "2.3.3" @@ -13010,6 +12992,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.1.0.tgz", "integrity": "sha512-SxrAIgpH/B5/W4SeULgreOemxcpEgKs2gcD42zXw50bhqGWmcnlXneVInQpAqzA/cIly4bJrOpeelmB9p4YXSQ==", + "dev": true, "requires": { "magic-string": "0.25.1", "minimatch": "3.0.4", @@ -13032,6 +13015,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.3.3.tgz", "integrity": "sha512-2XZwja7b6P5q4RZ5FhyX1+f46xi1Z3qBKigLRZ6VTZjwbN0K1IFGMlwm06Uu0Emcre2Z63l77nq/pzn+KxIEoA==", + "dev": true, "requires": { "estree-walker": "0.5.2", "micromatch": "2.3.11" @@ -13405,7 +13389,8 @@ "sourcemap-codec": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", - "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==" + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true }, "spdx-correct": { "version": "1.0.2", @@ -13683,7 +13668,8 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true }, "to-object-path": { "version": "0.3.0", @@ -13935,6 +13921,29 @@ } } }, + "underscore": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz", + "integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI=", + "dev": true + }, + "underscore-contrib": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz", + "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=", + "dev": true, + "requires": { + "underscore": "1.6.0" + }, + "dependencies": { + "underscore": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz", + "integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=", + "dev": true + } + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -20194,6 +20203,12 @@ } } }, + "xmlcreate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-1.0.2.tgz", + "integrity": "sha1-+mv3YqYKQT+z3Y9LA8WyaSONMI8=", + "dev": true + }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", diff --git a/package.json b/package.json index 3a5b8c1..3768eed 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@egjs/persist", - "version": "2.1.0-snapshot", + "version": "2.1.3", "description": "Provide cache interface to handle persisted data among history navigation.", "main": "dist/persist.js", "module": "dist/persist.esm.js", @@ -73,7 +73,7 @@ "husky": "^0.14.3", "inject-loader": "^3.0.1", "istanbul-instrumenter-loader": "^3.0.0", - "jsdoc": "^3.5.4", + "jsdoc": "^3.5.5", "karma": "^1.7.0", "karma-chai": "^0.1.0", "karma-chrome-launcher": "^2.2.0",