UNPKG

@modern-kit/utils

Version:
1 lines 4.76 kB
{"version":3,"file":"index.mjs","sources":["../../../src/common/pickFalsy/pickFalsy.utils.ts","../../../src/common/pickFalsy/index.ts"],"sourcesContent":["import { isNumber, isString, isArray, isPlainObject } from '../../validator';\n\n/**\n * @description 숫자 0을 falsy로 간주합니다.\n */\nconst isFalsyNumber = (value: unknown): boolean => {\n return isNumber(value) && value === 0;\n};\n\n/**\n * @description 빈 문자열을 falsy로 간주합니다.\n */\nconst isFalsyString = (value: unknown): boolean => {\n return isString(value) && value === '';\n};\n\n/**\n * @description 빈 배열을 falsy로 간주합니다.\n */\nconst isFalsyArray = (value: unknown): boolean => {\n return isArray(value) && value.length === 0;\n};\n\n/**\n * @description 빈 객체를 falsy로 간주합니다.\n */\nconst isFalsyObject = (value: unknown): boolean => {\n return isPlainObject(value) && Object.keys(value).length === 0;\n};\n\n/**\n * @description 다양한 타입에 대한 falsy 판단 함수들을 모아둔 맵\n * 각 함수는 해당 타입이 falsy로 간주되는 경우 true를 반환합니다.\n */\nexport const FALSY_CHECK_MAPPER = {\n number: isFalsyNumber,\n string: isFalsyString,\n array: isFalsyArray,\n object: isFalsyObject,\n} as const;\n","import { isNil, isBoolean, isNumber } from '../../validator';\nimport { FALSY_CHECK_MAPPER } from './pickFalsy.utils';\n\ntype FalsyCheckKey = keyof typeof FALSY_CHECK_MAPPER;\n\n/**\n * @description 선택한 타입에 대한 falsy 체크 함수를 반환합니다.\n *\n * `숫자 0`, `빈 문자열(\"\")`, `빈 배열([])`, `빈 객체({})`를 falsy로 판단하고 싶지 않을 수 있습니다.\n * 이때, 타입 인자를 설정해서 판단하고자 하는 타입을 지정할 수 있습니다.\n *\n * - 'number'를 지정하면 `숫자 0`을 falsy로 판단하지 않습니다.\n * - 'string'을 지정하면 `빈 문자열(\"\")`을 falsy로 판단하지 않습니다.\n * - 'array'를 지정하면 `빈 배열([])`을 falsy로 판단하지 않습니다.\n * - 'object'를 지정하면 `빈 객체({})`을 falsy로 판단하지 않습니다.\n *\n * 기본적으로 `false`, `null`, `undefined`, `NaN`에 대해서만 falsy 체크를 수행합니다.\n *\n * @param {FalsyCheckKey[]} falsyCheckList - falsy를 체크하고자 하는 타입을 받습니다.\n * @returns {(value: unknown) => boolean} - 선택한 타입에 대한 falsy함수를 반환합니다.\n *\n * @example\n * const isInvalidValue = pickFalsy();\n *\n * isInvalidValue(null) // true\n * isInvalidValue(undefined) // true\n * isInvalidValue(false) // true\n * isInvalidValue(NaN) // true\n *\n * isInvalidValue(0) // false\n * isInvalidValue(-0) // false\n * isInvalidValue('') // false\n * isInvalidValue([]) // false\n * isInvalidValue({}) // false\n *\n * @example\n * const isInvalidValue = pickFalsy('number');\n *\n * isInvalidValue(0) // true\n * isInvalidValue(-0) // true\n *\n * @example\n * const isInvalidValue = pickFalsy('string');\n *\n * isInvalidValue('') // true\n *\n * @example\n * const isInvalidValue = pickFalsy('array');\n *\n * isInvalidValue([]) // true\n *\n * @example\n * const isInvalidValue = pickFalsy('object');\n *\n * isInvalidValue({}) // true\n */\nexport function pickFalsy(\n ...falsyCheckList: FalsyCheckKey[]\n): <T>(value: T) => boolean {\n return function (value: unknown) {\n if (isNil(value)) {\n return true;\n }\n\n if (isNumber(value) && isNaN(value)) {\n return true;\n }\n\n if (isBoolean(value) && value === false) {\n return true;\n }\n\n return falsyCheckList.some(\n (falsyProp) => !!FALSY_CHECK_MAPPER[falsyProp](value)\n );\n };\n}\n"],"names":[],"mappings":";;;;;;;;;AAKA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4B;AACjD,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,KAAA,KAAU,CAAA;AACtC,CAAA;AAKA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4B;AACjD,EAAA,OAAO,QAAA,CAAS,KAAK,CAAA,IAAK,KAAA,KAAU,EAAA;AACtC,CAAA;AAKA,MAAM,YAAA,GAAe,CAAC,KAAA,KAA4B;AAChD,EAAA,OAAO,OAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,MAAA,KAAW,CAAA;AAC5C,CAAA;AAKA,MAAM,aAAA,GAAgB,CAAC,KAAA,KAA4B;AACjD,EAAA,OAAO,cAAc,KAAK,CAAA,IAAK,OAAO,IAAA,CAAK,KAAK,EAAE,MAAA,KAAW,CAAA;AAC/D,CAAA;AAMO,MAAM,kBAAA,GAAqB;AAAA,EAChC,MAAA,EAAQ,aAAA;AAAA,EACR,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAO,YAAA;AAAA,EACP,MAAA,EAAQ;AACV,CAAA;;ACiBO,SAAS,aACX,cAAA,EACuB;AAC1B,EAAA,OAAO,SAAU,KAAA,EAAgB;AAC/B,IAAA,IAAI,KAAA,CAAM,KAAK,CAAA,EAAG;AAChB,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,QAAA,CAAS,KAAK,CAAA,IAAK,KAAA,CAAM,KAAK,CAAA,EAAG;AACnC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,IAAI,SAAA,CAAU,KAAK,CAAA,IAAK,KAAA,KAAU,KAAA,EAAO;AACvC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,cAAA,CAAe,IAAA;AAAA,MACpB,CAAC,SAAA,KAAc,CAAC,CAAC,kBAAA,CAAmB,SAAS,EAAE,KAAK;AAAA,KACtD;AAAA,EACF,CAAA;AACF;;;;"}