{"version":3,"file":"isEmptyValue-D-p2B9pl.cjs","names":["isArray","isObject","isPlainObject","createMessage","isPlainObject","createMessage","isNil","isNaN","isString","isEmptyString","isArray","isObject"],"sources":["../src/predicates/is/isEmptyArray.ts","../src/predicates/is/isEmptyObject.ts","../src/predicates/is/isEmptyValue.ts"],"sourcesContent":["import { isArray } from \"@/predicates/is/isArray\";\n\n/** ----------------------------------------------------------\n * * ***Predicate: `isEmptyArray`.***\n * -----------------------------------------------------------\n * **Checks whether a given value is an empty array.**\n *\n * ---\n * - **Behavior:**\n *     - Non-array inputs are considered ***`empty`*** ***(defensive strategy)***.\n *\n * ---\n * @param {*} [value] - The value to check.\n *\n * ---\n * @returns {boolean} Returns `true` if it's ***not an array*** or ***an empty-array***.\n *\n * ---\n * @example\n * isEmptyArray([]);\n * // ➔ true\n * isEmptyArray([1, 2, 3]);\n * // ➔ false\n * isEmptyArray(\"not an array\");\n * // ➔ true\n * isEmptyArray(null);\n * // ➔ true\n * isEmptyArray(undefined);\n * // ➔ true\n *\n * if (isEmptyArray(data.items)) {\n *   console.log(\"No items to display.\");\n * }\n */\nexport const isEmptyArray = (value: unknown): boolean => {\n  if (!isArray(value)) return true;\n\n  return value.length === 0;\n};\n","import { createMessage } from \"@/_private/logger\";\n\nimport { assertIsBoolean } from \"@/assertions/booleans/assertIsBoolean\";\n\nimport { isObject } from \"./isObject\";\nimport { isPlainObject } from \"./isPlainObject\";\n\ntype IsEmptyObjectOptions = {\n  /** ----------------------------------------------------------\n   * * ***Whether to check for symbol properties in addition to string keys, defaultValue: `false`.***\n   * -----------------------------------------------------------\n   *\n   * @default false\n   */\n  checkSymbols?: boolean;\n};\n\n/** ----------------------------------------------------------\n * * ***Predicate: `isEmptyObject`.***\n * -----------------------------------------------------------\n * **Checks if a value is a plain object with **no own enumerable string-key properties**,\n * and optionally **no own enumerable symbol-key properties** when `checkSymbols` is `true`.**\n *\n * ---\n * - **Behavior:**\n *     - If the value is **not an object** (e.g. `null`, array, primitive), it is considered empty.\n *     - If `options.checkSymbols` is `true`, **symbol properties** are also checked.\n *\n * ---\n * @param {*} value - The value to check.\n * @param {IsEmptyObjectOptions} [options] - Optional settings.\n * @param {IsEmptyObjectOptions[\"checkSymbols\"]} [options.checkSymbols=false] - Whether to also check symbol properties.\n *\n * ---\n * @returns {boolean} Return `true` if the value is considered empty or not an object, false otherwise.\n *\n * ---\n * @example\n * isEmptyObject({});\n * // ➔ true\n * isEmptyObject({}, { checkSymbols: true });\n * // ➔ true\n * isEmptyObject({ a: 1 });\n * // ➔ false\n * isEmptyObject({ [Symbol('s')]: 1 });\n * // ➔ true\n * isEmptyObject({ [Symbol('s')]: 1 }, { checkSymbols: true });\n * // ➔ false\n * isEmptyObject(null);\n * // ➔ true (not object)\n * isEmptyObject([]);\n * // ➔ true (not plain object)\n * isEmptyObject(123);\n * // ➔ true (not object)\n */\nexport const isEmptyObject = (\n  value: unknown,\n  options: IsEmptyObjectOptions = {}\n): boolean => {\n  if (!isObject(value)) return true;\n  if (!isPlainObject(options)) options = {};\n\n  const checkSymbols = options.checkSymbols ?? false;\n\n  assertIsBoolean(checkSymbols, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"isEmptyObject\",\n        `Parameter \\`checkSymbols\\` property of the \\`options\\` (second parameter) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  const hasNoKeys = Object.keys(value).length === 0;\n  if (checkSymbols) {\n    return hasNoKeys && Object.getOwnPropertySymbols(value).length === 0;\n  }\n  return hasNoKeys;\n};\n","import { createMessage } from \"@/_private/logger\";\n\nimport { assertIsBoolean } from \"@/assertions/booleans/assertIsBoolean\";\n\nimport { isNaN } from \"./isNaN\";\nimport { isNil } from \"./isNil\";\nimport { isArray } from \"./isArray\";\nimport { isObject } from \"./isObject\";\nimport { isString } from \"./isString\";\nimport { isEmptyArray } from \"./isEmptyArray\";\nimport { isEmptyObject } from \"./isEmptyObject\";\nimport { isEmptyString } from \"./isEmptyString\";\nimport { isPlainObject } from \"./isPlainObject\";\n\ntype IsEmptyValueOptions = {\n  /** ----------------------------------------------------------\n   * * ***Whether to check symbol properties when checking empty objects.***\n   * ----------------------------------------------------------\n   *\n   * @default false\n   */\n  checkSymbols?: boolean;\n};\n\n/** ----------------------------------------------------------\n * * ***Predicate: `isEmptyValue`.***\n * -----------------------------------------------------------\n * **Determines if a value is **`empty`**.**\n *\n * ---\n * - #### *Behavior:*\n *      - #### Covering:\n *           - Empty objects: `{}`.\n *           - Empty arrays: `[]`.\n *           - Empty strings: `\"\"` or whitespace-only (trimmed).\n *           - `null`, `undefined`, `false`, or `NaN`.\n *           ---\n *      - #### Returns **`false`** for:\n *           - Non-empty objects/arrays.\n *           - Non-empty strings.\n *           - Numbers (except `NaN`).\n *           - `Functions`, `true`, `symbols`, `etc`.\n *\n * ---\n * @param {*} value - The value to evaluate.\n * @param {IsEmptyValueOptions} [options] - Optional settings.\n *\n * ---\n * @returns {boolean} Return `true` if the value is considered empty, otherwise `false`.\n *\n * @example\n * isEmptyValue({});\n * // ➔ true\n * isEmptyValue([]);\n * // ➔ true\n * isEmptyValue({ key: \"value\" });\n * // ➔ false\n * isEmptyValue({ [Symbol(\"foo\")]: 123 });\n * // ➔ true (default `checkSymbols` is `false`)\n * isEmptyValue({ [Symbol(\"foo\")]: 123 }, { checkSymbols: false });\n * // ➔ true (default `checkSymbols` is `false`)\n * isEmptyValue({ [Symbol(\"foo\")]: 123 }, { checkSymbols: true });\n * // ➔ false\n * isEmptyValue([1, 2, 3]);\n * // ➔ false\n * isEmptyValue(NaN);\n * // ➔ true\n * isEmptyValue(true);\n * // ➔ false\n * isEmptyValue(false);\n * // ➔ true\n * isEmptyValue(null);\n * // ➔ true\n * isEmptyValue(undefined);\n * // ➔ true\n * isEmptyValue(\"\");\n * // ➔ true\n * isEmptyValue(\"   \");\n * // ➔ true\n * isEmptyValue(0);\n * // ➔ false\n * isEmptyValue(-1);\n * // ➔ false\n * isEmptyValue(2);\n * // ➔ false\n * isEmptyValue(() => {});\n * // ➔ false\n */\nexport const isEmptyValue = (\n  value: unknown,\n  options: IsEmptyValueOptions = {}\n): boolean => {\n  if (!isPlainObject(options)) options = {};\n\n  const checkSymbols = options.checkSymbols ?? false;\n\n  assertIsBoolean(checkSymbols, {\n    message: ({ currentType, validType }) =>\n      createMessage(\n        \"isEmptyValue\",\n        `Parameter \\`checkSymbols\\` property of the \\`options\\` (second parameter) must be of type \\`${validType}\\`, but received: \\`${currentType}\\`.`\n      )\n  });\n\n  if (isNil(value) || value === false || isNaN(value)) return true;\n  if (isString(value)) return isEmptyString(value);\n  if (isArray(value)) return isEmptyArray(value);\n  if (isObject(value)) {\n    return isEmptyObject(value, { checkSymbols });\n  }\n\n  return false;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,gBAAgB,UAA4B;CACvD,IAAI,CAACA,uBAAQ,KAAK,GAAG,OAAO;CAE5B,OAAO,MAAM,WAAW;AAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACiBA,MAAa,iBACX,OACA,UAAgC,CAAC,MACrB;CACZ,IAAI,CAACC,wBAAS,KAAK,GAAG,OAAO;CAC7B,IAAI,CAACC,6BAAc,OAAO,GAAG,UAAU,CAAC;CAExC,MAAM,eAAe,QAAQ,gBAAgB;CAE7C,+BAAgB,cAAc,EAC5B,UAAU,EAAE,aAAa,gBACvBC,6BACE,iBACA,+FAA+F,UAAU,sBAAsB,YAAY,IAC7I,EACJ,CAAC;CAED,MAAM,YAAY,OAAO,KAAK,KAAK,CAAC,CAAC,WAAW;CAChD,IAAI,cACF,OAAO,aAAa,OAAO,sBAAsB,KAAK,CAAC,CAAC,WAAW;CAErE,OAAO;AACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACWA,MAAa,gBACX,OACA,UAA+B,CAAC,MACpB;CACZ,IAAI,CAACC,6BAAc,OAAO,GAAG,UAAU,CAAC;CAExC,MAAM,eAAe,QAAQ,gBAAgB;CAE7C,+BAAgB,cAAc,EAC5B,UAAU,EAAE,aAAa,gBACvBC,6BACE,gBACA,+FAA+F,UAAU,sBAAsB,YAAY,IAC7I,EACJ,CAAC;CAED,IAAIC,qBAAM,KAAK,KAAK,UAAU,SAASC,qBAAM,KAAK,GAAG,OAAO;CAC5D,IAAIC,wBAAS,KAAK,GAAG,OAAOC,oCAAc,KAAK;CAC/C,IAAIC,uBAAQ,KAAK,GAAG,OAAO,aAAa,KAAK;CAC7C,IAAIC,wBAAS,KAAK,GAChB,OAAO,cAAc,OAAO,EAAE,aAAa,CAAC;CAG9C,OAAO;AACT"}
