MCPcopy Create free account
hub / github.com/DavidWells/analytics / parseDomain

Function parseDomain

packages/analytics-utils/src/parseReferrer.js:80–112  ·  view source on GitHub ↗

* Client side domain parser for determining marketing data. * @param {String} referrer - ref url * @return {DomainObject | boolean}

(referrer)

Source from the content-addressed store, hash-verified

78 * @return {DomainObject | boolean}
79 */
80function parseDomain(referrer) {
81 if (!referrer || !isBrowser) return false
82
83 let referringDomain = getDomainBase(referrer)
84 const a = document.createElement('a')
85 a.href = referrer
86
87 // Shim for the billion google search engines
88 if (a.hostname.indexOf(googleKey) > -1) {
89 referringDomain = googleKey
90 }
91
92 // If is search engine
93 if (searchEngines[referringDomain]) {
94 const searchEngine = searchEngines[referringDomain]
95 const queryParam = (typeof searchEngine === 'string') ? searchEngine : searchEngine.p
96 const termRegex = new RegExp(queryParam + '=.*?([^&#]*|$)', 'gi')
97 const term = a.search.match(termRegex)
98
99 return {
100 source: searchEngine.n || trimTld(referringDomain),
101 medium: 'organic',
102 term: (term ? term[0].split('=')[1] : '') || '(not provided)'
103 }
104 }
105
106 // Default
107 const medium = (!isExternalReferrer(referrer)) ? 'internal' : 'referral'
108 return {
109 source: a.hostname,
110 medium: medium
111 }
112}
113
114/**
115 * Search engine query string data

Callers 1

parseReferrerFunction · 0.85

Calls 3

getDomainBaseFunction · 0.90
trimTldFunction · 0.90
isExternalReferrerFunction · 0.90

Tested by

no test coverage detected