@modern-kit/utils
Version:
1 lines • 2.16 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","sources":["../../../src/common/size/index.ts"],"sourcesContent":["import { isArray, isPlainObject, isString } from '../../validator';\n\n/**\n * @description 주어진 값의 크기를 반환합니다. 크기는 값의 유형에 따라 결정됩니다:\n * - 문자열의 경우, 문자 수를 반환합니다.\n * - 배열, NodeList 및 HTMLCollection의 경우, 요소의 수를 반환합니다.\n * - Set 및 Map의 경우, 항목 수를 반환합니다.\n * - 일반 객체의 경우, 자체 열거 가능한 속성의 수를 반환합니다.\n * - 그 외 숫자, WeakMap, WeakSet 등의 타입은 허용하지 않습니다.\n *\n * @param {string | Record<PropertyKey, any>} value - 크기를 결정할 값입니다. 문자열, 배열, NodeList, HTMLCollection, Set, Map 또는 일반 객체일 수 있습니다.\n * @returns {number} 주어진 값의 크기입니다.\n * @throws {Error} 값의 유형이 유효하지 않은 경우 오류를 발생시킵니다.\n *\n * @example\n * size('12345');\n * // 5\n *\n * size([1, 2, 3, 4, 5]);\n * // 5\n *\n * size({ a: 1, b: 2, c: 3, d: 4, e: 5 });\n * // 5\n */\nexport function size(value: string | Record<PropertyKey, any>): number {\n if (isString(value)) {\n return value.length;\n }\n\n if (\n isArray(value) ||\n value instanceof NodeList ||\n value instanceof HTMLCollection\n ) {\n return value.length;\n }\n\n if (value instanceof Set || value instanceof Map) {\n return value.size;\n }\n\n if (isPlainObject(value)) {\n return Object.keys(value).length;\n }\n\n throw new Error('유효하지 않은 값입니다.');\n}\n"],"names":[],"mappings":";;;;;;AAwBO,SAAS,KAAK,KAAA,EAAkD;AACrE,EAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,IAAA,OAAO,KAAA,CAAM,MAAA;AAAA,EACf;AAEA,EAAA,IACE,QAAQ,KAAK,CAAA,IACb,KAAA,YAAiB,QAAA,IACjB,iBAAiB,cAAA,EACjB;AACA,IAAA,OAAO,KAAA,CAAM,MAAA;AAAA,EACf;AAEA,EAAA,IAAI,KAAA,YAAiB,GAAA,IAAO,KAAA,YAAiB,GAAA,EAAK;AAChD,IAAA,OAAO,KAAA,CAAM,IAAA;AAAA,EACf;AAEA,EAAA,IAAI,aAAA,CAAc,KAAK,CAAA,EAAG;AACxB,IAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,MAAA;AAAA,EAC5B;AAEA,EAAA,MAAM,IAAI,MAAM,iEAAe,CAAA;AACjC;;;;"}