@langchain/core
Version:
Core LangChain.js abstractions and schemas
25 lines (24 loc) • 863 B
JavaScript
import { unsafeStringify } from "./stringify.js";
import rng from "./rng.js";
//#region src/utils/uuid/v4.ts
function v4(options, buf, offset) {
if (!buf && !options && crypto.randomUUID) return crypto.randomUUID();
return _v4(options, buf, offset);
}
function _v4(options, buf, offset) {
options = options || {};
const rnds = options.random ?? options.rng?.() ?? rng();
if (rnds.length < 16) throw new Error("Random bytes length must be >= 16");
rnds[6] = rnds[6] & 15 | 64;
rnds[8] = rnds[8] & 63 | 128;
if (buf) {
offset = offset || 0;
if (offset < 0 || offset + 16 > buf.length) throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
for (let i = 0; i < 16; ++i) buf[offset + i] = rnds[i];
return buf;
}
return unsafeStringify(rnds);
}
//#endregion
export { v4 as default };
//# sourceMappingURL=v4.js.map