{"version":3,"sources":["../../src/functions/pipe/pipe.ts"],"names":[],"mappings":";AAugBO,SAAS,KACd,OACG,YACc;AAEjB,SAAO,IAAI,UAAe,WAAW,OAAO,CAAC,KAAK,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;AAC9E","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable unicorn/prevent-abbreviations */\nimport { Func } from './types/Func';\nimport { 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  o1: Func<TIn, any>,\n  ...operations: Array<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  o1: Func<TIn, any>,\n  ...operations: Array<UnaryFunction<any, any>>\n): Func<TIn, TOut> {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-return -- this is untyped here, but we type it correctly in the overloads for consumers\n  return (...argsP: TIn) => operations.reduce((acc, f) => f(acc), o1(...argsP));\n}\n"]}