gql 0.0.1 copy "gql: ^0.0.1" to clipboard
gql: ^0.0.1 copied to clipboard

outdated

GraphQL tools for parsing, transforming and printing GraphQL documents.

example/gql_example.dart

import "dart:io";

import "package:gql/language.dart";
import "package:source_span/source_span.dart";

main() async {
  [
    await File("./example/fixtures/schema-kitchen-sink.graphql").readAsString(),
    await File("./example/fixtures/kitchen-sink.graphql").readAsString(),
  ]
      .map(
        (src) => SourceFile.fromString(src),
      )
      .forEach(cover);
}

cover(sourceFile) {
  final DocumentNode document = parse(sourceFile);

  final DocumentNode transformedDocument = transform(
    document,
    [
      IdentityTransformer(),
    ],
  );

  transformedDocument.accept(
    RecurseVisitor(),
  );

  final String printed = printNode(
    transformedDocument,
  );

  print(printed);
}

class RecurseVisitor extends RecursiveVisitor {}

class IdentityTransformer extends TransformingVisitor {}

class MyTransformer extends TransformingVisitor {
  @override
  visitObjectTypeDefinitionNode(ObjectTypeDefinitionNode node) =>
      ObjectTypeDefinitionNode(
        description: node.description,
        interfaces: node.interfaces,
        directives: node.directives,
        name: node.name,
        fields: node.fields.followedBy([
          FieldDefinitionNode(
            name: NameNode(value: "myExtraField"),
            type: NamedTypeNode(
              isNonNull: true,
              name: NameNode(value: "MyExtraFieldType"),
            ),
          )
        ]).toList(),
      );
}

class MyOtherTransformer extends TransformingVisitor {
  @override
  visitObjectTypeDefinitionNode(ObjectTypeDefinitionNode node) =>
      ObjectTypeDefinitionNode(
        description: node.description,
        interfaces: node.interfaces,
        directives: node.directives,
        name: node.name,
        fields: node.fields.followedBy([
          FieldDefinitionNode(
            name: NameNode(value: "myOtherExtraField"),
            type: NamedTypeNode(
              isNonNull: true,
              name: NameNode(value: "MyOtherExtraFieldType"),
            ),
          )
        ]).toList(),
      );
}
38
likes
0
pub points
96%
popularity

Publisher

verified publishergql-dart.dev

GraphQL tools for parsing, transforming and printing GraphQL documents.

Homepage
Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

meta, source_span

More

Packages that depend on gql