{"version":3,"sources":["../src/compat.ts"],"sourcesContent":["import {\n  GraphQLSchema,\n  GraphQLError,\n  versionInfo,\n  type FieldNode,\n  type GraphQLField,\n  type ASTNode,\n  type OperationDefinitionNode,\n  type GraphQLObjectType,\n  type GraphQLFormattedError\n} from \"graphql\";\nimport { type Maybe } from \"./types.js\";\nimport * as errorUtilities from \"graphql/error/index.js\";\nimport * as utilities from \"graphql/utilities/index.js\";\nimport { type CompilationContext } from \"./execution.js\";\nimport * as execute from \"graphql/execution/execute.js\";\n\n/**\n * A helper file to support backward compatibility for different versions of graphql-js.\n */\n\n/**\n * v15 does not have schema.getRootType\n * v16 has both\n * v17 will not have getOperationRootType\n *\n * To support all these 3 versions of graphql-js, at least for migration, this helper\n * would be useful.\n *\n * This can be removed once we drop support for v15.\n *\n * GraphQL v17 would remove getOperationRootType.\n */\nexport function getOperationRootType(\n  schema: GraphQLSchema,\n  operation: OperationDefinitionNode\n): GraphQLObjectType {\n  if (versionInfo.major < 16) {\n    return (utilities as any).getOperationRootType(schema, operation);\n  }\n\n  const type = (schema as any).getRootType(operation.operation);\n\n  if (!type) {\n    throw new Error(`No root type for operation ${operation.operation}`);\n  }\n\n  return type;\n}\n\n/**\n * v16 and lower versions don't have .toJSON method on GraphQLError\n * v17 does have .toJSON and doesn't have \"formatError\" export anymore\n */\nexport function formatError(error: GraphQLError): GraphQLFormattedError {\n  if (versionInfo.major < 16) {\n    return (errorUtilities as any).formatError(error);\n  }\n\n  return (error as any).toJSON();\n}\n\n/**\n * v17 dropped support for positional arguments in GraphQLError constructor\n * https://github.com/graphql/graphql-js/pull/3577\n */\nexport function getGraphQLErrorOptions(\n  nodes: Maybe<ReadonlyArray<ASTNode> | ASTNode>\n): ConstructorParameters<typeof GraphQLError>[1] {\n  if (versionInfo.major < 16) {\n    return nodes as any;\n  }\n\n  return { nodes } as any;\n}\n\n/**\n * Resolves the field on the given source object. In particular, this\n * figures out the value that the field returns by calling its resolve function,\n * then calls completeValue to complete promises, serialize scalars, or execute\n * the sub-selection-set for objects.\n *\n * v15 has getFieldDef that accepts field name\n * v16 has getFieldDef that accepts field node\n * v17 drops getFieldDef support and adds getField method\n */\nexport function resolveFieldDef(\n  compilationContext: CompilationContext,\n  parentType: GraphQLObjectType,\n  fieldNodes: FieldNode[]\n): Maybe<GraphQLField<any, any>> {\n  const fieldNode = fieldNodes[0];\n\n  if (versionInfo.major < 16) {\n    const fieldName = fieldNode.name.value;\n    return (execute as any).getFieldDef(\n      compilationContext.schema,\n      parentType,\n      fieldName as any\n    );\n  }\n\n  if (versionInfo.major < 17) {\n    return (execute as any).getFieldDef(\n      compilationContext.schema,\n      parentType,\n      fieldNode as any\n    );\n  }\n\n  return (compilationContext.schema as any).getField(\n    parentType,\n    fieldNode.name.value\n  );\n}\n"],"mappings":"AAAA;AAAA,EAGE;AAAA,OAOK;AAEP,YAAY,oBAAoB;AAChC,YAAY,eAAe;AAE3B,YAAY,aAAa;AAkBlB,SAAS,qBACd,QACA,WACmB;AACnB,MAAI,YAAY,QAAQ,IAAI;AAC1B,WAAQ,UAAkB,qBAAqB,QAAQ,SAAS;AAAA,EAClE;AAEA,QAAM,OAAQ,OAAe,YAAY,UAAU,SAAS;AAE5D,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,8BAA8B,UAAU,SAAS,EAAE;AAAA,EACrE;AAEA,SAAO;AACT;AAMO,SAAS,YAAY,OAA4C;AACtE,MAAI,YAAY,QAAQ,IAAI;AAC1B,WAAQ,eAAuB,YAAY,KAAK;AAAA,EAClD;AAEA,SAAQ,MAAc,OAAO;AAC/B;AAMO,SAAS,uBACd,OAC+C;AAC/C,MAAI,YAAY,QAAQ,IAAI;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO,EAAE,MAAM;AACjB;AAYO,SAAS,gBACd,oBACA,YACA,YAC+B;AAC/B,QAAM,YAAY,WAAW,CAAC;AAE9B,MAAI,YAAY,QAAQ,IAAI;AAC1B,UAAM,YAAY,UAAU,KAAK;AACjC,WAAQ,QAAgB;AAAA,MACtB,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,MAAI,YAAY,QAAQ,IAAI;AAC1B,WAAQ,QAAgB;AAAA,MACtB,mBAAmB;AAAA,MACnB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAQ,mBAAmB,OAAe;AAAA,IACxC;AAAA,IACA,UAAU,KAAK;AAAA,EACjB;AACF;","names":[]}