@devticon-os/graphql-codegen-axios 0.2.0 → 0.2.1
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 +1 -0
- 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
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 };
|