lodash-omitdeep
Version:
lodash omitDeep/omitByDeep object key/value recursively
1 lines • 2.7 kB
Source Map (JSON)
{"version":3,"file":"omitDeep.mjs","sources":["../../../src/omitDeep/omitDeep.ts"],"sourcesContent":["import type { Many, PartialObject, PropertyName } from 'lodash';\r\n\r\nimport lodash from 'lodash';\r\n\r\nexport const needOmit = (value: any) =>\r\n !lodash.isNil(value) && (lodash.isPlainObject(value) || Array.isArray(value));\r\n\r\ninterface OmitDeep {\r\n <T extends object, K extends PropertyName[]>(\r\n object: T | null | undefined,\r\n ...paths: K\r\n ): Pick<T, Exclude<keyof T, K[number]>>;\r\n <T extends object, K extends keyof T>(\r\n object: T | null | undefined,\r\n ...paths: Many<K>[]\r\n ): Omit<T, K>;\r\n <T extends object>(\r\n object: T | null | undefined,\r\n ...paths: Many<PropertyName>[]\r\n ): PartialObject<T>;\r\n}\r\n\r\n/**\r\n * The opposite of `_.pick`; this method creates an object composed of the\r\n * own and inherited enumerable properties of `object` that are not omitted.\r\n *\r\n * @category Function\r\n * @param object The source object.\r\n * @param [paths] The property names to omit, specified\r\n * individually or in arrays.\r\n * @returns Returns the new object.\r\n * @example\r\n *\r\n * const object = { 'a': 1, 'b': 2, 'c': { 'a': 1, 'b': 2 } };\r\n *\r\n * omitDeep(object, ['b', 'a']);\r\n * // => { 'c': {} }\r\n */\r\nexport const omitDeep: OmitDeep = (object: any, ...paths: any) => {\r\n function omitDeepOnOwnProps(object: any) {\r\n if (!Array.isArray(object) && !lodash.isPlainObject(object)) {\r\n return object;\r\n }\r\n\r\n if (Array.isArray(object)) {\r\n return object.map((element) => (needOmit(element) ? omitDeep(element, ...paths) : element));\r\n }\r\n\r\n const temp = {};\r\n\r\n for (const [key, value] of Object.entries<{\r\n [x: string]: object | PropertyName;\r\n }>(object)) {\r\n (temp as any)[key] = needOmit(value) ? omitDeep(value, ...paths) : value;\r\n }\r\n return lodash.omit(temp, ...paths);\r\n }\r\n\r\n return omitDeepOnOwnProps(object);\r\n};\r\n"],"names":["needOmit","value","lodash","omitDeep","object","paths","omitDeepOnOwnProps","element","temp","key"],"mappings":";AAIO,MAAMA,IAAW,CAACC,MACvB,CAACC,EAAO,MAAMD,CAAK,MAAMC,EAAO,cAAcD,CAAK,KAAK,MAAM,QAAQA,CAAK,IAiChEE,IAAqB,CAACC,MAAgBC,MAAe;AAChE,WAASC,EAAmBF,GAAa;AACnC,QAAA,CAAC,MAAM,QAAQA,CAAM,KAAK,CAACF,EAAO,cAAcE,CAAM;AACjDA,aAAAA;AAGL,QAAA,MAAM,QAAQA,CAAM;AACtB,aAAOA,EAAO,IAAI,CAACG,MAAaP,EAASO,CAAO,IAAIJ,EAASI,GAAS,GAAGF,CAAK,IAAIE,CAAQ;AAG5F,UAAMC,IAAO,CAAC;AAEd,eAAW,CAACC,GAAKR,CAAK,KAAK,OAAO,QAE/BG,CAAM;AACN,MAAAI,EAAaC,CAAG,IAAIT,EAASC,CAAK,IAAIE,EAASF,GAAO,GAAGI,CAAK,IAAIJ;AAErE,WAAOC,EAAO,KAAKM,GAAM,GAAGH,CAAK;AAAA,EAAA;AAGnC,SAAOC,EAAmBF,CAAM;AAClC;"}