index.d.ts 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. declare namespace pPipe {
  2. type UnaryFunction<ValueType, ReturnType> = (
  3. value: ValueType
  4. ) => ReturnType | PromiseLike<ReturnType>;
  5. type Pipeline<ValueType, ReturnType> = (
  6. value?: ValueType
  7. ) => Promise<ReturnType>;
  8. }
  9. /**
  10. Compose promise-returning & async functions into a reusable pipeline.
  11. @param ...input - Iterated over sequentially when returned `function` is called.
  12. @returns The `input` functions are applied from left to right.
  13. @example
  14. ```
  15. import pPipe = require('p-pipe');
  16. const addUnicorn = async string => `${string} Unicorn`;
  17. const addRainbow = async string => `${string} Rainbow`;
  18. const pipeline = pPipe(addUnicorn, addRainbow);
  19. (async () => {
  20. console.log(await pipeline('❤️'));
  21. //=> '❤️ Unicorn Rainbow'
  22. })();
  23. ```
  24. */
  25. declare function pPipe<ValueType, ReturnType>(
  26. f1: pPipe.UnaryFunction<ValueType, ReturnType>
  27. ): pPipe.Pipeline<ValueType, ReturnType>;
  28. declare function pPipe<ValueType, ResultValue1, ReturnType>(
  29. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  30. f2: pPipe.UnaryFunction<ResultValue1, ReturnType>
  31. ): pPipe.Pipeline<ValueType, ReturnType>;
  32. declare function pPipe<ValueType, ResultValue1, ResultValue2, ReturnType>(
  33. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  34. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  35. f3: pPipe.UnaryFunction<ResultValue2, ReturnType>
  36. ): pPipe.Pipeline<ValueType, ReturnType>;
  37. declare function pPipe<
  38. ValueType,
  39. ResultValue1,
  40. ResultValue2,
  41. ResultValue3,
  42. ReturnType
  43. >(
  44. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  45. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  46. f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
  47. f4: pPipe.UnaryFunction<ResultValue3, ReturnType>
  48. ): pPipe.Pipeline<ValueType, ReturnType>;
  49. declare function pPipe<
  50. ValueType,
  51. ResultValue1,
  52. ResultValue2,
  53. ResultValue3,
  54. ResultValue4,
  55. ReturnType
  56. >(
  57. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  58. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  59. f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
  60. f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
  61. f5: pPipe.UnaryFunction<ResultValue4, ReturnType>
  62. ): pPipe.Pipeline<ValueType, ReturnType>;
  63. declare function pPipe<
  64. ValueType,
  65. ResultValue1,
  66. ResultValue2,
  67. ResultValue3,
  68. ResultValue4,
  69. ResultValue5,
  70. ReturnType
  71. >(
  72. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  73. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  74. f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
  75. f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
  76. f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
  77. f6: pPipe.UnaryFunction<ResultValue5, ReturnType>
  78. ): pPipe.Pipeline<ValueType, ReturnType>;
  79. declare function pPipe<
  80. ValueType,
  81. ResultValue1,
  82. ResultValue2,
  83. ResultValue3,
  84. ResultValue4,
  85. ResultValue5,
  86. ResultValue6,
  87. ReturnType
  88. >(
  89. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  90. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  91. f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
  92. f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
  93. f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
  94. f6: pPipe.UnaryFunction<ResultValue5, ResultValue6>,
  95. f7: pPipe.UnaryFunction<ResultValue6, ReturnType>
  96. ): pPipe.Pipeline<ValueType, ReturnType>;
  97. declare function pPipe<
  98. ValueType,
  99. ResultValue1,
  100. ResultValue2,
  101. ResultValue3,
  102. ResultValue4,
  103. ResultValue5,
  104. ResultValue6,
  105. ResultValue7,
  106. ReturnType
  107. >(
  108. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  109. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  110. f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
  111. f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
  112. f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
  113. f6: pPipe.UnaryFunction<ResultValue5, ResultValue6>,
  114. f7: pPipe.UnaryFunction<ResultValue6, ResultValue7>,
  115. f8: pPipe.UnaryFunction<ResultValue7, ReturnType>
  116. ): pPipe.Pipeline<ValueType, ReturnType>;
  117. declare function pPipe<
  118. ValueType,
  119. ResultValue1,
  120. ResultValue2,
  121. ResultValue3,
  122. ResultValue4,
  123. ResultValue5,
  124. ResultValue6,
  125. ResultValue7,
  126. ResultValue8,
  127. ReturnType
  128. >(
  129. f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
  130. f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
  131. f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
  132. f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
  133. f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
  134. f6: pPipe.UnaryFunction<ResultValue5, ResultValue6>,
  135. f7: pPipe.UnaryFunction<ResultValue6, ResultValue7>,
  136. f8: pPipe.UnaryFunction<ResultValue7, ResultValue8>,
  137. f9: pPipe.UnaryFunction<ResultValue8, ReturnType>
  138. ): pPipe.Pipeline<ValueType, ReturnType>;
  139. // Fallbacks if more than 9 functions are passed as input (not type-safe).
  140. declare function pPipe(
  141. ...functions: (pPipe.UnaryFunction<any, unknown>)[]
  142. ): pPipe.Pipeline<unknown, unknown>;
  143. export = pPipe;