{"version":3,"file":"async.mjs","sources":["../src/async.ts"],"sourcesContent":["import pMap from 'p-map';\nimport { curry } from 'lodash/fp';\n\ntype AnyFunc<TA extends any[] = any[], TR = any> = (...args: TA) => TR;\n\ntype MakeProm<T> = Promise<T extends PromiseLike<infer I> ? I : T>;\n\ntype PipedFunc<T extends AnyFunc[]> =\n  PipeReturn<T> extends never ? never : (...args: Parameters<T[0]>) => PipeReturn<T>;\n\ntype PipeReturn<F extends AnyFunc[]> = MakeProm<ReturnType<F[0]>>;\n\nexport function pipe<T extends AnyFunc[]>(...fns: PipeReturn<T> extends never ? never : T) {\n  const [firstFn, ...fnRest] = fns;\n\n  return (async (...args: any[]) => {\n    let res = await firstFn.apply(firstFn, args);\n\n    for (let i = 0; i < fnRest.length; i += 1) {\n      res = await fnRest[i](res);\n    }\n\n    return res;\n  }) as PipedFunc<T>;\n}\n\nexport const map = curry(pMap);\n\nexport const reduce =\n  (mixedArray: any[]) =>\n  async <T>(iteratee: AnyFunc, initialValue?: T) => {\n    let acc = initialValue;\n    for (let i = 0; i < mixedArray.length; i += 1) {\n      acc = await iteratee(acc, await mixedArray[i], i);\n    }\n    return acc;\n  };\n"],"names":["pipe","fns","firstFn","fnRest","args","res","apply","i","length","map","curry","pMap","reduce","mixedArray","iteratee","initialValue","acc"],"mappings":";;;AAYO,SAASA,IAAAA,CAA0B,GAAGC,GAA4C,EAAA;AACvF,IAAA,MAAM,CAACC,OAAAA,EAAS,GAAGC,MAAAA,CAAO,GAAGF,GAAAA;AAE7B,IAAA,OAAQ,OAAO,GAAGG,IAAAA,GAAAA;AAChB,QAAA,IAAIC,GAAAA,GAAM,MAAMH,OAAAA,CAAQI,KAAK,CAACJ,OAAAA,EAASE,IAAAA,CAAAA;QAEvC,IAAK,IAAIG,IAAI,CAAA,EAAGA,CAAAA,GAAIJ,OAAOK,MAAM,EAAED,KAAK,CAAA,CAAG;AACzCF,YAAAA,GAAAA,GAAM,MAAMF,MAAM,CAACI,CAAAA,CAAE,CAACF,GAAAA,CAAAA;AACxB,QAAA;QAEA,OAAOA,GAAAA;AACT,IAAA,CAAA;AACF;AAEO,MAAMI,GAAAA,GAAMC,KAAAA,CAAMC,IAAAA;AAElB,MAAMC,MAAAA,GACX,CAACC,UAAAA,GACD,OAAUC,QAAAA,EAAmBC,YAAAA,GAAAA;AAC3B,QAAA,IAAIC,GAAAA,GAAMD,YAAAA;QACV,IAAK,IAAIR,IAAI,CAAA,EAAGA,CAAAA,GAAIM,WAAWL,MAAM,EAAED,KAAK,CAAA,CAAG;AAC7CS,YAAAA,GAAAA,GAAM,MAAMF,QAAAA,CAASE,GAAAA,EAAK,MAAMH,UAAU,CAACN,EAAE,EAAEA,CAAAA,CAAAA;AACjD,QAAA;QACA,OAAOS,GAAAA;IACT;;;;"}