@vtex/api
Version:
VTEX I/O API client
30 lines (29 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createGraphQLRoute = exports.GRAPHQL_ROUTE = void 0;
const tracingMiddlewares_1 = require("../../../tracing/tracingMiddlewares");
const http_1 = require("../http");
const context_1 = require("./middlewares/context");
const error_1 = require("./middlewares/error");
const query_1 = require("./middlewares/query");
const response_1 = require("./middlewares/response");
const run_1 = require("./middlewares/run");
const updateSchema_1 = require("./middlewares/updateSchema");
const upload_1 = require("./middlewares/upload");
const schema_1 = require("./schema");
exports.GRAPHQL_ROUTE = '__graphql';
const createGraphQLRoute = (graphql, clientsConfig, serviceRoute, routeId, globalLimiter) => {
const executableSchema = (0, schema_1.makeSchema)(graphql);
const pipeline = [
(0, tracingMiddlewares_1.nameSpanOperationMiddleware)('graphql-handler', exports.GRAPHQL_ROUTE),
(0, updateSchema_1.updateSchema)(graphql, executableSchema),
context_1.injectGraphqlContext,
response_1.response,
error_1.graphqlError,
upload_1.upload,
(0, query_1.extractQuery)(executableSchema),
(0, run_1.run)(executableSchema),
];
return (0, http_1.createPrivateHttpRoute)(clientsConfig, pipeline, serviceRoute, routeId, globalLimiter);
};
exports.createGraphQLRoute = createGraphQLRoute;