{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { createHmac, timingSafeEqual } from 'node:crypto'\n\n/**\n * Sign the given `val` with `secret`.\n */\nexport const sign = (val: string, secret: string): string =>\n `${val}.${createHmac('sha256', secret).update(val).digest('base64').replace(/=+$/, '')}`\n\n/**\n * Unsign and decode the given `val` with `secret`,\n * returning `false` if the signature is invalid.\n */\nexport const unsign = (val: string, secret: string): string | false => {\n const str = val.slice(0, val.lastIndexOf('.'))\n const mac = sign(str, secret)\n const macBuffer = Buffer.from(mac)\n const valBuffer = Buffer.alloc(macBuffer.length)\n\n valBuffer.write(val)\n return timingSafeEqual(macBuffer, valBuffer) ? str : false\n}\n"],"names":[],"mappings":";AAKa,MAAA,OAAO,CAAC,KAAa,WAChC,GAAG,GAAG,IAAI,WAAW,UAAU,MAAM,EAAE,OAAO,GAAG,EAAE,OAAO,QAAQ,EAAE,QAAQ,OAAO,EAAE,CAAC;AAM3E,MAAA,SAAS,CAAC,KAAa,WAAmC;AACrE,QAAM,MAAM,IAAI,MAAM,GAAG,IAAI,YAAY,GAAG,CAAC;AACvC,QAAA,MAAM,KAAK,KAAK,MAAM;AACtB,QAAA,YAAY,OAAO,KAAK,GAAG;AACjC,QAAM,YAAY,OAAO,MAAM,UAAU,MAAM;AAE/C,YAAU,MAAM,GAAG;AACnB,SAAO,gBAAgB,WAAW,SAAS,IAAI,MAAM;AACvD;"}