launchdarkly-js-sdk-common 3.6.0 → 3.8.0

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.
@@ -1,2 +1,2 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self)["LDClient-Common"]={})}(this,function(e){"use strict";function b(n,e){var t,r=Object.keys(n);return Object.getOwnPropertySymbols&&(t=Object.getOwnPropertySymbols(n),e&&(t=t.filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),r.push.apply(r,t)),r}function ne(r){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?b(Object(i),!0).forEach(function(e){var n,t;n=r,t=i[e=e],e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):b(Object(i)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))})}return r}function te(e){return(te="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function k(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,n){if(e){if("string"==typeof e)return r(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(t="Object"===t&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?r(e,n):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function r(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function n(e){function n(e,n){Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.message=e,this.code=n}return(n.prototype=new Error).name=e,n.prototype.constructor=n}var T=n("LaunchDarklyUnexpectedResponseError"),re=n("LaunchDarklyInvalidEnvironmentIdError"),i=n("LaunchDarklyInvalidUserError"),pe=n("LaunchDarklyInvalidEventKeyError"),E=n("LaunchDarklyInvalidArgumentError"),ie=n("LaunchDarklyFlagFetchError"),me=n("LaunchDarklyInvalidDataError");function I(e){return!(400<=e&&e<500)||(400===e||408===e||429===e)}for(var w=Object.freeze({__proto__:null,LDUnexpectedResponseError:T,LDInvalidEnvironmentIdError:re,LDInvalidUserError:i,LDInvalidEventKeyError:pe,LDInvalidArgumentError:E,LDFlagFetchError:ie,LDInvalidDataError:me,isHttpErrorRecoverable:I}),D=function(e){for(var n,t=e.length,r=t%3,i=[],o=0,a=t-r;o<a;o+=16383)i.push(function(e,n,t){for(var r,i=[],o=n;o<t;o+=3)r=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(255&e[o+2]),i.push(function(e){return u[e>>18&63]+u[e>>12&63]+u[e>>6&63]+u[63&e]}(r));return i.join("")}(e,o,a<o+16383?a:o+16383));1==r?(n=e[t-1],i.push(u[n>>2]+u[n<<4&63]+"==")):2==r&&(n=(e[t-2]<<8)+e[t-1],i.push(u[n>>10]+u[n>>4&63]+u[n<<2&63]+"="));return i.join("")},u=[],t=[],o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,P=o.length;a<P;++a)u[a]=o[a],t[o.charCodeAt(a)]=a;t["-".charCodeAt(0)]=62,t["_".charCodeAt(0)]=63;function s(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){var t,r,i=S(e),o=S(n);if(i&&o){if((a=e.length)!=n.length)return!1;for(t=a;0!=t--;)if(!s(e[t],n[t]))return!1;return!0}if(i!=o)return!1;i=e instanceof Date,o=n instanceof Date;if(i!=o)return!1;if(i&&o)return e.getTime()==n.getTime();i=e instanceof RegExp,o=n instanceof RegExp;if(i!=o)return!1;if(i&&o)return e.toString()==n.toString();var a,u=U(e);if((a=u.length)!==U(n).length)return!1;for(t=a;0!=t--;)if(!R.call(n,u[t]))return!1;for(t=a;0!=t--;)if(!s(e[r=u[t]],n[r]))return!1;return!0}return e!=e&&n!=n}var S=Array.isArray,U=Object.keys,R=Object.prototype.hasOwnProperty,A=["key","secondary","ip","country","email","firstName","lastName","avatar","name"];function j(e,n){return(e.endsWith("/")?e.substring(0,e.length-1):e)+(n.startsWith("/")?"":"/")+n}function c(e){e=unescape(encodeURIComponent(e));return D(function(e){for(var n=[],t=0;t<e.length;t++)n.push(e.charCodeAt(t));return n}(e))}function O(e){return c(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function oe(e){return JSON.parse(JSON.stringify(e))}function ae(e,n){return s(e,n)}function ue(e){setTimeout(e,0)}function se(e,n){e=e.then(function(e){return n&&setTimeout(function(){n(null,e)},0),e},function(e){if(!n)return Promise.reject(e);setTimeout(function(){n(e,null)},0)});return n?void 0:e}function C(e){var n,t={};for(n in e)fe(e,n)&&(t[n]={value:e[n],version:0});return t}function ce(e){var n,t={};for(n in e)fe(e,n)&&(t[n]=e[n].value);return t}function F(e,n){for(var t,r=n.slice(0),i=[],o=e;0<r.length;){for(t=[];0<o;){var a=r.shift();if(!a)break;(o-=O(JSON.stringify(a)).length)<0&&0<t.length?r.unshift(a):t.push(a)}o=e,i.push(t)}return i}function L(e){var n=e.version||"3.6.0";return e.userAgent+"/"+n}function le(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return n.reduce(function(e,n){return ne(ne({},e),n)},{})}function fe(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function ye(e){if(!e)return e;var n,t;for(t in A){var r=A[t],i=e[r];void 0!==i&&"string"!=typeof i&&((n=n||ne({},e))[r]=String(i))}return n||e}var N=Object.freeze({__proto__:null,appendUrlPath:j,btoa:c,base64URLEncode:O,clone:oe,deepEquals:ae,onNextTick:ue,wrapPromiseCallback:se,transformValuesToVersionedValues:C,transformVersionedValuesToValues:ce,chunkUserEventsForUrl:F,getLDUserAgentString:L,extend:le,objectHasOwnProperty:fe,sanitizeUser:ye});(function(e){var n,t,r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);r?(n=new Uint8Array(16),e.exports=function(){return r(n),n}):(t=new Array(16),e.exports=function(){for(var e,n=0;n<16;n++)0==(3&n)&&(e=4294967296*Math.random()),t[n]=e>>>((3&n)<<3)&255;return t})})(x={exports:{}});for(var x,_=x.exports,q=[],l=0;l<256;++l)q[l]=(l+256).toString(16).substr(1);var V,f,J=function(e,n){var n=n||0,t=q;return[t[e[n++]],t[e[n++]],t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],t[e[n++]],t[e[n++]],t[e[n++]],t[e[+n]]].join("")},d=0,v=0;var g=function(e,n,t){var r=n&&t||0,i=n||[],o=(e=e||{}).node||V,t=void 0!==e.clockseq?e.clockseq:f,a=(null!=o&&null!=t||(a=_(),null==o&&(o=V=[1|a[0],a[1],a[2],a[3],a[4],a[5]]),null==t&&(t=f=16383&(a[6]<<8|a[7]))),void 0!==e.msecs?e.msecs:(new Date).getTime()),u=void 0!==e.nsecs?e.nsecs:v+1,s=a-d+(u-v)/1e4;if(s<0&&void 0===e.clockseq&&(t=t+1&16383),1e4<=(u=(s<0||d<a)&&void 0===e.nsecs?0:u))throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=a,f=t,s=(1e4*(268435455&(a+=122192928e5))+(v=u))%4294967296,i[r++]=s>>>24&255,i[r++]=s>>>16&255,i[r++]=s>>>8&255,i[r++]=255&s,e=a/4294967296*1e4&268435455,i[r++]=e>>>8&255,i[r++]=255&e,i[r++]=e>>>24&15|16,i[r++]=e>>>16&255,i[r++]=t>>>8|128,i[r++]=255&t;for(var c=0;c<6;++c)i[r+c]=o[c];return n||J(i)},p=["debug","info","warn","error","none"];function M(e,u){if(e&&e.destination&&"function"!=typeof e.destination)throw new Error("destination for basicLogger was set to a non-function");function n(n){return function(e){console&&console[n]&&console[n].call(console,e)}}var s=e&&e.destination?[e.destination,e.destination,e.destination,e.destination]:[n("log"),n("info"),n("warn"),n("error")],c=!(!e||!e.destination),l=e&&void 0!==e.prefix&&null!==e.prefix?e.prefix:"[LaunchDarkly] ",t=1;if(e&&e.level)for(var r=0;r<p.length;r++)p[r]===e.level&&(t=r);for(var i={},o=function(e){var o,a=p[e];"none"!==a&&(e<t?i[a]=function(){}:(o=e,i[a]=function(){var e=o,n=a,t=arguments;if(!(t.length<1)){var r=c?n+": "+l:l,i=1!==t.length&&u?((i=k(t))[0]=r+i[0],u.apply(void 0,k(i))):r+t[0];try{s[e](i)}catch(e){console&&console.log&&console.log("[LaunchDarkly] Configured logger's "+n+" method threw an exception: "+e)}}}))},a=0;a<p.length;a++)o(a);return i}function he(e,n){return M({level:e,prefix:n})}function m(e){return e&&e.message?e.message:"string"==typeof e||e instanceof String?e:JSON.stringify(e)}function be(){return"LaunchDarkly client initialized"}function ke(){return"Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/sdk/features/identify#javascript"}function de(e){return'Custom event "'+e+'" does not exist'}function z(){return"Environment not found. Double check that you specified a valid environment/client-side ID."+y}function Ee(){return"No environment/client-side ID was specified."+y}function ve(e){return"Error fetching flag settings: "+m(e)}function we(){return"Invalid data received from LaunchDarkly; connection may have been interrupted"}function De(){return"LaunchDarkly client was initialized with bootstrap data that did not include flag metadata. Events may not be sent correctly."+y}function Oe(){return"LaunchDarkly bootstrap data is not available because the back end could not read the flags."}function K(e,n){return n?'"'+e+'" is deprecated, please use "'+n+'"':'"'+e+'" is deprecated'}function Pe(){return"identify() has no effect here; it must be called on the main client instance"}function B(e){return'Ignoring unknown config option "'+e+'"'}function $(e,n,t){return'Config option "'+e+'" should be of type '+n+", got "+t+", using default value"}function H(e,n){return'Config option "'+e+'" should be a boolean, got '+n+", converting to boolean"}function G(e,n,t){return'Config option "'+e+'" was set to '+n+", changing to minimum value of "+t}function Se(){return"received ping message from stream"}function Ue(){return"received streaming update for all flags"}function Ie(e){return'received streaming update for flag "'+e+'"'}function je(e){return'received streaming update for flag "'+e+'" but ignored due to version check'}function Te(e){return'received streaming deletion for flag "'+e+'"'}function Re(e){return'received streaming deletion for flag "'+e+'" but ignored due to version check'}function Ae(e){return'enqueueing "'+e+'" event'}var y=" Please see https://docs.launchdarkly.com/sdk/client-side/javascript#initializing-the-client for instructions on SDK initialization.",W=function(){return"Exceeded event queue capacity. Increase capacity to avoid dropping events."},X=function(e){return'Expected application/json content type but got "'+e+'"'},Ce=function(e){return"local storage is unavailable: "+m(e)},Q=function(e){return"network error"+(e?" ("+e+")":"")},Y=function(){return"No user specified."+y},Z=function(){return"Invalid user specified."+y},ee=function(e,n,t){return"Received error "+e+(401===e?" (invalid SDK key)":"")+" for "+n+" - "+(I(e)?t:"giving up permanently")},Fe=function(){return"Cannot make HTTP requests in this environment."+y},Le=function(){return"Closing stream connection"},Ne=function(e){return"Opening stream connection to "+e},xe=function(e,n){return"Error on stream connection: "+m(e)+", will continue retrying every "+n+" milliseconds."},_e=function(e){return"polling for feature flags at "+e},qe=function(e){return"sending "+e+" events"},Ve=function(e){return'Config option "'.concat(e,'" must only contain letters, numbers, ., _ or -.')},Je=Object.freeze({__proto__:null,clientInitialized:be,clientNotReady:function(){return"LaunchDarkly client is not ready"},eventCapacityExceeded:W,eventWithoutUser:ke,invalidContentType:X,invalidKey:function(){return"Event key must be a string"},localStorageUnavailable:Ce,networkError:Q,unknownCustomEventKey:de,environmentNotFound:z,environmentNotSpecified:Ee,errorFetchingFlags:ve,userNotSpecified:Y,invalidUser:Z,invalidData:we,bootstrapOldFormat:De,bootstrapInvalid:Oe,deprecated:K,httpErrorMessage:ee,httpUnavailable:Fe,identifyDisabled:Pe,streamClosing:Le,streamConnecting:Ne,streamError:xe,unknownOption:B,wrongOptionType:$,wrongOptionTypeBoolean:H,optionBelowMinimum:G,debugPolling:_e,debugStreamPing:Se,debugStreamPut:Ue,debugStreamPatch:Ie,debugStreamPatchIgnored:je,debugStreamDelete:Te,debugStreamDeleteIgnored:Re,debugEnqueueingEvent:Ae,debugPostingEvents:qe,debugPostingDiagnosticEvent:function(e){return"sending diagnostic event ("+e.kind+")"},invalidTagValue:Ve}),Me={baseUrl:{default:"https://app.launchdarkly.com"},streamUrl:{default:"https://clientstream.launchdarkly.com"},eventsUrl:{default:"https://events.launchdarkly.com"},sendEvents:{default:!0},streaming:{type:"boolean"},sendLDHeaders:{default:!0},requestHeaderTransform:{type:"function"},inlineUsersInEvents:{default:!1},allowFrequentDuplicateEvents:{default:!1},sendEventsOnlyForVariation:{default:!1},useReport:{default:!1},evaluationReasons:{default:!1},eventCapacity:{default:100,minimum:1},flushInterval:{default:2e3,minimum:2e3},samplingInterval:{default:0,minimum:0},streamReconnectDelay:{default:1e3,minimum:0},allAttributesPrivate:{default:!1},privateAttributeNames:{default:[]},bootstrap:{type:"string|object"},diagnosticRecordingInterval:{default:9e5,minimum:2e3},diagnosticOptOut:{default:!1},wrapperName:{type:"string"},wrapperVersion:{type:"string"},stateProvider:{type:"object"},autoAliasingOptOut:{default:!1},application:{validator:function(e,n,t,r){var i={};t.id&&(i.id=Ke("".concat(e,".id"),0,t.id,r));t.version&&(i.version=Ke("".concat(e,".version"),0,t.version,r));return i}}},ze=/^(\w|\.|-)+$/;function Ke(e,n,t,r){if("string"==typeof t&&t.match(ze))return t;r.warn(Ve(e))}function Be(e,n,t,a){var u=le({logger:{default:a}},Me,t),r={all_attributes_private:"allAttributesPrivate",private_attribute_names:"privateAttributeNames",samplingInterval:null};function s(e){ue(function(){n&&n.maybeReportError(new E(e))})}var i,o,c,l,f,t=le({},e||{});function d(e){if(null===e)return"any";if(void 0!==e){if(Array.isArray(e))return"array";e=te(e);return"boolean"===e||"string"===e||"number"===e||"function"===e?e:"object"}}return i=t,Object.keys(r).forEach(function(e){var n;void 0!==i[e]&&(n=r[e],a&&a.warn(K(e,n)),n&&(void 0===i[n]&&(i[n]=i[e]),delete i[e]))}),o=le({},t),Object.keys(u).forEach(function(e){void 0!==o[e]&&null!==o[e]||(o[e]=u[e]&&u[e].default)}),l=le({},c=t=o),Object.keys(c).forEach(function(e){var n,t,r,i,o=c[e];null!=o&&(void 0===(n=u[e])?s(B(e)):(t=n.type||d(n.default),(r=n.validator)?void 0!==(r=r(e,c,c[e],a))?l[e]=r:delete l[e]:"any"!==t&&(r=t.split("|"),i=d(o),r.indexOf(i)<0?"boolean"===t?(l[e]=!!o,s(H(e,i))):(s($(e,t,i)),l[e]=n.default):"number"===i&&void 0!==n.minimum&&o<n.minimum&&(s(G(e,o,n.minimum)),l[e]=n.minimum))))}),f=(t=l).logger,p.forEach(function(e){if("none"!==e&&(!f[e]||"function"!=typeof f[e]))throw new Error("Provided logger instance must support logger."+e+"(...) method")}),t}function $e(e){var n={};return e&&(e.application&&void 0!==e.application.id&&null!==e.application.id&&(n["application-id"]=[e.application.id]),e.application&&void 0!==e.application.version&&null!==e.application.id&&(n["application-version"]=[e.application.version])),n}function He(e,n){if(n&&!n.sendLDHeaders)return{};var e={"X-LaunchDarkly-User-Agent":L(e)},t=(n&&n.wrapperName&&(e["X-LaunchDarkly-Wrapper"]=n.wrapperVersion?n.wrapperName+"/"+n.wrapperVersion:n.wrapperName),$e(n)),n=Object.keys(t);return n.length&&(e["x-launchdarkly-tags"]=n.sort().flatMap(function(n){return Array.isArray(t[n])?t[n].sort().map(function(e){return"".concat(n,"/").concat(e)}):["".concat(n,"/").concat(t[n])]}).join(" ")),e}function Ge(e,n){return n&&n.requestHeaderTransform?n.requestHeaderTransform(ne({},e)):e}var We=2e3;function Xe(u,e,s){var c="/a/"+e+".gif",l=le({"Content-Type":"application/json"},He(u,s)),f=u.httpFallbackPing,d={};return d.sendChunk=function(e,n,r,t){var i=JSON.stringify(e),o=r?null:g();function a(t){var e=r?l:le({},l,{"X-LaunchDarkly-Event-Schema":"3","X-LaunchDarkly-Payload-ID":o});return u.httpRequest("POST",n,Ge(e,s),i).promise.then(function(e){var n;if(e)return 400<=e.status&&I(e.status)&&t?a(!1):(n={status:(e=e).status},(e=e.header("date"))&&(e=Date.parse(e))&&(n.serverTime=e),n)}).catch(function(){return t?a(!1):Promise.reject()})}return t?a(!0).catch(function(){}):(f&&f(n+c+"?d="+O(i)),Promise.resolve())},d.sendEvents=function(e,n,t){if(!u.httpRequest)return Promise.resolve();for(var r=u.httpAllowsPost(),i=r?[e]:F(We-n.length,e),o=[],a=0;a<i.length;a++)o.push(d.sendChunk(i[a],n,t,r));return Promise.all(o)},d}function Qe(e){var n={},a=e.allAttributesPrivate,u=e.privateAttributeNames||[],s={key:!0,custom:!0,anonymous:!0},c={key:!0,secondary:!0,ip:!0,country:!0,email:!0,firstName:!0,lastName:!0,avatar:!0,name:!0,anonymous:!0,custom:!0};return n.filterUser=function(e){if(!e)return null;function n(t,r){return Object.keys(t).reduce(function(e,n){return r(n)&&(i(n)?e[1][n]=!0:e[0][n]=t[n]),e},[{},{}])}var t=e.privateAttributeNames||[],i=function(e){return!s[e]&&(a||-1!==t.indexOf(e)||-1!==u.indexOf(e))},r=n(e,function(e){return c[e]}),o=r[0],r=r[1],e=(e.custom&&(e=n(e.custom,function(){return 1}),o.custom=e[0],r=le({},r,e[1])),Object.keys(r));return e.length&&(e.sort(),o.privateAttrs=e),o},n}function Ye(e,n,t,r,i,o){var a,u,s,c,l=3<arguments.length&&void 0!==r?r:null,f=4<arguments.length&&void 0!==i?i:null,d={},v=(5<arguments.length&&void 0!==o?o:null)||Xe(e,t,n),g=j(n.eventsUrl,"/events/bulk/"+t),p=(u=a=0,s={},(r={}).summarizeEvent=function(e){var n,t;"feature"===e.kind&&(n=e.key+":"+(null!==e.variation&&void 0!==e.variation?e.variation:"")+":"+(null!==e.version&&void 0!==e.version?e.version:""),(t=s[n])?t.count=t.count+1:s[n]={count:1,key:e.key,variation:e.variation,version:e.version,value:e.value,default:e.default},(0===a||e.creationDate<a)&&(a=e.creationDate),e.creationDate>u&&(u=e.creationDate))},r.getSummary=function(){var e,n={},t=!0;for(e in s){var r=s[e],i=n[r.key],o=(i||(i={default:r.default,counters:[]},n[r.key]=i),{value:r.value,count:r.count});void 0!==r.variation&&null!==r.variation&&(o.variation=r.variation),r.version?o.version=r.version:o.unknown=!0,i.counters.push(o),t=!1}return t?null:{startDate:a,endDate:u,features:n}},r.clearSummary=function(){u=a=0,s={}},r),m=Qe(n),y=n.inlineUsersInEvents,h=n.samplingInterval,b=n.eventCapacity,k=n.flushInterval,E=n.logger,w=[],D=0,O=!1,P=!1;function S(){return 0===h||0===Math.floor(Math.random()*h)}function U(e){w.length<b?(w.push(e),P=!1):(P||(P=!0,E.warn(W())),l&&l.incrementDroppedEvents())}return d.enqueue=function(e){var n,t,r;O||(n=r=!1,p.summarizeEvent(e),"feature"===e.kind?S()&&(r=!!e.trackEvents,n=!!(t=e).debugEventsUntilDate&&(t.debugEventsUntilDate>D&&t.debugEventsUntilDate>(new Date).getTime())):r=S(),r&&U((r=le({},t=e),"alias"!==t.kind&&(y||"identify"===t.kind?r.user=m.filterUser(t.user):(r.userKey=t.user.key,delete r.user),"feature"===t.kind&&(delete r.trackEvents,delete r.debugEventsUntilDate)),r)),n&&((r=le({},e,{kind:"debug"})).user=m.filterUser(r.user),delete r.trackEvents,delete r.debugEventsUntilDate,U(r)))},d.flush=function(){if(O)return Promise.resolve();var e=w,n=p.getSummary();return p.clearSummary(),n&&(n.kind="summary",e.push(n)),l&&l.setEventsInLastBatch(e.length),0===e.length?Promise.resolve():(w=[],E.debug(qe(e.length)),v.sendEvents(e,g).then(function(e){e&&(e.serverTime&&(D=e.serverTime),I(e.status)||(O=!0),400<=e.status&&ue(function(){f.maybeReportError(new T(ee(e.status,"event posting","some events were dropped")))}))}))},d.start=function(){c=setTimeout(function e(){d.flush(),c=setTimeout(e,k)},k)},d.stop=function(){clearTimeout(c)},d}function Ze(n){var e={},i={};return e.on=function(e,n,t){i[e]=i[e]||[],i[e]=i[e].concat({handler:n,context:t})},e.off=function(e,n,t){if(i[e])for(var r=0;r<i[e].length;r++)i[e][r].handler===n&&i[e][r].context===t&&(i[e]=i[e].slice(0,r).concat(i[e].slice(r+1)))},e.emit=function(e){if(i[e])for(var n=i[e].slice(0),t=0;t<n.length;t++)n[t].handler.apply(n[t].context,Array.prototype.slice.call(arguments,1))},e.getEvents=function(){return Object.keys(i)},e.getEventListenerCount=function(e){return i[e]?i[e].length:0},e.maybeReportError=function(e){e&&(i["error"]?this.emit("error",e):(n||console).error(e.message))},e}var h="ready",en="initialized",nn="failed";var tn=function(i){var n=!1,t=!1,r=null,e=null,o=new Promise(function(n){i.on(h,function e(){i.off(h,e),n()})}).catch(function(){});return{getInitializationPromise:function(){return e||(n?Promise.resolve():t?Promise.reject(r):e=new Promise(function(n,t){function r(e){i.off(nn,r),t(e)}i.on(en,function e(){i.off(en,e),n()}),i.on(nn,r)}))},getReadyPromise:function(){return o},signalSuccess:function(){n||t||(n=!0,i.emit(en),i.emit(h))},signalFailure:function(e){n||t||(t=!0,r=e,i.emit(nn,e),i.emit(h)),i.maybeReportError(e)}}};function rn(n,t,r,i){var o={};function a(){var e="",n=i.getUser();return n&&(e=r||c(JSON.stringify(n))),"ld:"+t+":"+e}return o.loadFlags=function(){return n.get(a()).then(function(e){if(null==e)return null;try{var n,t=JSON.parse(e);return t&&(void 0===(n=t.$schema)||n<1?t=C(t):delete t.$schema),t}catch(e){return o.clearFlags().then(function(){return null})}})},o.saveFlags=function(e){e=le({},e,{$schema:1});return n.set(a(),JSON.stringify(e))},o.clearFlags=function(){return n.clear(a())},o}function on(r,n){function i(e){t||(t=!0,n.warn(Ce(e)))}var e={},t=!1;return e.isEnabled=function(){return!!r},e.get=function(e){return new Promise(function(n){r?r.get(e).then(n).catch(function(e){i(e),n(void 0)}):n(void 0)})},e.set=function(e,t){return new Promise(function(n){r?r.set(e,t).then(function(){return n(!0)}).catch(function(e){i(e),n(!1)}):n(!1)})},e.clear=function(e){return new Promise(function(n){r?r.clear(e).then(function(){return n(!0)}).catch(function(e){i(e),n(!1)}):n(!1)})},e}var an=3e5;function un(i,o,a,n){var u,s=o.streamUrl,c=o.logger,e={},l=j(s,"/eval/"+a),f=o.useReport,d=o.evaluationReasons,t=o.streamReconnectDelay,v=He(i,o),g=!1,p=null,m=null,y=null,h=null,b=null;function k(e){g||(c.warn(xe(e,t)),g=!0),D(!1),w(),E(t)}function E(e){m||(e?m=setTimeout(r,e):r())}function r(){m=null;var e,n="",t={headers:v,readTimeoutMillis:an};if(i.eventSourceFactory){for(var r in null!=h&&(n="h="+h),f?i.eventSourceAllowsReport?(e=l,t.method="REPORT",t.headers["Content-Type"]="application/json",t.body=JSON.stringify(y)):(e=j(s,"/ping/"+a),n=""):e=l+"/"+O(JSON.stringify(y)),t.headers=Ge(t.headers,o),e=e+((n=d?n+(n?"&":"")+"withReasons=true":n)?"?":"")+n,w(),c.info(Ne(e)),u=(new Date).getTime(),p=i.eventSourceFactory(e,t),b)fe(b,r)&&p.addEventListener(r,b[r]);p.onerror=k}}function w(){p&&(c.info(Le()),p.close(),p=null)}function D(e){u&&n&&n.recordStreamInit(u,!e,(new Date).getTime()-u),u=null}return e.connect=function(e,n,t){y=e,h=n,b={};for(var r in t||{})!function(n){b[n]=function(e){D(!(g=!1)),t[n]&&t[n](e)}}(r);E()},e.disconnect=function(){clearTimeout(m),m=null,w()},e.isConnected=function(){return!!(p&&i.eventSourceIsActive&&i.eventSourceIsActive(p))},e}var sn="application/json";function cn(d,v,o){var a=v.baseUrl,u=v.useReport,s=v.evaluationReasons,c=v.logger,e={},g={};function l(e,n){if(!d.httpRequest)return new Promise(function(e,n){n(new ie(Fe()))});var t,r,i,o,a,u=n?"REPORT":"GET",s=He(d,v),c=(n&&(s["Content-Type"]=sn),g[e]),l=(c||(t=function(){delete g[e]},(f={addPromise:function(n,e){r=n,i&&i(),i=e,n.then(function(e){r===n&&(o(e),t&&t())},function(e){r===n&&(a(e),t&&t())})}}).resultPromise=new Promise(function(e,n){o=e,a=n}),c=f,g[e]=c),d.httpRequest(u,e,Ge(s,v),n)),f=l.promise.then(function(e){var n;return 200===e.status?e.header("content-type")&&e.header("content-type").substring(0,sn.length)===sn?JSON.parse(e.body):(n=X(e.header("content-type")||""),Promise.reject(new ie(n))):Promise.reject(404===(n=e).status?new re(z()):new ie(ve(n.statusText||String(n.status))))},function(e){return Promise.reject(new ie(Q(e)))});return c.addPromise(f,function(){l.cancel&&l.cancel()}),c.resultPromise}return e.fetchJSON=function(e){return l(j(a,e),null)},e.fetchFlagSettings=function(e,n){var t,r,i="";return u?(t=[a,"/sdk/evalx/",o,"/user"].join(""),r=JSON.stringify(e)):(e=O(JSON.stringify(e)),t=[a,"/sdk/evalx/",o,"/users/",e].join("")),n&&(i="h="+n),c.debug(_e(t=t+((i=s?i+(i?"&":"")+"withReasons=true":i)?"?":"")+i)),l(t,r)},e}var ln="ld:$anonUserId";function fn(t){var e={};return e.validateUser=function(e){if(!e)return Promise.reject(new i(Y()));var n=oe(e);return null!==n.key&&void 0!==n.key?(n.key=n.key.toString(),Promise.resolve(n)):n.anonymous?t.get(ln).then(function(e){return e?(n.key=e,n):(e=g(),n.key=e,t.set(ln,e).then(function(){return n}))}):Promise.reject(new i(Z()))},e}var dn=Object.freeze({__proto__:null,baseOptionDefs:Me,validate:Be,getTags:$e}).baseOptionDefs,vn=N.appendUrlPath;var gn=function(e){var n={diagnosticId:g()};return e&&(n.sdkKeySuffix=6<e.length?e.substring(e.length-6):e),n},pn=function(e){var n,t,r,i;function o(e){n=e,r=t=0,i=[]}return o(e),{getProps:function(){return{dataSinceDate:n,droppedEvents:t,eventsInLastBatch:r,streamInits:i}},setProps:function(e){n=e.dataSinceDate,t=e.droppedEvents||0,r=e.eventsInLastBatch||0,i=e.streamInits||[]},incrementDroppedEvents:function(){t++},setEventsInLastBatch:function(e){r=e},recordStreamInit:function(e,n,t){i.push({timestamp:e,failed:n,durationMillis:t})},reset:o}},mn=function(n,r,e,t,i,o,a){var u,s,c=!!n.diagnosticUseCombinedEvent,l="ld:"+i+":$diagnostics",f=vn(o.eventsUrl,"/events/diagnostic/"+i),d=o.diagnosticRecordingInterval,v=e,g=!!o.streaming;function p(){return{sdk:function(){var e=ne({},n.diagnosticSdkData);o.wrapperName&&(e.wrapperName=o.wrapperName);o.wrapperVersion&&(e.wrapperVersion=o.wrapperVersion);return e}(),configuration:{customBaseURI:o.baseUrl!==dn.baseUrl.default,customStreamURI:o.streamUrl!==dn.streamUrl.default,customEventsURI:o.eventsUrl!==dn.eventsUrl.default,eventsCapacity:o.eventCapacity,eventsFlushIntervalMillis:o.flushInterval,reconnectTimeMillis:o.streamReconnectDelay,streamingDisabled:!g,allAttributesPrivate:!!o.allAttributesPrivate,inlineUsersInEvents:!!o.inlineUsersInEvents,diagnosticRecordingIntervalMillis:o.diagnosticRecordingInterval,usingSecureMode:!!o.hash,bootstrapMode:!!o.bootstrap,fetchGoalsDisabled:!o.fetchGoals,allowFrequentDuplicateEvents:!!o.allowFrequentDuplicateEvents,sendEventsOnlyForVariation:!!o.sendEventsOnlyForVariation,autoAliasingOptOut:!!o.autoAliasingOptOut},platform:n.diagnosticPlatformData}}function m(e){o.logger&&o.logger.debug(Je.debugPostingDiagnosticEvent(e)),t.sendEvents(e,f,!0).then(function(){}).catch(function(){})}function y(){var e,n;m((n=(new Date).getTime(),e=ne({kind:c?"diagnostic-combined":"diagnostic",id:a,creationDate:n},v.getProps()),c&&(e=ne(ne({},e),p())),v.reset(n),e)),s=setTimeout(y,d),u=(new Date).getTime(),c&&r.isEnabled()&&(n=ne({},v.getProps()),r.set(l,JSON.stringify(n)))}return(i={}).start=function(){var t;c?(t=function(e){var n;e?(e=(u||0)+d)<=(n=(new Date).getTime())?y():s=setTimeout(y,e-n):0===Math.floor(4*Math.random())?y():s=setTimeout(y,d)},r.isEnabled()?r.get(l).then(function(e){if(e)try{var n=JSON.parse(e);v.setProps(n),u=n.dataSinceDate}catch(e){}t(!0)}).catch(function(){t(!1)}):t(!1)):(m(ne({kind:"diagnostic-init",id:a,creationDate:v.getProps().dataSinceDate},p())),s=setTimeout(y,d))},i.stop=function(){s&&clearTimeout(s)},i.setStreaming=function(e){g=e},i},ge="change",yn="internal-change";e.commonBasicLogger=M,e.createConsoleLogger=he,e.errors=w,e.initialize=function(N,x,e,i,n){var t,o,r,a,u,s,_,c,l,f=function(){if(e&&e.logger)return e.logger;return n&&n.logger&&n.logger.default||he("warn")}(),d=Ze(f),v=tn(d),g=Be(e,d,n,f),p=g.sendEvents,m=N,y=g.hash,h=on(i.localStorage,f),b=Xe(i,m,g),k=g.sendEvents&&!g.diagnosticOptOut,q=k?gn(m):null,E=k?pn((new Date).getTime()):null,w=k?mn(i,h,E,b,m,g,q):null,V=un(i,g,m,E),D=g.eventProcessor||Ye(i,g,m,E,d,b),O=cn(i,g,m),J={},P={},S=g.streaming,M=!1,U=!1,z=!0,I=g.stateProvider,j=(a=function(e,n){(function(e){I||e&&R({kind:"identify",key:e.key,user:e,creationDate:(new Date).getTime()})})(e),!g.autoAliasingOptOut&&n&&n.anonymous&&e&&!e.anonymous&&H(e,n)},k={setUser:function(e){var n=u&&oe(u);(u=ye(e))&&a&&a(oe(u),n)},getUser:function(){return u?oe(u):null}},(q=null)&&k.setUser(q),k),K=fn(h),T=h.isEnabled()?new rn(h,m,y,j):null;function R(e){if(m&&!(I&&I.enqueueEvent&&I.enqueueEvent(e))){if("alias"!==e.kind){if(!e.user)return void(z&&(f.warn(ke()),z=!1));z=!1}!p||U||i.isDoNotTrack()||(f.debug(Ae(e.kind)),D.enqueue(e))}}function B(e,n,t,r){var i=j.getUser(),o=new Date,a=n?n.value:null;if(!g.allowFrequentDuplicateEvents){var u=JSON.stringify(a)+(i&&i.key?i.key:"")+e,s=J[u];if(s&&o-s<3e5)return;J[u]=o}s={kind:"feature",key:e,user:i,value:a,variation:n?n.variationIndex:null,default:t,creationDate:o.getTime()},i&&i.anonymous&&(s.contextKind=C(i)),u=P[e];u&&(s.version=u.flagVersion||u.version,s.trackEvents=u.trackEvents,s.debugEventsUntilDate=u.debugEventsUntilDate),(r||u&&u.trackReason)&&n&&(s.reason=n.reason),R(s)}function $(e,n,t,r){var i,o;return P&&fe(P,e)&&P[e]&&!P[e].deleted?(o=A(i=P[e]),null!==i.value&&void 0!==i.value||(o.value=n)):o={value:n,variationIndex:null,reason:{kind:"ERROR",errorKind:"FLAG_NOT_FOUND"}},t&&B(e,o,n,r),o}function A(e){return{value:e.value,variationIndex:void 0===e.variation?null:e.variation,reason:e.reason||null}}function C(e){return e.anonymous?"anonymousUser":"user"}function H(e,n){I||e&&n&&R({kind:"alias",key:e.key,contextKind:C(e),previousKey:n.key,previousContextKind:C(n),creationDate:(new Date).getTime()})}function G(){var i;o=!0,j.getUser()&&(i=function(e){try{return JSON.parse(e)}catch(e){return void d.maybeReportError(new me(we()))}},V.connect(j.getUser(),y,{ping:function(){f.debug(Se());var n=j.getUser();O.fetchFlagSettings(n,y).then(function(e){ae(n,j.getUser())&&F(e||{})}).catch(function(e){d.maybeReportError(new ie(ve(e)))})},put:function(e){e=i(e.data);e&&(f.debug(Ue()),F(e))},patch:function(e){var n,t,r,e=i(e.data);e&&(!(n=P[e.key])||!n.version||!e.version||n.version<e.version?(f.debug(Ie(e.key)),t={},delete(r=le({},e)).key,r=A(P[e.key]=r),t[e.key]=n?{previous:n.value,current:r}:{current:r},X(t)):f.debug(je(e.key)))},delete:function(e){var n,e=i(e.data);e&&(!P[e.key]||P[e.key].version<e.version?(f.debug(Te(e.key)),n={},P[e.key]&&!P[e.key].deleted&&(n[e.key]={previous:P[e.key].value}),P[e.key]={version:e.version,deleted:!0},X(n)):f.debug(Re(e.key)))}}))}function W(){o&&(V.disconnect(),o=!1)}function F(e){var n,t,r={};if(!e)return Promise.resolve();for(n in P)fe(P,n)&&P[n]&&(e[n]&&!ae(e[n].value,P[n].value)?r[n]={previous:P[n].value,current:A(e[n])}:e[n]&&!e[n].deleted||(r[n]={previous:P[n].value}));for(t in e)fe(e,t)&&e[t]&&(!P[t]||P[t].deleted)&&(r[t]={current:A(e[t])});return P=ne({},e),X(r).catch(function(){})}function X(i){var o,e=Object.keys(i);return 0<e.length&&(o={},e.forEach(function(e){var n=i[e].current,t=n?n.value:void 0,r=i[e].previous;d.emit(ge+":"+e,t,r),o[e]=n?{current:t,previous:r}:{previous:r}}),d.emit(ge,o),d.emit(yn,P),g.sendEventsOnlyForVariation||I||e.forEach(function(e){B(e,i[e].current)})),t&&T?T.saveFlags(P):Promise.resolve()}function Q(){var e=S||r&&void 0===S;e&&!o?G():!e&&o&&W(),w&&w.setStreaming(e)}function Y(e){return e===ge||e.substr(0,ge.length+1)===ge+":"}function Z(e){m=e.environment,j.setUser(e.user),P=ne({},e.flags),ue(L)}function L(){f.info(be()),M=!0,Q(),v.signalSuccess()}function ee(e){v.signalFailure(e)}return"string"==typeof g.bootstrap&&"LOCALSTORAGE"===g.bootstrap.toUpperCase()&&(T?t=!0:f.warn(Ce())),"object"===te(g.bootstrap)&&(s=g.bootstrap,E=Object.keys(s),!(c=s[_="$flagsState"])&&E.length&&f.warn(De()),!1===s.$valid&&f.warn(Oe()),l={},E.forEach(function(e){var n;e!==_&&"$valid"!==e&&(n={value:s[e]},c&&c[e]?n=le(n,c[e]):n.version=0,l[e]=n)}),P=l),I?((b=I.getInitialState())?Z(b):I.on("init",Z),I.on("update",function(e){e.user&&j.setUser(e.user);e.flags&&F(e.flags)})):(N?K.validateUser(x).then(function(e){return j.setUser(e),"object"===te(g.bootstrap)?L():t?T.loadFlags().then(function(e){return null==e?(P={},O.fetchFlagSettings(j.getUser(),y).then(function(e){return F(e||{})}).then(L).catch(function(e){ee(new ie(ve(e)))})):(P=e,ue(L),O.fetchFlagSettings(j.getUser(),y).then(F).catch(function(e){return d.maybeReportError(e)}))}):O.fetchFlagSettings(j.getUser(),y).then(function(e){P=e||{},L()}).catch(function(e){P={},ee(e)})}):Promise.reject(new re(Ee()))).catch(ee),{client:{waitForInitialization:function(){return v.getInitializationPromise()},waitUntilReady:function(){return v.getReadyPromise()},identify:function(e,r,n){return U?se(Promise.resolve({}),n):I?(f.warn(Pe()),se(Promise.resolve(ce(P)),n)):se((t&&T?T.clearFlags():Promise.resolve()).then(function(){return K.validateUser(e)}).then(function(t){return O.fetchFlagSettings(t,r).then(function(e){var n=ce(e);return j.setUser(t),y=r,e?F(e).then(function(){return n}):n})}).then(function(e){return o&&G(),e}).catch(function(e){return d.maybeReportError(e),Promise.reject(e)}),n)},getUser:function(){return j.getUser()},variation:function(e,n){return $(e,n,!0,!1).value},variationDetail:function(e,n){return $(e,n,!0,!0)},track:function(e,n,t){var r;"string"!=typeof e?d.maybeReportError(new pe(de(e))):(i.customEventFilter&&!i.customEventFilter(e)&&f.warn(de(e)),r={kind:"custom",key:e,user:e=j.getUser(),url:i.getCurrentUrl(),creationDate:(new Date).getTime()},e&&e.anonymous&&(r.contextKind=C(e)),null!=n&&(r.data=n),null!=t&&(r.metricValue=t),R(r))},alias:H,on:function(e,n,t){Y(e)?(r=!0,M&&Q(),d.on(e,n,t)):d.on.apply(d,arguments)},off:function(e){var n;d.off.apply(d,arguments),Y(e)&&(n=!1,d.getEvents().forEach(function(e){Y(e)&&0<d.getEventListenerCount(e)&&(n=!0)}),n||(r=!1,o&&void 0===S&&W()))},setStreaming:function(e){(e=null===e?void 0:e)!==S&&(S=e,Q())},flush:function(e){return se(p?D.flush():Promise.resolve(),e)},allFlags:function(){var e,n={};if(!P)return n;for(e in P)fe(P,e)&&(n[e]=$(e,null,!g.sendEventsOnlyForVariation).value);return n},close:function(e){return se(U?Promise.resolve():Promise.resolve().then(function(){if(W(),w&&w.stop(),p)return D.stop(),D.flush()}).then(n).catch(n),e);function n(){U=!0,P={}}}},options:g,emitter:d,ident:j,logger:f,requestor:O,start:function(){p&&(w&&w.start(),D.start())},enqueueEvent:R,getFlagsInternal:function(){return P},getEnvironmentId:function(){return m},internalChangeEventName:yn}},e.messages=Je,e.utils=N,e.version="3.6.0",Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self)["LDClient-Common"]={})}(this,function(e){"use strict";function b(n,e){var t,r=Object.keys(n);return Object.getOwnPropertySymbols&&(t=Object.getOwnPropertySymbols(n),e&&(t=t.filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),r.push.apply(r,t)),r}function oe(n){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?b(Object(t),!0).forEach(function(e){r(n,e,t[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))})}return n}function ie(e){return(ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,n,t){n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t}function ye(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,i=[],a=!0,u=!1;try{for(t=t.call(e);!(a=(r=t.next()).done)&&(i.push(r.value),!n||i.length!==n);a=!0);}catch(e){u=!0,o=e}finally{try{a||null==t.return||t.return()}finally{if(u)throw o}}return i}}(e,n)||E(e,n)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return function(e){if(Array.isArray(e))return o(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||E(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function E(e,n){var t;if(e)return"string"==typeof e?o(e,n):"Map"===(t="Object"===(t=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?o(e,n):void 0}function o(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Array(n);t<n;t++)r[t]=e[t];return r}function n(e){function n(e,n){Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.message=e,this.code=n}return(n.prototype=new Error).name=e,n.prototype.constructor=n}var L=n("LaunchDarklyUnexpectedResponseError"),ae=n("LaunchDarklyInvalidEnvironmentIdError"),i=n("LaunchDarklyInvalidUserError"),be=n("LaunchDarklyInvalidEventKeyError"),w=n("LaunchDarklyInvalidArgumentError"),ue=n("LaunchDarklyFlagFetchError"),ke=n("LaunchDarklyInvalidDataError");function R(e){return!(400<=e&&e<500)||(400===e||408===e||429===e)}for(var D=Object.freeze({__proto__:null,LDUnexpectedResponseError:L,LDInvalidEnvironmentIdError:ae,LDInvalidUserError:i,LDInvalidEventKeyError:be,LDInvalidArgumentError:w,LDFlagFetchError:ue,LDInvalidDataError:ke,isHttpErrorRecoverable:R}),S=function(e){for(var n,t=e.length,r=t%3,o=[],i=0,a=t-r;i<a;i+=16383)o.push(function(e,n,t){for(var r,o=[],i=n;i<t;i+=3)r=(e[i]<<16&16711680)+(e[i+1]<<8&65280)+(255&e[i+2]),o.push(function(e){return u[e>>18&63]+u[e>>12&63]+u[e>>6&63]+u[63&e]}(r));return o.join("")}(e,i,a<i+16383?a:i+16383));1==r?(n=e[t-1],o.push(u[n>>2]+u[n<<4&63]+"==")):2==r&&(n=(e[t-2]<<8)+e[t-1],o.push(u[n>>10]+u[n>>4&63]+u[n<<2&63]+"="));return o.join("")},u=[],t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,P=t.length;a<P;++a)u[a]=t[a],t.charCodeAt(a),a;"-".charCodeAt(0),"_".charCodeAt(0);function s(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){var t,r,o=U(e),i=U(n);if(o&&i){if((a=e.length)!=n.length)return!1;for(t=a;0!=t--;)if(!s(e[t],n[t]))return!1}else{if(o!=i)return!1;o=e instanceof Date,i=n instanceof Date;if(o!=i)return!1;if(o&&i)return e.getTime()==n.getTime();o=e instanceof RegExp,i=n instanceof RegExp;if(o!=i)return!1;if(o&&i)return e.toString()==n.toString();var a,u=I(e);if((a=u.length)!==I(n).length)return!1;for(t=a;0!=t--;)if(!j.call(n,u[t]))return!1;for(t=a;0!=t--;)if(!s(e[r=u[t]],n[r]))return!1}return!0}return e!=e&&n!=n}var U=Array.isArray,I=Object.keys,j=Object.prototype.hasOwnProperty,C=["key","secondary","ip","country","email","firstName","lastName","avatar","name"];function A(e,n){return(e.endsWith("/")?e.substring(0,e.length-1):e)+(n.startsWith("/")?"":"/")+n}function c(e){e=unescape(encodeURIComponent(e));return S(function(e){for(var n=[],t=0;t<e.length;t++)n.push(e.charCodeAt(t));return n}(e))}function O(e){return c(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function se(e){return JSON.parse(JSON.stringify(e))}function ce(e,n){return s(e,n)}function le(e){setTimeout(e,0)}function fe(e,n){e=e.then(function(e){return n&&setTimeout(function(){n(null,e)},0),e},function(e){if(!n)return Promise.reject(e);setTimeout(function(){n(e,null)},0)});return n?void 0:e}function T(e){var n,t={};for(n in e)ge(e,n)&&(t[n]={value:e[n],version:0});return t}function de(e){var n,t={};for(n in e)ge(e,n)&&(t[n]=e[n].value);return t}function F(e,n){for(var t,r=n.slice(0),o=[],i=e;0<r.length;){for(t=[];0<i;){var a=r.shift();if(!a)break;(i-=O(JSON.stringify(a)).length)<0&&0<t.length?r.unshift(a):t.push(a)}i=e,o.push(t)}return o}function N(e){var n=e.version||"3.8.0";return e.userAgent+"/"+n}function ve(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];return n.reduce(function(e,n){return oe(oe({},e),n)},{})}function ge(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Ee(e){if(!e)return e;var n,t;for(t in C){var r=C[t],o=e[r];void 0!==o&&"string"!=typeof o&&((n=n||oe({},e))[r]=String(o))}return n||e}var x=Object.freeze({__proto__:null,appendUrlPath:A,btoa:c,base64URLEncode:O,clone:se,deepEquals:ce,onNextTick:le,wrapPromiseCallback:fe,transformValuesToVersionedValues:T,transformVersionedValuesToValues:de,chunkUserEventsForUrl:F,getLDUserAgentString:N,extend:ve,objectHasOwnProperty:ge,sanitizeUser:Ee});(function(e){var n,t,r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);r?(n=new Uint8Array(16),e.exports=function(){return r(n),n}):(t=new Array(16),e.exports=function(){for(var e,n=0;n<16;n++)0==(3&n)&&(e=4294967296*Math.random()),t[n]=e>>>((3&n)<<3)&255;return t})})(V={exports:{}});for(var V,_=V.exports,q=[],l=0;l<256;++l)q[l]=(l+256).toString(16).substr(1);var M,f,z=function(e,n){var n=n||0,t=q;return[t[e[n++]],t[e[n++]],t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],"-",t[e[n++]],t[e[n++]],t[e[n++]],t[e[n++]],t[e[n++]],t[e[+n]]].join("")},d=0,v=0;var g=function(e,n,t){var r=n&&t||0,o=n||[],i=(e=e||{}).node||M,t=void 0!==e.clockseq?e.clockseq:f,a=(null!=i&&null!=t||(a=_(),null==i&&(i=M=[1|a[0],a[1],a[2],a[3],a[4],a[5]]),null==t&&(t=f=16383&(a[6]<<8|a[7]))),void 0!==e.msecs?e.msecs:(new Date).getTime()),u=void 0!==e.nsecs?e.nsecs:v+1,s=a-d+(u-v)/1e4;if(s<0&&void 0===e.clockseq&&(t=t+1&16383),1e4<=(u=(s<0||d<a)&&void 0===e.nsecs?0:u))throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");d=a,f=t,s=(1e4*(268435455&(a+=122192928e5))+(v=u))%4294967296,o[r++]=s>>>24&255,o[r++]=s>>>16&255,o[r++]=s>>>8&255,o[r++]=255&s,e=a/4294967296*1e4&268435455,o[r++]=e>>>8&255,o[r++]=255&e,o[r++]=e>>>24&15|16,o[r++]=e>>>16&255,o[r++]=t>>>8|128,o[r++]=255&t;for(var c=0;c<6;++c)o[r+c]=i[c];return n||z(o)},p=["debug","info","warn","error","none"];function J(e,u){if(e&&e.destination&&"function"!=typeof e.destination)throw new Error("destination for basicLogger was set to a non-function");function n(n){return function(e){console&&console[n]&&console[n].call(console,e)}}var s=e&&e.destination?[e.destination,e.destination,e.destination,e.destination]:[n("log"),n("info"),n("warn"),n("error")],c=!(!e||!e.destination),l=e&&void 0!==e.prefix&&null!==e.prefix?e.prefix:"[LaunchDarkly] ",t=1;if(e&&e.level)for(var r=0;r<p.length;r++)p[r]===e.level&&(t=r);for(var o={},i=function(e){var i,a=p[e];"none"!==a&&(e<t?o[a]=function(){}:(i=e,o[a]=function(){var e=i,n=a,t=arguments;if(!(t.length<1)){var r=c?n+": "+l:l,o=1!==t.length&&u?((o=k(t))[0]=r+o[0],u.apply(void 0,k(o))):r+t[0];try{s[e](o)}catch(e){console&&console.log&&console.log("[LaunchDarkly] Configured logger's "+n+" method threw an exception: "+e)}}}))},a=0;a<p.length;a++)i(a);return o}function we(e,n){return J({level:e,prefix:n})}function m(e){return e&&e.message?e.message:"string"==typeof e||e instanceof String?e:JSON.stringify(e)}function De(){return"LaunchDarkly client initialized"}function Oe(){return"Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/sdk/features/identify#javascript"}function Se(e){return'Custom event "'+e+'" does not exist'}function K(){return"Environment not found. Double check that you specified a valid environment/client-side ID."+h}function Pe(){return"No environment/client-side ID was specified."+h}function pe(e){return"Error fetching flag settings: "+m(e)}function Ue(){return"Invalid data received from LaunchDarkly; connection may have been interrupted"}function Ie(){return"LaunchDarkly client was initialized with bootstrap data that did not include flag metadata. Events may not be sent correctly."+h}function je(){return"LaunchDarkly bootstrap data is not available because the back end could not read the flags."}function B(e,n){return n?'"'+e+'" is deprecated, please use "'+n+'"':'"'+e+'" is deprecated'}function Ce(){return"identify() has no effect here; it must be called on the main client instance"}function $(e){return'Ignoring unknown config option "'+e+'"'}function H(e,n,t){return'Config option "'+e+'" should be of type '+n+", got "+t+", using default value"}function G(e,n){return'Config option "'+e+'" should be a boolean, got '+n+", converting to boolean"}function W(e,n,t){return'Config option "'+e+'" was set to '+n+", changing to minimum value of "+t}function Te(){return"received ping message from stream"}function Re(){return"received streaming update for all flags"}function Ae(e){return'received streaming update for flag "'+e+'"'}function Le(e){return'received streaming update for flag "'+e+'" but ignored due to version check'}function Fe(e){return'received streaming deletion for flag "'+e+'"'}function Ne(e){return'received streaming deletion for flag "'+e+'" but ignored due to version check'}function xe(e){return'enqueueing "'+e+'" event'}function X(e,n){return'an inspector: "'.concat(n,'" of type: "').concat(e,'" generated an exception')}var h=" Please see https://docs.launchdarkly.com/sdk/client-side/javascript#initializing-the-client for instructions on SDK initialization.",Q=function(){return"Exceeded event queue capacity. Increase capacity to avoid dropping events."},Y=function(e){return'Expected application/json content type but got "'+e+'"'},Ve=function(e){return"local storage is unavailable: "+m(e)},Z=function(e){return"network error"+(e?" ("+e+")":"")},ee=function(){return"No user specified."+h},ne=function(){return"Invalid user specified."+h},te=function(e,n,t){return"Received error "+e+(401===e?" (invalid SDK key)":"")+" for "+n+" - "+(R(e)?t:"giving up permanently")},re=function(){return"Cannot make HTTP requests in this environment."+h},_e=function(){return"Closing stream connection"},qe=function(e){return"Opening stream connection to "+e},Me=function(e,n){return"Error on stream connection: "+m(e)+", will continue retrying every "+n+" milliseconds."},ze=function(e){return"polling for feature flags at "+e},Je=function(e){return"sending "+e+" events"},Ke=function(e){return'Config option "'.concat(e,'" must only contain letters, numbers, ., _ or -.')},Be=function(e,n){return'an inspector: "'.concat(n,'" of an invalid type (').concat(e,") was configured")},$e=function(e){return'Value of "'.concat(e,'" was longer than 64 characters and was discarded.')},He=Object.freeze({__proto__:null,clientInitialized:De,clientNotReady:function(){return"LaunchDarkly client is not ready"},eventCapacityExceeded:Q,eventWithoutUser:Oe,invalidContentType:Y,invalidKey:function(){return"Event key must be a string"},localStorageUnavailable:Ve,networkError:Z,unknownCustomEventKey:Se,environmentNotFound:K,environmentNotSpecified:Pe,errorFetchingFlags:pe,userNotSpecified:ee,invalidUser:ne,invalidData:Ue,bootstrapOldFormat:Ie,bootstrapInvalid:je,deprecated:B,httpErrorMessage:te,httpUnavailable:re,identifyDisabled:Ce,streamClosing:_e,streamConnecting:qe,streamError:Me,unknownOption:$,wrongOptionType:H,wrongOptionTypeBoolean:G,optionBelowMinimum:W,debugPolling:ze,debugStreamPing:Te,debugStreamPut:Re,debugStreamPatch:Ae,debugStreamPatchIgnored:Le,debugStreamDelete:Fe,debugStreamDeleteIgnored:Ne,debugEnqueueingEvent:xe,debugPostingEvents:Je,debugPostingDiagnosticEvent:function(e){return"sending diagnostic event ("+e.kind+")"},invalidTagValue:Ke,invalidInspector:Be,inspectorMethodError:X,tagValueTooLong:$e}),Ge={baseUrl:{default:"https://app.launchdarkly.com"},streamUrl:{default:"https://clientstream.launchdarkly.com"},eventsUrl:{default:"https://events.launchdarkly.com"},sendEvents:{default:!0},streaming:{type:"boolean"},sendLDHeaders:{default:!0},requestHeaderTransform:{type:"function"},inlineUsersInEvents:{default:!1},allowFrequentDuplicateEvents:{default:!1},sendEventsOnlyForVariation:{default:!1},useReport:{default:!1},evaluationReasons:{default:!1},eventCapacity:{default:100,minimum:1},flushInterval:{default:2e3,minimum:2e3},samplingInterval:{default:0,minimum:0},streamReconnectDelay:{default:1e3,minimum:0},allAttributesPrivate:{default:!1},privateAttributeNames:{default:[]},bootstrap:{type:"string|object"},diagnosticRecordingInterval:{default:9e5,minimum:2e3},diagnosticOptOut:{default:!1},wrapperName:{type:"string"},wrapperVersion:{type:"string"},stateProvider:{type:"object"},autoAliasingOptOut:{default:!1},application:{validator:function(e,n,t){var r={};n.id&&(r.id=Xe("".concat(e,".id"),n.id,t));n.version&&(r.version=Xe("".concat(e,".version"),n.version,t));return r}},inspectors:{default:[]}},We=/^(\w|\.|-)+$/;function Xe(e,n,t){if("string"==typeof n&&n.match(We)){if(!(64<n.length))return n;t.warn($e(e))}else t.warn(Ke(e))}function Qe(e,n,t,a){var u=ve({logger:{default:a}},Ge,t),r={all_attributes_private:"allAttributesPrivate",private_attribute_names:"privateAttributeNames",samplingInterval:null,allowFrequentDuplicateEvents:void 0};function s(e){le(function(){n&&n.maybeReportError(new w(e))})}var o,i,c,l,f,t=ve({},e||{});function d(e){return null===e?"any":void 0!==e?Array.isArray(e)?"array":"boolean"===(e=ie(e))||"string"===e||"number"===e||"function"===e?e:"object":void 0}return o=t,Object.keys(r).forEach(function(e){var n;void 0!==o[e]&&(n=r[e],a&&a.warn(B(e,n)),n&&(void 0===o[n]&&(o[n]=o[e]),delete o[e]))}),i=ve({},t),Object.keys(u).forEach(function(e){void 0!==i[e]&&null!==i[e]||(i[e]=u[e]&&u[e].default)}),l=ve({},c=t=i),Object.keys(c).forEach(function(e){var n,t,r,o,i=c[e];null!=i&&(void 0===(n=u[e])?s($(e)):(t=n.type||d(n.default),(r=n.validator)?void 0!==(r=r(e,c[e],a))?l[e]=r:delete l[e]:"any"!==t&&(r=t.split("|"),o=d(i),r.indexOf(o)<0?"boolean"===t?(l[e]=!!i,s(G(e,o))):(s(H(e,t,o)),l[e]=n.default):"number"===o&&void 0!==n.minimum&&i<n.minimum&&(s(W(e,i,n.minimum)),l[e]=n.minimum))))}),f=(t=l).logger,p.forEach(function(e){if("none"!==e&&(!f[e]||"function"!=typeof f[e]))throw new Error("Provided logger instance must support logger."+e+"(...) method")}),t}function Ye(e){var n={};return e&&(e.application&&void 0!==e.application.id&&null!==e.application.id&&(n["application-id"]=[e.application.id]),e.application&&void 0!==e.application.version&&null!==e.application.id&&(n["application-version"]=[e.application.version])),n}function Ze(e,n){var t;return n&&!n.sendLDHeaders?{}:(e={"X-LaunchDarkly-User-Agent":N(e)},n&&n.wrapperName&&(e["X-LaunchDarkly-Wrapper"]=n.wrapperVersion?n.wrapperName+"/"+n.wrapperVersion:n.wrapperName),t=Ye(n),(n=Object.keys(t)).length&&(e["x-launchdarkly-tags"]=n.sort().flatMap(function(n){return Array.isArray(t[n])?t[n].sort().map(function(e){return"".concat(n,"/").concat(e)}):["".concat(n,"/").concat(t[n])]}).join(" ")),e)}function en(e,n){return n&&n.requestHeaderTransform?n.requestHeaderTransform(oe({},e)):e}var nn=2e3;function tn(u,e,s){var c="/a/"+e+".gif",l=ve({"Content-Type":"application/json"},Ze(u,s)),f=u.httpFallbackPing,d={};return d.sendChunk=function(e,n,r,t){var o=JSON.stringify(e),i=r?null:g();function a(t){var e=r?l:ve({},l,{"X-LaunchDarkly-Event-Schema":"3","X-LaunchDarkly-Payload-ID":i});return u.httpRequest("POST",n,en(e,s),o).promise.then(function(e){var n;if(e)return 400<=e.status&&R(e.status)&&t?a(!1):(n={status:(e=e).status},(e=(e=e.header("date"))&&Date.parse(e))&&(n.serverTime=e),n)}).catch(function(){return t?a(!1):Promise.reject()})}return t?a(!0).catch(function(){}):(f&&f(n+c+"?d="+O(o)),Promise.resolve())},d.sendEvents=function(e,n,t){if(!u.httpRequest)return Promise.resolve();for(var r=u.httpAllowsPost(),o=r?[e]:F(nn-n.length,e),i=[],a=0;a<o.length;a++)i.push(d.sendChunk(o[a],n,t,r));return Promise.all(i)},d}function rn(e,n,t,r,o,i){var a,u,s,c,l,f,d,v,g=3<arguments.length&&void 0!==r?r:null,p=4<arguments.length&&void 0!==o?o:null,m={},h=(5<arguments.length&&void 0!==i?i:null)||tn(e,t,n),y=A(n.eventsUrl,"/events/bulk/"+t),b=(u=a=0,s={},(r={}).summarizeEvent=function(e){var n,t;"feature"===e.kind&&(n=e.key+":"+(null!==e.variation&&void 0!==e.variation?e.variation:"")+":"+(null!==e.version&&void 0!==e.version?e.version:""),(t=s[n])?t.count=t.count+1:s[n]={count:1,key:e.key,variation:e.variation,version:e.version,value:e.value,default:e.default},(0===a||e.creationDate<a)&&(a=e.creationDate),e.creationDate>u&&(u=e.creationDate))},r.getSummary=function(){var e,n={},t=!0;for(e in s){var r=s[e],o=n[r.key],i=(o||(o={default:r.default,counters:[]},n[r.key]=o),{value:r.value,count:r.count});void 0!==r.variation&&null!==r.variation&&(i.variation=r.variation),r.version?i.version=r.version:i.unknown=!0,o.counters.push(i),t=!1}return t?null:{startDate:a,endDate:u,features:n}},r.clearSummary=function(){u=a=0,s={}},r),k=(o={},c=(i=n).allAttributesPrivate,l=i.privateAttributeNames||[],f={key:!0,custom:!0,anonymous:!0},d={key:!0,secondary:!0,ip:!0,country:!0,email:!0,firstName:!0,lastName:!0,avatar:!0,name:!0,anonymous:!0,custom:!0},o.filterUser=function(e){var n,o,t,r,i;return e?(n=e.privateAttributeNames||[],o=function(e){return!f[e]&&(c||-1!==n.indexOf(e)||-1!==l.indexOf(e))},t=(r=(i=function(t,r){return Object.keys(t).reduce(function(e,n){return r(n)&&(o(n)?e[1][n]=!0:e[0][n]=t[n]),e},[{},{}])})(e,function(e){return d[e]}))[0],r=r[1],e.custom&&(i=i(e.custom,function(){return 1}),t.custom=i[0],r=ve({},r,i[1])),(e=Object.keys(r)).length&&(e.sort(),t.privateAttrs=e),t):null},o),E=n.inlineUsersInEvents,w=n.samplingInterval,D=n.eventCapacity,O=n.flushInterval,S=n.logger,P=[],U=0,I=!1,j=!1;function C(){return 0===w||0===Math.floor(Math.random()*w)}function T(e){P.length<D?(P.push(e),j=!1):(j||(j=!0,S.warn(Q())),g&&g.incrementDroppedEvents())}return m.enqueue=function(e){var n,t,r;I||(n=r=!1,b.summarizeEvent(e),"feature"===e.kind?C()&&(r=!!e.trackEvents,n=!!(t=e).debugEventsUntilDate&&(t.debugEventsUntilDate>U&&t.debugEventsUntilDate>(new Date).getTime())):r=C(),r&&T((r=ve({},t=e),"alias"!==t.kind&&(E||"identify"===t.kind?r.user=k.filterUser(t.user):(r.userKey=t.user.key,delete r.user),"feature"===t.kind&&(delete r.trackEvents,delete r.debugEventsUntilDate)),r)),n&&((r=ve({},e,{kind:"debug"})).user=k.filterUser(r.user),delete r.trackEvents,delete r.debugEventsUntilDate,T(r)))},m.flush=function(){var e,n;return I||(e=P,n=b.getSummary(),b.clearSummary(),n&&(n.kind="summary",e.push(n)),g&&g.setEventsInLastBatch(e.length),0===e.length)?Promise.resolve():(P=[],S.debug(Je(e.length)),h.sendEvents(e,y).then(function(e){e&&(e.serverTime&&(U=e.serverTime),R(e.status)||(I=!0),400<=e.status&&le(function(){p.maybeReportError(new L(te(e.status,"event posting","some events were dropped")))}))}))},m.start=function(){v=setTimeout(function e(){m.flush(),v=setTimeout(e,O)},O)},m.stop=function(){clearTimeout(v)},m}function on(n){var e={},o={};return e.on=function(e,n,t){o[e]=o[e]||[],o[e]=o[e].concat({handler:n,context:t})},e.off=function(e,n,t){if(o[e])for(var r=0;r<o[e].length;r++)o[e][r].handler===n&&o[e][r].context===t&&(o[e]=o[e].slice(0,r).concat(o[e].slice(r+1)))},e.emit=function(e){if(o[e])for(var n=o[e].slice(0),t=0;t<n.length;t++)n[t].handler.apply(n[t].context,Array.prototype.slice.call(arguments,1))},e.getEvents=function(){return Object.keys(o)},e.getEventListenerCount=function(e){return o[e]?o[e].length:0},e.maybeReportError=function(e){e&&(o["error"]?this.emit("error",e):(n||console).error(e.message))},e}var y="ready",an="initialized",un="failed";var sn=function(o){var n=!1,t=!1,r=null,e=null,i=new Promise(function(n){o.on(y,function e(){o.off(y,e),n()})}).catch(function(){});return{getInitializationPromise:function(){if(!e){if(n)return Promise.resolve();if(t)return Promise.reject(r);e=new Promise(function(n,t){function r(e){o.off(un,r),t(e)}o.on(an,function e(){o.off(an,e),n()}),o.on(un,r)})}return e},getReadyPromise:function(){return i},signalSuccess:function(){n||t||(n=!0,o.emit(an),o.emit(y))},signalFailure:function(e){n||t||(t=!0,r=e,o.emit(un,e),o.emit(y)),o.maybeReportError(e)}}};function cn(n,t,r,o){var i={};function a(){var e="",n=o.getUser();return n&&(e=r||c(JSON.stringify(n))),"ld:"+t+":"+e}return i.loadFlags=function(){return n.get(a()).then(function(e){if(null==e)return null;try{var n,t=JSON.parse(e);return t&&(void 0===(n=t.$schema)||n<1?t=T(t):delete t.$schema),t}catch(e){return i.clearFlags().then(function(){return null})}})},i.saveFlags=function(e){e=ve({},e,{$schema:1});return n.set(a(),JSON.stringify(e))},i.clearFlags=function(){return n.clear(a())},i}function ln(r,n){function o(e){t||(t=!0,n.warn(Ve(e)))}var e={},t=!1;return e.isEnabled=function(){return!!r},e.get=function(e){return new Promise(function(n){r?r.get(e).then(n).catch(function(e){o(e),n(void 0)}):n(void 0)})},e.set=function(e,t){return new Promise(function(n){r?r.set(e,t).then(function(){return n(!0)}).catch(function(e){o(e),n(!1)}):n(!1)})},e.clear=function(e){return new Promise(function(n){r?r.clear(e).then(function(){return n(!0)}).catch(function(e){o(e),n(!1)}):n(!1)})},e}var fn=3e5;function dn(o,i,a,n){var u,s=i.streamUrl,c=i.logger,e={},l=A(s,"/eval/"+a),f=i.useReport,d=i.evaluationReasons,t=i.streamReconnectDelay,v=Ze(o,i),g=!1,p=null,m=null,h=null,y=null,b=null;function k(e){g||(c.warn(Me(e,t)),g=!0),D(!1),w(),E(t)}function E(e){m||(e?m=setTimeout(r,e):r())}function r(){m=null;var e,n="",t={headers:v,readTimeoutMillis:fn};if(o.eventSourceFactory){for(var r in null!=y&&(n="h="+y),f?o.eventSourceAllowsReport?(e=l,t.method="REPORT",t.headers["Content-Type"]="application/json",t.body=JSON.stringify(h)):(e=A(s,"/ping/"+a),n=""):e=l+"/"+O(JSON.stringify(h)),t.headers=en(t.headers,i),e=e+((n=d?n+(n?"&":"")+"withReasons=true":n)?"?":"")+n,w(),c.info(qe(e)),u=(new Date).getTime(),p=o.eventSourceFactory(e,t),b)ge(b,r)&&p.addEventListener(r,b[r]);p.onerror=k}}function w(){p&&(c.info(_e()),p.close(),p=null)}function D(e){u&&n&&n.recordStreamInit(u,!e,(new Date).getTime()-u),u=null}return e.connect=function(e,n,t){h=e,y=n,b={};for(var r in t||{})!function(n){b[n]=function(e){D(!(g=!1)),t[n]&&t[n](e)}}(r);E()},e.disconnect=function(){clearTimeout(m),m=null,w()},e.isConnected=function(){return!!(p&&o.eventSourceIsActive&&o.eventSourceIsActive(p))},e}var vn="application/json";function gn(d,v,i){var a=v.baseUrl,u=v.useReport,s=v.evaluationReasons,c=v.logger,e={},g={};function l(e,n){var t,r,o,i,a,u,s,c,l,f;return d.httpRequest?(t=n?"REPORT":"GET",r=Ze(d,v),n&&(r["Content-Type"]=vn),(o=g[e])||(i=function(){delete g[e]},(f={addPromise:function(n,e){a=n,u&&u(),u=e,n.then(function(e){a===n&&(s(e),i&&i())},function(e){a===n&&(c(e),i&&i())})}}).resultPromise=new Promise(function(e,n){s=e,c=n}),o=f,g[e]=o),f=(l=d.httpRequest(t,e,en(r,v),n)).promise.then(function(e){var n;return 200===e.status?e.header("content-type")&&e.header("content-type").substring(0,vn.length)===vn?JSON.parse(e.body):(n=Y(e.header("content-type")||""),Promise.reject(new ue(n))):Promise.reject(404===(n=e).status?new ae(K()):new ue(pe(n.statusText||String(n.status))))},function(e){return Promise.reject(new ue(Z(e)))}),o.addPromise(f,function(){l.cancel&&l.cancel()}),o.resultPromise):new Promise(function(e,n){n(new ue(re()))})}return e.fetchJSON=function(e){return l(A(a,e),null)},e.fetchFlagSettings=function(e,n){var t,r,o="";return u?(t=[a,"/sdk/evalx/",i,"/user"].join(""),r=JSON.stringify(e)):(e=O(JSON.stringify(e)),t=[a,"/sdk/evalx/",i,"/users/",e].join("")),n&&(o="h="+n),c.debug(ze(t=t+((o=s?o+(o?"&":"")+"withReasons=true":o)?"?":"")+o)),l(t,r)},e}var pn="ld:$anonUserId";function mn(t){var e={};return e.validateUser=function(e){var n;return e?null!==(n=se(e)).key&&void 0!==n.key?(n.key=n.key.toString(),Promise.resolve(n)):n.anonymous?t.get(pn).then(function(e){return e?(n.key=e,n):(e=g(),n.key=e,t.set(pn,e).then(function(){return n}))}):Promise.reject(new i(ne())):Promise.reject(new i(ee()))},e}var hn=Object.freeze({__proto__:null,baseOptionDefs:Ge,validate:Qe,getTags:Ye}).baseOptionDefs,yn=x.appendUrlPath;var bn=function(e){var n={diagnosticId:g()};return e&&(n.sdkKeySuffix=6<e.length?e.substring(e.length-6):e),n},kn=function(e){var n,t,r,o;function i(e){n=e,r=t=0,o=[]}return i(e),{getProps:function(){return{dataSinceDate:n,droppedEvents:t,eventsInLastBatch:r,streamInits:o}},setProps:function(e){n=e.dataSinceDate,t=e.droppedEvents||0,r=e.eventsInLastBatch||0,o=e.streamInits||[]},incrementDroppedEvents:function(){t++},setEventsInLastBatch:function(e){r=e},recordStreamInit:function(e,n,t){o.push({timestamp:e,failed:n,durationMillis:t})},reset:i}},En=function(n,r,e,t,o,i,a){var u,s,c=!!n.diagnosticUseCombinedEvent,l="ld:"+o+":$diagnostics",f=yn(i.eventsUrl,"/events/diagnostic/"+o),d=i.diagnosticRecordingInterval,v=e,g=!!i.streaming;function p(){return{sdk:function(){var e=oe({},n.diagnosticSdkData);i.wrapperName&&(e.wrapperName=i.wrapperName);i.wrapperVersion&&(e.wrapperVersion=i.wrapperVersion);return e}(),configuration:{customBaseURI:i.baseUrl!==hn.baseUrl.default,customStreamURI:i.streamUrl!==hn.streamUrl.default,customEventsURI:i.eventsUrl!==hn.eventsUrl.default,eventsCapacity:i.eventCapacity,eventsFlushIntervalMillis:i.flushInterval,reconnectTimeMillis:i.streamReconnectDelay,streamingDisabled:!g,allAttributesPrivate:!!i.allAttributesPrivate,inlineUsersInEvents:!!i.inlineUsersInEvents,diagnosticRecordingIntervalMillis:i.diagnosticRecordingInterval,usingSecureMode:!!i.hash,bootstrapMode:!!i.bootstrap,fetchGoalsDisabled:!i.fetchGoals,sendEventsOnlyForVariation:!!i.sendEventsOnlyForVariation,autoAliasingOptOut:!!i.autoAliasingOptOut},platform:n.diagnosticPlatformData}}function m(e){i.logger&&i.logger.debug(He.debugPostingDiagnosticEvent(e)),t.sendEvents(e,f,!0).then(function(){}).catch(function(){})}function h(){var e,n;m((n=(new Date).getTime(),e=oe({kind:c?"diagnostic-combined":"diagnostic",id:a,creationDate:n},v.getProps()),c&&(e=oe(oe({},e),p())),v.reset(n),e)),s=setTimeout(h,d),u=(new Date).getTime(),c&&r.isEnabled()&&(n=oe({},v.getProps()),r.set(l,JSON.stringify(n)))}return(o={}).start=function(){var t;c?(t=function(e){var n;e?(e=(u||0)+d)<=(n=(new Date).getTime())?h():s=setTimeout(h,e-n):0===Math.floor(4*Math.random())?h():s=setTimeout(h,d)},r.isEnabled()?r.get(l).then(function(e){if(e)try{var n=JSON.parse(e);v.setProps(n),u=n.dataSinceDate}catch(e){}t(!0)}).catch(function(){t(!1)}):t(!1)):(m(oe({kind:"diagnostic-init",id:a,creationDate:v.getProps().dataSinceDate},p())),s=setTimeout(h,d))},o.stop=function(){s&&clearTimeout(s)},o.setStreaming=function(e){g=e},o};var me={flagUsed:"flag-used",flagDetailsChanged:"flag-details-changed",flagDetailChanged:"flag-detail-changed",clientIdentityChanged:"client-identity-changed"};function wn(e,i){var n,t={},o=(r(n={},me.flagUsed,[]),r(n,me.flagDetailsChanged,[]),r(n,me.flagDetailChanged,[]),r(n,me.clientIdentityChanged,[]),n);return(null==e?void 0:e.map(function(e){return t=i,r=!1,o={type:(n=e).type,name:n.name,method:function(){try{n.method.apply(n,arguments)}catch(e){r||(r=!0,t.warn(X(o.type,o.name)))}}};var n,t,r,o})).forEach(function(e){Object.prototype.hasOwnProperty.call(o,e.type)?o[e.type].push(e):i.warn(Be(e.type,e.name))}),t.hasListeners=function(e){return null==(e=o[e])?void 0:e.length},t.onFlagUsed=function(n,t,r){o[me.flagUsed].length&&le(function(){o[me.flagUsed].forEach(function(e){return e.method(n,t,r)})})},t.onFlags=function(n){o[me.flagDetailsChanged].length&&le(function(){o[me.flagDetailsChanged].forEach(function(e){return e.method(n)})})},t.onFlagChanged=function(n,t){o[me.flagDetailChanged].length&&le(function(){console.log("what?"),o[me.flagDetailChanged].forEach(function(e){return e.method(n,t)})})},t.onIdentityChanged=function(n){o[me.clientIdentityChanged].length&&le(function(){o[me.clientIdentityChanged].forEach(function(e){return e.method(n)})})},t}Object.freeze(me);var he="change",Dn="internal-change";e.commonBasicLogger=J,e.createConsoleLogger=we,e.errors=D,e.initialize=function(N,x,e,o,n){var t,a,r,i,u,s,V,c,_,l=function(){if(e&&e.logger)return e.logger;return n&&n.logger&&n.logger.default||we("warn")}(),f=on(l),d=sn(f),v=Qe(e,f,n,l),g=wn(v.inspectors,l),p=v.sendEvents,m=N,h=v.hash,y=ln(o.localStorage,l),b=tn(o,m,v),k=v.sendEvents&&!v.diagnosticOptOut,q=k?bn(m):null,E=k?kn((new Date).getTime()):null,w=k?En(o,y,E,b,m,v,q):null,M=dn(o,v,m,E),D=v.eventProcessor||rn(o,v,m,E,f,b),O=gn(o,v,m),S={},P=v.streaming,z=!1,U=!1,J=!0,I=v.stateProvider,j=(i=function(e,n){(function(e){I||e&&T({kind:"identify",key:e.key,user:e,creationDate:(new Date).getTime()})})(e),!v.autoAliasingOptOut&&n&&n.anonymous&&e&&!e.anonymous&&X(e,n);B()},k={setUser:function(e){var n=u&&se(u);(u=Ee(e))&&i&&i(se(u),n)},getUser:function(){return u?se(u):null}},(q=null)&&k.setUser(q),k),K=mn(y),C=y.isEnabled()?new cn(y,m,h,j):null;function T(e){if(m&&!(I&&I.enqueueEvent&&I.enqueueEvent(e))){if("alias"!==e.kind){if(!e.user)return void(J&&(l.warn(Oe()),J=!1));J=!1}!p||U||o.isDoNotTrack()||(l.debug(xe(e.kind)),D.enqueue(e))}}function B(){g.hasListeners(me.clientIdentityChanged)&&g.onIdentityChanged(j.getUser())}function $(e,n){g.hasListeners(me.flagDetailChanged)&&g.onFlagChanged(e.key,R(n))}function H(){g.hasListeners(me.flagDetailsChanged)&&g.onFlags(Object.entries(S).map(function(e){e=ye(e,2);return{key:e[0],detail:R(e[1])}}).reduce(function(e,n){return e[n.key]=n.detail,e},{}))}function G(e,n,t,r){var o=j.getUser(),i=new Date,t={kind:"feature",key:e,user:o,value:n?n.value:null,variation:n?n.variationIndex:null,default:t,creationDate:i.getTime()},i=(o&&o.anonymous&&(t.contextKind=A(o)),S[e]);i&&(t.version=i.flagVersion||i.version,t.trackEvents=i.trackEvents,t.debugEventsUntilDate=i.debugEventsUntilDate),(r||i&&i.trackReason)&&n&&(t.reason=n.reason),T(t)}function W(e,n,t,r,o){var i,a;return S&&ge(S,e)&&S[e]&&!S[e].deleted?(a=R(i=S[e]),null!==i.value&&void 0!==i.value||(a.value=n)):a={value:n,variationIndex:null,reason:{kind:"ERROR",errorKind:"FLAG_NOT_FOUND"}},t&&G(e,a,n,r),o||B(),a}function R(e){return{value:e.value,variationIndex:void 0===e.variation?null:e.variation,reason:e.reason||null}}function A(e){return e.anonymous?"anonymousUser":"user"}function X(e,n){I||e&&n&&T({kind:"alias",key:e.key,contextKind:A(e),previousKey:n.key,previousContextKind:A(n),creationDate:(new Date).getTime()})}function Q(){var i;a=!0,j.getUser()&&(i=function(e){try{return JSON.parse(e)}catch(e){f.maybeReportError(new ke(Ue()))}},M.connect(j.getUser(),h,{ping:function(){l.debug(Te());var n=j.getUser();O.fetchFlagSettings(n,h).then(function(e){ce(n,j.getUser())&&L(e||{})}).catch(function(e){f.maybeReportError(new ue(pe(e)))})},put:function(e){e=i(e.data);e&&(l.debug(Re()),L(e))},patch:function(e){var n,t,r,o,e=i(e.data);e&&(!(n=S[e.key])||!n.version||!e.version||n.version<e.version?(l.debug(Ae(e.key)),t={},delete(r=ve({},e)).key,o=R(S[e.key]=r),t[e.key]=n?{previous:n.value,current:o}:{current:o},Z(t),$(e,r)):l.debug(Le(e.key)))},delete:function(e){var n,e=i(e.data);e&&(!S[e.key]||S[e.key].version<e.version?(l.debug(Fe(e.key)),n={},S[e.key]&&!S[e.key].deleted&&(n[e.key]={previous:S[e.key].value}),S[e.key]={version:e.version,deleted:!0},$(e,S[e.key]),Z(n)):l.debug(Ne(e.key)))}}))}function Y(){a&&(M.disconnect(),a=!1)}function L(e){var n,t,r={};if(!e)return Promise.resolve();for(n in S)ge(S,n)&&S[n]&&(e[n]&&!ce(e[n].value,S[n].value)?r[n]={previous:S[n].value,current:R(e[n])}:e[n]&&!e[n].deleted||(r[n]={previous:S[n].value}));for(t in e)ge(e,t)&&e[t]&&(!S[t]||S[t].deleted)&&(r[t]={current:R(e[t])});return S=oe({},e),H(),Z(r).catch(function(){})}function Z(o){var i,e=Object.keys(o);return 0<e.length&&(i={},e.forEach(function(e){var n=o[e].current,t=n?n.value:void 0,r=o[e].previous;f.emit(he+":"+e,t,r),i[e]=n?{current:t,previous:r}:{previous:r}}),f.emit(he,i),f.emit(Dn,S),v.sendEventsOnlyForVariation||I||e.forEach(function(e){G(e,o[e].current)})),t&&C?C.saveFlags(S):Promise.resolve()}function ee(){var e=P||r&&void 0===P;e&&!a?Q():!e&&a&&Y(),w&&w.setStreaming(e)}function ne(e){return e===he||e.substr(0,he.length+1)===he+":"}function te(e){m=e.environment,j.setUser(e.user),S=oe({},e.flags),le(F)}function F(){l.info(De()),z=!0,ee(),d.signalSuccess()}function re(e){d.signalFailure(e)}return"string"==typeof v.bootstrap&&"LOCALSTORAGE"===v.bootstrap.toUpperCase()&&(C?t=!0:l.warn(Ve())),"object"===ie(v.bootstrap)&&(s=v.bootstrap,E=Object.keys(s),!(c=s[V="$flagsState"])&&E.length&&l.warn(Ie()),!1===s.$valid&&l.warn(je()),_={},E.forEach(function(e){var n;e!==V&&"$valid"!==e&&(n={value:s[e]},c&&c[e]?n=ve(n,c[e]):n.version=0,_[e]=n)}),S=_),I?((b=I.getInitialState())?te(b):I.on("init",te),I.on("update",function(e){e.user&&j.setUser(e.user);e.flags&&L(e.flags)})):(N?K.validateUser(x).then(function(e){return j.setUser(e),"object"===ie(v.bootstrap)?F():t?C.loadFlags().then(function(e){return null==e?(S={},O.fetchFlagSettings(j.getUser(),h).then(function(e){return L(e||{})}).then(F).catch(function(e){re(new ue(pe(e)))})):(S=e,le(F),O.fetchFlagSettings(j.getUser(),h).then(L).catch(function(e){return f.maybeReportError(e)}))}):O.fetchFlagSettings(j.getUser(),h).then(function(e){S=e||{},H(),F()}).catch(function(e){S={},re(e)})}):Promise.reject(new ae(Pe()))).catch(re),{client:{waitForInitialization:function(){return d.getInitializationPromise()},waitUntilReady:function(){return d.getReadyPromise()},identify:function(e,r,n){return U?fe(Promise.resolve({}),n):I?(l.warn(Ce()),fe(Promise.resolve(de(S)),n)):fe((t&&C?C.clearFlags():Promise.resolve()).then(function(){return K.validateUser(e)}).then(function(t){return O.fetchFlagSettings(t,r).then(function(e){var n=de(e);return j.setUser(t),h=r,e?L(e).then(function(){return n}):n})}).then(function(e){return a&&Q(),e}).catch(function(e){return f.maybeReportError(e),Promise.reject(e)}),n)},getUser:function(){return j.getUser()},variation:function(e,n){return W(e,n,!0,!1,!1).value},variationDetail:function(e,n){return W(e,n,!0,!0,!1)},track:function(e,n,t){var r;"string"!=typeof e?f.maybeReportError(new be(Se(e))):(o.customEventFilter&&!o.customEventFilter(e)&&l.warn(Se(e)),r={kind:"custom",key:e,user:e=j.getUser(),url:o.getCurrentUrl(),creationDate:(new Date).getTime()},e&&e.anonymous&&(r.contextKind=A(e)),null!=n&&(r.data=n),null!=t&&(r.metricValue=t),T(r))},alias:X,on:function(e,n,t){ne(e)?(r=!0,z&&ee(),f.on(e,n,t)):f.on.apply(f,arguments)},off:function(e){var n;f.off.apply(f,arguments),ne(e)&&(n=!1,f.getEvents().forEach(function(e){ne(e)&&0<f.getEventListenerCount(e)&&(n=!0)}),n||(r=!1,a&&void 0===P&&Y()))},setStreaming:function(e){(e=null===e?void 0:e)!==P&&(P=e,ee())},flush:function(e){return fe(p?D.flush():Promise.resolve(),e)},allFlags:function(){var e={};if(S)for(var n in S)ge(S,n)&&!S[n].deleted&&(e[n]=W(n,null,!v.sendEventsOnlyForVariation,!1,!0).value);return e},close:function(e){var n;return U?fe(Promise.resolve(),e):(n=function(){U=!0,S={}},fe(Promise.resolve().then(function(){if(Y(),w&&w.stop(),p)return D.stop(),D.flush()}).then(n).catch(n),e))}},options:v,emitter:f,ident:j,logger:l,requestor:O,start:function(){p&&(w&&w.start(),D.start())},enqueueEvent:T,getFlagsInternal:function(){return S},getEnvironmentId:function(){return m},internalChangeEventName:Dn}},e.messages=He,e.utils=x,e.version="3.8.0",Object.defineProperty(e,"__esModule",{value:!0})});
2
2
  //# sourceMappingURL=ldclient-common.min.js.map