jorel
Version:
A unified wrapper for working with LLMs from multiple providers, including streams, images, documents & automatic tool use.
42 lines (41 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateMessageId = exports.generateUniqueId = exports.resolveIdGenerator = void 0;
const ulid_1 = require("ulid");
const uuid_1 = require("uuid");
/**
* Resolves a MessageIdGenerator to a function that generates unique IDs
*/
const resolveIdGenerator = (generator) => {
if (typeof generator === "function") {
return generator;
}
switch (generator) {
case "ulid":
return (params) => (0, ulid_1.ulid)(params.timestamp);
case "uuidv4":
return () => (0, uuid_1.v4)();
case "uuidv7":
return (params) => (0, uuid_1.v7)({ msecs: params.timestamp });
default:
throw new Error(`Unknown ID generator: ${generator}`);
}
};
exports.resolveIdGenerator = resolveIdGenerator;
/**
* Default unique ID generator (uuidv7)
*/
const generateUniqueId = (timestamp) => {
return (0, uuid_1.v7)({ msecs: timestamp ?? Date.now() });
};
exports.generateUniqueId = generateUniqueId;
/**
* Generate a unique ID using the specified generator
* @param generator - The generator to use (defaults to uuidv7)
* @param role - The role of the message (used by custom generators)
*/
const generateMessageId = (generator = "uuidv7", timestamp) => {
const generatorFn = (0, exports.resolveIdGenerator)(generator);
return generatorFn({ timestamp: timestamp ?? Date.now() });
};
exports.generateMessageId = generateMessageId;