From 7530de87d233b04d88f1fefd425c822bdf7502f4 Mon Sep 17 00:00:00 2001 From: Mike Cao Date: Thu, 17 Mar 2022 19:27:43 -0700 Subject: [PATCH] Filter subdomains in referrers regex test. Closes #632 --- lib/filters.js | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/filters.js b/lib/filters.js index af54b965..e9723b42 100644 --- a/lib/filters.js +++ b/lib/filters.js @@ -1,5 +1,5 @@ import { BROWSERS } from './constants'; -import { removeTrailingSlash, removeWWW, getDomainName } from './url'; +import { removeTrailingSlash, removeWWW } from './url'; export const urlFilter = (data, { raw }) => { const isValidUrl = url => { @@ -46,23 +46,18 @@ export const urlFilter = (data, { raw }) => { }; export const refFilter = (data, { domain, domainOnly, raw }) => { - const domainName = getDomainName(domain); - const regex = new RegExp(`http[s]?://${domainName}`); + const regex = new RegExp(`http[s]?://([a-z0-9-]+\\.)*${domain}`); const links = {}; const isValidRef = ref => { return ref !== '' && ref !== null && !ref.startsWith('/') && !ref.startsWith('#'); }; - if (raw) { - return data.filter(({ x }) => isValidRef(x) && !regex.test(x)); - } - const cleanUrl = url => { try { const { hostname, origin, pathname, searchParams, protocol } = new URL(url); - if (hostname === domainName) { + if (regex.test(url)) { return null; } @@ -88,6 +83,10 @@ export const refFilter = (data, { domain, domainOnly, raw }) => { } }; + if (raw) { + return data.filter(({ x }) => isValidRef(x) && !regex.test(x)); + } + const map = data.reduce((obj, { x, y }) => { if (!isValidRef(x)) { return obj;