@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
44 lines • 1.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.matchPath = void 0;
var pathToRegex_1 = require("./pathToRegex");
var matchPath = function (targetPath, operationPath) {
var expression = targetPath instanceof RegExp ? targetPath : (0, pathToRegex_1.pathToRegExp)(targetPath);
var match = expression.exec(operationPath) || false;
if (!match)
return false;
var targetSegments = typeof targetPath === 'string' ? targetPath.split('/') : [];
var operationSegments = operationPath.split('/');
if (targetSegments.length > 0 && operationSegments.length > 0) {
var lastTargetSegment = targetSegments[targetSegments.length - 1];
var lastOperationSegment = operationSegments[operationSegments.length - 1];
if (lastTargetSegment === '*') {
return true;
}
if (lastTargetSegment.includes('*')) {
var baseSegment = lastTargetSegment.replace(/\*/g, '');
if (lastOperationSegment.startsWith(baseSegment)) {
return true;
}
}
if (typeof targetPath === 'string' && targetPath.endsWith('*')) {
var basePath = targetPath.slice(0, -1);
if (operationPath.startsWith(basePath)) {
return true;
}
}
if (targetSegments.length !== operationSegments.length) {
return false;
}
if (lastTargetSegment.startsWith(':')) {
return true;
}
if (lastTargetSegment !== lastOperationSegment) {
return false;
}
}
var matches = targetPath instanceof RegExp ? !!match : !!match && match[0] === match.input;
return matches;
};
exports.matchPath = matchPath;
//# sourceMappingURL=matchPath.js.map