1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var graphql_1 = require("graphql");
|
4 | var object_map_to_array_1 = require("../utils/object-map-to-array");
|
5 | var transform_object_1 = require("./transform-object");
|
6 | var transform_enum_1 = require("./transform-enum");
|
7 | var transform_union_1 = require("./transform-union");
|
8 | var transform_interface_1 = require("./transform-interface");
|
9 | var transform_scalar_1 = require("./transform-scalar");
|
10 | var debugging_1 = require("../debugging");
|
11 | var transform_directives_1 = require("./transform-directives");
|
12 | var get_directives_1 = require("../utils/get-directives");
|
13 | var GRAPHQL_PRIMITIVES = ['String', 'Int', 'Boolean', 'ID', 'Float'];
|
14 | var 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 | };
|
22 | function 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 |
|
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 | }
|
85 | exports.schemaToTemplateContext = schemaToTemplateContext;
|
86 |
|
\ | No newline at end of file |