1 | "use strict";
|
2 | var definition_1 = require("graphql/type/definition");
|
3 | var utils_1 = require("./utils");
|
4 | exports.handleType = function (primitivesMap, type) {
|
5 | var typeName = type['name'];
|
6 | var currentType = {
|
7 | imports: [],
|
8 | name: typeName,
|
9 | fields: [],
|
10 | isEnum: false,
|
11 | isObject: false
|
12 | };
|
13 | if (!utils_1.shouldSkip(typeName)) {
|
14 | if (type instanceof definition_1.GraphQLEnumType) {
|
15 | currentType.isEnum = true;
|
16 | currentType.enumValues = type.getValues().map(function (enumItem) {
|
17 | return {
|
18 | name: enumItem.name,
|
19 | description: enumItem.description,
|
20 | value: enumItem.value
|
21 | };
|
22 | });
|
23 | }
|
24 | else if (type instanceof definition_1.GraphQLObjectType || type instanceof definition_1.GraphQLInputObjectType || type instanceof definition_1.GraphQLInterfaceType) {
|
25 | currentType.isObject = true;
|
26 | var fields_1 = type.getFields();
|
27 | if (type instanceof definition_1.GraphQLObjectType) {
|
28 | currentType.implementedInterfaces = type.getInterfaces().map(function (interf) {
|
29 | return interf.name;
|
30 | });
|
31 | currentType.hasImplementedInterfaces = currentType.implementedInterfaces.length > 0;
|
32 | }
|
33 | currentType.fields = Object
|
34 | .keys(fields_1)
|
35 | .map(function (fieldName) { return fields_1[fieldName]; })
|
36 | .map(function (field) {
|
37 | var type = utils_1.getTypeName(primitivesMap, field.type);
|
38 | if (!utils_1.isPrimitive(primitivesMap, type)) {
|
39 | currentType.imports.push(type);
|
40 | }
|
41 | return {
|
42 | name: field.name,
|
43 | type: type,
|
44 | isArray: utils_1.isArray(field.type),
|
45 | isRequired: utils_1.isRequired(field.type)
|
46 | };
|
47 | });
|
48 | }
|
49 | else if (type instanceof definition_1.GraphQLUnionType) {
|
50 | currentType.name = type.name || typeName;
|
51 | currentType.isUnion = true;
|
52 | currentType.isObject = false;
|
53 | currentType.unionTypes = type.getTypes().map(function (type) { return type.name; });
|
54 | currentType.hasUnionTypes = currentType.unionTypes.length > 0;
|
55 | }
|
56 | else if (type instanceof definition_1.GraphQLList || type instanceof definition_1.GraphQLNonNull) {
|
57 | return exports.handleType(primitivesMap, definition_1.getNamedType(type));
|
58 | }
|
59 | else if (type instanceof definition_1.GraphQLScalarType) {
|
60 | }
|
61 | return currentType;
|
62 | }
|
63 | else {
|
64 | return null;
|
65 | }
|
66 | };
|
67 |
|
\ | No newline at end of file |