UNPKG

@aws-amplify/graphql-generator

Version:
48 lines 2.26 kB
"use strict"; 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