{"version":3,"sources":["jsdelivr-header.js","/npm/electron-store-data@1.2.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,GAAK,QAAQ,MACb,KAAO,QAAQ,QACf,OAAS,QAAQ,UACjB,SAAW,QAAQ,YAEnB,QAAU,EAAG,OAAM,YAAW,oBAClC,MAAM,EAAK,OAAO,YAAY,IACxB,EAAS,OAAO,eAAe,EAAW,EAAe,GAC/D,IAAI,EAAY,EAAO,OAAO,EAAM,QAEpC,OADA,EAAY,OAAO,OAAO,CAAC,EAAW,EAAO,UACtC,EAAG,SAAS,OAAS,IAAM,EAAU,SAAS,MAAK,EAGtD,QAAU,EAAG,YAAW,gBAAe,oBAC3C,IACE,MAAO,EAAO,GAAW,EAAc,MAAM,KACvC,EAAK,OAAO,KAAK,EAAO,OACxB,EAAY,OAAO,KAAK,EAAS,OAEjC,EAAW,OAAO,iBAAiB,EAAW,EAAe,GACnE,IAAI,EAAY,EAAS,OAAO,GAEhC,OADA,EAAY,OAAO,OAAO,CAAC,EAAW,EAAS,UACxC,EAAU,SAAS,OAC5B,CAAE,MAAO,GAEP,OADA,QAAQ,IAAI,qBAAsB,EAAI,SAC/B,IACT,GAGF,MAAM,MACJ,WAAA,EAAa,SAAE,EAAQ,SAAE,EAAW,CAAC,EAAC,WAAE,EAAa,CAAC,IACpD,IAAK,EACH,MAAM,IAAI,MAAM,wBAGd,EAAW,SACb,KAAK,UAAY,EAAW,WAAa,cACzC,KAAK,cAAgB,OAAO,WAC1B,EAAW,SACX,EAAW,KACX,EAAW,QAAU,KAIzB,KAAK,YAAc,SAAS,KAAO,SAAS,OAAO,KAAK,QAAQ,YAChE,KAAK,WAAa,KAAK,KAAK,KAAK,WAAY,QAC7C,KAAK,SAAW,KAAK,KAAK,KAAK,WAAY,GAAG,UAC9C,KAAK,KAAO,KAAK,SAAS,IAAa,CAAC,CAC1C,CAEA,QAAA,CAAU,GACR,IACE,IAAI,EAAc,GAAG,aAAa,KAAK,SAAU,QAEjD,OAAI,KAAK,gBACP,EAAc,QAAQ,CACpB,UAAW,KAAK,UAChB,cAAe,EACf,cAAe,KAAK,gBAGF,OAAhB,GACK,EAIJ,KAAK,MAAM,EACpB,CAAE,MAAO,GACP,OAAO,CACT,CACF,CAEA,SAAA,GACO,GAAG,WAAW,KAAK,aAAa,GAAG,UAAU,KAAK,YAEvD,IAAI,EAAc,KAAK,UAAU,KAAK,MAUtC,OARI,KAAK,gBACP,EAAc,QAAQ,CACpB,KAAM,EACN,UAAW,KAAK,UAChB,cAAe,KAAK,iBAIjB,GAAG,cAAc,KAAK,SAAU,EACzC,CAEA,GAAA,CAAK,GACH,OAAO,EAAM,KAAK,KAAK,GAAO,KAAK,IACrC,CAEA,GAAA,CAAK,EAAK,GAMR,OALK,EAGH,KAAK,KAAK,GAAO,EAFjB,KAAK,KAAO,EAIP,KAAK,WACd,CAEA,OAAQ,GACN,GAAK,EAUH,cADO,KAAK,KAAK,GACV,KAAK,YATZ,IAGE,OAFA,GAAG,WAAW,KAAK,UACnB,KAAK,KAAO,CAAC,GACN,CACT,CAAE,MAAO,GACP,OAAO,CACT,CAKJ,EAGF,OAAO,QAAU","file":"/npm/electron-store-data@1.2.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/electron-store-data@1.2.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const fs = require('fs')\nconst path = require('path')\nconst crypto = require('crypto')\nconst electron = require('electron')\n\nconst encrypt = ({ text, algorithm, encryptionKey }) => {\n  const iv = crypto.randomBytes(16)\n  const cipher = crypto.createCipheriv(algorithm, encryptionKey, iv)\n  let encrypted = cipher.update(text, 'utf8')\n  encrypted = Buffer.concat([encrypted, cipher.final()])\n  return iv.toString('hex') + ':' + encrypted.toString('hex')\n}\n\nconst decrypt = ({ algorithm, encryptedText, encryptionKey }) => {\n  try {\n    const [ivHex, dataHex] = encryptedText.split(':')\n    const iv = Buffer.from(ivHex, 'hex')\n    const encrypted = Buffer.from(dataHex, 'hex')\n\n    const decipher = crypto.createDecipheriv(algorithm, encryptionKey, iv)\n    let decrypted = decipher.update(encrypted)\n    decrypted = Buffer.concat([decrypted, decipher.final()])\n    return decrypted.toString('utf8')\n  } catch (err) {\n    console.log('Decryption failed:', err.message)\n    return null\n  }\n}\n\nclass Store {\n  constructor ({ filename, defaults = {}, encryption = {} }) {\n    if (!filename) {\n      throw new Error('No filename provided')\n    }\n\n    if (encryption.enable) {\n      this.algorithm = encryption.algorithm || 'aes-256-cbc'\n      this.encryptionKey = crypto.scryptSync(\n        encryption.password,\n        encryption.salt,\n        encryption.keylen || 32\n      )\n    }\n\n    this.rootFolder = (electron.app || electron.remote.app).getPath('userData')\n    this.dataFolder = path.join(this.rootFolder, 'data')\n    this.fullPath = path.join(this.dataFolder, `${filename}.json`)\n    this.data = this.readFile(defaults) || {}\n  }\n\n  readFile (defaults) {\n    try {\n      let fileContent = fs.readFileSync(this.fullPath, 'utf8')\n\n      if (this.encryptionKey) {\n        fileContent = decrypt({\n          algorithm: this.algorithm,\n          encryptedText: fileContent,\n          encryptionKey: this.encryptionKey\n        })\n\n        if (fileContent === null) {\n          return defaults\n        }\n      }\n\n      return JSON.parse(fileContent)\n    } catch (e) {\n      return defaults\n    }\n  }\n\n  writeFile () {\n    if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder)\n\n    let dataToWrite = JSON.stringify(this.data)\n\n    if (this.encryptionKey) {\n      dataToWrite = encrypt({\n        text: dataToWrite,\n        algorithm: this.algorithm,\n        encryptionKey: this.encryptionKey\n      })\n    }\n\n    return fs.writeFileSync(this.fullPath, dataToWrite)\n  }\n\n  get (key) {\n    return key ? this.data[key] : this.data\n  }\n\n  set (key, val) {\n    if (!key) {\n      this.data = val\n    } else {\n      this.data[key] = val\n    }\n    return this.writeFile()\n  }\n\n  delete (key) {\n    if (!key) {\n      try {\n        fs.unlinkSync(this.fullPath)\n        this.data = {}\n        return true\n      } catch (e) {\n        return false\n      }\n    } else {\n      delete this.data[key]\n      return this.writeFile()\n    }\n  }\n}\n\nmodule.exports = Store\n"]}