UNPKG

graphql

Version:

A Query Language and Runtime which can target any service.

1 lines 1.82 kB
{"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"]}