UNPKG

@segment/analytics.js-integration-trackjs

Version:
103 lines (91 loc) 2.11 kB
'use strict'; const defaults = (obj, defaults) => { const result = { ...defaults }; for (const key in obj) { if (obj[key] !== undefined) { result[key] = obj[key]; } } return result; }; /** * Module dependencies. */ var integration = require('@segment/analytics.js-integration'); var is = require('is'); /** * Expose `TrackJS`. */ var TrackJS = (module.exports = integration('Track JS') .global('track') .global('trackJs') .global('_trackJs') .option('enabled', true) .option('token', '') .option('application', '') .option('callbackEnabled', true) .option('callbackBindStack', false) .option('consoleEnabled', true) .option('consoleDisplay', true) .option('consoleError', true) .option('networkEnabled', true) .option('networkError', true) .option('visitorEnabled', true) .option('windowEnabled', true) .tag( '<script src="//d2zah9y47r7bi2.cloudfront.net/releases/current/tracker.js">' )); /** * Initialize. * * @api private */ TrackJS.prototype.initialize = function() { var opts = setOpts(this.options); var user = this.analytics.user(); opts.userId = user.id() || ''; window._trackJs = window._trackJs || {}; window._trackJs = defaults(window._trackJs, opts); this.load(this.ready); }; /** * Loaded? * * @return {Boolean} * @api private */ TrackJS.prototype.loaded = function() { return is.object(window.trackJs); }; /** * Reconstruct trackjs configuration object from options * * @opts Object */ function setOpts(opts) { return { enabled: opts.enabled, token: opts.token, application: opts.application, callback: { enabled: opts.callbackEnabled, bindStack: opts.callbackBindStack }, console: { enabled: opts.consoleEnabled, display: opts.consoleDisplay, error: opts.consoleError, watch: ['log', 'debug', 'info', 'warn', 'error'] }, network: { enabled: opts.networkEnabled, error: opts.networkError }, visitor: { enabled: opts.visitorEnabled }, window: { enabled: opts.windowEnabled } }; }