/* eslint-disable @typescript-eslint/no-explicit-any */ function setIn(target: any, path: (string | number)[], value: unknown): any { if (path.length === 0) { return value; } const pathSegment = path[0]; const restOfPath = path.slice(1); if (Array.isArray(target)) { const localTarget = [...(target ?? [])]; if (Number.isNaN(+pathSegment)) { return localTarget; } const index = +pathSegment; if (index < 0 || index >= localTarget.length) { return localTarget; } localTarget[index] = setIn(localTarget[index], restOfPath, value); return localTarget; } const localTarget = target ?? {}; return { ...localTarget, [pathSegment]: setIn(localTarget[pathSegment], restOfPath, value), }; } export function set(target: T, path: string | undefined | null, value: unknown): T; export function set(target: any, path: string | undefined | null, value: unknown): any { return setIn( target, (path ?? '').split('.').map(part => { if (Number.isNaN(+part)) { return part; } return +part; }), value, ); }