(function () { 'use strict';
/**
* Module dependencies.
*/
var integration = require('@segment/analytics.js-integration');
var isObject = require('isobject');
var load = require('@segment/load-script');
/**
* Expose `Userpilot` integration.
*/
var Userpilot = integration('Userpilot')
.global('Userpilot')
.option('appToken', '');
/**
* Initialize.
*
* http://help.userpilot.com/
*
* @api public
*/
Userpilot.prototype.initialize = function() {
this.load(this.ready);
};
/**
* Loaded?
*
* @api private
* @return {boolean}
*/
Userpilot.prototype.loaded = function() {
return isObject(window.userpilot);
};
/**
* Load the Userpilot library.
*
* @api private
* @param {Function} callback
*/
Userpilot.prototype.load = function(callback) {
var id = this.options.appToken || 'iv';
load('//js.userpilot.io/' + id + '/latest.js', callback);
};
/**
* Page.
*
* http://help.userpilot.io/docs#page
*
* @api public
* @param {Page} page
*/
Userpilot.prototype.page = function(page) {
window.userpilot.reload(page.name(), page.properties());
};
/**
* Identify.
*
* http://help.userpilot.io/docs#identify
*
* @api public
* @param {Identify} identify
*/
Userpilot.prototype.identify = function(identify) {
var traits = identify.traits();
Eif (traits.createdAt) {
traits.created_at = traits.createdAt;
delete traits.createdAt;
}
window.userpilot.identify(identify.userId(), traits);
};
/**
* Track.
*
* http://help.userpilot.io/docs#track
*
* @api group
* @param {Group} group
*/
Userpilot.prototype.group = function(group) {
var companyId = group.groupId(),
traits = group.traits();
window.userpilot.group(companyId, traits);
};
/**
* Track.
*
* http://help.userpilot.io/docs#track
*
* @api public
* @param {Track} track
*/
Userpilot.prototype.track = function(track) {
window.userpilot.track(track.event(), track.properties());
};
/**
* Expose plugin.
*/
module.exports = exports = function(analytics) {
analytics.addIntegration(Userpilot);
};
exports.Integration = Userpilot;
}());
|