graphql
Version:
A Query Language and Runtime which can target any service.
1 lines • 1.58 kB
Source Map (JSON)
{"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"]}