{
  "version": 3,
  "sources": ["../src/encode.ts"],
  "sourcesContent": ["import { concat, text2arr, type TypedArray } from '@substrate-system/uint8-util'\nimport { getType } from './util.js'\n\n/**\n * Encodes data in bencode.\n *\n * @param  {Uint8Array|Array|String|Object|Number|Boolean} data\n * @return {Uint8Array}\n */\nexport function encode (\n    data?:TypedArray|any[]|string|number|boolean|object|null,\n    buffer?:Uint8Array,\n    offset?:number\n):Uint8Array {\n    const buffers = []\n    encode._encode(buffers, data)\n    const result:Uint8Array = concat(buffers)\n    encode.bytes = result.length\n\n    if (ArrayBuffer.isView(buffer)) {\n        buffer.set(result, offset)\n        return buffer\n    }\n\n    return result\n}\n\nencode.bytes = -1\nencode._floatConversionDetected = false\n\nencode._encode = function (buffers, data) {\n    if (data == null) { return }\n\n    switch (getType(data)) {\n        case 'object': encode.dict(buffers, data); break\n        case 'map': encode.dictMap(buffers, data); break\n        case 'array': encode.list(buffers, data); break\n        case 'set': encode.listSet(buffers, data); break\n        case 'string': encode.string(buffers, data); break\n        case 'number': encode.number(buffers, data); break\n        case 'boolean': encode.number(buffers, data); break\n        case 'arraybufferview': encode.buffer(buffers, new Uint8Array(data.buffer, data.byteOffset, data.byteLength)); break\n        case 'arraybuffer': encode.buffer(buffers, new Uint8Array(data)); break\n    }\n}\n\nconst buffE = new Uint8Array([0x65])\nconst buffD = new Uint8Array([0x64])\nconst buffL = new Uint8Array([0x6C])\n\nencode.buffer = function (buffers, data) {\n    buffers.push(text2arr(data.length + ':'), data)\n}\n\nencode.string = function (buffers, data) {\n    buffers.push(text2arr(text2arr(data).byteLength + ':' + data))\n}\n\nencode.number = function (buffers, data) {\n    if (Number.isInteger(data)) return buffers.push(text2arr('i' + BigInt(data) + 'e'))\n\n    const maxLo = 0x80000000\n    const hi = (data / maxLo) << 0\n    const lo = (data % maxLo) << 0\n    const val = hi * maxLo + lo\n\n    buffers.push(text2arr('i' + val + 'e'))\n\n    if (val !== data && !encode._floatConversionDetected) {\n        encode._floatConversionDetected = true\n        console.warn(\n            'WARNING: Possible data corruption detected with value \"' + data + '\":',\n            'Bencoding only defines support for integers, value was converted to \"' + val + '\"'\n        )\n        console.trace()\n    }\n}\n\nencode.dict = function (buffers, data) {\n    buffers.push(buffD)\n\n    let j = 0\n    let k\n    // fix for issue #13 - sorted dicts\n    const keys = Object.keys(data).sort()\n    const kl = keys.length\n\n    for (; j < kl; j++) {\n        k = keys[j]\n        if (data[k] == null) continue\n        encode.string(buffers, k)\n        encode._encode(buffers, data[k])\n    }\n\n    buffers.push(buffE)\n}\n\nencode.dictMap = function (buffers, data) {\n    buffers.push(buffD)\n\n    const keys = Array.from(data.keys()).sort()\n\n    for (const key of keys) {\n        if (data.get(key) == null) {\n            continue\n        }\n\n        if (ArrayBuffer.isView(key)) {\n            encode._encode(buffers, key)\n        } else {\n            encode.string(buffers, String(key))\n        }\n\n        encode._encode(buffers, data.get(key))\n    }\n\n    buffers.push(buffE)\n}\n\nencode.list = function (buffers, data) {\n    let i = 0\n    const c = data.length\n    buffers.push(buffL)\n\n    for (; i < c; i++) {\n        if (data[i] == null) continue\n        encode._encode(buffers, data[i])\n    }\n\n    buffers.push(buffE)\n}\n\nencode.listSet = function (buffers, data) {\n    buffers.push(buffL)\n\n    for (const item of data) {\n        if (item == null) continue\n        encode._encode(buffers, item)\n    }\n\n    buffers.push(buffE)\n}\n\nexport default encode\n"],
  "mappings": "4dAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,aAAAE,EAAA,WAAAC,IAAA,eAAAC,EAAAJ,GAAA,IAAAK,EAAkD,wCAClDC,EAAwB,qBAQjB,SAASC,EACZC,EACAC,EACAC,EACS,CACT,MAAMC,EAAU,CAAC,EACjBJ,EAAO,QAAQI,EAASH,CAAI,EAC5B,MAAMI,KAAoB,UAAOD,CAAO,EAGxC,OAFAJ,EAAO,MAAQK,EAAO,OAElB,YAAY,OAAOH,CAAM,GACzBA,EAAO,IAAIG,EAAQF,CAAM,EAClBD,GAGJG,CACX,CAhBgBC,EAAAN,EAAA,UAkBhBA,EAAO,MAAQ,GACfA,EAAO,yBAA2B,GAElCA,EAAO,QAAU,SAAUI,EAASH,EAAM,CACtC,GAAIA,GAAQ,KAEZ,UAAQ,WAAQA,CAAI,EAAG,CACnB,IAAK,SAAUD,EAAO,KAAKI,EAASH,CAAI,EAAG,MAC3C,IAAK,MAAOD,EAAO,QAAQI,EAASH,CAAI,EAAG,MAC3C,IAAK,QAASD,EAAO,KAAKI,EAASH,CAAI,EAAG,MAC1C,IAAK,MAAOD,EAAO,QAAQI,EAASH,CAAI,EAAG,MAC3C,IAAK,SAAUD,EAAO,OAAOI,EAASH,CAAI,EAAG,MAC7C,IAAK,SAAUD,EAAO,OAAOI,EAASH,CAAI,EAAG,MAC7C,IAAK,UAAWD,EAAO,OAAOI,EAASH,CAAI,EAAG,MAC9C,IAAK,kBAAmBD,EAAO,OAAOI,EAAS,IAAI,WAAWH,EAAK,OAAQA,EAAK,WAAYA,EAAK,UAAU,CAAC,EAAG,MAC/G,IAAK,cAAeD,EAAO,OAAOI,EAAS,IAAI,WAAWH,CAAI,CAAC,EAAG,KACtE,CACJ,EAEA,MAAMM,EAAQ,IAAI,WAAW,CAAC,GAAI,CAAC,EAC7BC,EAAQ,IAAI,WAAW,CAAC,GAAI,CAAC,EAC7BC,EAAQ,IAAI,WAAW,CAAC,GAAI,CAAC,EAEnCT,EAAO,OAAS,SAAUI,EAASH,EAAM,CACrCG,EAAQ,QAAK,YAASH,EAAK,OAAS,GAAG,EAAGA,CAAI,CAClD,EAEAD,EAAO,OAAS,SAAUI,EAASH,EAAM,CACrCG,EAAQ,QAAK,eAAS,YAASH,CAAI,EAAE,WAAa,IAAMA,CAAI,CAAC,CACjE,EAEAD,EAAO,OAAS,SAAUI,EAASH,EAAM,CACrC,GAAI,OAAO,UAAUA,CAAI,EAAG,OAAOG,EAAQ,QAAK,YAAS,IAAM,OAAOH,CAAI,EAAI,GAAG,CAAC,EAElF,MAAMS,EAAQ,WACRC,EAAMV,EAAOS,GAAU,EACvBE,EAAMX,EAAOS,GAAU,EACvBG,EAAMF,EAAKD,EAAQE,EAEzBR,EAAQ,QAAK,YAAS,IAAMS,EAAM,GAAG,CAAC,EAElCA,IAAQZ,GAAQ,CAACD,EAAO,2BACxBA,EAAO,yBAA2B,GAClC,QAAQ,KACJ,0DAA4DC,EAAO,KACnE,wEAA0EY,EAAM,GACpF,EACA,QAAQ,MAAM,EAEtB,EAEAb,EAAO,KAAO,SAAUI,EAASH,EAAM,CACnCG,EAAQ,KAAKI,CAAK,EAElB,IAAIM,EAAI,EACJC,EAEJ,MAAMC,EAAO,OAAO,KAAKf,CAAI,EAAE,KAAK,EAC9BgB,EAAKD,EAAK,OAEhB,KAAOF,EAAIG,EAAIH,IACXC,EAAIC,EAAKF,CAAC,EACNb,EAAKc,CAAC,GAAK,OACff,EAAO,OAAOI,EAASW,CAAC,EACxBf,EAAO,QAAQI,EAASH,EAAKc,CAAC,CAAC,GAGnCX,EAAQ,KAAKG,CAAK,CACtB,EAEAP,EAAO,QAAU,SAAUI,EAASH,EAAM,CACtCG,EAAQ,KAAKI,CAAK,EAElB,MAAMQ,EAAO,MAAM,KAAKf,EAAK,KAAK,CAAC,EAAE,KAAK,EAE1C,UAAWiB,KAAOF,EACVf,EAAK,IAAIiB,CAAG,GAAK,OAIjB,YAAY,OAAOA,CAAG,EACtBlB,EAAO,QAAQI,EAASc,CAAG,EAE3BlB,EAAO,OAAOI,EAAS,OAAOc,CAAG,CAAC,EAGtClB,EAAO,QAAQI,EAASH,EAAK,IAAIiB,CAAG,CAAC,GAGzCd,EAAQ,KAAKG,CAAK,CACtB,EAEAP,EAAO,KAAO,SAAUI,EAASH,EAAM,CACnC,IAAIkB,EAAI,EACR,MAAMC,EAAInB,EAAK,OAGf,IAFAG,EAAQ,KAAKK,CAAK,EAEXU,EAAIC,EAAGD,IACNlB,EAAKkB,CAAC,GAAK,MACfnB,EAAO,QAAQI,EAASH,EAAKkB,CAAC,CAAC,EAGnCf,EAAQ,KAAKG,CAAK,CACtB,EAEAP,EAAO,QAAU,SAAUI,EAASH,EAAM,CACtCG,EAAQ,KAAKK,CAAK,EAElB,UAAWY,KAAQpB,EACXoB,GAAQ,MACZrB,EAAO,QAAQI,EAASiB,CAAI,EAGhCjB,EAAQ,KAAKG,CAAK,CACtB,EAEA,IAAOe,EAAQtB",
  "names": ["encode_exports", "__export", "encode_default", "encode", "__toCommonJS", "import_uint8_util", "import_util", "encode", "data", "buffer", "offset", "buffers", "result", "__name", "buffE", "buffD", "buffL", "maxLo", "hi", "lo", "val", "j", "k", "keys", "kl", "key", "i", "c", "item", "encode_default"]
}
