{"remainingRequest":"/Users/jaslan/Development/nifi-fds/node_modules/istanbul-instrumenter-loader/dist/cjs.js??ref--5-1!/Users/jaslan/Development/nifi-fds/angular-url-loader.js!/Users/jaslan/Development/nifi-fds/node_modules/babel-loader/lib/index.js??ref--5-3!/Users/jaslan/Development/nifi-fds/platform/core/common/services/fds-storage.service.js","dependencies":[{"path":"/Users/jaslan/Development/nifi-fds/platform/core/common/services/fds-storage.service.js","mtime":1562689731033},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/istanbul-instrumenter-loader/dist/cjs.js","mtime":1522257694000},{"path":"/Users/jaslan/Development/nifi-fds/angular-url-loader.js","mtime":1562689731025},{"path":"/Users/jaslan/Development/nifi-fds/node_modules/babel-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":["var cov_cgdalbfrm=function(){var path='/Users/jaslan/Development/nifi-fds/platform/core/common/services/fds-storage.service.js',hash='5f61c6b8eeb6e1a83fd25d01117ae3a78398ea60',Function=function(){}.constructor,global=new Function('return this')(),gcv='__coverage__',coverageData={path:'/Users/jaslan/Development/nifi-fds/platform/core/common/services/fds-storage.service.js',statementMap:{'0':{start:{line:18,column:21},end:{line:18,column:29}},'1':{start:{line:19,column:15},end:{line:19,column:33}},'2':{start:{line:21,column:18},end:{line:23,column:1}},'3':{start:{line:22,column:2},end:{line:22,column:36}},'4':{start:{line:25,column:13},end:{line:27,column:1}},'5':{start:{line:26,column:2},end:{line:26,column:22}},'6':{start:{line:29,column:26},end:{line:31,column:1}},'7':{start:{line:30,column:2},end:{line:30,column:43}},'8':{start:{line:40,column:22},end:{line:50,column:1}},'9':{start:{line:41,column:2},end:{line:47,column:3}},'10':{start:{line:43,column:18},end:{line:43,column:41}},'11':{start:{line:44,column:14},end:{line:44,column:24}},'12':{start:{line:46,column:4},end:{line:46,column:45}},'13':{start:{line:49,column:2},end:{line:49,column:15}},'14':{start:{line:58,column:15},end:{line:71,column:1}},'15':{start:{line:59,column:2},end:{line:70,column:3}},'16':{start:{line:61,column:16},end:{line:61,column:53}},'17':{start:{line:63,column:4},end:{line:65,column:5}},'18':{start:{line:64,column:6},end:{line:64,column:19}},'19':{start:{line:67,column:4},end:{line:67,column:16}},'20':{start:{line:69,column:4},end:{line:69,column:16}},'21':{start:{line:80,column:0},end:{line:215,column:2}},'22':{start:{line:88,column:4},end:{line:96,column:5}},'23':{start:{line:89,column:6},end:{line:95,column:7}},'24':{start:{line:91,column:18},end:{line:91,column:37}},'25':{start:{line:93,column:8},end:{line:93,column:26}},'26':{start:{line:108,column:4},end:{line:108,column:87}},'27':{start:{line:110,column:16},end:{line:113,column:5}},'28':{start:{line:115,column:4},end:{line:115,column:53}},'29':{start:{line:126,column:4},end:{line:126,column:34}},'30':{start:{line:137,column:16},end:{line:137,column:29}},'31':{start:{line:139,column:4},end:{line:141,column:5}},'32':{start:{line:140,column:6},end:{line:140,column:18}},'33':{start:{line:144,column:4},end:{line:147,column:5}},'34':{start:{line:145,column:6},end:{line:145,column:27}},'35':{start:{line:146,column:6},end:{line:146,column:18}},'36':{start:{line:150,column:4},end:{line:152,column:5}},'37':{start:{line:151,column:6},end:{line:151,column:27}},'38':{start:{line:154,column:4},end:{line:154,column:16}},'39':{start:{line:165,column:16},end:{line:165,column:29}},'40':{start:{line:167,column:4},end:{line:169,column:5}},'41':{start:{line:168,column:6},end:{line:168,column:18}},'42':{start:{line:172,column:4},end:{line:174,column:5}},'43':{start:{line:173,column:6},end:{line:173,column:30}},'44':{start:{line:176,column:4},end:{line:176,column:16}},'45':{start:{line:187,column:4},end:{line:202,column:5}},'46':{start:{line:188,column:21},end:{line:188,column:36}},'47':{start:{line:190,column:6},end:{line:192,column:7}},'48':{start:{line:191,column:8},end:{line:191,column:18}},'49':{start:{line:194,column:23},end:{line:194,column:47}},'50':{start:{line:195,column:20},end:{line:195,column:42}},'51':{start:{line:197,column:6},end:{line:199,column:7}},'52':{start:{line:198,column:8},end:{line:198,column:23}},'53':{start:{line:201,column:6},end:{line:201,column:18}},'54':{start:{line:204,column:4},end:{line:204,column:16}},'55':{start:{line:213,column:4},end:{line:213,column:33}},'56':{start:{line:216,column:0},end:{line:216,column:34}}},fnMap:{'0':{name:'isUndefined',decl:{start:{line:21,column:27},end:{line:21,column:38}},loc:{start:{line:21,column:44},end:{line:23,column:1}},line:21},'1':{name:'isNull',decl:{start:{line:25,column:22},end:{line:25,column:28}},loc:{start:{line:25,column:34},end:{line:27,column:1}},line:25},'2':{name:'isDefinedAndNotNull',decl:{start:{line:29,column:35},end:{line:29,column:54}},loc:{start:{line:29,column:60},end:{line:31,column:1}},line:29},'3':{name:'checkExpiration',decl:{start:{line:40,column:31},end:{line:40,column:46}},loc:{start:{line:40,column:54},end:{line:50,column:1}},line:40},'4':{name:'getEntry',decl:{start:{line:58,column:24},end:{line:58,column:32}},loc:{start:{line:58,column:38},end:{line:71,column:1}},line:58},'5':{name:'FdsStorageService',decl:{start:{line:78,column:9},end:{line:78,column:26}},loc:{start:{line:78,column:29},end:{line:78,column:31}},line:78},'6':{name:'init',decl:{start:{line:87,column:17},end:{line:87,column:21}},loc:{start:{line:87,column:24},end:{line:97,column:3}},line:87},'7':{name:'setItem',decl:{start:{line:106,column:20},end:{line:106,column:27}},loc:{start:{line:106,column:48},end:{line:116,column:3}},line:106},'8':{name:'hasItem',decl:{start:{line:125,column:20},end:{line:125,column:27}},loc:{start:{line:125,column:33},end:{line:127,column:3}},line:125},'9':{name:'getItem',decl:{start:{line:136,column:20},end:{line:136,column:27}},loc:{start:{line:136,column:33},end:{line:155,column:3}},line:136},'10':{name:'getItemExpiration',decl:{start:{line:164,column:30},end:{line:164,column:47}},loc:{start:{line:164,column:53},end:{line:177,column:3}},line:164},'11':{name:'getJwtPayload',decl:{start:{line:186,column:26},end:{line:186,column:39}},loc:{start:{line:186,column:45},end:{line:205,column:3}},line:186},'12':{name:'removeItem',decl:{start:{line:212,column:23},end:{line:212,column:33}},loc:{start:{line:212,column:39},end:{line:214,column:3}},line:212}},branchMap:{'0':{loc:{start:{line:30,column:9},end:{line:30,column:42}},type:'binary-expr',locations:[{start:{line:30,column:9},end:{line:30,column:26}},{start:{line:30,column:30},end:{line:30,column:42}}],line:30},'1':{loc:{start:{line:41,column:2},end:{line:47,column:3}},type:'if',locations:[{start:{line:41,column:2},end:{line:47,column:3}},{start:{line:41,column:2},end:{line:47,column:3}}],line:41},'2':{loc:{start:{line:63,column:4},end:{line:65,column:5}},type:'if',locations:[{start:{line:63,column:4},end:{line:65,column:5}},{start:{line:63,column:4},end:{line:65,column:5}}],line:63},'3':{loc:{start:{line:108,column:14},end:{line:108,column:86}},type:'cond-expr',locations:[{start:{line:108,column:45},end:{line:108,column:52}},{start:{line:108,column:55},end:{line:108,column:86}}],line:108},'4':{loc:{start:{line:139,column:4},end:{line:141,column:5}},type:'if',locations:[{start:{line:139,column:4},end:{line:141,column:5}},{start:{line:139,column:4},end:{line:141,column:5}}],line:139},'5':{loc:{start:{line:144,column:4},end:{line:147,column:5}},type:'if',locations:[{start:{line:144,column:4},end:{line:147,column:5}},{start:{line:144,column:4},end:{line:147,column:5}}],line:144},'6':{loc:{start:{line:150,column:4},end:{line:152,column:5}},type:'if',locations:[{start:{line:150,column:4},end:{line:152,column:5}},{start:{line:150,column:4},end:{line:152,column:5}}],line:150},'7':{loc:{start:{line:167,column:4},end:{line:169,column:5}},type:'if',locations:[{start:{line:167,column:4},end:{line:169,column:5}},{start:{line:167,column:4},end:{line:169,column:5}}],line:167},'8':{loc:{start:{line:172,column:4},end:{line:174,column:5}},type:'if',locations:[{start:{line:172,column:4},end:{line:174,column:5}},{start:{line:172,column:4},end:{line:174,column:5}}],line:172},'9':{loc:{start:{line:187,column:4},end:{line:202,column:5}},type:'if',locations:[{start:{line:187,column:4},end:{line:202,column:5}},{start:{line:187,column:4},end:{line:202,column:5}}],line:187},'10':{loc:{start:{line:190,column:6},end:{line:192,column:7}},type:'if',locations:[{start:{line:190,column:6},end:{line:192,column:7}},{start:{line:190,column:6},end:{line:192,column:7}}],line:190},'11':{loc:{start:{line:197,column:6},end:{line:199,column:7}},type:'if',locations:[{start:{line:197,column:6},end:{line:199,column:7}},{start:{line:197,column:6},end:{line:199,column:7}}],line:197}},s:{'0':0,'1':0,'2':0,'3':0,'4':0,'5':0,'6':0,'7':0,'8':0,'9':0,'10':0,'11':0,'12':0,'13':0,'14':0,'15':0,'16':0,'17':0,'18':0,'19':0,'20':0,'21':0,'22':0,'23':0,'24':0,'25':0,'26':0,'27':0,'28':0,'29':0,'30':0,'31':0,'32':0,'33':0,'34':0,'35':0,'36':0,'37':0,'38':0,'39':0,'40':0,'41':0,'42':0,'43':0,'44':0,'45':0,'46':0,'47':0,'48':0,'49':0,'50':0,'51':0,'52':0,'53':0,'54':0,'55':0,'56':0},f:{'0':0,'1':0,'2':0,'3':0,'4':0,'5':0,'6':0,'7':0,'8':0,'9':0,'10':0,'11':0,'12':0},b:{'0':[0,0],'1':[0,0],'2':[0,0],'3':[0,0],'4':[0,0],'5':[0,0],'6':[0,0],'7':[0,0],'8':[0,0],'9':[0,0],'10':[0,0],'11':[0,0]},_coverageSchema:'332fd63041d2c1bcb487cc26dd0d5f7d97098a6c'},coverage=global[gcv]||(global[gcv]={});if(coverage[path]&&coverage[path].hash===hash){return coverage[path];}coverageData.hash=hash;return coverage[path]=coverageData;}();var MILLIS_PER_DAY=(cov_cgdalbfrm.s[0]++,86400000);var TWO_DAYS=(cov_cgdalbfrm.s[1]++,MILLIS_PER_DAY*2);cov_cgdalbfrm.s[2]++;var isUndefined=function isUndefined(obj){cov_cgdalbfrm.f[0]++;cov_cgdalbfrm.s[3]++;return typeof obj==='undefined';};cov_cgdalbfrm.s[4]++;var isNull=function isNull(obj){cov_cgdalbfrm.f[1]++;cov_cgdalbfrm.s[5]++;return obj===null;};cov_cgdalbfrm.s[6]++;var isDefinedAndNotNull=function isDefinedAndNotNull(obj){cov_cgdalbfrm.f[2]++;cov_cgdalbfrm.s[7]++;return(cov_cgdalbfrm.b[0][0]++,!isUndefined(obj))&&(cov_cgdalbfrm.b[0][1]++,!isNull(obj));};cov_cgdalbfrm.s[8]++;var checkExpiration=function checkExpiration(entry){cov_cgdalbfrm.f[3]++;cov_cgdalbfrm.s[9]++;if(isDefinedAndNotNull(entry.expires)){cov_cgdalbfrm.b[1][0]++;var expires=(cov_cgdalbfrm.s[10]++,new Date(entry.expires));var now=(cov_cgdalbfrm.s[11]++,new Date());cov_cgdalbfrm.s[12]++;return expires.valueOf()<now.valueOf();}else{cov_cgdalbfrm.b[1][1]++;}cov_cgdalbfrm.s[13]++;return false;};cov_cgdalbfrm.s[14]++;var getEntry=function getEntry(key){cov_cgdalbfrm.f[4]++;cov_cgdalbfrm.s[15]++;try{var entry=(cov_cgdalbfrm.s[16]++,JSON.parse(localStorage.getItem(key)));cov_cgdalbfrm.s[17]++;if(isDefinedAndNotNull(entry)){cov_cgdalbfrm.b[2][0]++;cov_cgdalbfrm.s[18]++;return entry;}else{cov_cgdalbfrm.b[2][1]++;}cov_cgdalbfrm.s[19]++;return null;}catch(e){cov_cgdalbfrm.s[20]++;return null;}};function FdsStorageService(){cov_cgdalbfrm.f[5]++;}cov_cgdalbfrm.s[21]++;FdsStorageService.prototype={constructor:FdsStorageService,init:function init(){cov_cgdalbfrm.f[6]++;cov_cgdalbfrm.s[22]++;for(var i=0;i<localStorage.length;i++){cov_cgdalbfrm.s[23]++;try{var key=(cov_cgdalbfrm.s[24]++,localStorage.key(i));cov_cgdalbfrm.s[25]++;this.getItem(key);}catch(e){}}},setItem:function setItem(key,item,expires){cov_cgdalbfrm.f[7]++;cov_cgdalbfrm.s[26]++;expires=isDefinedAndNotNull(expires)?(cov_cgdalbfrm.b[3][0]++,expires):(cov_cgdalbfrm.b[3][1]++,new Date().valueOf()+TWO_DAYS);var entry=(cov_cgdalbfrm.s[27]++,{expires:expires,item:item});cov_cgdalbfrm.s[28]++;localStorage.setItem(key,JSON.stringify(entry));},hasItem:function hasItem(key){cov_cgdalbfrm.f[8]++;cov_cgdalbfrm.s[29]++;return getEntry(key)!==null;},getItem:function getItem(key){cov_cgdalbfrm.f[9]++;var entry=(cov_cgdalbfrm.s[30]++,getEntry(key));cov_cgdalbfrm.s[31]++;if(entry===null){cov_cgdalbfrm.b[4][0]++;cov_cgdalbfrm.s[32]++;return null;}else{cov_cgdalbfrm.b[4][1]++;}cov_cgdalbfrm.s[33]++;if(checkExpiration(entry)){cov_cgdalbfrm.b[5][0]++;cov_cgdalbfrm.s[34]++;this.removeItem(key);cov_cgdalbfrm.s[35]++;return null;}else{cov_cgdalbfrm.b[5][1]++;}cov_cgdalbfrm.s[36]++;if(isDefinedAndNotNull(entry['item'])){cov_cgdalbfrm.b[6][0]++;cov_cgdalbfrm.s[37]++;return entry['item'];}else{cov_cgdalbfrm.b[6][1]++;}cov_cgdalbfrm.s[38]++;return null;},getItemExpiration:function getItemExpiration(key){cov_cgdalbfrm.f[10]++;var entry=(cov_cgdalbfrm.s[39]++,getEntry(key));cov_cgdalbfrm.s[40]++;if(entry===null){cov_cgdalbfrm.b[7][0]++;cov_cgdalbfrm.s[41]++;return null;}else{cov_cgdalbfrm.b[7][1]++;}cov_cgdalbfrm.s[42]++;if(isDefinedAndNotNull(entry['expires'])){cov_cgdalbfrm.b[8][0]++;cov_cgdalbfrm.s[43]++;return entry['expires'];}else{cov_cgdalbfrm.b[8][1]++;}cov_cgdalbfrm.s[44]++;return null;},getJwtPayload:function getJwtPayload(jwt){cov_cgdalbfrm.f[11]++;cov_cgdalbfrm.s[45]++;if(isDefinedAndNotNull(jwt)){cov_cgdalbfrm.b[9][0]++;var segments=(cov_cgdalbfrm.s[46]++,jwt.split(/\\./));cov_cgdalbfrm.s[47]++;if(segments.length!==3){cov_cgdalbfrm.b[10][0]++;cov_cgdalbfrm.s[48]++;return'';}else{cov_cgdalbfrm.b[10][1]++;}var rawPayload=(cov_cgdalbfrm.s[49]++,window.atob(segments[1]));var payload=(cov_cgdalbfrm.s[50]++,JSON.parse(rawPayload));cov_cgdalbfrm.s[51]++;if(isDefinedAndNotNull(payload)){cov_cgdalbfrm.b[11][0]++;cov_cgdalbfrm.s[52]++;return payload;}else{cov_cgdalbfrm.b[11][1]++;}cov_cgdalbfrm.s[53]++;return null;}else{cov_cgdalbfrm.b[9][1]++;}cov_cgdalbfrm.s[54]++;return null;},removeItem:function removeItem(key){cov_cgdalbfrm.f[12]++;cov_cgdalbfrm.s[55]++;localStorage.removeItem(key);}};cov_cgdalbfrm.s[56]++;FdsStorageService.parameters=[];export default FdsStorageService;",{"version":3,"sources":["/Users/jaslan/Development/nifi-fds/platform/core/common/services/fds-storage.service.js"],"names":["MILLIS_PER_DAY","TWO_DAYS","isUndefined","obj","isNull","isDefinedAndNotNull","checkExpiration","entry","expires","Date","now","valueOf","getEntry","key","JSON","parse","localStorage","getItem","e","FdsStorageService","prototype","constructor","init","i","length","setItem","item","stringify","hasItem","removeItem","getItemExpiration","getJwtPayload","jwt","segments","split","rawPayload","window","atob","payload","parameters"],"mappings":"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","sourcesContent":["/*\n * Licensed to the Apache Software Foundation (ASF) under one or more\n * contributor license agreements.  See the NOTICE file distributed with\n * this work for additional information regarding copyright ownership.\n * The ASF licenses this file to You under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with\n * the License.  You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n// Store items for two days before being eligible for removal.\nvar MILLIS_PER_DAY = 86400000;\nvar TWO_DAYS = MILLIS_PER_DAY * 2;\n\nvar isUndefined = function isUndefined(obj) {\n  return typeof obj === 'undefined';\n};\n\nvar isNull = function isNull(obj) {\n  return obj === null;\n};\n\nvar isDefinedAndNotNull = function isDefinedAndNotNull(obj) {\n  return !isUndefined(obj) && !isNull(obj);\n};\n/**\n * Checks the expiration for the specified entry.\n *\n * @param {object} entry\n * @returns {boolean}\n */\n\n\nvar checkExpiration = function checkExpiration(entry) {\n  if (isDefinedAndNotNull(entry.expires)) {\n    // get the expiration\n    var expires = new Date(entry.expires);\n    var now = new Date(); // return whether the expiration date has passed\n\n    return expires.valueOf() < now.valueOf();\n  }\n\n  return false;\n};\n/**\n * Gets an enty for the key. The entry expiration is not checked.\n *\n * @param {string} key\n */\n\n\nvar getEntry = function getEntry(key) {\n  try {\n    // parse the entry\n    var entry = JSON.parse(localStorage.getItem(key)); // ensure the entry and item are present\n\n    if (isDefinedAndNotNull(entry)) {\n      return entry;\n    }\n\n    return null;\n  } catch (e) {\n    return null;\n  }\n};\n/**\n * FdsStorageService constructor.\n * @constructor\n */\n\n\nfunction FdsStorageService() {}\n\nFdsStorageService.prototype = {\n  constructor: FdsStorageService,\n\n  /**\n   * Initializes the storage. Items will be persisted for two days. Once the scripts runs\n   * thereafter, all eligible items will be removed. This strategy does not support persistence.\n   */\n  init: function init() {\n    for (var i = 0; i < localStorage.length; i++) {\n      try {\n        // get the next item\n        var key = localStorage.key(i); // attempt to get the item which will expire if necessary\n\n        this.getItem(key);\n      } catch (e) {// Do nothing\n      }\n    }\n  },\n\n  /**\n   * Stores the specified item.\n   *\n   * @param {string} key\n   * @param {object} item\n   * @param {integer} expires\n   */\n  setItem: function setItem(key, item, expires) {\n    // calculate the expiration\n    expires = isDefinedAndNotNull(expires) ? expires : new Date().valueOf() + TWO_DAYS; // create the entry\n\n    var entry = {\n      expires: expires,\n      item: item\n    }; // store the item\n\n    localStorage.setItem(key, JSON.stringify(entry));\n  },\n\n  /**\n   * Returns whether there is an entry for this key. This will not check the expiration. If\n   * the entry is expired, it will return null on a subsequent getItem invocation.\n   *\n   * @param {string} key\n   * @returns {boolean}\n   */\n  hasItem: function hasItem(key) {\n    return getEntry(key) !== null;\n  },\n\n  /**\n   * Gets the item with the specified key. If an item with this key does\n   * not exist, null is returned. If an item exists but cannot be parsed\n   * or is malformed/unrecognized, null is returned.\n   *\n   * @param {type} key\n   */\n  getItem: function getItem(key) {\n    var entry = getEntry(key);\n\n    if (entry === null) {\n      return null;\n    } // if the entry is expired, drop it and return null\n\n\n    if (checkExpiration(entry)) {\n      this.removeItem(key);\n      return null;\n    } // if the entry has the specified field return its value\n\n\n    if (isDefinedAndNotNull(entry['item'])) {\n      return entry['item'];\n    }\n\n    return null;\n  },\n\n  /**\n   * Gets the expiration for the specified item. This will not check the expiration. If\n   * the entry is expired, it will return null on a subsequent getItem invocation.\n   *\n   * @param {string} key\n   * @returns {integer}\n   */\n  getItemExpiration: function getItemExpiration(key) {\n    var entry = getEntry(key);\n\n    if (entry === null) {\n      return null;\n    } // if the entry has the specified field return its value\n\n\n    if (isDefinedAndNotNull(entry['expires'])) {\n      return entry['expires'];\n    }\n\n    return null;\n  },\n\n  /**\n   * Extracts the subject from the specified jwt. If the jwt is not as expected\n   * an empty string is returned.\n   *\n   * @param {string} jwt\n   * @returns {string}\n   */\n  getJwtPayload: function getJwtPayload(jwt) {\n    if (isDefinedAndNotNull(jwt)) {\n      var segments = jwt.split(/\\./);\n\n      if (segments.length !== 3) {\n        return '';\n      }\n\n      var rawPayload = window.atob(segments[1]);\n      var payload = JSON.parse(rawPayload);\n\n      if (isDefinedAndNotNull(payload)) {\n        return payload;\n      }\n\n      return null;\n    }\n\n    return null;\n  },\n\n  /**\n   * Removes the item with the specified key.\n   *\n   * @param {type} key\n   */\n  removeItem: function removeItem(key) {\n    localStorage.removeItem(key);\n  }\n};\nFdsStorageService.parameters = [];\nexport default FdsStorageService;"]}]}