| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | const axios = require('axios')const bugsnag = require('bugsnag')const path = require('path')const uuid = require('uuid/v4')const _ = require('lodash')/* global wiki */module.exports = {  cid: '',  enabled: false,  init() {    this.cid = uuid()    bugsnag.register(wiki.data.telemetry.BUGSNAG_ID, {      appVersion: wiki.version,      autoNotify: false,      hostname: this.cid,      notifyReleaseStages: ['production'],      packageJSON: path.join(wiki.ROOTPATH, 'package.json'),      projectRoot: wiki.ROOTPATH,      useSSL: true    })    bugsnag.onBeforeNotify((notification, originalError) => {      if (!this.enabled) { return false }    })    if (_.get(wiki.config, 'logging.telemetry', false) === true) {      this.enabled = true    }    return this  },  sendError(err) {    bugsnag.notify(err, { userId: this.cid })  },  sendEvent(eventCategory, eventAction, eventLabel) {    if (!this.enabled) { return false }    axios({      method: 'post',      url: wiki.data.telemetry.GA_REMOTE,      headers: {        'Content-type': 'application/x-www-form-urlencoded'      },      params: {        v: 1, // API version        tid: wiki.data.telemetry.GA_ID, // Tracking ID        aip: 1, // Anonymize IP        ds: 'server', // Data source        cid: this.cid, // Client ID        t: 'event', // Hit Type        ec: eventCategory, // Event Category        ea: eventAction, // Event Action        el: eventLabel // Event Label      }    }).then(resp => {      if (resp.status !== 200) {        wiki.logger.warn('Unable to send analytics telemetry request.')      }    }, err => {      wiki.logger.warn('Unable to send analytics telemetry request.')    })  }}
 |