UNPKG

@langchain/core

Version:
1 lines 3.08 kB
{"version":3,"file":"v35.cjs","names":["parse","unsafeStringify"],"sources":["../../../src/utils/uuid/v35.ts"],"sourcesContent":["import parse from \"./parse.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes } from \"./types.js\";\n\nexport function stringToBytes(str: string) {\n // TODO: Use TextEncoder (see https://stackoverflow.com/a/48762658/109538)\n str = unescape(encodeURIComponent(str));\n\n const bytes = new Uint8Array(str.length);\n\n for (let i = 0; i < str.length; ++i) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport const DNS = \"6ba7b810-9dad-11d1-80b4-00c04fd430c8\";\nexport const URL = \"6ba7b811-9dad-11d1-80b4-00c04fd430c8\";\n\ntype HashFunction = (bytes: Uint8Array) => Uint8Array;\n\nexport default function v35<TBuf extends Uint8Array = Uint8Array>(\n version: 0x30 | 0x50,\n hash: HashFunction,\n value: string | Uint8Array,\n namespace: UUIDTypes,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n const valueBytes: Uint8Array =\n typeof value === \"string\" ? stringToBytes(value) : value;\n const namespaceBytes: Uint8Array =\n typeof namespace === \"string\" ? parse(namespace) : namespace;\n\n if (typeof namespace === \"string\") {\n namespace = parse(namespace);\n }\n\n if (namespace?.length !== 16) {\n throw TypeError(\n \"Namespace must be array-like (16 iterable integer values, 0-255)\"\n );\n }\n\n // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n let bytes = new Uint8Array(16 + valueBytes.length);\n bytes.set(namespaceBytes);\n bytes.set(valueBytes, namespaceBytes.length);\n bytes = hash(bytes);\n\n bytes[6] = (bytes[6] & 0x0f) | version;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n\n if (buf) {\n offset ??= 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(\n `UUID byte range ${offset}:${offset + 15} is out of buffer bounds`\n );\n }\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(bytes);\n}\n"],"mappings":";;;AAIA,SAAgB,cAAc,KAAa;AAEzC,OAAM,SAAS,mBAAmB,IAAI,CAAC;CAEvC,MAAM,QAAQ,IAAI,WAAW,IAAI,OAAO;AAExC,MAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,EAChC,OAAM,KAAK,IAAI,WAAW,EAAE;AAG9B,QAAO;;AAGT,MAAa,MAAM;AACnB,MAAa,MAAM;AAInB,SAAwB,IACtB,SACA,MACA,OACA,WACA,KACA,QACiB;CACjB,MAAM,aACJ,OAAO,UAAU,WAAW,cAAc,MAAM,GAAG;CACrD,MAAM,iBACJ,OAAO,cAAc,WAAWA,cAAAA,QAAM,UAAU,GAAG;AAErD,KAAI,OAAO,cAAc,SACvB,aAAYA,cAAAA,QAAM,UAAU;AAG9B,KAAI,WAAW,WAAW,GACxB,OAAM,UACJ,mEACD;CAMH,IAAI,QAAQ,IAAI,WAAW,KAAK,WAAW,OAAO;AAClD,OAAM,IAAI,eAAe;AACzB,OAAM,IAAI,YAAY,eAAe,OAAO;AAC5C,SAAQ,KAAK,MAAM;AAEnB,OAAM,KAAM,MAAM,KAAK,KAAQ;AAC/B,OAAM,KAAM,MAAM,KAAK,KAAQ;AAE/B,KAAI,KAAK;AACP,aAAW;AACX,MAAI,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAGH,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,EACxB,KAAI,SAAS,KAAK,MAAM;AAG1B,SAAO;;AAGT,QAAOC,kBAAAA,gBAAgB,MAAM"}