UNPKG

remeda

Version:

A utility library for JavaScript and Typescript.

1 lines 1.59 kB
{"version":3,"file":"reverse.cjs","names":["purry"],"sources":["../src/reverse.ts"],"sourcesContent":["import { purry } from \"./purry\";\n\ntype Reverse<\n T extends ReadonlyArray<unknown>,\n R extends ReadonlyArray<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, ...Array<unknown>] ? never : T;\n\n/**\n * Reverses array.\n *\n * @param array - The array.\n * @signature\n * R.reverse(arr);\n * @example\n * R.reverse([1, 2, 3]) // [3, 2, 1]\n * @dataFirst\n * @category Array\n */\nexport function reverse<T extends ReadonlyArray<unknown>>(array: T): Reverse<T>;\n\n/**\n * Reverses array.\n *\n * @signature\n * R.reverse()(array);\n * @example\n * R.reverse()([1, 2, 3]) // [3, 2, 1]\n * @dataLast\n * @category Array\n */\nexport function reverse<T extends ReadonlyArray<unknown>>(): (\n array: T,\n) => Reverse<T>;\n\nexport function reverse(...args: ReadonlyArray<unknown>): unknown {\n return purry(reverseImplementation, args);\n}\n\nfunction reverseImplementation<T>(array: ReadonlyArray<T>): Array<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":"wCA0CA,SAAgB,EAAQ,GAAG,EAAuC,CAChE,OAAOA,EAAAA,EAAM,EAAuB,EAAK,CAG3C,SAAS,EAAyB,EAAmC,CAGnE,MAAO,CAAC,GAAG,EAAM,CAAC,SAAS"}