@aws-amplify/graphql-types-generator
Version:
Generate API code or type annotations based on a GraphQL schema and statements
33 lines • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isS3Field = exports.hasS3Fields = void 0;
const graphql_1 = require("graphql");
const S3_FIELD_NAMES = ['bucket', 'key', 'region', 'localUri', 'mimeType'];
function hasS3Fields(input) {
if ((0, graphql_1.isObjectType)(input) || (0, graphql_1.isInputObjectType)(input)) {
if (isS3Field(input)) {
return true;
}
const fields = input.getFields();
return Object.keys(fields).some(f => hasS3Fields(fields[f]));
}
return false;
}
exports.hasS3Fields = hasS3Fields;
function isS3Field(field) {
if ((0, graphql_1.isObjectType)(field) || (0, graphql_1.isInputObjectType)(field)) {
const fields = field.getFields();
const stringFields = Object.keys(fields).filter(f => {
const fieldType = fields[f].type;
const typeName = (0, graphql_1.getNamedType)(fieldType);
return (typeName.name === 'String' && (0, graphql_1.isNonNullType)(fieldType));
});
const isS3FileField = S3_FIELD_NAMES.every(fieldName => stringFields.includes(fieldName));
if (isS3FileField) {
return true;
}
}
return false;
}
exports.isS3Field = isS3Field;
//# sourceMappingURL=complextypes.js.map