{"version":3,"sources":["../../src/functions/isArray/isArray.ts","../../src/functions/isEmpty/isEmpty.ts"],"names":[],"mappings":";AAGO,IAAM,UAAmB,MAAM;;;AC+F/B,SAAS,QAAW,OAA0B;AACnD,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,MAAI,QAAQ,KAAK,KAAK,OAAO,UAAU,UAAU;AAC/C,WAAO,MAAM,WAAW;AAAA,EAC1B;AAEA,MAAI,iBAAiB,OAAO,iBAAiB,KAAK;AAChD,WAAO,MAAM,SAAS;AAAA,EACxB;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,CAAC;AAAA,EACV;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,EACvC;AAEA,SAAO;AACT","sourcesContent":["import { Many, Maybe } from '../../types';\n\n// eslint-disable-next-line prefer-destructuring\nexport const isArray: IsArray = Array.isArray;\n\ninterface IsArray {\n  /**\n   * The same as `Array.isArray` but with a better type guard.\n   * @param value The value to check.\n   * @returns `true` if the value is an array, `false` otherwise.\n   * @example\n   * ```ts\n   * isArray([1, 2, 3]) // true\n   * isArray('foo') // false\n   * ```\n   */\n  <T>(value: Maybe<Array<ArrayElement<T>>>): value is NonNullable<typeof value>;\n  /**\n   * The same as `Array.isArray` but with a better type guard.\n   * @param value The value to check.\n   * @returns `true` if the value is an array, `false` otherwise.\n   * @example\n   * ```ts\n   * isArray([1, 2, 3]) // true\n   * isArray('foo') // false\n   * ```\n   */\n  <T>(\n    value: Maybe<ReadonlyArray<ArrayElement<T>>>\n  ): value is NonNullable<typeof value>;\n\n  /**\n   * The same as `Array.isArray` but with a better type guard.\n   * @param value The value to check.\n   * @returns `true` if the value is an array, `false` otherwise.\n   * @example\n   * ```ts\n   * isArray([1, 2, 3]) // true\n   * isArray('foo') // false\n   * ```\n   */\n  <T>(value: Maybe<Many<T>>): value is NonNullable<readonly T[]>;\n  /**\n   * The same as `Array.isArray` but with a better type guard.\n   * @param value The value to check.\n   * @returns `true` if the value is an array, `false` otherwise.\n   * @example\n   * ```ts\n   * isArray([1, 2, 3]) // true\n   * isArray('foo') // false\n   * ```\n   */\n  <T>(value: unknown): value is readonly T[];\n}\n\ntype ArrayElement<T> = T extends ReadonlyArray<infer U> ? U : never;\n","import { EmptyObject, Maybe } from '../../types';\nimport { isArray } from '../isArray';\n\n/**\n * Returns whether the input value is empty.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n * @example\n * ```ts\n * isEmpty('') // true\n * isEmpty('abc') // false\n * ```\n */\nexport function isEmpty(value: string): value is '';\n/**\n * Returns whether the input value is empty.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n * @example\n * ```ts\n * isEmpty(0) // true\n * isEmpty(1) // false\n * ```\n */\nexport function isEmpty(value: number): value is number;\n/**\n * Returns whether the input value is empty.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n * @example\n * ```ts\n * isEmpty(new Map()) // true\n * isEmpty(new Map([['a', 1]])) // false\n *\n * isEmpty(new Set()) // true\n * isEmpty(new Set([1])) // false\n * ```\n */\nexport function isEmpty(\n  value: Maybe<ReadonlyMap<unknown, unknown> | ReadonlySet<unknown>>\n): boolean;\n/**\n * Returns whether the input value is empty.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n * @example\n * ```ts\n * isEmpty([]) // true\n * isEmpty([1]) // false\n * ```\n */\nexport function isEmpty<T extends readonly unknown[] | EmptyArray>(\n  value: Maybe<T>\n): value is Maybe<T & EmptyArray>;\n/**\n * Returns whether the input value is empty.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n * @example\n * ```ts\n * isEmpty({}) // true\n * isEmpty({ a: 1 }) // false\n * ```\n */\nexport function isEmpty<T extends object>(\n  value: Maybe<EmptyObject<T> | T>\n): value is T & Record<string, never>;\n/**\n * Returns whether the input value is empty.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n * @example\n * ```ts\n * isEmpty(null) // true\n * isEmpty(undefined) // true\n * isEmpty(0) // true\n * isEmpty('') // true\n * isEmpty([]) // true\n * isEmpty({}) // true\n * isEmpty(new Map()) // true\n * isEmpty(new Set()) // true\n * isEmpty(false) // true\n *\n * isEmpty(true) // false\n * isEmpty(1) // false\n * isEmpty('abc') // false\n * isEmpty([1]) // false\n * isEmpty({ a: 1 }) // false\n * isEmpty(new Map([['a', 1]])) // false\n * isEmpty(new Set([1])) // false\n * ```\n */\nexport function isEmpty<T>(value: Maybe<T>): boolean;\n/**\n * Implementation for all overloads.\n * @param value The value to check.\n * @returns Whether the input value is empty.\n */\nexport function isEmpty<T>(value: Maybe<T>): boolean {\n  if (value == null) {\n    return true;\n  }\n\n  if (isArray(value) || typeof value === 'string') {\n    return value.length === 0;\n  }\n\n  if (value instanceof Map || value instanceof Set) {\n    return value.size === 0;\n  }\n\n  if (typeof value === 'number') {\n    return !value;\n  }\n\n  if (typeof value === 'object') {\n    return Object.keys(value).length === 0;\n  }\n\n  return false;\n}\n\ntype EmptyArray = [];\n"]}