UNPKG

4.1 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var graphql_1 = require("graphql");
4var object_map_to_array_1 = require("../utils/object-map-to-array");
5var transform_object_1 = require("./transform-object");
6var transform_enum_1 = require("./transform-enum");
7var transform_union_1 = require("./transform-union");
8var transform_interface_1 = require("./transform-interface");
9var transform_scalar_1 = require("./transform-scalar");
10var debugging_1 = require("../debugging");
11var transform_directives_1 = require("./transform-directives");
12var get_directives_1 = require("../utils/get-directives");
13var GRAPHQL_PRIMITIVES = ['String', 'Int', 'Boolean', 'ID', 'Float'];
14var clearTypes = function (typesMap) {
15 return Object.keys(typesMap)
16 .filter(function (key) { return !GRAPHQL_PRIMITIVES.includes(key) && !key.startsWith('__'); })
17 .reduce(function (obj, key) {
18 obj[key] = typesMap[key];
19 return obj;
20 }, {});
21};
22function schemaToTemplateContext(schema) {
23 debugging_1.debugLog('[schemaToTemplateContext] started...');
24 var directives = get_directives_1.getDirectives(schema, schema);
25 var result = {
26 types: [],
27 inputTypes: [],
28 enums: [],
29 unions: [],
30 scalars: [],
31 interfaces: [],
32 definedDirectives: [],
33 // Indicators
34 hasTypes: false,
35 hasInputTypes: false,
36 hasEnums: false,
37 hasUnions: false,
38 hasScalars: false,
39 hasInterfaces: false,
40 hasDefinedDirectives: false,
41 rawSchema: schema,
42 directives: directives,
43 usesDirectives: Object.keys(directives).length > 0
44 };
45 var rawTypesMap = schema.getTypeMap();
46 var typesMap = clearTypes(rawTypesMap);
47 var typesArray = object_map_to_array_1.objectMapToArray(typesMap);
48 debugging_1.debugLog("[schemaToTemplateContext] Got total of " + typesArray.length + " types in the GraphQL schema");
49 typesArray.map(function (graphQlType) {
50 var actualTypeDef = graphQlType.value;
51 if (actualTypeDef instanceof graphql_1.GraphQLObjectType) {
52 result.types.push(transform_object_1.transformGraphQLObject(schema, actualTypeDef));
53 }
54 else if (actualTypeDef instanceof graphql_1.GraphQLInputObjectType) {
55 result.inputTypes.push(transform_object_1.transformGraphQLObject(schema, actualTypeDef));
56 }
57 else if (actualTypeDef instanceof graphql_1.GraphQLEnumType) {
58 result.enums.push(transform_enum_1.transformGraphQLEnum(schema, actualTypeDef));
59 }
60 else if (actualTypeDef instanceof graphql_1.GraphQLUnionType) {
61 result.unions.push(transform_union_1.transformUnion(schema, actualTypeDef));
62 }
63 else if (actualTypeDef instanceof graphql_1.GraphQLInterfaceType) {
64 result.interfaces.push(transform_interface_1.transformInterface(schema, actualTypeDef));
65 }
66 else if (actualTypeDef instanceof graphql_1.GraphQLScalarType) {
67 result.scalars.push(transform_scalar_1.transformScalar(schema, actualTypeDef));
68 }
69 else {
70 throw new Error("Unexpected GraphQL type definition: " + graphQlType.key + " (As string: " + String(actualTypeDef) + ")." +
71 "Please check that you are importing only one instance of the 'graphql' package.");
72 }
73 });
74 result.definedDirectives = transform_directives_1.transformDirectives(schema, schema.getDirectives() || []);
75 result.hasTypes = result.types.length > 0;
76 result.hasInputTypes = result.inputTypes.length > 0;
77 result.hasEnums = result.enums.length > 0;
78 result.hasUnions = result.unions.length > 0;
79 result.hasScalars = result.scalars.length > 0;
80 result.hasInterfaces = result.interfaces.length > 0;
81 result.hasDefinedDirectives = result.definedDirectives.length > 0;
82 debugging_1.debugLog("[schemaToTemplateContext] done, results is: ", result);
83 return result;
84}
85exports.schemaToTemplateContext = schemaToTemplateContext;
86//# sourceMappingURL=schema-to-template-context.js.map
\No newline at end of file