mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-27 02:51:57 +02:00
Track utm_content param and replace utm_term in utm-tags property GitOrigin-RevId: 868274a3dc4f44705f1e8340592ee05acc471b19
57 lines
1.1 KiB
JavaScript
57 lines
1.1 KiB
JavaScript
const RefererParser = require('referer-parser')
|
|
const { URL } = require('url')
|
|
|
|
const UTM_KEYS = [
|
|
'utm_campaign',
|
|
'utm_source',
|
|
'utm_term',
|
|
'utm_content',
|
|
'utm_medium',
|
|
'utm_count',
|
|
]
|
|
|
|
function parseUtm(query) {
|
|
const utmValues = {}
|
|
for (const utmKey of UTM_KEYS) {
|
|
if (query[utmKey]) {
|
|
utmValues[utmKey] = query[utmKey]
|
|
}
|
|
}
|
|
return Object.keys(utmValues).length > 0 ? utmValues : null
|
|
}
|
|
|
|
function parseReferrer(referrer, url) {
|
|
if (!referrer) {
|
|
return {
|
|
medium: 'direct',
|
|
}
|
|
}
|
|
|
|
const parsedReferrer = new RefererParser(referrer, url)
|
|
|
|
const referrerValues = {
|
|
medium: parsedReferrer.medium,
|
|
source: parsedReferrer.referer || 'other',
|
|
}
|
|
|
|
if (referrerValues.medium === 'unknown') {
|
|
try {
|
|
const referrerHostname = new URL(referrer).hostname
|
|
if (referrerHostname) {
|
|
referrerValues.medium = 'link'
|
|
referrerValues.source = referrerHostname
|
|
}
|
|
} catch (error) {
|
|
// ignore referrer parsing errors
|
|
}
|
|
}
|
|
|
|
return referrerValues
|
|
}
|
|
|
|
module.exports = {
|
|
UTM_KEYS,
|
|
parseUtm,
|
|
parseReferrer,
|
|
}
|