UNPKG

@tsclean/core

Version:

Plugin for API Rest Full development, based on Clean Architecture, IoC and Dependency Injection.

46 lines 7.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RoutePathFactory = void 0; const utils_1 = require("./utils"); const utils_2 = require("../utils"); class RoutePathFactory { constructor(applicationConfig) { this.applicationConfig = applicationConfig; } create(metadata, requestMethod) { let paths = ['']; paths = this.appendToAllIfDefined(paths, metadata.modulePath); paths = this.appendToAllIfDefined(paths, metadata.ctrlPath); paths = this.appendToAllIfDefined(paths, metadata.methodPath); if (metadata.globalPrefix) { paths = paths.map(path => { if (this.isExcludedFromGlobalPrefix(path, requestMethod)) { return path; } return (0, utils_2.stripEndSlash)(metadata.globalPrefix || '') + path; }); } return paths .map(path => (0, utils_2.addLeadingSlash)(path || '/')) .map(path => (path !== '/' ? (0, utils_2.stripEndSlash)(path) : path)); } appendToAllIfDefined(paths, fragmentToAppend) { if (!fragmentToAppend) return paths; const concatPaths = (a, b) => (0, utils_2.stripEndSlash)(a) + (0, utils_2.addLeadingSlash)(b); if (Array.isArray(fragmentToAppend)) { const paths2dArray = paths.map(path => fragmentToAppend.map(fragment => concatPaths(path, fragment))); return (0, utils_2.flatten)(paths2dArray); } return paths.map(path => concatPaths(path, fragmentToAppend)); } isExcludedFromGlobalPrefix(path, requestMethod) { if ((0, utils_2.isUndefined)(requestMethod)) return false; const options = this.applicationConfig.getGlobalPrefixOptions(); const excludedRoutes = options.exclude; return (Array.isArray(excludedRoutes) && (0, utils_1.isRouteExcluded)(excludedRoutes, path, requestMethod)); } } exports.RoutePathFactory = RoutePathFactory; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtcGF0aC1mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3JvdXRlci9yb3V0ZS1wYXRoLWZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXdDO0FBRXhDLG9DQUE4RTtBQUk5RSxNQUFhLGdCQUFnQjtJQUN6QixZQUE2QixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUNqRSxDQUFDO0lBRU0sTUFBTSxDQUFDLFFBQW9DLEVBQUUsYUFBNkI7UUFDN0UsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUVqQixLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsS0FBSyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVELEtBQUssR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUU5RCxJQUFJLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDckIsSUFBSSxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELE9BQU8sSUFBSSxDQUFDO2dCQUNoQixDQUFDO2dCQUNELE9BQU8sSUFBQSxxQkFBYSxFQUFDLFFBQVEsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQzdELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELE9BQU8sS0FBSzthQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUEsdUJBQWUsRUFBQyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7YUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFBLHFCQUFhLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVNLG9CQUFvQixDQUFDLEtBQWUsRUFBRSxnQkFBK0M7UUFDeEYsSUFBSSxDQUFDLGdCQUFnQjtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXBDLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQUMsSUFBQSxxQkFBYSxFQUFDLENBQUMsQ0FBQyxHQUFHLElBQUEsdUJBQWUsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUVwRixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RyxPQUFPLElBQUEsZUFBTyxFQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRU0sMEJBQTBCLENBQUMsSUFBWSxFQUFFLGFBQTZCO1FBQ3pFLElBQUksSUFBQSxtQkFBVyxFQUFDLGFBQWEsQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRTdDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2hFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDdkMsT0FBTyxDQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksSUFBQSx1QkFBZSxFQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQ3hGLENBQUM7SUFDTixDQUFDO0NBQ0o7QUE5Q0QsNENBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtpc1JvdXRlRXhjbHVkZWR9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHtBcHBsaWNhdGlvbkNvbmZpZ30gZnJvbSBcIi4uL2FwcFwiO1xuaW1wb3J0IHthZGRMZWFkaW5nU2xhc2gsIGZsYXR0ZW4sIGlzVW5kZWZpbmVkLCBzdHJpcEVuZFNsYXNofSBmcm9tIFwiLi4vdXRpbHNcIjtcbmltcG9ydCB7UmVxdWVzdE1ldGhvZH0gZnJvbSBcIi4uL2VudW1zXCI7XG5pbXBvcnQge1JvdXRlUGF0aE1ldGFkYXRhSW50ZXJmYWNlfSBmcm9tIFwiLi4vY29udHJhY3RzXCI7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZVBhdGhGYWN0b3J5IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGFwcGxpY2F0aW9uQ29uZmlnOiBBcHBsaWNhdGlvbkNvbmZpZykge1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGUobWV0YWRhdGE6IFJvdXRlUGF0aE1ldGFkYXRhSW50ZXJmYWNlLCByZXF1ZXN0TWV0aG9kPzogUmVxdWVzdE1ldGhvZCk6IHN0cmluZ1tdIHtcbiAgICAgICAgbGV0IHBhdGhzID0gWycnXTtcblxuICAgICAgICBwYXRocyA9IHRoaXMuYXBwZW5kVG9BbGxJZkRlZmluZWQocGF0aHMsIG1ldGFkYXRhLm1vZHVsZVBhdGgpO1xuICAgICAgICBwYXRocyA9IHRoaXMuYXBwZW5kVG9BbGxJZkRlZmluZWQocGF0aHMsIG1ldGFkYXRhLmN0cmxQYXRoKTtcbiAgICAgICAgcGF0aHMgPSB0aGlzLmFwcGVuZFRvQWxsSWZEZWZpbmVkKHBhdGhzLCBtZXRhZGF0YS5tZXRob2RQYXRoKTtcblxuICAgICAgICBpZiAobWV0YWRhdGEuZ2xvYmFsUHJlZml4KSB7XG4gICAgICAgICAgICBwYXRocyA9IHBhdGhzLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0V4Y2x1ZGVkRnJvbUdsb2JhbFByZWZpeChwYXRoLCByZXF1ZXN0TWV0aG9kKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cmlwRW5kU2xhc2gobWV0YWRhdGEuZ2xvYmFsUHJlZml4IHx8ICcnKSArIHBhdGg7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXRoc1xuICAgICAgICAgICAgLm1hcChwYXRoID0+IGFkZExlYWRpbmdTbGFzaChwYXRoIHx8ICcvJykpXG4gICAgICAgICAgICAubWFwKHBhdGggPT4gKHBhdGggIT09ICcvJyA/IHN0cmlwRW5kU2xhc2gocGF0aCkgOiBwYXRoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFwcGVuZFRvQWxsSWZEZWZpbmVkKHBhdGhzOiBzdHJpbmdbXSwgZnJhZ21lbnRUb0FwcGVuZDogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQpOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICghZnJhZ21lbnRUb0FwcGVuZCkgcmV0dXJuIHBhdGhzO1xuXG4gICAgICAgIGNvbnN0IGNvbmNhdFBhdGhzID0gKGE6IHN0cmluZywgYjogc3RyaW5nKSA9PiBzdHJpcEVuZFNsYXNoKGEpICsgYWRkTGVhZGluZ1NsYXNoKGIpO1xuXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGZyYWdtZW50VG9BcHBlbmQpKSB7XG4gICAgICAgICAgICBjb25zdCBwYXRoczJkQXJyYXkgPSBwYXRocy5tYXAocGF0aCA9PiBmcmFnbWVudFRvQXBwZW5kLm1hcChmcmFnbWVudCA9PiBjb25jYXRQYXRocyhwYXRoLCBmcmFnbWVudCkpKTtcbiAgICAgICAgICAgIHJldHVybiBmbGF0dGVuKHBhdGhzMmRBcnJheSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhdGhzLm1hcChwYXRoID0+IGNvbmNhdFBhdGhzKHBhdGgsIGZyYWdtZW50VG9BcHBlbmQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNFeGNsdWRlZEZyb21HbG9iYWxQcmVmaXgocGF0aDogc3RyaW5nLCByZXF1ZXN0TWV0aG9kPzogUmVxdWVzdE1ldGhvZCkge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQocmVxdWVzdE1ldGhvZCkpIHJldHVybiBmYWxzZTtcblxuICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5hcHBsaWNhdGlvbkNvbmZpZy5nZXRHbG9iYWxQcmVmaXhPcHRpb25zKCk7XG4gICAgICAgIGNvbnN0IGV4Y2x1ZGVkUm91dGVzID0gb3B0aW9ucy5leGNsdWRlO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShleGNsdWRlZFJvdXRlcykgJiYgaXNSb3V0ZUV4Y2x1ZGVkKGV4Y2x1ZGVkUm91dGVzLCBwYXRoLCByZXF1ZXN0TWV0aG9kKVxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==