Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions gql_build/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.0.9

- add `__typename` field to interface and object types

## 0.0.8

- escape reserved and private names
Expand Down
4 changes: 2 additions & 2 deletions gql_build/lib/src/data_builder.dart
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import "dart:async";

import "package:build/build.dart";

import "package:gql_build/src/config.dart";
import "package:gql_build/src/utils/add_introspection.dart";
import "package:gql_build/src/utils/reader.dart";
import "package:gql_build/src/utils/writer.dart";
import "package:gql_code_builder/data.dart";
Expand All @@ -26,7 +26,7 @@ class DataBuilder implements Builder {

final library = buildDataLibrary(
doc,
schema,
addTypenames(schema),
);

return writeDocument(
Expand Down
60 changes: 60 additions & 0 deletions gql_build/lib/src/utils/add_introspection.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import "package:gql/ast.dart";
import "package:gql_code_builder/source.dart";

const typenameField = FieldDefinitionNode(
name: NameNode(
value: "__typename",
),
type: NamedTypeNode(
name: NameNode(
value: "String",
),
isNonNull: true,
),
);

class AddTypenameField extends TransformingVisitor {
@override
ObjectTypeDefinitionNode visitObjectTypeDefinitionNode(
ObjectTypeDefinitionNode node,
) =>
ObjectTypeDefinitionNode(
name: node.name,
description: node.description,
directives: node.directives,
fields: [
typenameField,
...node.fields,
],
interfaces: node.interfaces,
span: node.span,
);

@override
InterfaceTypeDefinitionNode visitInterfaceTypeDefinitionNode(
InterfaceTypeDefinitionNode node,
) =>
InterfaceTypeDefinitionNode(
name: node.name,
fields: [
typenameField,
...node.fields,
],
directives: node.directives,
description: node.description,
span: node.span,
);
}

DocumentNode _transform(DocumentNode doc) => transform(
doc,
[
AddTypenameField(),
],
);

SourceNode addTypenames(SourceNode source) => SourceNode(
url: source.url,
document: _transform(source.document),
imports: source.imports.map(addTypenames).toSet(),
);
3 changes: 2 additions & 1 deletion gql_build/lib/src/var_builder.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import "dart:async";

import "package:build/build.dart";
import "package:gql_build/src/config.dart";
import "package:gql_build/src/utils/add_introspection.dart";
import "package:gql_build/src/utils/reader.dart";
import "package:gql_build/src/utils/writer.dart";
import "package:gql_code_builder/var.dart";
Expand All @@ -25,7 +26,7 @@ class VarBuilder implements Builder {

final library = buildVarLibrary(
doc,
schema,
addTypenames(schema),
);

return writeDocument(
Expand Down
12 changes: 6 additions & 6 deletions gql_build/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
name: gql_build
author: Klāvs Priedītis <klavs@prieditis.lv>
version: 0.0.8
version: 0.0.9
homepage: https://github.com/gql-dart/gql/tree/master/gql_build
description: Useful builders for your GraphQL SDL and documents. Based on package:gql_code_builder and package:build
environment:
sdk: '>=2.2.2 <3.0.0'
dependencies:
environment:
sdk: ">=2.2.2 <3.0.0"
dependencies:
gql: ^0.12.1
path: ^1.6.4
glob: ^1.2.0
build: ^1.0.0
gql_code_builder: ^0.0.8
gql_code_builder: ^0.0.9
code_builder: ^3.2.0
dart_style: ^1.2.9
dev_dependencies:
dev_dependencies:
test: ^1.0.0
build_test: ^0.10.7
gql_pedantic: ^1.0.1
4 changes: 4 additions & 0 deletions gql_code_builder/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 0.0.9

- remove duplicate ast imports

## 0.0.8

- escape reserved and private names
Expand Down
4 changes: 2 additions & 2 deletions gql_code_builder/lib/source.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class SourceNode {
],
);

List<Reference> getRefs() => [
Set<Reference> getRefs() => {
...document.definitions.map(
(definition) => Reference(
_getName(definition),
Expand All @@ -34,7 +34,7 @@ class SourceNode {
...imports.expand(
(import) => import.getRefs(),
),
];
};
}

String _getName(DefinitionNode def) {
Expand Down
10 changes: 5 additions & 5 deletions gql_code_builder/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
name: gql_code_builder
author: Klāvs Priedītis <klavs@prieditis.lv>
version: 0.0.8
version: 0.0.9
homepage: https://github.com/gql-dart/gql/tree/master/gql_code_builder
description: Dart code builders taking *.graphql documents and SDL to build useful classes.
environment:
sdk: '>=2.2.2 <3.0.0'
dependencies:
environment:
sdk: ">=2.2.2 <3.0.0"
dependencies:
gql: ^0.12.1
code_builder: ^3.2.0
meta: ^1.1.7
built_collection: ^4.0.0
dev_dependencies:
dev_dependencies:
gql_pedantic: ^1.0.1