@tanstack/ai
Version:
Type-safe TypeScript AI SDK for streaming chat, tool calling, agents, structured outputs, and multimodal generation.
43 lines (42 loc) • 1.31 kB
JavaScript
//#region src/utilities/merge-metadata.ts
function isPlainRecord(value) {
return value != null && typeof value === "object" && !Array.isArray(value);
}
function mergeMetadata(current, incoming) {
if (incoming == null) return current;
if (current == null) return { ...incoming };
const merged = {
...current,
...incoming
};
if (isPlainRecord(current.tanstack) && isPlainRecord(incoming.tanstack)) merged.tanstack = {
...current.tanstack,
...incoming.tanstack
};
return merged;
}
/** Read `metadata.tanstack`. Not part of the public SDK surface. */
function tanstackMetadata(value) {
if (value == null) return void 0;
const nested = "metadata" in value ? value.metadata : void 0;
const tanstack = (nested != null && typeof nested === "object" && !Array.isArray(nested) ? nested : value).tanstack;
if (tanstack == null || typeof tanstack !== "object" || Array.isArray(tanstack)) return;
return tanstack;
}
function withTanstackMetadata(value, tanstack) {
const current = value.metadata;
const currentTanstack = tanstackMetadata(value) ?? {};
return {
...value,
metadata: {
...current ?? {},
tanstack: {
...currentTanstack,
...tanstack
}
}
};
}
//#endregion
export { mergeMetadata, tanstackMetadata, withTanstackMetadata };
//# sourceMappingURL=merge-metadata.js.map