Files
personal_site/frontend/node_modules/@aws-amplify/graphql-docs-generator/lib/index.js
T

100 lines
3.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateGraphQLDocuments = exports.buildSchema = void 0;
const handlebars = require('handlebars/dist/handlebars');
const generator_1 = require("./generator");
const loading_1 = require("./generator/utils/loading");
const templates_1 = require("./generator/utils/templates");
var loading_2 = require("./generator/utils/loading");
Object.defineProperty(exports, "buildSchema", { enumerable: true, get: function () { return loading_2.buildSchema; } });
function generateGraphQLDocuments(schema, options) {
const opts = Object.assign({ maxDepth: 2, useExternalFragmentForS3Object: true, typenameIntrospection: true }, options);
const extendedSchema = (0, loading_1.buildSchema)(schema);
const gqlOperations = (0, generator_1.default)(extendedSchema, opts.maxDepth, {
useExternalFragmentForS3Object: opts.useExternalFragmentForS3Object,
typenameIntrospection: opts.typenameIntrospection,
});
registerPartials();
registerHelpers();
const allOperations = {
queries: new Map(),
mutations: new Map(),
subscriptions: new Map(),
fragments: new Map(),
};
['queries', 'mutations', 'subscriptions'].forEach(op => {
const ops = gqlOperations[op];
if (ops.length) {
const renderedOperations = renderOperations(gqlOperations[op], options.includeMetaData);
allOperations[op] = renderedOperations;
}
});
if (gqlOperations.fragments.length) {
const renderedFragments = renderFragments(gqlOperations.fragments, opts.useExternalFragmentForS3Object);
allOperations['fragments'] = renderedFragments;
}
return allOperations;
}
exports.generateGraphQLDocuments = generateGraphQLDocuments;
function renderOperations(operations, includeMetaData) {
const renderedOperations = new Map();
if (operations === null || operations === void 0 ? void 0 : operations.length) {
operations.forEach(op => {
const name = op.fieldName || op.name;
const gql = renderOperation(op);
if (includeMetaData) {
renderedOperations.set(name, {
graphql: gql,
operationName: op.name,
operationType: op.type,
fieldName: op.fieldName,
});
}
else {
renderedOperations.set(name, gql);
}
});
}
return renderedOperations;
}
function renderOperation(operation) {
const templateStr = (0, templates_1.getOperationPartial)();
const template = handlebars.compile(templateStr, {
noEscape: true,
preventIndent: true,
});
return template(operation);
}
function renderFragments(fragments, useExternalFragmentForS3Object) {
const renderedFragments = new Map();
if (fragments === null || fragments === void 0 ? void 0 : fragments.length) {
fragments.forEach(fragment => {
const name = fragment.name;
const gql = renderFragment(fragment, useExternalFragmentForS3Object);
renderedFragments.set(name, gql);
});
}
return renderedFragments;
}
function renderFragment(fragment, useExternalFragmentForS3Object) {
if (!useExternalFragmentForS3Object) {
return;
}
const templateStr = (0, templates_1.getExternalFragmentPartial)();
const template = handlebars.compile(templateStr, {
noEscape: true,
preventIndent: true,
});
return template(fragment);
}
function registerPartials() {
const partials = (0, templates_1.getTemplatePartials)();
for (const [partialName, partialContent] of Object.entries(partials)) {
handlebars.registerPartial(partialName, partialContent);
}
}
function registerHelpers() {
const formatNameHelper = generator_1.lowerCaseFirstLetter;
handlebars.registerHelper('formatName', formatNameHelper);
}
//# sourceMappingURL=index.js.map