@m10s/cmp
Version:
Package containing scripts used by Schibsteds' sites to integrate with Sourcepoint CMP
97 lines (80 loc) • 2.64 kB
JavaScript
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))