UNPKG

@tldraw/utils

Version:

tldraw infinite canvas SDK (private utilities).

8 lines (7 loc) 2.33 kB
{ "version": 3, "sources": ["../../src/lib/hash.ts"], "sourcesContent": ["/**\n * Hash a string using the FNV-1a algorithm.\n *\n * @public\n */\nexport function getHashForString(string: string) {\n\tlet hash = 0\n\tfor (let i = 0; i < string.length; i++) {\n\t\thash = (hash << 5) - hash + string.charCodeAt(i)\n\t\thash |= 0 // Convert to 32bit integer\n\t}\n\treturn hash + ''\n}\n\n/**\n * Hash a string using the FNV-1a algorithm.\n *\n * @public\n */\nexport function getHashForObject(obj: any) {\n\treturn getHashForString(JSON.stringify(obj))\n}\n\n/**\n * Hash an ArrayBuffer using the FNV-1a algorithm.\n *\n * @public\n */\nexport function getHashForBuffer(buffer: ArrayBuffer) {\n\tconst view = new DataView(buffer)\n\tlet hash = 0\n\tfor (let i = 0; i < view.byteLength; i++) {\n\t\thash = (hash << 5) - hash + view.getUint8(i)\n\t\thash |= 0 // Convert to 32bit integer\n\t}\n\treturn hash + ''\n}\n\n/** @public */\nexport function lns(str: string) {\n\tconst result = str.split('')\n\tresult.push(...result.splice(0, Math.round(result.length / 5)))\n\tresult.push(...result.splice(0, Math.round(result.length / 4)))\n\tresult.push(...result.splice(0, Math.round(result.length / 3)))\n\tresult.push(...result.splice(0, Math.round(result.length / 2)))\n\treturn result\n\t\t.reverse()\n\t\t.map((n) => (+n ? (+n < 5 ? 5 + +n : +n > 5 ? +n - 5 : n) : n))\n\t\t.join('')\n}\n"], "mappings": "AAKO,SAAS,iBAAiB,QAAgB;AAChD,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACvC,YAAQ,QAAQ,KAAK,OAAO,OAAO,WAAW,CAAC;AAC/C,YAAQ;AAAA,EACT;AACA,SAAO,OAAO;AACf;AAOO,SAAS,iBAAiB,KAAU;AAC1C,SAAO,iBAAiB,KAAK,UAAU,GAAG,CAAC;AAC5C;AAOO,SAAS,iBAAiB,QAAqB;AACrD,QAAM,OAAO,IAAI,SAAS,MAAM;AAChC,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,KAAK,YAAY,KAAK;AACzC,YAAQ,QAAQ,KAAK,OAAO,KAAK,SAAS,CAAC;AAC3C,YAAQ;AAAA,EACT;AACA,SAAO,OAAO;AACf;AAGO,SAAS,IAAI,KAAa;AAChC,QAAM,SAAS,IAAI,MAAM,EAAE;AAC3B,SAAO,KAAK,GAAG,OAAO,OAAO,GAAG,KAAK,MAAM,OAAO,SAAS,CAAC,CAAC,CAAC;AAC9D,SAAO,KAAK,GAAG,OAAO,OAAO,GAAG,KAAK,MAAM,OAAO,SAAS,CAAC,CAAC,CAAC;AAC9D,SAAO,KAAK,GAAG,OAAO,OAAO,GAAG,KAAK,MAAM,OAAO,SAAS,CAAC,CAAC,CAAC;AAC9D,SAAO,KAAK,GAAG,OAAO,OAAO,GAAG,KAAK,MAAM,OAAO,SAAS,CAAC,CAAC,CAAC;AAC9D,SAAO,OACL,QAAQ,EACR,IAAI,CAAC,MAAO,CAAC,IAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAK,CAAE,EAC7D,KAAK,EAAE;AACV;", "names": [] }