100 lines
3.9 KiB
JavaScript
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
|