{"version":3,"sources":["../../src/functions/isArray/isArray.ts"],"names":[],"mappings":";AAGO,IAAM,UAAmB,MAAM","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"]}