vendor: 5,232 bytes, lines 1-158
1!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.sbjs=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 2"use strict"; 3 4var init = _dereq_('./init'); 5 6var sbjs = { 7 init: function(prefs) { 8 this.get = init(prefs); 9 if (prefs && prefs.callback && typeof prefs.callback === 'function') { 10 prefs.callback(this.get); 11 } 12 } 13}; 14 15module.exports = sbjs; 16},{"./init":6}],2:[function(_dereq_,module,exports){ 17"use strict"; 18 19var terms = _dereq_('./terms'), 20 utils = _dereq_('./helpers/utils'); 21 22var data = { 23 24 containers: { 25 current: 'sbjs_current', 26 current_extra: 'sbjs_current_add', 27 first: 'sbjs_first', 28 first_extra: 'sbjs_first_add', 29 session: 'sbjs_session', 30 udata: 'sbjs_udata', 31 promocode: 'sbjs_promo' 32 }, 33 34 service: { 35 migrations: 'sbjs_migrations' 36 }, 37 38 delimiter: '|||', 39 40 aliases: { 41 42 main: { 43 type: 'typ', 44 source: 'src', 45 medium: 'mdm', 46 campaign: 'cmp', 47 content: 'cnt', 48 term: 'trm', 49 id: 'id', 50 platform: 'plt', 51 format: 'fmt', 52 tactic: 'tct' 53 }, 54 55 extra: { 56 fire_date: 'fd', 57 entrance_point: 'ep', 58 referer: 'rf' 59 }, 60 61 session: { 62 pages_seen: 'pgs', 63 current_page: 'cpg' 64 }, 65 66 udata: { 67 visits: 'vst', 68 ip: 'uip', 69 agent: 'uag' 70 }, 71 72 promo: 'code' 73 74 }, 75 76 pack: { 77 78 main: function(sbjs) { 79 return ( 80 data.aliases.main.type + '=' + sbjs.type + data.delimiter + 81 data.aliases.main.source + '=' + sbjs.source + data.delimiter + 82 data.aliases.main.medium + '=' + sbjs.medium + data.delimiter + 83 data.aliases.main.campaign + '=' + sbjs.campaign + data.delimiter + 84 data.aliases.main.content + '=' + sbjs.content + data.delimiter + 85 data.aliases.main.term + '=' + sbjs.term + data.delimiter + 86 data.aliases.main.id + '=' + sbjs.id + data.delimiter + 87 data.aliases.main.platform + '=' + sbjs.platform + data.delimiter + 88 data.aliases.main.format + '=' + sbjs.format + data.delimiter + 89 data.aliases.main.tactic + '=' + sbjs.tactic 90 ); 91 }, 92 93 extra: function(timezone_offset) { 94 return ( 95 data.aliases.extra.fire_date + '=' + utils.setDate(new Date, timezone_offset) + data.delimiter + 96 data.aliases.extra.entrance_point + '=' + document.location.href + data.delimiter + 97 data.aliases.extra.referer + '=' + (document.referrer || terms.none) 98 ); 99 }, 100 101 user: function(visits, user_ip) { 102 return ( 103 data.aliases.udata.visits + '=' + visits + data.delimiter + 104 data.aliases.udata.ip + '=' + user_ip + data.delimiter + 105 data.aliases.udata.agent + '=' + navigator.userAgent 106 ); 107 }, 108 109 session: function(pages) { 110 return ( 111 data.aliases.session.pages_seen + '=' + pages + data.delimiter + 112 data.aliases.session.current_page + '=' + document.location.href 113 ); 114 }, 115 116 promo: function(promo) { 117 return ( 118 data.aliases.promo + '=' + utils.setLeadingZeroToInt(utils.randomInt(promo.min, promo.max), promo.max.toString().length) 119 ); 120 } 121 122 } 123}; 124 125module.exports = data; 126 127},{"./helpers/utils":5,"./terms":9}],3:[function(_dereq_,module,exports){ 128"use strict"; 129 130var delimiter = _dereq_('../data').delimiter; 131 132module.exports = { 133 134 useBase64: false, // Base64 flag set to false by default 135 136 setBase64Flag: function(value) { 137 this.useBase64 = value; 138 }, 139 140 encodeData: function(s) { 141 return encodeURIComponent(s).replace(/\!/g, '%21') 142 .replace(/\~/g, '%7E') 143 .replace(/\*/g, '%2A') 144 .replace(/\'/g, '%27') 145 .replace(/\(/g, '%28') 146 .replace(/\)/g, '%29'); 147 }, 148 149 decodeData: function(s) { 150 try { 151 return decodeURIComponent(s).replace(/\%21/g, '!') 152 .replace(/\%7E/g, '~') 153 .replace(/\%2A/g, '*') 154 .replace(/\%27/g, "'") 155 .replace(/\%28/g, '(') 156 .replace(/\%29/g, ')'); 157 } catch(err1) { 158 // try unescape for backward compatibility
vendor: 6,017 bytes, lines 159-356
159 try { return unescape(s); } catch(err2) { return ''; } 160 } 161 }, 162 163 set: function(name, value, minutes, domain, excl_subdomains) { 164 var expires, basehost; 165 166 if (minutes) { 167 var date = new Date(); 168 date.setTime(date.getTime() + (minutes * 60 * 1000)); 169 expires = '; expires=' + date.toGMTString(); 170 } else { 171 expires = ''; 172 } 173 if (domain && !excl_subdomains) { 174 basehost = ';domain=.' + domain; 175 } else { 176 basehost = ''; 177 } 178 var cookie_content = this.encodeData(value); 179 if (this.useBase64) { 180 // Base64 encoding and removing equal sign padding 181 cookie_content = btoa(cookie_content).replace(/=+$/, ''); 182 } 183 document.cookie = this.encodeData(name) + '=' + cookie_content + expires + basehost + '; path=/'; 184 }, 185 186 get: function(name) { 187 var nameEQ = this.encodeData(name) + '=', 188 ca = document.cookie.split(';'); 189 190 for (var i = 0; i < ca.length; i++) { 191 var c = ca[i]; 192 while (c.charAt(0) === ' ') { c = c.substring(1, c.length); } 193 if (c.indexOf(nameEQ) === 0) { 194 var cookie_content = c.substring(nameEQ.length, c.length); 195 // Decode the content if it only contains Base64-valid characters 196 // Non-alphanumeric characters indicate that the cookie data is not encoded 197 if (/^[A-Za-z0-9+/]+$/.test(cookie_content)) { 198 try { 199 // Attempt to decode the Base64 string (after padding with = to make it a multiple of 4) 200 cookie_content = atob( cookie_content.padEnd(Math.ceil(cookie_content.length / 4) * 4, "=") ); 201 } catch (error) { 202 // If the Base64 string is invalid, just keep the cookie content as is 203 } 204 } 205 return this.decodeData(cookie_content); 206 } 207 } 208 return null; 209 }, 210 211 destroy: function(name, domain, excl_subdomains) { 212 this.set(name, '', -1, domain, excl_subdomains); 213 }, 214 215 parse: function(yummy) { 216 217 var cookies = [], 218 data = {}; 219 220 if (typeof yummy === 'string') { 221 cookies.push(yummy); 222 } else { 223 for (var prop in yummy) { 224 if (yummy.hasOwnProperty(prop)) { 225 cookies.push(yummy[prop]); 226 } 227 } 228 } 229 230 for (var i1 = 0; i1 < cookies.length; i1++) { 231 var cookie_array; 232 data[this.unsbjs(cookies[i1])] = {}; 233 if (this.get(cookies[i1])) { 234 cookie_array = this.get(cookies[i1]).split(delimiter); 235 } else { 236 cookie_array = []; 237 } 238 for (var i2 = 0; i2 < cookie_array.length; i2++) { 239 var tmp_array = cookie_array[i2].split('='), 240 result_array = tmp_array.splice(0, 1); 241 result_array.push(tmp_array.join('=')); 242 data[this.unsbjs(cookies[i1])][result_array[0]] = this.decodeData(result_array[1]); 243 } 244 } 245 246 return data; 247 248 }, 249 250 unsbjs: function (string) { 251 return string.replace('sbjs_', ''); 252 } 253 254}; 255 256},{"../data":2}],4:[function(_dereq_,module,exports){ 257"use strict"; 258 259module.exports = { 260 261 parse: function(str) { 262 var o = this.parseOptions, 263 m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str), 264 uri = {}, 265 i = 14; 266 267 while (i--) { uri[o.key[i]] = m[i] || ''; } 268 269 uri[o.q.name] = {}; 270 uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { 271 if ($1) { uri[o.q.name][$1] = $2; } 272 }); 273 274 return uri; 275 }, 276 277 parseOptions: { 278 strictMode: false, 279 key: ['source','protocol','authority','userInfo','user','password','host','port','relative','path','directory','file','query','anchor'], 280 q: { 281 name: 'queryKey', 282 parser: /(?:^|&)([^&=]*)=?([^&]*)/g 283 }, 284 parser: { 285 strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, 286 loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ 287 } 288 }, 289 290 getParam: function(custom_params) { 291 var query_string = {}, 292 query = custom_params ? custom_params : window.location.search.substring(1), 293 vars = query.split('&'); 294 295 for (var i = 0; i < vars.length; i++) { 296 var pair = vars[i].split('='); 297 if (typeof query_string[pair[0]] === 'undefined') { 298 query_string[pair[0]] = pair[1]; 299 } else if (typeof query_string[pair[0]] === 'string') { 300 var arr = [ query_string[pair[0]], pair[1] ]; 301 query_string[pair[0]] = arr; 302 } else { 303 query_string[pair[0]].push(pair[1]); 304 } 305 } 306 return query_string; 307 }, 308 309 getHost: function(request) { 310 return this.parse(request).host.replace('www.', ''); 311 } 312 313}; 314},{}],5:[function(_dereq_,module,exports){ 315"use strict"; 316 317module.exports = { 318 319 escapeRegexp: function(string) { 320 return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); 321 }, 322 323 setDate: function(date, offset) { 324 var utc_offset = date.getTimezoneOffset() / 60, 325 now_hours = date.getHours(), 326 custom_offset = offset || offset === 0 ? offset : -utc_offset; 327 328 date.setHours(now_hours + utc_offset + custom_offset); 329 330 var year = date.getFullYear(), 331 month = this.setLeadingZeroToInt(date.getMonth() + 1, 2), 332 day = this.setLeadingZeroToInt(date.getDate(), 2), 333 hour = this.setLeadingZeroToInt(date.getHours(), 2), 334 minute = this.setLeadingZeroToInt(date.getMinutes(), 2), 335 second = this.setLeadingZeroToInt(date.getSeconds(), 2); 336 337 return (year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second); 338 }, 339 340 setLeadingZeroToInt: function(num, size) { 341 var s = num + ''; 342 while (s.length < size) { s = '0' + s; } 343 return s; 344 }, 345 346 randomInt: function(min, max) { 347 return Math.floor(Math.random() * (max - min + 1)) + min; 348 } 349 350}; 351 352},{}],6:[function(_dereq_,module,exports){ 353"use strict"; 354 355var data = _dereq_('./data'), 356 terms = _dereq_('./terms'),
vendor: 6,934 bytes, lines 357-546
357 cookies = _dereq_('./helpers/cookies'), 358 uri = _dereq_('./helpers/uri'), 359 utils = _dereq_('./helpers/utils'), 360 params = _dereq_('./params'), 361 migrations = _dereq_('./migrations'); 362 363module.exports = function(prefs) { 364 365 var p = params.fetch(prefs); 366 var get_param = uri.getParam(); 367 var domain = p.domain.host, 368 isolate = p.domain.isolate, 369 lifetime = p.lifetime; 370 371 cookies.setBase64Flag( p.base64 ); 372 373 migrations.go(lifetime, domain, isolate); 374 375 var __sbjs_type, 376 __sbjs_source, 377 __sbjs_medium, 378 __sbjs_campaign, 379 __sbjs_content, 380 __sbjs_term, 381 __sbjs_id, 382 __sbjs_platform, 383 __sbjs_format, 384 __sbjs_tactic; 385 386 function mainData() { 387 var sbjs_data; 388 if ( 389 typeof get_param.utm_source !== 'undefined' || 390 typeof get_param.utm_medium !== 'undefined' || 391 typeof get_param.utm_campaign !== 'undefined' || 392 typeof get_param.utm_content !== 'undefined' || 393 typeof get_param.utm_term !== 'undefined' || 394 typeof get_param.utm_id !== 'undefined' || 395 typeof get_param.utm_source_platform !== 'undefined' || 396 typeof get_param.utm_creative_format !== 'undefined' || 397 typeof get_param.utm_marketing_tactic !== 'undefined' || 398 typeof get_param.gclid !== 'undefined' || 399 typeof get_param.yclid !== 'undefined' || 400 typeof get_param[p.campaign_param] !== 'undefined' || 401 typeof get_param[p.term_param] !== 'undefined' || 402 typeof get_param[p.content_param] !== 'undefined' 403 ) { 404 setFirstAndCurrentExtraData(); 405 sbjs_data = getData(terms.traffic.utm); 406 } else if (checkReferer(terms.traffic.organic)) { 407 setFirstAndCurrentExtraData(); 408 sbjs_data = getData(terms.traffic.organic); 409 } else if (!cookies.get(data.containers.session) && checkReferer(terms.traffic.referral)) { 410 setFirstAndCurrentExtraData(); 411 sbjs_data = getData(terms.traffic.referral); 412 } else if (!cookies.get(data.containers.first) && !cookies.get(data.containers.current)) { 413 setFirstAndCurrentExtraData(); 414 sbjs_data = getData(terms.traffic.typein); 415 } else { 416 return cookies.get(data.containers.current); 417 } 418 419 return sbjs_data; 420 } 421 422 function getData(type) { 423 424 switch (type) { 425 426 case terms.traffic.utm: 427 428 __sbjs_type = terms.traffic.utm; 429 430 if (typeof get_param.utm_source !== 'undefined') { 431 __sbjs_source = get_param.utm_source; 432 } else if (typeof get_param.gclid !== 'undefined') { 433 __sbjs_source = 'google'; 434 } else if (typeof get_param.yclid !== 'undefined') { 435 __sbjs_source = 'yandex'; 436 } else { 437 __sbjs_source = terms.none; 438 } 439 440 if (typeof get_param.utm_medium !== 'undefined') { 441 __sbjs_medium = get_param.utm_medium; 442 } else if (typeof get_param.gclid !== 'undefined') { 443 __sbjs_medium = 'cpc'; 444 } else if (typeof get_param.yclid !== 'undefined') { 445 __sbjs_medium = 'cpc'; 446 } else { 447 __sbjs_medium = terms.none; 448 } 449 450 if (typeof get_param.utm_campaign !== 'undefined') { 451 __sbjs_campaign = get_param.utm_campaign; 452 } else if (typeof get_param[p.campaign_param] !== 'undefined') { 453 __sbjs_campaign = get_param[p.campaign_param]; 454 } else if (typeof get_param.gclid !== 'undefined') { 455 __sbjs_campaign = 'google_cpc'; 456 } else if (typeof get_param.yclid !== 'undefined') { 457 __sbjs_campaign = 'yandex_cpc'; 458 } else { 459 __sbjs_campaign = terms.none; 460 } 461 462 if (typeof get_param.utm_content !== 'undefined') { 463 __sbjs_content = get_param.utm_content; 464 } else if (typeof get_param[p.content_param] !== 'undefined') { 465 __sbjs_content = get_param[p.content_param]; 466 } else { 467 __sbjs_content = terms.none; 468 } 469 470 __sbjs_id = get_param.utm_id || terms.none; 471 __sbjs_platform = get_param.utm_source_platform || terms.none; 472 __sbjs_format = get_param.utm_creative_format || terms.none; 473 __sbjs_tactic = get_param.utm_marketing_tactic || terms.none; 474 475 if (typeof get_param.utm_term !== 'undefined') { 476 __sbjs_term = get_param.utm_term; 477 } else if (typeof get_param[p.term_param] !== 'undefined') { 478 __sbjs_term = get_param[p.term_param]; 479 } else { 480 __sbjs_term = getUtmTerm() || terms.none; 481 } 482 483 break; 484 485 case terms.traffic.organic: 486 __sbjs_type = terms.traffic.organic; 487 __sbjs_source = __sbjs_source || uri.getHost(document.referrer); 488 __sbjs_medium = terms.referer.organic; 489 __sbjs_campaign = terms.none; 490 __sbjs_content = terms.none; 491 __sbjs_term = terms.none; 492 __sbjs_id = terms.none; 493 __sbjs_platform = terms.none; 494 __sbjs_format = terms.none; 495 __sbjs_tactic = terms.none; 496 break; 497 498 case terms.traffic.referral: 499 __sbjs_type = terms.traffic.referral; 500 __sbjs_source = __sbjs_source || uri.getHost(document.referrer); 501 __sbjs_medium = __sbjs_medium || terms.referer.referral; 502 __sbjs_campaign = terms.none; 503 __sbjs_content = uri.parse(document.referrer).path; 504 __sbjs_term = terms.none; 505 __sbjs_id = terms.none; 506 __sbjs_platform = terms.none; 507 __sbjs_format = terms.none; 508 __sbjs_tactic = terms.none; 509 break; 510 511 case terms.traffic.typein: 512 __sbjs_type = terms.traffic.typein; 513 __sbjs_source = p.typein_attributes.source; 514 __sbjs_medium = p.typein_attributes.medium; 515 __sbjs_campaign = terms.none; 516 __sbjs_content = terms.none; 517 __sbjs_term = terms.none; 518 __sbjs_id = terms.none; 519 __sbjs_platform = terms.none; 520 __sbjs_format = terms.none; 521 __sbjs_tactic = terms.none; 522 break; 523 524 default: 525 __sbjs_type = terms.oops; 526 __sbjs_source = terms.oops; 527 __sbjs_medium = terms.oops; 528 __sbjs_campaign = terms.oops; 529 __sbjs_content = terms.oops; 530 __sbjs_term = terms.oops; 531 __sbjs_id = terms.oops; 532 __sbjs_platform = terms.oops; 533 __sbjs_format = terms.oops; 534 __sbjs_tactic = terms.oops; 535 } 536 var sbjs_data = { 537 type: __sbjs_type, 538 source: __sbjs_source, 539 medium: __sbjs_medium, 540 campaign: __sbjs_campaign, 541 content: __sbjs_content, 542 term: __sbjs_term, 543 id: __sbjs_id, 544 platform: __sbjs_platform, 545 format: __sbjs_format, 546 tactic: __sbjs_tactic
vendor: 5,026 bytes, lines 546-696
546 547 }; 548 549 return data.pack.main(sbjs_data); 550 551 } 552 553 function getUtmTerm() { 554 var referer = document.referrer; 555 if (get_param.utm_term) { 556 return get_param.utm_term; 557 } else if (referer && uri.parse(referer).host && uri.parse(referer).host.match(/^(?:.*\.)?yandex\..{2,9}$/i)) { 558 try { 559 return uri.getParam(uri.parse(document.referrer).query).text; 560 } catch (err) { 561 return false; 562 } 563 } else { 564 return false; 565 } 566 } 567 568 function checkReferer(type) { 569 var referer = document.referrer; 570 switch(type) { 571 case terms.traffic.organic: 572 return (!!referer && checkRefererHost(referer) && isOrganic(referer)); 573 case terms.traffic.referral: 574 return (!!referer && checkRefererHost(referer) && isReferral(referer)); 575 default: 576 return false; 577 } 578 } 579 580 function checkRefererHost(referer) { 581 if (p.domain) { 582 if (!isolate) { 583 var host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(domain) + '$', 'i'); 584 return !(uri.getHost(referer).match(host_regex)); 585 } else { 586 return (uri.getHost(referer) !== uri.getHost(domain)); 587 } 588 } else { 589 return (uri.getHost(referer) !== uri.getHost(document.location.href)); 590 } 591 } 592 593 function isOrganic(referer) { 594 595 var y_host = 'yandex', 596 y_param = 'text', 597 g_host = 'google'; 598 599 var y_host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(y_host) + '\\..{2,9}$'), 600 y_param_regex = new RegExp('.*' + utils.escapeRegexp(y_param) + '=.*'), 601 g_host_regex = new RegExp('^(?:www\\.)?' + utils.escapeRegexp(g_host) + '\\..{2,9}$'); 602 603 if ( 604 !!uri.parse(referer).query && 605 !!uri.parse(referer).host.match(y_host_regex) && 606 !!uri.parse(referer).query.match(y_param_regex) 607 ) { 608 __sbjs_source = y_host; 609 return true; 610 } else if (!!uri.parse(referer).host.match(g_host_regex)) { 611 __sbjs_source = g_host; 612 return true; 613 } else if (!!uri.parse(referer).query) { 614 for (var i = 0; i < p.organics.length; i++) { 615 if ( 616 uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.organics[i].host) + '$', 'i')) && 617 uri.parse(referer).query.match(new RegExp('.*' + utils.escapeRegexp(p.organics[i].param) + '=.*', 'i')) 618 ) { 619 __sbjs_source = p.organics[i].display || p.organics[i].host; 620 return true; 621 } 622 if (i + 1 === p.organics.length) { 623 return false; 624 } 625 } 626 } else { 627 return false; 628 } 629 } 630 631 function isReferral(referer) { 632 if (p.referrals.length > 0) { 633 for (var i = 0; i < p.referrals.length; i++) { 634 if (uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.referrals[i].host) + '$', 'i'))) { 635 __sbjs_source = p.referrals[i].display || p.referrals[i].host; 636 __sbjs_medium = p.referrals[i].medium || terms.referer.referral; 637 return true; 638 } 639 if (i + 1 === p.referrals.length) { 640 __sbjs_source = uri.getHost(referer); 641 return true; 642 } 643 } 644 } else { 645 __sbjs_source = uri.getHost(referer); 646 return true; 647 } 648 } 649 650 function setFirstAndCurrentExtraData() { 651 cookies.set(data.containers.current_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate); 652 if (!cookies.get(data.containers.first_extra)) { 653 cookies.set(data.containers.first_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate); 654 } 655 } 656 657 (function setData() { 658 659 // Main data 660 cookies.set(data.containers.current, mainData(), lifetime, domain, isolate); 661 if (!cookies.get(data.containers.first)) { 662 cookies.set(data.containers.first, cookies.get(data.containers.current), lifetime, domain, isolate); 663 } 664 665 // User data 666 var visits, udata; 667 if (!cookies.get(data.containers.udata)) { 668 visits = 1; 669 udata = data.pack.user(visits, p.user_ip); 670 } else { 671 visits = parseInt(cookies.parse(data.containers.udata)[cookies.unsbjs(data.containers.udata)][data.aliases.udata.visits]) || 1; 672 visits = cookies.get(data.containers.session) ? visits : visits + 1; 673 udata = data.pack.user(visits, p.user_ip); 674 } 675 cookies.set(data.containers.udata, udata, lifetime, domain, isolate); 676 677 // Session 678 var pages_count; 679 if (!cookies.get(data.containers.session)) { 680 pages_count = 1; 681 } else { 682 pages_count = parseInt(cookies.parse(data.containers.session)[cookies.unsbjs(data.containers.session)][data.aliases.session.pages_seen]) || 1; 683 pages_count += 1; 684 } 685 cookies.set(data.containers.session, data.pack.session(pages_count), p.session_length, domain, isolate); 686 687 // Promocode 688 if (p.promocode && !cookies.get(data.containers.promocode)) { 689 cookies.set(data.containers.promocode, data.pack.promo(p.promocode), lifetime, domain, isolate); 690 } 691 692 })(); 693 694 return cookies.parse(data.containers); 695 696};
vendor: 7,106 bytes, lines 697-936
697 698},{"./data":2,"./helpers/cookies":3,"./helpers/uri":4,"./helpers/utils":5,"./migrations":7,"./params":8,"./terms":9}],7:[function(_dereq_,module,exports){ 699"use strict"; 700 701var data = _dereq_('./data'), 702 cookies = _dereq_('./helpers/cookies'); 703 704module.exports = { 705 706 go: function(lifetime, domain, isolate) { 707 708 var migrate = this.migrations, 709 _with = { l: lifetime, d: domain, i: isolate }; 710 711 var i; 712 713 if (!cookies.get(data.containers.first) && !cookies.get(data.service.migrations)) { 714 715 var mids = []; 716 for (i = 0; i < migrate.length; i++) { mids.push(migrate[i].id); } 717 718 var advance = ''; 719 for (i = 0; i < mids.length; i++) { 720 advance += mids[i] + '=1'; 721 if (i < mids.length - 1) { advance += data.delimiter; } 722 } 723 cookies.set(data.service.migrations, advance, _with.l, _with.d, _with.i); 724 725 } else if (!cookies.get(data.service.migrations)) { 726 727 // We have only one migration for now, so just 728 for (i = 0; i < migrate.length; i++) { 729 migrate[i].go(migrate[i].id, _with); 730 } 731 732 } 733 734 }, 735 736 migrations: [ 737 738 { 739 id: '1418474375998', 740 version: '1.0.0-beta', 741 go: function(mid, _with) { 742 743 var success = mid + '=1', 744 fail = mid + '=0'; 745 746 var safeReplace = function($0, $1, $2) { 747 return ($1 || $2 ? $0 : data.delimiter); 748 }; 749 750 try { 751 752 // Switch delimiter and renew cookies 753 var _in = []; 754 for (var prop in data.containers) { 755 if (data.containers.hasOwnProperty(prop)) { 756 _in.push(data.containers[prop]); 757 } 758 } 759 760 for (var i = 0; i < _in.length; i++) { 761 if (cookies.get(_in[i])) { 762 var buffer = cookies.get(_in[i]).replace(/(\|)?\|(\|)?/g, safeReplace); 763 cookies.destroy(_in[i], _with.d, _with.i); 764 cookies.destroy(_in[i], _with.d, !_with.i); 765 cookies.set(_in[i], buffer, _with.l, _with.d, _with.i); 766 } 767 } 768 769 // Update `session` 770 if (cookies.get(data.containers.session)) { 771 cookies.set(data.containers.session, data.pack.session(0), _with.l, _with.d, _with.i); 772 } 773 774 // Yay! 775 cookies.set(data.service.migrations, success, _with.l, _with.d, _with.i); 776 777 } catch (err) { 778 // Oops 779 cookies.set(data.service.migrations, fail, _with.l, _with.d, _with.i); 780 } 781 } 782 } 783 784 ] 785 786}; 787},{"./data":2,"./helpers/cookies":3}],8:[function(_dereq_,module,exports){ 788"use strict"; 789 790var terms = _dereq_('./terms'), 791 uri = _dereq_('./helpers/uri'); 792 793module.exports = { 794 795 fetch: function(prefs) { 796 797 var user = prefs || {}, 798 params = {}; 799 800 // Set `lifetime of the cookie` in months 801 params.lifetime = this.validate.checkFloat(user.lifetime) || 6; 802 params.lifetime = parseInt(params.lifetime * 30 * 24 * 60); 803 804 // Set `session length` in minutes 805 params.session_length = this.validate.checkInt(user.session_length) || 30; 806 807 // Set `timezone offset` in hours 808 params.timezone_offset = this.validate.checkInt(user.timezone_offset); 809 810 // Enable `base64 encoding` 811 params.base64 = user.base64 || false; 812 813 // Set `campaign param` for AdWords links 814 params.campaign_param = user.campaign_param || false; 815 816 // Set `term param` and `content param` for AdWords links 817 params.term_param = user.term_param || false; 818 params.content_param = user.content_param || false; 819 820 // Set `user ip` 821 params.user_ip = user.user_ip || terms.none; 822 823 // Set `promocode` 824 if (user.promocode) { 825 params.promocode = {}; 826 params.promocode.min = parseInt(user.promocode.min) || 100000; 827 params.promocode.max = parseInt(user.promocode.max) || 999999; 828 } else { 829 params.promocode = false; 830 } 831 832 // Set `typein attributes` 833 if (user.typein_attributes && user.typein_attributes.source && user.typein_attributes.medium) { 834 params.typein_attributes = {}; 835 params.typein_attributes.source = user.typein_attributes.source; 836 params.typein_attributes.medium = user.typein_attributes.medium; 837 } else { 838 params.typein_attributes = { source: '(direct)', medium: '(none)' }; 839 } 840 841 // Set `domain` 842 if (user.domain && this.validate.isString(user.domain)) { 843 params.domain = { host: user.domain, isolate: false }; 844 } else if (user.domain && user.domain.host) { 845 params.domain = user.domain; 846 } else { 847 params.domain = { host: uri.getHost(document.location.hostname), isolate: false }; 848 } 849 850 // Set `referral sources` 851 params.referrals = []; 852 853 if (user.referrals && user.referrals.length > 0) { 854 for (var ir = 0; ir < user.referrals.length; ir++) { 855 if (user.referrals[ir].host) { 856 params.referrals.push(user.referrals[ir]); 857 } 858 } 859 } 860 861 // Set `organic sources` 862 params.organics = []; 863 864 if (user.organics && user.organics.length > 0) { 865 for (var io = 0; io < user.organics.length; io++) { 866 if (user.organics[io].host && user.organics[io].param) { 867 params.organics.push(user.organics[io]); 868 } 869 } 870 } 871 872 params.organics.push({ host: 'bing.com', param: 'q', display: 'bing' }); 873 params.organics.push({ host: 'yahoo.com', param: 'p', display: 'yahoo' }); 874 params.organics.push({ host: 'about.com', param: 'q', display: 'about' }); 875 params.organics.push({ host: 'aol.com', param: 'q', display: 'aol' }); 876 params.organics.push({ host: 'ask.com', param: 'q', display: 'ask' }); 877 params.organics.push({ host: 'globososo.com', param: 'q', display: 'globo' }); 878 params.organics.push({ host: 'go.mail.ru', param: 'q', display: 'go.mail.ru' }); 879 params.organics.push({ host: 'rambler.ru', param: 'query', display: 'rambler' }); 880 params.organics.push({ host: 'tut.by', param: 'query', display: 'tut.by' }); 881 882 params.referrals.push({ host: 't.co', display: 'twitter.com' }); 883 params.referrals.push({ host: 'plus.url.google.com', display: 'plus.google.com' }); 884 885 886 return params; 887 888 }, 889 890 validate: { 891 892 checkFloat: function(v) { 893 return v && this.isNumeric(parseFloat(v)) ? parseFloat(v) : false; 894 }, 895 896 checkInt: function(v) { 897 return v && this.isNumeric(parseInt(v)) ? parseInt(v) : false; 898 }, 899 900 isNumeric: function(v){ 901 return !isNaN(v); 902 }, 903 904 isString: function(v) { 905 return Object.prototype.toString.call(v) === '[object String]'; 906 } 907 908 } 909 910}; 911 912},{"./helpers/uri":4,"./terms":9}],9:[function(_dereq_,module,exports){ 913"use strict"; 914 915module.exports = { 916 917 traffic: { 918 utm: 'utm', 919 organic: 'organic', 920 referral: 'referral', 921 typein: 'typein' 922 }, 923 924 referer: { 925 referral: 'referral', 926 organic: 'organic', 927 social: 'social' 928 }, 929 930 none: '(none)', 931 oops: '(Houston, we have a problem)' 932 933}; 934 935},{}]},{},[1])(1) 936});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.