{"version":3,"file":"localstorage.cjs","names":["jsonStringifySafe"],"sources":["../../src/browser/localstorage.ts"],"sourcesContent":["import type { Json, ObjectStorage } from '../common/types'\nimport { jsonStringifySafe } from '../common/data/json'\n\nexport interface LocalStorageOptions {\n  name: string\n  objectFromString?: (data: string) => any\n  objectToString?: (data: any) => string\n}\n\nexport class LocalStorage<T = Json> implements ObjectStorage<T> {\n  private name: string\n  private prefix: string\n  private pretty = false\n  private objectFromString: (data: string) => any\n  private objectToString: (data: any) => string\n\n  constructor(opt: LocalStorageOptions) {\n    this.name = opt.name ?? 'zeed'\n    this.prefix = `${opt.name}$`\n    this.objectToString = opt.objectToString ?? ((data: any): string => {\n      return this.pretty\n        ? jsonStringifySafe(data, null, 2)\n        : jsonStringifySafe(data)\n    })\n\n    this.objectFromString = opt.objectFromString ?? ((data: string) => {\n      try {\n        return JSON.parse(data)\n      }\n      catch (err) {\n        // log.warn(`LocalStorage parse error '${err}' in`, data)\n      }\n    })\n  }\n\n  setItem(key: string, value: T): void {\n    const data = this.objectToString(value)\n    localStorage.setItem(`${this.prefix}${key}`, data)\n  }\n\n  getItem(key: string): T | undefined {\n    const value = localStorage.getItem(`${this.prefix}${key}`)\n    if (value != null)\n      return this.objectFromString(value)\n  }\n\n  removeItem(key: string): void {\n    localStorage.removeItem(`${this.prefix}${key}`)\n  }\n\n  clear(): void {\n    Object.keys(localStorage).filter(key => key.startsWith(this.prefix)).forEach((key) => {\n      localStorage.removeItem(key)\n    })\n  }\n\n  allKeys(): string[] {\n    const prefixLength = this.prefix.length\n    return Object.keys(localStorage).filter(key => key.startsWith(this.prefix)).map(key => key.substr(prefixLength))\n  }\n}\n"],"mappings":";;;;AASA,IAAa,eAAb,MAAgE;CAC9D,AAAQ;CACR,AAAQ;CACR,AAAQ,SAAS;CACjB,AAAQ;CACR,AAAQ;CAER,YAAY,KAA0B;AACpC,OAAK,OAAO,IAAI,QAAQ;AACxB,OAAK,SAAS,GAAG,IAAI,KAAK;AAC1B,OAAK,iBAAiB,IAAI,oBAAoB,SAAsB;AAClE,UAAO,KAAK,SACRA,2CAAkB,MAAM,MAAM,EAAE,GAChCA,2CAAkB,KAAK;;AAG7B,OAAK,mBAAmB,IAAI,sBAAsB,SAAiB;AACjE,OAAI;AACF,WAAO,KAAK,MAAM,KAAK;YAElB,KAAK;;;CAMhB,QAAQ,KAAa,OAAgB;EACnC,MAAM,OAAO,KAAK,eAAe,MAAM;AACvC,eAAa,QAAQ,GAAG,KAAK,SAAS,OAAO,KAAK;;CAGpD,QAAQ,KAA4B;EAClC,MAAM,QAAQ,aAAa,QAAQ,GAAG,KAAK,SAAS,MAAM;AAC1D,MAAI,SAAS,KACX,QAAO,KAAK,iBAAiB,MAAM;;CAGvC,WAAW,KAAmB;AAC5B,eAAa,WAAW,GAAG,KAAK,SAAS,MAAM;;CAGjD,QAAc;AACZ,SAAO,KAAK,aAAa,CAAC,QAAO,QAAO,IAAI,WAAW,KAAK,OAAO,CAAC,CAAC,SAAS,QAAQ;AACpF,gBAAa,WAAW,IAAI;IAC5B;;CAGJ,UAAoB;EAClB,MAAM,eAAe,KAAK,OAAO;AACjC,SAAO,OAAO,KAAK,aAAa,CAAC,QAAO,QAAO,IAAI,WAAW,KAAK,OAAO,CAAC,CAAC,KAAI,QAAO,IAAI,OAAO,aAAa,CAAC"}