@vtex/api
Version:
VTEX I/O API client
62 lines (61 loc) • 3.8 kB
JavaScript
;
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;