UNPKG

sourcebuster

Version:

Get sources of your site's visitors (utm / organic / referral / typein).

106 lines (88 loc) 2.96 kB
"use strict"; var delimiter = require('../data').delimiter; module.exports = { encodeData: function(s) { return encodeURIComponent(s).replace(/\!/g, '%21') .replace(/\~/g, '%7E') .replace(/\*/g, '%2A') .replace(/\'/g, '%27') .replace(/\(/g, '%28') .replace(/\)/g, '%29'); }, decodeData: function(s) { try { return decodeURIComponent(s).replace(/\%21/g, '!') .replace(/\%7E/g, '~') .replace(/\%2A/g, '*') .replace(/\%27/g, "'") .replace(/\%28/g, '(') .replace(/\%29/g, ')'); } catch(err1) { // try unescape for backward compatibility try { return unescape(s); } catch(err2) { return ''; } } }, set: function(name, value, minutes, domain, excl_subdomains) { var expires, basehost; if (minutes) { var date = new Date(); date.setTime(date.getTime() + (minutes * 60 * 1000)); expires = '; expires=' + date.toGMTString(); } else { expires = ''; } if (domain && !excl_subdomains) { basehost = ';domain=.' + domain; } else { basehost = ''; } document.cookie = this.encodeData(name) + '=' + this.encodeData(value) + expires + basehost + '; path=/'; }, get: function(name) { var nameEQ = this.encodeData(name) + '=', ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } if (c.indexOf(nameEQ) === 0) { return this.decodeData(c.substring(nameEQ.length, c.length)); } } return null; }, destroy: function(name, domain, excl_subdomains) { this.set(name, '', -1, domain, excl_subdomains); }, parse: function(yummy) { var cookies = [], data = {}; if (typeof yummy === 'string') { cookies.push(yummy); } else { for (var prop in yummy) { if (yummy.hasOwnProperty(prop)) { cookies.push(yummy[prop]); } } } for (var i1 = 0; i1 < cookies.length; i1++) { var cookie_array; data[this.unsbjs(cookies[i1])] = {}; if (this.get(cookies[i1])) { cookie_array = this.get(cookies[i1]).split(delimiter); } else { cookie_array = []; } for (var i2 = 0; i2 < cookie_array.length; i2++) { var tmp_array = cookie_array[i2].split('='), result_array = tmp_array.splice(0, 1); result_array.push(tmp_array.join('=')); data[this.unsbjs(cookies[i1])][result_array[0]] = this.decodeData(result_array[1]); } } return data; }, unsbjs: function (string) { return string.replace('sbjs_', ''); } };