analytics-debugger / ga4mp

GA4MP
MIT License
40 stars 11 forks source link

fix: encode search params #24

Open NimaC opened 11 months ago

NimaC commented 11 months ago

fixes #23

adds boolean flag to opts to enable encoding of search params

Prior

const payload = {
  cd_application_id: 'SST - Some Online Shop',
}

const payloadParsed = JSON.parse(JSON.stringify(payload))
const qs = new URLSearchParams(payloadParsed).toString()
console.log(decodeURIComponent(qs)) // cd_application_id=SST+-+Some+Online+Shop

Now

const payload = {
  cd_application_id: 'SST - Some Online Shop',
}

const opts = {
  encode_search_params: true,
}

const payloadParsed = JSON.parse(JSON.stringify(payload))
let qs = ''
if (opts.encode_search_params) {
  // Ensure spaces are not replaced with +
  qs = Object.entries(payloadParsed)
    .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)
    .join('&')
} else {
  qs = new URLSearchParams(payloadParsed).toString()
}
console.log(decodeURIComponent(qs)) // cd_application_id=SST - Some Online Shop