UNPKG

@vtex/api

Version:
62 lines (61 loc) 3.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createPublicHttpRoute = exports.createPrivateHttpRoute = void 0; const tracingMiddlewares_1 = require("../../../tracing/tracingMiddlewares"); const compose_1 = require("../utils/compose"); const toArray_1 = require("../utils/toArray"); const authTokens_1 = require("./middlewares/authTokens"); const cancellationToken_1 = require("./middlewares/cancellationToken"); const clients_1 = require("./middlewares/clients"); const context_1 = require("./middlewares/context"); const rateLimit_1 = require("./middlewares/rateLimit"); const requestStats_1 = require("./middlewares/requestStats"); const setCookie_1 = require("./middlewares/setCookie"); const settings_1 = require("./middlewares/settings"); const timings_1 = require("./middlewares/timings"); const vary_1 = require("./middlewares/vary"); const createPrivateHttpRoute = (clientsConfig, serviceHandler, serviceRoute, routeId, globalLimiter) => { var _a, _b; const { implementation, options } = clientsConfig; const middlewares = (0, toArray_1.toArray)(serviceHandler); const pipeline = [ (0, tracingMiddlewares_1.nameSpanOperationMiddleware)('private-handler', routeId), (0, context_1.createPvtContextMiddleware)(routeId, serviceRoute), cancellationToken_1.cancellationToken, requestStats_1.trackIncomingRequestStats, vary_1.vary, authTokens_1.authTokens, (0, clients_1.clients)(implementation, options), ...(serviceRoute.settingsType === 'workspace' || serviceRoute.settingsType === 'userAndWorkspace' ? [(0, settings_1.getServiceSettings)()] : []), timings_1.timings, (0, rateLimit_1.concurrentRateLimiter)((_a = serviceRoute === null || serviceRoute === void 0 ? void 0 : serviceRoute.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent), (0, rateLimit_1.perMinuteRateLimiter)((_b = serviceRoute === null || serviceRoute === void 0 ? void 0 : serviceRoute.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute, globalLimiter), (0, tracingMiddlewares_1.traceUserLandRemainingPipelineMiddleware)(), ...middlewares, ]; return (0, compose_1.compose)(pipeline); }; exports.createPrivateHttpRoute = createPrivateHttpRoute; const createPublicHttpRoute = (clientsConfig, serviceHandler, serviceRoute, routeId, globalLimiter) => { var _a, _b; const { implementation, options } = clientsConfig; const middlewares = (0, toArray_1.toArray)(serviceHandler); const pipeline = [ (0, tracingMiddlewares_1.nameSpanOperationMiddleware)('public-handler', routeId), (0, context_1.createPubContextMiddleware)(routeId, serviceRoute), cancellationToken_1.cancellationToken, requestStats_1.trackIncomingRequestStats, vary_1.vary, authTokens_1.authTokens, (0, clients_1.clients)(implementation, options), ...(serviceRoute.settingsType === 'workspace' || serviceRoute.settingsType === 'userAndWorkspace' ? [(0, settings_1.getServiceSettings)()] : []), setCookie_1.removeSetCookie, timings_1.timings, (0, rateLimit_1.concurrentRateLimiter)((_a = serviceRoute === null || serviceRoute === void 0 ? void 0 : serviceRoute.rateLimitPerReplica) === null || _a === void 0 ? void 0 : _a.concurrent), (0, rateLimit_1.perMinuteRateLimiter)((_b = serviceRoute === null || serviceRoute === void 0 ? void 0 : serviceRoute.rateLimitPerReplica) === null || _b === void 0 ? void 0 : _b.perMinute, globalLimiter), (0, tracingMiddlewares_1.traceUserLandRemainingPipelineMiddleware)(), ...middlewares, ]; return (0, compose_1.compose)(pipeline); }; exports.createPublicHttpRoute = createPublicHttpRoute;