UNPKG

@nestia/sdk

Version:

Nestia SDK and Swagger generator

67 lines 2.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.PathAnalyzer = void 0; const path_1 = __importDefault(require("path")); const path_to_regexp_1 = require("path-to-regexp"); var PathAnalyzer; (function (PathAnalyzer) { PathAnalyzer.join = (...args) => "/" + _Trim(path_1.default .join(...args.filter((s) => !!s.length)) .split("\\") .join("/")); PathAnalyzer.escape = (str) => { const args = _Parse(str); if (args === null) return null; return ("/" + args .map((arg) => (arg.type === "param" ? `:${arg.value}` : arg.value)) .join("/")); }; PathAnalyzer.parameters = (str) => { const args = _Parse(str); if (args === null) return null; return args.filter((arg) => arg.type === "param").map((arg) => arg.value); }; function _Parse(str) { const tokens = (() => { try { return (0, path_to_regexp_1.parse)(path_1.default.join(str).split("\\").join("/")); } catch (_a) { return null; } })(); if (tokens === null) return null; const output = []; for (const key of tokens) { if (typeof key === "string") output.push({ type: "path", value: _Trim(key), }); else if (typeof key.name === "number" || _Trim(key.name) === "") return null; else output.push({ type: "param", value: _Trim(key.name), }); } return output; } function _Trim(str) { if (str[0] === "/") str = str.substring(1); if (str[str.length - 1] === "/") str = str.substring(0, str.length - 1); return str; } })(PathAnalyzer || (exports.PathAnalyzer = PathAnalyzer = {})); //# sourceMappingURL=PathAnalyzer.js.map