graphql-jit 0.9.3 → 0.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/execution.ts"],"names":[],"mappings":"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","sourcesContent":["import { type TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport fastJson from \"fast-json-stringify\";\nimport { genFn } from \"./generate.js\";\nimport { jitRuntime, type JitRuntime } from \"./runtime.js\";\nimport {\n appendSourceURL,\n createGeneratedSourceName,\n formatDebugSource,\n normalizeDebugOptions,\n type CompilerDebugOptions\n} from \"./debug.js\";\n\nconst GLOBAL_RUNTIME_NAME = \"__context.rt\";\nimport {\n type ASTNode,\n type DocumentNode,\n type ExecutionResult,\n type FragmentDefinitionNode,\n type GraphQLAbstractType,\n GraphQLEnumType,\n GraphQLError,\n type GraphQLFieldResolver,\n type GraphQLIsTypeOfFn,\n type GraphQLLeafType,\n GraphQLList,\n GraphQLObjectType,\n type GraphQLOutputType,\n type GraphQLResolveInfo,\n type GraphQLScalarSerializer,\n GraphQLScalarType,\n GraphQLSchema,\n type GraphQLType,\n isAbstractType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n isSpecifiedScalarType,\n Kind,\n locatedError,\n responsePathAsArray,\n TypeNameMetaFieldDef,\n type FieldNode,\n type OperationDefinitionNode,\n type GraphQLTypeResolver\n} from \"graphql\";\nimport { type ExecutionContext as GraphQLContext } from \"./compat.js\";\nimport {\n addPath,\n type Arguments,\n collectFields,\n collectSubfields,\n computeLocations,\n type FieldsAndNodes,\n flattenPath,\n getArgumentDefs,\n type JitFieldNode,\n joinSkipIncludePath,\n type ObjectPath,\n resolveFieldDef,\n serializeObjectPathForSkipInclude\n} from \"./ast.js\";\nimport { GraphQLError as GraphqlJitError } from \"./error.js\";\nimport createInspect from \"./inspect.js\";\nimport { queryToJSONSchema } from \"./json.js\";\nimport { createNullTrimmer, type NullTrimmer } from \"./non-null.js\";\nimport {\n createResolveInfoThunk,\n type ResolveInfoEnricherInput\n} from \"./resolve-info.js\";\nimport { type Maybe } from \"./types.js\";\nimport {\n type CoercedVariableValues,\n compileVariableParsing,\n failToParseVariables\n} from \"./variables.js\";\nimport {\n coerceOutputValue,\n getGraphQLErrorOptions,\n getOperationRootType\n} from \"./compat.js\";\n\nconst inspect = createInspect();\n\nexport interface CompilerOptions {\n customJSONSerializer: boolean;\n\n // Disable builtin scalars and enum serialization\n // which is responsible for coercion,\n // only safe for use if the output is completely correct.\n disableLeafSerialization: boolean;\n\n // Disable capturing the stack trace of errors.\n disablingCapturingStackErrors: boolean;\n\n // Map of serializers to override\n // the key should be the name passed to the Scalar or Enum type\n customSerializers: { [key: string]: (v: any) => any };\n\n resolverInfoEnricher?: (inp: ResolveInfoEnricherInput) => object;\n\n /**\n * This option is a temporary workaround to rollout and test the new skip/include behavior.\n * It will be removed in the next version along with the old behavior.\n *\n * Set this to true if you face issues with skip/include in fragment spreads.\n *\n * default: false\n *\n * @see https://github.com/zalando-incubator/graphql-jit/pull/197\n *\n */\n useExperimentalPathBasedSkipInclude: boolean;\n\n /** Expose generated executors to JavaScript debuggers with virtual names. */\n debug?: CompilerDebugOptions;\n}\n\n// @internal\nexport interface ExecutionContext {\n promiseCounter: number;\n data: any;\n errors: GraphQLError[];\n nullErrors: GraphQLError[];\n resolve?: (ctx: ExecutionContext) => void;\n rt: JitRuntime;\n inspect: typeof inspect;\n variables: { [key: string]: any };\n context: any;\n rootValue: any;\n GraphQLError: typeof GraphqlJitError;\n resolvers: { [key: string]: GraphQLFieldResolver<any, any, any> };\n trimmer: NullTrimmer;\n serializers: {\n [key: string]: (\n c: ExecutionContext,\n v: any,\n onError: (c: ExecutionContext, msg: string) => void\n ) => any;\n };\n typeResolvers: { [key: string]: GraphQLTypeResolver<any, any> };\n isTypeOfs: { [key: string]: GraphQLIsTypeOfFn<any, any> };\n resolveInfos: { [key: string]: any };\n literals: { [key: string]: any };\n}\n\ninterface DeferredField {\n name: string;\n responsePath: ObjectPath;\n originPaths: string[];\n originPathsFormatted: string;\n destinationPaths: string[];\n parentType: GraphQLObjectType;\n fieldName: string;\n jsFieldName: string;\n fieldType: GraphQLOutputType;\n fieldNodes: FieldNode[];\n args: Arguments;\n}\n\n/**\n * The context used during compilation.\n *\n * It stores deferred nodes to be processed later as well as the function arguments to be bounded at top level\n */\nexport interface CompilationContext extends GraphQLContext {\n resolvers: { [key: string]: GraphQLFieldResolver<any, any, any> };\n serializers: {\n [key: string]: (\n c: ExecutionContext,\n v: any,\n onError: (c: ExecutionContext, msg: string) => void\n ) => any;\n };\n hoistedFunctions: string[];\n hoistedFunctionNames: Map<string, number>;\n leafErrHandlerCache: Map<string, string>;\n // When set, emits this variable name instead of the hardcoded type name for __typename.\n // Used by compileAbstractType to share trivial case bodies via the finalType variable.\n trivialTypeNameVar?: string;\n typeResolvers: { [key: string]: GraphQLTypeResolver<any, any> };\n isTypeOfs: { [key: string]: GraphQLIsTypeOfFn<any, any> };\n resolveInfos: { [key: string]: any };\n // Coerced literal argument values that cannot be serialized into the\n // generated source (e.g. class instances returned by custom scalars).\n literals: { [key: string]: any };\n deferred: DeferredField[];\n options: CompilerOptions;\n depth: number;\n\n // GraphQL-JS v17 compatibility\n schema: GraphQLSchema;\n operation: OperationDefinitionNode;\n fragments: { [key: string]: FragmentDefinitionNode };\n}\n\n// prefix for the variable used ot cache validation results\nconst SAFETY_CHECK_PREFIX = \"__validNode\";\nconst GLOBAL_DATA_NAME = \"__context.data\";\nconst GLOBAL_ERRORS_NAME = \"__context.errors\";\nconst GLOBAL_NULL_ERRORS_NAME = \"__context.nullErrors\";\nconst GLOBAL_ROOT_NAME = \"__context.rootValue\";\nexport const GLOBAL_VARIABLES_NAME = \"__context.variables\";\nconst GLOBAL_CONTEXT_NAME = \"__context.context\";\nconst GLOBAL_EXECUTION_CONTEXT = \"__context\";\nconst GLOBAL_PROMISE_COUNTER = \"__context.promiseCounter\";\nconst GLOBAL_INSPECT_NAME = \"__context.inspect\";\nconst GLOBAL_SAFE_MAP_NAME = `${GLOBAL_RUNTIME_NAME}.safeMap`;\nconst GRAPHQL_ERROR = \"__context.GraphQLError\";\nconst GLOBAL_RESOLVE = \"__context.resolve\";\nconst GLOBAL_PARENT_NAME = \"__parent\";\nconst LOCAL_JS_FIELD_NAME_PREFIX = \"__field\";\n\nexport interface CompiledQuery<\n TResult = { [key: string]: any },\n TVariables = { [key: string]: any }\n> {\n operationName?: string;\n query: (\n root: any,\n context: any,\n variables: Maybe<TVariables>\n ) => Promise<ExecutionResult<TResult>> | ExecutionResult<TResult>;\n subscribe?: (\n root: any,\n context: any,\n variables: Maybe<TVariables>\n ) => Promise<\n AsyncIterableIterator<ExecutionResult<TResult>> | ExecutionResult<TResult>\n >;\n stringify: (v: any) => string;\n}\n\ninterface InternalCompiledQuery extends CompiledQuery {\n __DO_NOT_USE_THIS_OR_YOU_WILL_BE_FIRED_compilation?: string;\n}\n\n/**\n * It compiles a GraphQL query to an executable function\n * @param {GraphQLSchema} schema GraphQL schema\n * @param {DocumentNode} document Query being submitted\n * @param {string} operationName name of the operation\n * @param partialOptions compilation options to tune the compiler features\n * @returns {CompiledQuery} the cacheable result\n */\nexport function compileQuery<\n TResult = { [key: string]: any },\n TVariables = { [key: string]: any }\n>(\n schema: GraphQLSchema,\n document: TypedDocumentNode<TResult, TVariables>,\n operationName?: string,\n partialOptions?: Partial<CompilerOptions>\n): CompiledQuery<TResult, TVariables> | ExecutionResult<TResult> {\n if (!schema) {\n throw new Error(`Expected ${schema} to be a GraphQL schema.`);\n }\n if (!document) {\n throw new Error(\"Must provide document.\");\n }\n\n if (\n partialOptions &&\n partialOptions.resolverInfoEnricher &&\n typeof partialOptions.resolverInfoEnricher !== \"function\"\n ) {\n throw new Error(\"resolverInfoEnricher must be a function\");\n }\n try {\n const options = {\n disablingCapturingStackErrors: false,\n customJSONSerializer: false,\n disableLeafSerialization: false,\n customSerializers: {},\n useExperimentalPathBasedSkipInclude: false,\n ...partialOptions\n };\n\n // If a valid context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n const context = buildCompilationContext(\n schema,\n document,\n options,\n operationName\n );\n const debugOptions = normalizeDebugOptions(options.debug);\n\n let stringify: (v: any) => string;\n if (options.customJSONSerializer) {\n const jsonSchema = queryToJSONSchema(context);\n stringify = fastJson(jsonSchema);\n } else {\n stringify = JSON.stringify;\n }\n const getVariables = compileVariableParsing(\n schema,\n context.operation.variableDefinitions || [],\n debugOptions\n ? {\n compilerOptions: debugOptions,\n operation: context.operation\n }\n : undefined\n );\n\n const type = getOperationRootType(context.schema, context.operation);\n const fieldMap = collectFields(\n context,\n type,\n context.operation.selectionSet,\n Object.create(null),\n Object.create(null)\n );\n\n const functionBody = compileOperation(context, type, fieldMap);\n const generatedSource = debugOptions\n ? appendSourceURL(\n formatDebugSource(functionBody, debugOptions.formatSourceCode),\n createGeneratedSourceName(\n context.operation.name?.value,\n debugOptions,\n \"query\"\n )\n )\n : functionBody;\n\n const compiledQuery: InternalCompiledQuery = {\n query: createBoundQuery(\n context,\n document,\n // eslint-disable-next-line no-new-func\n new Function(\"return \" + generatedSource)(),\n getVariables,\n context.operation.name != null\n ? context.operation.name.value\n : undefined\n ),\n stringify\n };\n\n if (context.operation.operation === \"subscription\") {\n compiledQuery.subscribe = createBoundSubscribe(\n context,\n document,\n compileSubscriptionOperation(\n context,\n type,\n fieldMap,\n compiledQuery.query\n ),\n getVariables,\n context.operation.name != null\n ? context.operation.name.value\n : undefined\n );\n }\n\n if (debugOptions) {\n // result of the compilation useful for debugging issues\n // and visualization tools like try-jit.\n compiledQuery.__DO_NOT_USE_THIS_OR_YOU_WILL_BE_FIRED_compilation =\n generatedSource;\n }\n return compiledQuery as CompiledQuery<TResult, TVariables>;\n } catch (err: any) {\n return {\n errors: normalizeErrors(err)\n };\n }\n}\n\nexport function isCompiledQuery<\n C extends CompiledQuery,\n E extends ExecutionResult\n>(query: C | E): query is C {\n return \"query\" in query && typeof query.query === \"function\";\n}\n\n// Exported only for an error test\nexport function createBoundQuery(\n compilationContext: CompilationContext,\n document: DocumentNode,\n func: (context: ExecutionContext) => Promise<any> | undefined,\n getVariableValues: (inputs: { [key: string]: any }) => CoercedVariableValues,\n operationName?: string\n) {\n const {\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals\n } = compilationContext;\n const trimmer = createNullTrimmer(compilationContext);\n const fnName = operationName || \"query\";\n\n /**\n * In-order to assign a debuggable name to the bound query function,\n * we create an intermediate object with a method named as the\n * intended function name. This is because Function.prototype.name\n * is not writeable.\n *\n * http://www.ecma-international.org/ecma-262/6.0/#sec-method-definitions-runtime-semantics-propertydefinitionevaluation\n *\n * section: 14.3.9.3 - calls SetFunctionName\n */\n const ret = {\n [fnName](\n rootValue: any,\n context: any,\n variables: Maybe<{ [key: string]: any }>\n ): Promise<ExecutionResult> | ExecutionResult {\n // this can be shared across in a batch request\n const parsedVariables = getVariableValues(variables || {});\n\n // Return early errors if variable coercing failed.\n if (failToParseVariables(parsedVariables)) {\n return { errors: parsedVariables.errors };\n }\n const executionContext: ExecutionContext = {\n rootValue,\n context,\n variables: parsedVariables.coerced,\n inspect,\n GraphQLError: GraphqlJitError,\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals,\n trimmer,\n rt: jitRuntime,\n promiseCounter: 0,\n data: {},\n nullErrors: [],\n errors: []\n };\n // eslint-disable-next-line no-useless-call\n const result = func.call(null, executionContext);\n if (isPromise(result)) {\n return result.then(postProcessResult);\n }\n return postProcessResult(executionContext);\n }\n };\n\n return ret[fnName];\n}\n\nfunction postProcessResult({\n data,\n nullErrors,\n errors,\n trimmer\n}: ExecutionContext) {\n if (nullErrors.length > 0) {\n const trimmed = trimmer(data, nullErrors);\n return {\n data: trimmed.data,\n errors: errors.concat(trimmed.errors)\n };\n } else if (errors.length > 0) {\n return {\n data,\n errors\n };\n }\n return { data };\n}\n\n/**\n * Create the main function body.\n *\n * Implements the \"Evaluating operations\" section of the spec.\n *\n * It defers all top level field for consistency and protection for null root values,\n * all the fields are deferred regardless of presence of resolver or not.\n *\n * @param {CompilationContext} context compilation context with the execution context\n * @returns {string} a function body to be instantiated together with the header, footer\n */\nfunction compileOperation(\n context: CompilationContext,\n type: GraphQLObjectType,\n fieldMap: FieldsAndNodes\n) {\n const serialExecution = context.operation.operation === \"mutation\";\n const topLevel = compileObjectType(\n context,\n type,\n [],\n [GLOBAL_ROOT_NAME],\n [GLOBAL_DATA_NAME],\n undefined,\n GLOBAL_ERRORS_NAME,\n fieldMap,\n true\n );\n let body = `function query (${GLOBAL_EXECUTION_CONTEXT}) {\n \"use strict\";\n`;\n if (serialExecution) {\n body += `${GLOBAL_EXECUTION_CONTEXT}.queue = [];`;\n }\n body += generateUniqueDeclarations(context, true);\n body += `${GLOBAL_DATA_NAME} = ${topLevel}\\n`;\n if (serialExecution) {\n body += compileDeferredFieldsSerially(context);\n body += `\n ${GLOBAL_EXECUTION_CONTEXT}.finalResolve = () => {};\n ${GLOBAL_RESOLVE} = (context) => {\n if (context.jobCounter >= context.queue.length) {\n // All mutations have finished\n context.finalResolve(context);\n return;\n }\n context.queue[context.jobCounter++](context);\n };\n // There might not be a job to run due to invalid queries\n if (${GLOBAL_EXECUTION_CONTEXT}.queue.length > 0) {\n ${GLOBAL_EXECUTION_CONTEXT}.jobCounter = 1; // since the first one will be run manually\n ${GLOBAL_EXECUTION_CONTEXT}.queue[0](${GLOBAL_EXECUTION_CONTEXT});\n }\n if (${GLOBAL_PROMISE_COUNTER} > 0) {\n return new Promise(resolve => ${GLOBAL_EXECUTION_CONTEXT}.finalResolve = resolve);\n }\n `;\n } else {\n body += compileDeferredFields(context);\n body += `\n return ${GLOBAL_RUNTIME_NAME}.finalizeResult(${GLOBAL_EXECUTION_CONTEXT});`;\n }\n body += `\n // sync execution, the results are ready\n return undefined;\n }`;\n body += context.hoistedFunctions.join(\"\\n\");\n return body;\n}\n\n/**\n * Processes the deferred node list in the compilation context.\n *\n * Each deferred node get a copy of the compilation context with\n * a new empty list for deferred nodes to properly scope the nodes.\n * @param {CompilationContext} context compilation context\n * @returns {string} compiled transformations all of deferred nodes\n */\nfunction compileDeferredFields(context: CompilationContext): string {\n let body = \"\";\n context.deferred.forEach((deferredField, index) => {\n body += `\n if (${SAFETY_CHECK_PREFIX}${index}) {\n ${compileDeferredField(context, deferredField)}\n }`;\n });\n return body;\n}\n\nfunction compileDeferredField(\n context: CompilationContext,\n deferredField: DeferredField,\n appendix?: string\n): string {\n const {\n name,\n originPathsFormatted,\n destinationPaths,\n fieldNodes,\n fieldType,\n fieldName,\n jsFieldName,\n responsePath,\n parentType,\n args\n } = deferredField;\n\n const subContext = createSubCompilationContext(context);\n const nodeBody = compileType(\n subContext,\n parentType,\n fieldType,\n fieldNodes,\n [jsFieldName],\n [`${GLOBAL_PARENT_NAME}.${name}`],\n responsePath\n );\n const parentIndexes = getParentArgIndexes(context);\n const resolverName = getResolverName(parentType.name, fieldName);\n const resolverHandler = getHoistedFunctionName(\n context,\n `${name}${resolverName}Handler`\n );\n const topLevelArgs = getArgumentsName(resolverName);\n const validArgs = getValidArgumentsVarName(resolverName);\n const executionError = createErrorObject(\n context,\n fieldNodes,\n responsePath,\n \"err.message != null ? err.message : err\",\n \"err\"\n );\n const executionInfo = getExecutionInfo(\n subContext,\n parentType,\n fieldType,\n fieldName,\n fieldNodes,\n responsePath\n );\n const emptyError = createErrorObject(context, fieldNodes, responsePath, '\"\"');\n const resolverParentPath = originPathsFormatted;\n const resolverCall = `${GLOBAL_EXECUTION_CONTEXT}.resolvers.${resolverName}(\n ${resolverParentPath},${topLevelArgs},${GLOBAL_CONTEXT_NAME}, ${executionInfo})`;\n const resultParentPath = destinationPaths.join(\".\");\n const compiledArgs = compileArguments(\n subContext,\n args,\n topLevelArgs,\n validArgs,\n fieldType,\n responsePath\n );\n const body = `\n ${compiledArgs}\n if (${validArgs} === true) {\n ${GLOBAL_RUNTIME_NAME}.callResolver(${GLOBAL_EXECUTION_CONTEXT},\n () => ${resolverCall},\n result => {\n ${resolverHandler}(${GLOBAL_EXECUTION_CONTEXT}, ${resultParentPath}, result, ${parentIndexes});\n },\n err => {\n if (err) {\n ${getErrorDestination(fieldType)}.push(${executionError});\n } else {\n ${getErrorDestination(fieldType)}.push(${emptyError});\n }\n }\n );\n }`;\n context.hoistedFunctions.push(`\n function ${resolverHandler}(${GLOBAL_EXECUTION_CONTEXT}, ${GLOBAL_PARENT_NAME}, ${jsFieldName}, ${parentIndexes}) {\n ${generateUniqueDeclarations(subContext)}\n ${GLOBAL_PARENT_NAME}.${name} = ${nodeBody};\n ${compileDeferredFields(subContext)}\n ${appendix || \"\"}\n }\n `);\n return body;\n}\n\nfunction compileDeferredFieldsSerially(context: CompilationContext): string {\n let body = \"\";\n context.deferred.forEach((deferredField, index) => {\n const { name, fieldName, parentType } = deferredField;\n const resolverName = getResolverName(parentType.name, fieldName);\n const mutationHandler = getHoistedFunctionName(\n context,\n `${name}${resolverName}Mutation`\n );\n body += `\n if (${SAFETY_CHECK_PREFIX}${index}) {\n ${GLOBAL_EXECUTION_CONTEXT}.queue.push(${mutationHandler});\n }\n `;\n const appendix = `\n if (${GLOBAL_PROMISE_COUNTER} === 0) {\n ${GLOBAL_RESOLVE}(${GLOBAL_EXECUTION_CONTEXT});\n }\n `;\n context.hoistedFunctions.push(`\n function ${mutationHandler}(${GLOBAL_EXECUTION_CONTEXT}) {\n ${compileDeferredField(context, deferredField, appendix)}\n }\n `);\n });\n return body;\n}\n\n/**\n * Processes a generic node.\n *\n * The type is analysed and later reprocessed in dedicated functions.\n * @param {CompilationContext} context compilation context to hold deferred nodes\n * @param parentType\n * @param {GraphQLType} type type of current parent node\n * @param {FieldNode[]} fieldNodes array of the field nodes\n * @param originPaths originPaths path in the parent object from where to fetch results\n * @param destinationPaths path in the where to write the result\n * @param previousPath response path until this node\n * @returns {string} body of the resolvable fieldNodes\n */\nfunction compileType(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n type: GraphQLType,\n fieldNodes: FieldNode[],\n originPaths: string[],\n destinationPaths: string[],\n previousPath: ObjectPath\n): string {\n const sourcePath = joinOriginPaths(originPaths);\n const isNonNull = isNonNullType(type);\n const innerType = isNonNull ? (type as any).ofType : type;\n\n // Optimization: replace the null→instanceof cascade with a single monomorphic\n // runtime call for leaf types. Avoids N separate GraphQLError call sites per\n // query and lets V8 optimize a single IC instead of one per field.\n if (\n isLeafType(innerType) &&\n !(\n context.options.disableLeafSerialization &&\n (innerType instanceof GraphQLEnumType || isSpecifiedScalarType(innerType))\n )\n ) {\n const dest = isNonNull ? GLOBAL_NULL_ERRORS_NAME : GLOBAL_ERRORS_NAME;\n const serializerName = getSerializerName(innerType.name);\n context.serializers[serializerName] = getSerializer(\n innerType,\n context.options.customSerializers[innerType.name]\n );\n const parentIndexes = getParentArgIndexes(context);\n const handlerBody = `${dest}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n \"message\"\n )});`;\n const cachedHandler = context.leafErrHandlerCache.get(handlerBody);\n let errHandler: string;\n if (cachedHandler) {\n errHandler = cachedHandler;\n } else {\n errHandler = getHoistedFunctionName(\n context,\n `${innerType.name}${originPaths.join(\"\")}SerializerErrorHandler`\n );\n context.hoistedFunctions.push(`\n function ${errHandler}(${GLOBAL_EXECUTION_CONTEXT}, message, ${parentIndexes}) {\n ${handlerBody}}\n `);\n context.leafErrHandlerCache.set(handlerBody, errHandler);\n }\n const locs = JSON.stringify(computeLocations(fieldNodes));\n const path = serializeResponsePathAsArray(previousPath);\n const capStack = context.options.disablingCapturingStackErrors\n ? \"true\"\n : \"false\";\n const serializerRef = `${GLOBAL_EXECUTION_CONTEXT}.serializers.${serializerName}`;\n const extraIndexes = parentIndexes ? `, ${parentIndexes}` : \"\";\n if (isNonNull) {\n const nullMsg = `\"Cannot return null for non-nullable field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}.\"`;\n return `${GLOBAL_RUNTIME_NAME}.checkNonNullLeaf(${GLOBAL_EXECUTION_CONTEXT}, ${sourcePath}, ${dest}, ${nullMsg}, ${locs}, ${path}, ${capStack}, ${serializerRef}, ${errHandler}${extraIndexes})`;\n } else {\n return `${GLOBAL_RUNTIME_NAME}.checkNullableLeaf(${GLOBAL_EXECUTION_CONTEXT}, ${sourcePath}, ${dest}, ${locs}, ${path}, ${capStack}, ${serializerRef}, ${errHandler}${extraIndexes})`;\n }\n }\n\n let body = `${sourcePath} == null ? `;\n let errorDestination;\n if (isNonNullType(type)) {\n type = (type as any).ofType;\n const nullErrorStr = `\"Cannot return null for non-nullable field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}.\"`;\n body += `(${GLOBAL_NULL_ERRORS_NAME}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n nullErrorStr\n )}), null) :`;\n errorDestination = GLOBAL_NULL_ERRORS_NAME;\n } else {\n body += \"null : \";\n errorDestination = GLOBAL_ERRORS_NAME;\n }\n body += \"(\";\n // value can be an error obj\n const errorPath = `${sourcePath}.message != null ? ${sourcePath}.message : ${sourcePath}`;\n body += `${sourcePath} instanceof Error ? (${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n errorPath,\n sourcePath\n )}), null) : `;\n\n if (isLeafType(type)) {\n body += compileLeafType(\n context,\n type,\n originPaths,\n fieldNodes,\n previousPath,\n errorDestination\n );\n } else if (isObjectType(type)) {\n const fieldMap = collectSubfields(context, type, fieldNodes, previousPath);\n body += compileObjectType(\n context,\n type,\n fieldNodes,\n originPaths,\n destinationPaths,\n previousPath,\n errorDestination,\n fieldMap,\n false\n );\n } else if (isAbstractType(type)) {\n body += compileAbstractType(\n context,\n parentType,\n type,\n fieldNodes,\n originPaths,\n previousPath,\n errorDestination\n );\n } else if (isListType(type)) {\n body += compileListType(\n context,\n parentType,\n type,\n fieldNodes,\n originPaths,\n previousPath,\n errorDestination\n );\n } else {\n /* istanbul ignore next */\n throw new Error(`unsupported type: ${type.toString()}`);\n }\n body += \")\";\n return body;\n}\n\nfunction compileLeafType(\n context: CompilationContext,\n type: GraphQLLeafType,\n originPaths: string[],\n fieldNodes: FieldNode[],\n previousPath: ObjectPath,\n errorDestination: string\n) {\n let body = \"\";\n if (\n context.options.disableLeafSerialization &&\n (type instanceof GraphQLEnumType || isSpecifiedScalarType(type))\n ) {\n body += `${joinOriginPaths(originPaths)}`;\n } else {\n const serializerName = getSerializerName(type.name);\n context.serializers[serializerName] = getSerializer(\n type,\n context.options.customSerializers[type.name]\n );\n const parentIndexes = getParentArgIndexes(context);\n const serializerErrorHandler = getHoistedFunctionName(\n context,\n `${type.name}${originPaths.join(\"\")}SerializerErrorHandler`\n );\n context.hoistedFunctions.push(`\n function ${serializerErrorHandler}(${GLOBAL_EXECUTION_CONTEXT}, message, ${parentIndexes}) {\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n \"message\"\n )});}\n `);\n body += `${GLOBAL_EXECUTION_CONTEXT}.serializers.${serializerName}(${GLOBAL_EXECUTION_CONTEXT}, ${joinOriginPaths(\n originPaths\n )}, ${serializerErrorHandler}, ${parentIndexes})`;\n }\n return body;\n}\n\n/**\n * Compile a node of object type.\n * @param {CompilationContext} context\n * @param {GraphQLObjectType} type type of the node\n * @param fieldNodes fieldNodes array with the nodes references\n * @param originPaths originPaths path in the parent object from where to fetch results\n * @param destinationPaths path in the where to write the result\n * @param responsePath response path until this node\n * @param errorDestination Path for error array\n * @param fieldMap map of fields to fieldNodes array with the nodes references\n * @param alwaysDefer used to force the field to be resolved with a resolver ala graphql-js\n * @returns {string}\n */\nfunction compileObjectType(\n context: CompilationContext,\n type: GraphQLObjectType,\n fieldNodes: JitFieldNode[],\n originPaths: string[],\n destinationPaths: string[],\n responsePath: ObjectPath | undefined,\n errorDestination: string,\n fieldMap: FieldsAndNodes,\n alwaysDefer: boolean\n): string {\n // trivialTypeNameVar applies only to __typename of this (current) type.\n // Clear it on context so nested field compilations and deferred resolver\n // handler sub-contexts don't reference finalType outside its switch scope.\n const trivialTypeNameVar = context.trivialTypeNameVar;\n context.trivialTypeNameVar = undefined;\n\n const body = genFn();\n\n // Begin object compilation paren\n body(\"(\");\n if (typeof type.isTypeOf === \"function\" && !alwaysDefer) {\n context.isTypeOfs[type.name + \"IsTypeOf\"] = type.isTypeOf;\n body(\n `!${GLOBAL_EXECUTION_CONTEXT}.isTypeOfs[\"${\n type.name\n }IsTypeOf\"](${joinOriginPaths(\n originPaths\n )}) ? (${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n responsePath as any,\n `\\`Expected value of type \"${\n type.name\n }\" but got: $\\{${GLOBAL_INSPECT_NAME}(${joinOriginPaths(\n originPaths\n )})}.\\``\n )}), null) :`\n );\n }\n\n // object start\n body(\"{\");\n\n for (const name of Object.keys(fieldMap)) {\n const fieldNodes = fieldMap[name];\n const field = resolveFieldDef(context, type, fieldNodes);\n if (!field) {\n // Field is invalid, should have been caught in validation\n // but the error is swallowed for compatibility reasons.\n continue;\n }\n\n // Key of the object\n // `name` is the field name or an alias supplied by the user\n body(`\"${name}\": `);\n\n /**\n * Value of the object\n *\n * The combined condition for whether a field should be included\n * in the object.\n *\n * Here, the logical operation is `||` because every fieldNode\n * is at the same level in the tree, if at least \"one of\" the nodes\n * is included, then the field is included.\n *\n * For example,\n *\n * ```graphql\n * {\n * foo @skip(if: $c1)\n * ... { foo @skip(if: $c2) }\n * }\n * ```\n *\n * The logic for `foo` becomes -\n *\n * `compilationFor($c1) || compilationFor($c2)`\n */\n const serializedResponsePath = joinSkipIncludePath(\n serializeObjectPathForSkipInclude(responsePath),\n name\n );\n\n const fieldConditionsList = (\n context.options.useExperimentalPathBasedSkipInclude\n ? fieldNodes.map(\n (it) => it.__internalShouldIncludePath?.[serializedResponsePath]\n )\n : fieldNodes.map((it) => it.__internalShouldInclude)\n ).filter(isNotNull);\n\n let fieldCondition = fieldConditionsList\n .map((it) => {\n if (it.length > 0) {\n return `(${it.join(\" && \")})`;\n }\n // default: if there are no conditions, it means that the field\n // is always included in the path\n return \"true\";\n })\n .filter(isNotNull)\n .join(\" || \");\n\n // if it's an empty string, it means that the field is always included\n if (!fieldCondition) {\n // if there are no conditions, it means that the field\n // is always included in the path\n fieldCondition = \"true\";\n }\n\n const alwaysIncluded = fieldCondition\n .split(\" || \")\n .every((p) => p === \"true\");\n\n if (!alwaysIncluded) {\n body(`(${fieldCondition})`);\n }\n\n // Inline __typename\n // No need to call a resolver for typename\n if (field === TypeNameMetaFieldDef) {\n const typenameValue = trivialTypeNameVar ?? `\"${type.name}\"`;\n body(\n alwaysIncluded ? `${typenameValue},` : `? ${typenameValue} : undefined,`\n );\n continue;\n }\n\n let resolver = field.resolve;\n if (!resolver && alwaysDefer) {\n const fieldName = field.name;\n resolver = (parent) => parent && parent[fieldName];\n }\n if (resolver) {\n context.deferred.push({\n name,\n responsePath: addPath(responsePath, name),\n originPaths,\n originPathsFormatted: joinOriginPaths(originPaths),\n destinationPaths,\n parentType: type,\n fieldName: field.name,\n jsFieldName: getJsFieldName(field.name),\n fieldType: field.type,\n fieldNodes,\n args: getArgumentDefs(field, fieldNodes[0])\n });\n context.resolvers[getResolverName(type.name, field.name)] = resolver;\n const idx = context.deferred.length - 1;\n if (alwaysIncluded) {\n body(`(${SAFETY_CHECK_PREFIX}${idx} = true, null)`);\n } else {\n body(\n `? (${SAFETY_CHECK_PREFIX}${idx} = true, null) : (${SAFETY_CHECK_PREFIX}${idx} = false, undefined)`\n );\n }\n } else {\n const compiledFieldType = compileType(\n context,\n type,\n field.type,\n fieldNodes,\n originPaths.concat(field.name),\n destinationPaths.concat(name),\n addPath(responsePath, name)\n );\n if (alwaysIncluded) {\n body(compiledFieldType);\n } else {\n body(`? ${compiledFieldType} : undefined`);\n }\n }\n // End object property\n body(\",\");\n }\n\n // End object\n body(\"}\");\n // End object compilation paren\n body(\")\");\n\n return body.toString();\n}\n\nfunction compileAbstractType(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n type: GraphQLAbstractType,\n fieldNodes: FieldNode[],\n originPaths: string[],\n previousPath: ObjectPath,\n errorDestination: string\n): string {\n let resolveType: GraphQLTypeResolver<any, any>;\n if (type.resolveType) {\n resolveType = type.resolveType;\n } else {\n resolveType = (value: any, context: any, info: GraphQLResolveInfo) =>\n defaultResolveTypeFn(value, context, info, type);\n }\n const typeResolverName = getTypeResolverName(type.name);\n context.typeResolvers[typeResolverName] = resolveType;\n\n const finalTypeName = \"finalType\";\n\n // Trivial types (no deferred resolvers) whose case bodies differ only in\n // the __typename literal are grouped into a single shared case that uses\n // the already computed finalType variable instead of a hardcoded string.\n const trivialGroups = new Map<string, string[]>();\n const nonTrivialCases: string[] = [];\n\n for (const objectType of context.schema.getPossibleTypes(type)) {\n const subContext = createSubCompilationContext(context);\n subContext.trivialTypeNameVar = finalTypeName;\n const object = compileType(\n subContext,\n parentType,\n objectType,\n fieldNodes,\n originPaths,\n [\"__concrete\"],\n addPath(previousPath, objectType.name, \"meta\")\n );\n if (subContext.deferred.length === 0) {\n // object was compiled with trivialTypeNameVar\n // group identical bodies to share a single case\n const group = trivialGroups.get(object) ?? [];\n group.push(objectType.name);\n trivialGroups.set(object, group);\n } else {\n nonTrivialCases.push(`case \"${objectType.name}\": {\n ${generateUniqueDeclarations(subContext)}\n const __concrete = ${object};\n ${compileDeferredFields(subContext)}\n return __concrete;\n }`);\n }\n }\n\n const trivialCases = Array.from(trivialGroups.entries()).map(\n ([sharedObj, typeNames]) => {\n const caseLabels = typeNames.map((n) => `case \"${n}\"`).join(\": \");\n return `${caseLabels}: {\n const __concrete = ${sharedObj};\n return __concrete;\n }`;\n }\n );\n\n const collectedTypes = [...nonTrivialCases, ...trivialCases].join(\"\\n\");\n const nullTypeError = `\"Runtime Object type is not a possible type for \\\\\"${type.name}\\\\\".\"`;\n\n const notPossibleTypeError =\n // eslint-disable-next-line no-template-curly-in-string\n '`Runtime Object type \"${nodeType}\" is not a possible type for \"' +\n type.name +\n '\".`';\n const noTypeError = `${finalTypeName} ? ${notPossibleTypeError} : \"Abstract type ${\n type.name\n } must resolve to an Object type at runtime for field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}. Either the ${\n type.name\n } type should provide a \\\\\"resolveType\\\\\" function or each possible types should provide an \\\\\"isTypeOf\\\\\" function.\"`;\n\n return `((nodeType, err) =>\n {\n if (err != null) {\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n \"err.message != null ? err.message : err\",\n \"err\"\n )});\n return null;\n }\n if (nodeType == null) {\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n nullTypeError\n )})\n return null;\n }\n const ${finalTypeName} = typeof nodeType === \"string\" ? nodeType : nodeType.name;\n switch(${finalTypeName}) {\n ${collectedTypes}\n default:\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n noTypeError\n )})\n return null;\n }\n })(\n ${GLOBAL_EXECUTION_CONTEXT}.typeResolvers.${typeResolverName}(${joinOriginPaths(\n originPaths\n )},\n ${GLOBAL_CONTEXT_NAME},\n ${getExecutionInfo(\n context,\n parentType,\n type,\n type.name,\n fieldNodes,\n previousPath\n )}))`;\n}\n\n/**\n * Compile a list transformation.\n *\n * @param {CompilationContext} context\n * @param {GraphQLObjectType} parentType type of the parent of object which contained this type\n * @param {GraphQLList<GraphQLType>} type list type being compiled\n * @param {FieldNode[]} fieldNodes\n * @param originalObjectPaths\n * @param {ObjectPath} responsePath\n * @param errorDestination\n * @returns {string} compiled list transformation\n */\nfunction compileListType(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n type: GraphQLList<GraphQLType>,\n fieldNodes: FieldNode[],\n originalObjectPaths: string[],\n responsePath: ObjectPath,\n errorDestination: string\n) {\n const name = originalObjectPaths.join(\".\");\n const listContext = createSubCompilationContext(context);\n // context depth will be mutated, so we cache the current value.\n const newDepth = ++listContext.depth;\n const fieldType = type.ofType;\n const dataBody = compileType(\n listContext,\n parentType,\n fieldType,\n fieldNodes,\n [\"__currentItem\"],\n [`${GLOBAL_PARENT_NAME}[idx${newDepth}]`],\n addPath(responsePath, \"idx\" + newDepth, \"variable\")\n );\n\n const errorMessage = `\"Expected Iterable, but did not find one for field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}.\"`;\n const errorCase = `(${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n responsePath,\n errorMessage\n )}), null)`;\n const executionError = createErrorObject(\n context,\n fieldNodes,\n addPath(responsePath, \"idx\" + newDepth, \"variable\"),\n \"err.message != null ? err.message : err\",\n \"err\"\n );\n const emptyError = createErrorObject(context, fieldNodes, responsePath, '\"\"');\n const uniqueDeclarations = generateUniqueDeclarations(listContext);\n const deferredFields = compileDeferredFields(listContext);\n const itemHandler = getHoistedFunctionName(\n context,\n `${parentType.name}${originalObjectPaths.join(\"\")}MapItemHandler`\n );\n const childIndexes = getParentArgIndexes(listContext);\n listContext.hoistedFunctions.push(`\n function ${itemHandler}(${GLOBAL_EXECUTION_CONTEXT}, ${GLOBAL_PARENT_NAME}, __currentItem, ${childIndexes}) {\n ${uniqueDeclarations}\n ${GLOBAL_PARENT_NAME}[idx${newDepth}] = ${dataBody};\n ${deferredFields}\n }\n `);\n const safeMapHandler = getHoistedFunctionName(\n context,\n `${parentType.name}${originalObjectPaths.join(\"\")}MapHandler`\n );\n const parentIndexes = getParentArgIndexes(context);\n listContext.hoistedFunctions.push(`\n function ${safeMapHandler}(${GLOBAL_EXECUTION_CONTEXT}, __currentItem, idx${newDepth}, resultArray, ${parentIndexes}) {\n ${GLOBAL_RUNTIME_NAME}.handleListItemResult(${GLOBAL_EXECUTION_CONTEXT}, __currentItem,\n result => {\n ${itemHandler}(${GLOBAL_EXECUTION_CONTEXT}, resultArray, result, ${childIndexes});\n },\n err => {\n resultArray.push(null);\n if (err) {\n ${getErrorDestination(fieldType)}.push(${executionError});\n } else {\n ${getErrorDestination(fieldType)}.push(${emptyError});\n }\n }\n );\n }\n `);\n return `(typeof ${name} === \"string\" || typeof ${name}[Symbol.iterator] !== \"function\") ? ${errorCase} :\n ${GLOBAL_SAFE_MAP_NAME}(${GLOBAL_EXECUTION_CONTEXT}, ${name}, ${safeMapHandler}, ${parentIndexes})`;\n}\n\n/**\n * Whether the value cannot be written into source as a literal: a bigint,\n * symbol, function, or any object other than a plain object, array or Date.\n */\nfunction isUnserializable(value: any): boolean {\n switch (typeof value) {\n case \"bigint\":\n case \"symbol\":\n case \"function\":\n return true;\n case \"object\": {\n if (value === null) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n if (Array.isArray(value)) {\n return proto !== Array.prototype;\n }\n if (value instanceof Date) {\n return proto !== Date.prototype;\n }\n return proto !== null && proto !== Object.prototype;\n }\n default:\n return false;\n }\n}\n\n/**\n * Serializes an argument value to a JS expression. Unserializable values are\n * stored via `hoist` and referenced from `context.literals`.\n */\nfunction objectStringify(val: any, hoist: (value: any) => string): string {\n if (isUnserializable(val)) {\n return `${GLOBAL_EXECUTION_CONTEXT}.literals.${hoist(val)}`;\n }\n if (typeof val === \"number\") {\n // JSON.stringify would turn NaN/Infinity into null\n return Number.isFinite(val) ? JSON.stringify(val) : String(val);\n }\n if (val === undefined) {\n return \"undefined\";\n }\n if (val === null || typeof val !== \"object\") {\n return JSON.stringify(val);\n }\n if (val instanceof Date) {\n return `new Date(${val.getTime()})`;\n }\n if (Array.isArray(val)) {\n const items = [];\n for (let i = 0; i < val.length; ++i) {\n items.push(i in val ? objectStringify(val[i], hoist) : \"null\");\n }\n return `[${items.join(\",\")}]`;\n }\n const props = [];\n for (const key of Object.keys(val)) {\n if (val[key] === undefined) {\n continue;\n }\n // a computed key stops \"__proto__\" from setting the prototype\n const name = JSON.stringify(key);\n props.push(\n `${key === \"__proto__\" ? `[${name}]` : name}:${objectStringify(\n val[key],\n hoist\n )}`\n );\n }\n return `{${props.join(\",\")}}`;\n}\n\n/**\n * Calculates a GraphQLResolveInfo object for the resolver calls.\n *\n * if the resolver does not use, it returns null.\n * @param {CompilationContext} context compilation context to submit the resolveInfoResolver\n * @param parentType\n * @param fieldType\n * @param fieldName\n * @param fieldNodes\n * @param responsePath\n * @returns {string} a call to the resolve info creator or \"{}\" if unused\n */\nfunction getExecutionInfo(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n fieldType: GraphQLOutputType,\n fieldName: string,\n fieldNodes: FieldNode[],\n responsePath: ObjectPath\n) {\n const resolveInfoName = createResolveInfoName(responsePath);\n const { schema, fragments, operation } = context;\n\n context.resolveInfos[resolveInfoName] = createResolveInfoThunk(\n {\n schema,\n fragments,\n operation,\n parentType,\n fieldName,\n fieldType,\n fieldNodes\n },\n context.options.resolverInfoEnricher\n );\n return `${GLOBAL_EXECUTION_CONTEXT}.resolveInfos.${resolveInfoName}(${GLOBAL_ROOT_NAME}, ${GLOBAL_VARIABLES_NAME}, ${serializeResponsePath(\n responsePath\n )})`;\n}\n\nfunction getArgumentsName(prefixName: string) {\n return `${prefixName}Args`;\n}\n\nfunction getValidArgumentsVarName(prefixName: string) {\n return `${prefixName}ValidArgs`;\n}\n\nfunction objectPath(topLevel: string, path?: ObjectPath) {\n if (!path) {\n return topLevel;\n }\n let objectPath = topLevel;\n const flattened = flattenPath(path);\n for (const section of flattened) {\n if (section.type === \"literal\") {\n objectPath += `[\"${section.key}\"]`;\n } else {\n /* istanbul ignore next */\n throw new Error(\"should only have received literal paths\");\n }\n }\n return objectPath;\n}\n\n/**\n * Returns a static object with the all the arguments needed for the resolver\n * @param context\n * @param {Arguments} args\n * @param topLevelArg name of the toplevel\n * @param validArgs\n * @param returnType\n * @param path\n * @returns {string}\n */\nfunction compileArguments(\n context: CompilationContext,\n args: Arguments,\n topLevelArg: string,\n validArgs: string,\n returnType: GraphQLOutputType,\n path: ObjectPath\n): string {\n // default to assuming arguments are valid\n let body = `\n let ${validArgs} = true;\n const ${topLevelArg} = ${objectStringify(args.values, (value) => {\n const key = `literal${Object.keys(context.literals).length}`;\n context.literals[key] = value;\n return key;\n })};\n `;\n const errorDestination = getErrorDestination(returnType);\n for (const variable of args.missing) {\n const varName = variable.valueNode.name.value;\n body += `if (Object.prototype.hasOwnProperty.call(${GLOBAL_VARIABLES_NAME}, \"${varName}\")) {`;\n if (variable.argument && isNonNullType(variable.argument.definition.type)) {\n const message = `'Argument \"${\n variable.argument.definition.name\n }\" of non-null type \"${variable.argument.definition.type.toString()}\" must not be null.'`;\n body += `if (${GLOBAL_VARIABLES_NAME}['${\n variable.valueNode.name.value\n }'] == null) {\n ${errorDestination}.push(${createErrorObject(\n context,\n [variable.argument.node.value],\n path,\n message\n )});\n ${validArgs} = false;\n }`;\n }\n body += `\n ${objectPath(topLevelArg, variable.path)} = ${GLOBAL_VARIABLES_NAME}['${\n variable.valueNode.name.value\n }'];\n }`;\n // If there is no default value and no variable input\n // throw a field error\n if (\n variable.argument &&\n isNonNullType(variable.argument.definition.type) &&\n variable.argument.definition.defaultValue === undefined\n ) {\n const message = `'Argument \"${\n variable.argument.definition.name\n }\" of required type \"${variable.argument.definition.type.toString()}\" was provided the variable \"$${varName}\" which was not provided a runtime value.'`;\n body += ` else {\n ${errorDestination}.push(${createErrorObject(\n context,\n [variable.argument.node.value],\n path,\n message\n )});\n ${validArgs} = false;\n }`;\n }\n }\n return body;\n}\n\n/**\n * Safety checks for resolver execution is done via side effects every time a resolver function\n * is encountered.\n *\n * This function generates the declarations, so the side effect is valid code.\n *\n * @param {CompilationContext} context compilation context\n * @param {boolean} defaultValue usually false, meant to be true at the top level\n * @returns {string} a list of declarations eg: var __validNode0 = false;\\nvar __validNode1 = false;\n */\nfunction generateUniqueDeclarations(\n context: CompilationContext,\n defaultValue = false\n) {\n return context.deferred\n .map(\n (_, idx) => `\n let ${SAFETY_CHECK_PREFIX}${idx} = ${defaultValue};\n `\n )\n .join(\"\\n\");\n}\n\nfunction createSubCompilationContext(\n context: CompilationContext\n): CompilationContext {\n return { ...context, deferred: [] };\n}\n\nexport function isPromise(value: any): value is Promise<any> {\n return (\n value != null &&\n typeof value === \"object\" &&\n typeof value.then === \"function\"\n );\n}\n\nexport function isPromiseInliner(value: string): string {\n return `${GLOBAL_RUNTIME_NAME}.isPromise(${value})`;\n}\n\n/**\n * Serializes the response path for an error response.\n *\n * @param {ObjectPath | undefined} path response path of a field\n * @returns {string} filtered serialization of the response path\n */\nfunction serializeResponsePathAsArray(path: ObjectPath) {\n const flattened = flattenPath(path);\n let src = \"[\";\n for (let i = flattened.length - 1; i >= 0; i--) {\n // meta is only used for the function name\n if (flattened[i].type === \"meta\") {\n continue;\n }\n src +=\n flattened[i].type === \"literal\"\n ? `\"${flattened[i].key}\",`\n : `${flattened[i].key},`;\n }\n return src + \"]\";\n}\n\nfunction getErrorDestination(type: GraphQLType): string {\n return isNonNullType(type) ? GLOBAL_NULL_ERRORS_NAME : GLOBAL_ERRORS_NAME;\n}\n\nfunction createResolveInfoName(path: ObjectPath) {\n return (\n flattenPath(path)\n .map((p) => p.key)\n .join(\"_\") + \"Info\"\n );\n}\n\n/**\n * Serializes the response path for the resolve info function\n * @param {ObjectPath | undefined} path response path of a field\n * @returns {string} filtered serialization of the response path\n */\nfunction serializeResponsePath(path: ObjectPath | undefined): string {\n if (!path) {\n return \"undefined\";\n }\n if (path.type === \"meta\") {\n // meta is ignored while serializing for the resolve info functions\n return serializeResponsePath(path.prev);\n }\n const literalValue = `\"${path.key}\"`;\n return `{\n key: ${path.type === \"literal\" ? literalValue : path.key},\n prev: ${serializeResponsePath(path.prev)}\n }`;\n}\n\n/**\n * Returned a bound serialization function of a scalar or enum\n * @param {GraphQLScalarType | GraphQLEnumType} scalar\n * @param customSerializer custom serializer\n * @returns {(v: any) => any} bound serializationFunction\n */\nfunction getSerializer(\n scalar: GraphQLScalarType | GraphQLEnumType,\n customSerializer?: GraphQLScalarSerializer<any>\n) {\n const { name } = scalar;\n const serialize =\n customSerializer || ((val: any) => coerceOutputValue(scalar, val));\n return function leafSerializer(\n context: ExecutionContext,\n v: any,\n onError: (c: ExecutionContext, msg: string, ...idx: number[]) => void,\n ...idx: number[]\n ) {\n try {\n const value = serialize(v);\n if (isInvalid(value)) {\n onError(\n context,\n `Expected a value of type \"${name}\" but received: ${v}`,\n ...idx\n );\n return null;\n }\n return value;\n } catch (e: any) {\n onError(\n context,\n (e && e.message) ||\n `Expected a value of type \"${name}\" but received an Error`,\n ...idx\n );\n return null;\n }\n };\n}\n\n/**\n * Default abstract type resolver.\n *\n * It only handle sync type resolving.\n * @param value\n * @param contextValue\n * @param {GraphQLResolveInfo} info\n * @param {GraphQLAbstractType} abstractType\n * @returns {string}\n */\nfunction defaultResolveTypeFn(\n value: any,\n contextValue: any,\n info: GraphQLResolveInfo,\n abstractType: GraphQLAbstractType\n): string {\n // First, look for `__typename`.\n if (\n value != null &&\n typeof value === \"object\" &&\n typeof value.__typename === \"string\"\n ) {\n return value.__typename;\n }\n\n // Otherwise, test each possible type.\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n for (const type of possibleTypes) {\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n throw new Error(\n `Promises are not supported for resolving type of ${value}`\n );\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n throw new Error(\n `Could not resolve the object type in possible types of ${abstractType.name} for the value: ` +\n inspect(value)\n );\n}\n\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n */\nexport function buildCompilationContext(\n schema: GraphQLSchema,\n document: DocumentNode,\n options: CompilerOptions,\n operationName?: string\n): CompilationContext {\n const errors: GraphQLError[] = [];\n let operation: OperationDefinitionNode | undefined = undefined;\n let hasMultipleAssumedOperations = false;\n const fragments: { [key: string]: FragmentDefinitionNode } =\n Object.create(null);\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (!operationName && operation) {\n hasMultipleAssumedOperations = true;\n } else if (\n !operationName ||\n (definition.name && definition.name.value === operationName)\n ) {\n operation = definition;\n }\n break;\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n }\n }\n\n if (!operation) {\n if (operationName) {\n throw new GraphQLError(`Unknown operation named \"${operationName}\".`);\n } else {\n throw new GraphQLError(\"Must provide an operation.\");\n }\n } else if (hasMultipleAssumedOperations) {\n throw new GraphQLError(\n \"Must provide operation name if query contains multiple operations.\"\n );\n }\n\n return {\n schema,\n fragments,\n rootValue: null,\n contextValue: null,\n operation,\n options,\n resolvers: {},\n serializers: {},\n typeResolvers: {},\n isTypeOfs: {},\n resolveInfos: {},\n literals: {},\n hoistedFunctions: [],\n hoistedFunctionNames: new Map(),\n leafErrHandlerCache: new Map(),\n deferred: [],\n depth: -1,\n variableValues: {},\n errors\n } as unknown as CompilationContext;\n}\n\nfunction getFieldNodesName(nodes: FieldNode[]) {\n return nodes.length > 1\n ? \"(\" + nodes.map(({ name }) => name.value).join(\",\") + \")\"\n : nodes[0].name.value;\n}\n\nfunction getHoistedFunctionName(context: CompilationContext, name: string) {\n const count = context.hoistedFunctionNames.get(name);\n if (count === undefined) {\n context.hoistedFunctionNames.set(name, 0);\n return name;\n }\n context.hoistedFunctionNames.set(name, count + 1);\n return `${name}${count + 1}`;\n}\n\nfunction createErrorObject(\n context: CompilationContext,\n nodes: ASTNode[],\n path: ObjectPath,\n message: string,\n originalError?: string\n): string {\n return `new ${GRAPHQL_ERROR}(${message},\n ${JSON.stringify(computeLocations(nodes))},\n ${serializeResponsePathAsArray(path)},\n ${originalError || \"undefined\"},\n ${context.options.disablingCapturingStackErrors ? \"true\" : \"false\"})`;\n}\n\nfunction getResolverName(parentName: string, name: string) {\n return parentName + name + \"Resolver\";\n}\n\nfunction getTypeResolverName(name: string) {\n return name + \"TypeResolver\";\n}\n\nfunction getSerializerName(name: string) {\n return name + \"Serializer\";\n}\n\nfunction normalizeErrors(err: Error[] | Error): GraphQLError[] {\n if (Array.isArray(err)) {\n return err.map((e) => normalizeError(e));\n }\n return [normalizeError(err)];\n}\n\nfunction normalizeError(err: Error): GraphQLError {\n return err instanceof GraphQLError\n ? err\n : new (GraphqlJitError as any)(\n err.message,\n (err as any).locations,\n (err as any).path,\n err\n );\n}\n\n/**\n * Returns true if a value is undefined, or NaN.\n */\nfunction isInvalid(value: any): boolean {\n // eslint-disable-next-line no-self-compare\n return value === undefined || value !== value;\n}\n\nfunction getParentArgIndexes(context: CompilationContext) {\n let args = \"\";\n for (let i = 0; i <= context.depth; ++i) {\n if (i > 0) {\n args += \", \";\n }\n args += `idx${i}`;\n }\n return args;\n}\n\nfunction getJsFieldName(fieldName: string) {\n return `${LOCAL_JS_FIELD_NAME_PREFIX}${fieldName}`;\n}\n\nexport function isAsyncIterable<T = unknown>(\n val: unknown\n): val is AsyncIterableIterator<T> {\n return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\n\nfunction compileSubscriptionOperation(\n context: CompilationContext,\n type: GraphQLObjectType,\n fieldMap: FieldsAndNodes,\n queryFn: CompiledQuery[\"query\"]\n) {\n const fieldNodes = Object.values(fieldMap)[0];\n const fieldNode = fieldNodes[0];\n const fieldName = fieldNode.name.value;\n\n const field = resolveFieldDef(context, type, fieldNodes);\n\n if (!field) {\n throw new GraphQLError(\n `The subscription field \"${fieldName}\" is not defined.`,\n getGraphQLErrorOptions(fieldNodes)\n );\n }\n\n const responsePath = addPath(undefined, fieldName);\n const resolveInfoName = createResolveInfoName(responsePath);\n\n const subscriber = field.subscribe;\n\n async function executeSubscription(executionContext: ExecutionContext) {\n const resolveInfo = executionContext.resolveInfos[resolveInfoName](\n executionContext.rootValue,\n executionContext.variables,\n responsePath\n );\n\n try {\n const eventStream = await subscriber?.(\n executionContext.rootValue,\n executionContext.variables,\n executionContext.context,\n resolveInfo\n );\n if (eventStream instanceof Error) {\n throw eventStream;\n }\n return eventStream;\n } catch (error) {\n throw locatedError(\n error,\n resolveInfo.fieldNodes,\n responsePathAsArray(resolveInfo.path)\n );\n }\n }\n\n async function createSourceEventStream(executionContext: ExecutionContext) {\n try {\n const eventStream = await executeSubscription(executionContext);\n\n // Assert field returned an event stream, otherwise yield an error.\n if (!isAsyncIterable(eventStream)) {\n throw new Error(\n \"Subscription field must return Async Iterable. \" +\n `Received: ${inspect(eventStream)}.`\n );\n }\n\n return eventStream;\n } catch (error) {\n // If it is a GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n // Otherwise treat the error as a system-class error and re-throw it.\n if (error instanceof GraphQLError) {\n return { errors: [error] };\n }\n throw error;\n }\n }\n\n return async function subscribe(executionContext: ExecutionContext) {\n const resultOrStream = await createSourceEventStream(executionContext);\n\n if (!isAsyncIterable(resultOrStream)) {\n return resultOrStream;\n }\n\n // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n // We use our `query` function in place of `execute`\n const mapSourceToResponse = (payload: any) =>\n queryFn(payload, executionContext.context, executionContext.variables);\n\n return mapAsyncIterator(resultOrStream, mapSourceToResponse);\n };\n}\n\nfunction createBoundSubscribe(\n compilationContext: CompilationContext,\n document: DocumentNode,\n func: (\n context: ExecutionContext\n ) => Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult>,\n getVariableValues: (inputs: { [key: string]: any }) => CoercedVariableValues,\n operationName: string | undefined\n): CompiledQuery[\"subscribe\"] {\n const {\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals\n } = compilationContext;\n const trimmer = createNullTrimmer(compilationContext);\n const fnName = operationName || \"subscribe\";\n\n const ret = {\n async [fnName](\n rootValue: any,\n context: any,\n variables: Maybe<{ [key: string]: any }>\n ): Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult> {\n // this can be shared across in a batch request\n const parsedVariables = getVariableValues(variables || {});\n\n // Return early errors if variable coercing failed.\n if (failToParseVariables(parsedVariables)) {\n return { errors: parsedVariables.errors };\n }\n\n const executionContext: ExecutionContext = {\n rootValue,\n context,\n variables: parsedVariables.coerced,\n inspect,\n GraphQLError: GraphqlJitError,\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals,\n trimmer,\n rt: jitRuntime,\n promiseCounter: 0,\n nullErrors: [],\n errors: [],\n data: {}\n };\n\n // eslint-disable-next-line no-useless-call\n return func.call(null, executionContext);\n }\n };\n\n return ret[fnName];\n}\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator<T, U, R = undefined>(\n iterable: AsyncGenerator<T, R, undefined> | AsyncIterable<T>,\n callback: (value: T) => U | Promise<U>\n): AsyncGenerator<U, R, undefined> {\n const iterator = iterable[Symbol.asyncIterator]();\n\n async function mapResult(\n result: IteratorResult<T, R>\n ): Promise<IteratorResult<U, R>> {\n if (result.done) {\n return result;\n }\n\n try {\n return { value: await callback(result.value), done: false };\n } catch (error) {\n if (typeof iterator.return === \"function\") {\n try {\n await iterator.return();\n } catch (e) {\n /* ignore error */\n }\n }\n throw error;\n }\n }\n\n return {\n async next() {\n return mapResult(await iterator.next());\n },\n async return(): Promise<IteratorResult<U, R>> {\n return typeof iterator.return === \"function\"\n ? mapResult(await iterator.return())\n : { value: undefined as unknown as R, done: true };\n },\n async throw(error?: Error) {\n return typeof iterator.throw === \"function\"\n ? mapResult(await iterator.throw(error))\n : Promise.reject(error);\n },\n [Symbol.asyncIterator]() {\n return this;\n }\n };\n}\n\nfunction joinOriginPaths(originPaths: string[]) {\n return originPaths.join(\".\");\n}\n\nfunction isNotNull<T>(it: T): it is Exclude<T, null | undefined> {\n return it != null;\n}\n"]}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/execution.ts"],"names":[],"mappings":"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","sourcesContent":["import { type TypedDocumentNode } from \"@graphql-typed-document-node/core\";\nimport fastJson from \"fast-json-stringify\";\nimport { genFn } from \"./generate.js\";\nimport { jitRuntime, type JitRuntime } from \"./runtime.js\";\nimport {\n appendSourceURL,\n createGeneratedSourceName,\n formatDebugSource,\n normalizeDebugOptions,\n type CompilerDebugOptions\n} from \"./debug.js\";\n\nconst GLOBAL_RUNTIME_NAME = \"__context.rt\";\nimport {\n type ASTNode,\n type DocumentNode,\n type ExecutionResult,\n type FragmentDefinitionNode,\n type GraphQLAbstractType,\n GraphQLEnumType,\n GraphQLError,\n type GraphQLFieldResolver,\n type GraphQLIsTypeOfFn,\n type GraphQLLeafType,\n GraphQLList,\n GraphQLObjectType,\n type GraphQLOutputType,\n type GraphQLResolveInfo,\n type GraphQLScalarSerializer,\n GraphQLScalarType,\n GraphQLSchema,\n type GraphQLType,\n isAbstractType,\n isLeafType,\n isListType,\n isNonNullType,\n isObjectType,\n isSpecifiedScalarType,\n Kind,\n locatedError,\n responsePathAsArray,\n TypeNameMetaFieldDef,\n type FieldNode,\n type OperationDefinitionNode,\n type GraphQLTypeResolver\n} from \"graphql\";\nimport { type ExecutionContext as GraphQLContext } from \"./compat.js\";\nimport {\n addPath,\n type Arguments,\n collectFields,\n collectSubfields,\n computeLocations,\n type FieldsAndNodes,\n flattenPath,\n getArgumentDefs,\n type JitFieldNode,\n joinSkipIncludePath,\n type ObjectPath,\n resolveFieldDef,\n serializeObjectPathForSkipInclude\n} from \"./ast.js\";\nimport { GraphQLError as GraphqlJitError } from \"./error.js\";\nimport { compileInputValue } from \"./compile-input.js\";\nimport createInspect from \"./inspect.js\";\nimport { queryToJSONSchema } from \"./json.js\";\nimport {\n createNullTrimmer,\n createRootNullChecker,\n type NullTrimmer\n} from \"./non-null.js\";\nimport {\n createResolveInfoThunk,\n type ResolveInfoEnricherInput\n} from \"./resolve-info.js\";\nimport { type Maybe } from \"./types.js\";\nimport {\n type CoercedVariableValues,\n compileVariableParsing,\n failToParseVariables\n} from \"./variables.js\";\nimport {\n coerceOutputValue,\n getGraphQLErrorOptions,\n getOperationRootType\n} from \"./compat.js\";\n\nconst inspect = createInspect();\n\nexport interface CompilerOptions {\n customJSONSerializer: boolean;\n\n // Disable builtin scalars and enum serialization\n // which is responsible for coercion,\n // only safe for use if the output is completely correct.\n disableLeafSerialization: boolean;\n\n // Disable capturing the stack trace of errors.\n disablingCapturingStackErrors: boolean;\n\n // Map of serializers to override\n // the key should be the name passed to the Scalar or Enum type\n customSerializers: { [key: string]: (v: any) => any };\n\n resolverInfoEnricher?: (inp: ResolveInfoEnricherInput) => object;\n\n /**\n * This option is a temporary workaround to rollout and test the new skip/include behavior.\n * It will be removed in the next version along with the old behavior.\n *\n * Set this to true if you face issues with skip/include in fragment spreads.\n *\n * default: false\n *\n * @see https://github.com/zalando-incubator/graphql-jit/pull/197\n *\n */\n useExperimentalPathBasedSkipInclude: boolean;\n\n /** Expose generated executors to JavaScript debuggers with virtual names. */\n debug?: CompilerDebugOptions;\n}\n\n// @internal\nexport interface ExecutionContext {\n promiseCounter: number;\n data: any;\n errors: GraphQLError[];\n nullErrors: GraphQLError[];\n resolve?: (ctx: ExecutionContext) => void;\n rt: JitRuntime;\n inspect: typeof inspect;\n variables: { [key: string]: any };\n context: any;\n rootValue: any;\n GraphQLError: typeof GraphqlJitError;\n resolvers: { [key: string]: GraphQLFieldResolver<any, any, any> };\n trimmer: NullTrimmer;\n serializers: {\n [key: string]: (\n c: ExecutionContext,\n v: any,\n onError: (c: ExecutionContext, msg: string) => void\n ) => any;\n };\n typeResolvers: { [key: string]: GraphQLTypeResolver<any, any> };\n isTypeOfs: { [key: string]: GraphQLIsTypeOfFn<any, any> };\n resolveInfos: { [key: string]: any };\n literals: { [key: string]: any };\n}\n\ninterface DeferredField {\n name: string;\n responsePath: ObjectPath;\n originPaths: string[];\n originPathsFormatted: string;\n destinationPaths: string[];\n parentType: GraphQLObjectType;\n fieldName: string;\n jsFieldName: string;\n fieldType: GraphQLOutputType;\n fieldNodes: FieldNode[];\n args: Arguments;\n}\n\n/**\n * The context used during compilation.\n *\n * It stores deferred nodes to be processed later as well as the function arguments to be bounded at top level\n */\nexport interface CompilationContext extends GraphQLContext {\n resolvers: { [key: string]: GraphQLFieldResolver<any, any, any> };\n serializers: {\n [key: string]: (\n c: ExecutionContext,\n v: any,\n onError: (c: ExecutionContext, msg: string) => void\n ) => any;\n };\n hoistedFunctions: string[];\n hoistedFunctionNames: Map<string, number>;\n leafErrHandlerCache: Map<string, string>;\n // When set, emits this variable name instead of the hardcoded type name for __typename.\n // Used by compileAbstractType to share trivial case bodies via the finalType variable.\n trivialTypeNameVar?: string;\n typeResolvers: { [key: string]: GraphQLTypeResolver<any, any> };\n isTypeOfs: { [key: string]: GraphQLIsTypeOfFn<any, any> };\n resolveInfos: { [key: string]: any };\n // Opaque scalar and enum argument values kept outside the generated source.\n literals: { [key: string]: any };\n // Shared by reference with the sub contexts, which are copies of this one.\n literalCount: { value: number };\n deferred: DeferredField[];\n options: CompilerOptions;\n depth: number;\n\n // GraphQL-JS v17 compatibility\n schema: GraphQLSchema;\n operation: OperationDefinitionNode;\n fragments: { [key: string]: FragmentDefinitionNode };\n}\n\n// prefix for the variable used ot cache validation results\nconst SAFETY_CHECK_PREFIX = \"__validNode\";\nconst GLOBAL_DATA_NAME = \"__context.data\";\nconst GLOBAL_ERRORS_NAME = \"__context.errors\";\nconst GLOBAL_NULL_ERRORS_NAME = \"__context.nullErrors\";\n// Key in `literals` of the check for errors that null the whole response.\nconst NULLS_RESPONSE_LITERAL = \"nullsResponse\";\nconst GLOBAL_ROOT_NAME = \"__context.rootValue\";\nexport const GLOBAL_VARIABLES_NAME = \"__context.variables\";\nconst GLOBAL_CONTEXT_NAME = \"__context.context\";\nconst GLOBAL_EXECUTION_CONTEXT = \"__context\";\nconst GLOBAL_PROMISE_COUNTER = \"__context.promiseCounter\";\nconst GLOBAL_INSPECT_NAME = \"__context.inspect\";\nconst GLOBAL_SAFE_MAP_NAME = `${GLOBAL_RUNTIME_NAME}.safeMap`;\nconst GRAPHQL_ERROR = \"__context.GraphQLError\";\nconst GLOBAL_RESOLVE = \"__context.resolve\";\nconst GLOBAL_PARENT_NAME = \"__parent\";\nconst LOCAL_JS_FIELD_NAME_PREFIX = \"__field\";\n\nexport interface CompiledQuery<\n TResult = { [key: string]: any },\n TVariables = { [key: string]: any }\n> {\n operationName?: string;\n query: (\n root: any,\n context: any,\n variables: Maybe<TVariables>\n ) => Promise<ExecutionResult<TResult>> | ExecutionResult<TResult>;\n subscribe?: (\n root: any,\n context: any,\n variables: Maybe<TVariables>\n ) => Promise<\n AsyncIterableIterator<ExecutionResult<TResult>> | ExecutionResult<TResult>\n >;\n stringify: (v: any) => string;\n}\n\ninterface InternalCompiledQuery extends CompiledQuery {\n __DO_NOT_USE_THIS_OR_YOU_WILL_BE_FIRED_compilation?: string;\n}\n\n/**\n * It compiles a GraphQL query to an executable function\n * @param {GraphQLSchema} schema GraphQL schema\n * @param {DocumentNode} document Query being submitted\n * @param {string} operationName name of the operation\n * @param partialOptions compilation options to tune the compiler features\n * @returns {CompiledQuery} the cacheable result\n */\nexport function compileQuery<\n TResult = { [key: string]: any },\n TVariables = { [key: string]: any }\n>(\n schema: GraphQLSchema,\n document: TypedDocumentNode<TResult, TVariables>,\n operationName?: string,\n partialOptions?: Partial<CompilerOptions>\n): CompiledQuery<TResult, TVariables> | ExecutionResult<TResult> {\n if (!schema) {\n throw new Error(`Expected ${schema} to be a GraphQL schema.`);\n }\n if (!document) {\n throw new Error(\"Must provide document.\");\n }\n\n if (\n partialOptions &&\n partialOptions.resolverInfoEnricher &&\n typeof partialOptions.resolverInfoEnricher !== \"function\"\n ) {\n throw new Error(\"resolverInfoEnricher must be a function\");\n }\n try {\n const options = {\n disablingCapturingStackErrors: false,\n customJSONSerializer: false,\n disableLeafSerialization: false,\n customSerializers: {},\n useExperimentalPathBasedSkipInclude: false,\n ...partialOptions\n };\n\n // If a valid context cannot be created due to incorrect arguments,\n // a \"Response\" with only errors is returned.\n const context = buildCompilationContext(\n schema,\n document,\n options,\n operationName\n );\n const debugOptions = normalizeDebugOptions(options.debug);\n\n let stringify: (v: any) => string;\n if (options.customJSONSerializer) {\n const jsonSchema = queryToJSONSchema(context);\n stringify = fastJson(jsonSchema);\n } else {\n stringify = JSON.stringify;\n }\n const getVariables = compileVariableParsing(\n schema,\n context.operation.variableDefinitions || [],\n debugOptions\n ? {\n compilerOptions: debugOptions,\n operation: context.operation\n }\n : undefined\n );\n\n const type = getOperationRootType(context.schema, context.operation);\n const fieldMap = collectFields(\n context,\n type,\n context.operation.selectionSet,\n Object.create(null),\n Object.create(null)\n );\n\n const functionBody = compileOperation(context, type, fieldMap);\n const generatedSource = debugOptions\n ? appendSourceURL(\n formatDebugSource(functionBody, debugOptions.formatSourceCode),\n createGeneratedSourceName(\n context.operation.name?.value,\n debugOptions,\n \"query\"\n )\n )\n : functionBody;\n\n const compiledQuery: InternalCompiledQuery = {\n query: createBoundQuery(\n context,\n document,\n // eslint-disable-next-line no-new-func\n new Function(\"return \" + generatedSource)(),\n getVariables,\n context.operation.name != null\n ? context.operation.name.value\n : undefined\n ),\n stringify\n };\n\n if (context.operation.operation === \"subscription\") {\n compiledQuery.subscribe = createBoundSubscribe(\n context,\n document,\n compileSubscriptionOperation(\n context,\n type,\n fieldMap,\n compiledQuery.query\n ),\n getVariables,\n context.operation.name != null\n ? context.operation.name.value\n : undefined\n );\n }\n\n if (debugOptions) {\n // result of the compilation useful for debugging issues\n // and visualization tools like try-jit.\n compiledQuery.__DO_NOT_USE_THIS_OR_YOU_WILL_BE_FIRED_compilation =\n generatedSource;\n }\n return compiledQuery as CompiledQuery<TResult, TVariables>;\n } catch (err: any) {\n return {\n errors: normalizeErrors(err)\n };\n }\n}\n\nexport function isCompiledQuery<\n C extends CompiledQuery,\n E extends ExecutionResult\n>(query: C | E): query is C {\n return \"query\" in query && typeof query.query === \"function\";\n}\n\n// Exported only for an error test\nexport function createBoundQuery(\n compilationContext: CompilationContext,\n document: DocumentNode,\n func: (context: ExecutionContext) => Promise<any> | undefined,\n getVariableValues: (inputs: { [key: string]: any }) => CoercedVariableValues,\n operationName?: string\n) {\n const {\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals\n } = compilationContext;\n const trimmer = createNullTrimmer(compilationContext);\n const fnName = operationName || \"query\";\n\n /**\n * In-order to assign a debuggable name to the bound query function,\n * we create an intermediate object with a method named as the\n * intended function name. This is because Function.prototype.name\n * is not writeable.\n *\n * http://www.ecma-international.org/ecma-262/6.0/#sec-method-definitions-runtime-semantics-propertydefinitionevaluation\n *\n * section: 14.3.9.3 - calls SetFunctionName\n */\n const ret = {\n [fnName](\n rootValue: any,\n context: any,\n variables: Maybe<{ [key: string]: any }>\n ): Promise<ExecutionResult> | ExecutionResult {\n // this can be shared across in a batch request\n const parsedVariables = getVariableValues(variables || {});\n\n // Return early errors if variable coercing failed.\n if (failToParseVariables(parsedVariables)) {\n return { errors: parsedVariables.errors };\n }\n const executionContext: ExecutionContext = {\n rootValue,\n context,\n variables: parsedVariables.coerced,\n inspect,\n GraphQLError: GraphqlJitError,\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals,\n trimmer,\n rt: jitRuntime,\n promiseCounter: 0,\n data: {},\n nullErrors: [],\n errors: []\n };\n // eslint-disable-next-line no-useless-call\n const result = func.call(null, executionContext);\n if (isPromise(result)) {\n return result.then(postProcessResult);\n }\n return postProcessResult(executionContext);\n }\n };\n\n return ret[fnName];\n}\n\nfunction postProcessResult({\n data,\n nullErrors,\n errors,\n trimmer\n}: ExecutionContext) {\n if (nullErrors.length > 0) {\n const trimmed = trimmer(data, nullErrors);\n return {\n data: trimmed.data,\n errors: errors.concat(trimmed.errors)\n };\n } else if (errors.length > 0) {\n return {\n data,\n errors\n };\n }\n return { data };\n}\n\n/**\n * Create the main function body.\n *\n * Implements the \"Evaluating operations\" section of the spec.\n *\n * It defers all top level field for consistency and protection for null root values,\n * all the fields are deferred regardless of presence of resolver or not.\n *\n * @param {CompilationContext} context compilation context with the execution context\n * @returns {string} a function body to be instantiated together with the header, footer\n */\nfunction compileOperation(\n context: CompilationContext,\n type: GraphQLObjectType,\n fieldMap: FieldsAndNodes\n) {\n const serialExecution = context.operation.operation === \"mutation\";\n const topLevel = compileObjectType(\n context,\n type,\n [],\n [GLOBAL_ROOT_NAME],\n [GLOBAL_DATA_NAME],\n undefined,\n GLOBAL_ERRORS_NAME,\n fieldMap,\n true\n );\n let body = `function query (${GLOBAL_EXECUTION_CONTEXT}) {\n \"use strict\";\n`;\n if (serialExecution) {\n context.literals[NULLS_RESPONSE_LITERAL] = createRootNullChecker(context);\n body += `${GLOBAL_EXECUTION_CONTEXT}.queue = [];`;\n }\n body += generateUniqueDeclarations(context, true);\n body += `${GLOBAL_DATA_NAME} = ${topLevel}\\n`;\n if (serialExecution) {\n body += compileDeferredFieldsSerially(context);\n body += `\n ${GLOBAL_EXECUTION_CONTEXT}.finalResolve = () => {};\n ${GLOBAL_RESOLVE} = (context) => {\n // Stop when all mutations have finished, or when an error in a non-null\n // field has nulled the whole response.\n if (\n context.jobCounter >= context.queue.length ||\n context.literals.${NULLS_RESPONSE_LITERAL}(context.nullErrors)\n ) {\n context.finalResolve(context);\n return;\n }\n context.queue[context.jobCounter++](context);\n };\n // There might not be a job to run due to invalid queries\n if (${GLOBAL_EXECUTION_CONTEXT}.queue.length > 0) {\n ${GLOBAL_EXECUTION_CONTEXT}.jobCounter = 1; // since the first one will be run manually\n ${GLOBAL_EXECUTION_CONTEXT}.queue[0](${GLOBAL_EXECUTION_CONTEXT});\n }\n if (${GLOBAL_PROMISE_COUNTER} > 0) {\n return new Promise(resolve => ${GLOBAL_EXECUTION_CONTEXT}.finalResolve = resolve);\n }\n `;\n } else {\n body += compileDeferredFields(context);\n body += `\n return ${GLOBAL_RUNTIME_NAME}.finalizeResult(${GLOBAL_EXECUTION_CONTEXT});`;\n }\n body += `\n // sync execution, the results are ready\n return undefined;\n }`;\n body += context.hoistedFunctions.join(\"\\n\");\n return body;\n}\n\n/**\n * Processes the deferred node list in the compilation context.\n *\n * Each deferred node get a copy of the compilation context with\n * a new empty list for deferred nodes to properly scope the nodes.\n * @param {CompilationContext} context compilation context\n * @returns {string} compiled transformations all of deferred nodes\n */\nfunction compileDeferredFields(context: CompilationContext): string {\n let body = \"\";\n context.deferred.forEach((deferredField, index) => {\n body += `\n if (${SAFETY_CHECK_PREFIX}${index}) {\n ${compileDeferredField(context, deferredField)}\n }`;\n });\n return body;\n}\n\nfunction compileDeferredField(\n context: CompilationContext,\n deferredField: DeferredField,\n appendix?: string\n): string {\n const {\n name,\n originPathsFormatted,\n destinationPaths,\n fieldNodes,\n fieldType,\n fieldName,\n jsFieldName,\n responsePath,\n parentType,\n args\n } = deferredField;\n\n const subContext = createSubCompilationContext(context);\n const nodeBody = compileType(\n subContext,\n parentType,\n fieldType,\n fieldNodes,\n [jsFieldName],\n [`${GLOBAL_PARENT_NAME}.${name}`],\n responsePath\n );\n const parentIndexes = getParentArgIndexes(context);\n const resolverName = getResolverName(parentType.name, fieldName);\n const resolverHandler = getHoistedFunctionName(\n context,\n `${name}${resolverName}Handler`\n );\n const topLevelArgs = getArgumentsName(resolverName);\n const validArgs = getValidArgumentsVarName(resolverName);\n const executionError = createErrorObject(\n context,\n fieldNodes,\n responsePath,\n \"err.message != null ? err.message : err\",\n \"err\"\n );\n const executionInfo = getExecutionInfo(\n subContext,\n parentType,\n fieldType,\n fieldName,\n fieldNodes,\n responsePath\n );\n const emptyError = createErrorObject(context, fieldNodes, responsePath, '\"\"');\n const resolverParentPath = originPathsFormatted;\n const resolverCall = `${GLOBAL_EXECUTION_CONTEXT}.resolvers.${resolverName}(\n ${resolverParentPath},${topLevelArgs},${GLOBAL_CONTEXT_NAME}, ${executionInfo})`;\n const resultParentPath = destinationPaths.join(\".\");\n const compiledArgs = compileArguments(\n subContext,\n args,\n topLevelArgs,\n validArgs,\n fieldType,\n responsePath\n );\n const body = `\n ${compiledArgs}\n if (${validArgs} === true) {\n ${GLOBAL_RUNTIME_NAME}.callResolver(${GLOBAL_EXECUTION_CONTEXT},\n () => ${resolverCall},\n result => {\n ${resolverHandler}(${GLOBAL_EXECUTION_CONTEXT}, ${resultParentPath}, result, ${parentIndexes});\n },\n err => {\n if (err) {\n ${getErrorDestination(fieldType)}.push(${executionError});\n } else {\n ${getErrorDestination(fieldType)}.push(${emptyError});\n }\n }\n );\n }${\n // Invalid arguments skip the resolver and its handler, which is also what\n // advances a serial (mutation) queue.\n appendix ? ` else {${appendix}}` : \"\"\n }`;\n context.hoistedFunctions.push(`\n function ${resolverHandler}(${GLOBAL_EXECUTION_CONTEXT}, ${GLOBAL_PARENT_NAME}, ${jsFieldName}, ${parentIndexes}) {\n ${generateUniqueDeclarations(subContext)}\n ${GLOBAL_PARENT_NAME}.${name} = ${nodeBody};\n ${compileDeferredFields(subContext)}\n ${appendix || \"\"}\n }\n `);\n return body;\n}\n\nfunction compileDeferredFieldsSerially(context: CompilationContext): string {\n let body = \"\";\n context.deferred.forEach((deferredField, index) => {\n const { name, fieldName, parentType } = deferredField;\n const resolverName = getResolverName(parentType.name, fieldName);\n const mutationHandler = getHoistedFunctionName(\n context,\n `${name}${resolverName}Mutation`\n );\n body += `\n if (${SAFETY_CHECK_PREFIX}${index}) {\n ${GLOBAL_EXECUTION_CONTEXT}.queue.push(${mutationHandler});\n }\n `;\n const appendix = `\n if (${GLOBAL_PROMISE_COUNTER} === 0) {\n ${GLOBAL_RESOLVE}(${GLOBAL_EXECUTION_CONTEXT});\n }\n `;\n context.hoistedFunctions.push(`\n function ${mutationHandler}(${GLOBAL_EXECUTION_CONTEXT}) {\n ${compileDeferredField(context, deferredField, appendix)}\n }\n `);\n });\n return body;\n}\n\n/**\n * Processes a generic node.\n *\n * The type is analysed and later reprocessed in dedicated functions.\n * @param {CompilationContext} context compilation context to hold deferred nodes\n * @param parentType\n * @param {GraphQLType} type type of current parent node\n * @param {FieldNode[]} fieldNodes array of the field nodes\n * @param originPaths originPaths path in the parent object from where to fetch results\n * @param destinationPaths path in the where to write the result\n * @param previousPath response path until this node\n * @returns {string} body of the resolvable fieldNodes\n */\nfunction compileType(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n type: GraphQLType,\n fieldNodes: FieldNode[],\n originPaths: string[],\n destinationPaths: string[],\n previousPath: ObjectPath\n): string {\n const sourcePath = joinOriginPaths(originPaths);\n const isNonNull = isNonNullType(type);\n const innerType = isNonNull ? (type as any).ofType : type;\n\n // Optimization: replace the null→instanceof cascade with a single monomorphic\n // runtime call for leaf types. Avoids N separate GraphQLError call sites per\n // query and lets V8 optimize a single IC instead of one per field.\n if (\n isLeafType(innerType) &&\n !(\n context.options.disableLeafSerialization &&\n (innerType instanceof GraphQLEnumType || isSpecifiedScalarType(innerType))\n )\n ) {\n const dest = isNonNull ? GLOBAL_NULL_ERRORS_NAME : GLOBAL_ERRORS_NAME;\n const serializerName = getSerializerName(innerType.name);\n context.serializers[serializerName] = getSerializer(\n innerType,\n context.options.customSerializers[innerType.name]\n );\n const parentIndexes = getParentArgIndexes(context);\n const handlerBody = `${dest}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n \"message\"\n )});`;\n const cachedHandler = context.leafErrHandlerCache.get(handlerBody);\n let errHandler: string;\n if (cachedHandler) {\n errHandler = cachedHandler;\n } else {\n errHandler = getHoistedFunctionName(\n context,\n `${innerType.name}${originPaths.join(\"\")}SerializerErrorHandler`\n );\n context.hoistedFunctions.push(`\n function ${errHandler}(${GLOBAL_EXECUTION_CONTEXT}, message, ${parentIndexes}) {\n ${handlerBody}}\n `);\n context.leafErrHandlerCache.set(handlerBody, errHandler);\n }\n const locs = JSON.stringify(computeLocations(fieldNodes));\n const path = serializeResponsePathAsArray(previousPath);\n const capStack = context.options.disablingCapturingStackErrors\n ? \"true\"\n : \"false\";\n const serializerRef = `${GLOBAL_EXECUTION_CONTEXT}.serializers.${serializerName}`;\n const extraIndexes = parentIndexes ? `, ${parentIndexes}` : \"\";\n if (isNonNull) {\n const nullMsg = `\"Cannot return null for non-nullable field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}.\"`;\n return `${GLOBAL_RUNTIME_NAME}.checkNonNullLeaf(${GLOBAL_EXECUTION_CONTEXT}, ${sourcePath}, ${dest}, ${nullMsg}, ${locs}, ${path}, ${capStack}, ${serializerRef}, ${errHandler}${extraIndexes})`;\n } else {\n return `${GLOBAL_RUNTIME_NAME}.checkNullableLeaf(${GLOBAL_EXECUTION_CONTEXT}, ${sourcePath}, ${dest}, ${locs}, ${path}, ${capStack}, ${serializerRef}, ${errHandler}${extraIndexes})`;\n }\n }\n\n let body = `${sourcePath} == null ? `;\n let errorDestination;\n if (isNonNullType(type)) {\n type = (type as any).ofType;\n const nullErrorStr = `\"Cannot return null for non-nullable field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}.\"`;\n body += `(${GLOBAL_NULL_ERRORS_NAME}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n nullErrorStr\n )}), null) :`;\n errorDestination = GLOBAL_NULL_ERRORS_NAME;\n } else {\n body += \"null : \";\n errorDestination = GLOBAL_ERRORS_NAME;\n }\n body += \"(\";\n // value can be an error obj\n const errorPath = `${sourcePath}.message != null ? ${sourcePath}.message : ${sourcePath}`;\n body += `${sourcePath} instanceof Error ? (${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n errorPath,\n sourcePath\n )}), null) : `;\n\n if (isLeafType(type)) {\n body += compileLeafType(\n context,\n type,\n originPaths,\n fieldNodes,\n previousPath,\n errorDestination\n );\n } else if (isObjectType(type)) {\n const fieldMap = collectSubfields(context, type, fieldNodes, previousPath);\n body += compileObjectType(\n context,\n type,\n fieldNodes,\n originPaths,\n destinationPaths,\n previousPath,\n errorDestination,\n fieldMap,\n false\n );\n } else if (isAbstractType(type)) {\n body += compileAbstractType(\n context,\n parentType,\n type,\n fieldNodes,\n originPaths,\n previousPath,\n errorDestination\n );\n } else if (isListType(type)) {\n body += compileListType(\n context,\n parentType,\n type,\n fieldNodes,\n originPaths,\n previousPath,\n errorDestination\n );\n } else {\n /* istanbul ignore next */\n throw new Error(`unsupported type: ${type.toString()}`);\n }\n body += \")\";\n return body;\n}\n\nfunction compileLeafType(\n context: CompilationContext,\n type: GraphQLLeafType,\n originPaths: string[],\n fieldNodes: FieldNode[],\n previousPath: ObjectPath,\n errorDestination: string\n) {\n let body = \"\";\n if (\n context.options.disableLeafSerialization &&\n (type instanceof GraphQLEnumType || isSpecifiedScalarType(type))\n ) {\n body += `${joinOriginPaths(originPaths)}`;\n } else {\n const serializerName = getSerializerName(type.name);\n context.serializers[serializerName] = getSerializer(\n type,\n context.options.customSerializers[type.name]\n );\n const parentIndexes = getParentArgIndexes(context);\n const serializerErrorHandler = getHoistedFunctionName(\n context,\n `${type.name}${originPaths.join(\"\")}SerializerErrorHandler`\n );\n context.hoistedFunctions.push(`\n function ${serializerErrorHandler}(${GLOBAL_EXECUTION_CONTEXT}, message, ${parentIndexes}) {\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n \"message\"\n )});}\n `);\n body += `${GLOBAL_EXECUTION_CONTEXT}.serializers.${serializerName}(${GLOBAL_EXECUTION_CONTEXT}, ${joinOriginPaths(\n originPaths\n )}, ${serializerErrorHandler}, ${parentIndexes})`;\n }\n return body;\n}\n\n/**\n * Compile a node of object type.\n * @param {CompilationContext} context\n * @param {GraphQLObjectType} type type of the node\n * @param fieldNodes fieldNodes array with the nodes references\n * @param originPaths originPaths path in the parent object from where to fetch results\n * @param destinationPaths path in the where to write the result\n * @param responsePath response path until this node\n * @param errorDestination Path for error array\n * @param fieldMap map of fields to fieldNodes array with the nodes references\n * @param alwaysDefer used to force the field to be resolved with a resolver ala graphql-js\n * @returns {string}\n */\nfunction compileObjectType(\n context: CompilationContext,\n type: GraphQLObjectType,\n fieldNodes: JitFieldNode[],\n originPaths: string[],\n destinationPaths: string[],\n responsePath: ObjectPath | undefined,\n errorDestination: string,\n fieldMap: FieldsAndNodes,\n alwaysDefer: boolean\n): string {\n // trivialTypeNameVar applies only to __typename of this (current) type.\n // Clear it on context so nested field compilations and deferred resolver\n // handler sub-contexts don't reference finalType outside its switch scope.\n const trivialTypeNameVar = context.trivialTypeNameVar;\n context.trivialTypeNameVar = undefined;\n\n const body = genFn();\n\n // Begin object compilation paren\n body(\"(\");\n if (typeof type.isTypeOf === \"function\" && !alwaysDefer) {\n context.isTypeOfs[type.name + \"IsTypeOf\"] = type.isTypeOf;\n body(\n `!${GLOBAL_EXECUTION_CONTEXT}.isTypeOfs[\"${\n type.name\n }IsTypeOf\"](${joinOriginPaths(\n originPaths\n )}) ? (${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n responsePath as any,\n `\\`Expected value of type \"${\n type.name\n }\" but got: $\\{${GLOBAL_INSPECT_NAME}(${joinOriginPaths(\n originPaths\n )})}.\\``\n )}), null) :`\n );\n }\n\n // object start\n body(\"{\");\n\n for (const name of Object.keys(fieldMap)) {\n const fieldNodes = fieldMap[name];\n const field = resolveFieldDef(context, type, fieldNodes);\n if (!field) {\n // Field is invalid, should have been caught in validation\n // but the error is swallowed for compatibility reasons.\n continue;\n }\n\n // Key of the object\n // `name` is the field name or an alias supplied by the user\n body(`\"${name}\": `);\n\n /**\n * Value of the object\n *\n * The combined condition for whether a field should be included\n * in the object.\n *\n * Here, the logical operation is `||` because every fieldNode\n * is at the same level in the tree, if at least \"one of\" the nodes\n * is included, then the field is included.\n *\n * For example,\n *\n * ```graphql\n * {\n * foo @skip(if: $c1)\n * ... { foo @skip(if: $c2) }\n * }\n * ```\n *\n * The logic for `foo` becomes -\n *\n * `compilationFor($c1) || compilationFor($c2)`\n */\n const serializedResponsePath = joinSkipIncludePath(\n serializeObjectPathForSkipInclude(responsePath),\n name\n );\n\n const fieldConditionsList = (\n context.options.useExperimentalPathBasedSkipInclude\n ? fieldNodes.map(\n (it) => it.__internalShouldIncludePath?.[serializedResponsePath]\n )\n : fieldNodes.map((it) => it.__internalShouldInclude)\n ).filter(isNotNull);\n\n let fieldCondition = fieldConditionsList\n .map((it) => {\n if (it.length > 0) {\n return `(${it.join(\" && \")})`;\n }\n // default: if there are no conditions, it means that the field\n // is always included in the path\n return \"true\";\n })\n .filter(isNotNull)\n .join(\" || \");\n\n // if it's an empty string, it means that the field is always included\n if (!fieldCondition) {\n // if there are no conditions, it means that the field\n // is always included in the path\n fieldCondition = \"true\";\n }\n\n const alwaysIncluded = fieldCondition\n .split(\" || \")\n .every((p) => p === \"true\");\n\n if (!alwaysIncluded) {\n body(`(${fieldCondition})`);\n }\n\n // Inline __typename\n // No need to call a resolver for typename\n if (field === TypeNameMetaFieldDef) {\n const typenameValue = trivialTypeNameVar ?? `\"${type.name}\"`;\n body(\n alwaysIncluded ? `${typenameValue},` : `? ${typenameValue} : undefined,`\n );\n continue;\n }\n\n let resolver = field.resolve;\n if (!resolver && alwaysDefer) {\n const fieldName = field.name;\n resolver = (parent) => parent && parent[fieldName];\n }\n if (resolver) {\n context.deferred.push({\n name,\n responsePath: addPath(responsePath, name),\n originPaths,\n originPathsFormatted: joinOriginPaths(originPaths),\n destinationPaths,\n parentType: type,\n fieldName: field.name,\n jsFieldName: getJsFieldName(field.name),\n fieldType: field.type,\n fieldNodes,\n args: getArgumentDefs(field, fieldNodes[0])\n });\n context.resolvers[getResolverName(type.name, field.name)] = resolver;\n const idx = context.deferred.length - 1;\n if (alwaysIncluded) {\n body(`(${SAFETY_CHECK_PREFIX}${idx} = true, null)`);\n } else {\n body(\n `? (${SAFETY_CHECK_PREFIX}${idx} = true, null) : (${SAFETY_CHECK_PREFIX}${idx} = false, undefined)`\n );\n }\n } else {\n const compiledFieldType = compileType(\n context,\n type,\n field.type,\n fieldNodes,\n originPaths.concat(field.name),\n destinationPaths.concat(name),\n addPath(responsePath, name)\n );\n if (alwaysIncluded) {\n body(compiledFieldType);\n } else {\n body(`? ${compiledFieldType} : undefined`);\n }\n }\n // End object property\n body(\",\");\n }\n\n // End object\n body(\"}\");\n // End object compilation paren\n body(\")\");\n\n return body.toString();\n}\n\nfunction compileAbstractType(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n type: GraphQLAbstractType,\n fieldNodes: FieldNode[],\n originPaths: string[],\n previousPath: ObjectPath,\n errorDestination: string\n): string {\n let resolveType: GraphQLTypeResolver<any, any>;\n if (type.resolveType) {\n resolveType = type.resolveType;\n } else {\n resolveType = (value: any, context: any, info: GraphQLResolveInfo) =>\n defaultResolveTypeFn(value, context, info, type);\n }\n const typeResolverName = getTypeResolverName(type.name);\n context.typeResolvers[typeResolverName] = resolveType;\n\n const finalTypeName = \"finalType\";\n\n // Trivial types (no deferred resolvers) whose case bodies differ only in\n // the __typename literal are grouped into a single shared case that uses\n // the already computed finalType variable instead of a hardcoded string.\n const trivialGroups = new Map<string, string[]>();\n const nonTrivialCases: string[] = [];\n\n for (const objectType of context.schema.getPossibleTypes(type)) {\n const subContext = createSubCompilationContext(context);\n subContext.trivialTypeNameVar = finalTypeName;\n const object = compileType(\n subContext,\n parentType,\n objectType,\n fieldNodes,\n originPaths,\n [\"__concrete\"],\n addPath(previousPath, objectType.name, \"meta\")\n );\n if (subContext.deferred.length === 0) {\n // object was compiled with trivialTypeNameVar\n // group identical bodies to share a single case\n const group = trivialGroups.get(object) ?? [];\n group.push(objectType.name);\n trivialGroups.set(object, group);\n } else {\n nonTrivialCases.push(`case \"${objectType.name}\": {\n ${generateUniqueDeclarations(subContext)}\n const __concrete = ${object};\n ${compileDeferredFields(subContext)}\n return __concrete;\n }`);\n }\n }\n\n const trivialCases = Array.from(trivialGroups.entries()).map(\n ([sharedObj, typeNames]) => {\n const caseLabels = typeNames.map((n) => `case \"${n}\"`).join(\": \");\n return `${caseLabels}: {\n const __concrete = ${sharedObj};\n return __concrete;\n }`;\n }\n );\n\n const collectedTypes = [...nonTrivialCases, ...trivialCases].join(\"\\n\");\n const nullTypeError = `\"Runtime Object type is not a possible type for \\\\\"${type.name}\\\\\".\"`;\n\n const notPossibleTypeError =\n // eslint-disable-next-line no-template-curly-in-string\n '`Runtime Object type \"${nodeType}\" is not a possible type for \"' +\n type.name +\n '\".`';\n const noTypeError = `${finalTypeName} ? ${notPossibleTypeError} : \"Abstract type ${\n type.name\n } must resolve to an Object type at runtime for field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}. Either the ${\n type.name\n } type should provide a \\\\\"resolveType\\\\\" function or each possible types should provide an \\\\\"isTypeOf\\\\\" function.\"`;\n\n return `((nodeType, err) =>\n {\n if (err != null) {\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n \"err.message != null ? err.message : err\",\n \"err\"\n )});\n return null;\n }\n if (nodeType == null) {\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n nullTypeError\n )})\n return null;\n }\n const ${finalTypeName} = typeof nodeType === \"string\" ? nodeType : nodeType.name;\n switch(${finalTypeName}) {\n ${collectedTypes}\n default:\n ${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n previousPath,\n noTypeError\n )})\n return null;\n }\n })(\n ${GLOBAL_EXECUTION_CONTEXT}.typeResolvers.${typeResolverName}(${joinOriginPaths(\n originPaths\n )},\n ${GLOBAL_CONTEXT_NAME},\n ${getExecutionInfo(\n context,\n parentType,\n type,\n type.name,\n fieldNodes,\n previousPath\n )}))`;\n}\n\n/**\n * Compile a list transformation.\n *\n * @param {CompilationContext} context\n * @param {GraphQLObjectType} parentType type of the parent of object which contained this type\n * @param {GraphQLList<GraphQLType>} type list type being compiled\n * @param {FieldNode[]} fieldNodes\n * @param originalObjectPaths\n * @param {ObjectPath} responsePath\n * @param errorDestination\n * @returns {string} compiled list transformation\n */\nfunction compileListType(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n type: GraphQLList<GraphQLType>,\n fieldNodes: FieldNode[],\n originalObjectPaths: string[],\n responsePath: ObjectPath,\n errorDestination: string\n) {\n const name = originalObjectPaths.join(\".\");\n const listContext = createSubCompilationContext(context);\n // context depth will be mutated, so we cache the current value.\n const newDepth = ++listContext.depth;\n const fieldType = type.ofType;\n const dataBody = compileType(\n listContext,\n parentType,\n fieldType,\n fieldNodes,\n [\"__currentItem\"],\n [`${GLOBAL_PARENT_NAME}[idx${newDepth}]`],\n addPath(responsePath, \"idx\" + newDepth, \"variable\")\n );\n\n const errorMessage = `\"Expected Iterable, but did not find one for field ${\n parentType.name\n }.${getFieldNodesName(fieldNodes)}.\"`;\n const errorCase = `(${errorDestination}.push(${createErrorObject(\n context,\n fieldNodes,\n responsePath,\n errorMessage\n )}), null)`;\n const executionError = createErrorObject(\n context,\n fieldNodes,\n addPath(responsePath, \"idx\" + newDepth, \"variable\"),\n \"err.message != null ? err.message : err\",\n \"err\"\n );\n const emptyError = createErrorObject(context, fieldNodes, responsePath, '\"\"');\n const uniqueDeclarations = generateUniqueDeclarations(listContext);\n const deferredFields = compileDeferredFields(listContext);\n const itemHandler = getHoistedFunctionName(\n context,\n `${parentType.name}${originalObjectPaths.join(\"\")}MapItemHandler`\n );\n const childIndexes = getParentArgIndexes(listContext);\n listContext.hoistedFunctions.push(`\n function ${itemHandler}(${GLOBAL_EXECUTION_CONTEXT}, ${GLOBAL_PARENT_NAME}, __currentItem, ${childIndexes}) {\n ${uniqueDeclarations}\n ${GLOBAL_PARENT_NAME}[idx${newDepth}] = ${dataBody};\n ${deferredFields}\n }\n `);\n const safeMapHandler = getHoistedFunctionName(\n context,\n `${parentType.name}${originalObjectPaths.join(\"\")}MapHandler`\n );\n const parentIndexes = getParentArgIndexes(context);\n listContext.hoistedFunctions.push(`\n function ${safeMapHandler}(${GLOBAL_EXECUTION_CONTEXT}, __currentItem, idx${newDepth}, resultArray, ${parentIndexes}) {\n ${GLOBAL_RUNTIME_NAME}.handleListItemResult(${GLOBAL_EXECUTION_CONTEXT}, __currentItem,\n result => {\n ${itemHandler}(${GLOBAL_EXECUTION_CONTEXT}, resultArray, result, ${childIndexes});\n },\n err => {\n resultArray.push(null);\n if (err) {\n ${getErrorDestination(fieldType)}.push(${executionError});\n } else {\n ${getErrorDestination(fieldType)}.push(${emptyError});\n }\n }\n );\n }\n `);\n return `(typeof ${name} === \"string\" || typeof ${name}[Symbol.iterator] !== \"function\") ? ${errorCase} :\n ${GLOBAL_SAFE_MAP_NAME}(${GLOBAL_EXECUTION_CONTEXT}, ${name}, ${safeMapHandler}, ${parentIndexes})`;\n}\n\n/**\n * Calculates a GraphQLResolveInfo object for the resolver calls.\n *\n * if the resolver does not use, it returns null.\n * @param {CompilationContext} context compilation context to submit the resolveInfoResolver\n * @param parentType\n * @param fieldType\n * @param fieldName\n * @param fieldNodes\n * @param responsePath\n * @returns {string} a call to the resolve info creator or \"{}\" if unused\n */\nfunction getExecutionInfo(\n context: CompilationContext,\n parentType: GraphQLObjectType,\n fieldType: GraphQLOutputType,\n fieldName: string,\n fieldNodes: FieldNode[],\n responsePath: ObjectPath\n) {\n const resolveInfoName = createResolveInfoName(responsePath);\n const { schema, fragments, operation } = context;\n\n context.resolveInfos[resolveInfoName] = createResolveInfoThunk(\n {\n schema,\n fragments,\n operation,\n parentType,\n fieldName,\n fieldType,\n fieldNodes\n },\n context.options.resolverInfoEnricher\n );\n return `${GLOBAL_EXECUTION_CONTEXT}.resolveInfos.${resolveInfoName}(${GLOBAL_ROOT_NAME}, ${GLOBAL_VARIABLES_NAME}, ${serializeResponsePath(\n responsePath\n )})`;\n}\n\nfunction getArgumentsName(prefixName: string) {\n return `${prefixName}Args`;\n}\n\nfunction getValidArgumentsVarName(prefixName: string) {\n return `${prefixName}ValidArgs`;\n}\n\nfunction objectPath(topLevel: string, path?: ObjectPath) {\n if (!path) {\n return topLevel;\n }\n let objectPath = topLevel;\n const flattened = flattenPath(path);\n for (const section of flattened) {\n if (section.type === \"literal\") {\n objectPath += `[\"${section.key}\"]`;\n } else {\n /* istanbul ignore next */\n throw new Error(\"should only have received literal paths\");\n }\n }\n return objectPath;\n}\n\n/**\n * Returns a static object with the all the arguments needed for the resolver\n * @param context\n * @param {Arguments} args\n * @param topLevelArg name of the toplevel\n * @param validArgs\n * @param returnType\n * @param path\n * @returns {string}\n */\nfunction compileArguments(\n context: CompilationContext,\n args: Arguments,\n topLevelArg: string,\n validArgs: string,\n returnType: GraphQLOutputType,\n path: ObjectPath\n): string {\n const bind = (value: any) => {\n const key = `literal${context.literalCount.value++}`;\n context.literals[key] = value;\n return `${GLOBAL_EXECUTION_CONTEXT}.literals.${key}`;\n };\n const valuesExpression = `{${Object.keys(args.values)\n .map(\n (name) =>\n `${JSON.stringify(name)}:${compileInputValue(\n args.values[name],\n args.types[name],\n bind\n )}`\n )\n .join(\",\")}}`;\n // default to assuming arguments are valid\n let body = `\n let ${validArgs} = true;\n const ${topLevelArg} = ${valuesExpression};\n `;\n const errorDestination = getErrorDestination(returnType);\n for (const variable of args.missing) {\n const varName = variable.valueNode.name.value;\n body += `if (Object.prototype.hasOwnProperty.call(${GLOBAL_VARIABLES_NAME}, \"${varName}\")) {`;\n if (variable.argument && isNonNullType(variable.argument.definition.type)) {\n const message = `'Argument \"${\n variable.argument.definition.name\n }\" of non-null type \"${variable.argument.definition.type.toString()}\" must not be null.'`;\n body += `if (${GLOBAL_VARIABLES_NAME}['${\n variable.valueNode.name.value\n }'] == null) {\n ${errorDestination}.push(${createErrorObject(\n context,\n [variable.argument.node.value],\n path,\n message\n )});\n ${validArgs} = false;\n }`;\n }\n body += `\n ${objectPath(topLevelArg, variable.path)} = ${GLOBAL_VARIABLES_NAME}['${\n variable.valueNode.name.value\n }'];\n }`;\n // If there is no default value and no variable input\n // throw a field error\n if (\n variable.argument &&\n isNonNullType(variable.argument.definition.type) &&\n variable.argument.definition.defaultValue === undefined\n ) {\n const message = `'Argument \"${\n variable.argument.definition.name\n }\" of required type \"${variable.argument.definition.type.toString()}\" was provided the variable \"$${varName}\" which was not provided a runtime value.'`;\n body += ` else {\n ${errorDestination}.push(${createErrorObject(\n context,\n [variable.argument.node.value],\n path,\n message\n )});\n ${validArgs} = false;\n }`;\n }\n }\n return body;\n}\n\n/**\n * Safety checks for resolver execution is done via side effects every time a resolver function\n * is encountered.\n *\n * This function generates the declarations, so the side effect is valid code.\n *\n * @param {CompilationContext} context compilation context\n * @param {boolean} defaultValue usually false, meant to be true at the top level\n * @returns {string} a list of declarations eg: var __validNode0 = false;\\nvar __validNode1 = false;\n */\nfunction generateUniqueDeclarations(\n context: CompilationContext,\n defaultValue = false\n) {\n return context.deferred\n .map(\n (_, idx) => `\n let ${SAFETY_CHECK_PREFIX}${idx} = ${defaultValue};\n `\n )\n .join(\"\\n\");\n}\n\nfunction createSubCompilationContext(\n context: CompilationContext\n): CompilationContext {\n return { ...context, deferred: [] };\n}\n\nexport function isPromise(value: any): value is Promise<any> {\n return (\n value != null &&\n typeof value === \"object\" &&\n typeof value.then === \"function\"\n );\n}\n\nexport function isPromiseInliner(value: string): string {\n return `${GLOBAL_RUNTIME_NAME}.isPromise(${value})`;\n}\n\n/**\n * Serializes the response path for an error response.\n *\n * @param {ObjectPath | undefined} path response path of a field\n * @returns {string} filtered serialization of the response path\n */\nfunction serializeResponsePathAsArray(path: ObjectPath) {\n const flattened = flattenPath(path);\n let src = \"[\";\n for (let i = flattened.length - 1; i >= 0; i--) {\n // meta is only used for the function name\n if (flattened[i].type === \"meta\") {\n continue;\n }\n src +=\n flattened[i].type === \"literal\"\n ? `\"${flattened[i].key}\",`\n : `${flattened[i].key},`;\n }\n return src + \"]\";\n}\n\nfunction getErrorDestination(type: GraphQLType): string {\n return isNonNullType(type) ? GLOBAL_NULL_ERRORS_NAME : GLOBAL_ERRORS_NAME;\n}\n\nfunction createResolveInfoName(path: ObjectPath) {\n return (\n flattenPath(path)\n .map((p) => p.key)\n .join(\"_\") + \"Info\"\n );\n}\n\n/**\n * Serializes the response path for the resolve info function\n * @param {ObjectPath | undefined} path response path of a field\n * @returns {string} filtered serialization of the response path\n */\nfunction serializeResponsePath(path: ObjectPath | undefined): string {\n if (!path) {\n return \"undefined\";\n }\n if (path.type === \"meta\") {\n // meta is ignored while serializing for the resolve info functions\n return serializeResponsePath(path.prev);\n }\n const literalValue = `\"${path.key}\"`;\n return `{\n key: ${path.type === \"literal\" ? literalValue : path.key},\n prev: ${serializeResponsePath(path.prev)}\n }`;\n}\n\n/**\n * Returned a bound serialization function of a scalar or enum\n * @param {GraphQLScalarType | GraphQLEnumType} scalar\n * @param customSerializer custom serializer\n * @returns {(v: any) => any} bound serializationFunction\n */\nfunction getSerializer(\n scalar: GraphQLScalarType | GraphQLEnumType,\n customSerializer?: GraphQLScalarSerializer<any>\n) {\n const { name } = scalar;\n const serialize =\n customSerializer || ((val: any) => coerceOutputValue(scalar, val));\n return function leafSerializer(\n context: ExecutionContext,\n v: any,\n onError: (c: ExecutionContext, msg: string, ...idx: number[]) => void,\n ...idx: number[]\n ) {\n try {\n const value = serialize(v);\n if (isInvalid(value)) {\n onError(\n context,\n `Expected a value of type \"${name}\" but received: ${v}`,\n ...idx\n );\n return null;\n }\n return value;\n } catch (e: any) {\n onError(\n context,\n (e && e.message) ||\n `Expected a value of type \"${name}\" but received an Error`,\n ...idx\n );\n return null;\n }\n };\n}\n\n/**\n * Default abstract type resolver.\n *\n * It only handle sync type resolving.\n * @param value\n * @param contextValue\n * @param {GraphQLResolveInfo} info\n * @param {GraphQLAbstractType} abstractType\n * @returns {string}\n */\nfunction defaultResolveTypeFn(\n value: any,\n contextValue: any,\n info: GraphQLResolveInfo,\n abstractType: GraphQLAbstractType\n): string {\n // First, look for `__typename`.\n if (\n value != null &&\n typeof value === \"object\" &&\n typeof value.__typename === \"string\"\n ) {\n return value.__typename;\n }\n\n // Otherwise, test each possible type.\n const possibleTypes = info.schema.getPossibleTypes(abstractType);\n for (const type of possibleTypes) {\n if (type.isTypeOf) {\n const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n if (isPromise(isTypeOfResult)) {\n throw new Error(\n `Promises are not supported for resolving type of ${value}`\n );\n } else if (isTypeOfResult) {\n return type.name;\n }\n }\n }\n\n throw new Error(\n `Could not resolve the object type in possible types of ${abstractType.name} for the value: ` +\n inspect(value)\n );\n}\n\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n */\nexport function buildCompilationContext(\n schema: GraphQLSchema,\n document: DocumentNode,\n options: CompilerOptions,\n operationName?: string\n): CompilationContext {\n const errors: GraphQLError[] = [];\n let operation: OperationDefinitionNode | undefined = undefined;\n let hasMultipleAssumedOperations = false;\n const fragments: { [key: string]: FragmentDefinitionNode } =\n Object.create(null);\n for (const definition of document.definitions) {\n switch (definition.kind) {\n case Kind.OPERATION_DEFINITION:\n if (!operationName && operation) {\n hasMultipleAssumedOperations = true;\n } else if (\n !operationName ||\n (definition.name && definition.name.value === operationName)\n ) {\n operation = definition;\n }\n break;\n case Kind.FRAGMENT_DEFINITION:\n fragments[definition.name.value] = definition;\n break;\n }\n }\n\n if (!operation) {\n if (operationName) {\n throw new GraphQLError(`Unknown operation named \"${operationName}\".`);\n } else {\n throw new GraphQLError(\"Must provide an operation.\");\n }\n } else if (hasMultipleAssumedOperations) {\n throw new GraphQLError(\n \"Must provide operation name if query contains multiple operations.\"\n );\n }\n\n return {\n schema,\n fragments,\n rootValue: null,\n contextValue: null,\n operation,\n options,\n resolvers: {},\n serializers: {},\n typeResolvers: {},\n isTypeOfs: {},\n resolveInfos: {},\n literals: {},\n literalCount: { value: 0 },\n hoistedFunctions: [],\n hoistedFunctionNames: new Map(),\n leafErrHandlerCache: new Map(),\n deferred: [],\n depth: -1,\n variableValues: {},\n errors\n } as unknown as CompilationContext;\n}\n\nfunction getFieldNodesName(nodes: FieldNode[]) {\n return nodes.length > 1\n ? \"(\" + nodes.map(({ name }) => name.value).join(\",\") + \")\"\n : nodes[0].name.value;\n}\n\nfunction getHoistedFunctionName(context: CompilationContext, name: string) {\n const count = context.hoistedFunctionNames.get(name);\n if (count === undefined) {\n context.hoistedFunctionNames.set(name, 0);\n return name;\n }\n context.hoistedFunctionNames.set(name, count + 1);\n return `${name}${count + 1}`;\n}\n\nfunction createErrorObject(\n context: CompilationContext,\n nodes: ASTNode[],\n path: ObjectPath,\n message: string,\n originalError?: string\n): string {\n return `new ${GRAPHQL_ERROR}(${message},\n ${JSON.stringify(computeLocations(nodes))},\n ${serializeResponsePathAsArray(path)},\n ${originalError || \"undefined\"},\n ${context.options.disablingCapturingStackErrors ? \"true\" : \"false\"})`;\n}\n\nfunction getResolverName(parentName: string, name: string) {\n return parentName + name + \"Resolver\";\n}\n\nfunction getTypeResolverName(name: string) {\n return name + \"TypeResolver\";\n}\n\nfunction getSerializerName(name: string) {\n return name + \"Serializer\";\n}\n\nfunction normalizeErrors(err: Error[] | Error): GraphQLError[] {\n if (Array.isArray(err)) {\n return err.map((e) => normalizeError(e));\n }\n return [normalizeError(err)];\n}\n\nfunction normalizeError(err: Error): GraphQLError {\n return err instanceof GraphQLError\n ? err\n : new (GraphqlJitError as any)(\n err.message,\n (err as any).locations,\n (err as any).path,\n err\n );\n}\n\n/**\n * Returns true if a value is undefined, or NaN.\n */\nfunction isInvalid(value: any): boolean {\n // eslint-disable-next-line no-self-compare\n return value === undefined || value !== value;\n}\n\nfunction getParentArgIndexes(context: CompilationContext) {\n let args = \"\";\n for (let i = 0; i <= context.depth; ++i) {\n if (i > 0) {\n args += \", \";\n }\n args += `idx${i}`;\n }\n return args;\n}\n\nfunction getJsFieldName(fieldName: string) {\n return `${LOCAL_JS_FIELD_NAME_PREFIX}${fieldName}`;\n}\n\nexport function isAsyncIterable<T = unknown>(\n val: unknown\n): val is AsyncIterableIterator<T> {\n return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\n\nfunction compileSubscriptionOperation(\n context: CompilationContext,\n type: GraphQLObjectType,\n fieldMap: FieldsAndNodes,\n queryFn: CompiledQuery[\"query\"]\n) {\n const fieldNodes = Object.values(fieldMap)[0];\n const fieldNode = fieldNodes[0];\n const fieldName = fieldNode.name.value;\n\n const field = resolveFieldDef(context, type, fieldNodes);\n\n if (!field) {\n throw new GraphQLError(\n `The subscription field \"${fieldName}\" is not defined.`,\n getGraphQLErrorOptions(fieldNodes)\n );\n }\n\n const responsePath = addPath(undefined, fieldName);\n const resolveInfoName = createResolveInfoName(responsePath);\n\n const subscriber = field.subscribe;\n\n async function executeSubscription(executionContext: ExecutionContext) {\n const resolveInfo = executionContext.resolveInfos[resolveInfoName](\n executionContext.rootValue,\n executionContext.variables,\n responsePath\n );\n\n try {\n const eventStream = await subscriber?.(\n executionContext.rootValue,\n executionContext.variables,\n executionContext.context,\n resolveInfo\n );\n if (eventStream instanceof Error) {\n throw eventStream;\n }\n return eventStream;\n } catch (error) {\n throw locatedError(\n error,\n resolveInfo.fieldNodes,\n responsePathAsArray(resolveInfo.path)\n );\n }\n }\n\n async function createSourceEventStream(executionContext: ExecutionContext) {\n try {\n const eventStream = await executeSubscription(executionContext);\n\n // Assert field returned an event stream, otherwise yield an error.\n if (!isAsyncIterable(eventStream)) {\n throw new Error(\n \"Subscription field must return Async Iterable. \" +\n `Received: ${inspect(eventStream)}.`\n );\n }\n\n return eventStream;\n } catch (error) {\n // If it is a GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n // Otherwise treat the error as a system-class error and re-throw it.\n if (error instanceof GraphQLError) {\n return { errors: [error] };\n }\n throw error;\n }\n }\n\n return async function subscribe(executionContext: ExecutionContext) {\n const resultOrStream = await createSourceEventStream(executionContext);\n\n if (!isAsyncIterable(resultOrStream)) {\n return resultOrStream;\n }\n\n // For each payload yielded from a subscription, map it over the normal\n // GraphQL `execute` function, with `payload` as the rootValue.\n // This implements the \"MapSourceToResponseEvent\" algorithm described in\n // the GraphQL specification. The `execute` function provides the\n // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n // We use our `query` function in place of `execute`\n const mapSourceToResponse = (payload: any) =>\n queryFn(payload, executionContext.context, executionContext.variables);\n\n return mapAsyncIterator(resultOrStream, mapSourceToResponse);\n };\n}\n\nfunction createBoundSubscribe(\n compilationContext: CompilationContext,\n document: DocumentNode,\n func: (\n context: ExecutionContext\n ) => Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult>,\n getVariableValues: (inputs: { [key: string]: any }) => CoercedVariableValues,\n operationName: string | undefined\n): CompiledQuery[\"subscribe\"] {\n const {\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals\n } = compilationContext;\n const trimmer = createNullTrimmer(compilationContext);\n const fnName = operationName || \"subscribe\";\n\n const ret = {\n async [fnName](\n rootValue: any,\n context: any,\n variables: Maybe<{ [key: string]: any }>\n ): Promise<AsyncIterableIterator<ExecutionResult> | ExecutionResult> {\n // this can be shared across in a batch request\n const parsedVariables = getVariableValues(variables || {});\n\n // Return early errors if variable coercing failed.\n if (failToParseVariables(parsedVariables)) {\n return { errors: parsedVariables.errors };\n }\n\n const executionContext: ExecutionContext = {\n rootValue,\n context,\n variables: parsedVariables.coerced,\n inspect,\n GraphQLError: GraphqlJitError,\n resolvers,\n typeResolvers,\n isTypeOfs,\n serializers,\n resolveInfos,\n literals,\n trimmer,\n rt: jitRuntime,\n promiseCounter: 0,\n nullErrors: [],\n errors: [],\n data: {}\n };\n\n // eslint-disable-next-line no-useless-call\n return func.call(null, executionContext);\n }\n };\n\n return ret[fnName];\n}\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator<T, U, R = undefined>(\n iterable: AsyncGenerator<T, R, undefined> | AsyncIterable<T>,\n callback: (value: T) => U | Promise<U>\n): AsyncGenerator<U, R, undefined> {\n const iterator = iterable[Symbol.asyncIterator]();\n\n async function mapResult(\n result: IteratorResult<T, R>\n ): Promise<IteratorResult<U, R>> {\n if (result.done) {\n return result;\n }\n\n try {\n return { value: await callback(result.value), done: false };\n } catch (error) {\n if (typeof iterator.return === \"function\") {\n try {\n await iterator.return();\n } catch (e) {\n /* ignore error */\n }\n }\n throw error;\n }\n }\n\n return {\n async next() {\n return mapResult(await iterator.next());\n },\n async return(): Promise<IteratorResult<U, R>> {\n return typeof iterator.return === \"function\"\n ? mapResult(await iterator.return())\n : { value: undefined as unknown as R, done: true };\n },\n async throw(error?: Error) {\n return typeof iterator.throw === \"function\"\n ? mapResult(await iterator.throw(error))\n : Promise.reject(error);\n },\n [Symbol.asyncIterator]() {\n return this;\n }\n };\n}\n\nfunction joinOriginPaths(originPaths: string[]) {\n return originPaths.join(\".\");\n}\n\nfunction isNotNull<T>(it: T): it is Exclude<T, null | undefined> {\n return it != null;\n}\n"]}
@@ -7,3 +7,8 @@ export type NullTrimmer = (data: any, errors: GraphQLError[]) => any;
7
7
  * @returns {(data: any, errors: GraphQLError[]) => {data: any; errors: GraphQLError[]}}
