@mate-academy/sourcebuster 1.1.4 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/js/init.js DELETED
@@ -1,384 +0,0 @@
1
- "use strict";
2
-
3
- var data = require('./data'),
4
- terms = require('./terms'),
5
- cookies = require('./helpers/cookies'),
6
- uri = require('./helpers/uri'),
7
- utils = require('./helpers/utils'),
8
- params = require('./params'),
9
- migrations = require('./migrations');
10
-
11
- module.exports = function(prefs) {
12
-
13
- var p = params.fetch(prefs);
14
- var get_param = uri.getParam();
15
- var domain = p.domain.host,
16
- isolate = p.domain.isolate,
17
- lifetime = p.lifetime;
18
-
19
- migrations.go(lifetime, domain, isolate);
20
-
21
- var __sbjs_type,
22
- __sbjs_source,
23
- __sbjs_medium,
24
- __sbjs_campaign,
25
- __sbjs_content,
26
- __sbjs_term,
27
- __sbjs_account_id,
28
- __sbjs_campaign_id,
29
- __sbjs_ad_group_id,
30
- __sbjs_ad_id,
31
- __sbjs_term_id;
32
-
33
- function mainData() {
34
- var sbjs_data;
35
- if (
36
- typeof get_param.utm_source !== 'undefined' ||
37
- typeof get_param.utm_medium !== 'undefined' ||
38
- typeof get_param.utm_campaign !== 'undefined' ||
39
- typeof get_param.utm_content !== 'undefined' ||
40
- typeof get_param.utm_term !== 'undefined' ||
41
- typeof get_param.utm_ac_id !== 'undefined' ||
42
- typeof get_param.utm_id !== 'undefined' ||
43
- typeof get_param.utm_ad_group_id !== 'undefined' ||
44
- typeof get_param.utm_ad_id !== 'undefined' ||
45
- typeof get_param.utm_term_id !== 'undefined' ||
46
- typeof get_param.gclid !== 'undefined' ||
47
- typeof get_param.yclid !== 'undefined' ||
48
- typeof get_param[p.campaign_param] !== 'undefined' ||
49
- typeof get_param[p.term_param] !== 'undefined' ||
50
- typeof get_param[p.content_param] !== 'undefined'
51
- ) {
52
- setFirstAndCurrentExtraData();
53
- sbjs_data = getData(terms.traffic.utm);
54
- } else if (checkReferer(terms.traffic.organic)) {
55
- setFirstAndCurrentExtraData();
56
- sbjs_data = getData(terms.traffic.organic);
57
- } else if (!cookies.get(data.containers.session) && checkReferer(terms.traffic.referral)) {
58
- setFirstAndCurrentExtraData();
59
- sbjs_data = getData(terms.traffic.referral);
60
- } else if (!cookies.get(data.containers.first) && !cookies.get(data.containers.current)) {
61
- setFirstAndCurrentExtraData();
62
- sbjs_data = getData(terms.traffic.typein);
63
- } else {
64
- return cookies.get(data.containers.current);
65
- }
66
-
67
- return sbjs_data;
68
- }
69
-
70
- function getData(type) {
71
-
72
- switch (type) {
73
-
74
- case terms.traffic.utm:
75
-
76
- __sbjs_type = terms.traffic.utm;
77
-
78
- if (typeof get_param.utm_source !== 'undefined') {
79
- __sbjs_source = get_param.utm_source;
80
- } else if (typeof get_param.gclid !== 'undefined') {
81
- __sbjs_source = 'google';
82
- } else if (typeof get_param.yclid !== 'undefined') {
83
- __sbjs_source = 'yandex';
84
- } else {
85
- __sbjs_source = terms.none;
86
- }
87
-
88
- if (typeof get_param.utm_medium !== 'undefined') {
89
- __sbjs_medium = get_param.utm_medium;
90
- } else if (typeof get_param.gclid !== 'undefined') {
91
- __sbjs_medium = 'cpc';
92
- } else if (typeof get_param.yclid !== 'undefined') {
93
- __sbjs_medium = 'cpc';
94
- } else {
95
- __sbjs_medium = terms.none;
96
- }
97
-
98
- if (typeof get_param.utm_campaign !== 'undefined') {
99
- __sbjs_campaign = get_param.utm_campaign;
100
- } else if (typeof get_param[p.campaign_param] !== 'undefined') {
101
- __sbjs_campaign = get_param[p.campaign_param];
102
- } else if (typeof get_param.gclid !== 'undefined') {
103
- __sbjs_campaign = 'google_cpc';
104
- } else if (typeof get_param.yclid !== 'undefined') {
105
- __sbjs_campaign = 'yandex_cpc';
106
- } else {
107
- __sbjs_campaign = terms.none;
108
- }
109
-
110
- if (typeof get_param.utm_content !== 'undefined') {
111
- __sbjs_content = get_param.utm_content;
112
- } else if (typeof get_param[p.content_param] !== 'undefined') {
113
- __sbjs_content = get_param[p.content_param];
114
- } else {
115
- __sbjs_content = terms.none;
116
- }
117
-
118
- if (typeof get_param.utm_term !== 'undefined') {
119
- __sbjs_term = get_param.utm_term;
120
- } else if (typeof get_param[p.term_param] !== 'undefined') {
121
- __sbjs_term = get_param[p.term_param];
122
- } else {
123
- __sbjs_term = getUtmTerm() || terms.none;
124
- }
125
-
126
- if (typeof get_param.utm_ac_id !== 'undefined') {
127
- __sbjs_account_id = get_param.utm_ac_id;
128
- } else if (typeof get_param.gclid !== 'undefined') {
129
- __sbjs_account_id = 'google_cpc';
130
- } else {
131
- __sbjs_account_id = terms.none;
132
- }
133
-
134
- if (typeof get_param.utm_id !== 'undefined') {
135
- __sbjs_campaign_id = get_param.utm_id;
136
- } else if (typeof get_param.gclid !== 'undefined') {
137
- __sbjs_campaign_id = 'google_cpc';
138
- } else {
139
- __sbjs_campaign_id = terms.none;
140
- }
141
-
142
- if (typeof get_param.utm_ad_group_id !== 'undefined') {
143
- __sbjs_ad_group_id = get_param.utm_ad_group_id;
144
- } else if (typeof get_param.gclid !== 'undefined') {
145
- __sbjs_ad_group_id = 'google_cpc';
146
- } else {
147
- __sbjs_ad_group_id = terms.none;
148
- }
149
-
150
- if (typeof get_param.utm_ad_id !== 'undefined') {
151
- __sbjs_ad_id = get_param.utm_ad_id;
152
- } else if (typeof get_param.gclid !== 'undefined') {
153
- __sbjs_ad_id = 'google_cpc';
154
- } else {
155
- __sbjs_ad_id = terms.none;
156
- }
157
-
158
- if (typeof get_param.utm_term_id !== 'undefined') {
159
- __sbjs_term_id = get_param.utm_term_id;
160
- } else if (typeof get_param.gclid !== 'undefined') {
161
- __sbjs_term_id = 'google_cpc';
162
- } else {
163
- __sbjs_term_id = terms.none;
164
- }
165
-
166
- break;
167
-
168
- case terms.traffic.organic:
169
- __sbjs_type = terms.traffic.organic;
170
- __sbjs_source = __sbjs_source || uri.getHost(document.referrer);
171
- __sbjs_medium = terms.referer.organic;
172
- __sbjs_campaign = terms.none;
173
- __sbjs_content = terms.none;
174
- __sbjs_term = terms.none;
175
- __sbjs_account_id = terms.none;
176
- __sbjs_campaign_id = terms.none;
177
- __sbjs_ad_group_id = terms.none;
178
- __sbjs_ad_id = terms.none;
179
- __sbjs_term_id = terms.none;
180
- break;
181
-
182
- case terms.traffic.referral:
183
- __sbjs_type = terms.traffic.referral;
184
- __sbjs_source = __sbjs_source || uri.getHost(document.referrer);
185
- __sbjs_medium = __sbjs_medium || terms.referer.referral;
186
- __sbjs_campaign = terms.none;
187
- __sbjs_content = uri.parse(document.referrer).path;
188
- __sbjs_term = terms.none;
189
- __sbjs_account_id = terms.none;
190
- __sbjs_campaign_id = terms.none;
191
- __sbjs_ad_group_id = terms.none;
192
- __sbjs_ad_id = terms.none;
193
- __sbjs_term_id = terms.none;
194
- break;
195
-
196
- case terms.traffic.typein:
197
- __sbjs_type = terms.traffic.typein;
198
- __sbjs_source = p.typein_attributes.source;
199
- __sbjs_medium = p.typein_attributes.medium;
200
- __sbjs_campaign = terms.none;
201
- __sbjs_content = terms.none;
202
- __sbjs_term = terms.none;
203
- __sbjs_account_id = terms.none;
204
- __sbjs_campaign_id = terms.none;
205
- __sbjs_ad_group_id = terms.none;
206
- __sbjs_ad_id = terms.none;
207
- __sbjs_term_id = terms.none;
208
- break;
209
-
210
- default:
211
- __sbjs_type = terms.oops;
212
- __sbjs_source = terms.oops;
213
- __sbjs_medium = terms.oops;
214
- __sbjs_campaign = terms.oops;
215
- __sbjs_content = terms.oops;
216
- __sbjs_term = terms.oops;
217
- __sbjs_account_id = terms.oops;
218
- __sbjs_campaign_id = terms.oops;
219
- __sbjs_ad_group_id = terms.oops;
220
- __sbjs_ad_id = terms.oops;
221
- __sbjs_term_id = terms.oops;
222
- }
223
- var sbjs_data = {
224
- type: __sbjs_type,
225
- source: __sbjs_source,
226
- medium: __sbjs_medium,
227
- campaign: __sbjs_campaign,
228
- content: __sbjs_content,
229
- term: __sbjs_term,
230
- account_id: __sbjs_account_id,
231
- campaign_id: __sbjs_campaign_id,
232
- ad_group_id: __sbjs_ad_group_id,
233
- ad_id: __sbjs_ad_id,
234
- term_id: __sbjs_term_id,
235
- };
236
-
237
- return data.pack.main(sbjs_data);
238
-
239
- }
240
-
241
- function getUtmTerm() {
242
- var referer = document.referrer;
243
- if (get_param.utm_term) {
244
- return get_param.utm_term;
245
- } else if (referer && uri.parse(referer).host && uri.parse(referer).host.match(/^(?:.*\.)?yandex\..{2,9}$/i)) {
246
- try {
247
- return uri.getParam(uri.parse(document.referrer).query).text;
248
- } catch (err) {
249
- return false;
250
- }
251
- } else {
252
- return false;
253
- }
254
- }
255
-
256
- function checkReferer(type) {
257
- var referer = document.referrer;
258
- switch(type) {
259
- case terms.traffic.organic:
260
- return (!!referer && checkRefererHost(referer) && isOrganic(referer));
261
- case terms.traffic.referral:
262
- return (!!referer && checkRefererHost(referer) && isReferral(referer));
263
- default:
264
- return false;
265
- }
266
- }
267
-
268
- function checkRefererHost(referer) {
269
- if (p.domain) {
270
- if (!isolate) {
271
- var host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(domain) + '$', 'i');
272
- return !(uri.getHost(referer).match(host_regex));
273
- } else {
274
- return (uri.getHost(referer) !== uri.getHost(domain));
275
- }
276
- } else {
277
- return (uri.getHost(referer) !== uri.getHost(document.location.href));
278
- }
279
- }
280
-
281
- function isOrganic(referer) {
282
-
283
- var y_host = 'yandex',
284
- y_param = 'text',
285
- g_host = 'google';
286
-
287
- var y_host_regex = new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(y_host) + '\\..{2,9}$'),
288
- y_param_regex = new RegExp('.*' + utils.escapeRegexp(y_param) + '=.*'),
289
- g_host_regex = new RegExp('^(?:www\\.)?' + utils.escapeRegexp(g_host) + '\\..{2,9}$');
290
-
291
- if (
292
- !!uri.parse(referer).query &&
293
- !!uri.parse(referer).host.match(y_host_regex) &&
294
- !!uri.parse(referer).query.match(y_param_regex)
295
- ) {
296
- __sbjs_source = y_host;
297
- return true;
298
- } else if (!!uri.parse(referer).host.match(g_host_regex)) {
299
- __sbjs_source = g_host;
300
- return true;
301
- } else if (!!uri.parse(referer).query) {
302
- for (var i = 0; i < p.organics.length; i++) {
303
- if (
304
- uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.organics[i].host) + '$', 'i')) &&
305
- uri.parse(referer).query.match(new RegExp('.*' + utils.escapeRegexp(p.organics[i].param) + '=.*', 'i'))
306
- ) {
307
- __sbjs_source = p.organics[i].display || p.organics[i].host;
308
- return true;
309
- }
310
- if (i + 1 === p.organics.length) {
311
- return false;
312
- }
313
- }
314
- } else {
315
- return false;
316
- }
317
- }
318
-
319
- function isReferral(referer) {
320
- if (p.referrals.length > 0) {
321
- for (var i = 0; i < p.referrals.length; i++) {
322
- if (uri.parse(referer).host.match(new RegExp('^(?:.*\\.)?' + utils.escapeRegexp(p.referrals[i].host) + '$', 'i'))) {
323
- __sbjs_source = p.referrals[i].display || p.referrals[i].host;
324
- __sbjs_medium = p.referrals[i].medium || terms.referer.referral;
325
- return true;
326
- }
327
- if (i + 1 === p.referrals.length) {
328
- __sbjs_source = uri.getHost(referer);
329
- return true;
330
- }
331
- }
332
- } else {
333
- __sbjs_source = uri.getHost(referer);
334
- return true;
335
- }
336
- }
337
-
338
- function setFirstAndCurrentExtraData() {
339
- cookies.set(data.containers.current_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate);
340
- if (!cookies.get(data.containers.first_extra)) {
341
- cookies.set(data.containers.first_extra, data.pack.extra(p.timezone_offset), lifetime, domain, isolate);
342
- }
343
- }
344
-
345
- (function setData() {
346
-
347
- // Main data
348
- cookies.set(data.containers.current, mainData(), lifetime, domain, isolate);
349
- if (!cookies.get(data.containers.first)) {
350
- cookies.set(data.containers.first, cookies.get(data.containers.current), lifetime, domain, isolate);
351
- }
352
-
353
- // User data
354
- var visits, udata;
355
- if (!cookies.get(data.containers.udata)) {
356
- visits = 1;
357
- udata = data.pack.user(visits, p.user_ip);
358
- } else {
359
- visits = parseInt(cookies.parse(data.containers.udata)[cookies.unsbjs(data.containers.udata)][data.aliases.udata.visits]) || 1;
360
- visits = cookies.get(data.containers.session) ? visits : visits + 1;
361
- udata = data.pack.user(visits, p.user_ip);
362
- }
363
- cookies.set(data.containers.udata, udata, lifetime, domain, isolate);
364
-
365
- // Session
366
- var pages_count;
367
- if (!cookies.get(data.containers.session)) {
368
- pages_count = 1;
369
- } else {
370
- pages_count = parseInt(cookies.parse(data.containers.session)[cookies.unsbjs(data.containers.session)][data.aliases.session.pages_seen]) || 1;
371
- pages_count += 1;
372
- }
373
- cookies.set(data.containers.session, data.pack.session(pages_count), p.session_length, domain, isolate);
374
-
375
- // Promocode
376
- if (p.promocode && !cookies.get(data.containers.promocode)) {
377
- cookies.set(data.containers.promocode, data.pack.promo(p.promocode), lifetime, domain, isolate);
378
- }
379
-
380
- })();
381
-
382
- return cookies.parse(data.containers);
383
-
384
- };
@@ -1,88 +0,0 @@
1
- "use strict";
2
-
3
- var data = require('./data'),
4
- cookies = require('./helpers/cookies');
5
-
6
- module.exports = {
7
-
8
- go: function(lifetime, domain, isolate) {
9
-
10
- var migrate = this.migrations,
11
- _with = { l: lifetime, d: domain, i: isolate };
12
-
13
- var i;
14
-
15
- if (!cookies.get(data.containers.first) && !cookies.get(data.service.migrations)) {
16
-
17
- var mids = [];
18
- for (i = 0; i < migrate.length; i++) { mids.push(migrate[i].id); }
19
-
20
- var advance = '';
21
- for (i = 0; i < mids.length; i++) {
22
- advance += mids[i] + '=1';
23
- if (i < mids.length - 1) { advance += data.delimiter; }
24
- }
25
- cookies.set(data.service.migrations, advance, _with.l, _with.d, _with.i);
26
-
27
- } else if (!cookies.get(data.service.migrations)) {
28
-
29
- // We have only one migration for now, so just
30
- for (i = 0; i < migrate.length; i++) {
31
- migrate[i].go(migrate[i].id, _with);
32
- }
33
-
34
- }
35
-
36
- },
37
-
38
- migrations: [
39
-
40
- {
41
- id: '1418474375998',
42
- version: '1.0.0-beta',
43
- go: function(mid, _with) {
44
-
45
- var success = mid + '=1',
46
- fail = mid + '=0';
47
-
48
- var safeReplace = function($0, $1, $2) {
49
- return ($1 || $2 ? $0 : data.delimiter);
50
- };
51
-
52
- try {
53
-
54
- // Switch delimiter and renew cookies
55
- var _in = [];
56
- for (var prop in data.containers) {
57
- if (data.containers.hasOwnProperty(prop)) {
58
- _in.push(data.containers[prop]);
59
- }
60
- }
61
-
62
- for (var i = 0; i < _in.length; i++) {
63
- if (cookies.get(_in[i])) {
64
- var buffer = cookies.get(_in[i]).replace(/(\|)?\|(\|)?/g, safeReplace);
65
- cookies.destroy(_in[i], _with.d, _with.i);
66
- cookies.destroy(_in[i], _with.d, !_with.i);
67
- cookies.set(_in[i], buffer, _with.l, _with.d, _with.i);
68
- }
69
- }
70
-
71
- // Update `session`
72
- if (cookies.get(data.containers.session)) {
73
- cookies.set(data.containers.session, data.pack.session(0), _with.l, _with.d, _with.i);
74
- }
75
-
76
- // Yay!
77
- cookies.set(data.service.migrations, success, _with.l, _with.d, _with.i);
78
-
79
- } catch (err) {
80
- // Oops
81
- cookies.set(data.service.migrations, fail, _with.l, _with.d, _with.i);
82
- }
83
- }
84
- }
85
-
86
- ]
87
-
88
- };
package/src/js/params.js DELETED
@@ -1,120 +0,0 @@
1
- "use strict";
2
-
3
- var terms = require('./terms'),
4
- uri = require('./helpers/uri');
5
-
6
- module.exports = {
7
-
8
- fetch: function(prefs) {
9
-
10
- var user = prefs || {},
11
- params = {};
12
-
13
- // Set `lifetime of the cookie` in months
14
- params.lifetime = this.validate.checkFloat(user.lifetime) || 6;
15
- params.lifetime = parseInt(params.lifetime * 30 * 24 * 60);
16
-
17
- // Set `session length` in minutes
18
- params.session_length = this.validate.checkInt(user.session_length) || 30;
19
-
20
- // Set `timezone offset` in hours
21
- params.timezone_offset = this.validate.checkInt(user.timezone_offset);
22
-
23
- // Set `campaign param` for AdWords links
24
- params.campaign_param = user.campaign_param || false;
25
-
26
- // Set `term param` and `content param` for AdWords links
27
- params.term_param = user.term_param || false;
28
- params.content_param = user.content_param || false;
29
-
30
- // Set `user ip`
31
- params.user_ip = user.user_ip || terms.none;
32
-
33
- // Set `promocode`
34
- if (user.promocode) {
35
- params.promocode = {};
36
- params.promocode.min = parseInt(user.promocode.min) || 100000;
37
- params.promocode.max = parseInt(user.promocode.max) || 999999;
38
- } else {
39
- params.promocode = false;
40
- }
41
-
42
- // Set `typein attributes`
43
- if (user.typein_attributes && user.typein_attributes.source && user.typein_attributes.medium) {
44
- params.typein_attributes = {};
45
- params.typein_attributes.source = user.typein_attributes.source;
46
- params.typein_attributes.medium = user.typein_attributes.medium;
47
- } else {
48
- params.typein_attributes = { source: '(direct)', medium: '(none)' };
49
- }
50
-
51
- // Set `domain`
52
- if (user.domain && this.validate.isString(user.domain)) {
53
- params.domain = { host: user.domain, isolate: false };
54
- } else if (user.domain && user.domain.host) {
55
- params.domain = user.domain;
56
- } else {
57
- params.domain = { host: uri.getHost(document.location.hostname), isolate: false };
58
- }
59
-
60
- // Set `referral sources`
61
- params.referrals = [];
62
-
63
- if (user.referrals && user.referrals.length > 0) {
64
- for (var ir = 0; ir < user.referrals.length; ir++) {
65
- if (user.referrals[ir].host) {
66
- params.referrals.push(user.referrals[ir]);
67
- }
68
- }
69
- }
70
-
71
- // Set `organic sources`
72
- params.organics = [];
73
-
74
- if (user.organics && user.organics.length > 0) {
75
- for (var io = 0; io < user.organics.length; io++) {
76
- if (user.organics[io].host && user.organics[io].param) {
77
- params.organics.push(user.organics[io]);
78
- }
79
- }
80
- }
81
-
82
- params.organics.push({ host: 'bing.com', param: 'q', display: 'bing' });
83
- params.organics.push({ host: 'yahoo.com', param: 'p', display: 'yahoo' });
84
- params.organics.push({ host: 'about.com', param: 'q', display: 'about' });
85
- params.organics.push({ host: 'aol.com', param: 'q', display: 'aol' });
86
- params.organics.push({ host: 'ask.com', param: 'q', display: 'ask' });
87
- params.organics.push({ host: 'globososo.com', param: 'q', display: 'globo' });
88
- params.organics.push({ host: 'go.mail.ru', param: 'q', display: 'go.mail.ru' });
89
- params.organics.push({ host: 'rambler.ru', param: 'query', display: 'rambler' });
90
- params.organics.push({ host: 'tut.by', param: 'query', display: 'tut.by' });
91
-
92
- params.referrals.push({ host: 't.co', display: 'twitter.com' });
93
- params.referrals.push({ host: 'plus.url.google.com', display: 'plus.google.com' });
94
-
95
-
96
- return params;
97
-
98
- },
99
-
100
- validate: {
101
-
102
- checkFloat: function(v) {
103
- return v && this.isNumeric(parseFloat(v)) ? parseFloat(v) : false;
104
- },
105
-
106
- checkInt: function(v) {
107
- return v && this.isNumeric(parseInt(v)) ? parseInt(v) : false;
108
- },
109
-
110
- isNumeric: function(v){
111
- return !isNaN(v);
112
- },
113
-
114
- isString: function(v) {
115
- return Object.prototype.toString.call(v) === '[object String]';
116
- }
117
-
118
- }
119
-
120
- };
@@ -1,14 +0,0 @@
1
- "use strict";
2
-
3
- var init = require('./init');
4
-
5
- var sbjs = {
6
- init: function(prefs) {
7
- this.get = init(prefs);
8
- if (prefs && prefs.callback && typeof prefs.callback === 'function') {
9
- prefs.callback(this.get);
10
- }
11
- }
12
- };
13
-
14
- module.exports = sbjs;
package/src/js/terms.js DELETED
@@ -1,21 +0,0 @@
1
- "use strict";
2
-
3
- module.exports = {
4
-
5
- traffic: {
6
- utm: 'utm',
7
- organic: 'organic',
8
- referral: 'referral',
9
- typein: 'typein'
10
- },
11
-
12
- referer: {
13
- referral: 'referral',
14
- organic: 'organic',
15
- social: 'social'
16
- },
17
-
18
- none: '(none)',
19
- oops: '(Houston, we have a problem)'
20
-
21
- };