@aws-amplify/graphql-generator
Version:
GraphQL API code generator
48 lines • 2.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateStatements = void 0;
const { GraphQLStatementsFormatter } = require('./utils');
const graphql_docs_generator_1 = require("@aws-amplify/graphql-docs-generator");
const utils_1 = require("./utils");
function generateStatements(options) {
const { schema, target, maxDepth = 2, typenameIntrospection = true, relativeTypesPath } = options;
if (!Object.keys(utils_1.statementsTargetToFileExtensionMap).includes(target)) {
throw new Error(`${target} is not a supported target.`);
}
const generatedOperations = (0, graphql_docs_generator_1.generateGraphQLDocuments)(schema, {
maxDepth,
useExternalFragmentForS3Object: target === 'graphql',
typenameIntrospection,
includeMetaData: true,
});
return generatedOperationsToOutput(target, generatedOperations, relativeTypesPath);
}
exports.generateStatements = generateStatements;
function generatedOperationsToOutput(target, generatedStatements, relativeTypesPath) {
const fileExtension = utils_1.statementsTargetToFileExtensionMap[target];
const operations = ['queries', 'mutations', 'subscriptions'];
const statements = operations
.filter(operation => { var _a; return (_a = generatedStatements[operation]) === null || _a === void 0 ? void 0 : _a.size; })
.map(operation => {
const operationStatements = generatedStatements[operation];
const formattedStatements = new GraphQLStatementsFormatter(target, operation, relativeTypesPath).format(operationStatements);
const filepath = `${operation}.${fileExtension}`;
return {
[filepath]: formattedStatements,
};
})
.reduce((curr, next) => ({ ...curr, ...next }), {});
if (fileExtension === 'graphql') {
const { fragments } = generatedStatements;
if (fragments.size) {
const formattedStatements = new GraphQLStatementsFormatter(target).format(fragments);
const filepath = 'fragments.graphql';
return {
...statements,
[filepath]: formattedStatements,
};
}
}
return statements;
}
//# sourceMappingURL=statements.js.map