|
| 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