{"version":3,"sources":["jsdelivr-header.js","/npm/@tkesgar/futaba@1.0.0/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,OAAS,QAAQ,UAEjB,QAAU,WACV,UAAY,SACZ,SAAW,SACX,QAAU,EAEhB,MAAM,OACJ,aAAO,CAAO,EAAK,EAAO,cACxB,MAAM,EAAO,WAAW,EAAK,GAC7B,OAAO,IAAI,OAAO,EAAM,EAC1B,CAEA,WAAO,CAAK,GACV,GAAmB,iBAAR,EACT,OAAO,OAAO,KAAK,KAAK,MAAM,IAGhC,MAAM,EAAC,EAAC,EAAE,GAAK,EAET,EAAO,OAAO,KAAK,EAhBZ,UAiBP,EAAO,OAAO,KAAK,EAjBZ,UAkBb,OAAO,IAAI,OAAO,EAAM,EAC1B,CAEA,WAAO,CAAK,EAAK,GACf,OAAI,aAAe,OACV,EAAI,KAAK,GAGX,OAAO,KAAK,GAAK,KAAK,EAC/B,CAEA,WAAA,CAAY,EAAM,GAChB,KAAK,KAAO,EACZ,KAAK,KAAO,CACd,CAEA,IAAA,CAAK,GACH,OAAyD,IAAlD,WAAW,EAAK,KAAK,MAAM,QAAQ,KAAK,KACjD,CAEA,QAAA,GACE,MAAO,CACL,EAAG,QACH,EAAG,KAAK,KAAK,SAzCF,UA0CX,EAAG,KAAK,KAAK,SA1CF,UA4Cf,CAEA,QAAA,GACE,OAAO,KAAK,UAAU,KAAK,WAC7B,CAEA,MAAA,GACE,OAAO,KAAK,UACd,EAKF,SAAS,aACP,OAAO,OAAO,YAzDA,EA0DhB,CAEA,SAAS,WAAW,EAAK,GACvB,OAAO,OAAO,WA/DE,UAgEb,OAAO,SACP,OAAO,GACP,OAAO,GACP,QACL,CAZA,OAAO,QAAU","file":"/npm/@tkesgar/futaba@1.0.0/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@tkesgar/futaba@1.0.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 crypto = require('crypto')\n\nconst VERSION = 'FUTABA10'\nconst ALGORITHM = 'sha256'\nconst ENCODING = 'base64'\nconst SALTLEN = 4\n\nclass Futaba {\n  static create(str, salt = createSalt()) {\n    const hash = createHash(str, salt)\n    return new Futaba(hash, salt)\n  }\n\n  static from(val) {\n    if (typeof val === 'string') {\n      return Futaba.from(JSON.parse(val))\n    }\n\n    const {h, s} = val\n\n    const hash = Buffer.from(h, ENCODING)\n    const salt = Buffer.from(s, ENCODING)\n    return new Futaba(hash, salt)\n  }\n\n  static test(val, str) {\n    if (val instanceof Futaba) {\n      return val.test(str)\n    }\n\n    return Futaba.from(val).test(str)\n  }\n\n  constructor(hash, salt) {\n    this.hash = hash\n    this.salt = salt\n  }\n\n  test(str) {\n    return createHash(str, this.salt).compare(this.hash) === 0\n  }\n\n  toObject() {\n    return {\n      v: VERSION,\n      h: this.hash.toString(ENCODING),\n      s: this.salt.toString(ENCODING)\n    }\n  }\n\n  toString() {\n    return JSON.stringify(this.toObject())\n  }\n\n  toJSON() {\n    return this.toString()\n  }\n}\n\nmodule.exports = Futaba\n\nfunction createSalt() {\n  return crypto.randomBytes(SALTLEN)\n}\n\nfunction createHash(str, salt) {\n  return crypto.createHash(ALGORITHM)\n    .update(VERSION)\n    .update(str)\n    .update(salt)\n    .digest()\n}\n"]}