Skip to content

Commit 0746042

Browse files
committed
#141: add tracking refferer, refactor settings format
1 parent 3de7279 commit 0746042

File tree

5 files changed

+55
-17
lines changed

5 files changed

+55
-17
lines changed

app.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ if (!module.parent) {
263263
}
264264
});
265265
} else {
266-
if (global.opts.core.common.trackAnonymusStatistics) {
266+
if (global.opts.core.tracking.enabled) {
267267
trackStats.event({
268268
group: 'start',
269269
event: 'default'

core/warn.js renamed to core/trackInstall.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,16 @@ var options = global.opts = loadOptions(enginePath);
1313
var trackStats = require(path.join(global.pathToApp, 'core/trackStats'));
1414

1515
if (process.env.CI) {
16-
global.opts.core.common.trackAnonymusStatistics = false;
16+
options.core.tracking.enabled = false;
1717
}
1818

19-
if (options && options.core.common && options.core.common.trackAnonymusStatistics) {
19+
if (options && options.core && options.core.tracking && options.core.tracking.enabled) {
2020
trackStats.event({
2121
group: 'install',
2222
event: 'default'
2323
});
2424

25-
console.log('[SOURCEJS] Note: engine tracks anonymous usage statistics. To disable it, edit `core.common.trackAnonymusStatistics` configuration.\n');
25+
console.log('[SOURCEJS] Note: engine tracks anonymous usage statistics. To disable it, edit `core.tracking` configuration.');
2626
} else {
2727
trackStats.event({
2828
group: 'install',

core/trackStats.js

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,21 @@ var path = require('path');
66
var macaddress = require('macaddress');
77
var ua = require('universal-analytics');
88
var log = require(path.join(global.pathToApp, 'core/logger')).log;
9+
var utils = require(path.join(global.pathToApp, 'core/lib/utils'));
910
var crypto = require('crypto');
1011

12+
var config = {
13+
enabled: true,
14+
trackingId: 'UA-66924051-2'
15+
};
16+
17+
utils.extendOptions(
18+
config,
19+
global.opts.core.tracking
20+
);
21+
1122
if (process.env.CI || (global.commander && global.commander.test)) {
12-
global.opts.core.common.trackAnonymusStatistics = false;
13-
console.log('Running in CI.');
23+
config.enabled = false;
1424
}
1525

1626
var generateMachineID = function(){
@@ -29,32 +39,55 @@ var generateMachineID = function(){
2939
};
3040

3141
var machineID = generateMachineID();
32-
var hostVisitor = ua('UA-66924051-1', machineID, {strictCidFormat: false});
42+
var hostVisitor = ua(config.trackingId, machineID, {strictCidFormat: false});
3343

3444
var _trackPage = function(opts){
35-
if (!global.opts.core.common.trackAnonymusStatistics || !opts.pageName) return;
45+
if (!config.enabled || !opts.pageName) return;
3646

37-
var visitor = opts.sessionID ? ua('UA-66924051-1', opts.sessionID, {strictCidFormat: false}) : hostVisitor;
47+
var visitor = hostVisitor;
48+
var uid = machineID;
49+
50+
if (opts.sessionID) {
51+
uid = opts.sessionID;
52+
visitor = ua(config.trackingId, uid, {strictCidFormat: false});
53+
}
3854

3955
log.trace('track page', opts.pageName);
4056
log.trace('as a visitor', visitor);
4157

42-
visitor.pageview(opts.pageName).send();
58+
visitor.pageview({
59+
dp: opts.pageName,
60+
// Document referrer
61+
dr: machineID,
62+
uid: uid
63+
}).send();
4364
};
4465

4566
// Track host-initiated events (by unique machine id)
4667
var _trackEvent = function(opts, force){
4768
force = process.env.CI ? false : force;
4869

49-
if (!force && !global.opts.core.common.trackAnonymusStatistics || !opts.event) return;
70+
if (!force && !config.enabled || !opts.event) return;
5071

51-
var visitor = opts.sessionID ? ua('UA-66924051-1', opts.sessionID, {strictCidFormat: false}) : hostVisitor;
72+
var visitor = hostVisitor;
73+
var uid = machineID;
5274
var group = opts.group || 'default';
5375

76+
if (opts.sessionID) {
77+
uid = opts.sessionID;
78+
visitor = ua(config.trackingId, uid, {strictCidFormat: false});
79+
}
80+
5481
log.trace('track event', group + ':' + opts.event);
5582
log.trace('as a visitor', visitor);
5683

57-
visitor.event(group, opts.event).send();
84+
visitor.event({
85+
ec: group,
86+
ea: opts.event,
87+
// Document referrer
88+
dr: machineID,
89+
uid: uid
90+
}).send();
5891
};
5992

6093
var getSessionID = module.exports.getSessionID = function(req) {

options.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ module.exports = {
2424
infoFile: 'info.json',
2525

2626
// Name of options field in info.json, used to override configuration per spec
27-
infoFileOptions: 'sourcejs',
28-
29-
trackAnonymusStatistics: true
27+
infoFileOptions: 'sourcejs'
3028
},
3129

3230
// Server options are passed to app.listen (https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback)
@@ -59,9 +57,16 @@ module.exports = {
5957
// Default thumbnail file path (relative to each spec)
6058
thumbnail: 'thumbnail.png'
6159
},
60+
6261
watch: {
6362
enabled: true,
6463
foreverWatchEnabled: true
64+
},
65+
66+
tracking: {
67+
// Anonymous user statistics tracking.
68+
// Used to get insights about the community and improve engine usage experience.
69+
enabled: true
6570
}
6671
},
6772

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"universal-analytics": "^0.3.9"
5757
},
5858
"scripts": {
59-
"postinstall": "node ./core/postInstall && grunt update && node ./core/warn",
59+
"postinstall": "node ./core/postInstall && grunt update && node ./core/trackInstall",
6060
"build": "npm i",
6161
"start": "node app",
6262
"test": "grunt ci-pre-run && node app.js --test",

0 commit comments

Comments
 (0)