@stryke/helpers
Version:
A package containing miscellaneous helper functions that are used across many different Storm Software projects.
2 lines (1 loc) • 487 B
JavaScript
import{isObjectIndex as f}from"@stryke/type-checks/is-object-index";import{isString as l}from"@stryke/type-checks/is-string";import{toPath as p}from"./to-path";export function setField(i,e,c){const r=Array.isArray(e)?e:l(e)?p(e):[e];for(const t of r)if(t==="__proto__"||t==="constructor"||t==="prototype")throw new Error(`Invalid key in path: ${t}`);let o=i;for(let t=0;t<r.length-1;t++){const n=r[t],y=r[t+1];o[n]===null&&(o[n]=f(y)?[]:{}),o=o[n]}const s=r.at(-1);return s&&(o[s]=c),i}