in monolith-to-microservices-based-on-paths/apiproxy/resources/jsc/pathMatcher.js [26:68]
function findMatchingPattern(inputPath, patterns) {
// Normalize the input path
inputPath = inputPath.trim();
// First try exact match for better performance
if (patterns.indexOf(inputPath) !== -1) {
return inputPath;
}
// Split paths into segments
var inputSegments = inputPath.split('/');
// Find matching pattern
for (var i = 0; i < patterns.length; i++) {
var pattern = patterns[i];
var patternSegments = pattern.split('/');
// Skip if segments length doesn't match
if (inputSegments.length !== patternSegments.length) {
continue;
}
var matches = true;
for (var j = 0; j < patternSegments.length; j++) {
// Skip empty segments (from leading slash)
if (patternSegments[j] === '') continue;
// If pattern segment is *, any input segment matches
// Otherwise, segments must match exactly
if (patternSegments[j] !== '*' &&
patternSegments[j] !== inputSegments[j]) {
matches = false;
break;
}
}
if (matches) {
return pattern;
}
}
return null;
}