@devticon-os/graphql-codegen-axios 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/fragments.js +9 -15
- package/src/index.js +6 -3
- package/src/input.js +13 -1
- package/src/render.js +12 -7
- package/src/results.js +1 -1
- package/src/variables.js +1 -1
package/package.json
CHANGED
package/src/fragments.js
CHANGED
|
@@ -1,29 +1,23 @@
|
|
|
1
1
|
const { GraphQLObjectType } = require('graphql/type');
|
|
2
2
|
const { getGraphqlTypeInfo } = require('./types');
|
|
3
|
+
const { getField } = require('./results');
|
|
3
4
|
const findUsageFragments = (documents, schema) => {
|
|
4
5
|
const fragments = [];
|
|
5
6
|
for (let { document } of documents) {
|
|
6
7
|
for (const definition of document.definitions) {
|
|
7
8
|
if (definition.kind === 'FragmentDefinition') {
|
|
9
|
+
const name = definition.name.value;
|
|
8
10
|
const parentName = definition.typeCondition.name.value;
|
|
9
11
|
const parent = findObjectTypeInSchema(schema, parentName);
|
|
12
|
+
const nestedFragments = definition.selectionSet.selections.filter(s => s.kind === 'FragmentSpread');
|
|
13
|
+
const fields = definition.selectionSet.selections.filter(s => s.kind !== 'FragmentSpread');
|
|
14
|
+
const union = nestedFragments.map(f => f.name.value);
|
|
15
|
+
|
|
10
16
|
fragments.push({
|
|
11
|
-
name
|
|
17
|
+
name,
|
|
12
18
|
type: definition,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const fragments = selections.filter(s => s.kind === 'FragmentSpread');
|
|
16
|
-
const union = fragments.map(f => f.name.value);
|
|
17
|
-
const parentField = parent._fields[f.name.value];
|
|
18
|
-
const typeInfo = getGraphqlTypeInfo(parentField.type);
|
|
19
|
-
return {
|
|
20
|
-
name: f.name.value,
|
|
21
|
-
...typeInfo,
|
|
22
|
-
fields: [],
|
|
23
|
-
typeName: union.length ? '{}' : typeInfo.typeName,
|
|
24
|
-
union,
|
|
25
|
-
};
|
|
26
|
-
}),
|
|
19
|
+
union,
|
|
20
|
+
fields: fields.map(f => getField(parent, f, schema)),
|
|
27
21
|
});
|
|
28
22
|
}
|
|
29
23
|
}
|
package/src/index.js
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
const fs = require('fs');
|
|
2
2
|
const path = require('path');
|
|
3
|
-
const { print } = require('graphql');
|
|
4
|
-
const { GraphQLList, GraphQLNonNull, GraphQLInputObjectType } = require('graphql/type');
|
|
5
3
|
const { findUsageInputs } = require('./input');
|
|
6
4
|
const { getVariablesFields } = require('./variables');
|
|
7
5
|
const { getResultsFields } = require('./results');
|
|
8
6
|
const { findScalars } = require('./scalar');
|
|
9
|
-
const { renderType, renderQuery, renderSdk, renderScalars, renderEnum } = require('./render');
|
|
7
|
+
const { renderType, renderQuery, renderSdk, renderScalars, renderEnum, renderHeader } = require('./render');
|
|
10
8
|
const { findUsageEnums } = require('./enums');
|
|
11
9
|
const { findUsageFragments } = require('./fragments');
|
|
12
10
|
|
|
@@ -80,10 +78,15 @@ module.exports = {
|
|
|
80
78
|
|
|
81
79
|
const enums = findUsageEnums(types, schema);
|
|
82
80
|
return [
|
|
81
|
+
renderHeader('HELPERS'),
|
|
83
82
|
helpers,
|
|
83
|
+
renderHeader('Scalars'),
|
|
84
84
|
renderScalars(scalars),
|
|
85
|
+
renderHeader('Enum'),
|
|
85
86
|
...enums.map(e => renderEnum(e)),
|
|
87
|
+
renderHeader('TYPES'),
|
|
86
88
|
...types.map(t => renderType(t)),
|
|
89
|
+
renderHeader('QUERIES'),
|
|
87
90
|
...queries.map(q => renderQuery(q)),
|
|
88
91
|
renderSdk(functions),
|
|
89
92
|
].join('\n');
|
package/src/input.js
CHANGED
|
@@ -7,7 +7,8 @@ const findUsageInputs = (document, schema) => {
|
|
|
7
7
|
continue;
|
|
8
8
|
}
|
|
9
9
|
for (const variableDefinition of definition.variableDefinitions) {
|
|
10
|
-
const
|
|
10
|
+
const type = unpackVariableType(variableDefinition.type);
|
|
11
|
+
const name = type.name.value;
|
|
11
12
|
const input = findInputInSchema(name, schema);
|
|
12
13
|
if (input) {
|
|
13
14
|
inputs.push(input);
|
|
@@ -45,6 +46,7 @@ const getInputFields = input => {
|
|
|
45
46
|
name: field.name,
|
|
46
47
|
fields: [],
|
|
47
48
|
...typeInfo,
|
|
49
|
+
inLine: !typeInfo.isScalar,
|
|
48
50
|
};
|
|
49
51
|
});
|
|
50
52
|
};
|
|
@@ -59,4 +61,14 @@ const unpackInputType = type => {
|
|
|
59
61
|
return type;
|
|
60
62
|
};
|
|
61
63
|
|
|
64
|
+
const unpackVariableType = type => {
|
|
65
|
+
if (type.kind === 'ListType') {
|
|
66
|
+
return unpackVariableType(type.type);
|
|
67
|
+
}
|
|
68
|
+
if (type.kind === 'NonNullType') {
|
|
69
|
+
return unpackVariableType(type.type);
|
|
70
|
+
}
|
|
71
|
+
return type;
|
|
72
|
+
};
|
|
73
|
+
|
|
62
74
|
module.exports = { findUsageInputs, findInputInSchema };
|
package/src/render.js
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
1
|
const { print } = require('graphql/index');
|
|
2
2
|
const { getUsedFragments } = require('./query');
|
|
3
|
-
const
|
|
4
|
-
|
|
3
|
+
const { GraphQLInputObjectType } = require('graphql/type');
|
|
4
|
+
const renderType = ({ name, fields, union }) => {
|
|
5
|
+
return `export type ${name} = ${union ? union.join('&') + '&' : ''} { ${renderTypeField(fields)} };`;
|
|
5
6
|
};
|
|
7
|
+
|
|
8
|
+
const renderHeader = text => `/** \n ${text} \n **/`;
|
|
6
9
|
const renderTypeField = fields => {
|
|
7
10
|
return fields
|
|
8
|
-
.map(({ isList, isNullable, typeName, name, fields, isScalar, union }) => {
|
|
11
|
+
.map(({ isList, isNullable, typeName, name, fields, isScalar, union, type, inLine }) => {
|
|
9
12
|
let tsType = '';
|
|
10
13
|
if (union && union.length) {
|
|
11
14
|
tsType += [...union, ''].join(' & ');
|
|
12
15
|
}
|
|
13
16
|
if (isScalar) {
|
|
14
17
|
tsType += getScalarTsType(typeName);
|
|
18
|
+
} else if (inLine) {
|
|
19
|
+
tsType += typeName;
|
|
15
20
|
} else {
|
|
16
|
-
if (
|
|
17
|
-
tsType += `{${renderTypeField(fields)}}`;
|
|
18
|
-
} else {
|
|
21
|
+
if (type instanceof GraphQLInputObjectType) {
|
|
19
22
|
tsType += typeName;
|
|
23
|
+
} else {
|
|
24
|
+
tsType += `{${renderTypeField(fields)}}`;
|
|
20
25
|
}
|
|
21
26
|
}
|
|
22
27
|
return `${name}${isNullable ? '?' : ''}: ${tsType}${isList ? '[]' : ''}`;
|
|
@@ -71,4 +76,4 @@ const renderScalars = (scalars, map = {}) => {
|
|
|
71
76
|
})
|
|
72
77
|
.join(',')}};`;
|
|
73
78
|
};
|
|
74
|
-
module.exports = { renderType, renderQuery, renderSdk, renderScalars, renderEnum };
|
|
79
|
+
module.exports = { renderType, renderQuery, renderSdk, renderScalars, renderEnum, renderHeader };
|
package/src/results.js
CHANGED
package/src/variables.js
CHANGED
|
@@ -18,7 +18,7 @@ const getVariableType = (type, schema, isList = false, isNullable = true) => {
|
|
|
18
18
|
}
|
|
19
19
|
const typeName = type.name.value;
|
|
20
20
|
const isScalar = !findInputInSchema(typeName, schema);
|
|
21
|
-
return { type: type.type, isList, isNullable, typeName, isScalar };
|
|
21
|
+
return { type: type.type, isList, isNullable, typeName, isScalar, inLine: !isScalar };
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
module.exports = { getVariablesFields };
|