@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 5.2 kB
Source Map (JSON)
{"version":3,"file":"v7.cjs","names":["rng","unsafeStringify"],"sources":["../../../src/utils/uuid/v7.ts"],"sourcesContent":["import rng from \"./rng.js\";\nimport { unsafeStringify } from \"./stringify.js\";\nimport type { UUIDTypes, Version7Options } from \"./types.js\";\n\ntype V7State = {\n msecs?: number; // time, milliseconds\n seq?: number; // sequence number (32-bits)\n};\n\nconst _state: V7State = {};\n\nfunction v7(\n options?: Version7Options,\n buf?: undefined,\n offset?: number\n): string;\nfunction v7<TBuf extends Uint8Array = Uint8Array>(\n options: Version7Options | undefined,\n buf: TBuf,\n offset?: number\n): TBuf;\nfunction v7<TBuf extends Uint8Array = Uint8Array>(\n options?: Version7Options,\n buf?: TBuf,\n offset?: number\n): UUIDTypes<TBuf> {\n let bytes: Uint8Array;\n\n if (options) {\n // With options: Make UUID independent of internal state\n bytes = v7Bytes(\n options.random ?? options.rng?.() ?? rng(),\n options.msecs,\n options.seq,\n buf,\n offset\n );\n } else {\n // No options: Use internal state\n const now = Date.now();\n const rnds = rng();\n\n updateV7State(_state, now, rnds);\n\n bytes = v7Bytes(rnds, _state.msecs, _state.seq, buf, offset);\n }\n\n return buf ?? unsafeStringify(bytes);\n}\n\n// (Private!) Do not use. This method is only exported for testing purposes\n// and may change without notice.\nexport function updateV7State(state: V7State, now: number, rnds: Uint8Array) {\n state.msecs ??= -Infinity;\n state.seq ??= 0;\n\n if (now > state.msecs) {\n // Time has moved on! Pick a new random sequence number\n state.seq = (rnds[6] << 23) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n state.msecs = now;\n } else {\n // Bump sequence counter w/ 32-bit rollover\n state.seq = (state.seq + 1) | 0;\n\n // In case of rollover, bump timestamp to preserve monotonicity. This is\n // allowed by the RFC and should self-correct as the system clock catches\n // up. See https://www.rfc-editor.org/rfc/rfc9562.html#section-6.2-9.4\n if (state.seq === 0) {\n state.msecs++;\n }\n }\n\n return state;\n}\n\nfunction v7Bytes(\n rnds: Uint8Array,\n msecs?: number,\n seq?: number,\n buf?: Uint8Array,\n offset = 0\n) {\n if (rnds.length < 16) {\n throw new Error(\"Random bytes length must be >= 16\");\n }\n\n if (!buf) {\n buf = new Uint8Array(16);\n offset = 0;\n } else {\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\n // Defaults\n msecs ??= Date.now();\n seq ??= ((rnds[6] * 0x7f) << 24) | (rnds[7] << 16) | (rnds[8] << 8) | rnds[9];\n\n // byte 0-5: timestamp (48 bits)\n buf[offset++] = (msecs / 0x10000000000) & 0xff;\n buf[offset++] = (msecs / 0x100000000) & 0xff;\n buf[offset++] = (msecs / 0x1000000) & 0xff;\n buf[offset++] = (msecs / 0x10000) & 0xff;\n buf[offset++] = (msecs / 0x100) & 0xff;\n buf[offset++] = msecs & 0xff;\n\n // byte 6: `version` (4 bits) | sequence bits 28-31 (4 bits)\n buf[offset++] = 0x70 | ((seq >>> 28) & 0x0f);\n\n // byte 7: sequence bits 20-27 (8 bits)\n buf[offset++] = (seq >>> 20) & 0xff;\n\n // byte 8: `variant` (2 bits) | sequence bits 14-19 (6 bits)\n buf[offset++] = 0x80 | ((seq >>> 14) & 0x3f);\n\n // byte 9: sequence bits 6-13 (8 bits)\n buf[offset++] = (seq >>> 6) & 0xff;\n\n // byte 10: sequence bits 0-5 (6 bits) | random (2 bits)\n buf[offset++] = ((seq << 2) & 0xff) | (rnds[10] & 0x03);\n\n // bytes 11-15: random (40 bits)\n buf[offset++] = rnds[11];\n buf[offset++] = rnds[12];\n buf[offset++] = rnds[13];\n buf[offset++] = rnds[14];\n buf[offset++] = rnds[15];\n\n return buf;\n}\n\nexport default v7;\n"],"mappings":";;;AASA,MAAM,SAAkB,CAAC;AAYzB,SAAS,GACP,SACA,KACA,QACiB;CACjB,IAAI;CAEJ,IAAI,SAEF,QAAQ,QACN,QAAQ,UAAU,QAAQ,MAAM,KAAKA,YAAAA,QAAI,GACzC,QAAQ,OACR,QAAQ,KACR,KACA,MACF;MACK;EAEL,MAAM,MAAM,KAAK,IAAI;EACrB,MAAM,OAAOA,YAAAA,QAAI;EAEjB,cAAc,QAAQ,KAAK,IAAI;EAE/B,QAAQ,QAAQ,MAAM,OAAO,OAAO,OAAO,KAAK,KAAK,MAAM;CAC7D;CAEA,OAAO,OAAOC,kBAAAA,gBAAgB,KAAK;AACrC;AAIA,SAAgB,cAAc,OAAgB,KAAa,MAAkB;CAC3E,MAAM,UAAU;CAChB,MAAM,QAAQ;CAEd,IAAI,MAAM,MAAM,OAAO;EAErB,MAAM,MAAO,KAAK,MAAM,KAAO,KAAK,MAAM,KAAO,KAAK,MAAM,IAAK,KAAK;EACtE,MAAM,QAAQ;CAChB,OAAO;EAEL,MAAM,MAAO,MAAM,MAAM,IAAK;EAK9B,IAAI,MAAM,QAAQ,GAChB,MAAM;CAEV;CAEA,OAAO;AACT;AAEA,SAAS,QACP,MACA,OACA,KACA,KACA,SAAS,GACT;CACA,IAAI,KAAK,SAAS,IAChB,MAAM,IAAI,MAAM,mCAAmC;CAGrD,IAAI,CAAC,KAAK;EACR,sBAAM,IAAI,WAAW,EAAE;EACvB,SAAS;CACX,OACE,IAAI,SAAS,KAAK,SAAS,KAAK,IAAI,QAClC,MAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,yBAC3C;CAKJ,UAAU,KAAK,IAAI;CACnB,QAAU,KAAK,KAAK,OAAS,KAAO,KAAK,MAAM,KAAO,KAAK,MAAM,IAAK,KAAK;CAG3E,IAAI,YAAa,QAAQ,gBAAiB;CAC1C,IAAI,YAAa,QAAQ,aAAe;CACxC,IAAI,YAAa,QAAQ,WAAa;CACtC,IAAI,YAAa,QAAQ,QAAW;CACpC,IAAI,YAAa,QAAQ,MAAS;CAClC,IAAI,YAAY,QAAQ;CAGxB,IAAI,YAAY,MAAS,QAAQ,KAAM;CAGvC,IAAI,YAAa,QAAQ,KAAM;CAG/B,IAAI,YAAY,MAAS,QAAQ,KAAM;CAGvC,IAAI,YAAa,QAAQ,IAAK;CAG9B,IAAI,YAAc,OAAO,IAAK,MAAS,KAAK,MAAM;CAGlD,IAAI,YAAY,KAAK;CACrB,IAAI,YAAY,KAAK;CACrB,IAAI,YAAY,KAAK;CACrB,IAAI,YAAY,KAAK;CACrB,IAAI,YAAY,KAAK;CAErB,OAAO;AACT"}