UNPKG

mappersmith

Version:

It is a lightweight rest client for node.js and the browser

1 lines 1.9 kB
{"version":3,"sources":["../../../src/utils/clone.ts"],"sourcesContent":["import { isPlainObject, isObject } from './index'\n\nexport const clone = <T>(obj: T): T => {\n if (isPlainObject(obj)) {\n return cloneObject(obj)\n } else if (Array.isArray(obj)) {\n return cloneArray(obj)\n } else {\n return obj\n }\n}\n\nconst cloneObject = <T extends Record<string, unknown>>(obj: T): T => {\n const clone = {} as T\n for (const i in obj) {\n const value = obj[i]\n if (isObject(value)) {\n clone[i] = cloneObject(value)\n } else if (Array.isArray(value)) {\n clone[i] = cloneArray(value)\n } else {\n clone[i] = value\n }\n }\n return clone\n}\n\nconst cloneArray = <T extends Array<unknown>>(obj: T): T => {\n const clone = [] as unknown as T\n for (const i in obj) {\n const value = obj[i]\n if (isObject(value)) {\n clone.push(cloneObject(value))\n } else if (Array.isArray(value)) {\n clone.push(cloneArray(value))\n } else {\n clone.push(value)\n }\n }\n return clone\n}\n"],"mappings":";AAAA,SAAS,eAAe,gBAAgB;AAEjC,IAAM,QAAQ,CAAI,QAAc;AACrC,MAAI,cAAc,GAAG,GAAG;AACtB,WAAO,YAAY,GAAG;AAAA,EACxB,WAAW,MAAM,QAAQ,GAAG,GAAG;AAC7B,WAAO,WAAW,GAAG;AAAA,EACvB,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,IAAM,cAAc,CAAoC,QAAc;AACpE,QAAMA,SAAQ,CAAC;AACf,aAAW,KAAK,KAAK;AACnB,UAAM,QAAQ,IAAI,CAAC;AACnB,QAAI,SAAS,KAAK,GAAG;AACnB,MAAAA,OAAM,CAAC,IAAI,YAAY,KAAK;AAAA,IAC9B,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,MAAAA,OAAM,CAAC,IAAI,WAAW,KAAK;AAAA,IAC7B,OAAO;AACL,MAAAA,OAAM,CAAC,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAOA;AACT;AAEA,IAAM,aAAa,CAA2B,QAAc;AAC1D,QAAMA,SAAQ,CAAC;AACf,aAAW,KAAK,KAAK;AACnB,UAAM,QAAQ,IAAI,CAAC;AACnB,QAAI,SAAS,KAAK,GAAG;AACnB,MAAAA,OAAM,KAAK,YAAY,KAAK,CAAC;AAAA,IAC/B,WAAW,MAAM,QAAQ,KAAK,GAAG;AAC/B,MAAAA,OAAM,KAAK,WAAW,KAAK,CAAC;AAAA,IAC9B,OAAO;AACL,MAAAA,OAAM,KAAK,KAAK;AAAA,IAClB;AAAA,EACF;AACA,SAAOA;AACT;","names":["clone"]}