{"version":3,"file":"first.cjs","names":["purry","toSingle"],"sources":["../src/first.ts"],"sourcesContent":["import { toSingle } from \"./internal/toSingle\";\nimport type { First } from \"./internal/types/First\";\nimport type { IterableContainer } from \"./internal/types/IterableContainer\";\nimport type { LazyEvaluator } from \"./internal/types/LazyEvaluator\";\nimport { purry } from \"./purry\";\n\n/**\n * Gets the first element of `array`.\n *\n * @param data - The array.\n * @returns The first element of the array.\n * @signature\n *    first(array)\n * @example\n *    first([1, 2, 3]) // => 1\n *    first([]) // => undefined\n * @dataFirst\n * @lazy\n * @category Array\n */\nexport function first<T extends IterableContainer>(data: T): First<T>;\n\n/**\n * Gets the first element of `array`.\n *\n * @returns The first element of the array.\n * @signature\n *    first()(array)\n * @example\n *    pipe(\n *      [1, 2, 4, 8, 16],\n *      filter(x => x > 3),\n *      first(),\n *      x => x + 1\n *    ); // => 5\n * @dataLast\n * @lazy\n * @category Array\n */\nexport function first(): <T extends IterableContainer>(data: T) => First<T>;\n\nexport function first(...args: readonly unknown[]): unknown {\n  return purry(firstImplementation, args, toSingle(lazyImplementation));\n}\n\nconst firstImplementation = <T>([item]: readonly T[]): T | undefined => item;\n\nconst lazyImplementation = (): LazyEvaluator => firstLazy;\n\nconst firstLazy = <T>(value: T) =>\n  ({ hasNext: true, next: value, done: true }) as const;\n"],"mappings":"uIAyCA,SAAgB,EAAM,GAAG,EAAmC,CAC1D,OAAOA,EAAAA,MAAM,EAAqB,EAAMC,EAAAA,EAAS,CAAkB,CAAC,CACtE,CAEA,MAAM,GAA0B,CAAC,KAAuC,EAElE,MAA0C,EAE1C,EAAgB,IACnB,CAAE,QAAS,GAAM,KAAM,EAAO,KAAM,EAAK"}