{"version":3,"file":"index.cjs","sources":["../../../../../src/mods/ens/index.ts"],"sourcesContent":["import { Slot } from \"@hazae41/box\"\nimport { Bytes } from \"@hazae41/bytes\"\nimport { Keccak256 } from \"@hazae41/keccak256\"\nimport * as Uts46 from \"idna-uts46-hx\"\nimport { Copiable, Copied } from \"libs/copiable/index.js\"\n\nexport function namehashOrThrow(name: string) {\n  if (name.length === 0)\n    return new Uint8Array(32)\n\n  const labels = Uts46.toUnicode(name, { useSTD3ASCIIRules: true }).split('.').reverse()\n\n  using node: Slot<Copiable> = new Slot(new Copied(new Uint8Array(32)))\n\n  for (const label of labels) {\n    const previous = node.get()\n\n    using current = Keccak256.get().getOrThrow().hashOrThrow(Bytes.fromUtf8(label))\n\n    const concat = Bytes.concat([previous.bytes, current.bytes])\n    node.set(Keccak256.get().getOrThrow().hashOrThrow(concat))\n\n    using _ = previous\n  }\n\n  return node.get().bytes.slice()\n}"],"names":["Uts46","__addDisposableResource","Slot","Copied","Keccak256","Bytes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMM,SAAU,eAAe,CAAC,IAAY,EAAA;;;AAC1C,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;AACnB,YAAA,OAAO,IAAI,UAAU,CAAC,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAGA,gBAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE;AAEtF,QAAA,MAAM,IAAI,GAAmBC,iCAAA,CAAA,KAAA,EAAA,IAAIC,QAAI,CAAC,IAAIC,YAAM,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,QAAA;AAErE,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;;;AAC1B,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;gBAE3B,MAAM,OAAO,4CAAGC,mBAAS,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,CAACC,WAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAA;AAE/E,gBAAA,MAAM,MAAM,GAAGA,WAAK,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC5D,gBAAA,IAAI,CAAC,GAAG,CAACD,mBAAS,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAE1D,gBAAA,MAAM,CAAC,GAAAH,iCAAA,CAAA,KAAA,EAAG,QAAQ,EAAA,KAAA,CAAA;;;;;;;;;AACnB;QAED,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;;;;;;;;;AAChC;;;;"}