{"version":3,"file":"series.mjs","names":[],"sources":["../../src/promise/series.ts"],"sourcesContent":["/**\n * Executes multiple promises in series (one after another).\n *\n * @template T - The type of the resolved values\n * @param tasks - An array of functions that return promises\n * @returns Returns a promise that resolves with an array of results in the same order as tasks\n *\n * @example\n * const results = await series([\n *   () => fetchUser(1),\n *   () => fetchUser(2),\n *   () => fetchUser(3)\n * ]); // Executes one after another\n *\n * @example\n * const results = await series([\n *   () => delay(100, 'a'),\n *   () => delay(50, 'b'),\n *   () => delay(150, 'c')\n * ]); // Total time: 300ms\n */\nexport function series<T>(tasks: Array<() => Promise<T> | T>): Promise<T[]> {\n  if (!Array.isArray(tasks) || tasks.length === 0) {\n    return Promise.resolve([]);\n  }\n\n  return tasks.reduce(\n    (promise, task, index) =>\n      promise.then((results) =>\n        Promise.resolve(task()).then((result) => {\n          results[index] = result;\n          return results;\n        }),\n      ),\n    Promise.resolve<T[]>([]),\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,SAAgB,OAAU,OAAkD;CAC1E,IAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,WAAW,GAC5C,OAAO,QAAQ,QAAQ,CAAC,CAAC;CAG3B,OAAO,MAAM,QACV,SAAS,MAAM,UACd,QAAQ,MAAM,YACZ,QAAQ,QAAQ,KAAK,CAAC,CAAC,CAAC,MAAM,WAAW;EACvC,QAAQ,SAAS;EACjB,OAAO;CACT,CAAC,CACH,GACF,QAAQ,QAAa,CAAC,CAAC,CACzB;AACF"}