test_track_rails_client 0.9.2 → 0.9.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Rakefile CHANGED
@@ -30,7 +30,7 @@ desc "Pull the latest versions of all dependencies into the gem for distribution
30
30
  task :vendor_deps do
31
31
  # Bundle minified JS client
32
32
  sh 'bower install'
33
- sh 'mv', 'bower_components/test_track_js_client/dist/testTrack.bundle.min.js', 'vendor/assets/javascripts'
33
+ sh 'cp', 'bower_components/test_track_js_client/dist/testTrack.bundle.min.js', 'app/assets/javascripts'
34
34
 
35
35
  # Gems
36
36
  FileUtils.module_eval do
@@ -0,0 +1 @@
1
+ !function(a){var b="object"==typeof exports&&exports,c="object"==typeof module&&module&&module.exports==b&&module,d="object"==typeof global&&global;d.global!==d&&d.window!==d||(a=d);var e=function(a){this.message=a};e.prototype=new Error,e.prototype.name="InvalidCharacterError";var f=function(a){throw new e(a)},g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=/[\t\n\f\r ]/g,i=function(a){a=String(a).replace(h,"");var b=a.length;b%4==0&&(a=a.replace(/==?$/,""),b=a.length),(b%4==1||/[^+a-zA-Z0-9/]/.test(a))&&f("Invalid character: the string to be decoded is not correctly encoded.");for(var c,d,e=0,i="",j=-1;++j<b;)d=g.indexOf(a.charAt(j)),c=e%4?64*c+d:d,e++%4&&(i+=String.fromCharCode(255&c>>(-2*e&6)));return i},j=function(a){a=String(a),/[^\0-\xFF]/.test(a)&&f("The string to be encoded contains characters outside of the Latin1 range.");for(var b,c,d,e,h=a.length%3,i="",j=-1,k=a.length-h;++j<k;)b=a.charCodeAt(j)<<16,c=a.charCodeAt(++j)<<8,d=a.charCodeAt(++j),e=b+c+d,i+=g.charAt(e>>18&63)+g.charAt(e>>12&63)+g.charAt(e>>6&63)+g.charAt(63&e);return 2==h?(b=a.charCodeAt(j)<<8,c=a.charCodeAt(++j),e=b+c,i+=g.charAt(e>>10)+g.charAt(e>>4&63)+g.charAt(e<<2&63)+"="):1==h&&(e=a.charCodeAt(j),i+=g.charAt(e>>2)+g.charAt(e<<4&63)+"=="),i},k={encode:j,decode:i,version:"0.1.0"};if("function"==typeof define&&"object"==typeof define.amd&&define.amd)define(function(){return k});else if(b&&!b.nodeType)if(c)c.exports=k;else for(var l in k)k.hasOwnProperty(l)&&(b[l]=k[l]);else a.base64=k}(this),function(a){"use strict";function b(a,b){var c=(65535&a)+(65535&b),d=(a>>16)+(b>>16)+(c>>16);return d<<16|65535&c}function c(a,b){return a<<b|a>>>32-b}function d(a,d,e,f,g,h){return b(c(b(b(d,a),b(f,h)),g),e)}function e(a,b,c,e,f,g,h){return d(b&c|~b&e,a,b,f,g,h)}function f(a,b,c,e,f,g,h){return d(b&e|c&~e,a,b,f,g,h)}function g(a,b,c,e,f,g,h){return d(b^c^e,a,b,f,g,h)}function h(a,b,c,e,f,g,h){return d(c^(b|~e),a,b,f,g,h)}function i(a,c){a[c>>5]|=128<<c%32,a[(c+64>>>9<<4)+14]=c;var d,i,j,k,l,m=1732584193,n=-271733879,o=-1732584194,p=271733878;for(d=0;d<a.length;d+=16)i=m,j=n,k=o,l=p,m=e(m,n,o,p,a[d],7,-680876936),p=e(p,m,n,o,a[d+1],12,-389564586),o=e(o,p,m,n,a[d+2],17,606105819),n=e(n,o,p,m,a[d+3],22,-1044525330),m=e(m,n,o,p,a[d+4],7,-176418897),p=e(p,m,n,o,a[d+5],12,1200080426),o=e(o,p,m,n,a[d+6],17,-1473231341),n=e(n,o,p,m,a[d+7],22,-45705983),m=e(m,n,o,p,a[d+8],7,1770035416),p=e(p,m,n,o,a[d+9],12,-1958414417),o=e(o,p,m,n,a[d+10],17,-42063),n=e(n,o,p,m,a[d+11],22,-1990404162),m=e(m,n,o,p,a[d+12],7,1804603682),p=e(p,m,n,o,a[d+13],12,-40341101),o=e(o,p,m,n,a[d+14],17,-1502002290),n=e(n,o,p,m,a[d+15],22,1236535329),m=f(m,n,o,p,a[d+1],5,-165796510),p=f(p,m,n,o,a[d+6],9,-1069501632),o=f(o,p,m,n,a[d+11],14,643717713),n=f(n,o,p,m,a[d],20,-373897302),m=f(m,n,o,p,a[d+5],5,-701558691),p=f(p,m,n,o,a[d+10],9,38016083),o=f(o,p,m,n,a[d+15],14,-660478335),n=f(n,o,p,m,a[d+4],20,-405537848),m=f(m,n,o,p,a[d+9],5,568446438),p=f(p,m,n,o,a[d+14],9,-1019803690),o=f(o,p,m,n,a[d+3],14,-187363961),n=f(n,o,p,m,a[d+8],20,1163531501),m=f(m,n,o,p,a[d+13],5,-1444681467),p=f(p,m,n,o,a[d+2],9,-51403784),o=f(o,p,m,n,a[d+7],14,1735328473),n=f(n,o,p,m,a[d+12],20,-1926607734),m=g(m,n,o,p,a[d+5],4,-378558),p=g(p,m,n,o,a[d+8],11,-2022574463),o=g(o,p,m,n,a[d+11],16,1839030562),n=g(n,o,p,m,a[d+14],23,-35309556),m=g(m,n,o,p,a[d+1],4,-1530992060),p=g(p,m,n,o,a[d+4],11,1272893353),o=g(o,p,m,n,a[d+7],16,-155497632),n=g(n,o,p,m,a[d+10],23,-1094730640),m=g(m,n,o,p,a[d+13],4,681279174),p=g(p,m,n,o,a[d],11,-358537222),o=g(o,p,m,n,a[d+3],16,-722521979),n=g(n,o,p,m,a[d+6],23,76029189),m=g(m,n,o,p,a[d+9],4,-640364487),p=g(p,m,n,o,a[d+12],11,-421815835),o=g(o,p,m,n,a[d+15],16,530742520),n=g(n,o,p,m,a[d+2],23,-995338651),m=h(m,n,o,p,a[d],6,-198630844),p=h(p,m,n,o,a[d+7],10,1126891415),o=h(o,p,m,n,a[d+14],15,-1416354905),n=h(n,o,p,m,a[d+5],21,-57434055),m=h(m,n,o,p,a[d+12],6,1700485571),p=h(p,m,n,o,a[d+3],10,-1894986606),o=h(o,p,m,n,a[d+10],15,-1051523),n=h(n,o,p,m,a[d+1],21,-2054922799),m=h(m,n,o,p,a[d+8],6,1873313359),p=h(p,m,n,o,a[d+15],10,-30611744),o=h(o,p,m,n,a[d+6],15,-1560198380),n=h(n,o,p,m,a[d+13],21,1309151649),m=h(m,n,o,p,a[d+4],6,-145523070),p=h(p,m,n,o,a[d+11],10,-1120210379),o=h(o,p,m,n,a[d+2],15,718787259),n=h(n,o,p,m,a[d+9],21,-343485551),m=b(m,i),n=b(n,j),o=b(o,k),p=b(p,l);return[m,n,o,p]}function j(a){var b,c="";for(b=0;b<32*a.length;b+=8)c+=String.fromCharCode(a[b>>5]>>>b%32&255);return c}function k(a){var b,c=[];for(c[(a.length>>2)-1]=void 0,b=0;b<c.length;b+=1)c[b]=0;for(b=0;b<8*a.length;b+=8)c[b>>5]|=(255&a.charCodeAt(b/8))<<b%32;return c}function l(a){return j(i(k(a),8*a.length))}function m(a,b){var c,d,e=k(a),f=[],g=[];for(f[15]=g[15]=void 0,e.length>16&&(e=i(e,8*a.length)),c=0;c<16;c+=1)f[c]=909522486^e[c],g[c]=1549556828^e[c];return d=i(f.concat(k(b)),512+8*b.length),j(i(g.concat(d),640))}function n(a){var b,c,d="0123456789abcdef",e="";for(c=0;c<a.length;c+=1)b=a.charCodeAt(c),e+=d.charAt(b>>>4&15)+d.charAt(15&b);return e}function o(a){return unescape(encodeURIComponent(a))}function p(a){return l(o(a))}function q(a){return n(p(a))}function r(a,b){return m(o(a),o(b))}function s(a,b){return n(r(a,b))}function t(a,b,c){return b?c?r(b,a):s(b,a):c?p(a):q(a)}"function"==typeof define&&define.amd?define(function(){return t}):a.md5=t}(this),function(){function a(a,b,c){var d=b&&c||0,e=0;for(b=b||[],a.toLowerCase().replace(/[0-9a-f]{2}/g,function(a){e<16&&(b[d+e++]=m[a])});e<16;)b[d+e++]=0;return b}function b(a,b){var c=b||0,d=l;return d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+"-"+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]+d[a[c++]]}function c(a,c,d){var e=c&&d||0,f=c||[];a=a||{};var g=null!=a.clockseq?a.clockseq:q,h=null!=a.msecs?a.msecs:(new Date).getTime(),i=null!=a.nsecs?a.nsecs:s+1,j=h-r+(i-s)/1e4;if(j<0&&null==a.clockseq&&(g=g+1&16383),(j<0||h>r)&&null==a.nsecs&&(i=0),i>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");r=h,s=i,q=g,h+=122192928e5;var k=(1e4*(268435455&h)+i)%4294967296;f[e++]=k>>>24&255,f[e++]=k>>>16&255,f[e++]=k>>>8&255,f[e++]=255&k;var l=h/4294967296*1e4&268435455;f[e++]=l>>>8&255,f[e++]=255&l,f[e++]=l>>>24&15|16,f[e++]=l>>>16&255,f[e++]=g>>>8|128,f[e++]=255&g;for(var m=a.node||p,n=0;n<6;n++)f[e+n]=m[n];return c?c:b(f)}function d(a,c,d){var f=c&&d||0;"string"==typeof a&&(c="binary"==a?new k(16):null,a=null),a=a||{};var g=a.random||(a.rng||e)();if(g[6]=15&g[6]|64,g[8]=63&g[8]|128,c)for(var h=0;h<16;h++)c[f+h]=g[h];return c||b(g)}var e,f=this;if("function"==typeof f.require)try{var g=f.require("crypto").randomBytes;e=g&&function(){return g(16)}}catch(h){}if(!e&&f.crypto&&crypto.getRandomValues){var i=new Uint8Array(16);e=function(){return crypto.getRandomValues(i),i}}if(!e){var j=new Array(16);e=function(){for(var a,b=0;b<16;b++)0===(3&b)&&(a=4294967296*Math.random()),j[b]=a>>>((3&b)<<3)&255;return j}}for(var k="function"==typeof f.Buffer?f.Buffer:Array,l=[],m={},n=0;n<256;n++)l[n]=(n+256).toString(16).substr(1),m[l[n]]=n;var o=e(),p=[1|o[0],o[1],o[2],o[3],o[4],o[5]],q=16383&(o[6]<<8|o[7]),r=0,s=0,t=d;if(t.v1=c,t.v4=d,t.parse=a,t.unparse=b,t.BufferClass=k,"function"==typeof define&&define.amd)define(function(){return t});else if("undefined"!=typeof module&&module.exports)module.exports=t;else{var u=f.uuid;t.noConflict=function(){return f.uuid=u,t},f.uuid=t}}.call(this),function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports?require("jquery"):jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;n<o;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)&&(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}}),function(a,b){"function"==typeof define&&define.amd?define(["node-uuid","blueimp-md5","jquery","base-64","jquery.cookie"],b):a.TestTrack=b(a.uuid,a.md5,a.jQuery,a.base64)}(this,function(a,b,c,d){"use strict";if("undefined"==typeof a)throw new Error('TestTrack depends on node-uuid. Make sure you are including "bower_components/node-uuid/uuid.js"');if("undefined"==typeof b)throw new Error('TestTrack depends on blueimp-md5. Make sure you are including "bower_components/blueimp-md5/js/md5.js"');if("undefined"==typeof c)throw new Error('TestTrack depends on jquery. You can use your own copy of jquery or the one in "bower_components/jquery/dist/jquery.js"');if("function"!=typeof c.cookie)throw new Error("TestTrack depends on jquery.cookie. You can user your own copy of jquery.cooke or the one in bower_components/jquery.cookie/jquery.cookie.js");if("undefined"==typeof d)throw new Error('TestTrack depends on base-64. Make sure you are including "bower_components/base-64/base64.js"');!function(){Function.prototype.bind||(Function.prototype.bind=function(a){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");var b=Array.prototype.slice.call(arguments,1),c=this,d=function(){},e=function(){return c.apply(this instanceof d?this:a,b.concat(Array.prototype.slice.call(arguments)))};return this.prototype&&(d.prototype=this.prototype),e.prototype=new d,e})}();var e=function(){var a=function(){};return a.prototype.track_assignment=function(a,b,c){var d={TTVisitorID:a,SplitName:b.getSplitName(),SplitVariant:b.getVariant(),SplitContext:b.getContext()};window.mixpanel&&window.mixpanel.track("SplitAssigned",d,c)},a.prototype.identify=function(a){window.mixpanel&&window.mixpanel.identify(a)},a.prototype.alias=function(a){window.mixpanel&&window.mixpanel.alias(a)},a}(),f=function(){var a=function(a){if(!a.splitName)throw new Error("must provide splitName");if(!a.hasOwnProperty("variant"))throw new Error("must provide variant");if(!a.hasOwnProperty("isUnsynced"))throw new Error("must provide isUnsynced");this._splitName=a.splitName,this._variant=a.variant,this._context=a.context,this._isUnsynced=a.isUnsynced};return a.fromJsonArray=function(a){for(var b=[],c=0;c<a.length;c++)b.push(new f({splitName:a[c].split_name,variant:a[c].variant,context:a[c].context,isUnsynced:a[c].unsynced}));return b},a.prototype.getSplitName=function(){return this._splitName},a.prototype.getVariant=function(){return this._variant},a.prototype.setVariant=function(a){this._variant=a},a.prototype.getContext=function(){return this._context},a.prototype.setContext=function(a){this._context=a},a.prototype.isUnsynced=function(){return this._isUnsynced},a.prototype.setUnsynced=function(a){this._isUnsynced=a},a}(),g=function(){var a=function(){};return a.prototype.getConfig=function(){return"function"==typeof window.atob?JSON.parse(window.atob(window.TT)):JSON.parse(d.decode(window.TT))},a}(),h=function(){var a,b,c=function(){if(!a){var b=new g;a=b.getConfig()}return a};return{getUrl:function(){return c().url},getCookieDomain:function(){return c().cookieDomain},getSplitRegistry:function(){return c().registry},getAssignments:function(){var a=c().assignments;if(!a)return null;if(!b){b=[];for(var d in a)b.push(new f({splitName:d,variant:a[d],isUnsynced:!1}))}return b}}}(),i=function(){var a=function(a){if(this.visitor=a.visitor,this.splitName=a.splitName,!this.visitor)throw new Error("must provide visitor");if(!this.splitName)throw new Error("must provide splitName")};return a.prototype.getVariant=function(){if(!h.getSplitRegistry())return null;for(var a=0,b=this.getAssignmentBucket(),c=this.getWeighting(),d=this.getSortedVariants(),e=0;e<d.length;e++){var f=d[e];if(a+=c[f],a>b)return f}throw new Error("Assignment bucket out of range. "+b+" unmatched in "+this.splitName+": "+JSON.stringify(c))},a.prototype.getSplitVisitorHash=function(){return b(this.splitName+this.visitor.getId())},a.prototype.getHashFixnum=function(){return parseInt(this.getSplitVisitorHash().substr(0,8),16)},a.prototype.getAssignmentBucket=function(){return this.getHashFixnum()%100},a.prototype.getSortedVariants=function(){return this.getVariants().sort()},a.prototype.getVariants=function(){return Object.getOwnPropertyNames(this.getWeighting())},a.prototype.getWeighting=function(){var a=h.getSplitRegistry()[this.splitName];if(!a){var b='Unknown split: "'+this.splitName+'"';throw this.visitor.logError(b),new Error(b)}return a},a}(),j=function(){var a=function(a){if(a=a||{},this._visitor=a.visitor,this._assignment=a.assignment,!this._visitor)throw new Error("must provide visitor");if(!this._assignment)throw new Error("must provide assignment")};return a.prototype.send=function(){this.persistAssignment(),this._visitor.analytics.track_assignment(this._visitor.getId(),this._assignment,function(a){this.persistAssignment(a?"success":"failure")}.bind(this))},a.prototype.persistAssignment=function(a){return c.ajax(h.getUrl()+"/api/v1/assignment",{method:"POST",dataType:"json",crossDomain:!0,data:{visitor_id:this._visitor.getId(),split_name:this._assignment.getSplitName(),variant:this._assignment.getVariant(),context:this._assignment.getContext(),mixpanel_result:a}}).fail(function(a,b,c){var d=a&&a.status,e=a&&a.responseText;this._visitor.logError("test_track persistAssignment error: "+[a,d,e,b,c].join(", "))}.bind(this))},a}(),k=function(){var b=function(a){if(a=a||{},this._id=a.id,this._assignments=a.assignments,this._ttOffline=a.ttOffline,!this._id)throw new Error("must provide id");if(!this._assignments)throw new Error("must provide assignments");this._errorLogger=function(a){window.console.error(a)},this.analytics=new e};return b.loadVisitor=function(b){var d=c.Deferred(),e=function(a){d.resolve(new k(a))};return b?h.getAssignments()?e({id:b,assignments:h.getAssignments(),ttOffline:!1}):c.ajax(h.getUrl()+"/api/v1/visitors/"+b,{method:"GET",timeout:5e3}).done(function(a){e({id:a.id,assignments:f.fromJsonArray(a.assignments),ttOffline:!1})}).fail(function(){e({id:b,assignments:[],ttOffline:!0})}):e({id:a.v4(),assignments:[],ttOffline:!1}),d.promise()},b.prototype.getId=function(){return this._id},b.prototype.getAssignmentRegistry=function(){if(!this._assignmentRegistry){for(var a={},b=0;b<this._assignments.length;b++){var c=this._assignments[b];a[c.getSplitName()]=c}this._assignmentRegistry=a}return this._assignmentRegistry},b.prototype.vary=function(a,b){if("object"!=typeof b.variants)throw new Error("must provide variants object to `vary` for "+a);if(!b.context)throw new Error("must provide context to `vary` for "+a);if(!b.defaultVariant&&b.defaultVariant!==!1)throw new Error("must provide defaultVariant to `vary` for "+a);var c=b.defaultVariant.toString(),d=b.variants,e=b.context;if(!d.hasOwnProperty(c))throw new Error("defaultVariant: "+c+" must be represented in variants object");var f=this._getAssignmentFor(a,e),g=new n({assignment:f,visitor:this});for(var h in d)d.hasOwnProperty(h)&&(h===c?g.default(h,d[h]):g.when(h,d[h]));g.run(),g.isDefaulted()&&(f.setVariant(g.getDefaultVariant()),f.setUnsynced(!0),f.setContext(e)),this.notifyUnsyncedAssignments()},b.prototype.ab=function(a,b){var c=new o({splitName:a,trueVariant:b.trueVariant,visitor:this}),d=c.getVariants(),e={};e[d.true]=function(){b.callback(!0)},e[d.false]=function(){b.callback(!1)},this.vary(a,{context:b.context,variants:e,defaultVariant:d.false})},b.prototype.setErrorLogger=function(a){if("function"!=typeof a)throw new Error("must provide function for errorLogger");this._errorLogger=a},b.prototype.logError=function(a){this._errorLogger.call(null,a)},b.prototype.linkIdentifier=function(a,b){var d=c.Deferred(),e=new m({visitorId:this.getId(),identifierType:a,value:b});return e.save().then(function(a){this._merge(a),this.notifyUnsyncedAssignments(),d.resolve()}.bind(this)),d.promise()},b.prototype.setAnalytics=function(a){if("object"!=typeof a)throw new Error("must provide object for setAnalytics");this.analytics=a},b.prototype.notifyUnsyncedAssignments=function(){for(var a=this._getUnsyncedAssignments(),b=0;b<a.length;b++)this._notify(a[b])},b.prototype._getUnsyncedAssignments=function(){var a=[],b=this.getAssignmentRegistry();return Object.keys(b).forEach(function(c){var d=b[c];d.isUnsynced()&&a.push(d)}),a},b.prototype._merge=function(a){var b=this.getAssignmentRegistry(),c=a.getAssignmentRegistry();this._id=a.getId();for(var d in c)c.hasOwnProperty(d)&&(b[d]=c[d])},b.prototype._getAssignmentFor=function(a,b){return this.getAssignmentRegistry()[a]||this._generateAssignmentFor(a,b)},b.prototype._generateAssignmentFor=function(a,b){var c=new i({visitor:this,splitName:a}).getVariant();c||(this._ttOffline=!0);var d=new f({splitName:a,variant:c,context:b,isUnsynced:!0});return this._assignments.push(d),this._assignmentRegistry=null,d},b.prototype._notify=function(a){try{if(this._ttOffline)return;var b=new j({visitor:this,assignment:a});b.send(),a.setUnsynced(!1)}catch(c){this.logError("test_track notify error: "+c)}},b}(),l=function(){var a="tt_visitor_id",b=function(){this._visitorDeferred=c.Deferred()};return b.prototype.initialize=function(b){var d=c.cookie(a);this._visitorDeferred.then(function(a){a.notifyUnsyncedAssignments()}),k.loadVisitor(d).then(function(a){b&&b.analytics&&a.setAnalytics(b.analytics),b&&b.errorLogger&&a.setErrorLogger(b.errorLogger),b&&"function"==typeof b.onVisitorLoaded&&b.onVisitorLoaded.call(null,a),this._visitorDeferred.resolve(a)}.bind(this)),this._setCookie()},b.prototype.vary=function(a,b){this._visitorDeferred.then(function(c){c.vary(a,b)})},b.prototype.ab=function(a,b){this._visitorDeferred.then(function(c){c.ab(a,b)})},b.prototype.logIn=function(a,b){var d=c.Deferred();return this._visitorDeferred.then(function(c){c.linkIdentifier(a,b).then(function(){this._setCookie(),c.analytics.identify(c.getId()),d.resolve()}.bind(this))}.bind(this)),d.promise()},b.prototype.signUp=function(a,b){var d=c.Deferred();return this._visitorDeferred.then(function(c){c.linkIdentifier(a,b).then(function(){this._setCookie(),c.analytics.alias(c.getId()),d.resolve()}.bind(this))}.bind(this)),d.promise()},b.prototype._setCookie=function(){this._visitorDeferred.then(function(b){c.cookie(a,b.getId(),{expires:365,path:"/",domain:h.getCookieDomain()})})},b.prototype.getPublicAPI=function(){return{vary:this.vary.bind(this),ab:this.ab.bind(this),logIn:this.logIn.bind(this),signUp:this.signUp.bind(this),initialize:this.initialize.bind(this),_crx:{loadInfo:function(){var a=c.Deferred();return this._visitorDeferred.then(function(b){var c={};for(var d in b.getAssignmentRegistry())c[d]=b.getAssignmentRegistry()[d].getVariant();a.resolve({visitorId:b.getId(),splitRegistry:h.getSplitRegistry(),assignmentRegistry:c})}),a.promise()}.bind(this),persistAssignment:function(a,b){var d=c.Deferred();return this._visitorDeferred.then(function(c){var e=new j({visitor:c,assignment:new f({splitName:a,variant:b,context:"chrome_extension",isUnsynced:!0})});e.persistAssignment().then(function(){d.resolve()})}),d.promise()}.bind(this)}}},b}(),m=function(){var a=function(a){if(this.visitorId=a.visitorId,this.identifierType=a.identifierType,this.value=a.value,!this.visitorId)throw new Error("must provide visitorId");if(!this.identifierType)throw new Error("must provide identifierType");if(!this.value)throw new Error("must provide value")};return a.prototype.save=function(a,b){var d=c.Deferred();return c.ajax(h.getUrl()+"/api/v1/identifier",{method:"POST",dataType:"json",crossDomain:!0,data:{identifier_type:this.identifierType,value:this.value,visitor_id:this.visitorId}}).then(function(a){var b=new k({id:a.visitor.id,assignments:f.fromJsonArray(a.visitor.assignments)});d.resolve(b)}),d.promise()},a}(),n=function(){var a=function(a){if(!a.assignment)throw new Error("must provide assignment");if(!a.visitor)throw new Error("must provide visitor");this._assignment=a.assignment,this._visitor=a.visitor,this._splitRegistry=h.getSplitRegistry(),this._variantHandlers={}};return a.prototype.when=function(){var a=Array.prototype.slice.call(arguments,0),b=a.length-1,c="function"!=typeof a[0]&&a.length>0,d=c?a.slice(0,Math.max(1,b)):[],e=a[b];if(0===d.length)throw new Error("must provide at least one variant");for(var f=0;f<d.length;f++)this._assignHandlerToVariant(d[f],e)},a.prototype.default=function(a,b){if(this._defaultVariant)throw new Error("must provide exactly one `default`");this._defaultVariant=this._assignHandlerToVariant(a,b)},a.prototype.run=function(){this._validate();var a;this._variantHandlers[this._assignment.getVariant()]?a=this._variantHandlers[this._assignment.getVariant()]:(a=this._variantHandlers[this.getDefaultVariant()],this._defaulted=!0),a()},a.prototype.isDefaulted=function(){return this._defaulted||!1},a.prototype.getDefaultVariant=function(){return this._defaultVariant},a.prototype._assignHandlerToVariant=function(a,b){if("function"!=typeof b)throw new Error("must provide handler for "+a);return a=a.toString(),this._getSplit()&&!this._getSplit().hasOwnProperty(a)&&this._visitor.logError("configures unknown variant "+a),this._variantHandlers[a]=b,a},a.prototype._validate=function(){if(!this.getDefaultVariant())throw new Error("must provide exactly one `default`");if(this._getVariants().length<2)throw new Error("must provide at least one `when`");if(this._getSplit()){var a=this._getMissingVariants();if(a.length>0){var b=a.join(", ").replace(/, (.+)$/," and $1");this._visitor.logError("does not configure variants "+b)}}},a.prototype._getSplit=function(){return this._splitRegistry?this._splitRegistry[this._assignment.getSplitName()]:null},a.prototype._getVariants=function(){return Object.getOwnPropertyNames(this._variantHandlers)},a.prototype._getMissingVariants=function(){for(var a=this._getVariants(),b=this._getSplit(),c=Object.getOwnPropertyNames(b),d=[],e=0;e<c.length;e++){var f=c[e];a.indexOf(f)===-1&&d.push(f)}return d},a}(),o=function(){var a=function(a){if(!a.splitName)throw new Error("must provide splitName");if(!a.hasOwnProperty("trueVariant"))throw new Error("must provide trueVariant");if(!a.visitor)throw new Error("must provide visitor");this._splitName=a.splitName,this._trueVariant=a.trueVariant,this._visitor=a.visitor,this._splitRegistry=h.getSplitRegistry()};return a.prototype.getVariants=function(){var a=this._getSplitVariants();return a&&a.length>2&&this._visitor.logError("A/B for "+this._splitName+" configures split with more than 2 variants"),{true:this._getTrueVariant(),false:this._getFalseVariant()}},a.prototype._getTrueVariant=function(){return this._trueVariant||!0},a.prototype._getFalseVariant=function(){var a=this._getNonTrueVariants();return!!a&&a.sort()[0]},a.prototype._getNonTrueVariants=function(){var a=this._getSplitVariants();if(a){var b=this._getTrueVariant(),c=a.indexOf(b);return c!==-1&&a.splice(c,1),a}return null},a.prototype._getSplit=function(){return this._splitRegistry?this._splitRegistry[this._splitName]:null},a.prototype._getSplitVariants=function(){return this._getSplit()&&Object.getOwnPropertyNames(this._getSplit())},a}(),p=(new l).getPublicAPI(),q=function(){window.dispatchEvent(new CustomEvent("tt:lib:loaded",{detail:{TestTrack:p}}))};try{c(document).ready(function(){c(document.body).addClass("_tt");try{window.dispatchEvent(new CustomEvent("tt:class:added"))}catch(a){}}),q(),window.addEventListener("tt:listener:ready",q)}catch(r){}return p});
@@ -1,3 +1,3 @@
1
1
  module TestTrackRailsClient
2
- VERSION = "0.9.2" # rubocop:disable Style/MutableConstant
2
+ VERSION = "0.9.3" # rubocop:disable Style/MutableConstant
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_track_rails_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.2
4
+ version: 0.9.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -253,6 +253,7 @@ executables: []
253
253
  extensions: []
254
254
  extra_rdoc_files: []
255
255
  files:
256
+ - app/assets/javascripts/testTrack.bundle.min.js
256
257
  - app/controllers/concerns/test_track/controller.rb
257
258
  - app/controllers/tt/api/v1/application_controller.rb
258
259
  - app/controllers/tt/api/v1/assignments_controller.rb
@@ -332,7 +333,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
332
333
  version: '0'
333
334
  segments:
334
335
  - 0
335
- hash: -4127130256096655812
336
+ hash: 3598242966094755833
336
337
  requirements: []
337
338
  rubyforge_project:
338
339
  rubygems_version: 1.8.23.2