UNPKG

typedash

Version:

modern, type-safe collection of utility functions

1 lines 12 kB
{"version":3,"file":"pipe-B7Xu6OU9.cjs","names":[],"sources":["../src/functions/pipe/pipe.ts"],"sourcesContent":["import type { Func } from './types/Func';\nimport type { UnaryFunction } from './types/UnaryFunction';\n\n/**\n * Type-enforcing left-to-right function composition function.\n * The first parameter can be a function of any arity, but the remaining parameters must be unary functions.\n * The return type of one function must be compatible with the argument of next function in the argument list\n * @param f0 The first function in the composition\n * @note The types here are only inferred for the first 20 functions.\n * If you need more, you have to type the functions explicitly.\n * please open an issue, but this should be enough to cover most use cases.\n * @returns A function with the arguments of the *first* function in the argument list and a return type of the *last* function in the argument list\n */\nexport function pipe<TIn extends unknown[], TOut>(\n f0: Func<TIn, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, T2, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, T2, T3, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, T2, T3, T4, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, T2, T3, T4, T5, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, T2, T3, T4, T5, T6, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], T1, T2, T3, T4, T5, T6, T7, TOut>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n T15,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, T15>,\n f15: UnaryFunction<T15, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n T15,\n T16,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, T15>,\n f15: UnaryFunction<T15, T16>,\n f16: UnaryFunction<T16, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n T15,\n T16,\n T17,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, T15>,\n f15: UnaryFunction<T15, T16>,\n f16: UnaryFunction<T16, T17>,\n f17: UnaryFunction<T17, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n T15,\n T16,\n T17,\n T18,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, T15>,\n f15: UnaryFunction<T15, T16>,\n f16: UnaryFunction<T16, T17>,\n f17: UnaryFunction<T17, T18>,\n f18: UnaryFunction<T18, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n T15,\n T16,\n T17,\n T18,\n T19,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, T15>,\n f15: UnaryFunction<T15, T16>,\n f16: UnaryFunction<T16, T17>,\n f17: UnaryFunction<T17, T18>,\n f18: UnaryFunction<T18, T19>,\n f19: UnaryFunction<T19, TOut>\n): Func<TIn, TOut>;\nexport function pipe<\n TIn extends unknown[],\n T1,\n T2,\n T3,\n T4,\n T5,\n T6,\n T7,\n T8,\n T9,\n T10,\n T11,\n T12,\n T13,\n T14,\n T15,\n T16,\n T17,\n T18,\n T19,\n T20,\n TOut,\n>(\n f0: Func<TIn, T1>,\n f1: UnaryFunction<T1, T2>,\n f2: UnaryFunction<T2, T3>,\n f3: UnaryFunction<T3, T4>,\n f4: UnaryFunction<T4, T5>,\n f5: UnaryFunction<T5, T6>,\n f6: UnaryFunction<T6, T7>,\n f7: UnaryFunction<T7, T8>,\n f8: UnaryFunction<T8, T9>,\n f9: UnaryFunction<T9, T10>,\n f10: UnaryFunction<T10, T11>,\n f11: UnaryFunction<T11, T12>,\n f12: UnaryFunction<T12, T13>,\n f13: UnaryFunction<T13, T14>,\n f14: UnaryFunction<T14, T15>,\n f15: UnaryFunction<T15, T16>,\n f16: UnaryFunction<T16, T17>,\n f17: UnaryFunction<T17, T18>,\n f18: UnaryFunction<T18, T19>,\n f19: UnaryFunction<T19, T20>,\n f20: UnaryFunction<T20, TOut>\n): Func<TIn, TOut>;\nexport function pipe<TIn extends unknown[], TOut>(\n // biome-ignore lint/suspicious/noExplicitAny: final overload, which isn't typed\n o1: Func<TIn, any>,\n // biome-ignore lint/suspicious/noExplicitAny: final overload, which isn't typed\n ...operations: UnaryFunction<any, any>[]\n): Func<TIn, TOut>;\n/**\n * Implementation of pipe function.\n * @param o1 first operation\n * @param operations rest of operations\n * @returns function that will execute all operations in order\n */\nexport function pipe<TIn extends unknown[], TOut>(\n // biome-ignore lint/suspicious/noExplicitAny: implementation of overloads\n o1: Func<TIn, any>,\n // biome-ignore lint/suspicious/noExplicitAny: implementation of overloads\n ...operations: UnaryFunction<any, any>[]\n): Func<TIn, TOut> {\n return (...argsP: TIn) => operations.reduce((acc, f) => f(acc), o1(...argsP));\n}\n"],"mappings":";;;;;;;;AAugBA,SAAgB,KAEd,IAEA,GAAG,YACc;AACjB,SAAQ,GAAG,UAAe,WAAW,QAAQ,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,MAAM,CAAC"}