@nestia/sdk
Version:
Nestia SDK and Swagger generator
67 lines • 2.23 kB
JavaScript
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
;