{"version":3,"sources":["../../../src/utils/resolveObjectPromises.ts"],"sourcesContent":["/**\n * A more \"unified\" approach where each type (function, array, object, primitive)\n * is handled inside the main recursive body.\n */\nexport const resolveObjectPromises = async <T = unknown>(\n  entry: any\n): Promise<T> => {\n  // Check if entry is a Promise (Thenable)\n  if (entry && typeof entry.then === 'function') {\n    const awaited = await entry;\n    return resolveObjectPromises(awaited);\n  }\n\n  // If entry is a function, invoke it and process the result\n  if (typeof entry === 'function') {\n    const result = entry();\n    return resolveObjectPromises(result);\n  }\n\n  if (Array.isArray(entry)) {\n    return Promise.all(\n      entry.map(async (item) => resolveObjectPromises(item))\n    ) as unknown as T;\n  }\n\n  // Handle plain objects (but not arrays)\n  if (entry && typeof entry === 'object') {\n    // Arrays are handled in the `Array.isArray` branch above, so we know `entry` is a plain object here.\n\n    const result: Record<string, any> = {};\n\n    // Iterate over keys **sequentially** to make sure the insertion order of the\n    // resulting object matches the original key order. Using `Promise.all` here\n    // could lead to out-of-order insertions when asynchronous resolutions\n    // finish at different times.\n    for (const key of Object.keys(entry)) {\n      result[key] = await resolveObjectPromises(entry[key]);\n    }\n\n    return result as T;\n  }\n\n  return entry as T;\n};\n"],"mappings":"AAIO,MAAM,wBAAwB,OACnC,UACe;AAEf,MAAI,SAAS,OAAO,MAAM,SAAS,YAAY;AAC7C,UAAM,UAAU,MAAM;AACtB,WAAO,sBAAsB,OAAO;AAAA,EACtC;AAGA,MAAI,OAAO,UAAU,YAAY;AAC/B,UAAM,SAAS,MAAM;AACrB,WAAO,sBAAsB,MAAM;AAAA,EACrC;AAEA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO,QAAQ;AAAA,MACb,MAAM,IAAI,OAAO,SAAS,sBAAsB,IAAI,CAAC;AAAA,IACvD;AAAA,EACF;AAGA,MAAI,SAAS,OAAO,UAAU,UAAU;AAGtC,UAAM,SAA8B,CAAC;AAMrC,eAAW,OAAO,OAAO,KAAK,KAAK,GAAG;AACpC,aAAO,GAAG,IAAI,MAAM,sBAAsB,MAAM,GAAG,CAAC;AAAA,IACtD;AAEA,WAAO;AAAA,EACT;AAEA,SAAO;AACT;","names":[]}