????
Current Path : C:/inetpub/vhost/invest.gdtsolutions.vn/api/node_modules/@nestjs/core/middleware/ |
Current File : C:/inetpub/vhost/invest.gdtsolutions.vn/api/node_modules/@nestjs/core/middleware/utils.js |
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isMiddlewareRouteExcluded = exports.assignToken = exports.isMiddlewareClass = exports.mapToClass = exports.filterMiddleware = exports.mapToExcludeRoute = void 0; const common_1 = require("@nestjs/common"); const shared_utils_1 = require("@nestjs/common/utils/shared.utils"); const iterare_1 = require("iterare"); const pathToRegexp = require("path-to-regexp"); const uid_1 = require("uid"); const utils_1 = require("../router/utils"); const mapToExcludeRoute = (routes) => { return routes.map(route => { if ((0, shared_utils_1.isString)(route)) { return { path: route, requestMethod: common_1.RequestMethod.ALL, pathRegex: pathToRegexp((0, shared_utils_1.addLeadingSlash)(route)), }; } return { path: route.path, requestMethod: route.method, pathRegex: pathToRegexp((0, shared_utils_1.addLeadingSlash)(route.path)), }; }); }; exports.mapToExcludeRoute = mapToExcludeRoute; const filterMiddleware = (middleware, routes, httpAdapter) => { const excludedRoutes = (0, exports.mapToExcludeRoute)(routes); return (0, iterare_1.iterate)([]) .concat(middleware) .filter(shared_utils_1.isFunction) .map((item) => (0, exports.mapToClass)(item, excludedRoutes, httpAdapter)) .toArray(); }; exports.filterMiddleware = filterMiddleware; const mapToClass = (middleware, excludedRoutes, httpAdapter) => { if (isMiddlewareClass(middleware)) { if (excludedRoutes.length <= 0) { return middleware; } const MiddlewareHost = class extends middleware { use(...params) { const [req, _, next] = params; const isExcluded = isMiddlewareRouteExcluded(req, excludedRoutes, httpAdapter); if (isExcluded) { return next(); } return super.use(...params); } }; return assignToken(MiddlewareHost, middleware.name); } return assignToken(class { constructor() { this.use = (...params) => { const [req, _, next] = params; const isExcluded = isMiddlewareRouteExcluded(req, excludedRoutes, httpAdapter); if (isExcluded) { return next(); } return middleware(...params); }; } }); }; exports.mapToClass = mapToClass; function isMiddlewareClass(middleware) { const middlewareStr = middleware.toString(); if (middlewareStr.substring(0, 5) === 'class') { return true; } const middlewareArr = middlewareStr.split(' '); return (middlewareArr[0] === 'function' && /[A-Z]/.test(middlewareArr[1]?.[0]) && (0, shared_utils_1.isFunction)(middleware.prototype?.use)); } exports.isMiddlewareClass = isMiddlewareClass; function assignToken(metatype, token = (0, uid_1.uid)(21)) { Object.defineProperty(metatype, 'name', { value: token }); return metatype; } exports.assignToken = assignToken; function isMiddlewareRouteExcluded(req, excludedRoutes, httpAdapter) { if (excludedRoutes.length <= 0) { return false; } const reqMethod = httpAdapter.getRequestMethod(req); const originalUrl = httpAdapter.getRequestUrl(req); const queryParamsIndex = originalUrl && originalUrl.indexOf('?'); const pathname = queryParamsIndex >= 0 ? originalUrl.slice(0, queryParamsIndex) : originalUrl; return (0, utils_1.isRouteExcluded)(excludedRoutes, pathname, common_1.RequestMethod[reqMethod]); } exports.isMiddlewareRouteExcluded = isMiddlewareRouteExcluded;