{"version":3,"file":"mapSchemaConfig.js","sourceRoot":"","sources":["../../src/utilities/mapSchemaConfig.ts"],"names":[],"mappings":"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","sourcesContent":["import { inspect } from '../jsutils/inspect.ts';\nimport { invariant } from '../jsutils/invariant.ts';\nimport type { Maybe } from '../jsutils/Maybe.ts';\n\nimport type {\n  GraphQLArgumentNormalizedConfig,\n  GraphQLEnumTypeNormalizedConfig,\n  GraphQLEnumValueConfig,\n  GraphQLFieldNormalizedConfig,\n  GraphQLFieldNormalizedConfigArgumentMap,\n  GraphQLFieldNormalizedConfigMap,\n  GraphQLInputFieldConfig,\n  GraphQLInputObjectTypeNormalizedConfig,\n  GraphQLInterfaceTypeNormalizedConfig,\n  GraphQLNamedType,\n  GraphQLObjectTypeNormalizedConfig,\n  GraphQLScalarTypeNormalizedConfig,\n  GraphQLType,\n  GraphQLUnionTypeNormalizedConfig,\n} from '../type/definition.ts';\nimport {\n  GraphQLEnumType,\n  GraphQLInputObjectType,\n  GraphQLInterfaceType,\n  GraphQLList,\n  GraphQLNonNull,\n  GraphQLObjectType,\n  GraphQLScalarType,\n  GraphQLUnionType,\n  isEnumType,\n  isInputObjectType,\n  isInterfaceType,\n  isListType,\n  isNonNullType,\n  isObjectType,\n  isScalarType,\n  isUnionType,\n} from '../type/definition.ts';\nimport type { GraphQLDirectiveNormalizedConfig } from '../type/directives.ts';\nimport { GraphQLDirective, isSpecifiedDirective } from '../type/directives.ts';\nimport {\n  introspectionTypes,\n  isIntrospectionType,\n} from '../type/introspection.ts';\nimport {\n  isSpecifiedScalarType,\n  specifiedScalarTypes,\n} from '../type/scalars.ts';\nimport type { GraphQLSchemaNormalizedConfig } from '../type/schema.ts';\n\n/**\n * The set of GraphQL Schema Elements.\n *\n * @internal\n */\nexport const SchemaElementKind = {\n  SCHEMA: 'SCHEMA' as const,\n  SCALAR: 'SCALAR' as const,\n  OBJECT: 'OBJECT' as const,\n  FIELD: 'FIELD' as const,\n  ARGUMENT: 'ARGUMENT' as const,\n  INTERFACE: 'INTERFACE' as const,\n  UNION: 'UNION' as const,\n  ENUM: 'ENUM' as const,\n  ENUM_VALUE: 'ENUM_VALUE' as const,\n  INPUT_OBJECT: 'INPUT_OBJECT' as const,\n  INPUT_FIELD: 'INPUT_FIELD' as const,\n  DIRECTIVE: 'DIRECTIVE' as const,\n} as const;\n\n/** @internal */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\ntype SchemaElementKind =\n  (typeof SchemaElementKind)[keyof typeof SchemaElementKind];\n\n/** @internal */\nexport interface MappedSchemaContext {\n  getNamedType: (typeName: string) => GraphQLNamedType;\n  setNamedType: (type: GraphQLNamedType) => void;\n  getNamedTypes: () => ReadonlyArray<GraphQLNamedType>;\n}\n\ntype GraphQLScalarTypeMappedConfig = GraphQLScalarTypeNormalizedConfig<\n  any,\n  any\n>;\n\ntype EnsureThunks<T, ThunkFields extends keyof T> = {\n  [K in keyof T]: K extends ThunkFields ? () => T[K] : T[K];\n};\n\ntype GraphQLObjectTypeMappedConfig = EnsureThunks<\n  GraphQLObjectTypeNormalizedConfig<any, any>,\n  'interfaces' | 'fields'\n>;\ntype GraphQLInterfaceTypeMappedConfig = EnsureThunks<\n  GraphQLInterfaceTypeNormalizedConfig<any, any>,\n  'interfaces' | 'fields'\n>;\ntype GraphQLUnionTypeMappedConfig = EnsureThunks<\n  GraphQLUnionTypeNormalizedConfig<any, any>,\n  'types'\n>;\ntype GraphQLEnumTypeMappedConfig = EnsureThunks<\n  GraphQLEnumTypeNormalizedConfig,\n  'values'\n>;\ntype GraphQLInputObjectTypeMappedConfig = EnsureThunks<\n  GraphQLInputObjectTypeNormalizedConfig,\n  'fields'\n>;\n\ntype ScalarTypeConfigMapper = (\n  scalarConfig: GraphQLScalarTypeMappedConfig,\n) => GraphQLScalarTypeMappedConfig;\n\ntype ObjectTypeConfigMapper = (\n  objectConfig: GraphQLObjectTypeMappedConfig,\n) => GraphQLObjectTypeMappedConfig;\n\ntype FieldConfigMapper = (\n  fieldConfig: GraphQLFieldNormalizedConfig<any, any>,\n  parentTypeName: string,\n) => GraphQLFieldNormalizedConfig<any, any>;\n\ntype ArgumentConfigMapper = (\n  argConfig: GraphQLArgumentNormalizedConfig,\n  fieldOrDirectiveName: string,\n  parentTypeName?: string,\n) => GraphQLArgumentNormalizedConfig;\n\ntype InterfaceTypeConfigMapper = (\n  interfaceConfig: GraphQLInterfaceTypeMappedConfig,\n) => GraphQLInterfaceTypeMappedConfig;\n\ntype UnionTypeConfigMapper = (\n  unionConfig: GraphQLUnionTypeMappedConfig,\n) => GraphQLUnionTypeMappedConfig;\n\ntype EnumTypeConfigMapper = (\n  enumConfig: GraphQLEnumTypeMappedConfig,\n) => GraphQLEnumTypeMappedConfig;\n\ntype EnumValueConfigMapper = (\n  enumValueConfig: GraphQLEnumValueConfig,\n  valueName: string,\n  enumName: string,\n) => GraphQLEnumValueConfig;\n\ntype InputObjectTypeConfigMapper = (\n  inputObjectConfig: GraphQLInputObjectTypeMappedConfig,\n) => GraphQLInputObjectTypeMappedConfig;\n\ntype InputFieldConfigMapper = (\n  inputFieldConfig: GraphQLInputFieldConfig,\n  inputFieldName: string,\n  inputObjectTypeName: string,\n) => GraphQLInputFieldConfig;\n\ntype DirectiveConfigMapper = (\n  directiveConfig: GraphQLDirectiveNormalizedConfig,\n) => GraphQLDirectiveNormalizedConfig;\n\ntype SchemaConfigMapper = (\n  originalSchemaConfig: GraphQLSchemaNormalizedConfig,\n) => GraphQLSchemaNormalizedConfig;\n\n/** @internal */\nexport interface ConfigMapperMap {\n  [SchemaElementKind.SCALAR]?: ScalarTypeConfigMapper;\n  [SchemaElementKind.OBJECT]?: ObjectTypeConfigMapper;\n  [SchemaElementKind.FIELD]?: FieldConfigMapper;\n  [SchemaElementKind.ARGUMENT]?: ArgumentConfigMapper;\n  [SchemaElementKind.INTERFACE]?: InterfaceTypeConfigMapper;\n  [SchemaElementKind.UNION]?: UnionTypeConfigMapper;\n  [SchemaElementKind.ENUM]?: EnumTypeConfigMapper;\n  [SchemaElementKind.ENUM_VALUE]?: EnumValueConfigMapper;\n  [SchemaElementKind.INPUT_OBJECT]?: InputObjectTypeConfigMapper;\n  [SchemaElementKind.INPUT_FIELD]?: InputFieldConfigMapper;\n  [SchemaElementKind.DIRECTIVE]?: DirectiveConfigMapper;\n  [SchemaElementKind.SCHEMA]?: SchemaConfigMapper;\n}\n\n/** @internal */\nexport function mapSchemaConfig(\n  schemaConfig: GraphQLSchemaNormalizedConfig,\n  configMapperMapFn: (context: MappedSchemaContext) => ConfigMapperMap,\n): GraphQLSchemaNormalizedConfig {\n  const configMapperMap = configMapperMapFn({\n    getNamedType,\n    setNamedType,\n    getNamedTypes,\n  });\n\n  const mappedTypeMap = new Map<string, GraphQLNamedType>();\n  for (const type of schemaConfig.types) {\n    const typeName = type.name;\n    const mappedNamedType = mapNamedType(type);\n    if (mappedNamedType) {\n      mappedTypeMap.set(typeName, mappedNamedType);\n    }\n  }\n\n  const mappedDirectives: Array<GraphQLDirective> = [];\n  for (const directive of schemaConfig.directives) {\n    if (isSpecifiedDirective(directive)) {\n      // Builtin directives cannot be mapped.\n      mappedDirectives.push(directive);\n      continue;\n    }\n\n    const mappedDirectiveConfig = mapDirective(directive.toConfig());\n    if (mappedDirectiveConfig) {\n      mappedDirectives.push(new GraphQLDirective(mappedDirectiveConfig));\n    }\n  }\n\n  const mappedSchemaConfig = {\n    ...schemaConfig,\n    query:\n      schemaConfig.query &&\n      (getNamedType(schemaConfig.query.name) as GraphQLObjectType),\n    mutation:\n      schemaConfig.mutation &&\n      (getNamedType(schemaConfig.mutation.name) as GraphQLObjectType),\n    subscription:\n      schemaConfig.subscription &&\n      (getNamedType(schemaConfig.subscription.name) as GraphQLObjectType),\n    types: Array.from(mappedTypeMap.values()),\n    directives: mappedDirectives,\n  };\n\n  const schemaMapper = configMapperMap[SchemaElementKind.SCHEMA];\n\n  return schemaMapper == null\n    ? mappedSchemaConfig\n    : schemaMapper(mappedSchemaConfig);\n\n  function getType<T extends GraphQLType>(type: T): T {\n    if (isListType(type)) {\n      return new GraphQLList(getType(type.ofType)) as T;\n    }\n    if (isNonNullType(type)) {\n      return new GraphQLNonNull(getType(type.ofType)) as T;\n    }\n\n    return getNamedType(type.name) as T;\n  }\n\n  function getNamedType(typeName: string): GraphQLNamedType {\n    const type = stdTypeMap.get(typeName) ?? mappedTypeMap.get(typeName);\n    invariant(type !== undefined, `Unknown type: \"${typeName}\".`);\n    return type;\n  }\n\n  function setNamedType(type: GraphQLNamedType): void {\n    mappedTypeMap.set(type.name, type);\n  }\n\n  function getNamedTypes(): ReadonlyArray<GraphQLNamedType> {\n    return Array.from(mappedTypeMap.values());\n  }\n\n  function mapNamedType(type: GraphQLNamedType): Maybe<GraphQLNamedType> {\n    if (isIntrospectionType(type) || isSpecifiedScalarType(type)) {\n      // Builtin types cannot be mapped.\n      return type;\n    }\n\n    if (isScalarType(type)) {\n      return mapScalarType(type);\n    }\n    if (isObjectType(type)) {\n      return mapObjectType(type);\n    }\n    if (isInterfaceType(type)) {\n      return mapInterfaceType(type);\n    }\n    if (isUnionType(type)) {\n      return mapUnionType(type);\n    }\n    if (isEnumType(type)) {\n      return mapEnumType(type);\n    }\n    if (isInputObjectType(type)) {\n      return mapInputObjectType(type);\n      /* node:coverage ignore next 4 */\n    }\n    // Not reachable, all possible type definition nodes have been considered.\n    invariant(false, 'Unexpected type: ' + inspect(type));\n  }\n\n  function mapScalarType(type: GraphQLScalarType): GraphQLScalarType {\n    let mappedConfig: Maybe<GraphQLScalarTypeMappedConfig> = type.toConfig();\n    const mapper = configMapperMap[SchemaElementKind.SCALAR];\n    mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n    return new GraphQLScalarType(mappedConfig);\n  }\n\n  function mapObjectType(type: GraphQLObjectType): GraphQLObjectType {\n    const config = type.toConfig();\n    let mappedConfig: Maybe<GraphQLObjectTypeMappedConfig> = {\n      ...config,\n      interfaces: () =>\n        config.interfaces.map(\n          (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n        ),\n      fields: () => mapFields(config.fields, type.name),\n    };\n    const mapper = configMapperMap[SchemaElementKind.OBJECT];\n    mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n    return new GraphQLObjectType(mappedConfig);\n  }\n\n  function mapFields(\n    fieldMap: GraphQLFieldNormalizedConfigMap<any, any>,\n    parentTypeName: string,\n  ): GraphQLFieldNormalizedConfigMap<any, any> {\n    const newFieldMap = Object.create(null);\n    for (const [fieldName, field] of Object.entries(fieldMap)) {\n      let mappedField = {\n        ...field,\n        type: getType(field.type),\n        args: mapArgs(field.args, parentTypeName, fieldName),\n      };\n      const mapper = configMapperMap[SchemaElementKind.FIELD];\n      if (mapper) {\n        mappedField = mapper(mappedField, parentTypeName);\n      }\n      newFieldMap[fieldName] = mappedField;\n    }\n    return newFieldMap;\n  }\n\n  function mapArgs(\n    argumentMap: GraphQLFieldNormalizedConfigArgumentMap,\n    fieldOrDirectiveName: string,\n    parentTypeName?: string,\n  ): GraphQLFieldNormalizedConfigArgumentMap {\n    const newArgumentMap = Object.create(null);\n\n    for (const [argName, arg] of Object.entries(argumentMap)) {\n      let mappedArg = {\n        ...arg,\n        type: getType(arg.type),\n      };\n      const mapper = configMapperMap[SchemaElementKind.ARGUMENT];\n      if (mapper) {\n        mappedArg = mapper(mappedArg, fieldOrDirectiveName, parentTypeName);\n      }\n      newArgumentMap[argName] = mappedArg;\n    }\n\n    return newArgumentMap;\n  }\n\n  function mapInterfaceType(type: GraphQLInterfaceType): GraphQLInterfaceType {\n    const config = type.toConfig();\n    let mappedConfig: Maybe<GraphQLInterfaceTypeMappedConfig> = {\n      ...config,\n      interfaces: () =>\n        config.interfaces.map(\n          (iface) => getNamedType(iface.name) as GraphQLInterfaceType,\n        ),\n      fields: () => mapFields(config.fields, type.name),\n    };\n    const mapper = configMapperMap[SchemaElementKind.INTERFACE];\n    mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n    return new GraphQLInterfaceType(mappedConfig);\n  }\n\n  function mapUnionType(type: GraphQLUnionType): GraphQLUnionType {\n    const config = type.toConfig();\n    let mappedConfig: Maybe<GraphQLUnionTypeMappedConfig> = {\n      ...config,\n      types: () =>\n        config.types.map(\n          (memberType) => getNamedType(memberType.name) as GraphQLObjectType,\n        ),\n    };\n    const mapper = configMapperMap[SchemaElementKind.UNION];\n    mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n    return new GraphQLUnionType(mappedConfig);\n  }\n\n  function mapEnumType(type: GraphQLEnumType): GraphQLEnumType {\n    const config = type.toConfig();\n    let mappedConfig: Maybe<GraphQLEnumTypeMappedConfig> = {\n      ...config,\n      values: () => {\n        const newEnumValues = Object.create(null);\n        for (const [valueName, value] of Object.entries(config.values)) {\n          const mappedValue = mapEnumValue(value, valueName, type.name);\n          newEnumValues[valueName] = mappedValue;\n        }\n        return newEnumValues;\n      },\n    };\n    const mapper = configMapperMap[SchemaElementKind.ENUM];\n    mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n    return new GraphQLEnumType(mappedConfig);\n  }\n\n  function mapEnumValue(\n    valueConfig: GraphQLEnumValueConfig,\n    valueName: string,\n    enumName: string,\n  ): GraphQLEnumValueConfig {\n    const mappedConfig = { ...valueConfig };\n    const mapper = configMapperMap[SchemaElementKind.ENUM_VALUE];\n    return mapper == null\n      ? mappedConfig\n      : mapper(mappedConfig, valueName, enumName);\n  }\n\n  function mapInputObjectType(\n    type: GraphQLInputObjectType,\n  ): GraphQLInputObjectType {\n    const config = type.toConfig();\n    let mappedConfig: Maybe<GraphQLInputObjectTypeMappedConfig> = {\n      ...config,\n      fields: () => {\n        const newInputFieldMap = Object.create(null);\n        for (const [fieldName, field] of Object.entries(config.fields)) {\n          const mappedField = mapInputField(field, fieldName, type.name);\n          newInputFieldMap[fieldName] = mappedField;\n        }\n        return newInputFieldMap;\n      },\n    };\n    const mapper = configMapperMap[SchemaElementKind.INPUT_OBJECT];\n    mappedConfig = mapper == null ? mappedConfig : mapper(mappedConfig);\n    return new GraphQLInputObjectType(mappedConfig);\n  }\n\n  function mapInputField(\n    inputFieldConfig: GraphQLInputFieldConfig,\n    inputFieldName: string,\n    inputObjectTypeName: string,\n  ): GraphQLInputFieldConfig {\n    const mappedConfig = {\n      ...inputFieldConfig,\n      type: getType(inputFieldConfig.type),\n    };\n    const mapper = configMapperMap[SchemaElementKind.INPUT_FIELD];\n    return mapper == null\n      ? mappedConfig\n      : mapper(mappedConfig, inputFieldName, inputObjectTypeName);\n  }\n\n  function mapDirective(\n    config: GraphQLDirectiveNormalizedConfig,\n  ): Maybe<GraphQLDirectiveNormalizedConfig> {\n    const mappedConfig = {\n      ...config,\n      args: mapArgs(config.args, config.name, undefined),\n    };\n    const mapper = configMapperMap[SchemaElementKind.DIRECTIVE];\n    return mapper == null ? mappedConfig : mapper(mappedConfig);\n  }\n}\n\nconst stdTypeMap = new Map(\n  [...specifiedScalarTypes, ...introspectionTypes].map((type) => [\n    type.name,\n    type,\n  ]),\n);\n"]}