@bemedev/types
Version:
Type definitions for Bemedev projects
1 lines • 4.03 kB
Source Map (JSON)
{"version":3,"file":"functions.cjs","sources":["../../src/transform/functions.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport {\n CUSTOM,\n PARTIAL,\n PRIMITIVE_OBJECTS,\n PRIMITIVES,\n} from './constants';\nimport type {\n Custom,\n ObjectS,\n PartialCustom,\n TransformO,\n} from './types.types';\n\nconst _transform = <T>(object?: any): T => {\n let out: any;\n\n const isArray = Array.isArray(object);\n if (isArray) {\n out = object.map(_transform);\n return out;\n }\n\n const isObject = typeof object === 'object';\n\n if (isObject) {\n out = {};\n\n const entries = Object.entries(object).filter(\n ([key]) => key !== PARTIAL,\n );\n if (entries.length === 0) return out;\n\n const isCustom = Object.keys(object).every(key => key === CUSTOM);\n\n if (isCustom) return out;\n\n entries.forEach(([key, value]) => {\n out[key] = _transform(value);\n });\n\n return out;\n }\n\n for (const primitive of PRIMITIVES) {\n if (object === primitive) return out;\n }\n\n for (const primitive of PRIMITIVE_OBJECTS.filter(\n value => value !== 'date',\n )) {\n if (object === primitive) {\n out = {};\n return out;\n }\n }\n\n return out;\n};\n\nexport const transform = <T extends ObjectS>(object?: T) =>\n _transform<TransformO<T>>(object);\n\ntransform.const = <const T extends ObjectS>(object?: T) => {\n return _transform<TransformO<T>>(object);\n};\n\ntransform.custom = <T = any>(_?: T): Custom<T> => {\n const out: any = {};\n out[CUSTOM] = undefined;\n return out;\n};\n\ntransform.partial = <T extends ObjectS>(value: T): T & PartialCustom => {\n const entries = Object.entries(value).filter(([key]) => key !== PARTIAL);\n const out: any = {};\n\n entries.forEach(([key, value]) => {\n out[key] = value;\n });\n\n out[PARTIAL] = undefined;\n\n return out;\n};\n\ntransform.tuple = <T extends ObjectS[]>(...els: T) => transform(els);\n\ntransform.union = <T extends ObjectS[]>(..._: T) =>\n transform.custom<TransformO<T[number]>>();\n"],"names":["PARTIAL","CUSTOM","PRIMITIVES","PRIMITIVE_OBJECTS"],"mappings":";;;;AAAA;AAcA,MAAM,UAAU,GAAG,CAAI,MAAY,KAAO;AACxC,IAAA,IAAI,GAAQ;IAEZ,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IACrC,IAAI,OAAO,EAAE;AACX,QAAA,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC;AAC5B,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ;IAE3C,IAAI,QAAQ,EAAE;QACZ,GAAG,GAAG,EAAE;QAER,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3C,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAKA,2BAAO,CAC3B;AACD,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;AAEpC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,KAAKC,0BAAM,CAAC;AAEjE,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,GAAG;QAExB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC;AAC9B,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,KAAK,MAAM,SAAS,IAAIC,8BAAU,EAAE;QAClC,IAAI,MAAM,KAAK,SAAS;AAAE,YAAA,OAAO,GAAG;IACtC;AAEA,IAAA,KAAK,MAAM,SAAS,IAAIC,qCAAiB,CAAC,MAAM,CAC9C,KAAK,IAAI,KAAK,KAAK,MAAM,CAC1B,EAAE;AACD,QAAA,IAAI,MAAM,KAAK,SAAS,EAAE;YACxB,GAAG,GAAG,EAAE;AACR,YAAA,OAAO,GAAG;QACZ;IACF;AAEA,IAAA,OAAO,GAAG;AACZ,CAAC;AAEM,MAAM,SAAS,GAAG,CAAoB,MAAU,KACrD,UAAU,CAAgB,MAAM;AAElC,SAAS,CAAC,KAAK,GAAG,CAA0B,MAAU,KAAI;AACxD,IAAA,OAAO,UAAU,CAAgB,MAAM,CAAC;AAC1C,CAAC;AAED,SAAS,CAAC,MAAM,GAAG,CAAU,CAAK,KAAe;IAC/C,MAAM,GAAG,GAAQ,EAAE;AACnB,IAAA,GAAG,CAACF,0BAAM,CAAC,GAAG,SAAS;AACvB,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,SAAS,CAAC,OAAO,GAAG,CAAoB,KAAQ,KAAuB;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,KAAKD,2BAAO,CAAC;IACxE,MAAM,GAAG,GAAQ,EAAE;IAEnB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC/B,QAAA,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK;AAClB,IAAA,CAAC,CAAC;AAEF,IAAA,GAAG,CAACA,2BAAO,CAAC,GAAG,SAAS;AAExB,IAAA,OAAO,GAAG;AACZ,CAAC;AAED,SAAS,CAAC,KAAK,GAAG,CAAsB,GAAG,GAAM,KAAK,SAAS,CAAC,GAAG,CAAC;AAEpE,SAAS,CAAC,KAAK,GAAG,CAAsB,GAAG,CAAI,KAC7C,SAAS,CAAC,MAAM,EAAyB;;;;"}