{"version":3,"file":"promiseForObject.js","sourceRoot":"","sources":["../../src/jsutils/promiseForObject.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,gBAAgB,CAC9B,MAA2C,EAC3C,UAE2B;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAErC,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;QAChD,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACrC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { ObjMap } from './ObjMap.ts';\nimport type { PromiseOrValue } from './PromiseOrValue.ts';\n\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Promise<ObjMap<T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n *\n * @internal\n */\nexport function promiseForObject<T>(\n  object: Readonly<ObjMap<PromiseOrValue<T>>>,\n  promiseAll: <TValue>(\n    values: ReadonlyArray<PromiseOrValue<TValue>>,\n  ) => Promise<Array<TValue>>,\n): Promise<ObjMap<T>> {\n  const keys = Object.keys(object);\n  const values = Object.values(object);\n\n  return promiseAll(values).then((resolvedValues) => {\n    const resolvedObject = Object.create(null);\n    for (let i = 0; i < keys.length; ++i) {\n      resolvedObject[keys[i]] = resolvedValues[i];\n    }\n    return resolvedObject;\n  });\n}\n"]}