Skip to content

Commit b76eba5

Browse files
authored
Add rollup, turn into npm module
1 parent 003a146 commit b76eba5

File tree

8 files changed

+1188
-197
lines changed

8 files changed

+1188
-197
lines changed

MixpanelEventForwarder.js

Lines changed: 231 additions & 189 deletions
Large diffs are not rendered by default.

dist/MixpanelEventForwarder.js

Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
(function (global, factory) {
2+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
3+
typeof define === 'function' && define.amd ? define(['exports'], factory) :
4+
(global = global || self, factory(global['mp-mixpanel-kit'] = {}));
5+
}(this, function (exports) {
6+
function createCommonjsModule(fn, module) {
7+
return module = { exports: {} }, fn(module, module.exports), module.exports;
8+
}
9+
10+
var MixpanelEventForwarder = createCommonjsModule(function (module) {
11+
/* eslint-disable no-undef*/
12+
// Copyright 2015 mParticle, Inc.
13+
//
14+
// Licensed under the Apache License, Version 2.0 (the "License");
15+
// you may not use this file except in compliance with the License.
16+
// You may obtain a copy of the License at
17+
//
18+
// http://www.apache.org/licenses/LICENSE-2.0
19+
//
20+
// Unless required by applicable law or agreed to in writing, software
21+
// distributed under the License is distributed on an "AS IS" BASIS,
22+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
23+
// See the License for the specific language governing permissions and
24+
// limitations under the License.
25+
26+
(function (window) {
27+
var name = 'MixpanelEventForwarder',
28+
moduleId = 10,
29+
MessageType = {
30+
SessionStart: 1,
31+
SessionEnd : 2,
32+
PageView : 3,
33+
PageEvent : 4,
34+
CrashReport : 5,
35+
OptOut : 6,
36+
Commerce : 16
37+
};
38+
39+
40+
var constructor = function () {
41+
var self = this,
42+
isInitialized = false,
43+
forwarderSettings = null,
44+
reportingService = null;
45+
46+
self.name = name;
47+
48+
function initForwarder(settings, service, testMode) {
49+
forwarderSettings = settings;
50+
reportingService = service;
51+
52+
try {
53+
if (!testMode) {
54+
/* eslint-disable */
55+
(function(e,b){if (!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)));};}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
56+
for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d]);};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f);}})(document,window.mixpanel||[]);
57+
/* eslint-enable */
58+
mixpanel.init(settings.token, {}, 'mparticle');
59+
}
60+
61+
isInitialized = true;
62+
63+
return 'Successfully initialized: ' + name;
64+
}
65+
catch (e) {
66+
return 'Can\'t initialize forwarder: ' + name + ': ' + e;
67+
}
68+
}
69+
70+
function processEvent(event) {
71+
var reportEvent = false;
72+
73+
if (!isInitialized) {
74+
return 'Can\'t send to forwarder: ' + name + ', not initialized';
75+
}
76+
77+
try {
78+
if (event.EventDataType == MessageType.PageEvent) {
79+
reportEvent = true;
80+
logEvent(event);
81+
}
82+
else if (event.EventDataType == MessageType.PageView) {
83+
event.EventName = 'Viewed ' + event.EventName;
84+
reportEvent = true;
85+
logEvent(event);
86+
}
87+
else if (event.EventDataType == MessageType.Commerce &&
88+
event.ProductAction &&
89+
event.ProductAction.ProductActionType == mParticle.ProductActionType.Purchase) {
90+
91+
reportEvent = true;
92+
logCommerceEvent(event);
93+
}
94+
95+
if (reportEvent &&
96+
reportingService) {
97+
98+
reportingService(self, event);
99+
}
100+
101+
return 'Successfully sent to forwarder: ' + name;
102+
}
103+
catch (e) {
104+
return 'Can\'t send to forwarder: ' + name + ' ' + e;
105+
}
106+
}
107+
108+
function setUserIdentity(id, type) {
109+
if (!id) {
110+
return 'Can\'t call setUserIdentity on forwarder: ' + name + ' without ID';
111+
}
112+
113+
if (!isInitialized) {
114+
return 'Can\'t call setUserIdentity on forwarder: ' + name + ', not initialized';
115+
}
116+
117+
try {
118+
if (window.mParticle.IdentityType.Alias == type) {
119+
mixpanel.mparticle.alias(id.toString());
120+
}
121+
else {
122+
mixpanel.mparticle.identify(id.toString());
123+
}
124+
125+
return 'Successfully called identify on forwarder: ' + name;
126+
}
127+
catch (e) {
128+
return 'Can\'t call identify on forwarder: ' + name + ': ' + e;
129+
}
130+
}
131+
132+
function setUserAttribute(key, value) {
133+
var attr = {};
134+
attr[key] = value;
135+
136+
try {
137+
if (forwarderSettings.useMixpanelPeople) {
138+
mixpanel.mparticle.people.set(attr);
139+
} else {
140+
mixpanel.mparticle.register(attr);
141+
}
142+
}
143+
catch(e) {
144+
return 'Can\'t call register on forwarder: ' + name + ': ' + e;
145+
}
146+
}
147+
148+
function removeUserAttribute(attribute) {
149+
try {
150+
if (forwarderSettings.useMixpanelPeople) {
151+
mixpanel.mparticle.people.unset(attribute);
152+
} else {
153+
mixpanel.mparticle.unregister(attribute);
154+
}
155+
}
156+
catch(e) {
157+
return 'Can\'t call unregister on forwarder: ' + name + ': ' + e;
158+
}
159+
}
160+
161+
function logEvent(event) {
162+
event.EventAttributes = event.EventAttributes || {};
163+
164+
try {
165+
mixpanel.mparticle.track(
166+
event.EventName,
167+
event.EventAttributes);
168+
}
169+
catch(e) {
170+
return 'Can\'t log event on forwarder: ' + name + ': ' + e;
171+
}
172+
}
173+
174+
function logCommerceEvent(event) {
175+
if (!forwarderSettings.useMixpanelPeople) {
176+
return 'Can\'t log commerce event on forwarder: ' + name + ', useMixpanelPeople flag is not set';
177+
}
178+
179+
try {
180+
mixpanel.mparticle.people.track_charge(event.ProductAction.TotalAmount, {'$time': new Date().toISOString()});
181+
}
182+
catch (e) {
183+
return 'Can\'t log commerce event on forwarder: ' + name + ': ' + e;
184+
}
185+
}
186+
187+
this.init = initForwarder;
188+
this.process = processEvent;
189+
this.setUserAttribute = setUserAttribute;
190+
this.setUserIdentity = setUserIdentity;
191+
this.removeUserAttribute = removeUserAttribute;
192+
};
193+
194+
function getId() {
195+
return moduleId;
196+
}
197+
198+
function register(config) {
199+
if (config.kits) {
200+
config.kits[name] = {
201+
constructor: constructor
202+
};
203+
}
204+
}
205+
206+
if (!window ||
207+
!window.mParticle ||
208+
!window.mParticle.addForwarder) {
209+
210+
return;
211+
}
212+
213+
window.mParticle.addForwarder({
214+
name : name,
215+
constructor: constructor,
216+
getId: getId
217+
});
218+
219+
module.exports = {
220+
register: register
221+
};
222+
})(window);
223+
});
224+
var MixpanelEventForwarder_1 = MixpanelEventForwarder.register;
225+
226+
exports.default = MixpanelEventForwarder;
227+
exports.register = MixpanelEventForwarder_1;
228+
229+
Object.defineProperty(exports, '__esModule', { value: true });
230+
231+
}));

0 commit comments

Comments
 (0)