mainKey property

TKey mainKey

Implementation

TKey get mainKey {
  final defaultOperationDefinitionMap = {
    OperationType.query: 'Query',
    OperationType.mutation: 'Mutation',
    OperationType.subscription: 'Subscription',
  };
  final operationDefinitionMap = Map.fromEntries(
    entries.entries.expand(
      (element) =>
          element.value.definitions.expand<MapEntry<OperationType, String>>(
        (element) {
          if (element is SchemaDefinitionNode) {
            return element.operationTypes.map(
              (e) => MapEntry(
                e.operation,
                e.type.name.value,
              ),
            );
          }
          if (element is SchemaExtensionNode) {
            return element.operationTypes.map(
              (e) => MapEntry(
                e.operation,
                e.type.name.value,
              ),
            );
          }
          return [];
        },
      ),
    ),
  );
  return [
        OperationType.query,
        OperationType.mutation,
        OperationType.subscription
      ].expand<TKey?>((e) {
        final name =
            operationDefinitionMap[e] ?? defaultOperationDefinitionMap[e];
        if (name == null) {
          return [];
        }
        return entries.entries
            .where(
              (element) => element.value.definitions
                  .whereType<ObjectTypeDefinitionNode>()
                  .where((element) => element.name.value == name)
                  .isNotEmpty,
            )
            .map<TKey>((documentEntry) => documentEntry.key);
      }).firstWhere(
        (element) => true,
        orElse: () => null,
      ) ??
      entries.keys.last;
}