@kurrent/kurrentdb-client
Version:
KurrentDB gRPC NodeJS Client SDK
29 lines • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.structuredUUIDToString = exports.createUUID = void 0;
exports.parseUUID = parseUUID;
const crypto_1 = require("crypto");
const shared_pb_1 = require("../../generated/kurrentdb/protocols/v1/shared_pb");
const createUUID = (id = (0, crypto_1.randomUUID)()) => {
const uuid = new shared_pb_1.UUID();
uuid.setString(id);
return uuid;
};
exports.createUUID = createUUID;
function parseUUID(uuid) {
if (!uuid)
return undefined;
if (uuid.hasStructured()) {
return (0, exports.structuredUUIDToString)(uuid.getStructured());
}
return uuid.getString();
}
const structuredUUIDToString = (structured) => {
const ms = toUnsignedHex(structured.getMostSignificantBits());
const ls = toUnsignedHex(structured.getLeastSignificantBits());
return `${ms.slice(0, 8)}-${ms.slice(8, 12)}-${ms.slice(12)}-${ls.slice(0, 4)}-${ls.slice(4)}`;
};
exports.structuredUUIDToString = structuredUUIDToString;
const U64_MASK = (1n << 64n) - 1n;
const toUnsignedHex = (value) => (BigInt(value) & U64_MASK).toString(16).padStart(16, "0");
//# sourceMappingURL=grpcUUID.js.map