@langchain/core
Version:
Core LangChain.js abstractions and schemas
1 lines • 5.16 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,EAAE;AAY1B,SAAS,GACP,SACA,KACA,QACiB;CACjB,IAAI;AAEJ,KAAI,QAEF,SAAQ,QACN,QAAQ,UAAU,QAAQ,OAAO,IAAIA,YAAAA,SAAK,EAC1C,QAAQ,OACR,QAAQ,KACR,KACA,OACD;MACI;EAEL,MAAM,MAAM,KAAK,KAAK;EACtB,MAAM,OAAOA,YAAAA,SAAK;AAElB,gBAAc,QAAQ,KAAK,KAAK;AAEhC,UAAQ,QAAQ,MAAM,OAAO,OAAO,OAAO,KAAK,KAAK,OAAO;;AAG9D,QAAO,OAAOC,kBAAAA,gBAAgB,MAAM;;AAKtC,SAAgB,cAAc,OAAgB,KAAa,MAAkB;AAC3E,OAAM,UAAU;AAChB,OAAM,QAAQ;AAEd,KAAI,MAAM,MAAM,OAAO;AAErB,QAAM,MAAO,KAAK,MAAM,KAAO,KAAK,MAAM,KAAO,KAAK,MAAM,IAAK,KAAK;AACtE,QAAM,QAAQ;QACT;AAEL,QAAM,MAAO,MAAM,MAAM,IAAK;AAK9B,MAAI,MAAM,QAAQ,EAChB,OAAM;;AAIV,QAAO;;AAGT,SAAS,QACP,MACA,OACA,KACA,KACA,SAAS,GACT;AACA,KAAI,KAAK,SAAS,GAChB,OAAM,IAAI,MAAM,oCAAoC;AAGtD,KAAI,CAAC,KAAK;AACR,QAAM,IAAI,WAAW,GAAG;AACxB,WAAS;YAEL,SAAS,KAAK,SAAS,KAAK,IAAI,OAClC,OAAM,IAAI,WACR,mBAAmB,OAAO,GAAG,SAAS,GAAG,0BAC1C;AAKL,WAAU,KAAK,KAAK;AACpB,SAAU,KAAK,KAAK,OAAS,KAAO,KAAK,MAAM,KAAO,KAAK,MAAM,IAAK,KAAK;AAG3E,KAAI,YAAa,QAAQ,gBAAiB;AAC1C,KAAI,YAAa,QAAQ,aAAe;AACxC,KAAI,YAAa,QAAQ,WAAa;AACtC,KAAI,YAAa,QAAQ,QAAW;AACpC,KAAI,YAAa,QAAQ,MAAS;AAClC,KAAI,YAAY,QAAQ;AAGxB,KAAI,YAAY,MAAS,QAAQ,KAAM;AAGvC,KAAI,YAAa,QAAQ,KAAM;AAG/B,KAAI,YAAY,MAAS,QAAQ,KAAM;AAGvC,KAAI,YAAa,QAAQ,IAAK;AAG9B,KAAI,YAAc,OAAO,IAAK,MAAS,KAAK,MAAM;AAGlD,KAAI,YAAY,KAAK;AACrB,KAAI,YAAY,KAAK;AACrB,KAAI,YAAY,KAAK;AACrB,KAAI,YAAY,KAAK;AACrB,KAAI,YAAY,KAAK;AAErB,QAAO"}