{"version":3,"sources":["../../src/functions/_internal/filterIterable/filterIterable.ts","../../src/functions/count/count.ts"],"names":[],"mappings":";AAWO,SAAS,OACd,QACA,WACiB;AACjB,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AAEA,QAAM,gBACJ,aAAa,OACT,CAAC,GAAG,MAAM;AAAA;AAAA,IAEV,CAAC,GAAG,MAAM,EAAE,OAAO,SAAS;AAAA;AAElC,SAAO;AACT;;;ACYO,SAAS,MACd,QACA,WACQ;AACR,QAAM,gBAAgB,OAAO,QAAQ,SAAS;AAC9C,SAAO,eAAe,UAAU;AAClC","sourcesContent":["import { Maybe } from '../../../types';\n\nexport function filter<T>(source: Maybe<Iterable<T>>): T[] | undefined;\nexport function filter<T>(\n  source: Maybe<Iterable<T>>,\n  predicate?: (value: T, index: number) => boolean\n): T[] | undefined;\nexport function filter<T, S>(\n  source: Maybe<Iterable<T>>,\n  predicate?: (value: S, index: number) => value is S\n): S[] | undefined;\nexport function filter<T>(\n  source: Maybe<Iterable<T>>,\n  predicate?: (value: T, index: number) => boolean\n): T[] | undefined {\n  if (source == null) {\n    return undefined;\n  }\n\n  const relevantItems =\n    predicate == null\n      ? [...source]\n      : // eslint-disable-next-line unicorn/no-array-callback-reference -- this is fine, we want to use the same predicate\n        [...source].filter(predicate);\n\n  return relevantItems;\n}\n","import { Maybe } from '../../types';\nimport { filter } from '../_internal/filterIterable';\n\n/**\n * Returns the number of elements in an iterable.\n * @param source The iterable to count.\n * @returns The number of elements.\n * @example\n * ```ts\n * count([1, 2, 3]); // 3\n * count([]); // 0\n * count(null); // 0\n * ```\n */\nexport function count<T>(source: Maybe<Iterable<T>>): number;\n/**\n * Returns the number of elements in an iterable that satisfy a predicate.\n * @param source The iterable to count.\n * @param predicate The predicate function used to determine if an element is a match.\n * @returns The number of matching elements.\n * @example\n * ```ts\n * count([1, 2, 3], x => x % 2 === 0); // 1\n * count([1, 2, 3], x => x >= 2); // 2\n * count([], x => x >= 1); // 0\n * count(null, x => x >= 1); // 0\n * ```\n */\nexport function count<T>(\n  source: Maybe<Iterable<T>>,\n  predicate?: (value: T, index: number) => boolean\n): number;\n/**\n * Implementation for all overloads.\n * @param source The iterable to count.\n * @param predicate The predicate function used to determine if an element is a match.\n * @returns The number of matching elements.\n */\nexport function count<T>(\n  source: Maybe<Iterable<T>>,\n  predicate?: (value: T, index: number) => boolean\n): number {\n  const relevantItems = filter(source, predicate);\n  return relevantItems?.length ?? 0;\n}\n"]}