UNPKG

@apideck/portman

Version:

Port OpenAPI Spec to Postman Collection, with contract & variation tests included

44 lines 1.79 kB
"use strict"; 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