PluginProbe ʕ •ᴥ•ʔ
WooCommerce / 8.8.0-rc.1
WooCommerce v8.8.0-rc.1
10.8.1 10.8.0 10.8.0-rc.1 10.8.0-beta.2 10.8.0-beta.1 7.8.0-beta.1 7.8.0-beta.2 7.8.0-rc.1 7.8.0-rc.2 7.8.1 7.8.2 7.8.3 7.8.4 7.9.0 7.9.0-beta.1 7.9.0-beta.2 7.9.0-rc.2 7.9.0-rc.3 7.9.1 7.9.2 8.0.0 8.0.0-beta.1 8.0.0-beta.2 8.0.0-rc.1 8.0.0-rc.2 8.0.1 8.0.2 8.0.3 8.0.4 8.0.5 8.1.0 8.1.0-beta.1 8.1.0-rc.1 8.1.0-rc.2 8.1.1 8.1.2 8.1.3 8.1.4 8.2.0 8.2.0-beta.1 8.2.0-rc.1 8.2.0-rc.2 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.3.0 8.3.0-beta.1 8.3.0-rc.1 8.3.0-rc.2 8.3.1 8.3.2 8.3.3 8.3.4 8.4.0 8.4.0-beta.1 8.4.0-rc.1 8.4.1 8.4.2 8.4.3 8.5.0 8.5.0-beta.1 8.5.0-rc.1 8.5.1 8.5.2 8.5.3 8.5.4 8.5.5 8.6.0 8.6.0-beta.1 8.6.0-rc.1 8.6.1 8.6.2 8.6.3 8.6.4 8.7.0 8.7.0-beta.1 8.7.0-beta.2 8.7.0-rc.1 8.7.1 8.7.2 8.7.3 8.8.0 8.8.0-beta.1 8.8.0-rc.1 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.8.6 8.8.7 8.9.0 8.9.0-beta.1 8.9.0-rc.1 8.9.1 8.9.2 8.9.3 8.9.4 8.9.5 9.0.0 9.0.0-beta.1 9.0.0-beta.2 9.0.0-rc.1 9.0.1 9.0.2 9.0.3 9.0.4 9.1.0 9.1.0-beta.1 9.1.0-rc.1 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.2.0 9.2.0-beta.1 9.2.0-rc.1 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.3.0 9.3.0-beta.1 9.3.0-rc.1 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.4.0 9.4.0-beta.1 9.4.0-beta.2 9.4.0-rc.1 9.4.0-rc.2 9.4.0-rc.3 9.4.0-rc.4 9.4.1 9.4.2 9.4.3 9.4.4 9.4.5 9.5.0 9.5.0-beta.1 9.5.0-beta.2 9.5.0-rc.1 9.5.1 9.5.2 9.5.3 9.5.4 9.6.0 9.6.0-beta.1 9.6.0-beta.2 9.6.0-rc.1 9.6.1 9.6.2 9.6.3 9.6.4 9.7.0 9.7.0-beta.1 9.7.0-rc.1 9.7.1 9.7.2 9.7.3 9.8.0 9.8.0-beta.1 9.8.0-rc.1 9.8.1 9.8.2 9.8.3 9.8.4 9.8.5 9.8.6 9.8.7 9.9.0 9.9.0-beta.1 9.9.0-rc.1 9.9.1 9.9.2 9.9.3 9.9.4 9.9.5 9.9.6 9.9.7 3.7.3 7.1.2 3.8.0 7.2.0 3.8.0-beta.1 7.2.0-beta.1 3.8.0-rc.1 7.2.0-beta.2 3.8.0-rc.2 7.2.0-rc.1 3.8.1 7.2.0-rc.2 3.8.2 7.2.1 3.8.3 7.2.2 3.9.0 7.2.3 3.9.0-beta.1 7.2.4 3.9.0-beta.2 7.3.0 3.9.0-rc.1 7.3.0-beta.1 3.9.0-rc.2 7.3.0-beta.2 3.9.0-rc.3 7.3.0-rc.1 3.9.0-rc.4 7.3.0-rc.2 3.9.1 7.3.1 3.9.2 7.4.0 3.9.3 7.4.0-beta.1 3.9.4 7.4.0-beta.2 3.9.5 7.4.0-rc.1 4.0.0 7.4.0-rc.2 4.0.0-beta.1 7.4.1 4.0.0-rc.1 7.4.2 4.0.0-rc.2 7.5.0 4.0.1 7.5.0-beta.1 4.0.2 7.5.0-beta.2 4.0.3 7.5.0-rc.1 4.0.4 7.5.1 4.1.0 7.5.2 4.1.0-beta.1 7.6.0 4.1.0-beta.2 7.6.0-beta.1 4.1.0-rc.1 7.6.0-beta.2 4.1.0-rc.2 7.6.0-rc.1 4.1.1 7.6.0-rc.2 4.1.2 7.6.0-rc.3 4.1.3 7.6.1 4.1.4 7.6.2 4.2.0 7.7.0 4.2.0-RC.1 7.7.0-beta.1 4.2.0-RC.2 7.7.0-beta.2 4.2.0-beta.1 7.7.0-rc.1 4.2.1 7.7.1 4.2.2 7.7.2 4.2.3 7.7.3 4.2.4 7.8.0 4.2.5 4.3.0 4.3.0-beta.1 4.3.0-rc.1 4.3.0-rc.2 4.3.0-rc.3 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.4.0 4.4.0-beta.1 4.4.0-rc.1 4.4.1 4.4.2 4.4.3 4.4.4 4.5.0 4.5.0-beta.1 4.5.0-rc.1 4.5.0-rc.3 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.6.0-beta.1 4.6.0-rc.1 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.7.0 4.7.0-beta.1 4.7.0-beta.2 4.7.0-rc.1 4.7.1 4.7.1-beta.1 4.7.2 4.7.3 4.7.4 4.8.0 4.8.0-beta.1 4.8.0-rc.1 4.8.0-rc.2 4.8.1 4.8.2 4.8.3 4.9.0 4.9.0-beta.1 4.9.0-rc.1 4.9.0-rc.2 4.9.1 4.9.2 4.9.3 4.9.4 4.9.5 5.0.0 5.0.0-beta.1 5.0.0-beta.2 5.0.0-rc.1 5.0.0-rc.2 5.0.0-rc.3 5.0.1 5.0.2 5.0.3 5.1.0 5.1.0-beta.1 5.1.0-rc.1 trunk 5.1.1 10.0.0 5.1.2 10.0.0-rc.1 5.1.3 10.0.0-rc.2 5.2.0 10.0.1 5.2.0-beta.1 10.0.2 5.2.0-rc.1 10.0.3 5.2.0-rc.2 10.0.4 5.2.1 10.0.5 5.2.2 10.0.6 5.2.3 10.1.0 5.2.4 10.1.0-rc.1 5.2.5 10.1.0-rc.2 5.3.0 10.1.0-rc.3 5.3.0-beta.1 10.1.0-rc.4 5.3.0-rc.1 10.1.1 5.3.0-rc.2 10.1.2 5.3.1 10.1.3 5.3.2 10.1.4 5.3.3 10.2.0 5.4.0 10.2.0-beta.1 5.4.0-beta.1 10.2.0-beta.2 5.4.0-rc.1 10.2.0-rc.1 5.4.1 10.2.1 5.4.2 10.2.2 5.4.3 10.2.3 5.4.4 10.2.4 5.4.5 10.3.0 5.5.0 10.3.0-beta.1 5.5.0-beta.1 10.3.0-beta.2 5.5.0-rc.1 10.3.0-rc.1 5.5.0-rc.2 10.3.0-rc.2 5.5.1 10.3.1 5.5.2 10.3.2 5.5.3 10.3.3 5.5.4 10.3.4 5.5.5 10.3.5 5.6.0 10.3.6 5.6.0-beta.1 10.3.7 5.6.0-rc.1 10.3.8 5.6.0-rc.2 10.4.0 5.6.1 10.4.0-beta.1 5.6.2 10.4.0-beta.2 5.6.3 10.4.0-rc.1 5.7.0 10.4.1 5.7.0-beta.1 10.4.2 5.7.0-rc.1 10.4.3 5.7.1 10.4.4 5.7.2 10.5.0 5.7.3 10.5.0-beta.1 5.8.0 10.5.0-beta.2 5.8.0-beta.1 10.5.0-rc.1 5.8.0-beta.2 10.5.0-rc.2 5.8.0-rc.1 10.5.0-rc.3 5.8.1 10.5.1 5.8.2 10.5.2 5.9.0 10.5.3 5.9.0-beta.1 10.6.0 5.9.0-rc.1 10.6.0-beta.1 5.9.0-rc.2 10.6.0-beta.2 5.9.1 10.6.0-rc.1 5.9.2 10.6.1 6.0.0 10.6.2 6.0.0-beta.1 10.7.0 6.0.0-rc.1 10.7.0-beta.1 6.0.1 10.7.0-beta.2 6.0.2 10.7.0-rc.1 6.1.0 3.0.0 6.1.0-beta.1 3.0.1 6.1.0-rc.1 3.0.2 6.1.0-rc.2 3.0.3 6.1.1 3.0.4 6.1.2 3.0.5 6.1.3 3.0.6 6.2.0 3.0.7 6.2.0-beta.1 3.0.8 6.2.0-rc.1 3.0.9 6.2.0-rc.2 3.1.0 6.2.1 3.1.1 6.2.2 3.1.2 6.2.3 3.2.0 6.3.0 3.2.1 6.3.0-beta.1 3.2.2 6.3.0-rc.1 3.2.3 6.3.0-rc.2 3.2.4 6.3.1 3.2.5 6.3.2 3.2.6 6.4.0 3.3.0 6.4.0-beta.1 3.3.1 6.4.0-rc.1 3.3.2 6.4.1 3.3.2-rc.1 6.4.2 3.3.3 6.5.0 3.3.4 6.5.0-beta.1 3.3.5 6.5.0-rc.1 3.3.6 6.5.0-rc.2 3.4.0 6.5.1 3.4.0-beta.1 6.5.2 3.4.0-rc.2 6.6.0 3.4.1 6.6.0-beta.1 3.4.2 6.6.0-rc.1 3.4.3 6.6.0-rc.2 3.4.4 6.6.1 3.4.5 6.6.2 3.4.6 6.7.0 3.4.7 6.7.0-beta.1 3.4.8 6.7.0-beta.2 3.5.0 6.7.0-rc.1 3.5.0-beta.1 6.7.1 3.5.0-rc.1 6.8.0 3.5.0-rc.2 6.8.0-beta.1 3.5.1 6.8.0-beta.2 3.5.10 6.8.0-rc.1 3.5.2 6.8.1 3.5.3 6.8.2 3.5.4 6.8.3 3.5.5 6.9.0 3.5.6 6.9.0-beta.1 3.5.7 6.9.0-beta.2 3.5.8 6.9.0-rc.1 3.5.9 6.9.1 3.6.0 6.9.2 3.6.0-beta.1 6.9.3 3.6.0-rc.1 6.9.4 3.6.0-rc.2 6.9.5 3.6.0-rc.3 7.0.0 3.6.1 7.0.0-beta.1 3.6.2 7.0.0-beta.2 3.6.3 7.0.0-beta.3 3.6.4 7.0.0-rc.1 3.6.5 7.0.0-rc.2 3.6.6 7.0.1 3.6.7 7.0.2 3.7.0 7.1.0 3.7.0-beta.1 7.1.0-beta.1 3.7.0-rc.1 7.1.0-beta.2 3.7.0-rc.2 7.1.0-rc.1 3.7.1 7.1.0-rc.2 3.7.2 7.1.1
woocommerce / assets / js / sourcebuster / sourcebuster.js
woocommerce / assets / js / sourcebuster Last commit date
LICENSE 2 years ago sourcebuster.js 2 years ago sourcebuster.min.js 2 years ago
sourcebuster.js
878 lines
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
4 var init = _dereq_('./init');
5
6 var 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
15 module.exports = sbjs;
16 },{"./init":6}],2:[function(_dereq_,module,exports){
17 "use strict";
18
19 var terms = _dereq_('./terms'),
20 utils = _dereq_('./helpers/utils');
21
22 var 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 },
51
52 extra: {
53 fire_date: 'fd',
54 entrance_point: 'ep',
55 referer: 'rf'
56 },
57
58 session: {
59 pages_seen: 'pgs',
60 current_page: 'cpg'
61 },
62
63 udata: {
64 visits: 'vst',
65 ip: 'uip',
66 agent: 'uag'
67 },
68
69 promo: 'code'
70
71 },
72
73 pack: {
74
75 main: function(sbjs) {
76 return (
77 data.aliases.main.type + '=' + sbjs.type + data.delimiter +
78 data.aliases.main.source + '=' + sbjs.source + data.delimiter +
79 data.aliases.main.medium + '=' + sbjs.medium + data.delimiter +
80 data.aliases.main.campaign + '=' + sbjs.campaign + data.delimiter +
81 data.aliases.main.content + '=' + sbjs.content + data.delimiter +
82 data.aliases.main.term + '=' + sbjs.term + data.delimiter +
83 data.aliases.main.id + '=' + sbjs.id
84 );
85 },
86
87 extra: function(timezone_offset) {
88 return (
89 data.aliases.extra.fire_date + '=' + utils.setDate(new Date, timezone_offset) + data.delimiter +
90 data.aliases.extra.entrance_point + '=' + document.location.href + data.delimiter +
91 data.aliases.extra.referer + '=' + (document.referrer || terms.none)
92 );
93 },
94
95 user: function(visits, user_ip) {
96 return (
97 data.aliases.udata.visits + '=' + visits + data.delimiter +
98 data.aliases.udata.ip + '=' + user_ip + data.delimiter +
99 data.aliases.udata.agent + '=' + navigator.userAgent
100 );
101 },
102
103 session: function(pages) {
104 return (
105 data.aliases.session.pages_seen + '=' + pages + data.delimiter +
106 data.aliases.session.current_page + '=' + document.location.href
107 );
108 },
109
110 promo: function(promo) {
111 return (
112 data.aliases.promo + '=' + utils.setLeadingZeroToInt(utils.randomInt(promo.min, promo.max), promo.max.toString().length)
113 );
114 }
115
116 }
117 };
118
119 module.exports = data;
120
121 },{"./helpers/utils":5,"./terms":9}],3:[function(_dereq_,module,exports){
122 "use strict";
123
124 var delimiter = _dereq_('../data').delimiter;
125
126 module.exports = {
127
128 encodeData: function(s) {
129 return encodeURIComponent(s).replace(/\!/g, '%21')
130 .replace(/\~/g, '%7E')
131 .replace(/\*/g, '%2A')
132 .replace(/\'/g, '%27')
133 .replace(/\(/g, '%28')
134 .replace(/\)/g, '%29');
135 },
136
137 decodeData: function(s) {
138 try {
139 return decodeURIComponent(s).replace(/\%21/g, '!')
140 .replace(/\%7E/g, '~')
141 .replace(/\%2A/g, '*')
142 .replace(/\%27/g, "'")
143 .replace(/\%28/g, '(')
144 .replace(/\%29/g, ')');
145 } catch(err1) {
146 // try unescape for backward compatibility
147 try { return unescape(s); } catch(err2) { return ''; }
148 }
149 },
150
151 set: function(name, value, minutes, domain, excl_subdomains) {
152 var expires, basehost;
153
154 if (minutes) {
155 var date = new Date();
156 date.setTime(date.getTime() + (minutes * 60 * 1000));
157 expires = '; expires=' + date.toGMTString();
158 } else {
159 expires = '';
160 }
161 if (domain && !excl_subdomains) {
162 basehost = ';domain=.' + domain;
163 } else {
164 basehost = '';
165 }
166 document.cookie = this.encodeData(name) + '=' + this.encodeData(value) + expires + basehost + '; path=/';
167 },
168
169 get: function(name) {
170 var nameEQ = this.encodeData(name) + '=',
171 ca = document.cookie.split(';');
172
173 for (var i = 0; i < ca.length; i++) {
174 var c = ca[i];
175 while (c.charAt(0) === ' ') { c = c.substring(1, c.length); }
176 if (c.indexOf(nameEQ) === 0) {
177 return this.decodeData(c.substring(nameEQ.length, c.length));
178 }
179 }
180 return null;
181 },
182
183 destroy: function(name, domain, excl_subdomains) {
184 this.set(name, '', -1, domain, excl_subdomains);
185 },
186
187 parse: function(yummy) {
188
189 var cookies = [],
190 data = {};
191
192 if (typeof yummy === 'string') {
193 cookies.push(yummy);
194 } else {
195 for (var prop in yummy) {
196 if (yummy.hasOwnProperty(prop)) {
197 cookies.push(yummy[prop]);
198 }
199 }
200 }
201
202 for (var i1 = 0; i1 < cookies.length; i1++) {
203 var cookie_array;
204 data[this.unsbjs(cookies[i1])] = {};
205 if (this.get(cookies[i1])) {
206 cookie_array = this.get(cookies[i1]).split(delimiter);
207 } else {
208 cookie_array = [];
209 }
210 for (var i2 = 0; i2 < cookie_array.length; i2++) {
211 var tmp_array = cookie_array[i2].split('='),
212 result_array = tmp_array.splice(0, 1);
213 result_array.push(tmp_array.join('='));
214 data[this.unsbjs(cookies[i1])][result_array[0]] = this.decodeData(result_array[1]);
215 }
216 }
217
218 return data;
219
220 },
221
222 unsbjs: function (string) {
223 return string.replace('sbjs_', '');
224 }
225
226 };
227
228 },{"../data":2}],4:[function(_dereq_,module,exports){
229 "use strict";
230
231 module.exports = {
232
233 parse: function(str) {
234 var o = this.parseOptions,
235 m = o.parser[o.strictMode ? 'strict' : 'loose'].exec(str),
236 uri = {},
237 i = 14;
238
239 while (i--) { uri[o.key[i]] = m[i] || ''; }
240
241 uri[o.q.name] = {};
242 uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
243 if ($1) { uri[o.q.name][$1] = $2; }
244 });
245
246 return uri;
247 },
248
249 parseOptions: {
250 strictMode: false,
251 key: ['source','protocol','authority','userInfo','user','password','host','port','relative','path','directory','file','query','anchor'],
252 q: {
253 name: 'queryKey',
254 parser: /(?:^|&)([^&=]*)=?([^&]*)/g
255 },
256 parser: {
257 strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
258 loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
259 }
260 },
261
262 getParam: function(custom_params) {
263 var query_string = {},
264 query = custom_params ? custom_params : window.location.search.substring(1),
265 vars = query.split('&');
266
267 for (var i = 0; i < vars.length; i++) {
268 var pair = vars[i].split('=');
269 if (typeof query_string[pair[0]] === 'undefined') {
270 query_string[pair[0]] = pair[1];
271 } else if (typeof query_string[pair[0]] === 'string') {
272 var arr = [ query_string[pair[0]], pair[1] ];
273 query_string[pair[0]] = arr;
274 } else {
275 query_string[pair[0]].push(pair[1]);
276 }
277 }
278 return query_string;
279 },
280
281 getHost: function(request) {
282 return this.parse(request).host.replace('www.', '');
283 }
284
285 };
286 },{}],5:[function(_dereq_,module,exports){
287 "use strict";
288
289 module.exports = {
290
291 escapeRegexp: function(string) {
292 return string.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
293 },
294
295 setDate: function(date, offset) {
296 var utc_offset = date.getTimezoneOffset() / 60,
297 now_hours = date.getHours(),
298 custom_offset = offset || offset === 0 ? offset : -utc_offset;
299
300 date.setHours(now_hours + utc_offset + custom_offset);
301
302 var year = date.getFullYear(),
303 month = this.setLeadingZeroToInt(date.getMonth() + 1, 2),
304 day = this.setLeadingZeroToInt(date.getDate(), 2),
305 hour = this.setLeadingZeroToInt(date.getHours(), 2),
306 minute = this.setLeadingZeroToInt(date.getMinutes(), 2),
307 second = this.setLeadingZeroToInt(date.getSeconds(), 2);
308
309 return (year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second);
310 },
311
312 setLeadingZeroToInt: function(num, size) {
313 var s = num + '';
314 while (s.length < size) { s = '0' + s; }
315 return s;
316 },
317
318 randomInt: function(min, max) {
319 return Math.floor(Math.random() * (max - min + 1)) + min;
320 }
321
322 };
323
324 },{}],6:[function(_dereq_,module,exports){
325 "use strict";
326
327 var data = _dereq_('./data'),
328 terms = _dereq_('./terms'),
329 cookies = _dereq_('./helpers/cookies'),
330 uri = _dereq_('./helpers/uri'),
331 utils = _dereq_('./helpers/utils'),
332 params = _dereq_('./params'),
333 migrations = _dereq_('./migrations');
334
335 module.exports = function(prefs) {
336
337 var p = params.fetch(prefs);
338 var get_param = uri.getParam();
339 var domain = p.domain.host,
340 isolate = p.domain.isolate,
341 lifetime = p.lifetime;
342
343 migrations.go(lifetime, domain, isolate);
344
345 var __sbjs_type,
346 __sbjs_source,
347 __sbjs_medium,
348 __sbjs_campaign,
349 __sbjs_content,
350 __sbjs_term,
351 __sbjs_id;
352
353 function mainData() {
354 var sbjs_data;
355 if (
356 typeof get_param.utm_source !== 'undefined' ||
357 typeof get_param.utm_medium !== 'undefined' ||
358 typeof get_param.utm_campaign !== 'undefined' ||
359 typeof get_param.utm_content !== 'undefined' ||
360 typeof get_param.utm_term !== 'undefined' ||
361 typeof get_param.utm_id !== 'undefined' ||
362 typeof get_param.gclid !== 'undefined' ||
363 typeof get_param.yclid !== 'undefined' ||
364 typeof get_param[p.campaign_param] !== 'undefined' ||
365 typeof get_param[p.term_param] !== 'undefined' ||
366 typeof get_param[p.content_param] !== 'undefined'
367 ) {
368 setFirstAndCurrentExtraData();
369 sbjs_data = getData(terms.traffic.utm);
370 } else if (checkReferer(terms.traffic.organic)) {
371 setFirstAndCurrentExtraData();
372 sbjs_data = getData(terms.traffic.organic);
373 } else if (!cookies.get(data.containers.session) && checkReferer(terms.traffic.referral)) {
374 setFirstAndCurrentExtraData();
375 sbjs_data = getData(terms.traffic.referral);
376 } else if (!cookies.get(data.containers.first) && !cookies.get(data.containers.current)) {
377 setFirstAndCurrentExtraData();
378 sbjs_data = getData(terms.traffic.typein);
379 } else {
380 return cookies.get(data.containers.current);
381 }
382
383 return sbjs_data;
384 }
385
386 function getData(type) {
387
388 switch (type) {
389
390 case terms.traffic.utm:
391
392 __sbjs_type = terms.traffic.utm;
393
394 if (typeof get_param.utm_source !== 'undefined') {
395 __sbjs_source = get_param.utm_source;
396 } else if (typeof get_param.gclid !== 'undefined') {
397 __sbjs_source = 'google';
398 } else if (typeof get_param.yclid !== 'undefined') {
399 __sbjs_source = 'yandex';
400 } else {
401 __sbjs_source = terms.none;
402 }
403
404 if (typeof get_param.utm_medium !== 'undefined') {
405 __sbjs_medium = get_param.utm_medium;
406 } else if (typeof get_param.gclid !== 'undefined') {
407 __sbjs_medium = 'cpc';
408 } else if (typeof get_param.yclid !== 'undefined') {
409 __sbjs_medium = 'cpc';
410 } else {
411 __sbjs_medium = terms.none;
412 }
413
414 if (typeof get_param.utm_campaign !== 'undefined') {
415 __sbjs_campaign = get_param.utm_campaign;
416 } else if (typeof get_param[p.campaign_param] !== 'undefined') {
417 __sbjs_campaign = get_param[p.campaign_param];
418 } else if (typeof get_param.gclid !== 'undefined') {
419 __sbjs_campaign = 'google_cpc';
420 } else if (typeof get_param.yclid !== 'undefined') {
421 __sbjs_campaign = 'yandex_cpc';
422 } else {
423 __sbjs_campaign = terms.none;
424 }
425
426 if (typeof get_param.utm_content !== 'undefined') {
427 __sbjs_content = get_param.utm_content;
428 } else if (typeof get_param[p.content_param] !== 'undefined') {
429 __sbjs_content = get_param[p.content_param];
430 } else {
431 __sbjs_content = terms.none;
432 }
433
434 __sbjs_id = get_param.utm_id || terms.none;
435
436 if (typeof get_param.utm_term !== 'undefined') {
437 __sbjs_term = get_param.utm_term;
438 } else if (typeof get_param[p.term_param] !== 'undefined') {
439 __sbjs_term = get_param[p.term_param];
440 } else {
441 __sbjs_term = getUtmTerm() || terms.none;
442 }
443
444 break;
445
446 case terms.traffic.organic:
447 __sbjs_type = terms.traffic.organic;
448 __sbjs_source = __sbjs_source || uri.getHost(document.referrer);
449 __sbjs_medium = terms.referer.organic;
450 __sbjs_campaign = terms.none;
451 __sbjs_content = terms.none;
452 __sbjs_term = terms.none;
453 __sbjs_id = terms.none;
454 break;
455
456 case terms.traffic.referral:
457 __sbjs_type = terms.traffic.referral;
458 __sbjs_source = __sbjs_source || uri.getHost(document.referrer);
459 __sbjs_medium = __sbjs_medium || terms.referer.referral;
460 __sbjs_campaign = terms.none;
461 __sbjs_content = uri.parse(document.referrer).path;
462 __sbjs_term = terms.none;
463 __sbjs_id = terms.none;
464 break;
465
466 case terms.traffic.typein:
467 __sbjs_type = terms.traffic.typein;
468 __sbjs_source = p.typein_attributes.source;
469 __sbjs_medium = p.typein_attributes.medium;
470 __sbjs_campaign = terms.none;
471 __sbjs_content = terms.none;
472 __sbjs_term = terms.none;
473 __sbjs_id = terms.none;
474 break;
475
476 default:
477 __sbjs_type = terms.oops;
478 __sbjs_source = terms.oops;
479 __sbjs_medium = terms.oops;
480 __sbjs_campaign = terms.oops;
481 __sbjs_content = terms.oops;
482 __sbjs_term = terms.oops;
483 __sbjs_id = terms.oops;
484 }
485 var sbjs_data = {
486 type: __sbjs_type,
487 source: __sbjs_source,
488 medium: __sbjs_medium,
489 campaign: __sbjs_campaign,
490 content: __sbjs_content,
491 term: __sbjs_term,
492 id: __sbjs_id
493 };
494
495 return data.pack.main(sbjs_data);
496
497 }
498
499 function getUtmTerm() {
500 var referer = document.referrer;
501 if (get_param.utm_term) {
502 return get_param.utm_term;
503 } else if (referer && uri.parse(referer).host && uri.parse(referer).host.match(/^(?:.*\.)?yandex\..{2,9}$/i)) {
504 try {
505 return uri.getParam(uri.parse(document.referrer).query).text;
506 } catch (err) {
507 return false;
508 }
509 } else {
510 return false;
511 }
512 }
513
514 function checkReferer(type) {
515 var referer = document.referrer;
516 switch(type) {
517 case terms.traffic.organic:
518 return (!!referer && checkRefererHost(referer) && isOrganic(referer));
519 case terms.traffic.referral:
520 return (!!referer && checkRefererHost(referer) && isReferral(referer));
521 default:
522 return false;
523 }
524 }
525
526 function checkRefererHost(referer) {
527 if (p.domain) {
528 if (!isolate) {
529 var host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(domain) + '$', 'i');
530 return !(uri.getHost(referer).match(host_regex));
531 } else {
532 return (uri.getHost(referer) !== uri.getHost(domain));
533 }
534 } else {
535 return (uri.getHost(referer) !== uri.getHost(document.location.href));
536 }
537 }
538
539 function isOrganic(referer) {
540
541 var y_host = 'yandex',
542 y_param = 'text',
543 g_host = 'google';
544
545 var y_host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(y_host) + '\\..{2,9}$'),
546 y_param_regex = new RegExp('.*' + utils.escapeRegexp(y_param) + '=.*'),
547 g_host_regex = new RegExp('^(?:www\\.)?' + utils.escapeRegexp(g_host) + '\\..{2,9}$');
548
549 if (
550 !!uri.parse(referer).query &&
551 !!uri.parse(referer).host.match(y_host_regex) &&
552 !!uri.parse(referer).query.match(y_param_regex)
553 ) {
554 __sbjs_source = y_host;
555 return true;
556 } else if (!!uri.parse(referer).host.match(g_host_regex)) {
557 __sbjs_source = g_host;
558 return true;
559 } else if (!!uri.parse(referer).query) {
560 for (var i = 0; i < p.organics.length; i++) {
561 if (
562 uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.organics[i].host) + '$', 'i')) &&
563 uri.parse(referer).query.match(new RegExp('.*' + utils.escapeRegexp(p.organics[i].param) + '=.*', 'i'))
564 ) {
565 __sbjs_source = p.organics[i].display || p.organics[i].host;
566 return true;
567 }
568 if (i + 1 === p.organics.length) {
569 return false;
570 }
571 }
572 } else {
573 return false;
574 }
575 }
576
577 function isReferral(referer) {
578 if (p.referrals.length > 0) {
579 for (var i = 0; i < p.referrals.length; i++) {
580 if (uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.referrals[i].host) + '$', 'i'))) {
581 __sbjs_source = p.referrals[i].display || p.referrals[i].host;
582 __sbjs_medium = p.referrals[i].medium || terms.referer.referral;
583 return true;
584 }
585 if (i + 1 === p.referrals.length) {
586 __sbjs_source = uri.getHost(referer);
587 return true;
588 }
589 }
590 } else {
591 __sbjs_source = uri.getHost(referer);
592 return true;
593 }
594 }
595
596 function setFirstAndCurrentExtraData() {
597 cookies.set(data.containers.current_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate);
598 if (!cookies.get(data.containers.first_extra)) {
599 cookies.set(data.containers.first_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate);
600 }
601 }
602
603 (function setData() {
604
605 // Main data
606 cookies.set(data.containers.current, mainData(), lifetime, domain, isolate);
607 if (!cookies.get(data.containers.first)) {
608 cookies.set(data.containers.first, cookies.get(data.containers.current), lifetime, domain, isolate);
609 }
610
611 // User data
612 var visits, udata;
613 if (!cookies.get(data.containers.udata)) {
614 visits = 1;
615 udata = data.pack.user(visits, p.user_ip);
616 } else {
617 visits = parseInt(cookies.parse(data.containers.udata)[cookies.unsbjs(data.containers.udata)][data.aliases.udata.visits]) || 1;
618 visits = cookies.get(data.containers.session) ? visits : visits + 1;
619 udata = data.pack.user(visits, p.user_ip);
620 }
621 cookies.set(data.containers.udata, udata, lifetime, domain, isolate);
622
623 // Session
624 var pages_count;
625 if (!cookies.get(data.containers.session)) {
626 pages_count = 1;
627 } else {
628 pages_count = parseInt(cookies.parse(data.containers.session)[cookies.unsbjs(data.containers.session)][data.aliases.session.pages_seen]) || 1;
629 pages_count += 1;
630 }
631 cookies.set(data.containers.session, data.pack.session(pages_count), p.session_length, domain, isolate);
632
633 // Promocode
634 if (p.promocode && !cookies.get(data.containers.promocode)) {
635 cookies.set(data.containers.promocode, data.pack.promo(p.promocode), lifetime, domain, isolate);
636 }
637
638 })();
639
640 return cookies.parse(data.containers);
641
642 };
643
644 },{"./data":2,"./helpers/cookies":3,"./helpers/uri":4,"./helpers/utils":5,"./migrations":7,"./params":8,"./terms":9}],7:[function(_dereq_,module,exports){
645 "use strict";
646
647 var data = _dereq_('./data'),
648 cookies = _dereq_('./helpers/cookies');
649
650 module.exports = {
651
652 go: function(lifetime, domain, isolate) {
653
654 var migrate = this.migrations,
655 _with = { l: lifetime, d: domain, i: isolate };
656
657 var i;
658
659 if (!cookies.get(data.containers.first) && !cookies.get(data.service.migrations)) {
660
661 var mids = [];
662 for (i = 0; i < migrate.length; i++) { mids.push(migrate[i].id); }
663
664 var advance = '';
665 for (i = 0; i < mids.length; i++) {
666 advance += mids[i] + '=1';
667 if (i < mids.length - 1) { advance += data.delimiter; }
668 }
669 cookies.set(data.service.migrations, advance, _with.l, _with.d, _with.i);
670
671 } else if (!cookies.get(data.service.migrations)) {
672
673 // We have only one migration for now, so just
674 for (i = 0; i < migrate.length; i++) {
675 migrate[i].go(migrate[i].id, _with);
676 }
677
678 }
679
680 },
681
682 migrations: [
683
684 {
685 id: '1418474375998',
686 version: '1.0.0-beta',
687 go: function(mid, _with) {
688
689 var success = mid + '=1',
690 fail = mid + '=0';
691
692 var safeReplace = function($0, $1, $2) {
693 return ($1 || $2 ? $0 : data.delimiter);
694 };
695
696 try {
697
698 // Switch delimiter and renew cookies
699 var _in = [];
700 for (var prop in data.containers) {
701 if (data.containers.hasOwnProperty(prop)) {
702 _in.push(data.containers[prop]);
703 }
704 }
705
706 for (var i = 0; i < _in.length; i++) {
707 if (cookies.get(_in[i])) {
708 var buffer = cookies.get(_in[i]).replace(/(\|)?\|(\|)?/g, safeReplace);
709 cookies.destroy(_in[i], _with.d, _with.i);
710 cookies.destroy(_in[i], _with.d, !_with.i);
711 cookies.set(_in[i], buffer, _with.l, _with.d, _with.i);
712 }
713 }
714
715 // Update `session`
716 if (cookies.get(data.containers.session)) {
717 cookies.set(data.containers.session, data.pack.session(0), _with.l, _with.d, _with.i);
718 }
719
720 // Yay!
721 cookies.set(data.service.migrations, success, _with.l, _with.d, _with.i);
722
723 } catch (err) {
724 // Oops
725 cookies.set(data.service.migrations, fail, _with.l, _with.d, _with.i);
726 }
727 }
728 }
729
730 ]
731
732 };
733 },{"./data":2,"./helpers/cookies":3}],8:[function(_dereq_,module,exports){
734 "use strict";
735
736 var terms = _dereq_('./terms'),
737 uri = _dereq_('./helpers/uri');
738
739 module.exports = {
740
741 fetch: function(prefs) {
742
743 var user = prefs || {},
744 params = {};
745
746 // Set `lifetime of the cookie` in months
747 params.lifetime = this.validate.checkFloat(user.lifetime) || 6;
748 params.lifetime = parseInt(params.lifetime * 30 * 24 * 60);
749
750 // Set `session length` in minutes
751 params.session_length = this.validate.checkInt(user.session_length) || 30;
752
753 // Set `timezone offset` in hours
754 params.timezone_offset = this.validate.checkInt(user.timezone_offset);
755
756 // Set `campaign param` for AdWords links
757 params.campaign_param = user.campaign_param || false;
758
759 // Set `term param` and `content param` for AdWords links
760 params.term_param = user.term_param || false;
761 params.content_param = user.content_param || false;
762
763 // Set `user ip`
764 params.user_ip = user.user_ip || terms.none;
765
766 // Set `promocode`
767 if (user.promocode) {
768 params.promocode = {};
769 params.promocode.min = parseInt(user.promocode.min) || 100000;
770 params.promocode.max = parseInt(user.promocode.max) || 999999;
771 } else {
772 params.promocode = false;
773 }
774
775 // Set `typein attributes`
776 if (user.typein_attributes && user.typein_attributes.source && user.typein_attributes.medium) {
777 params.typein_attributes = {};
778 params.typein_attributes.source = user.typein_attributes.source;
779 params.typein_attributes.medium = user.typein_attributes.medium;
780 } else {
781 params.typein_attributes = { source: '(direct)', medium: '(none)' };
782 }
783
784 // Set `domain`
785 if (user.domain && this.validate.isString(user.domain)) {
786 params.domain = { host: user.domain, isolate: false };
787 } else if (user.domain && user.domain.host) {
788 params.domain = user.domain;
789 } else {
790 params.domain = { host: uri.getHost(document.location.hostname), isolate: false };
791 }
792
793 // Set `referral sources`
794 params.referrals = [];
795
796 if (user.referrals && user.referrals.length > 0) {
797 for (var ir = 0; ir < user.referrals.length; ir++) {
798 if (user.referrals[ir].host) {
799 params.referrals.push(user.referrals[ir]);
800 }
801 }
802 }
803
804 // Set `organic sources`
805 params.organics = [];
806
807 if (user.organics && user.organics.length > 0) {
808 for (var io = 0; io < user.organics.length; io++) {
809 if (user.organics[io].host && user.organics[io].param) {
810 params.organics.push(user.organics[io]);
811 }
812 }
813 }
814
815 params.organics.push({ host: 'bing.com', param: 'q', display: 'bing' });
816 params.organics.push({ host: 'yahoo.com', param: 'p', display: 'yahoo' });
817 params.organics.push({ host: 'about.com', param: 'q', display: 'about' });
818 params.organics.push({ host: 'aol.com', param: 'q', display: 'aol' });
819 params.organics.push({ host: 'ask.com', param: 'q', display: 'ask' });
820 params.organics.push({ host: 'globososo.com', param: 'q', display: 'globo' });
821 params.organics.push({ host: 'go.mail.ru', param: 'q', display: 'go.mail.ru' });
822 params.organics.push({ host: 'rambler.ru', param: 'query', display: 'rambler' });
823 params.organics.push({ host: 'tut.by', param: 'query', display: 'tut.by' });
824
825 params.referrals.push({ host: 't.co', display: 'twitter.com' });
826 params.referrals.push({ host: 'plus.url.google.com', display: 'plus.google.com' });
827
828
829 return params;
830
831 },
832
833 validate: {
834
835 checkFloat: function(v) {
836 return v && this.isNumeric(parseFloat(v)) ? parseFloat(v) : false;
837 },
838
839 checkInt: function(v) {
840 return v && this.isNumeric(parseInt(v)) ? parseInt(v) : false;
841 },
842
843 isNumeric: function(v){
844 return !isNaN(v);
845 },
846
847 isString: function(v) {
848 return Object.prototype.toString.call(v) === '[object String]';
849 }
850
851 }
852
853 };
854 },{"./helpers/uri":4,"./terms":9}],9:[function(_dereq_,module,exports){
855 "use strict";
856
857 module.exports = {
858
859 traffic: {
860 utm: 'utm',
861 organic: 'organic',
862 referral: 'referral',
863 typein: 'typein'
864 },
865
866 referer: {
867 referral: 'referral',
868 organic: 'organic',
869 social: 'social'
870 },
871
872 none: '(none)',
873 oops: '(Houston, we have a problem)'
874
875 };
876
877 },{}]},{},[1])(1)
878 });