{"version":3,"file":"createSharedExecutionContext.js","sourceRoot":"","sources":["../../src/execution/createSharedExecutionContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,+BAA8B;AAazD,MAAM,UAAU,4BAA4B,CAC1C,WAAoC;IAEpC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAChD,IAAI,kBAAyD,CAAC;IAE9D,MAAM,UAAU,GAAG,CACjB,MAAyC,EACtB,EAAE,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAEzE,MAAM,eAAe,GAAG,GAA8B,EAAE,CACtD,CAAC,kBAAkB,KAAK;QACtB,UAAU;QACV,KAAK,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC;KACpE,CAAC,CAAC;IAEL,OAAO;QACL,gBAAgB;QAChB,cAAc,EAAE,GAAG,EAAE,CAAC,WAAW;QACjC,eAAe;QACf,UAAU;KACX,CAAC;AACJ,CAAC","sourcesContent":["import type { GraphQLResolveInfoHelpers } from '../type/index.ts';\n\nimport { AsyncWorkTracker } from './AsyncWorkTracker.ts';\n\n/** @internal */\nexport interface SharedExecutionContext {\n  asyncWorkTracker: AsyncWorkTracker;\n  getAbortSignal: () => AbortSignal | undefined;\n  getAsyncHelpers: () => GraphQLResolveInfoHelpers;\n  promiseAll: <T>(\n    values: ReadonlyArray<PromiseLike<T> | T>,\n  ) => Promise<Array<T>>;\n}\n\n/** @internal */\nexport function createSharedExecutionContext(\n  abortSignal: AbortSignal | undefined,\n): SharedExecutionContext {\n  const asyncWorkTracker = new AsyncWorkTracker();\n  let resolveInfoHelpers: GraphQLResolveInfoHelpers | undefined;\n\n  const promiseAll = <T>(\n    values: ReadonlyArray<PromiseLike<T> | T>,\n  ): Promise<Array<T>> => asyncWorkTracker.promiseAllTrackOnReject(values);\n\n  const getAsyncHelpers = (): GraphQLResolveInfoHelpers =>\n    (resolveInfoHelpers ??= {\n      promiseAll,\n      track: (maybePromises) => asyncWorkTracker.addValues(maybePromises),\n    });\n\n  return {\n    asyncWorkTracker,\n    getAbortSignal: () => abortSignal,\n    getAsyncHelpers,\n    promiseAll,\n  };\n}\n"]}