Files
apophis-fastify/src/infrastructure/wildcard-match.ts
T

23 lines
791 B
TypeScript
Raw Normal View History

function escapeRegex(str: string): string {
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
}
export function matchesTarget(url: string, target: string): boolean {
if (target === url) return true
if (target.includes('*')) {
const escaped = escapeRegex(target)
const regex = new RegExp('^' + escaped.replace(/\\\*/g, '.*') + '$')
return regex.test(url)
}
return url.includes(target)
}
export function matchesWildcardPattern(value: string, pattern: string): boolean {
if (!pattern.includes('*') && !pattern.includes('?')) {
return value.toLowerCase() === pattern.toLowerCase()
}
const escaped = escapeRegex(pattern)
const regexPattern = '^' + escaped.replace(/\\\*/g, '.*').replace(/\\\?/g, '.') + '$'
return new RegExp(regexPattern, 'i').test(value)
}