@nlabs/arkhamjs-storage-browser 3.30.4 → 3.30.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- import type { BrowserStorageOptions } from '../types/main';
5
+ import type { BrowserStorageOptions } from '../types/main.js';
6
6
  export declare class BrowserStorage {
7
7
  private static readonly window;
8
8
  private readonly options;
@@ -32,3 +32,4 @@ export declare class BrowserStorage {
32
32
  private validateSize;
33
33
  private cleanExpiredData;
34
34
  }
35
+ //# sourceMappingURL=BrowserStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowserStorage.d.ts","sourceRoot":"","sources":["../../src/BrowserStorage/BrowserStorage.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EACV,qBAAqB,EAGtB,MAAM,kBAAkB,CAAC;AA+B1B,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CACuB;IAErD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,OAAO,GAAE,qBAA0B;IAa/C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAazC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAa3C,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAarC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAavC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO;IAarD,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO;IAavD,MAAM,CAAC,eAAe,IAAI,OAAO,GAAG,IAAI;IAQxC,MAAM,CAAC,iBAAiB,IAAI,OAAO,GAAG,IAAI;IAQpC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAmCzC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAyCzD,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhD,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB1C,eAAe,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IA0BrE,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,gBAAgB;CA6BzB"}
@@ -1,2 +1,311 @@
1
- const c="arkhamjs_";const n=i=>i.ttl?Date.now()-i.timestamp>i.ttl:!1,l=i=>new Blob([i]).size,h=i=>{const e=JSON.stringify(i);return e.length>1e3,e},g=i=>{try{return JSON.parse(i)}catch{return null}};class a{static window=typeof window<"u"?window:{};options;storageCache=new Map;storage;constructor(e={}){this.options={compression:!1,maxSize:5242880,prefix:c,ttl:864e5,type:"session",...e},this.storage=this.getStorage()}static delLocalData(e){try{const t=a.window.localStorage;if(t)return t.removeItem(e),!0}catch{}return!1}static delSessionData(e){try{const t=a.window.sessionStorage;if(t)return t.removeItem(e),!0}catch{}return!1}static getLocalData(e){try{const t=a.window.localStorage;if(t){const r=t.getItem(e);return r?JSON.parse(r):null}}catch{}return null}static getSessionData(e){try{const t=a.window.sessionStorage;if(t){const r=t.getItem(e);return r?JSON.parse(r):null}}catch{}return null}static setLocalData(e,t){try{const r=a.window.localStorage;if(r)return r.setItem(e,JSON.stringify(t)),!0}catch{}return!1}static setSessionData(e,t){try{const r=a.window.sessionStorage;if(r)return r.setItem(e,JSON.stringify(t)),!0}catch{}return!1}static getLocalStorage(){try{return a.window.localStorage||null}catch{return null}}static getSessionStorage(){try{return a.window.sessionStorage||null}catch{return null}}async getStorageData(e){if(!this.isStorageAvailable())return null;const t=this.getPrefixedKey(e);if(this.storageCache.has(t))return this.storageCache.get(t);try{const r=this.storage.getItem(t);if(!r)return null;const s=g(r);return s?n(s)?(this.storage.removeItem(t),this.storageCache.delete(t),null):(this.storageCache.set(t,s.value),s.value):null}catch{return null}}async setStorageData(e,t){if(!this.isStorageAvailable())return!1;const r=this.getPrefixedKey(e);try{Math.random()<.1&&this.cleanExpiredData();const s={timestamp:Date.now(),ttl:this.options.ttl,value:t},o=this.options.compression?h(s):JSON.stringify(s);return this.validateSize(o)?(this.storage.setItem(r,o),this.storageCache.set(r,t),!0):!1}catch{return!1}}async removeStorageData(e){if(!this.isStorageAvailable())return!1;const t=this.getPrefixedKey(e);try{return this.storage.removeItem(t),this.storageCache.delete(t),!0}catch{return!1}}async clearStorageData(){if(!this.isStorageAvailable())return!1;try{const e=[];for(let t=0;t<this.storage.length;t++){const r=this.storage.key(t);r?.startsWith(this.options.prefix)&&e.push(r)}return e.forEach(t=>{this.storage.removeItem(t),this.storageCache.delete(t)}),!0}catch{return!1}}getStorageStats(){if(!this.isStorageAvailable())return{available:0,total:0,used:0};let e=0;const t=[];for(let r=0;r<this.storage.length;r++){const s=this.storage.key(r);if(s?.startsWith(this.options.prefix)){t.push(s);const o=this.storage.getItem(s);o&&(e+=l(o))}}return{available:this.options.maxSize-e,total:this.options.maxSize,used:e}}getStorage(){try{const{type:e}=this.options;return(e==="local"?a.window.localStorage:a.window.sessionStorage)||null}catch{return null}}getPrefixedKey(e){return`${this.options.prefix}${e}`}isStorageAvailable(){return this.storage!==null}validateSize(e){return l(e)<=this.options.maxSize}cleanExpiredData(){if(!this.isStorageAvailable())return;const e=[];for(let t=0;t<this.storage.length;t++){const r=this.storage.key(t);r?.startsWith(this.options.prefix)&&e.push(r)}e.forEach(t=>{try{const r=this.storage.getItem(t);if(r){const s=g(r);s&&n(s)&&(this.storage.removeItem(t),this.storageCache.delete(t))}}catch{this.storage.removeItem(t),this.storageCache.delete(t)}})}}export{a as BrowserStorage};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL0Jyb3dzZXJTdG9yYWdlL0Jyb3dzZXJTdG9yYWdlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyU3RvcmFnZU9wdGlvbnMsXG4gIFN0b3JhZ2VEYXRhLFxuICBTdG9yYWdlSW50ZXJmYWNlXG59IGZyb20gJy4uL3R5cGVzL21haW4nO1xuXG4vLyBDb25zdGFudHMgZm9yIG9wdGltaXphdGlvblxuY29uc3QgREVGQVVMVF9QUkVGSVggPSAnYXJraGFtanNfJztcbmNvbnN0IERFRkFVTFRfTUFYX1NJWkUgPSA1ICogMTAyNCAqIDEwMjQ7IC8vIDVNQlxuY29uc3QgREVGQVVMVF9UVEwgPSAyNCAqIDYwICogNjAgKiAxMDAwOyAvLyAyNCBob3Vyc1xuXG4vLyBVdGlsaXR5IGZ1bmN0aW9uc1xuY29uc3QgaXNFeHBpcmVkID0gKGRhdGE6IFN0b3JhZ2VEYXRhKTogYm9vbGVhbiA9PiB7XG4gIGlmKCFkYXRhLnR0bCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gRGF0ZS5ub3coKSAtIGRhdGEudGltZXN0YW1wID4gZGF0YS50dGw7XG59O1xuXG5jb25zdCBnZXRTdG9yYWdlU2l6ZSA9IChkYXRhOiBzdHJpbmcpOiBudW1iZXIgPT4gbmV3IEJsb2IoW2RhdGFdKS5zaXplO1xuXG5jb25zdCBjb21wcmVzc0RhdGEgPSAoZGF0YTogYW55KTogc3RyaW5nID0+IHtcbiAgLy8gU2ltcGxlIGNvbXByZXNzaW9uIGZvciBsYXJnZSBvYmplY3RzXG4gIGNvbnN0IGpzb25TdHJpbmcgPSBKU09OLnN0cmluZ2lmeShkYXRhKTtcbiAgaWYoanNvblN0cmluZy5sZW5ndGggPiAxMDAwKSB7XG4gICAgLy8gRm9yIGxhcmdlIGRhdGEsIHdlIGNvdWxkIGltcGxlbWVudCBhY3R1YWwgY29tcHJlc3Npb24gaGVyZVxuICAgIC8vIEZvciBub3csIHdlJ2xsIHVzZSBhIHNpbXBsZSBhcHByb2FjaFxuICAgIHJldHVybiBqc29uU3RyaW5nO1xuICB9XG4gIHJldHVybiBqc29uU3RyaW5nO1xufTtcblxuY29uc3QgZGVjb21wcmVzc0RhdGEgPSAoZGF0YTogc3RyaW5nKTogYW55ID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgfSBjYXRjaHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEJyb3dzZXJTdG9yYWdlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgd2luZG93OiBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fSBhcyBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxCcm93c2VyU3RvcmFnZU9wdGlvbnM+O1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZTogU3RvcmFnZUludGVyZmFjZSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQnJvd3NlclN0b3JhZ2VPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBjb21wcmVzc2lvbjogZmFsc2UsXG4gICAgICBtYXhTaXplOiBERUZBVUxUX01BWF9TSVpFLFxuICAgICAgcHJlZml4OiBERUZBVUxUX1BSRUZJWCxcbiAgICAgIHR0bDogREVGQVVMVF9UVEwsXG4gICAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMuc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZSgpO1xuICB9XG5cbiAgLy8gU3RhdGljIG1ldGhvZHMgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHlcbiAgc3RhdGljIGRlbExvY2FsRGF0YShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gQnJvd3NlclN0b3JhZ2Uud2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gY2F0Y2h7XG4gICAgICAvLyBTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGRlbFNlc3Npb25EYXRhKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2UgPSBCcm93c2VyU3RvcmFnZS53aW5kb3cuc2Vzc2lvblN0b3JhZ2U7XG4gICAgICBpZihzdG9yYWdlKSB7XG4gICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoe1xuICAgICAgLy8gU3RvcmFnZSBub3QgYXZhaWxhYmxlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2NhbERhdGEoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gQnJvd3NlclN0b3JhZ2Uud2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gaXRlbSA/IEpTT04ucGFyc2UoaXRlbSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0gY2F0Y2h7XG4gICAgICAvLyBTdG9yYWdlIG5vdCBhdmFpbGFibGUgb3IgaW52YWxpZCBKU09OXG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFNlc3Npb25EYXRhKGtleTogc3RyaW5nKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IEJyb3dzZXJTdG9yYWdlLndpbmRvdy5zZXNzaW9uU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gaXRlbSA/IEpTT04ucGFyc2UoaXRlbSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0gY2F0Y2h7XG4gICAgICAvLyBTdG9yYWdlIG5vdCBhdmFpbGFibGUgb3IgaW52YWxpZCBKU09OXG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIHNldExvY2FsRGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gQnJvd3NlclN0b3JhZ2Uud2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaHtcbiAgICAgIC8vIFN0b3JhZ2Ugbm90IGF2YWlsYWJsZSBvciBxdW90YSBleGNlZWRlZFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgc2V0U2Vzc2lvbkRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IEJyb3dzZXJTdG9yYWdlLndpbmRvdy5zZXNzaW9uU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaHtcbiAgICAgIC8vIFN0b3JhZ2Ugbm90IGF2YWlsYWJsZSBvciBxdW90YSBleGNlZWRlZFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9jYWxTdG9yYWdlKCk6IFN0b3JhZ2UgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJyb3dzZXJTdG9yYWdlLndpbmRvdy5sb2NhbFN0b3JhZ2UgfHwgbnVsbDtcbiAgICB9IGNhdGNoe1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldFNlc3Npb25TdG9yYWdlKCk6IFN0b3JhZ2UgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJyb3dzZXJTdG9yYWdlLndpbmRvdy5zZXNzaW9uU3RvcmFnZSB8fCBudWxsO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvLyBQdWJsaWMgaW5zdGFuY2UgbWV0aG9kc1xuICBhc3luYyBnZXRTdG9yYWdlRGF0YShrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgaWYoIXRoaXMuaXNTdG9yYWdlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkS2V5ID0gdGhpcy5nZXRQcmVmaXhlZEtleShrZXkpO1xuXG4gICAgLy8gQ2hlY2sgY2FjaGUgZmlyc3RcbiAgICBpZih0aGlzLnN0b3JhZ2VDYWNoZS5oYXMocHJlZml4ZWRLZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdG9yYWdlQ2FjaGUuZ2V0KHByZWZpeGVkS2V5KTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc3RvcmFnZSEuZ2V0SXRlbShwcmVmaXhlZEtleSk7XG4gICAgICBpZighaXRlbSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YSA9IGRlY29tcHJlc3NEYXRhKGl0ZW0pO1xuICAgICAgaWYoIWRhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGRhdGEgaXMgZXhwaXJlZFxuICAgICAgaWYoaXNFeHBpcmVkKGRhdGEpKSB7XG4gICAgICAgIHRoaXMuc3RvcmFnZSEucmVtb3ZlSXRlbShwcmVmaXhlZEtleSk7XG4gICAgICAgIHRoaXMuc3RvcmFnZUNhY2hlLmRlbGV0ZShwcmVmaXhlZEtleSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICAvLyBDYWNoZSB0aGUgcmVzdWx0XG4gICAgICB0aGlzLnN0b3JhZ2VDYWNoZS5zZXQocHJlZml4ZWRLZXksIGRhdGEudmFsdWUpO1xuICAgICAgcmV0dXJuIGRhdGEudmFsdWU7XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHNldFN0b3JhZ2VEYXRhKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYoIXRoaXMuaXNTdG9yYWdlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBwcmVmaXhlZEtleSA9IHRoaXMuZ2V0UHJlZml4ZWRLZXkoa2V5KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDbGVhbiBleHBpcmVkIGRhdGEgcGVyaW9kaWNhbGx5XG4gICAgICBpZihNYXRoLnJhbmRvbSgpIDwgMC4xKSB7IC8vIDEwJSBjaGFuY2UgdG8gY2xlYW5cbiAgICAgICAgdGhpcy5jbGVhbkV4cGlyZWREYXRhKCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0b3JhZ2VEYXRhOiBTdG9yYWdlRGF0YSA9IHtcbiAgICAgICAgdGltZXN0YW1wOiBEYXRlLm5vdygpLFxuICAgICAgICB0dGw6IHRoaXMub3B0aW9ucy50dGwsXG4gICAgICAgIHZhbHVlXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBqc29uU3RyaW5nID0gdGhpcy5vcHRpb25zLmNvbXByZXNzaW9uXG4gICAgICAgID8gY29tcHJlc3NEYXRhKHN0b3JhZ2VEYXRhKVxuICAgICAgICA6IEpTT04uc3RyaW5naWZ5KHN0b3JhZ2VEYXRhKTtcblxuICAgICAgLy8gVmFsaWRhdGUgc2l6ZVxuICAgICAgaWYoIXRoaXMudmFsaWRhdGVTaXplKGpzb25TdHJpbmcpKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUud2FybihgU3RvcmFnZSBkYXRhIGV4Y2VlZHMgbWF4aW11bSBzaXplIGZvciBrZXk6ICR7a2V5fWApO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RvcmFnZSEuc2V0SXRlbShwcmVmaXhlZEtleSwganNvblN0cmluZyk7XG5cbiAgICAgIC8vIFVwZGF0ZSBjYWNoZVxuICAgICAgdGhpcy5zdG9yYWdlQ2FjaGUuc2V0KHByZWZpeGVkS2V5LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2V0IHN0b3JhZ2UgZGF0YTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlU3RvcmFnZURhdGEoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZighdGhpcy5pc1N0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkS2V5ID0gdGhpcy5nZXRQcmVmaXhlZEtleShrZXkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RvcmFnZSEucmVtb3ZlSXRlbShwcmVmaXhlZEtleSk7XG4gICAgICB0aGlzLnN0b3JhZ2VDYWNoZS5kZWxldGUocHJlZml4ZWRLZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjbGVhclN0b3JhZ2VEYXRhKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmKCF0aGlzLmlzU3RvcmFnZUF2YWlsYWJsZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5zdG9yYWdlIS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2UhLmtleShpKTtcbiAgICAgICAgaWYoa2V5Py5zdGFydHNXaXRoKHRoaXMub3B0aW9ucy5wcmVmaXgpKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yYWdlIS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgIHRoaXMuc3RvcmFnZUNhY2hlLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RvcmFnZVN0YXRzKCk6IHsgYXZhaWxhYmxlOiBudW1iZXI7IHRvdGFsOiBudW1iZXI7IHVzZWQ6IG51bWJlciB9IHtcbiAgICBpZighdGhpcy5pc1N0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuIHthdmFpbGFibGU6IDAsIHRvdGFsOiAwLCB1c2VkOiAwfTtcbiAgICB9XG5cbiAgICBsZXQgdXNlZCA9IDA7XG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnN0b3JhZ2UhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2UhLmtleShpKTtcbiAgICAgIGlmKGtleT8uc3RhcnRzV2l0aCh0aGlzLm9wdGlvbnMucHJlZml4KSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc3RvcmFnZSEuZ2V0SXRlbShrZXkpO1xuICAgICAgICBpZihpdGVtKSB7XG4gICAgICAgICAgdXNlZCArPSBnZXRTdG9yYWdlU2l6ZShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhdmFpbGFibGU6IHRoaXMub3B0aW9ucy5tYXhTaXplIC0gdXNlZCxcbiAgICAgIHRvdGFsOiB0aGlzLm9wdGlvbnMubWF4U2l6ZSxcbiAgICAgIHVzZWRcbiAgICB9O1xuICB9XG5cbiAgLy8gUHJpdmF0ZSBoZWxwZXIgbWV0aG9kc1xuICBwcml2YXRlIGdldFN0b3JhZ2UoKTogU3RvcmFnZUludGVyZmFjZSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7dHlwZX0gPSB0aGlzLm9wdGlvbnM7XG4gICAgICBjb25zdCBzdG9yYWdlID0gdHlwZSA9PT0gJ2xvY2FsJ1xuICAgICAgICA/IEJyb3dzZXJTdG9yYWdlLndpbmRvdy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgOiBCcm93c2VyU3RvcmFnZS53aW5kb3cuc2Vzc2lvblN0b3JhZ2U7XG5cbiAgICAgIHJldHVybiBzdG9yYWdlIHx8IG51bGw7XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UHJlZml4ZWRLZXkoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm9wdGlvbnMucHJlZml4fSR7a2V5fWA7XG4gIH1cblxuICBwcml2YXRlIGlzU3RvcmFnZUF2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlICE9PSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVNpemUoZGF0YTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2l6ZSA9IGdldFN0b3JhZ2VTaXplKGRhdGEpO1xuICAgIHJldHVybiBzaXplIDw9IHRoaXMub3B0aW9ucy5tYXhTaXplO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhbkV4cGlyZWREYXRhKCk6IHZvaWQge1xuICAgIGlmKCF0aGlzLmlzU3RvcmFnZUF2YWlsYWJsZSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5zdG9yYWdlIS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3Qga2V5ID0gdGhpcy5zdG9yYWdlIS5rZXkoaSk7XG4gICAgICBpZihrZXk/LnN0YXJ0c1dpdGgodGhpcy5vcHRpb25zLnByZWZpeCkpIHtcbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JhZ2UhLmdldEl0ZW0oa2V5KTtcbiAgICAgICAgaWYoaXRlbSkge1xuICAgICAgICAgIGNvbnN0IGRhdGEgPSBkZWNvbXByZXNzRGF0YShpdGVtKTtcbiAgICAgICAgICBpZihkYXRhICYmIGlzRXhwaXJlZChkYXRhKSkge1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlIS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgICAgICB0aGlzLnN0b3JhZ2VDYWNoZS5kZWxldGUoa2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2h7XG4gICAgICAgIC8vIFJlbW92ZSBjb3JydXB0ZWQgZGF0YVxuICAgICAgICB0aGlzLnN0b3JhZ2UhLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgdGhpcy5zdG9yYWdlQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICJBQVdBLE1BQU1BLEVBQWlCLFlBS3ZCLE1BQU1DLEVBQWFDLEdBQ2JBLEVBQUssSUFHRixLQUFLLElBQUksRUFBSUEsRUFBSyxVQUFZQSxFQUFLLElBRmpDLEdBS0xDLEVBQWtCRCxHQUF5QixJQUFJLEtBQUssQ0FBQ0EsQ0FBSSxDQUFDLEVBQUUsS0FFNURFLEVBQWdCRixHQUFzQixDQUUxQyxNQUFNRyxFQUFhLEtBQUssVUFBVUgsQ0FBSSxFQUN0QyxPQUFHRyxFQUFXLE9BQVMsSUFHZEEsQ0FHWCxFQUVNQyxFQUFrQkosR0FBc0IsQ0FDNUMsR0FBSSxDQUNGLE9BQU8sS0FBSyxNQUFNQSxDQUFJLENBQ3hCLE1BQU8sQ0FDTCxPQUFPLElBQ1QsQ0FDRixFQUVPLE1BQU1LLENBQWUsQ0FDMUIsT0FBd0IsT0FDdEIsT0FBTyxPQUFXLElBQWMsT0FBUyxDQUFDLEVBRTNCLFFBQ0EsYUFBZSxJQUFJLElBQ25CLFFBRWpCLFlBQVlDLEVBQWlDLENBQUMsRUFBRyxDQUMvQyxLQUFLLFFBQVUsQ0FDYixZQUFhLEdBQ2IsUUFBUyxRQUNULE9BQVFDLEVBQ1IsSUFBSyxNQUNMLEtBQU0sVUFDTixHQUFHRCxDQUNMLEVBRUEsS0FBSyxRQUFVLEtBQUssV0FBVyxDQUNqQyxDQUdBLE9BQU8sYUFBYUUsRUFBc0IsQ0FDeEMsR0FBSSxDQUNGLE1BQU1DLEVBQVVKLEVBQWUsT0FBTyxhQUN0QyxHQUFHSSxFQUNELE9BQUFBLEVBQVEsV0FBV0QsQ0FBRyxFQUNmLEVBRVgsTUFBTyxDQUVQLENBQ0EsTUFBTyxFQUNULENB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S0FBSyxRQUFTLFFBQVFGLENBQUcsRUFDbkNFLElBQ0RNLEdBQVFmLEVBQWVTLENBQUksRUFFL0IsQ0FDRixDQUVBLE1BQU8sQ0FDTCxVQUFXLEtBQUssUUFBUSxRQUFVTSxFQUNsQyxNQUFPLEtBQUssUUFBUSxRQUNwQixLQUFBQSxDQUNGLENBQ0YsQ0FHUSxZQUFzQyxDQUM1QyxHQUFJLENBQ0YsS0FBTSxDQUFDLEtBQUFDLENBQUksRUFBSSxLQUFLLFFBS3BCLE9BSmdCQSxJQUFTLFFBQ3JCWixFQUFlLE9BQU8sYUFDdEJBLEVBQWUsT0FBTyxpQkFFUixJQUNwQixNQUFPLENBQ0wsT0FBTyxJQUNULENBQ0YsQ0FFUSxlQUFlRyxFQUFxQixDQUMxQyxNQUFPLEdBQUcsS0FBSyxRQUFRLE1BQU0sR0FBR0EsQ0FBRyxFQUNyQyxDQUVRLG9CQUE4QixDQUNwQyxPQUFPLEtBQUssVUFBWSxJQUMxQixDQUVRLGFBQWFSLEVBQXVCLENBRTFDLE9BRGFDLEVBQWVELENBQUksR0FDakIsS0FBSyxRQUFRLE9BQzlCLENBRVEsa0JBQXlCLENBQy9CLEdBQUcsQ0FBQyxLQUFLLG1CQUFtQixFQUMxQixPQUdGLE1BQU1jLEVBQWlCLENBQUMsRUFDeEIsUUFBUUMsRUFBSSxFQUFHQSxFQUFJLEtBQUssUUFBUyxPQUFRQSxJQUFLLENBQzVDLE1BQU1QLEVBQU0sS0FBSyxRQUFTLElBQUlPLENBQUMsRUFDNUJQLEdBQUssV0FBVyxLQUFLLFFBQVEsTUFBTSxHQUNwQ00sRUFBSyxLQUFLTixDQUFHLENBRWpCLENBRUFNLEVBQUssUUFBU04sR0FBUSxDQUNwQixHQUFJLENBQ0YsTUFBTUUsRUFBTyxLQUFLLFFBQVMsUUFBUUYsQ0FBRyxFQUN0QyxHQUFHRSxFQUFNLENBQ1AsTUFBTVYsRUFBT0ksRUFBZU0sQ0FBSSxFQUM3QlYsR0FBUUQsRUFBVUMsQ0FBSSxJQUN2QixLQUFLLFFBQVMsV0FBV1EsQ0FBRyxFQUM1QixLQUFLLGFBQWEsT0FBT0EsQ0FBRyxFQUVoQyxDQUNGLE1BQU8sQ0FFTCxLQUFLLFFBQVMsV0FBV0EsQ0FBRyxFQUM1QixLQUFLLGFBQWEsT0FBT0EsQ0FBRyxDQUM5QixDQUNGLENBQUMsQ0FDSCxDQUNGIiwKICAibmFtZXMiOiBbIkRFRkFVTFRfUFJFRklYIiwgImlzRXhwaXJlZCIsICJkYXRhIiwgImdldFN0b3JhZ2VTaXplIiwgImNvbXByZXNzRGF0YSIsICJqc29uU3RyaW5nIiwgImRlY29tcHJlc3NEYXRhIiwgIkJyb3dzZXJTdG9yYWdlIiwgIm9wdGlvbnMiLCAiREVGQVVMVF9QUkVGSVgiLCAia2V5IiwgInN0b3JhZ2UiLCAiaXRlbSIsICJ2YWx1ZSIsICJwcmVmaXhlZEtleSIsICJzdG9yYWdlRGF0YSIsICJrZXlzIiwgImkiLCAidXNlZCIsICJ0eXBlIl0KfQo=
1
+ /**
2
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ function _define_property(obj, key, value) {
5
+ if (key in obj) {
6
+ Object.defineProperty(obj, key, {
7
+ value: value,
8
+ enumerable: true,
9
+ configurable: true,
10
+ writable: true
11
+ });
12
+ } else {
13
+ obj[key] = value;
14
+ }
15
+ return obj;
16
+ }
17
+ const DEFAULT_PREFIX = 'arkhamjs_';
18
+ const DEFAULT_MAX_SIZE = 5 * 1024 * 1024; // 5MB
19
+ const DEFAULT_TTL = 24 * 60 * 60 * 1000; // 24 hours
20
+ const isExpired = (data)=>{
21
+ if (!data.ttl) {
22
+ return false;
23
+ }
24
+ return Date.now() - data.timestamp > data.ttl;
25
+ };
26
+ const getStorageSize = (data)=>new Blob([
27
+ data
28
+ ]).size;
29
+ const compressData = (data)=>{
30
+ const jsonString = JSON.stringify(data);
31
+ if (jsonString.length > 1000) {
32
+ return jsonString;
33
+ }
34
+ return jsonString;
35
+ };
36
+ const decompressData = (data)=>{
37
+ try {
38
+ return JSON.parse(data);
39
+ } catch {
40
+ return null;
41
+ }
42
+ };
43
+ export class BrowserStorage {
44
+ static delLocalData(key) {
45
+ try {
46
+ const storage = BrowserStorage.window.localStorage;
47
+ if (storage) {
48
+ storage.removeItem(key);
49
+ return true;
50
+ }
51
+ } catch {
52
+ // Storage not available
53
+ }
54
+ return false;
55
+ }
56
+ static delSessionData(key) {
57
+ try {
58
+ const storage = BrowserStorage.window.sessionStorage;
59
+ if (storage) {
60
+ storage.removeItem(key);
61
+ return true;
62
+ }
63
+ } catch {
64
+ // Storage not available
65
+ }
66
+ return false;
67
+ }
68
+ static getLocalData(key) {
69
+ try {
70
+ const storage = BrowserStorage.window.localStorage;
71
+ if (storage) {
72
+ const item = storage.getItem(key);
73
+ return item ? JSON.parse(item) : null;
74
+ }
75
+ } catch {
76
+ // Storage not available or invalid JSON
77
+ }
78
+ return null;
79
+ }
80
+ static getSessionData(key) {
81
+ try {
82
+ const storage = BrowserStorage.window.sessionStorage;
83
+ if (storage) {
84
+ const item = storage.getItem(key);
85
+ return item ? JSON.parse(item) : null;
86
+ }
87
+ } catch {
88
+ // Storage not available or invalid JSON
89
+ }
90
+ return null;
91
+ }
92
+ static setLocalData(key, value) {
93
+ try {
94
+ const storage = BrowserStorage.window.localStorage;
95
+ if (storage) {
96
+ storage.setItem(key, JSON.stringify(value));
97
+ return true;
98
+ }
99
+ } catch {
100
+ // Storage not available or quota exceeded
101
+ }
102
+ return false;
103
+ }
104
+ static setSessionData(key, value) {
105
+ try {
106
+ const storage = BrowserStorage.window.sessionStorage;
107
+ if (storage) {
108
+ storage.setItem(key, JSON.stringify(value));
109
+ return true;
110
+ }
111
+ } catch {
112
+ // Storage not available or quota exceeded
113
+ }
114
+ return false;
115
+ }
116
+ static getLocalStorage() {
117
+ try {
118
+ return BrowserStorage.window.localStorage || null;
119
+ } catch {
120
+ return null;
121
+ }
122
+ }
123
+ static getSessionStorage() {
124
+ try {
125
+ return BrowserStorage.window.sessionStorage || null;
126
+ } catch {
127
+ return null;
128
+ }
129
+ }
130
+ async getStorageData(key) {
131
+ if (!this.isStorageAvailable()) {
132
+ return null;
133
+ }
134
+ const prefixedKey = this.getPrefixedKey(key);
135
+ if (this.storageCache.has(prefixedKey)) {
136
+ return this.storageCache.get(prefixedKey);
137
+ }
138
+ try {
139
+ const item = this.storage.getItem(prefixedKey);
140
+ if (!item) {
141
+ return null;
142
+ }
143
+ const data = decompressData(item);
144
+ if (!data) {
145
+ return null;
146
+ }
147
+ if (isExpired(data)) {
148
+ this.storage.removeItem(prefixedKey);
149
+ this.storageCache.delete(prefixedKey);
150
+ return null;
151
+ }
152
+ this.storageCache.set(prefixedKey, data.value);
153
+ return data.value;
154
+ } catch {
155
+ return null;
156
+ }
157
+ }
158
+ async setStorageData(key, value) {
159
+ if (!this.isStorageAvailable()) {
160
+ return false;
161
+ }
162
+ const prefixedKey = this.getPrefixedKey(key);
163
+ try {
164
+ // Clean expired data periodically
165
+ if (Math.random() < 0.1) {
166
+ this.cleanExpiredData();
167
+ }
168
+ const storageData = {
169
+ timestamp: Date.now(),
170
+ ttl: this.options.ttl,
171
+ value
172
+ };
173
+ const jsonString = this.options.compression ? compressData(storageData) : JSON.stringify(storageData);
174
+ if (!this.validateSize(jsonString)) {
175
+ // eslint-disable-next-line no-console
176
+ console.warn(`Storage data exceeds maximum size for key: ${key}`);
177
+ return false;
178
+ }
179
+ this.storage.setItem(prefixedKey, jsonString);
180
+ this.storageCache.set(prefixedKey, value);
181
+ return true;
182
+ } catch (error) {
183
+ // eslint-disable-next-line no-console
184
+ console.error('Failed to set storage data:', error);
185
+ return false;
186
+ }
187
+ }
188
+ async removeStorageData(key) {
189
+ if (!this.isStorageAvailable()) {
190
+ return false;
191
+ }
192
+ const prefixedKey = this.getPrefixedKey(key);
193
+ try {
194
+ this.storage.removeItem(prefixedKey);
195
+ this.storageCache.delete(prefixedKey);
196
+ return true;
197
+ } catch {
198
+ return false;
199
+ }
200
+ }
201
+ async clearStorageData() {
202
+ if (!this.isStorageAvailable()) {
203
+ return false;
204
+ }
205
+ try {
206
+ const keys = [];
207
+ for(let i = 0; i < this.storage.length; i++){
208
+ const key = this.storage.key(i);
209
+ if (key?.startsWith(this.options.prefix)) {
210
+ keys.push(key);
211
+ }
212
+ }
213
+ keys.forEach((key)=>{
214
+ this.storage.removeItem(key);
215
+ this.storageCache.delete(key);
216
+ });
217
+ return true;
218
+ } catch {
219
+ return false;
220
+ }
221
+ }
222
+ getStorageStats() {
223
+ if (!this.isStorageAvailable()) {
224
+ return {
225
+ available: 0,
226
+ total: 0,
227
+ used: 0
228
+ };
229
+ }
230
+ let used = 0;
231
+ const keys = [];
232
+ for(let i = 0; i < this.storage.length; i++){
233
+ const key = this.storage.key(i);
234
+ if (key?.startsWith(this.options.prefix)) {
235
+ keys.push(key);
236
+ const item = this.storage.getItem(key);
237
+ if (item) {
238
+ used += getStorageSize(item);
239
+ }
240
+ }
241
+ }
242
+ return {
243
+ available: this.options.maxSize - used,
244
+ total: this.options.maxSize,
245
+ used
246
+ };
247
+ }
248
+ getStorage() {
249
+ try {
250
+ const { type } = this.options;
251
+ const storage = type === 'local' ? BrowserStorage.window.localStorage : BrowserStorage.window.sessionStorage;
252
+ return storage || null;
253
+ } catch {
254
+ return null;
255
+ }
256
+ }
257
+ getPrefixedKey(key) {
258
+ return `${this.options.prefix}${key}`;
259
+ }
260
+ isStorageAvailable() {
261
+ return this.storage !== null;
262
+ }
263
+ validateSize(data) {
264
+ const size = getStorageSize(data);
265
+ return size <= this.options.maxSize;
266
+ }
267
+ cleanExpiredData() {
268
+ if (!this.isStorageAvailable()) {
269
+ return;
270
+ }
271
+ const keys = [];
272
+ for(let i = 0; i < this.storage.length; i++){
273
+ const key = this.storage.key(i);
274
+ if (key?.startsWith(this.options.prefix)) {
275
+ keys.push(key);
276
+ }
277
+ }
278
+ keys.forEach((key)=>{
279
+ try {
280
+ const item = this.storage.getItem(key);
281
+ if (item) {
282
+ const data = decompressData(item);
283
+ if (data && isExpired(data)) {
284
+ this.storage.removeItem(key);
285
+ this.storageCache.delete(key);
286
+ }
287
+ }
288
+ } catch {
289
+ this.storage.removeItem(key);
290
+ this.storageCache.delete(key);
291
+ }
292
+ });
293
+ }
294
+ constructor(options = {}){
295
+ _define_property(this, "options", void 0);
296
+ _define_property(this, "storageCache", new Map());
297
+ _define_property(this, "storage", void 0);
298
+ this.options = {
299
+ compression: false,
300
+ maxSize: DEFAULT_MAX_SIZE,
301
+ prefix: DEFAULT_PREFIX,
302
+ ttl: DEFAULT_TTL,
303
+ type: 'session',
304
+ ...options
305
+ };
306
+ this.storage = this.getStorage();
307
+ }
308
+ }
309
+ _define_property(BrowserStorage, "window", typeof window !== 'undefined' ? window : {});
310
+
311
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2Fya2hhbWpzL3BhY2thZ2VzL2Fya2hhbWpzLXN0b3JhZ2UtYnJvd3Nlci9zcmMvQnJvd3NlclN0b3JhZ2UvQnJvd3NlclN0b3JhZ2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlclN0b3JhZ2VPcHRpb25zLFxuICBTdG9yYWdlRGF0YSxcbiAgU3RvcmFnZUludGVyZmFjZVxufSBmcm9tICcuLi90eXBlcy9tYWluLmpzJztcblxuY29uc3QgREVGQVVMVF9QUkVGSVggPSAnYXJraGFtanNfJztcbmNvbnN0IERFRkFVTFRfTUFYX1NJWkUgPSA1ICogMTAyNCAqIDEwMjQ7IC8vIDVNQlxuY29uc3QgREVGQVVMVF9UVEwgPSAyNCAqIDYwICogNjAgKiAxMDAwOyAvLyAyNCBob3Vyc1xuXG5jb25zdCBpc0V4cGlyZWQgPSAoZGF0YTogU3RvcmFnZURhdGEpOiBib29sZWFuID0+IHtcbiAgaWYoIWRhdGEudHRsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBEYXRlLm5vdygpIC0gZGF0YS50aW1lc3RhbXAgPiBkYXRhLnR0bDtcbn07XG5cbmNvbnN0IGdldFN0b3JhZ2VTaXplID0gKGRhdGE6IHN0cmluZyk6IG51bWJlciA9PiBuZXcgQmxvYihbZGF0YV0pLnNpemU7XG5cbmNvbnN0IGNvbXByZXNzRGF0YSA9IChkYXRhOiBhbnkpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBqc29uU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gIGlmKGpzb25TdHJpbmcubGVuZ3RoID4gMTAwMCkge1xuICAgIHJldHVybiBqc29uU3RyaW5nO1xuICB9XG4gIHJldHVybiBqc29uU3RyaW5nO1xufTtcblxuY29uc3QgZGVjb21wcmVzc0RhdGEgPSAoZGF0YTogc3RyaW5nKTogYW55ID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgfSBjYXRjaHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEJyb3dzZXJTdG9yYWdlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgd2luZG93OiBXaW5kb3cgJiB0eXBlb2YgZ2xvYmFsVGhpcyA9XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fSBhcyBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxCcm93c2VyU3RvcmFnZU9wdGlvbnM+O1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VDYWNoZSA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZTogU3RvcmFnZUludGVyZmFjZSB8IG51bGw7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQnJvd3NlclN0b3JhZ2VPcHRpb25zID0ge30pIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBjb21wcmVzc2lvbjogZmFsc2UsXG4gICAgICBtYXhTaXplOiBERUZBVUxUX01BWF9TSVpFLFxuICAgICAgcHJlZml4OiBERUZBVUxUX1BSRUZJWCxcbiAgICAgIHR0bDogREVGQVVMVF9UVEwsXG4gICAgICB0eXBlOiAnc2Vzc2lvbicsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMuc3RvcmFnZSA9IHRoaXMuZ2V0U3RvcmFnZSgpO1xuICB9XG5cbiAgc3RhdGljIGRlbExvY2FsRGF0YShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gQnJvd3NlclN0b3JhZ2Uud2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0gY2F0Y2h7XG4gICAgICAvLyBTdG9yYWdlIG5vdCBhdmFpbGFibGVcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3RhdGljIGRlbFNlc3Npb25EYXRhKGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2UgPSBCcm93c2VyU3RvcmFnZS53aW5kb3cuc2Vzc2lvblN0b3JhZ2U7XG4gICAgICBpZihzdG9yYWdlKSB7XG4gICAgICAgIHN0b3JhZ2UucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGNhdGNoe1xuICAgICAgLy8gU3RvcmFnZSBub3QgYXZhaWxhYmxlXG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRMb2NhbERhdGEoa2V5OiBzdHJpbmcpOiBhbnkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gQnJvd3NlclN0b3JhZ2Uud2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gaXRlbSA/IEpTT04ucGFyc2UoaXRlbSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0gY2F0Y2h7XG4gICAgICAvLyBTdG9yYWdlIG5vdCBhdmFpbGFibGUgb3IgaW52YWxpZCBKU09OXG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIGdldFNlc3Npb25EYXRhKGtleTogc3RyaW5nKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IEJyb3dzZXJTdG9yYWdlLndpbmRvdy5zZXNzaW9uU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICAgICAgICByZXR1cm4gaXRlbSA/IEpTT04ucGFyc2UoaXRlbSkgOiBudWxsO1xuICAgICAgfVxuICAgIH0gY2F0Y2h7XG4gICAgICAvLyBTdG9yYWdlIG5vdCBhdmFpbGFibGUgb3IgaW52YWxpZCBKU09OXG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3RhdGljIHNldExvY2FsRGF0YShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlID0gQnJvd3NlclN0b3JhZ2Uud2luZG93LmxvY2FsU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaHtcbiAgICAgIC8vIFN0b3JhZ2Ugbm90IGF2YWlsYWJsZSBvciBxdW90YSBleGNlZWRlZFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgc2V0U2Vzc2lvbkRhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IEJyb3dzZXJTdG9yYWdlLndpbmRvdy5zZXNzaW9uU3RvcmFnZTtcbiAgICAgIGlmKHN0b3JhZ2UpIHtcbiAgICAgICAgc3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSBjYXRjaHtcbiAgICAgIC8vIFN0b3JhZ2Ugbm90IGF2YWlsYWJsZSBvciBxdW90YSBleGNlZWRlZFxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdGF0aWMgZ2V0TG9jYWxTdG9yYWdlKCk6IFN0b3JhZ2UgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJyb3dzZXJTdG9yYWdlLndpbmRvdy5sb2NhbFN0b3JhZ2UgfHwgbnVsbDtcbiAgICB9IGNhdGNoe1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGdldFNlc3Npb25TdG9yYWdlKCk6IFN0b3JhZ2UgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEJyb3dzZXJTdG9yYWdlLndpbmRvdy5zZXNzaW9uU3RvcmFnZSB8fCBudWxsO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBnZXRTdG9yYWdlRGF0YShrZXk6IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgaWYoIXRoaXMuaXNTdG9yYWdlQXZhaWxhYmxlKCkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkS2V5ID0gdGhpcy5nZXRQcmVmaXhlZEtleShrZXkpO1xuXG4gICAgaWYodGhpcy5zdG9yYWdlQ2FjaGUuaGFzKHByZWZpeGVkS2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZUNhY2hlLmdldChwcmVmaXhlZEtleSk7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN0b3JhZ2UhLmdldEl0ZW0ocHJlZml4ZWRLZXkpO1xuICAgICAgaWYoIWl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRhdGEgPSBkZWNvbXByZXNzRGF0YShpdGVtKTtcbiAgICAgIGlmKCFkYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZihpc0V4cGlyZWQoZGF0YSkpIHtcbiAgICAgICAgdGhpcy5zdG9yYWdlIS5yZW1vdmVJdGVtKHByZWZpeGVkS2V5KTtcbiAgICAgICAgdGhpcy5zdG9yYWdlQ2FjaGUuZGVsZXRlKHByZWZpeGVkS2V5KTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc3RvcmFnZUNhY2hlLnNldChwcmVmaXhlZEtleSwgZGF0YS52YWx1ZSk7XG4gICAgICByZXR1cm4gZGF0YS52YWx1ZTtcbiAgICB9IGNhdGNoe1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2V0U3RvcmFnZURhdGEoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZighdGhpcy5pc1N0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkS2V5ID0gdGhpcy5nZXRQcmVmaXhlZEtleShrZXkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIC8vIENsZWFuIGV4cGlyZWQgZGF0YSBwZXJpb2RpY2FsbHlcbiAgICAgIGlmKE1hdGgucmFuZG9tKCkgPCAwLjEpIHsgLy8gMTAlIGNoYW5jZSB0byBjbGVhblxuICAgICAgICB0aGlzLmNsZWFuRXhwaXJlZERhdGEoKTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgc3RvcmFnZURhdGE6IFN0b3JhZ2VEYXRhID0ge1xuICAgICAgICB0aW1lc3RhbXA6IERhdGUubm93KCksXG4gICAgICAgIHR0bDogdGhpcy5vcHRpb25zLnR0bCxcbiAgICAgICAgdmFsdWVcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSB0aGlzLm9wdGlvbnMuY29tcHJlc3Npb25cbiAgICAgICAgPyBjb21wcmVzc0RhdGEoc3RvcmFnZURhdGEpXG4gICAgICAgIDogSlNPTi5zdHJpbmdpZnkoc3RvcmFnZURhdGEpO1xuXG4gICAgICBpZighdGhpcy52YWxpZGF0ZVNpemUoanNvblN0cmluZykpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS53YXJuKGBTdG9yYWdlIGRhdGEgZXhjZWVkcyBtYXhpbXVtIHNpemUgZm9yIGtleTogJHtrZXl9YCk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zdG9yYWdlIS5zZXRJdGVtKHByZWZpeGVkS2V5LCBqc29uU3RyaW5nKTtcblxuICAgICAgdGhpcy5zdG9yYWdlQ2FjaGUuc2V0KHByZWZpeGVkS2V5LCB2YWx1ZSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2V0IHN0b3JhZ2UgZGF0YTonLCBlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVtb3ZlU3RvcmFnZURhdGEoa2V5OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBpZighdGhpcy5pc1N0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHByZWZpeGVkS2V5ID0gdGhpcy5nZXRQcmVmaXhlZEtleShrZXkpO1xuXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuc3RvcmFnZSEucmVtb3ZlSXRlbShwcmVmaXhlZEtleSk7XG4gICAgICB0aGlzLnN0b3JhZ2VDYWNoZS5kZWxldGUocHJlZml4ZWRLZXkpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjbGVhclN0b3JhZ2VEYXRhKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmKCF0aGlzLmlzU3RvcmFnZUF2YWlsYWJsZSgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5zdG9yYWdlIS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2UhLmtleShpKTtcbiAgICAgICAgaWYoa2V5Py5zdGFydHNXaXRoKHRoaXMub3B0aW9ucy5wcmVmaXgpKSB7XG4gICAgICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yYWdlIS5yZW1vdmVJdGVtKGtleSk7XG4gICAgICAgIHRoaXMuc3RvcmFnZUNhY2hlLmRlbGV0ZShrZXkpO1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgZ2V0U3RvcmFnZVN0YXRzKCk6IHsgYXZhaWxhYmxlOiBudW1iZXI7IHRvdGFsOiBudW1iZXI7IHVzZWQ6IG51bWJlciB9IHtcbiAgICBpZighdGhpcy5pc1N0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuIHthdmFpbGFibGU6IDAsIHRvdGFsOiAwLCB1c2VkOiAwfTtcbiAgICB9XG5cbiAgICBsZXQgdXNlZCA9IDA7XG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBbXTtcblxuICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLnN0b3JhZ2UhLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrZXkgPSB0aGlzLnN0b3JhZ2UhLmtleShpKTtcbiAgICAgIGlmKGtleT8uc3RhcnRzV2l0aCh0aGlzLm9wdGlvbnMucHJlZml4KSkge1xuICAgICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuc3RvcmFnZSEuZ2V0SXRlbShrZXkpO1xuICAgICAgICBpZihpdGVtKSB7XG4gICAgICAgICAgdXNlZCArPSBnZXRTdG9yYWdlU2l6ZShpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhdmFpbGFibGU6IHRoaXMub3B0aW9ucy5tYXhTaXplIC0gdXNlZCxcbiAgICAgIHRvdGFsOiB0aGlzLm9wdGlvbnMubWF4U2l6ZSxcbiAgICAgIHVzZWRcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdG9yYWdlKCk6IFN0b3JhZ2VJbnRlcmZhY2UgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3R5cGV9ID0gdGhpcy5vcHRpb25zO1xuICAgICAgY29uc3Qgc3RvcmFnZSA9IHR5cGUgPT09ICdsb2NhbCdcbiAgICAgICAgPyBCcm93c2VyU3RvcmFnZS53aW5kb3cubG9jYWxTdG9yYWdlXG4gICAgICAgIDogQnJvd3NlclN0b3JhZ2Uud2luZG93LnNlc3Npb25TdG9yYWdlO1xuXG4gICAgICByZXR1cm4gc3RvcmFnZSB8fCBudWxsO1xuICAgIH0gY2F0Y2h7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByZWZpeGVkS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5vcHRpb25zLnByZWZpeH0ke2tleX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1N0b3JhZ2VBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZSAhPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTaXplKGRhdGE6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNpemUgPSBnZXRTdG9yYWdlU2l6ZShkYXRhKTtcbiAgICByZXR1cm4gc2l6ZSA8PSB0aGlzLm9wdGlvbnMubWF4U2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYW5FeHBpcmVkRGF0YSgpOiB2b2lkIHtcbiAgICBpZighdGhpcy5pc1N0b3JhZ2VBdmFpbGFibGUoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHRoaXMuc3RvcmFnZSEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGtleSA9IHRoaXMuc3RvcmFnZSEua2V5KGkpO1xuICAgICAgaWYoa2V5Py5zdGFydHNXaXRoKHRoaXMub3B0aW9ucy5wcmVmaXgpKSB7XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5zdG9yYWdlIS5nZXRJdGVtKGtleSk7XG4gICAgICAgIGlmKGl0ZW0pIHtcbiAgICAgICAgICBjb25zdCBkYXRhID0gZGVjb21wcmVzc0RhdGEoaXRlbSk7XG4gICAgICAgICAgaWYoZGF0YSAmJiBpc0V4cGlyZWQoZGF0YSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZSEucmVtb3ZlSXRlbShrZXkpO1xuICAgICAgICAgICAgdGhpcy5zdG9yYWdlQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoe1xuICAgICAgICB0aGlzLnN0b3JhZ2UhLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICAgICAgdGhpcy5zdG9yYWdlQ2FjaGUuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJERUZBVUxUX1BSRUZJWCIsIkRFRkFVTFRfTUFYX1NJWkUiLCJERUZBVUxUX1RUTCIsImlzRXhwaXJlZCIsImRhdGEiLCJ0dGwiLCJEYXRlIiwibm93IiwidGltZXN0YW1wIiwiZ2V0U3RvcmFnZVNpemUiLCJCbG9iIiwic2l6ZSIsImNvbXByZXNzRGF0YSIsImpzb25TdHJpbmciLCJKU09OIiwic3RyaW5naWZ5IiwibGVuZ3RoIiwiZGVjb21wcmVzc0RhdGEiLCJwYXJzZSIsIkJyb3dzZXJTdG9yYWdlIiwiZGVsTG9jYWxEYXRhIiwia2V5Iiwic3RvcmFnZSIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsInJlbW92ZUl0ZW0iLCJkZWxTZXNzaW9uRGF0YSIsInNlc3Npb25TdG9yYWdlIiwiZ2V0TG9jYWxEYXRhIiwiaXRlbSIsImdldEl0ZW0iLCJnZXRTZXNzaW9uRGF0YSIsInNldExvY2FsRGF0YSIsInZhbHVlIiwic2V0SXRlbSIsInNldFNlc3Npb25EYXRhIiwiZ2V0TG9jYWxTdG9yYWdlIiwiZ2V0U2Vzc2lvblN0b3JhZ2UiLCJnZXRTdG9yYWdlRGF0YSIsImlzU3RvcmFnZUF2YWlsYWJsZSIsInByZWZpeGVkS2V5IiwiZ2V0UHJlZml4ZWRLZXkiLCJzdG9yYWdlQ2FjaGUiLCJoYXMiLCJnZXQiLCJkZWxldGUiLCJzZXQiLCJzZXRTdG9yYWdlRGF0YSIsIk1hdGgiLCJyYW5kb20iLCJjbGVhbkV4cGlyZWREYXRhIiwic3RvcmFnZURhdGEiLCJvcHRpb25zIiwiY29tcHJlc3Npb24iLCJ2YWxpZGF0ZVNpemUiLCJjb25zb2xlIiwid2FybiIsImVycm9yIiwicmVtb3ZlU3RvcmFnZURhdGEiLCJjbGVhclN0b3JhZ2VEYXRhIiwia2V5cyIsImkiLCJzdGFydHNXaXRoIiwicHJlZml4IiwicHVzaCIsImZvckVhY2giLCJnZXRTdG9yYWdlU3RhdHMiLCJhdmFpbGFibGUiLCJ0b3RhbCIsInVzZWQiLCJtYXhTaXplIiwiZ2V0U3RvcmFnZSIsInR5cGUiLCJNYXAiXSwibWFwcGluZ3MiOiJBQUFBOzs7Q0FHQzs7Ozs7Ozs7Ozs7OztBQU9ELE1BQU1BLGlCQUFpQjtBQUN2QixNQUFNQyxtQkFBbUIsSUFBSSxPQUFPLE1BQU0sTUFBTTtBQUNoRCxNQUFNQyxjQUFjLEtBQUssS0FBSyxLQUFLLE1BQU0sV0FBVztBQUVwRCxNQUFNQyxZQUFZLENBQUNDO0lBQ2pCLElBQUcsQ0FBQ0EsS0FBS0MsR0FBRyxFQUFFO1FBQ1osT0FBTztJQUNUO0lBQ0EsT0FBT0MsS0FBS0MsR0FBRyxLQUFLSCxLQUFLSSxTQUFTLEdBQUdKLEtBQUtDLEdBQUc7QUFDL0M7QUFFQSxNQUFNSSxpQkFBaUIsQ0FBQ0wsT0FBeUIsSUFBSU0sS0FBSztRQUFDTjtLQUFLLEVBQUVPLElBQUk7QUFFdEUsTUFBTUMsZUFBZSxDQUFDUjtJQUNwQixNQUFNUyxhQUFhQyxLQUFLQyxTQUFTLENBQUNYO0lBQ2xDLElBQUdTLFdBQVdHLE1BQU0sR0FBRyxNQUFNO1FBQzNCLE9BQU9IO0lBQ1Q7SUFDQSxPQUFPQTtBQUNUO0FBRUEsTUFBTUksaUJBQWlCLENBQUNiO0lBQ3RCLElBQUk7UUFDRixPQUFPVSxLQUFLSSxLQUFLLENBQUNkO0lBQ3BCLEVBQUUsT0FBSztRQUNMLE9BQU87SUFDVDtBQUNGO0FBRUEsT0FBTyxNQUFNZTtJQXFCWCxPQUFPQyxhQUFhQyxHQUFXLEVBQVc7UUFDeEMsSUFBSTtZQUNGLE1BQU1DLFVBQVVILGVBQWVJLE1BQU0sQ0FBQ0MsWUFBWTtZQUNsRCxJQUFHRixTQUFTO2dCQUNWQSxRQUFRRyxVQUFVLENBQUNKO2dCQUNuQixPQUFPO1lBQ1Q7UUFDRixFQUFFLE9BQUs7UUFDTCx3QkFBd0I7UUFDMUI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPSyxlQUFlTCxHQUFXLEVBQVc7UUFDMUMsSUFBSTtZQUNGLE1BQU1DLFVBQVVILGVBQWVJLE1BQU0sQ0FBQ0ksY0FBYztZQUNwRCxJQUFHTCxTQUFTO2dCQUNWQSxRQUFRRyxVQUFVLENBQUNKO2dCQUNuQixPQUFPO1lBQ1Q7UUFDRixFQUFFLE9BQUs7UUFDTCx3QkFBd0I7UUFDMUI7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPTyxhQUFhUCxHQUFXLEVBQU87UUFDcEMsSUFBSTtZQUNGLE1BQU1DLFVBQVVILGVBQWVJLE1BQU0sQ0FBQ0MsWUFBWTtZQUNsRCxJQUFHRixTQUFTO2dCQUNWLE1BQU1PLE9BQU9QLFFBQVFRLE9BQU8sQ0FBQ1Q7Z0JBQzdCLE9BQU9RLE9BQU9mLEtBQUtJLEtBQUssQ0FBQ1csUUFBUTtZQUNuQztRQUNGLEVBQUUsT0FBSztRQUNMLHdDQUF3QztRQUMxQztRQUNBLE9BQU87SUFDVDtJQUVBLE9BQU9FLGVBQWVWLEdBQVcsRUFBTztRQUN0QyxJQUFJO1lBQ0YsTUFBTUMsVUFBVUgsZUFBZUksTUFBTSxDQUFDSSxjQUFjO1lBQ3BELElBQUdMLFNBQVM7Z0JBQ1YsTUFBTU8sT0FBT1AsUUFBUVEsT0FBTyxDQUFDVDtnQkFDN0IsT0FBT1EsT0FBT2YsS0FBS0ksS0FBSyxDQUFDVyxRQUFRO1lBQ25DO1FBQ0YsRUFBRSxPQUFLO1FBQ0wsd0NBQXdDO1FBQzFDO1FBQ0EsT0FBTztJQUNUO0lBRUEsT0FBT0csYUFBYVgsR0FBVyxFQUFFWSxLQUFVLEVBQVc7UUFDcEQsSUFBSTtZQUNGLE1BQU1YLFVBQVVILGVBQWVJLE1BQU0sQ0FBQ0MsWUFBWTtZQUNsRCxJQUFHRixTQUFTO2dCQUNWQSxRQUFRWSxPQUFPLENBQUNiLEtBQUtQLEtBQUtDLFNBQVMsQ0FBQ2tCO2dCQUNwQyxPQUFPO1lBQ1Q7UUFDRixFQUFFLE9BQUs7UUFDTCwwQ0FBMEM7UUFDNUM7UUFDQSxPQUFPO0lBQ1Q7SUFFQSxPQUFPRSxlQUFlZCxHQUFXLEVBQUVZLEtBQVUsRUFBVztRQUN0RCxJQUFJO1lBQ0YsTUFBTVgsVUFBVUgsZUFBZUksTUFBTSxDQUFDSSxjQUFjO1lBQ3BELElBQUdMLFNBQVM7Z0JBQ1ZBLFFBQVFZLE9BQU8sQ0FBQ2IsS0FBS1AsS0FBS0MsU0FBUyxDQUFDa0I7Z0JBQ3BDLE9BQU87WUFDVDtRQUNGLEVBQUUsT0FBSztRQUNMLDBDQUEwQztRQUM1QztRQUNBLE9BQU87SUFDVDtJQUVBLE9BQU9HLGtCQUFrQztRQUN2QyxJQUFJO1lBQ0YsT0FBT2pCLGVBQWVJLE1BQU0sQ0FBQ0MsWUFBWSxJQUFJO1FBQy9DLEVBQUUsT0FBSztZQUNMLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT2Esb0JBQW9DO1FBQ3pDLElBQUk7WUFDRixPQUFPbEIsZUFBZUksTUFBTSxDQUFDSSxjQUFjLElBQUk7UUFDakQsRUFBRSxPQUFLO1lBQ0wsT0FBTztRQUNUO0lBQ0Y7SUFFQSxNQUFNVyxlQUFlakIsR0FBVyxFQUFnQjtRQUM5QyxJQUFHLENBQUMsSUFBSSxDQUFDa0Isa0JBQWtCLElBQUk7WUFDN0IsT0FBTztRQUNUO1FBRUEsTUFBTUMsY0FBYyxJQUFJLENBQUNDLGNBQWMsQ0FBQ3BCO1FBRXhDLElBQUcsSUFBSSxDQUFDcUIsWUFBWSxDQUFDQyxHQUFHLENBQUNILGNBQWM7WUFDckMsT0FBTyxJQUFJLENBQUNFLFlBQVksQ0FBQ0UsR0FBRyxDQUFDSjtRQUMvQjtRQUVBLElBQUk7WUFDRixNQUFNWCxPQUFPLElBQUksQ0FBQ1AsT0FBTyxDQUFFUSxPQUFPLENBQUNVO1lBQ25DLElBQUcsQ0FBQ1gsTUFBTTtnQkFDUixPQUFPO1lBQ1Q7WUFFQSxNQUFNekIsT0FBT2EsZUFBZVk7WUFDNUIsSUFBRyxDQUFDekIsTUFBTTtnQkFDUixPQUFPO1lBQ1Q7WUFFQSxJQUFHRCxVQUFVQyxPQUFPO2dCQUNsQixJQUFJLENBQUNrQixPQUFPLENBQUVHLFVBQVUsQ0FBQ2U7Z0JBQ3pCLElBQUksQ0FBQ0UsWUFBWSxDQUFDRyxNQUFNLENBQUNMO2dCQUN6QixPQUFPO1lBQ1Q7WUFFQSxJQUFJLENBQUNFLFlBQVksQ0FBQ0ksR0FBRyxDQUFDTixhQUFhcEMsS0FBSzZCLEtBQUs7WUFDN0MsT0FBTzdCLEtBQUs2QixLQUFLO1FBQ25CLEVBQUUsT0FBSztZQUNMLE9BQU87UUFDVDtJQUNGO0lBRUEsTUFBTWMsZUFBZTFCLEdBQVcsRUFBRVksS0FBVSxFQUFvQjtRQUM5RCxJQUFHLENBQUMsSUFBSSxDQUFDTSxrQkFBa0IsSUFBSTtZQUM3QixPQUFPO1FBQ1Q7UUFFQSxNQUFNQyxjQUFjLElBQUksQ0FBQ0MsY0FBYyxDQUFDcEI7UUFFeEMsSUFBSTtZQUNGLGtDQUFrQztZQUNsQyxJQUFHMkIsS0FBS0MsTUFBTSxLQUFLLEtBQUs7Z0JBQ3RCLElBQUksQ0FBQ0MsZ0JBQWdCO1lBQ3ZCO1lBRUEsTUFBTUMsY0FBMkI7Z0JBQy9CM0MsV0FBV0YsS0FBS0MsR0FBRztnQkFDbkJGLEtBQUssSUFBSSxDQUFDK0MsT0FBTyxDQUFDL0MsR0FBRztnQkFDckI0QjtZQUNGO1lBRUEsTUFBTXBCLGFBQWEsSUFBSSxDQUFDdUMsT0FBTyxDQUFDQyxXQUFXLEdBQ3ZDekMsYUFBYXVDLGVBQ2JyQyxLQUFLQyxTQUFTLENBQUNvQztZQUVuQixJQUFHLENBQUMsSUFBSSxDQUFDRyxZQUFZLENBQUN6QyxhQUFhO2dCQUNqQyxzQ0FBc0M7Z0JBQ3RDMEMsUUFBUUMsSUFBSSxDQUFDLENBQUMsMkNBQTJDLEVBQUVuQyxLQUFLO2dCQUNoRSxPQUFPO1lBQ1Q7WUFFQSxJQUFJLENBQUNDLE9BQU8sQ0FBRVksT0FBTyxDQUFDTSxhQUFhM0I7WUFFbkMsSUFBSSxDQUFDNkIsWUFBWSxDQUFDSSxHQUFHLENBQUNOLGFBQWFQO1lBRW5DLE9BQU87UUFDVCxFQUFFLE9BQU13QixPQUFPO1lBQ2Isc0NBQXNDO1lBQ3RDRixRQUFRRSxLQUFLLENBQUMsK0JBQStCQTtZQUM3QyxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE1BQU1DLGtCQUFrQnJDLEdBQVcsRUFBb0I7UUFDckQsSUFBRyxDQUFDLElBQUksQ0FBQ2tCLGtCQUFrQixJQUFJO1lBQzdCLE9BQU87UUFDVDtRQUVBLE1BQU1DLGNBQWMsSUFBSSxDQUFDQyxjQUFjLENBQUNwQjtRQUV4QyxJQUFJO1lBQ0YsSUFBSSxDQUFDQyxPQUFPLENBQUVHLFVBQVUsQ0FBQ2U7WUFDekIsSUFBSSxDQUFDRSxZQUFZLENBQUNHLE1BQU0sQ0FBQ0w7WUFDekIsT0FBTztRQUNULEVBQUUsT0FBSztZQUNMLE9BQU87UUFDVDtJQUNGO0lBRUEsTUFBTW1CLG1CQUFxQztRQUN6QyxJQUFHLENBQUMsSUFBSSxDQUFDcEIsa0JBQWtCLElBQUk7WUFDN0IsT0FBTztRQUNUO1FBRUEsSUFBSTtZQUNGLE1BQU1xQixPQUFpQixFQUFFO1lBQ3pCLElBQUksSUFBSUMsSUFBSSxHQUFHQSxJQUFJLElBQUksQ0FBQ3ZDLE9BQU8sQ0FBRU4sTUFBTSxFQUFFNkMsSUFBSztnQkFDNUMsTUFBTXhDLE1BQU0sSUFBSSxDQUFDQyxPQUFPLENBQUVELEdBQUcsQ0FBQ3dDO2dCQUM5QixJQUFHeEMsS0FBS3lDLFdBQVcsSUFBSSxDQUFDVixPQUFPLENBQUNXLE1BQU0sR0FBRztvQkFDdkNILEtBQUtJLElBQUksQ0FBQzNDO2dCQUNaO1lBQ0Y7WUFFQXVDLEtBQUtLLE9BQU8sQ0FBQyxDQUFDNUM7Z0JBQ1osSUFBSSxDQUFDQyxPQUFPLENBQUVHLFVBQVUsQ0FBQ0o7Z0JBQ3pCLElBQUksQ0FBQ3FCLFlBQVksQ0FBQ0csTUFBTSxDQUFDeEI7WUFDM0I7WUFFQSxPQUFPO1FBQ1QsRUFBRSxPQUFLO1lBQ0wsT0FBTztRQUNUO0lBQ0Y7SUFFQTZDLGtCQUFzRTtRQUNwRSxJQUFHLENBQUMsSUFBSSxDQUFDM0Isa0JBQWtCLElBQUk7WUFDN0IsT0FBTztnQkFBQzRCLFdBQVc7Z0JBQUdDLE9BQU87Z0JBQUdDLE1BQU07WUFBQztRQUN6QztRQUVBLElBQUlBLE9BQU87UUFDWCxNQUFNVCxPQUFpQixFQUFFO1FBRXpCLElBQUksSUFBSUMsSUFBSSxHQUFHQSxJQUFJLElBQUksQ0FBQ3ZDLE9BQU8sQ0FBRU4sTUFBTSxFQUFFNkMsSUFBSztZQUM1QyxNQUFNeEMsTUFBTSxJQUFJLENBQUNDLE9BQU8sQ0FBRUQsR0FBRyxDQUFDd0M7WUFDOUIsSUFBR3hDLEtBQUt5QyxXQUFXLElBQUksQ0FBQ1YsT0FBTyxDQUFDVyxNQUFNLEdBQUc7Z0JBQ3ZDSCxLQUFLSSxJQUFJLENBQUMzQztnQkFDVixNQUFNUSxPQUFPLElBQUksQ0FBQ1AsT0FBTyxDQUFFUSxPQUFPLENBQUNUO2dCQUNuQyxJQUFHUSxNQUFNO29CQUNQd0MsUUFBUTVELGVBQWVvQjtnQkFDekI7WUFDRjtRQUNGO1FBRUEsT0FBTztZQUNMc0MsV0FBVyxJQUFJLENBQUNmLE9BQU8sQ0FBQ2tCLE9BQU8sR0FBR0Q7WUFDbENELE9BQU8sSUFBSSxDQUFDaEIsT0FBTyxDQUFDa0IsT0FBTztZQUMzQkQ7UUFDRjtJQUNGO0lBRVFFLGFBQXNDO1FBQzVDLElBQUk7WUFDRixNQUFNLEVBQUNDLElBQUksRUFBQyxHQUFHLElBQUksQ0FBQ3BCLE9BQU87WUFDM0IsTUFBTTlCLFVBQVVrRCxTQUFTLFVBQ3JCckQsZUFBZUksTUFBTSxDQUFDQyxZQUFZLEdBQ2xDTCxlQUFlSSxNQUFNLENBQUNJLGNBQWM7WUFFeEMsT0FBT0wsV0FBVztRQUNwQixFQUFFLE9BQUs7WUFDTCxPQUFPO1FBQ1Q7SUFDRjtJQUVRbUIsZUFBZXBCLEdBQVcsRUFBVTtRQUMxQyxPQUFPLEdBQUcsSUFBSSxDQUFDK0IsT0FBTyxDQUFDVyxNQUFNLEdBQUcxQyxLQUFLO0lBQ3ZDO0lBRVFrQixxQkFBOEI7UUFDcEMsT0FBTyxJQUFJLENBQUNqQixPQUFPLEtBQUs7SUFDMUI7SUFFUWdDLGFBQWFsRCxJQUFZLEVBQVc7UUFDMUMsTUFBTU8sT0FBT0YsZUFBZUw7UUFDNUIsT0FBT08sUUFBUSxJQUFJLENBQUN5QyxPQUFPLENBQUNrQixPQUFPO0lBQ3JDO0lBRVFwQixtQkFBeUI7UUFDL0IsSUFBRyxDQUFDLElBQUksQ0FBQ1gsa0JBQWtCLElBQUk7WUFDN0I7UUFDRjtRQUVBLE1BQU1xQixPQUFpQixFQUFFO1FBQ3pCLElBQUksSUFBSUMsSUFBSSxHQUFHQSxJQUFJLElBQUksQ0FBQ3ZDLE9BQU8sQ0FBRU4sTUFBTSxFQUFFNkMsSUFBSztZQUM1QyxNQUFNeEMsTUFBTSxJQUFJLENBQUNDLE9BQU8sQ0FBRUQsR0FBRyxDQUFDd0M7WUFDOUIsSUFBR3hDLEtBQUt5QyxXQUFXLElBQUksQ0FBQ1YsT0FBTyxDQUFDVyxNQUFNLEdBQUc7Z0JBQ3ZDSCxLQUFLSSxJQUFJLENBQUMzQztZQUNaO1FBQ0Y7UUFFQXVDLEtBQUtLLE9BQU8sQ0FBQyxDQUFDNUM7WUFDWixJQUFJO2dCQUNGLE1BQU1RLE9BQU8sSUFBSSxDQUFDUCxPQUFPLENBQUVRLE9BQU8sQ0FBQ1Q7Z0JBQ25DLElBQUdRLE1BQU07b0JBQ1AsTUFBTXpCLE9BQU9hLGVBQWVZO29CQUM1QixJQUFHekIsUUFBUUQsVUFBVUMsT0FBTzt3QkFDMUIsSUFBSSxDQUFDa0IsT0FBTyxDQUFFRyxVQUFVLENBQUNKO3dCQUN6QixJQUFJLENBQUNxQixZQUFZLENBQUNHLE1BQU0sQ0FBQ3hCO29CQUMzQjtnQkFDRjtZQUNGLEVBQUUsT0FBSztnQkFDTCxJQUFJLENBQUNDLE9BQU8sQ0FBRUcsVUFBVSxDQUFDSjtnQkFDekIsSUFBSSxDQUFDcUIsWUFBWSxDQUFDRyxNQUFNLENBQUN4QjtZQUMzQjtRQUNGO0lBQ0Y7SUFoVEEsWUFBWStCLFVBQWlDLENBQUMsQ0FBQyxDQUFFO1FBSmpELHVCQUFpQkEsV0FBakIsS0FBQTtRQUNBLHVCQUFpQlYsZ0JBQWUsSUFBSStCO1FBQ3BDLHVCQUFpQm5ELFdBQWpCLEtBQUE7UUFHRSxJQUFJLENBQUM4QixPQUFPLEdBQUc7WUFDYkMsYUFBYTtZQUNiaUIsU0FBU3JFO1lBQ1Q4RCxRQUFRL0Q7WUFDUkssS0FBS0g7WUFDTHNFLE1BQU07WUFDTixHQUFHcEIsT0FBTztRQUNaO1FBRUEsSUFBSSxDQUFDOUIsT0FBTyxHQUFHLElBQUksQ0FBQ2lELFVBQVU7SUFDaEM7QUFzU0Y7QUF4VEUsaUJBRFdwRCxnQkFDYUksVUFDdEIsT0FBT0EsV0FBVyxjQUFjQSxTQUFTLENBQUMifQ==
package/lib/index.d.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
3
  * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
4
  */
5
- import { BrowserStorage } from './BrowserStorage/BrowserStorage';
6
- export * from './types/main';
5
+ import { BrowserStorage } from './BrowserStorage/BrowserStorage.js';
6
+ export * from './types/main.js';
7
7
  export { BrowserStorage };
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAGlE,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAC,cAAc,EAAC,CAAC"}
package/lib/index.js CHANGED
@@ -1,2 +1,9 @@
1
- import{BrowserStorage as o}from"./BrowserStorage/BrowserStorage";export*from"./types/main";export{o as BrowserStorage};
2
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2luZGV4LnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxOC1QcmVzZW50LCBOaXRyb2dlbiBMYWJzLCBJbmMuXG4gKiBDb3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuaW1wb3J0IHtCcm93c2VyU3RvcmFnZX0gZnJvbSAnLi9Ccm93c2VyU3RvcmFnZS9Ccm93c2VyU3RvcmFnZSc7XG5cbi8vIFN0b3JhZ2VcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWFpbic7XG5leHBvcnQge0Jyb3dzZXJTdG9yYWdlfTtcbiJdLAogICJtYXBwaW5ncyI6ICJBQUlBLE9BQVEsa0JBQUFBLE1BQXFCLGtDQUc3QixXQUFjIiwKICAibmFtZXMiOiBbIkJyb3dzZXJTdG9yYWdlIl0KfQo=
1
+ /**
2
+ * Copyright (c) 2018-Present, Nitrogen Labs, Inc.
3
+ * Copyrights licensed under the MIT License. See the accompanying LICENSE file for terms.
4
+ */ import { BrowserStorage } from './BrowserStorage/BrowserStorage.js';
5
+ // Storage
6
+ export * from './types/main.js';
7
+ export { BrowserStorage };
8
+
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2Fya2hhbWpzL3BhY2thZ2VzL2Fya2hhbWpzLXN0b3JhZ2UtYnJvd3Nlci9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7QnJvd3NlclN0b3JhZ2V9IGZyb20gJy4vQnJvd3NlclN0b3JhZ2UvQnJvd3NlclN0b3JhZ2UuanMnO1xuXG4vLyBTdG9yYWdlXG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL21haW4uanMnO1xuZXhwb3J0IHtCcm93c2VyU3RvcmFnZX07XG5cbiJdLCJuYW1lcyI6WyJCcm93c2VyU3RvcmFnZSJdLCJtYXBwaW5ncyI6IkFBQUE7OztDQUdDLEdBQ0QsU0FBUUEsY0FBYyxRQUFPLHFDQUFxQztBQUVsRSxVQUFVO0FBQ1YsY0FBYyxrQkFBa0I7QUFDaEMsU0FBUUEsY0FBYyxHQUFFIn0=
@@ -19,3 +19,4 @@ export interface StorageInterface {
19
19
  readonly clear: () => void;
20
20
  readonly key: (index: number) => string | null;
21
21
  }
22
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/types/main.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;AAE9C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAChD"}
package/lib/types/main.js CHANGED
@@ -1 +1,3 @@
1
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFtdLAogICJzb3VyY2VzQ29udGVudCI6IFtdLAogICJtYXBwaW5ncyI6ICIiLAogICJuYW1lcyI6IFtdCn0K
1
+ export { };
2
+
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L2Fya2hhbWpzL3BhY2thZ2VzL2Fya2hhbWpzLXN0b3JhZ2UtYnJvd3Nlci9zcmMvdHlwZXMvbWFpbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJyb3dzZXJTdG9yYWdlT3B0aW9ucyB7XG4gIHJlYWRvbmx5IHR5cGU/OiAnbG9jYWwnIHwgJ3Nlc3Npb24nO1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbXByZXNzaW9uPzogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbWF4U2l6ZT86IG51bWJlcjsgLy8gaW4gYnl0ZXNcbiAgcmVhZG9ubHkgdHRsPzogbnVtYmVyOyAvLyB0aW1lIHRvIGxpdmUgaW4gbWlsbGlzZWNvbmRzXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZURhdGEge1xuICByZWFkb25seSB2YWx1ZTogYW55O1xuICByZWFkb25seSB0aW1lc3RhbXA6IG51bWJlcjtcbiAgcmVhZG9ubHkgdHRsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBTdG9yYWdlVHlwZSA9ICdsb2NhbCcgfCAnc2Vzc2lvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmFnZUludGVyZmFjZSB7XG4gIHJlYWRvbmx5IGxlbmd0aDogbnVtYmVyO1xuICByZWFkb25seSBnZXRJdGVtOiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGw7XG4gIHJlYWRvbmx5IHNldEl0ZW06IChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcmVtb3ZlSXRlbTogKGtleTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWFkb25seSBjbGVhcjogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkga2V5OiAoaW5kZXg6IG51bWJlcikgPT4gc3RyaW5nIHwgbnVsbDtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFnQkEsV0FPQyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nlabs/arkhamjs-storage-browser",
3
- "version": "3.30.4",
3
+ "version": "3.30.6",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },