UNPKG

3 kBJavaScriptView Raw
1'use strict';
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 return new (P || (P = Promise))(function (resolve, reject) {
4 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7 step((generator = generator.apply(thisArg, _arguments || [])).next());
8 });
9};
10const pkg = require('../package.json');
11const uuid = require('uuid');
12const ua = require('universal-analytics');
13const _ = require('lodash');
14const ci = require('ci-info');
15const Conf = require('conf');
16const osName = require('os-name');
17const getProfileFromFile = require('../lib/profile').getProfileFromFile;
18const detectMocha = require('detect-mocha');
19const os = osName();
20const packageName = pkg.name;
21const nodeVersion = process.version;
22const appVersion = pkg.version;
23const conf = new Conf({
24 configName: `ga-${packageName}`,
25 projectName: packageName,
26 defaults: {
27 cid: uuid.v4()
28 }
29});
30process.on('unhandledRejection', error => {
31 require('../lib/exception-handler')(error);
32});
33var fake = {
34 pageview: () => {
35 return {
36 send: () => { return 'fake'; }
37 };
38 },
39 event: () => {
40 return {
41 send: () => { return 'fake'; }
42 };
43 }
44};
45var fakeMocha = {
46 pageview: () => {
47 return {
48 send: () => { return 'fakeMocha'; }
49 };
50 },
51 event: () => {
52 return {
53 send: () => { return 'fakeMocha'; }
54 };
55 }
56};
57var real = ua('UA-139874201-1', conf.get('cid'));
58real.set('cd1', os);
59real.set('cd2', nodeVersion);
60real.set('cd3', appVersion);
61var visitor;
62function getVisitor(returnFakeIfMissingConfig = false) {
63 return __awaiter(this, void 0, void 0, function* () {
64 if (!visitor) {
65 const profile = yield getProfileFromFile();
66 // use fake if it is in a ci environment or has never been configured
67 if (_.isEmpty(profile)) {
68 if (detectMocha()) {
69 return fakeMocha;
70 }
71 if (ci.isCI) {
72 real.pageview(`/downloaded/ci/${ci.name}`).send();
73 }
74 return fake;
75 }
76 if (profile.report === undefined) {
77 if (returnFakeIfMissingConfig) {
78 return fake;
79 }
80 if (detectMocha()) {
81 return fakeMocha;
82 }
83 visitor = real;
84 }
85 if (profile.report === true) {
86 visitor = real;
87 }
88 else {
89 visitor = fake;
90 }
91 }
92 return visitor;
93 });
94}
95module.exports = { getVisitor };