dd-trace
Version:
Datadog APM tracing client for JavaScript
37 lines (29 loc) • 980 B
JavaScript
const log = require('../../log')
const urlFilter = {
getFilter (config) {
if (typeof config.filter === 'function') {
return config.filter
} else if (config.hasOwnProperty('filter')) {
log.error('Expected `filter` to be a function. Overriding filter property to default.')
}
const allowlist = config.allowlist || config.whitelist || /.*/
const blocklist = config.blocklist || config.blacklist || []
return uri => {
const allowed = applyFilter(allowlist, uri)
const blocked = applyFilter(blocklist, uri)
return allowed && !blocked
}
function applyFilter (filter, uri) {
if (typeof filter === 'function') {
return filter(uri)
} else if (filter instanceof RegExp) {
return filter.test(uri)
} else if (filter instanceof Array) {
return filter.some(filter => applyFilter(filter, uri))
}
return filter === uri
}
}
}
module.exports = urlFilter