@strapi/utils
Version:
Shared utilities for the Strapi packages
1 lines • 2.1 kB
Source Map (JSON)
{"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;;;;"}