mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-29 23:41:35 +08:00
24 lines
802 B
TypeScript
24 lines
802 B
TypeScript
|
|
export function getNestedValue(obj: Record<string, unknown>, path: string): unknown {
|
||
|
|
const parts = path.split(".");
|
||
|
|
let cur: unknown = obj;
|
||
|
|
for (const p of parts) {
|
||
|
|
if (cur == null || typeof cur !== "object") return undefined;
|
||
|
|
cur = (cur as Record<string, unknown>)[p];
|
||
|
|
}
|
||
|
|
return cur;
|
||
|
|
}
|
||
|
|
|
||
|
|
export function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): Record<string, unknown> {
|
||
|
|
const clone = structuredClone(obj);
|
||
|
|
const parts = path.split(".");
|
||
|
|
let cur: Record<string, unknown> = clone;
|
||
|
|
for (let i = 0; i < parts.length - 1; i++) {
|
||
|
|
if (cur[parts[i]] == null || typeof cur[parts[i]] !== "object") {
|
||
|
|
cur[parts[i]] = {};
|
||
|
|
}
|
||
|
|
cur = cur[parts[i]] as Record<string, unknown>;
|
||
|
|
}
|
||
|
|
cur[parts[parts.length - 1]] = value;
|
||
|
|
return clone;
|
||
|
|
}
|