1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.areAllArgsOptional = exports.isReturnTypeEdge = exports.evaluateType = void 0;
|
4 | exports.evaluateType = function (field) {
|
5 | var propertyName = field.name;
|
6 | var isRequired = false;
|
7 | var isArray = false;
|
8 | var isArrayRequired = false;
|
9 | var isEdge = false;
|
10 | var isScalar = false;
|
11 | var isEnum = false;
|
12 | var typeName = '';
|
13 | if (propertyName === 'edges')
|
14 | isEdge = true;
|
15 | function getFieldInfos(type) {
|
16 | if (type.kind === 'NON_NULL') {
|
17 | if (isArray) {
|
18 | isArrayRequired = true;
|
19 | }
|
20 | else {
|
21 | isRequired = true;
|
22 | }
|
23 | }
|
24 | if (type.kind === 'LIST') {
|
25 | isArray = true;
|
26 | }
|
27 | if (type.ofType) {
|
28 | return getFieldInfos(type.ofType);
|
29 | }
|
30 | else {
|
31 | if (type.kind === 'SCALAR') {
|
32 | isScalar = true;
|
33 | }
|
34 | else if (type.kind === 'ENUM') {
|
35 | isEnum = true;
|
36 | }
|
37 | typeName = type.name;
|
38 | }
|
39 | return null;
|
40 | }
|
41 | getFieldInfos(field.type);
|
42 | return {
|
43 | isRequired: isRequired,
|
44 | isArray: isArray,
|
45 | isArrayRequired: isArrayRequired,
|
46 | isEdge: isEdge,
|
47 | isScalar: isScalar,
|
48 | typeName: typeName,
|
49 | isEnum: isEnum,
|
50 | };
|
51 | };
|
52 | exports.isReturnTypeEdge = function (ObjectTypes, typeName) {
|
53 | var type = ObjectTypes.find(function (f) { return f.name === typeName; });
|
54 | if (type) {
|
55 | return type.fields.map(exports.evaluateType).some(function (s) { return s.isEdge; });
|
56 | }
|
57 | return false;
|
58 | };
|
59 | exports.areAllArgsOptional = function (args) {
|
60 | return args.map(exports.evaluateType).every(function (m) { return !m.isRequired; });
|
61 | };
|