{"version":3,"file":"reverse.cjs","names":["purry"],"sources":["../src/reverse.ts"],"sourcesContent":["import { purry } from \"./purry\";\n\ntype Reverse<\n  T extends readonly unknown[],\n  R extends readonly unknown[] = [],\n> = ReturnType<\n  T extends IsNoTuple<T>\n    ? () => [...T, ...R]\n    : T extends readonly [infer F, ...infer L]\n      ? () => Reverse<L, [F, ...R]>\n      : () => R\n>;\n\ntype IsNoTuple<T> = T extends readonly [unknown, ...unknown[]] ? never : T;\n\n/**\n * Reverses array.\n *\n * @param array - The array.\n * @signature\n *    reverse(arr);\n * @example\n *    reverse([1, 2, 3]) // [3, 2, 1]\n * @dataFirst\n * @category Array\n */\nexport function reverse<T extends readonly unknown[]>(array: T): Reverse<T>;\n\n/**\n * Reverses array.\n *\n * @signature\n *    reverse()(array);\n * @example\n *    reverse()([1, 2, 3]) // [3, 2, 1]\n * @dataLast\n * @category Array\n */\nexport function reverse<T extends readonly unknown[]>(): (\n  array: T,\n) => Reverse<T>;\n\nexport function reverse(...args: readonly unknown[]): unknown {\n  return purry(reverseImplementation, args);\n}\n\nfunction reverseImplementation<T>(array: readonly T[]): T[] {\n  // TODO [>2]: When node 18 reaches end-of-life bump target lib to ES2023+ and use `Array.prototype.toReversed` here.\n  // eslint-disable-next-line unicorn/no-array-reverse -- See TODO above.\n  return [...array].reverse();\n}\n"],"mappings":"kGA0CA,SAAgB,EAAQ,GAAG,EAAmC,CAC5D,OAAOA,EAAAA,MAAM,EAAuB,EAAK,CAG3C,SAAS,EAAyB,EAA0B,CAG1D,MAAO,CAAC,GAAG,EAAM,CAAC,SAAS"}