8
8
  */
9
9
  export declare function createNullTrimmer(compilationContext: CompilationContext): NullTrimmer;
10
+ /**
11
+ * Creates a check for whether any of the field errors in non null fields
12
+ * propagate to the root, which makes the whole response `null`.
13
+ */
14
+ export declare function createRootNullChecker(compilationContext: CompilationContext): (errors: GraphQLError[]) => boolean;
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.createNullTrimmer = createNullTrimmer;
7
+ exports.createRootNullChecker = createRootNullChecker;
7
8
  const graphql_1 = require("graphql");
8
9
  const lodash_merge_1 = __importDefault(require("lodash.merge"));
9
10
  const ast_js_1 = require("./ast.js");
@@ -16,6 +17,14 @@ const compat_js_1 = require("./compat.js");
16
17
  function createNullTrimmer(compilationContext) {
17
18
  return trimData(parseQueryNullables(compilationContext));
18
19
  }
20
+ /**
21
+ * Creates a check for whether any of the field errors in non null fields
22
+ * propagate to the root, which makes the whole response `null`.
23
+ */
24
+ function createRootNullChecker(compilationContext) {
25
+ const nullable = parseQueryNullables(compilationContext);
26
+ return (errors) => errors.some(({ path }) => path != null && findNullableAncestor(nullable, path).length === 0);
27
+ }
19
28
  /**
20
29
  * Trims a data response according to the field errors in non null fields.
21
30
  *
@@ -1 +1 @@
1
- {"version":3,"file":"non-null.js","sourceRoot":"","sources":["../../src/non-null.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type ExecutionResult,\n type FieldNode,\n type GraphQLError,\n type GraphQLType,\n isListType,\n isNonNullType,\n isObjectType,\n isAbstractType\n} from \"graphql\";\nimport merge from \"lodash.merge\";\nimport { collectFields, collectSubfields, resolveFieldDef } from \"./ast.js\";\nimport { getOperationRootType } from \"./compat.js\";\nimport { type CompilationContext } from \"./execution.js\";\n\ninterface QueryMetadata {\n isNullable: boolean;\n children: { [key: string]: QueryMetadata };\n}\n\nexport type NullTrimmer = (data: any, errors: GraphQLError[]) => any;\n\n/**\n *\n * @param {CompilationContext} compilationContext\n * @returns {(data: any, errors: GraphQLError[]) => {data: any; errors: GraphQLError[]}}\n */\nexport function createNullTrimmer(\n compilationContext: CompilationContext\n): NullTrimmer {\n return trimData(parseQueryNullables(compilationContext));\n}\n\n/**\n * Trims a data response according to the field errors in non null fields.\n *\n * Errors are filtered to ensure a single field error per field.\n *\n * @param {QueryMetadata} nullable Description of the query and their nullability\n * @returns {(data: any, errors: GraphQLError[]) => {data: any; errors: GraphQLError[]}}\n * the trimmed data and a filtered list of errors.\n */\nfunction trimData(nullable: QueryMetadata): NullTrimmer {\n return (data: any, errors: GraphQLError[]): ExecutionResult => {\n const finalErrors = [];\n const processedErrors = new Set<string>();\n for (const error of errors) {\n if (!error.path) {\n // should never happen, it is a bug if it does\n throw new Error(\"no path available for tree trimming\");\n }\n if (processedErrors.has(error.path.join(\".\"))) {\n // there can be multiple field errors in some scenario\n // there is no need to continue processing and it should not be part of the final response\n continue;\n }\n const ancestors = findNullableAncestor(nullable, error.path);\n // The top level field is always nullable\n // http://facebook.github.io/graphql/June2018/#sec-Errors-and-Non-Nullability\n //\n // There is no mention if the following errors need to be present in the response.\n // For now we assume this is not needed.\n if (ancestors.length === 0) {\n data = null;\n finalErrors.push(error);\n break;\n }\n removeBranch(data, ancestors);\n processedErrors.add(error.path.join(\".\"));\n finalErrors.push(error);\n }\n return { data, errors: finalErrors };\n };\n}\n\n/**\n * Removes a branch out of the response data by mutating the original object.\n *\n * @param tree response data\n * @param {Array<number | string>} branch array with the path that should be trimmed\n */\nfunction removeBranch(tree: any, branch: Array<number | string>): void {\n for (let i = 0; i < branch.length - 1; ++i) {\n // if ancestor has already been removed, there's nothing to do\n if (tree[branch[i]] === null) {\n return;\n }\n tree = tree[branch[i]];\n }\n const toNull = branch[branch.length - 1];\n tree[toNull] = null;\n}\n\n/**\n * Name of the child used in array to contain the description.\n *\n * Only used for list to contain the child description.\n */\nconst ARRAY_CHILD_NAME = \"index\";\n\n/**\n *\n * @param {QueryMetadata} nullable Description of the query and their nullability\n * @param {ReadonlyArray<string | number>} paths path of the error location\n * @returns {Array<string | number>} path of the branch to be made null\n */\nfunction findNullableAncestor(\n nullable: QueryMetadata,\n paths: ReadonlyArray<string | number>\n): Array<string | number> {\n let lastNullable = 0;\n for (let i = 0; i < paths.length; ++i) {\n const path = paths[i];\n const child =\n nullable.children[typeof path === \"string\" ? path : ARRAY_CHILD_NAME];\n if (!child) {\n // Stopping the search since we reached a leaf node,\n // the loop should be on its final iteration\n break;\n }\n if (child.isNullable) {\n lastNullable = i + 1;\n }\n nullable = child;\n }\n return paths.slice(0, lastNullable);\n}\n\n/**\n * Produce a description of the query regarding its nullability.\n *\n * Leaf nodes are not present in this representation since they are not\n * interesting for removing branches of the response tree.\n *\n * The structure is recursive like the query.\n * @param {CompilationContext} compilationContext Execution content\n * @returns {QueryMetadata} description of the query\n */\nfunction parseQueryNullables(\n compilationContext: CompilationContext\n): QueryMetadata {\n const type = getOperationRootType(\n compilationContext.schema,\n compilationContext.operation\n );\n const fields = collectFields(\n compilationContext,\n type,\n compilationContext.operation.selectionSet,\n Object.create(null),\n Object.create(null)\n );\n const properties = Object.create(null);\n for (const responseName of Object.keys(fields)) {\n const fieldType = resolveFieldDef(\n compilationContext,\n type,\n fields[responseName]\n );\n if (!fieldType) {\n // if field does not exist, it should be ignored for compatibility concerns.\n // Usually, validation would stop it before getting here but this could be an old query\n continue;\n }\n const property = transformNode(\n compilationContext,\n fields[responseName],\n fieldType.type\n );\n if (property != null) {\n properties[responseName] = property;\n }\n }\n return {\n isNullable: true,\n children: properties\n };\n}\n\n/**\n * Processes a single node to produce a description of itself and its children.\n *\n * Leaf nodes are ignore and removed from the description\n * @param {CompilationContext} compilationContext\n * @param {FieldNode[]} fieldNodes list of fields\n * @param {GraphQLType} type Current type being processed.\n * @returns {QueryMetadata | null} null if node is a leaf, otherwise a description of the node and its children.\n */\nfunction transformNode(\n compilationContext: CompilationContext,\n fieldNodes: FieldNode[],\n type: GraphQLType\n): QueryMetadata | null {\n if (isNonNullType(type)) {\n const nullable = transformNode(compilationContext, fieldNodes, type.ofType);\n if (nullable != null) {\n nullable.isNullable = false;\n return nullable;\n }\n return null;\n }\n if (isObjectType(type)) {\n const subfields = collectSubfields(compilationContext, type, fieldNodes);\n const properties = Object.create(null);\n for (const responseName of Object.keys(subfields)) {\n const fieldType = resolveFieldDef(\n compilationContext,\n type,\n subfields[responseName]\n );\n if (!fieldType) {\n // if field does not exist, it should be ignored for compatibility concerns.\n // Usually, validation would stop it before getting here but this could be an old query\n continue;\n }\n const property = transformNode(\n compilationContext,\n subfields[responseName],\n fieldType.type\n );\n if (property != null) {\n properties[responseName] = property;\n }\n }\n return {\n isNullable: true,\n children: properties\n };\n }\n if (isListType(type)) {\n const child = transformNode(compilationContext, fieldNodes, type.ofType);\n if (child != null) {\n return {\n isNullable: true,\n children: { [ARRAY_CHILD_NAME]: child }\n };\n }\n\n return {\n isNullable: true,\n children: {}\n };\n }\n if (isAbstractType(type)) {\n return compilationContext.schema.getPossibleTypes(type).reduce(\n (res, t) => {\n const property = transformNode(compilationContext, fieldNodes, t);\n if (property != null) {\n // We do a deep merge because children can have subset of properties\n // TODO: Possible bug: two object with different nullability on objects.\n res.children = merge(res.children, property.children);\n }\n return res;\n },\n {\n isNullable: true,\n children: {}\n }\n );\n }\n\n // Scalars and enum are ignored since they are leaf values\n return null;\n}\n"]}
1
+ {"version":3,"file":"non-null.js","sourceRoot":"","sources":["../../src/non-null.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n type ExecutionResult,\n type FieldNode,\n type GraphQLError,\n type GraphQLType,\n isListType,\n isNonNullType,\n isObjectType,\n isAbstractType\n} from \"graphql\";\nimport merge from \"lodash.merge\";\nimport { collectFields, collectSubfields, resolveFieldDef } from \"./ast.js\";\nimport { getOperationRootType } from \"./compat.js\";\nimport { type CompilationContext } from \"./execution.js\";\n\ninterface QueryMetadata {\n isNullable: boolean;\n children: { [key: string]: QueryMetadata };\n}\n\nexport type NullTrimmer = (data: any, errors: GraphQLError[]) => any;\n\n/**\n *\n * @param {CompilationContext} compilationContext\n * @returns {(data: any, errors: GraphQLError[]) => {data: any; errors: GraphQLError[]}}\n */\nexport function createNullTrimmer(\n compilationContext: CompilationContext\n): NullTrimmer {\n return trimData(parseQueryNullables(compilationContext));\n}\n\n/**\n * Creates a check for whether any of the field errors in non null fields\n * propagate to the root, which makes the whole response `null`.\n */\nexport function createRootNullChecker(\n compilationContext: CompilationContext\n): (errors: GraphQLError[]) => boolean {\n const nullable = parseQueryNullables(compilationContext);\n return (errors) =>\n errors.some(\n ({ path }) =>\n path != null && findNullableAncestor(nullable, path).length === 0\n );\n}\n\n/**\n * Trims a data response according to the field errors in non null fields.\n *\n * Errors are filtered to ensure a single field error per field.\n *\n * @param {QueryMetadata} nullable Description of the query and their nullability\n * @returns {(data: any, errors: GraphQLError[]) => {data: any; errors: GraphQLError[]}}\n * the trimmed data and a filtered list of errors.\n */\nfunction trimData(nullable: QueryMetadata): NullTrimmer {\n return (data: any, errors: GraphQLError[]): ExecutionResult => {\n const finalErrors = [];\n const processedErrors = new Set<string>();\n for (const error of errors) {\n if (!error.path) {\n // should never happen, it is a bug if it does\n throw new Error(\"no path available for tree trimming\");\n }\n if (processedErrors.has(error.path.join(\".\"))) {\n // there can be multiple field errors in some scenario\n // there is no need to continue processing and it should not be part of the final response\n continue;\n }\n const ancestors = findNullableAncestor(nullable, error.path);\n // The top level field is always nullable\n // http://facebook.github.io/graphql/June2018/#sec-Errors-and-Non-Nullability\n //\n // There is no mention if the following errors need to be present in the response.\n // For now we assume this is not needed.\n if (ancestors.length === 0) {\n data = null;\n finalErrors.push(error);\n break;\n }\n removeBranch(data, ancestors);\n processedErrors.add(error.path.join(\".\"));\n finalErrors.push(error);\n }\n return { data, errors: finalErrors };\n };\n}\n\n/**\n * Removes a branch out of the response data by mutating the original object.\n *\n * @param tree response data\n * @param {Array<number | string>} branch array with the path that should be trimmed\n */\nfunction removeBranch(tree: any, branch: Array<number | string>): void {\n for (let i = 0; i < branch.length - 1; ++i) {\n // if ancestor has already been removed, there's nothing to do\n if (tree[branch[i]] === null) {\n return;\n }\n tree = tree[branch[i]];\n }\n const toNull = branch[branch.length - 1];\n tree[toNull] = null;\n}\n\n/**\n * Name of the child used in array to contain the description.\n *\n * Only used for list to contain the child description.\n */\nconst ARRAY_CHILD_NAME = \"index\";\n\n/**\n *\n * @param {QueryMetadata} nullable Description of the query and their nullability\n * @param {ReadonlyArray<string | number>} paths path of the error location\n * @returns {Array<string | number>} path of the branch to be made null\n */\nfunction findNullableAncestor(\n nullable: QueryMetadata,\n paths: ReadonlyArray<string | number>\n): Array<string | number> {\n let lastNullable = 0;\n for (let i = 0; i < paths.length; ++i) {\n const path = paths[i];\n const child =\n nullable.children[typeof path === \"string\" ? path : ARRAY_CHILD_NAME];\n if (!child) {\n // Stopping the search since we reached a leaf node,\n // the loop should be on its final iteration\n break;\n }\n if (child.isNullable) {\n lastNullable = i + 1;\n }\n nullable = child;\n }\n return paths.slice(0, lastNullable);\n}\n\n/**\n * Produce a description of the query regarding its nullability.\n *\n * Leaf nodes are not present in this representation since they are not\n * interesting for removing branches of the response tree.\n *\n * The structure is recursive like the query.\n * @param {CompilationContext} compilationContext Execution content\n * @returns {QueryMetadata} description of the query\n */\nfunction parseQueryNullables(\n compilationContext: CompilationContext\n): QueryMetadata {\n const type = getOperationRootType(\n compilationContext.schema,\n compilationContext.operation\n );\n const fields = collectFields(\n compilationContext,\n type,\n compilationContext.operation.selectionSet,\n Object.create(null),\n Object.create(null)\n );\n const properties = Object.create(null);\n for (const responseName of Object.keys(fields)) {\n const fieldType = resolveFieldDef(\n compilationContext,\n type,\n fields[responseName]\n );\n if (!fieldType) {\n // if field does not exist, it should be ignored for compatibility concerns.\n // Usually, validation would stop it before getting here but this could be an old query\n continue;\n }\n const property = transformNode(\n compilationContext,\n fields[responseName],\n fieldType.type\n );\n if (property != null) {\n properties[responseName] = property;\n }\n }\n return {\n isNullable: true,\n children: properties\n };\n}\n\n/**\n * Processes a single node to produce a description of itself and its children.\n *\n * Leaf nodes are ignore and removed from the description\n * @param {CompilationContext} compilationContext\n * @param {FieldNode[]} fieldNodes list of fields\n * @param {GraphQLType} type Current type being processed.\n * @returns {QueryMetadata | null} null if node is a leaf, otherwise a description of the node and its children.\n */\nfunction transformNode(\n compilationContext: CompilationContext,\n fieldNodes: FieldNode[],\n type: GraphQLType\n): QueryMetadata | null {\n if (isNonNullType(type)) {\n const nullable = transformNode(compilationContext, fieldNodes, type.ofType);\n if (nullable != null) {\n nullable.isNullable = false;\n return nullable;\n }\n return null;\n }\n if (isObjectType(type)) {\n const subfields = collectSubfields(compilationContext, type, fieldNodes);\n const properties = Object.create(null);\n for (const responseName of Object.keys(subfields)) {\n const fieldType = resolveFieldDef(\n compilationContext,\n type,\n subfields[responseName]\n );\n if (!fieldType) {\n // if field does not exist, it should be ignored for compatibility concerns.\n // Usually, validation would stop it before getting here but this could be an old query\n continue;\n }\n const property = transformNode(\n compilationContext,\n subfields[responseName],\n fieldType.type\n );\n if (property != null) {\n properties[responseName] = property;\n }\n }\n return {\n isNullable: true,\n children: properties\n };\n }\n if (isListType(type)) {\n const child = transformNode(compilationContext, fieldNodes, type.ofType);\n if (child != null) {\n return {\n isNullable: true,\n children: { [ARRAY_CHILD_NAME]: child }\n };\n }\n\n return {\n isNullable: true,\n children: {}\n };\n }\n if (isAbstractType(type)) {\n return compilationContext.schema.getPossibleTypes(type).reduce(\n (res, t) => {\n const property = transformNode(compilationContext, fieldNodes, t);\n if (property != null) {\n // We do a deep merge because children can have subset of properties\n // TODO: Possible bug: two object with different nullability on objects.\n res.children = merge(res.children, property.children);\n }\n return res;\n },\n {\n isNullable: true,\n children: {}\n }\n );\n }\n\n // Scalars and enum are ignored since they are leaf values\n return null;\n}\n"]}