@tsclean/core
Version:
Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.
45 lines • 6.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RouteInfoPathExtractor = void 0;
const shared_utils_1 = require("../utils/shared.utils");
const utils_1 = require("../router/utils");
class RouteInfoPathExtractor {
constructor(applicationConfig) {
this.applicationConfig = applicationConfig;
this.prefixPath = (0, shared_utils_1.stripEndSlash)((0, shared_utils_1.addLeadingSlash)(this.applicationConfig.getGlobalPrefix()));
this.excludedGlobalPrefixRoutes =
this.applicationConfig.getGlobalPrefixOptions().exclude;
}
extractPathsFrom({ path, method }) {
if (this.isAWildcard(path)) {
const entries = this.prefixPath
? [this.prefixPath + '$', this.prefixPath + (0, shared_utils_1.addLeadingSlash)(path)]
: [(0, shared_utils_1.addLeadingSlash)(path)];
return Array.isArray(this.excludedGlobalPrefixRoutes)
? [
...entries,
...this.excludedGlobalPrefixRoutes.map(route => (0, shared_utils_1.addLeadingSlash)(route.path))
]
: entries;
}
return this.extractNonWildcardPathsFrom({ path, method });
}
extractPathFrom(route) {
if (this.isAWildcard(route.path)) {
return [(0, shared_utils_1.addLeadingSlash)(route.path)];
}
return this.extractNonWildcardPathsFrom(route);
}
isAWildcard(path) {
return ['*', '/*', '/*/', '(.*)', '/(.*)'].includes(path);
}
extractNonWildcardPathsFrom({ path, method }) {
if (Array.isArray(this.excludedGlobalPrefixRoutes) &&
(0, utils_1.isRouteExcluded)(this.excludedGlobalPrefixRoutes, path, method)) {
return [(0, shared_utils_1.addLeadingSlash)(path)];
}
return [this.prefixPath + (0, shared_utils_1.addLeadingSlash)(path)];
}
}
exports.RouteInfoPathExtractor = RouteInfoPathExtractor;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtaW5mby1wYXRoLWV4dHJhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWRkbGV3YXJlL3JvdXRlLWluZm8tcGF0aC1leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0RBQXNFO0FBRXRFLDJDQUFpRDtBQUdqRCxNQUFhLHNCQUFzQjtJQUlqQyxZQUE4QixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNoRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUEsNEJBQWEsRUFDN0IsSUFBQSw4QkFBZSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUMxRCxDQUFBO1FBQ0QsSUFBSSxDQUFDLDBCQUEwQjtZQUM3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxPQUFPLENBQUE7SUFDM0QsQ0FBQztJQUVNLGdCQUFnQixDQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBYTtRQUNsRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVTtnQkFDN0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFBLDhCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xFLENBQUMsQ0FBQyxDQUFDLElBQUEsOEJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBRTNCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUM7Z0JBQ25ELENBQUMsQ0FBQztvQkFDRSxHQUFHLE9BQU87b0JBQ1YsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQzdDLElBQUEsOEJBQWUsRUFBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQzVCO2lCQUNGO2dCQUNILENBQUMsQ0FBQyxPQUFPLENBQUE7UUFDYixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBRU0sZUFBZSxDQUFFLEtBQWdCO1FBQ3RDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqQyxPQUFPLENBQUMsSUFBQSw4QkFBZSxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3RDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRCxDQUFDO0lBRU8sV0FBVyxDQUFFLElBQVk7UUFDL0IsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDM0QsQ0FBQztJQUVPLDJCQUEyQixDQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBYTtRQUM5RCxJQUNFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDO1lBQzlDLElBQUEsdUJBQWUsRUFBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUM5RCxDQUFDO1lBQ0QsT0FBTyxDQUFDLElBQUEsOEJBQWUsRUFBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFBLDhCQUFlLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0NBQ0Y7QUFyREQsd0RBcURDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYWRkTGVhZGluZ1NsYXNoLCBzdHJpcEVuZFNsYXNoIH0gZnJvbSAnLi4vdXRpbHMvc2hhcmVkLnV0aWxzJ1xuaW1wb3J0IHsgQXBwbGljYXRpb25Db25maWcgfSBmcm9tICcuLi9hcHAnXG5pbXBvcnQgeyBpc1JvdXRlRXhjbHVkZWQgfSBmcm9tICcuLi9yb3V0ZXIvdXRpbHMnXG5pbXBvcnQgeyBFeGNsdWRlUm91dGVNZXRhZGF0YUludGVyZmFjZSwgUm91dGVJbmZvIH0gZnJvbSAnLi4vY29udHJhY3RzJ1xuXG5leHBvcnQgY2xhc3MgUm91dGVJbmZvUGF0aEV4dHJhY3RvciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlZml4UGF0aDogc3RyaW5nXG4gIHByaXZhdGUgcmVhZG9ubHkgZXhjbHVkZWRHbG9iYWxQcmVmaXhSb3V0ZXM6IEV4Y2x1ZGVSb3V0ZU1ldGFkYXRhSW50ZXJmYWNlW11cblxuICBjb25zdHJ1Y3RvciAocHJpdmF0ZSByZWFkb25seSBhcHBsaWNhdGlvbkNvbmZpZzogQXBwbGljYXRpb25Db25maWcpIHtcbiAgICB0aGlzLnByZWZpeFBhdGggPSBzdHJpcEVuZFNsYXNoKFxuICAgICAgYWRkTGVhZGluZ1NsYXNoKHRoaXMuYXBwbGljYXRpb25Db25maWcuZ2V0R2xvYmFsUHJlZml4KCkpXG4gICAgKVxuICAgIHRoaXMuZXhjbHVkZWRHbG9iYWxQcmVmaXhSb3V0ZXMgPVxuICAgICAgdGhpcy5hcHBsaWNhdGlvbkNvbmZpZy5nZXRHbG9iYWxQcmVmaXhPcHRpb25zKCkuZXhjbHVkZVxuICB9XG5cbiAgcHVibGljIGV4dHJhY3RQYXRoc0Zyb20gKHsgcGF0aCwgbWV0aG9kIH06IFJvdXRlSW5mbyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5pc0FXaWxkY2FyZChwYXRoKSkge1xuICAgICAgY29uc3QgZW50cmllcyA9IHRoaXMucHJlZml4UGF0aFxuICAgICAgICA/IFt0aGlzLnByZWZpeFBhdGggKyAnJCcsIHRoaXMucHJlZml4UGF0aCArIGFkZExlYWRpbmdTbGFzaChwYXRoKV1cbiAgICAgICAgOiBbYWRkTGVhZGluZ1NsYXNoKHBhdGgpXVxuXG4gICAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLmV4Y2x1ZGVkR2xvYmFsUHJlZml4Um91dGVzKVxuICAgICAgICA/IFtcbiAgICAgICAgICAgIC4uLmVudHJpZXMsXG4gICAgICAgICAgICAuLi50aGlzLmV4Y2x1ZGVkR2xvYmFsUHJlZml4Um91dGVzLm1hcChyb3V0ZSA9PlxuICAgICAgICAgICAgICBhZGRMZWFkaW5nU2xhc2gocm91dGUucGF0aClcbiAgICAgICAgICAgIClcbiAgICAgICAgICBdXG4gICAgICAgIDogZW50cmllc1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4dHJhY3ROb25XaWxkY2FyZFBhdGhzRnJvbSh7IHBhdGgsIG1ldGhvZCB9KVxuICB9XG5cbiAgcHVibGljIGV4dHJhY3RQYXRoRnJvbSAocm91dGU6IFJvdXRlSW5mbyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy5pc0FXaWxkY2FyZChyb3V0ZS5wYXRoKSkge1xuICAgICAgcmV0dXJuIFthZGRMZWFkaW5nU2xhc2gocm91dGUucGF0aCldXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZXh0cmFjdE5vbldpbGRjYXJkUGF0aHNGcm9tKHJvdXRlKVxuICB9XG5cbiAgcHJpdmF0ZSBpc0FXaWxkY2FyZCAocGF0aDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIFsnKicsICcvKicsICcvKi8nLCAnKC4qKScsICcvKC4qKSddLmluY2x1ZGVzKHBhdGgpXG4gIH1cblxuICBwcml2YXRlIGV4dHJhY3ROb25XaWxkY2FyZFBhdGhzRnJvbSAoeyBwYXRoLCBtZXRob2QgfTogUm91dGVJbmZvKTogc3RyaW5nW10ge1xuICAgIGlmIChcbiAgICAgIEFycmF5LmlzQXJyYXkodGhpcy5leGNsdWRlZEdsb2JhbFByZWZpeFJvdXRlcykgJiZcbiAgICAgIGlzUm91dGVFeGNsdWRlZCh0aGlzLmV4Y2x1ZGVkR2xvYmFsUHJlZml4Um91dGVzLCBwYXRoLCBtZXRob2QpXG4gICAgKSB7XG4gICAgICByZXR1cm4gW2FkZExlYWRpbmdTbGFzaChwYXRoKV07XG4gICAgfVxuXG4gICAgcmV0dXJuIFt0aGlzLnByZWZpeFBhdGggKyBhZGRMZWFkaW5nU2xhc2gocGF0aCldO1xuICB9XG59XG4iXX0=