GraphQL: Add support for union types (#2014)

master
Alexandre BODIN 2017-06-07 19:33:46 +02:00 committed by Christopher Chedeau
parent 0222d8eefe
commit 8ec1b40961
4 changed files with 88 additions and 0 deletions

View File

@ -4,6 +4,7 @@ const docBuilders = require("./doc-builders");
const concat = docBuilders.concat;
const join = docBuilders.join;
const hardline = docBuilders.hardline;
const line = docBuilders.line;
const softline = docBuilders.softline;
const group = docBuilders.group;
const indent = docBuilders.indent;
@ -225,6 +226,23 @@ function genericPrint(path, options, print) {
]);
}
case "UnionTypeDefinition": {
return group(
concat([
"union ",
path.call(print, "name"),
" =",
ifBreak("", " "),
indent(
concat([
ifBreak(concat([line, " "])),
join(concat([line, "| "]), path.map(print, "types"))
])
)
])
);
}
default:
throw new Error("unknown graphql type: " + JSON.stringify(n.kind));
}

View File

@ -0,0 +1,56 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`union_types.graphql 1`] = `
union myUnion = ATypeName | ASecondTypeName
union tooLongNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee = A | B
union mySecondUnion = ATypeName | ASecondTypeName | AThirdTypeName
union myThirdUnion = AVeryVeryVeryLongNamedTypeName | ASecondVeryVeryVeryLongedNameTypeName
union longUnion = A | B | C | D | E | F | G | H | I | J | K | L | A | B | C | D | E | F | G | H | I | J | K | L
# comment
# comment2
union union = B | C | D~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
union myUnion = ATypeName | ASecondTypeName
union tooLongNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee =
A
| B
union mySecondUnion = ATypeName | ASecondTypeName | AThirdTypeName
union myThirdUnion =
AVeryVeryVeryLongNamedTypeName
| ASecondVeryVeryVeryLongedNameTypeName
union longUnion =
A
| B
| C
| D
| E
| F
| G
| H
| I
| J
| K
| L
| A
| B
| C
| D
| E
| F
| G
| H
| I
| J
| K
| L
union union = B | C | D
`;

View File

@ -0,0 +1 @@
run_spec(__dirname, { parser: "graphql" });

View File

@ -0,0 +1,13 @@
union myUnion = ATypeName | ASecondTypeName
union tooLongNameeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee = A | B
union mySecondUnion = ATypeName | ASecondTypeName | AThirdTypeName
union myThirdUnion = AVeryVeryVeryLongNamedTypeName | ASecondVeryVeryVeryLongedNameTypeName
union longUnion = A | B | C | D | E | F | G | H | I | J | K | L | A | B | C | D | E | F | G | H | I | J | K | L
# comment
# comment2
union union = B | C | D