UNPKG

@m10s/cmp

Version:

Package containing scripts used by Schibsteds' sites to integrate with Sourcepoint CMP

97 lines (80 loc) 2.64 kB
export function debug() { if (typeof document !== 'undefined' && document.location.href.indexOf('sp_debug=1') > 0) { console.debug('[CMP]', ...arguments); } } export function handleRedirect (url, environmentId, clientId, referrer, state) { const urlObject = new URL(url); // UTM tags urlObject.searchParams.append('utm_source', 'cmp'); urlObject.searchParams.append('utm_medium', 'psi'); urlObject.searchParams.append('referrer', referrer || window.location.href); if (clientId) { urlObject.searchParams.append('client_id', clientId); } if (environmentId) { urlObject.searchParams.append('environment_id', environmentId); } if (state) { urlObject.searchParams.append('state', state); } window.location.href = urlObject.href; } export const isUrl = (string) => { try { return Boolean(new URL(string)); } catch { return false; } } export function convertToBoolean(value) { if (value === null) return null; return Boolean(parseInt(value)); } export function isPlainObject(item) { return (typeof item === 'object' && item.constructor === Object); } export function removeEmpty(obj) { return Object.entries(obj) .filter(([_, v]) => v != null) .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {}); } export const setMultipleAttributes = (element, attributes) => { return Object.keys(attributes) .filter(key => element[key] !== undefined) .forEach(key => typeof attributes[key] === 'object' ? Object.keys(attributes[key]) .forEach(innerKey => element[key][innerKey] = attributes[key][innerKey]) : element[key] = attributes[key] ); } export function setCookie(name, value, exdays) { const date = new Date(); date.setTime(date.getTime() + (exdays*24*60*60*1000)); let expires = "expires="+ date.toUTCString(); document.cookie = name + "=" + value + ";" + expires + ";path=/"; } export function getCookie(cname) { let name = cname + "="; let decodedCookie = decodeURIComponent(document.cookie); let ca = decodedCookie.split(';'); for(let i = 0; i <ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return ""; } export function eraseCookie(name) { document.cookie = name+'=; Max-Age=-99999999;'; } export const setAttributes = (el, attrs) => Object.entries(attrs) .forEach(args => el.setAttribute(...args))