launchdarkly-js-sdk-common 3.3.0-beta1 → 3.3.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.
- package/CHANGELOG.md +23 -0
- package/README.md +2 -3
- package/dist/ldclient-common.cjs.js +1 -1
- package/dist/ldclient-common.cjs.js.map +1 -1
- package/dist/ldclient-common.es.js +1 -1
- package/dist/ldclient-common.es.js.map +1 -1
- package/dist/ldclient-common.min.js +1 -1
- package/dist/ldclient-common.min.js.map +1 -1
- package/package.json +2 -2
- package/typings.d.ts +37 -29
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(n){return(e="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})(n)}function n(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function t(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function r(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(i,!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(i).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))}))}return e}function i(e){function n(e,n){Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.message=e,this.code=n}return n.prototype=new Error,n.prototype.name=e,n.prototype.constructor=n,n}var o=i("LaunchDarklyUnexpectedResponseError"),a=i("LaunchDarklyInvalidEnvironmentIdError"),u=i("LaunchDarklyInvalidUserError"),s=i("LaunchDarklyInvalidEventKeyError"),c=i("LaunchDarklyInvalidArgumentError"),l=i("LaunchDarklyFlagFetchError");function f(e){return!(e>=400&&e<500)||(400===e||408===e||429===e)}for(var v=Object.freeze({__proto__:null,LDUnexpectedResponseError:o,LDInvalidEnvironmentIdError:a,LDInvalidUserError:u,LDInvalidEventKeyError:s,LDInvalidArgumentError:c,LDFlagFetchError:l,isHttpErrorRecoverable:f}),d=function(e){for(var n,t=e.length,r=t%3,i=[],o=0,a=t-r;o<a;o+=16383)i.push(b(e,o,o+16383>a?a:o+16383));1===r?(n=e[t-1],i.push(g[n>>2]+g[n<<4&63]+"==")):2===r&&(n=(e[t-2]<<8)+e[t-1],i.push(g[n>>10]+g[n>>4&63]+g[n<<2&63]+"="));return i.join("")},g=[],p=[],m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",y=0,h=m.length;y<h;++y)g[y]=m[y],p[m.charCodeAt(y)]=y;function b(e,n,t){for(var r,i,o=[],a=n;a<t;a+=3)r=(e[a]<<16&16711680)+(e[a+1]<<8&65280)+(255&e[a+2]),o.push(g[(i=r)>>18&63]+g[i>>12&63]+g[i>>6&63]+g[63&i]);return o.join("")}p["-".charCodeAt(0)]=62,p["_".charCodeAt(0)]=63;var k=Array.isArray,E=Object.keys,w=Object.prototype.hasOwnProperty,D=["key","secondary","ip","country","email","firstName","lastName","avatar","name"];function S(e){var n=unescape(encodeURIComponent(e));return d(function(e){for(var n=[],t=0;t<e.length;t++)n.push(e.charCodeAt(t));return n}(n))}function O(e){return S(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function P(e){return JSON.parse(JSON.stringify(e))}function U(e,n){return function e(n,t){if(n===t)return!0;if(n&&t&&"object"==typeof n&&"object"==typeof t){var r,i,o,a=k(n),u=k(t);if(a&&u){if((i=n.length)!=t.length)return!1;for(r=i;0!=r--;)if(!e(n[r],t[r]))return!1;return!0}if(a!=u)return!1;var s=n instanceof Date,c=t instanceof Date;if(s!=c)return!1;if(s&&c)return n.getTime()==t.getTime();var l=n instanceof RegExp,f=t instanceof RegExp;if(l!=f)return!1;if(l&&f)return n.toString()==t.toString();var v=E(n);if((i=v.length)!==E(t).length)return!1;for(r=i;0!=r--;)if(!w.call(t,v[r]))return!1;for(r=i;0!=r--;)if(!e(n[o=v[r]],t[o]))return!1;return!0}return n!=n&&t!=t}(e,n)}function I(e){setTimeout(e,0)}function j(e,n){var t=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:t}function R(e){var n={};for(var t in e)A(e,t)&&(n[t]={value:e[t],version:0});return n}function T(e){var n={};for(var t in e)A(e,t)&&(n[t]=e[t].value);return n}function N(e,n){for(var t,r=n.slice(0),i=[],o=e;r.length>0;){for(t=[];o>0;){var a=r.shift();if(!a)break;(o-=O(JSON.stringify(a)).length)<0&&t.length>0?r.unshift(a):t.push(a)}o=e,i.push(t)}return i}function F(e){var n=e.version||"3.3.0-beta1";return e.userAgent+"/"+n}function C(e,n){if(n&&!n.sendLDHeaders)return{};var t={"X-LaunchDarkly-User-Agent":F(e)};return n&&n.wrapperName&&(t["X-LaunchDarkly-Wrapper"]=n.wrapperVersion?n.wrapperName+"/"+n.wrapperVersion:n.wrapperName),t}function L(){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 r({},e,{},n)}),{})}function A(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function x(e){if(!e)return e;var n;for(var t in D){var i=D[t],o=e[i];void 0!==o&&"string"!=typeof o&&((n=n||r({},e))[i]=String(o))}return n||e}var V=Object.freeze({__proto__:null,btoa:S,base64URLEncode:O,clone:P,deepEquals:U,onNextTick:I,wrapPromiseCallback:j,transformValuesToVersionedValues:R,transformVersionedValuesToValues:T,chunkUserEventsForUrl:N,getLDUserAgentString:F,getLDHeaders:C,extend:L,objectHasOwnProperty:A,sanitizeUser:x});for(var q=function(e,n){return e(n={exports:{}},n.exports),n.exports}((function(e){var n="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var t=new Uint8Array(16);e.exports=function(){return n(t),t}}else{var r=new Array(16);e.exports=function(){for(var e,n=0;n<16;n++)0==(3&n)&&(e=4294967296*Math.random()),r[n]=e>>>((3&n)<<3)&255;return r}}})),_=[],J=0;J<256;++J)_[J]=(J+256).toString(16).substr(1);var z,K,M=function(e,n){var t=n||0,r=_;return[r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]],"-",r[e[t++]],r[e[t++]],"-",r[e[t++]],r[e[t++]],"-",r[e[t++]],r[e[t++]],"-",r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]],r[e[t++]]].join("")},B=0,$=0;var H=function(e,n,t){var r=n&&t||0,i=n||[],o=(e=e||{}).node||z,a=void 0!==e.clockseq?e.clockseq:K;if(null==o||null==a){var u=q();null==o&&(o=z=[1|u[0],u[1],u[2],u[3],u[4],u[5]]),null==a&&(a=K=16383&(u[6]<<8|u[7]))}var s=void 0!==e.msecs?e.msecs:(new Date).getTime(),c=void 0!==e.nsecs?e.nsecs:$+1,l=s-B+(c-$)/1e4;if(l<0&&void 0===e.clockseq&&(a=a+1&16383),(l<0||s>B)&&void 0===e.nsecs&&(c=0),c>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");B=s,$=c,K=a;var f=(1e4*(268435455&(s+=122192928e5))+c)%4294967296;i[r++]=f>>>24&255,i[r++]=f>>>16&255,i[r++]=f>>>8&255,i[r++]=255&f;var v=s/4294967296*1e4&268435455;i[r++]=v>>>8&255,i[r++]=255&v,i[r++]=v>>>24&15|16,i[r++]=v>>>16&255,i[r++]=a>>>8|128,i[r++]=255&a;for(var d=0;d<6;++d)i[r+d]=o[d];return n||M(i)};function G(e,n,t){var r="/a/"+n+".gif",i=L({"Content-Type":"application/json"},C(e,t)),o=e.httpFallbackPing,a={};return a.sendChunk=function(n,t,a,u){var s=JSON.stringify(n),c=a?null:H();return u?function n(r){var o=a?i:L({},i,{"X-LaunchDarkly-Event-Schema":"3","X-LaunchDarkly-Payload-ID":c});return e.httpRequest("POST",t,o,s).promise.then((function(e){if(e)return e.status>=400&&f(e.status)&&r?n(!1):function(e){var n={status:e.status},t=e.header("date");if(t){var r=Date.parse(t);r&&(n.serverTime=r)}return n}(e)})).catch((function(){return r?n(!1):Promise.reject()}))}(!0).catch((function(){})):(o&&o(t+r+"?d="+O(s)),Promise.resolve())},a.sendEvents=function(n,t,r){if(!e.httpRequest)return Promise.resolve();var i,o=e.httpAllowsPost();i=o?[n]:N(2e3-t.length,n);for(var u=[],s=0;s<i.length;s++)u.push(a.sendChunk(i[s],t,r,o));return Promise.all(u)},a}function X(){var e={},n=0,t=0,r={};return e.summarizeEvent=function(e){if("feature"===e.kind){var i=e.key+":"+(null!==e.variation&&void 0!==e.variation?e.variation:"")+":"+(null!==e.version&&void 0!==e.version?e.version:""),o=r[i];o?o.count=o.count+1:r[i]={count:1,key:e.key,variation:e.variation,version:e.version,value:e.value,default:e.default},(0===n||e.creationDate<n)&&(n=e.creationDate),e.creationDate>t&&(t=e.creationDate)}},e.getSummary=function(){var e={},i=!0;for(var o in r){var a=r[o],u=e[a.key];u||(u={default:a.default,counters:[]},e[a.key]=u);var s={value:a.value,count:a.count};void 0!==a.variation&&null!==a.variation&&(s.variation=a.variation),a.version?s.version=a.version:s.unknown=!0,u.counters.push(s),i=!1}return i?null:{startDate:n,endDate:t,features:e}},e.clearSummary=function(){n=0,t=0,r={}},e}function W(e){var n={},t=e.allAttributesPrivate,r=e.privateAttributeNames||[],i={key:!0,custom:!0,anonymous:!0},o={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;var n=e.privateAttributeNames||[],a=function(e,o){return Object.keys(e).reduce((function(a,u){var s=a;return o(u)&&(!function(e){return!i[e]&&(t||-1!==n.indexOf(e)||-1!==r.indexOf(e))}(u)?s[0][u]=e[u]:s[1][u]=!0),s}),[{},{}])},u=a(e,(function(e){return o[e]})),s=u[0],c=u[1];if(e.custom){var l=a(e.custom,(function(){return!0}));s.custom=l[0],c=L({},c,l[1])}var f=Object.keys(c);return f.length&&(f.sort(),s.privateAttrs=f),s},n}function Q(e){return e&&e.message?e.message:"string"==typeof e||e instanceof String?e:JSON.stringify(e)}var Y=function(){return"LaunchDarkly client initialized"},Z=" Please see https://docs.launchdarkly.com/docs/js-sdk-reference#section-initializing-the-client for instructions on SDK initialization.",ee=function(){return"Exceeded event queue capacity. Increase capacity to avoid dropping events."},ne=function(){return"Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/docs/js-sdk-reference#section-analytics-events"},te=function(e){return'Expected application/json content type but got "'+e+'"'},re=function(){return"localStorage is unavailable"},ie=function(){return"localStorage is unavailable, so anonymous user ID cannot be cached"},oe=function(e){return"network error"+(e?" ("+e+")":"")},ae=function(e){return'Custom event "'+e+'" does not exist'},ue=function(){return"Environment not found. Double check that you specified a valid environment/client-side ID."+Z},se=function(){return"No environment/client-side ID was specified."+Z},ce=function(e){return"Error fetching flag settings: "+Q(e)},le=function(){return"No user specified."+Z},fe=function(){return"Invalid user specified."+Z},ve=function(){return"LaunchDarkly client was initialized with bootstrap data that did not include flag metadata. Events may not be sent correctly."+Z},de=function(){return"LaunchDarkly bootstrap data is not available because the back end could not read the flags."},ge=function(e,n){return n?'"'+e+'" is deprecated, please use "'+n+'"':'"'+e+'" is deprecated'},pe=function(e,n,t){return"Received error "+e+(401===e?" (invalid SDK key)":"")+" for "+n+" - "+(f(e)?t:"giving up permanently")},me=function(){return"Cannot make HTTP requests in this environment."+Z},ye=function(){return"identify() has no effect here; it must be called on the main client instance"},he=function(){return"Closing stream connection"},be=function(e){return"Opening stream connection to "+e},ke=function(e,n){return"Error on stream connection: "+Q(e)+", will continue retrying every "+n+" milliseconds."},Ee=function(e){return'Ignoring unknown config option "'+e+'"'},we=function(e,n,t){return'Config option "'+e+'" should be of type '+n+", got "+t+", using default value"},De=function(e,n){return'Config option "'+e+'" should be a boolean, got '+n+", converting to boolean"},Se=function(e,n,t){return'Config option "'+e+'" was set to '+n+", changing to minimum value of "+t},Oe=function(e){return"polling for feature flags at "+e},Pe=function(){return"received ping message from stream"},Ue=function(){return"received streaming update for all flags"},Ie=function(e){return'received streaming update for flag "'+e+'"'},je=function(e){return'received streaming update for flag "'+e+'" but ignored due to version check'},Re=function(e){return'received streaming deletion for flag "'+e+'"'},Te=function(e){return'received streaming deletion for flag "'+e+'" but ignored due to version check'},Ne=function(e){return'enqueueing "'+e+'" event'},Fe=function(e){return"sending "+e+" events"},Ce=Object.freeze({__proto__:null,clientInitialized:Y,clientNotReady:function(){return"LaunchDarkly client is not ready"},eventCapacityExceeded:ee,eventWithoutUser:ne,invalidContentType:te,invalidKey:function(){return"Event key must be a string"},localStorageUnavailable:re,localStorageUnavailableForUserId:ie,networkError:oe,unknownCustomEventKey:ae,environmentNotFound:ue,environmentNotSpecified:se,errorFetchingFlags:ce,userNotSpecified:le,invalidUser:fe,bootstrapOldFormat:ve,bootstrapInvalid:de,deprecated:ge,httpErrorMessage:pe,httpUnavailable:me,identifyDisabled:ye,streamClosing:he,streamConnecting:be,streamError:ke,unknownOption:Ee,wrongOptionType:we,wrongOptionTypeBoolean:De,optionBelowMinimum:Se,debugPolling:Oe,debugStreamPing:Pe,debugStreamPut:Ue,debugStreamPatch:Ie,debugStreamPatchIgnored:je,debugStreamDelete:Re,debugStreamDeleteIgnored:Te,debugEnqueueingEvent:Ne,debugPostingEvents:Fe,debugPostingDiagnosticEvent:function(e){return"sending diagnostic event ("+e.kind+")"}});function Le(e){var n={},t={};return n.on=function(e,n,r){t[e]=t[e]||[],t[e]=t[e].concat({handler:n,context:r})},n.off=function(e,n,r){if(t[e])for(var i=0;i<t[e].length;i++)t[e][i].handler===n&&t[e][i].context===r&&(t[e]=t[e].slice(0,i).concat(t[e].slice(i+1)))},n.emit=function(e){if(t[e])for(var n=t[e].slice(0),r=0;r<n.length;r++)n[r].handler.apply(n[r].context,Array.prototype.slice.call(arguments,1))},n.getEvents=function(){return Object.keys(t)},n.getEventListenerCount=function(e){return t[e]?t[e].length:0},n.maybeReportError=function(n){n&&(t["error"]?this.emit("error",n):(e||console).error(n.message))},n}var Ae=function(e){var n=!1,t=!1,r=null,i=null,o=new Promise((function(n){e.on("ready",(function t(){e.off("ready",t),n()}))})).catch((function(){}));return{getInitializationPromise:function(){return i||(n?Promise.resolve():t?Promise.reject(r):i=new Promise((function(n,t){e.on("initialized",(function t(){e.off("initialized",t),n()})),e.on("failed",(function n(r){e.off("failed",n),t(r)}))})))},getReadyPromise:function(){return o},signalSuccess:function(){n||t||(n=!0,e.emit("initialized"),e.emit("ready"))},signalFailure:function(i){n||t||(t=!0,r=i,e.emit("failed",i),e.emit("ready")),e.maybeReportError(i)}}};function xe(e,n,t,r,i){var o={};function a(){var e="",i=r.getUser();return i&&(e=t||S(JSON.stringify(i))),"ld:"+n+":"+e}return o.loadFlags=function(){return e.get(a()).then((function(e){if(null==e)return null;try{var n=JSON.parse(e);if(n){var t=n.$schema;void 0===t||t<1?n=R(n):delete n.$schema}return n}catch(e){return o.clearFlags().then((function(){return Promise.reject(e)}))}})).catch((function(e){return i.warn("localStorage is unavailable"),Promise.reject(e)}))},o.saveFlags=function(n){var t=L({},n,{$schema:1});return e.set(a(),JSON.stringify(t)).catch((function(e){return i.warn("localStorage is unavailable"),Promise.reject(e)}))},o.clearFlags=function(){return e.clear(a()).catch((function(e){return i.warn("localStorage is unavailable"),Promise.reject(e)}))},o}function Ve(e,n,t,r){var i,o=n.streamUrl,a=n.logger,u={},s=o+"/eval/"+t,c=n.useReport,l=n.evaluationReasons,f=n.streamReconnectDelay,v=C(e,n),d=!1,g=null,p=null,m=null,y=null,h=null;function b(e){d||(a.warn(ke(e,f)),d=!0),D(!1),w(),k(f)}function k(e){p||(e?p=setTimeout(E,e):E())}function E(){var n;p=null;var r="",u={headers:v};if(e.eventSourceFactory){for(var f in null!=y&&(r="h="+y),c?e.eventSourceAllowsReport?(n=s,u.method="REPORT",u.headers["Content-Type"]="application/json",u.body=JSON.stringify(m)):(n=o+"/ping/"+t,r=""):n=s+"/"+O(JSON.stringify(m)),l&&(r=r+(r?"&":"")+"withReasons=true"),n=n+(r?"?":"")+r,w(),a.info(be(n)),i=(new Date).getTime(),g=e.eventSourceFactory(n,u),h)A(h,f)&&g.addEventListener(f,h[f]);g.onerror=b}}function w(){g&&(a.info("Closing stream connection"),g.close(),g=null)}function D(e){i&&r&&r.recordStreamInit(i,!e,(new Date).getTime()-i),i=null}return u.connect=function(e,n,t){m=e,y=n,h={};var r=function(e){h[e]=function(n){d=!1,D(!0),t[e]&&t[e](n)}};for(var i in t||{})r(i);k()},u.disconnect=function(){clearTimeout(p),p=null,w()},u.isConnected=function(){return!!(g&&e.eventSourceIsActive&&e.eventSourceIsActive(g))},u}function qe(e,n,t){var r=n.baseUrl,i=n.useReport,o=n.evaluationReasons,u=n.logger,s={},c={};function f(t,r){if(!e.httpRequest)return new Promise((function(e,n){n(new l(me()))}));var i=r?"REPORT":"GET",o=C(e,n);r&&(o["Content-Type"]="application/json");var u=c[t];u||(u=function(e){var n,t,r,i,o={addPromise:function(o,a){n=o,t&&t(),t=a,o.then((function(t){n===o&&(r(t),e&&e())}),(function(t){n===o&&(i(t),e&&e())}))}};return o.resultPromise=new Promise((function(e,n){r=e,i=n})),o}((function(){delete c[t]})),c[t]=u);var s=e.httpRequest(i,t,o,r),f=s.promise.then((function(e){if(200===e.status){if(e.header("content-type")&&"application/json"===e.header("content-type").substring(0,"application/json".length))return JSON.parse(e.body);var n=te(e.header("content-type")||"");return Promise.reject(new l(n))}return Promise.reject(function(e){return 404===e.status?new a(ue()):new l(ce(e.statusText||String(e.status)))}(e))}),(function(e){return Promise.reject(new l(oe(e)))}));return u.addPromise(f,(function(){s.cancel&&s.cancel()})),u.resultPromise}return s.fetchJSON=function(e){return f(r+e,null)},s.fetchFlagSettings=function(e,n){var a,s,c,l="";return i?(s=[r,"/sdk/evalx/",t,"/user"].join(""),c=JSON.stringify(e)):(a=O(JSON.stringify(e)),s=[r,"/sdk/evalx/",t,"/users/",a].join("")),n&&(l="h="+n),o&&(l=l+(l?"&":"")+"withReasons=true"),s=s+(l?"?":"")+l,u.debug(Oe(s)),f(s,c)},s}function _e(e,n){var t={};return t.validateUser=function(t){if(!t)return Promise.reject(new u(le()));var r=P(t);return null!==r.key&&void 0!==r.key?(r.key=r.key.toString(),Promise.resolve(r)):r.anonymous?(e?e.get("ld:$anonUserId").catch((function(){return null})):Promise.resolve(null)).then((function(t){if(t)return r.key=t,r;var i=H();return r.key=i,function(t){return e?e.set("ld:$anonUserId",t).catch((function(){n.warn("localStorage is unavailable, so anonymous user ID cannot be cached")})):Promise.resolve()}(i).then((function(){return r}))})):Promise.reject(new u(fe()))},t}var Je={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},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}};function ze(n,t,r,i){var o=L({logger:{default:i}},Je,r),a={all_attributes_private:"allAttributesPrivate",private_attribute_names:"privateAttributeNames",samplingInterval:null};function u(e){I((function(){t&&t.maybeReportError(new c(e))}))}var s=L({},n||{});return function(e){var n=e;Object.keys(a).forEach((function(e){if(void 0!==n[e]){var t=a[e];i&&i.warn(ge(e,t)),t&&(void 0===n[t]&&(n[t]=n[e]),delete n[e])}}))}(s),s=function(n){var t=L({},n),r=function(n){if(null===n)return"any";if(void 0!==n){if(Array.isArray(n))return"array";var t=e(n);return"boolean"===t||"string"===t||"number"===t||"function"===t?t:"object"}};return Object.keys(n).forEach((function(e){var i=n[e];if(null!=i){var a=o[e];if(void 0===a)u(Ee(e));else{var s=a.type||r(a.default);if("any"!==s){var c=s.split("|"),l=r(i);c.indexOf(l)<0?"boolean"===s?(t[e]=!!i,u(De(e,l))):(u(we(e,s,l)),t[e]=a.default):"number"===l&&void 0!==a.minimum&&i<a.minimum&&(u(Se(e,i,a.minimum)),t[e]=a.minimum)}}}})),t}(s=function(e){var n=L({},e);return Object.keys(o).forEach((function(e){void 0!==n[e]&&null!==n[e]||(n[e]=o[e]&&o[e].default)})),n}(s))}var Ke=Object.freeze({__proto__:null,baseOptionDefs:Je,validate:ze}).baseOptionDefs;var Me=function(e){var n={diagnosticId:H()};return e&&(n.sdkKeySuffix=e.length>6?e.substring(e.length-6):e),n},Be=function(e){var n,t,r,i;function o(e){n=e,t=0,r=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){var r={timestamp:e,failed:n,durationMillis:t};i.push(r)},reset:o}},$e=function(e,n,t,i,o,a){var u,s,c=!!e.diagnosticUseCombinedEvent,l="ld:"+i+":$diagnostics",f=o.eventsUrl+"/events/diagnostic/"+i,v=o.diagnosticRecordingInterval,d=n,g=!!o.streaming,p={};function m(){return{sdk:b(),configuration:(n={customBaseURI:o.baseUrl!==Ke.baseUrl.default,customStreamURI:o.streamUrl!==Ke.streamUrl.default,customEventsURI:o.eventsUrl!==Ke.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},n),platform:e.diagnosticPlatformData};var n}function y(e){o.logger&&o.logger.debug(Ce.debugPostingDiagnosticEvent(e)),t.sendEvents(e,f,!0).then((function(){})).catch((function(){}))}function h(){var n,t;y((n=(new Date).getTime(),t=r({kind:c?"diagnostic-combined":"diagnostic",id:a,creationDate:n},d.getProps()),c&&(t=r({},t,{},m())),d.reset(n),t)),s=setTimeout(h,v),u=(new Date).getTime(),c&&function(){if(e.localStorage){var n=r({},d.getProps());e.localStorage.set(l,JSON.stringify(n),(function(){}))}}()}function b(){var n=r({},e.diagnosticSdkData);return o.wrapperName&&(n.wrapperName=o.wrapperName),o.wrapperVersion&&(n.wrapperVersion=o.wrapperVersion),n}return p.start=function(){c?function(n){if(!e.localStorage)return n(!1);e.localStorage.get(l).then((function(e){if(e)try{var t=JSON.parse(e);d.setProps(t),u=t.dataSinceDate}catch(e){}n(!0)})).catch((function(){n(!1)}))}((function(e){if(e){var n=(u||0)+v,t=(new Date).getTime();t>=n?h():s=setTimeout(h,n-t)}else 0===Math.floor(4*Math.random())?h():s=setTimeout(h,v)})):(y(r({kind:"diagnostic-init",id:a,creationDate:d.getProps().dataSinceDate},m())),s=setTimeout(h,v))},p.stop=function(){s&&clearTimeout(s)},p.setStreaming=function(e){g=e},p};function He(e,n){var t,r=["debug","info","warn","error"];t=null!=n?""===n?"":n+" ":"LD: ";var i=0;e&&(i="none"===e?100:r.indexOf(e));var o={};function a(e,n,o){if(e>=i&&console){var a=console[n];if(a){var u=e<r.length?r[e]:"?";a.call(console,t+"["+u+"] "+o)}}}return o.debug=function(e){return a(0,"log",e)},o.info=function(e){return a(1,"info",e)},o.warn=function(e){return a(2,"warn",e)},o.error=function(e){return a(3,"error",e)},o}function Ge(n,t,i,u,c){var v,d,g,p,m=function(){if(i&&i.logger)return i.logger;return c&&c.logger&&c.logger.default||He("warn")}(),y=Le(m),h=Ae(y),b=ze(i,y,c,m),k=b.sendEvents,E=n,w=b.hash,D=G(u,E,b),S=b.sendEvents&&!b.diagnosticOptOut,O=S?Me(E):null,R=S?Be((new Date).getTime()):null,N=S?$e(u,R,D,E,b,O):null,F=Ve(u,b,E,R),C=b.eventProcessor||function(e,n,t){var r,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,u=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,s={},c=u||G(e,t,n),l=n.eventsUrl+"/events/bulk/"+t,v=X(),d=W(n),g=n.inlineUsersInEvents,p=n.samplingInterval,m=n.eventCapacity,y=n.flushInterval,h=n.logger,b=[],k=0,E=!1,w=!1;function D(){return 0===p||0===Math.floor(Math.random()*p)}function S(e){return!!e.debugEventsUntilDate&&(e.debugEventsUntilDate>k&&e.debugEventsUntilDate>(new Date).getTime())}function O(e){var n=L({},e);return"alias"===e.kind?n:(g||"identify"===e.kind?n.user=d.filterUser(e.user):(n.userKey=e.user.key,delete n.user),"feature"===e.kind&&(delete n.trackEvents,delete n.debugEventsUntilDate),n)}function P(e){b.length<m?(b.push(e),w=!1):(w||(w=!0,h.warn("Exceeded event queue capacity. Increase capacity to avoid dropping events.")),i&&i.incrementDroppedEvents())}return s.enqueue=function(e){if(!E){var n=!1,t=!1;if(v.summarizeEvent(e),"feature"===e.kind?D()&&(n=!!e.trackEvents,t=S(e)):n=D(),n&&P(O(e)),t){var r=L({},e,{kind:"debug"});delete r.trackEvents,delete r.debugEventsUntilDate,delete r.variation,P(r)}}},s.flush=function(){if(E)return Promise.resolve();var e=b,n=v.getSummary();return v.clearSummary(),n&&(n.kind="summary",e.push(n)),i&&i.setEventsInLastBatch(e.length),0===e.length?Promise.resolve():(b=[],h.debug(Fe(e.length)),c.sendEvents(e,l).then((function(e){e&&(e.serverTime&&(k=e.serverTime),f(e.status)||(E=!0),e.status>=400&&I((function(){a.maybeReportError(new o(pe(e.status,"event posting","some events were dropped")))})))})))},s.start=function(){r=setTimeout((function e(){s.flush(),r=setTimeout(e,y)}),y)},s.stop=function(){clearTimeout(r)},s}(u,b,E,R,y,D),V=qe(u,b,E),q={},_={},J=b.streaming,z=!1,K=!1,M=!0,B=b.stateProvider,$=function(e,n){var t,r={};return r.setUser=function(e){var r=t&&P(t);(t=x(e))&&n&&n(P(t),r)},r.getUser=function(){return t?P(t):null},e&&r.setUser(e),r}(null,(function(e,n){(function(e){if(B)return;e&&Q({kind:"identify",key:e.key,user:e,creationDate:(new Date).getTime()})})(e),!b.autoAliasingOptOut&&n&&n.anonymous&&e&&!e.anonymous&&te(e,n)})),H=_e(u.localStorage,m);function Q(e){if(E&&!(B&&B.enqueueEvent&&B.enqueueEvent(e))){if("alias"!==e.kind){if(!e.user)return void(M&&(m.warn("Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/docs/js-sdk-reference#section-analytics-events"),M=!1));M=!1}!k||K||u.isDoNotTrack()||(m.debug(Ne(e.kind)),C.enqueue(e))}}function Y(e,n,t,r){var i=$.getUser(),o=new Date,a=n?n.value:null;if(!b.allowFrequentDuplicateEvents){var u=JSON.stringify(a)+(i&&i.key?i.key:"")+e,s=q[u];if(s&&o-s<3e5)return;q[u]=o}var c={kind:"feature",key:e,user:i,value:a,variation:n?n.variationIndex:null,default:t,creationDate:o.getTime()};i&&i.anonymous&&(c.contextKind=ne(i));var l=_[e];l&&(c.version=l.flagVersion?l.flagVersion:l.version,c.trackEvents=l.trackEvents,c.debugEventsUntilDate=l.debugEventsUntilDate),(r||l&&l.trackReason)&&n&&(c.reason=n.reason),Q(c)}function Z(e,n,t,r){var i;if(_&&A(_,e)&&_[e]&&!_[e].deleted){var o=_[e];i=ee(o),null!==o.value&&void 0!==o.value||(i.value=n)}else i={value:n,variationIndex:null,reason:{kind:"ERROR",errorKind:"FLAG_NOT_FOUND"}};return t&&Y(e,i,n,r),i}function ee(e){return{value:e.value,variationIndex:void 0===e.variation?null:e.variation,reason:e.reason||null}}function ne(e){return e.anonymous?"anonymousUser":"user"}function te(e,n){B||e&&n&&Q({kind:"alias",key:e.key,contextKind:ne(e),previousKey:n.key,previousContextKind:ne(n),creationDate:(new Date).getTime()})}function re(){d=!0,$.getUser()&&F.connect($.getUser(),w,{ping:function(){m.debug("received ping message from stream");var e=$.getUser();V.fetchFlagSettings(e,w).then((function(n){U(e,$.getUser())&&oe(n||{})})).catch((function(e){y.maybeReportError(new l(ce(e)))}))},put:function(e){var n=JSON.parse(e.data);m.debug("received streaming update for all flags"),oe(n)},patch:function(e){var n=JSON.parse(e.data),t=_[n.key];if(!t||!t.version||!n.version||t.version<n.version){m.debug(Ie(n.key));var r={},i=L({},n);delete i.key,_[n.key]=i;var o=ee(i);r[n.key]=t?{previous:t.value,current:o}:{current:o},ue(r)}else m.debug(je(n.key))},delete:function(e){var n=JSON.parse(e.data);if(!_[n.key]||_[n.key].version<n.version){m.debug(Re(n.key));var t={};_[n.key]&&!_[n.key].deleted&&(t[n.key]={previous:_[n.key].value}),_[n.key]={version:n.version,deleted:!0},ue(t)}else m.debug(Te(n.key))}})}function ie(){d&&(F.disconnect(),d=!1)}function oe(e){var n={};if(!e)return Promise.resolve();for(var t in _)A(_,t)&&_[t]&&(e[t]&&!U(e[t].value,_[t].value)?n[t]={previous:_[t].value,current:ee(e[t])}:e[t]&&!e[t].deleted||(n[t]={previous:_[t].value}));for(var i in e)A(e,i)&&e[i]&&(!_[i]||_[i].deleted)&&(n[i]={current:ee(e[i])});return _=r({},e),ue(n).catch((function(){}))}function ue(e){var n=Object.keys(e);if(n.length>0){var t={};n.forEach((function(n){var r=e[n].current,i=r?r.value:void 0,o=e[n].previous;y.emit("change:"+n,i,o),t[n]=r?{current:i,previous:o}:{previous:o}})),y.emit("change",t),y.emit("internal-change",_),b.sendEventsOnlyForVariation||B||n.forEach((function(n){Y(n,e[n].current)}))}return v&&p?p.saveFlags(_).catch((function(){return null})):Promise.resolve()}function le(){var e=J||g&&void 0===J;e&&!d?re():!e&&d&&ie(),N&&N.setStreaming(e)}function fe(e){return"change"===e||"change:"===e.substr(0,"change".length+1)}if(u.localStorage&&(p=new xe(u.localStorage,E,w,$,m)),"string"==typeof b.bootstrap&&"LOCALSTORAGE"===b.bootstrap.toUpperCase()&&(p?v=!0:m.warn("localStorage is unavailable")),"object"===e(b.bootstrap)&&(_=function(e){var n=Object.keys(e),t=e.$flagsState;!t&&n.length&&m.warn(ve()),!1===e.$valid&&m.warn("LaunchDarkly bootstrap data is not available because the back end could not read the flags.");var r={};return n.forEach((function(n){if("$flagsState"!==n&&"$valid"!==n){var i={value:e[n]};t&&t[n]?i=L(i,t[n]):i.version=0,r[n]=i}})),r}(b.bootstrap)),B){var de=B.getInitialState();de?ge(de):B.on("init",ge),B.on("update",(function(e){e.user&&$.setUser(e.user);e.flags&&oe(e.flags)}))}else(function(){if(!n)return Promise.reject(new a(se()));return H.validateUser(t).then((function(n){return $.setUser(n),"object"===e(b.bootstrap)?me():v?p.loadFlags().catch((function(){return null})).then((function(e){return null==e?(_={},V.fetchFlagSettings($.getUser(),w).then((function(e){return oe(e||{})})).then(me).catch((function(e){ye(new l(ce(e)))}))):(_=e,I(me),V.fetchFlagSettings($.getUser(),w).then((function(e){return oe(e)})).catch((function(e){return y.maybeReportError(e)})))})):V.fetchFlagSettings($.getUser(),w).then((function(e){_=e||{},me()})).catch((function(e){_={},ye(e)}))}))})().catch(ye);function ge(e){E=e.environment,$.setUser(e.user),_=r({},e.flags),I(me)}function me(){m.info("LaunchDarkly client initialized"),z=!0,le(),h.signalSuccess()}function ye(e){h.signalFailure(e)}return{client:{waitForInitialization:function(){return h.getInitializationPromise()},waitUntilReady:function(){return h.getReadyPromise()},identify:function(e,n,t){return K?j(Promise.resolve({}),t):B?(m.warn("identify() has no effect here; it must be called on the main client instance"),j(Promise.resolve(T(_)),t)):j((v&&p?p.clearFlags():Promise.resolve()).then((function(){return H.validateUser(e)})).then((function(e){return V.fetchFlagSettings(e,n).then((function(t){var r=T(t);return $.setUser(e),w=n,t?oe(t).then((function(){return r})):r}))})).then((function(e){return d&&re(),e})).catch((function(e){return y.maybeReportError(e),Promise.reject(e)})),t)},getUser:function(){return $.getUser()},variation:function(e,n){return Z(e,n,!0,!1).value},variationDetail:function(e,n){return Z(e,n,!0,!0)},track:function(e,n,t){if("string"==typeof e){u.customEventFilter&&!u.customEventFilter(e)&&m.warn(ae(e));var r=$.getUser(),i={kind:"custom",key:e,user:r,url:u.getCurrentUrl(),creationDate:(new Date).getTime()};r&&r.anonymous&&(i.contextKind=ne(r)),null!=n&&(i.data=n),null!=t&&(i.metricValue=t),Q(i)}else y.maybeReportError(new s(ae(e)))},alias:te,on:function(e,n,t){fe(e)?(g=!0,z&&le(),y.on(e,n,t)):y.on.apply(y,arguments)},off:function(e){if(y.off.apply(y,arguments),fe(e)){var n=!1;y.getEvents().forEach((function(e){fe(e)&&y.getEventListenerCount(e)>0&&(n=!0)})),n||(g=!1,d&&void 0===J&&ie())}},setStreaming:function(e){var n=null===e?void 0:e;n!==J&&(J=n,le())},flush:function(e){return j(k?C.flush():Promise.resolve(),e)},allFlags:function(){var e={};if(!_)return e;for(var n in _)A(_,n)&&(e[n]=Z(n,null,!b.sendEventsOnlyForVariation).value);return e},close:function(e){if(K)return j(Promise.resolve(),e);var n=function(){K=!0,_={}};return j(Promise.resolve().then((function(){if(ie(),N&&N.stop(),k)return C.stop(),C.flush()})).then(n).catch(n),e)}},options:b,emitter:y,ident:$,logger:m,requestor:V,start:function(){k&&(N&&N.start(),C.start())},enqueueEvent:Q,getFlagsInternal:function(){return _},getEnvironmentId:function(){return E},internalChangeEventName:"internal-change"}}var Xe="3.3.0-beta1";export{He as createConsoleLogger,v as errors,Ge as initialize,Ce as messages,V as utils,Xe as version};
|
|
1
|
+
function e(n){return(e="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})(n)}function n(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function t(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function r(e){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?t(i,!0).forEach((function(t){n(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):t(i).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))}))}return e}function i(e){function n(e,n){Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor),this.message=e,this.code=n}return n.prototype=new Error,n.prototype.name=e,n.prototype.constructor=n,n}var a=i("LaunchDarklyUnexpectedResponseError"),o=i("LaunchDarklyInvalidEnvironmentIdError"),u=i("LaunchDarklyInvalidUserError"),s=i("LaunchDarklyInvalidEventKeyError"),c=i("LaunchDarklyInvalidArgumentError"),l=i("LaunchDarklyFlagFetchError");function f(e){return!(e>=400&&e<500)||(400===e||408===e||429===e)}for(var v=Object.freeze({__proto__:null,LDUnexpectedResponseError:a,LDInvalidEnvironmentIdError:o,LDInvalidUserError:u,LDInvalidEventKeyError:s,LDInvalidArgumentError:c,LDFlagFetchError:l,isHttpErrorRecoverable:f}),d=function(e){for(var n,t=e.length,r=t%3,i=[],a=0,o=t-r;a<o;a+=16383)i.push(b(e,a,a+16383>o?o:a+16383));1===r?(n=e[t-1],i.push(g[n>>2]+g[n<<4&63]+"==")):2===r&&(n=(e[t-2]<<8)+e[t-1],i.push(g[n>>10]+g[n>>4&63]+g[n<<2&63]+"="));return i.join("")},g=[],p=[],m="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,y=m.length;h<y;++h)g[h]=m[h],p[m.charCodeAt(h)]=h;function b(e,n,t){for(var r,i,a=[],o=n;o<t;o+=3)r=(e[o]<<16&16711680)+(e[o+1]<<8&65280)+(255&e[o+2]),a.push(g[(i=r)>>18&63]+g[i>>12&63]+g[i>>6&63]+g[63&i]);return a.join("")}p["-".charCodeAt(0)]=62,p["_".charCodeAt(0)]=63;var k=Array.isArray,E=Object.keys,w=Object.prototype.hasOwnProperty,D=["key","secondary","ip","country","email","firstName","lastName","avatar","name"];function S(e){var n=unescape(encodeURIComponent(e));return d(function(e){for(var n=[],t=0;t<e.length;t++)n.push(e.charCodeAt(t));return n}(n))}function U(e){return S(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}function O(e){return JSON.parse(JSON.stringify(e))}function P(e,n){return function e(n,t){if(n===t)return!0;if(n&&t&&"object"==typeof n&&"object"==typeof t){var r,i,a,o=k(n),u=k(t);if(o&&u){if((i=n.length)!=t.length)return!1;for(r=i;0!=r--;)if(!e(n[r],t[r]))return!1;return!0}if(o!=u)return!1;var s=n instanceof Date,c=t instanceof Date;if(s!=c)return!1;if(s&&c)return n.getTime()==t.getTime();var l=n instanceof RegExp,f=t instanceof RegExp;if(l!=f)return!1;if(l&&f)return n.toString()==t.toString();var v=E(n);if((i=v.length)!==E(t).length)return!1;for(r=i;0!=r--;)if(!w.call(t,v[r]))return!1;for(r=i;0!=r--;)if(!e(n[a=v[r]],t[a]))return!1;return!0}return n!=n&&t!=t}(e,n)}function I(e){setTimeout(e,0)}function j(e,n){var t=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:t}function R(e){var n={};for(var t in e)L(e,t)&&(n[t]={value:e[t],version:0});return n}function T(e){var n={};for(var t in e)L(e,t)&&(n[t]=e[t].value);return n}function A(e,n){for(var t,r=n.slice(0),i=[],a=e;r.length>0;){for(t=[];a>0;){var o=r.shift();if(!o)break;(a-=U(JSON.stringify(o)).length)<0&&t.length>0?r.unshift(o):t.push(o)}a=e,i.push(t)}return i}function N(e){var n=e.version||"3.3.3";return e.userAgent+"/"+n}function C(e,n){if(n&&!n.sendLDHeaders)return{};var t={"X-LaunchDarkly-User-Agent":N(e)};return n&&n.wrapperName&&(t["X-LaunchDarkly-Wrapper"]=n.wrapperVersion?n.wrapperName+"/"+n.wrapperVersion:n.wrapperName),t}function F(){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 r({},e,{},n)}),{})}function L(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function x(e){if(!e)return e;var n;for(var t in D){var i=D[t],a=e[i];void 0!==a&&"string"!=typeof a&&((n=n||r({},e))[i]=String(a))}return n||e}var _=Object.freeze({__proto__:null,btoa:S,base64URLEncode:U,clone:O,deepEquals:P,onNextTick:I,wrapPromiseCallback:j,transformValuesToVersionedValues:R,transformVersionedValuesToValues:T,chunkUserEventsForUrl:A,getLDUserAgentString:N,getLDHeaders:C,extend:F,objectHasOwnProperty:L,sanitizeUser:x}),q=require("uuid").v1;function V(e,n,t){var r="/a/"+n+".gif",i=F({"Content-Type":"application/json"},C(e,t)),a=e.httpFallbackPing,o={};return o.sendChunk=function(n,t,o,u){var s=JSON.stringify(n),c=o?null:q();return u?function n(r){var a=o?i:F({},i,{"X-LaunchDarkly-Event-Schema":"3","X-LaunchDarkly-Payload-ID":c});return e.httpRequest("POST",t,a,s).promise.then((function(e){if(e)return e.status>=400&&f(e.status)&&r?n(!1):function(e){var n={status:e.status},t=e.header("date");if(t){var r=Date.parse(t);r&&(n.serverTime=r)}return n}(e)})).catch((function(){return r?n(!1):Promise.reject()}))}(!0).catch((function(){})):(a&&a(t+r+"?d="+U(s)),Promise.resolve())},o.sendEvents=function(n,t,r){if(!e.httpRequest)return Promise.resolve();var i,a=e.httpAllowsPost();i=a?[n]:A(2e3-t.length,n);for(var u=[],s=0;s<i.length;s++)u.push(o.sendChunk(i[s],t,r,a));return Promise.all(u)},o}function z(){var e={},n=0,t=0,r={};return e.summarizeEvent=function(e){if("feature"===e.kind){var i=e.key+":"+(null!==e.variation&&void 0!==e.variation?e.variation:"")+":"+(null!==e.version&&void 0!==e.version?e.version:""),a=r[i];a?a.count=a.count+1:r[i]={count:1,key:e.key,variation:e.variation,version:e.version,value:e.value,default:e.default},(0===n||e.creationDate<n)&&(n=e.creationDate),e.creationDate>t&&(t=e.creationDate)}},e.getSummary=function(){var e={},i=!0;for(var a in r){var o=r[a],u=e[o.key];u||(u={default:o.default,counters:[]},e[o.key]=u);var s={value:o.value,count:o.count};void 0!==o.variation&&null!==o.variation&&(s.variation=o.variation),o.version?s.version=o.version:s.unknown=!0,u.counters.push(s),i=!1}return i?null:{startDate:n,endDate:t,features:e}},e.clearSummary=function(){n=0,t=0,r={}},e}function J(e){var n={},t=e.allAttributesPrivate,r=e.privateAttributeNames||[],i={key:!0,custom:!0,anonymous:!0},a={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;var n=e.privateAttributeNames||[],o=function(e,a){return Object.keys(e).reduce((function(o,u){var s=o;return a(u)&&(!function(e){return!i[e]&&(t||-1!==n.indexOf(e)||-1!==r.indexOf(e))}(u)?s[0][u]=e[u]:s[1][u]=!0),s}),[{},{}])},u=o(e,(function(e){return a[e]})),s=u[0],c=u[1];if(e.custom){var l=o(e.custom,(function(){return!0}));s.custom=l[0],c=F({},c,l[1])}var f=Object.keys(c);return f.length&&(f.sort(),s.privateAttrs=f),s},n}function M(e){return e&&e.message?e.message:"string"==typeof e||e instanceof String?e:JSON.stringify(e)}var K=function(){return"LaunchDarkly client initialized"},$=" Please see https://docs.launchdarkly.com/sdk/client-side/javascript#initializing-the-client for instructions on SDK initialization.",B=function(){return"Exceeded event queue capacity. Increase capacity to avoid dropping events."},H=function(){return"Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/sdk/features/identify#javascript"},G=function(e){return'Expected application/json content type but got "'+e+'"'},X=function(){return"localStorage is unavailable"},W=function(){return"localStorage is unavailable, so anonymous user ID cannot be cached"},Q=function(e){return"network error"+(e?" ("+e+")":"")},Y=function(e){return'Custom event "'+e+'" does not exist'},Z=function(){return"Environment not found. Double check that you specified a valid environment/client-side ID."+$},ee=function(){return"No environment/client-side ID was specified."+$},ne=function(e){return"Error fetching flag settings: "+M(e)},te=function(){return"No user specified."+$},re=function(){return"Invalid user specified."+$},ie=function(){return"LaunchDarkly client was initialized with bootstrap data that did not include flag metadata. Events may not be sent correctly."+$},ae=function(){return"LaunchDarkly bootstrap data is not available because the back end could not read the flags."},oe=function(e,n){return n?'"'+e+'" is deprecated, please use "'+n+'"':'"'+e+'" is deprecated'},ue=function(e,n,t){return"Received error "+e+(401===e?" (invalid SDK key)":"")+" for "+n+" - "+(f(e)?t:"giving up permanently")},se=function(){return"Cannot make HTTP requests in this environment."+$},ce=function(){return"identify() has no effect here; it must be called on the main client instance"},le=function(){return"Closing stream connection"},fe=function(e){return"Opening stream connection to "+e},ve=function(e,n){return"Error on stream connection: "+M(e)+", will continue retrying every "+n+" milliseconds."},de=function(e){return'Ignoring unknown config option "'+e+'"'},ge=function(e,n,t){return'Config option "'+e+'" should be of type '+n+", got "+t+", using default value"},pe=function(e,n){return'Config option "'+e+'" should be a boolean, got '+n+", converting to boolean"},me=function(e,n,t){return'Config option "'+e+'" was set to '+n+", changing to minimum value of "+t},he=function(e){return"polling for feature flags at "+e},ye=function(){return"received ping message from stream"},be=function(){return"received streaming update for all flags"},ke=function(e){return'received streaming update for flag "'+e+'"'},Ee=function(e){return'received streaming update for flag "'+e+'" but ignored due to version check'},we=function(e){return'received streaming deletion for flag "'+e+'"'},De=function(e){return'received streaming deletion for flag "'+e+'" but ignored due to version check'},Se=function(e){return'enqueueing "'+e+'" event'},Ue=function(e){return"sending "+e+" events"},Oe=Object.freeze({__proto__:null,clientInitialized:K,clientNotReady:function(){return"LaunchDarkly client is not ready"},eventCapacityExceeded:B,eventWithoutUser:H,invalidContentType:G,invalidKey:function(){return"Event key must be a string"},localStorageUnavailable:X,localStorageUnavailableForUserId:W,networkError:Q,unknownCustomEventKey:Y,environmentNotFound:Z,environmentNotSpecified:ee,errorFetchingFlags:ne,userNotSpecified:te,invalidUser:re,bootstrapOldFormat:ie,bootstrapInvalid:ae,deprecated:oe,httpErrorMessage:ue,httpUnavailable:se,identifyDisabled:ce,streamClosing:le,streamConnecting:fe,streamError:ve,unknownOption:de,wrongOptionType:ge,wrongOptionTypeBoolean:pe,optionBelowMinimum:me,debugPolling:he,debugStreamPing:ye,debugStreamPut:be,debugStreamPatch:ke,debugStreamPatchIgnored:Ee,debugStreamDelete:we,debugStreamDeleteIgnored:De,debugEnqueueingEvent:Se,debugPostingEvents:Ue,debugPostingDiagnosticEvent:function(e){return"sending diagnostic event ("+e.kind+")"}});function Pe(e){var n={},t={};return n.on=function(e,n,r){t[e]=t[e]||[],t[e]=t[e].concat({handler:n,context:r})},n.off=function(e,n,r){if(t[e])for(var i=0;i<t[e].length;i++)t[e][i].handler===n&&t[e][i].context===r&&(t[e]=t[e].slice(0,i).concat(t[e].slice(i+1)))},n.emit=function(e){if(t[e])for(var n=t[e].slice(0),r=0;r<n.length;r++)n[r].handler.apply(n[r].context,Array.prototype.slice.call(arguments,1))},n.getEvents=function(){return Object.keys(t)},n.getEventListenerCount=function(e){return t[e]?t[e].length:0},n.maybeReportError=function(n){n&&(t["error"]?this.emit("error",n):(e||console).error(n.message))},n}var Ie=function(e){var n=!1,t=!1,r=null,i=null,a=new Promise((function(n){e.on("ready",(function t(){e.off("ready",t),n()}))})).catch((function(){}));return{getInitializationPromise:function(){return i||(n?Promise.resolve():t?Promise.reject(r):i=new Promise((function(n,t){e.on("initialized",(function t(){e.off("initialized",t),n()})),e.on("failed",(function n(r){e.off("failed",n),t(r)}))})))},getReadyPromise:function(){return a},signalSuccess:function(){n||t||(n=!0,e.emit("initialized"),e.emit("ready"))},signalFailure:function(i){n||t||(t=!0,r=i,e.emit("failed",i),e.emit("ready")),e.maybeReportError(i)}}};function je(e,n,t,r,i){var a={};function o(){var e="",i=r.getUser();return i&&(e=t||S(JSON.stringify(i))),"ld:"+n+":"+e}return a.loadFlags=function(){return e.get(o()).then((function(e){if(null==e)return null;try{var n=JSON.parse(e);if(n){var t=n.$schema;void 0===t||t<1?n=R(n):delete n.$schema}return n}catch(e){return a.clearFlags().then((function(){return Promise.reject(e)}))}})).catch((function(e){return i.warn("localStorage is unavailable"),Promise.reject(e)}))},a.saveFlags=function(n){var t=F({},n,{$schema:1});return e.set(o(),JSON.stringify(t)).catch((function(e){return i.warn("localStorage is unavailable"),Promise.reject(e)}))},a.clearFlags=function(){return e.clear(o()).catch((function(e){return i.warn("localStorage is unavailable"),Promise.reject(e)}))},a}function Re(e,n,t,r){var i,a=n.streamUrl,o=n.logger,u={},s=a+"/eval/"+t,c=n.useReport,l=n.evaluationReasons,f=n.streamReconnectDelay,v=C(e,n),d=!1,g=null,p=null,m=null,h=null,y=null;function b(e){d||(o.warn(ve(e,f)),d=!0),D(!1),w(),k(f)}function k(e){p||(e?p=setTimeout(E,e):E())}function E(){var n;p=null;var r="",u={headers:v,readTimeoutMillis:3e5};if(e.eventSourceFactory){for(var f in null!=h&&(r="h="+h),c?e.eventSourceAllowsReport?(n=s,u.method="REPORT",u.headers["Content-Type"]="application/json",u.body=JSON.stringify(m)):(n=a+"/ping/"+t,r=""):n=s+"/"+U(JSON.stringify(m)),l&&(r=r+(r?"&":"")+"withReasons=true"),n=n+(r?"?":"")+r,w(),o.info(fe(n)),i=(new Date).getTime(),g=e.eventSourceFactory(n,u),y)L(y,f)&&g.addEventListener(f,y[f]);g.onerror=b}}function w(){g&&(o.info("Closing stream connection"),g.close(),g=null)}function D(e){i&&r&&r.recordStreamInit(i,!e,(new Date).getTime()-i),i=null}return u.connect=function(e,n,t){m=e,h=n,y={};var r=function(e){y[e]=function(n){d=!1,D(!0),t[e]&&t[e](n)}};for(var i in t||{})r(i);k()},u.disconnect=function(){clearTimeout(p),p=null,w()},u.isConnected=function(){return!!(g&&e.eventSourceIsActive&&e.eventSourceIsActive(g))},u}function Te(e,n,t){var r=n.baseUrl,i=n.useReport,a=n.evaluationReasons,u=n.logger,s={},c={};function f(t,r){if(!e.httpRequest)return new Promise((function(e,n){n(new l(se()))}));var i=r?"REPORT":"GET",a=C(e,n);r&&(a["Content-Type"]="application/json");var u=c[t];u||(u=function(e){var n,t,r,i,a={addPromise:function(a,o){n=a,t&&t(),t=o,a.then((function(t){n===a&&(r(t),e&&e())}),(function(t){n===a&&(i(t),e&&e())}))}};return a.resultPromise=new Promise((function(e,n){r=e,i=n})),a}((function(){delete c[t]})),c[t]=u);var s=e.httpRequest(i,t,a,r),f=s.promise.then((function(e){if(200===e.status){if(e.header("content-type")&&"application/json"===e.header("content-type").substring(0,"application/json".length))return JSON.parse(e.body);var n=G(e.header("content-type")||"");return Promise.reject(new l(n))}return Promise.reject(function(e){return 404===e.status?new o(Z()):new l(ne(e.statusText||String(e.status)))}(e))}),(function(e){return Promise.reject(new l(Q(e)))}));return u.addPromise(f,(function(){s.cancel&&s.cancel()})),u.resultPromise}return s.fetchJSON=function(e){return f(r+e,null)},s.fetchFlagSettings=function(e,n){var o,s,c,l="";return i?(s=[r,"/sdk/evalx/",t,"/user"].join(""),c=JSON.stringify(e)):(o=U(JSON.stringify(e)),s=[r,"/sdk/evalx/",t,"/users/",o].join("")),n&&(l="h="+n),a&&(l=l+(l?"&":"")+"withReasons=true"),s=s+(l?"?":"")+l,u.debug(he(s)),f(s,c)},s}var Ae=require("uuid").v1;function Ne(e,n){var t={};return t.validateUser=function(t){if(!t)return Promise.reject(new u(te()));var r=O(t);return null!==r.key&&void 0!==r.key?(r.key=r.key.toString(),Promise.resolve(r)):r.anonymous?(e?e.get("ld:$anonUserId").catch((function(){return null})):Promise.resolve(null)).then((function(t){if(t)return r.key=t,r;var i=Ae();return r.key=i,function(t){return e?e.set("ld:$anonUserId",t).catch((function(){n.warn("localStorage is unavailable, so anonymous user ID cannot be cached")})):Promise.resolve()}(i).then((function(){return r}))})):Promise.reject(new u(re()))},t}var Ce={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},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}};function Fe(n,t,r,i){var a=F({logger:{default:i}},Ce,r),o={all_attributes_private:"allAttributesPrivate",private_attribute_names:"privateAttributeNames",samplingInterval:null};function u(e){I((function(){t&&t.maybeReportError(new c(e))}))}var s=F({},n||{});return function(e){var n=e;Object.keys(o).forEach((function(e){if(void 0!==n[e]){var t=o[e];i&&i.warn(oe(e,t)),t&&(void 0===n[t]&&(n[t]=n[e]),delete n[e])}}))}(s),s=function(n){var t=F({},n),r=function(n){if(null===n)return"any";if(void 0!==n){if(Array.isArray(n))return"array";var t=e(n);return"boolean"===t||"string"===t||"number"===t||"function"===t?t:"object"}};return Object.keys(n).forEach((function(e){var i=n[e];if(null!=i){var o=a[e];if(void 0===o)u(de(e));else{var s=o.type||r(o.default);if("any"!==s){var c=s.split("|"),l=r(i);c.indexOf(l)<0?"boolean"===s?(t[e]=!!i,u(pe(e,l))):(u(ge(e,s,l)),t[e]=o.default):"number"===l&&void 0!==o.minimum&&i<o.minimum&&(u(me(e,i,o.minimum)),t[e]=o.minimum)}}}})),t}(s=function(e){var n=F({},e);return Object.keys(a).forEach((function(e){void 0!==n[e]&&null!==n[e]||(n[e]=a[e]&&a[e].default)})),n}(s))}var Le,xe=Object.freeze({__proto__:null,baseOptionDefs:Ce,validate:Fe}),_e=new Uint8Array(16);function qe(){if(!Le&&!(Le="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return Le(_e)}var Ve=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function ze(e){return"string"==typeof e&&Ve.test(e)}for(var Je,Me,Ke=[],$e=0;$e<256;++$e)Ke.push(($e+256).toString(16).substr(1));function Be(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=(Ke[e[n+0]]+Ke[e[n+1]]+Ke[e[n+2]]+Ke[e[n+3]]+"-"+Ke[e[n+4]]+Ke[e[n+5]]+"-"+Ke[e[n+6]]+Ke[e[n+7]]+"-"+Ke[e[n+8]]+Ke[e[n+9]]+"-"+Ke[e[n+10]]+Ke[e[n+11]]+Ke[e[n+12]]+Ke[e[n+13]]+Ke[e[n+14]]+Ke[e[n+15]]).toLowerCase();if(!ze(t))throw TypeError("Stringified UUID is invalid");return t}var He=0,Ge=0;function Xe(e){if(!ze(e))throw TypeError("Invalid UUID");var n,t=new Uint8Array(16);return t[0]=(n=parseInt(e.slice(0,8),16))>>>24,t[1]=n>>>16&255,t[2]=n>>>8&255,t[3]=255&n,t[4]=(n=parseInt(e.slice(9,13),16))>>>8,t[5]=255&n,t[6]=(n=parseInt(e.slice(14,18),16))>>>8,t[7]=255&n,t[8]=(n=parseInt(e.slice(19,23),16))>>>8,t[9]=255&n,t[10]=(n=parseInt(e.slice(24,36),16))/1099511627776&255,t[11]=n/4294967296&255,t[12]=n>>>24&255,t[13]=n>>>16&255,t[14]=n>>>8&255,t[15]=255&n,t}function We(e,n,t){function r(e,r,i,a){if("string"==typeof e&&(e=function(e){e=unescape(encodeURIComponent(e));for(var n=[],t=0;t<e.length;++t)n.push(e.charCodeAt(t));return n}(e)),"string"==typeof r&&(r=Xe(r)),16!==r.length)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");var o=new Uint8Array(16+e.length);if(o.set(r),o.set(e,r.length),(o=t(o))[6]=15&o[6]|n,o[8]=63&o[8]|128,i){a=a||0;for(var u=0;u<16;++u)i[a+u]=o[u];return i}return Be(o)}try{r.name=e}catch(e){}return r.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",r.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8",r}function Qe(e){return 14+(e+64>>>9<<4)+1}function Ye(e,n){var t=(65535&e)+(65535&n);return(e>>16)+(n>>16)+(t>>16)<<16|65535&t}function Ze(e,n,t,r,i,a){return Ye((o=Ye(Ye(n,e),Ye(r,a)))<<(u=i)|o>>>32-u,t);var o,u}function en(e,n,t,r,i,a,o){return Ze(n&t|~n&r,e,n,i,a,o)}function nn(e,n,t,r,i,a,o){return Ze(n&r|t&~r,e,n,i,a,o)}function tn(e,n,t,r,i,a,o){return Ze(n^t^r,e,n,i,a,o)}function rn(e,n,t,r,i,a,o){return Ze(t^(n|~r),e,n,i,a,o)}var an=We("v3",48,(function(e){if("string"==typeof e){var n=unescape(encodeURIComponent(e));e=new Uint8Array(n.length);for(var t=0;t<n.length;++t)e[t]=n.charCodeAt(t)}return function(e){for(var n=[],t=32*e.length,r=0;r<t;r+=8){var i=e[r>>5]>>>r%32&255,a=parseInt("0123456789abcdef".charAt(i>>>4&15)+"0123456789abcdef".charAt(15&i),16);n.push(a)}return n}(function(e,n){e[n>>5]|=128<<n%32,e[Qe(n)-1]=n;for(var t=1732584193,r=-271733879,i=-1732584194,a=271733878,o=0;o<e.length;o+=16){var u=t,s=r,c=i,l=a;t=en(t,r,i,a,e[o],7,-680876936),a=en(a,t,r,i,e[o+1],12,-389564586),i=en(i,a,t,r,e[o+2],17,606105819),r=en(r,i,a,t,e[o+3],22,-1044525330),t=en(t,r,i,a,e[o+4],7,-176418897),a=en(a,t,r,i,e[o+5],12,1200080426),i=en(i,a,t,r,e[o+6],17,-1473231341),r=en(r,i,a,t,e[o+7],22,-45705983),t=en(t,r,i,a,e[o+8],7,1770035416),a=en(a,t,r,i,e[o+9],12,-1958414417),i=en(i,a,t,r,e[o+10],17,-42063),r=en(r,i,a,t,e[o+11],22,-1990404162),t=en(t,r,i,a,e[o+12],7,1804603682),a=en(a,t,r,i,e[o+13],12,-40341101),i=en(i,a,t,r,e[o+14],17,-1502002290),r=en(r,i,a,t,e[o+15],22,1236535329),t=nn(t,r,i,a,e[o+1],5,-165796510),a=nn(a,t,r,i,e[o+6],9,-1069501632),i=nn(i,a,t,r,e[o+11],14,643717713),r=nn(r,i,a,t,e[o],20,-373897302),t=nn(t,r,i,a,e[o+5],5,-701558691),a=nn(a,t,r,i,e[o+10],9,38016083),i=nn(i,a,t,r,e[o+15],14,-660478335),r=nn(r,i,a,t,e[o+4],20,-405537848),t=nn(t,r,i,a,e[o+9],5,568446438),a=nn(a,t,r,i,e[o+14],9,-1019803690),i=nn(i,a,t,r,e[o+3],14,-187363961),r=nn(r,i,a,t,e[o+8],20,1163531501),t=nn(t,r,i,a,e[o+13],5,-1444681467),a=nn(a,t,r,i,e[o+2],9,-51403784),i=nn(i,a,t,r,e[o+7],14,1735328473),r=nn(r,i,a,t,e[o+12],20,-1926607734),t=tn(t,r,i,a,e[o+5],4,-378558),a=tn(a,t,r,i,e[o+8],11,-2022574463),i=tn(i,a,t,r,e[o+11],16,1839030562),r=tn(r,i,a,t,e[o+14],23,-35309556),t=tn(t,r,i,a,e[o+1],4,-1530992060),a=tn(a,t,r,i,e[o+4],11,1272893353),i=tn(i,a,t,r,e[o+7],16,-155497632),r=tn(r,i,a,t,e[o+10],23,-1094730640),t=tn(t,r,i,a,e[o+13],4,681279174),a=tn(a,t,r,i,e[o],11,-358537222),i=tn(i,a,t,r,e[o+3],16,-722521979),r=tn(r,i,a,t,e[o+6],23,76029189),t=tn(t,r,i,a,e[o+9],4,-640364487),a=tn(a,t,r,i,e[o+12],11,-421815835),i=tn(i,a,t,r,e[o+15],16,530742520),r=tn(r,i,a,t,e[o+2],23,-995338651),t=rn(t,r,i,a,e[o],6,-198630844),a=rn(a,t,r,i,e[o+7],10,1126891415),i=rn(i,a,t,r,e[o+14],15,-1416354905),r=rn(r,i,a,t,e[o+5],21,-57434055),t=rn(t,r,i,a,e[o+12],6,1700485571),a=rn(a,t,r,i,e[o+3],10,-1894986606),i=rn(i,a,t,r,e[o+10],15,-1051523),r=rn(r,i,a,t,e[o+1],21,-2054922799),t=rn(t,r,i,a,e[o+8],6,1873313359),a=rn(a,t,r,i,e[o+15],10,-30611744),i=rn(i,a,t,r,e[o+6],15,-1560198380),r=rn(r,i,a,t,e[o+13],21,1309151649),t=rn(t,r,i,a,e[o+4],6,-145523070),a=rn(a,t,r,i,e[o+11],10,-1120210379),i=rn(i,a,t,r,e[o+2],15,718787259),r=rn(r,i,a,t,e[o+9],21,-343485551),t=Ye(t,u),r=Ye(r,s),i=Ye(i,c),a=Ye(a,l)}return[t,r,i,a]}(function(e){if(0===e.length)return[];for(var n=8*e.length,t=new Uint32Array(Qe(n)),r=0;r<n;r+=8)t[r>>5]|=(255&e[r/8])<<r%32;return t}(e),8*e.length))}));function on(e,n,t,r){switch(e){case 0:return n&t^~n&r;case 1:return n^t^r;case 2:return n&t^n&r^t&r;case 3:return n^t^r}}function un(e,n){return e<<n|e>>>32-n}var sn=We("v5",80,(function(e){var n=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof e){var r=unescape(encodeURIComponent(e));e=[];for(var i=0;i<r.length;++i)e.push(r.charCodeAt(i))}else Array.isArray(e)||(e=Array.prototype.slice.call(e));e.push(128);for(var a=e.length/4+2,o=Math.ceil(a/16),u=new Array(o),s=0;s<o;++s){for(var c=new Uint32Array(16),l=0;l<16;++l)c[l]=e[64*s+4*l]<<24|e[64*s+4*l+1]<<16|e[64*s+4*l+2]<<8|e[64*s+4*l+3];u[s]=c}u[o-1][14]=8*(e.length-1)/Math.pow(2,32),u[o-1][14]=Math.floor(u[o-1][14]),u[o-1][15]=8*(e.length-1)&4294967295;for(var f=0;f<o;++f){for(var v=new Uint32Array(80),d=0;d<16;++d)v[d]=u[f][d];for(var g=16;g<80;++g)v[g]=un(v[g-3]^v[g-8]^v[g-14]^v[g-16],1);for(var p=t[0],m=t[1],h=t[2],y=t[3],b=t[4],k=0;k<80;++k){var E=Math.floor(k/20),w=un(p,5)+on(E,m,h,y)+b+n[E]+v[k]>>>0;b=y,y=h,h=un(m,30)>>>0,m=p,p=w}t[0]=t[0]+p>>>0,t[1]=t[1]+m>>>0,t[2]=t[2]+h>>>0,t[3]=t[3]+y>>>0,t[4]=t[4]+b>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,255&t[0],t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,255&t[1],t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,255&t[2],t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,255&t[3],t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,255&t[4]]}));var cn=Object.freeze({__proto__:null,v1:function(e,n,t){var r=n&&t||0,i=n||new Array(16),a=(e=e||{}).node||Je,o=void 0!==e.clockseq?e.clockseq:Me;if(null==a||null==o){var u=e.random||(e.rng||qe)();null==a&&(a=Je=[1|u[0],u[1],u[2],u[3],u[4],u[5]]),null==o&&(o=Me=16383&(u[6]<<8|u[7]))}var s=void 0!==e.msecs?e.msecs:Date.now(),c=void 0!==e.nsecs?e.nsecs:Ge+1,l=s-He+(c-Ge)/1e4;if(l<0&&void 0===e.clockseq&&(o=o+1&16383),(l<0||s>He)&&void 0===e.nsecs&&(c=0),c>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");He=s,Ge=c,Me=o;var f=(1e4*(268435455&(s+=122192928e5))+c)%4294967296;i[r++]=f>>>24&255,i[r++]=f>>>16&255,i[r++]=f>>>8&255,i[r++]=255&f;var v=s/4294967296*1e4&268435455;i[r++]=v>>>8&255,i[r++]=255&v,i[r++]=v>>>24&15|16,i[r++]=v>>>16&255,i[r++]=o>>>8|128,i[r++]=255&o;for(var d=0;d<6;++d)i[r+d]=a[d];return n||Be(i)},v3:an,v4:function(e,n,t){var r=(e=e||{}).random||(e.rng||qe)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,n){t=t||0;for(var i=0;i<16;++i)n[t+i]=r[i];return n}return Be(r)},v5:sn,NIL:"00000000-0000-0000-0000-000000000000",version:function(e){if(!ze(e))throw TypeError("Invalid UUID");return parseInt(e.substr(14,1),16)},validate:ze,stringify:Be,parse:Xe}).v1,ln=xe.baseOptionDefs;var fn=function(e){var n={diagnosticId:cn()};return e&&(n.sdkKeySuffix=e.length>6?e.substring(e.length-6):e),n},vn=function(e){var n,t,r,i;function a(e){n=e,t=0,r=0,i=[]}return a(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){var r={timestamp:e,failed:n,durationMillis:t};i.push(r)},reset:a}},dn=function(e,n,t,i,a,o){var u,s,c=!!e.diagnosticUseCombinedEvent,l="ld:"+i+":$diagnostics",f=a.eventsUrl+"/events/diagnostic/"+i,v=a.diagnosticRecordingInterval,d=n,g=!!a.streaming,p={};function m(){return{sdk:b(),configuration:(n={customBaseURI:a.baseUrl!==ln.baseUrl.default,customStreamURI:a.streamUrl!==ln.streamUrl.default,customEventsURI:a.eventsUrl!==ln.eventsUrl.default,eventsCapacity:a.eventCapacity,eventsFlushIntervalMillis:a.flushInterval,reconnectTimeMillis:a.streamReconnectDelay,streamingDisabled:!g,allAttributesPrivate:!!a.allAttributesPrivate,inlineUsersInEvents:!!a.inlineUsersInEvents,diagnosticRecordingIntervalMillis:a.diagnosticRecordingInterval,usingSecureMode:!!a.hash,bootstrapMode:!!a.bootstrap,fetchGoalsDisabled:!a.fetchGoals,allowFrequentDuplicateEvents:!!a.allowFrequentDuplicateEvents,sendEventsOnlyForVariation:!!a.sendEventsOnlyForVariation,autoAliasingOptOut:!!a.autoAliasingOptOut},n),platform:e.diagnosticPlatformData};var n}function h(e){a.logger&&a.logger.debug(Oe.debugPostingDiagnosticEvent(e)),t.sendEvents(e,f,!0).then((function(){})).catch((function(){}))}function y(){var n,t;h((n=(new Date).getTime(),t=r({kind:c?"diagnostic-combined":"diagnostic",id:o,creationDate:n},d.getProps()),c&&(t=r({},t,{},m())),d.reset(n),t)),s=setTimeout(y,v),u=(new Date).getTime(),c&&function(){if(e.localStorage){var n=r({},d.getProps());e.localStorage.set(l,JSON.stringify(n),(function(){}))}}()}function b(){var n=r({},e.diagnosticSdkData);return a.wrapperName&&(n.wrapperName=a.wrapperName),a.wrapperVersion&&(n.wrapperVersion=a.wrapperVersion),n}return p.start=function(){c?function(n){if(!e.localStorage)return n(!1);e.localStorage.get(l).then((function(e){if(e)try{var t=JSON.parse(e);d.setProps(t),u=t.dataSinceDate}catch(e){}n(!0)})).catch((function(){n(!1)}))}((function(e){if(e){var n=(u||0)+v,t=(new Date).getTime();t>=n?y():s=setTimeout(y,n-t)}else 0===Math.floor(4*Math.random())?y():s=setTimeout(y,v)})):(h(r({kind:"diagnostic-init",id:o,creationDate:d.getProps().dataSinceDate},m())),s=setTimeout(y,v))},p.stop=function(){s&&clearTimeout(s)},p.setStreaming=function(e){g=e},p};function gn(e,n){var t,r=["debug","info","warn","error"];t=null!=n?""===n?"":n+" ":"LD: ";var i=0;e&&(i="none"===e?100:r.indexOf(e));var a={};function o(e,n,a){if(e>=i&&console){var o=console[n];if(o){var u=e<r.length?r[e]:"?";o.call(console,t+"["+u+"] "+a)}}}return a.debug=function(e){return o(0,"log",e)},a.info=function(e){return o(1,"info",e)},a.warn=function(e){return o(2,"warn",e)},a.error=function(e){return o(3,"error",e)},a}function pn(n,t,i,u,c){var v,d,g,p,m=function(){if(i&&i.logger)return i.logger;return c&&c.logger&&c.logger.default||gn("warn")}(),h=Pe(m),y=Ie(h),b=Fe(i,h,c,m),k=b.sendEvents,E=n,w=b.hash,D=V(u,E,b),S=b.sendEvents&&!b.diagnosticOptOut,U=S?fn(E):null,R=S?vn((new Date).getTime()):null,A=S?dn(u,R,D,E,b,U):null,N=Re(u,b,E,R),C=b.eventProcessor||function(e,n,t){var r,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,u=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,s={},c=u||V(e,t,n),l=n.eventsUrl+"/events/bulk/"+t,v=z(),d=J(n),g=n.inlineUsersInEvents,p=n.samplingInterval,m=n.eventCapacity,h=n.flushInterval,y=n.logger,b=[],k=0,E=!1,w=!1;function D(){return 0===p||0===Math.floor(Math.random()*p)}function S(e){return!!e.debugEventsUntilDate&&(e.debugEventsUntilDate>k&&e.debugEventsUntilDate>(new Date).getTime())}function U(e){var n=F({},e);return"alias"===e.kind?n:(g||"identify"===e.kind?n.user=d.filterUser(e.user):(n.userKey=e.user.key,delete n.user),"feature"===e.kind&&(delete n.trackEvents,delete n.debugEventsUntilDate),n)}function O(e){b.length<m?(b.push(e),w=!1):(w||(w=!0,y.warn("Exceeded event queue capacity. Increase capacity to avoid dropping events.")),i&&i.incrementDroppedEvents())}return s.enqueue=function(e){if(!E){var n=!1,t=!1;if(v.summarizeEvent(e),"feature"===e.kind?D()&&(n=!!e.trackEvents,t=S(e)):n=D(),n&&O(U(e)),t){var r=F({},e,{kind:"debug"});r.user=d.filterUser(r.user),delete r.trackEvents,delete r.debugEventsUntilDate,O(r)}}},s.flush=function(){if(E)return Promise.resolve();var e=b,n=v.getSummary();return v.clearSummary(),n&&(n.kind="summary",e.push(n)),i&&i.setEventsInLastBatch(e.length),0===e.length?Promise.resolve():(b=[],y.debug(Ue(e.length)),c.sendEvents(e,l).then((function(e){e&&(e.serverTime&&(k=e.serverTime),f(e.status)||(E=!0),e.status>=400&&I((function(){o.maybeReportError(new a(ue(e.status,"event posting","some events were dropped")))})))})))},s.start=function(){r=setTimeout((function e(){s.flush(),r=setTimeout(e,h)}),h)},s.stop=function(){clearTimeout(r)},s}(u,b,E,R,h,D),_=Te(u,b,E),q={},M={},K=b.streaming,$=!1,B=!1,H=!0,G=b.stateProvider,X=function(e,n){var t,r={};return r.setUser=function(e){var r=t&&O(t);(t=x(e))&&n&&n(O(t),r)},r.getUser=function(){return t?O(t):null},e&&r.setUser(e),r}(null,(function(e,n){(function(e){if(G)return;e&&Q({kind:"identify",key:e.key,user:e,creationDate:(new Date).getTime()})})(e),!b.autoAliasingOptOut&&n&&n.anonymous&&e&&!e.anonymous&&oe(e,n)})),W=Ne(u.localStorage,m);function Q(e){if(E&&!(G&&G.enqueueEvent&&G.enqueueEvent(e))){if("alias"!==e.kind){if(!e.user)return void(H&&(m.warn("Be sure to call `identify` in the LaunchDarkly client: https://docs.launchdarkly.com/sdk/features/identify#javascript"),H=!1));H=!1}!k||B||u.isDoNotTrack()||(m.debug(Se(e.kind)),C.enqueue(e))}}function Z(e,n,t,r){var i=X.getUser(),a=new Date,o=n?n.value:null;if(!b.allowFrequentDuplicateEvents){var u=JSON.stringify(o)+(i&&i.key?i.key:"")+e,s=q[u];if(s&&a-s<3e5)return;q[u]=a}var c={kind:"feature",key:e,user:i,value:o,variation:n?n.variationIndex:null,default:t,creationDate:a.getTime()};i&&i.anonymous&&(c.contextKind=ae(i));var l=M[e];l&&(c.version=l.flagVersion?l.flagVersion:l.version,c.trackEvents=l.trackEvents,c.debugEventsUntilDate=l.debugEventsUntilDate),(r||l&&l.trackReason)&&n&&(c.reason=n.reason),Q(c)}function te(e,n,t,r){var i;if(M&&L(M,e)&&M[e]&&!M[e].deleted){var a=M[e];i=re(a),null!==a.value&&void 0!==a.value||(i.value=n)}else i={value:n,variationIndex:null,reason:{kind:"ERROR",errorKind:"FLAG_NOT_FOUND"}};return t&&Z(e,i,n,r),i}function re(e){return{value:e.value,variationIndex:void 0===e.variation?null:e.variation,reason:e.reason||null}}function ae(e){return e.anonymous?"anonymousUser":"user"}function oe(e,n){G||e&&n&&Q({kind:"alias",key:e.key,contextKind:ae(e),previousKey:n.key,previousContextKind:ae(n),creationDate:(new Date).getTime()})}function se(){d=!0,X.getUser()&&N.connect(X.getUser(),w,{ping:function(){m.debug("received ping message from stream");var e=X.getUser();_.fetchFlagSettings(e,w).then((function(n){P(e,X.getUser())&&le(n||{})})).catch((function(e){h.maybeReportError(new l(ne(e)))}))},put:function(e){var n=JSON.parse(e.data);m.debug("received streaming update for all flags"),le(n)},patch:function(e){var n=JSON.parse(e.data),t=M[n.key];if(!t||!t.version||!n.version||t.version<n.version){m.debug(ke(n.key));var r={},i=F({},n);delete i.key,M[n.key]=i;var a=re(i);r[n.key]=t?{previous:t.value,current:a}:{current:a},fe(r)}else m.debug(Ee(n.key))},delete:function(e){var n=JSON.parse(e.data);if(!M[n.key]||M[n.key].version<n.version){m.debug(we(n.key));var t={};M[n.key]&&!M[n.key].deleted&&(t[n.key]={previous:M[n.key].value}),M[n.key]={version:n.version,deleted:!0},fe(t)}else m.debug(De(n.key))}})}function ce(){d&&(N.disconnect(),d=!1)}function le(e){var n={};if(!e)return Promise.resolve();for(var t in M)L(M,t)&&M[t]&&(e[t]&&!P(e[t].value,M[t].value)?n[t]={previous:M[t].value,current:re(e[t])}:e[t]&&!e[t].deleted||(n[t]={previous:M[t].value}));for(var i in e)L(e,i)&&e[i]&&(!M[i]||M[i].deleted)&&(n[i]={current:re(e[i])});return M=r({},e),fe(n).catch((function(){}))}function fe(e){var n=Object.keys(e);if(n.length>0){var t={};n.forEach((function(n){var r=e[n].current,i=r?r.value:void 0,a=e[n].previous;h.emit("change:"+n,i,a),t[n]=r?{current:i,previous:a}:{previous:a}})),h.emit("change",t),h.emit("internal-change",M),b.sendEventsOnlyForVariation||G||n.forEach((function(n){Z(n,e[n].current)}))}return v&&p?p.saveFlags(M).catch((function(){return null})):Promise.resolve()}function ve(){var e=K||g&&void 0===K;e&&!d?se():!e&&d&&ce(),A&&A.setStreaming(e)}function de(e){return"change"===e||"change:"===e.substr(0,"change".length+1)}if(u.localStorage&&(p=new je(u.localStorage,E,w,X,m)),"string"==typeof b.bootstrap&&"LOCALSTORAGE"===b.bootstrap.toUpperCase()&&(p?v=!0:m.warn("localStorage is unavailable")),"object"===e(b.bootstrap)&&(M=function(e){var n=Object.keys(e),t=e.$flagsState;!t&&n.length&&m.warn(ie()),!1===e.$valid&&m.warn("LaunchDarkly bootstrap data is not available because the back end could not read the flags.");var r={};return n.forEach((function(n){if("$flagsState"!==n&&"$valid"!==n){var i={value:e[n]};t&&t[n]?i=F(i,t[n]):i.version=0,r[n]=i}})),r}(b.bootstrap)),G){var ge=G.getInitialState();ge?pe(ge):G.on("init",pe),G.on("update",(function(e){e.user&&X.setUser(e.user);e.flags&&le(e.flags)}))}else(function(){if(!n)return Promise.reject(new o(ee()));return W.validateUser(t).then((function(n){return X.setUser(n),"object"===e(b.bootstrap)?me():v?p.loadFlags().catch((function(){return null})).then((function(e){return null==e?(M={},_.fetchFlagSettings(X.getUser(),w).then((function(e){return le(e||{})})).then(me).catch((function(e){he(new l(ne(e)))}))):(M=e,I(me),_.fetchFlagSettings(X.getUser(),w).then((function(e){return le(e)})).catch((function(e){return h.maybeReportError(e)})))})):_.fetchFlagSettings(X.getUser(),w).then((function(e){M=e||{},me()})).catch((function(e){M={},he(e)}))}))})().catch(he);function pe(e){E=e.environment,X.setUser(e.user),M=r({},e.flags),I(me)}function me(){m.info("LaunchDarkly client initialized"),$=!0,ve(),y.signalSuccess()}function he(e){y.signalFailure(e)}return{client:{waitForInitialization:function(){return y.getInitializationPromise()},waitUntilReady:function(){return y.getReadyPromise()},identify:function(e,n,t){return B?j(Promise.resolve({}),t):G?(m.warn("identify() has no effect here; it must be called on the main client instance"),j(Promise.resolve(T(M)),t)):j((v&&p?p.clearFlags():Promise.resolve()).then((function(){return W.validateUser(e)})).then((function(e){return _.fetchFlagSettings(e,n).then((function(t){var r=T(t);return X.setUser(e),w=n,t?le(t).then((function(){return r})):r}))})).then((function(e){return d&&se(),e})).catch((function(e){return h.maybeReportError(e),Promise.reject(e)})),t)},getUser:function(){return X.getUser()},variation:function(e,n){return te(e,n,!0,!1).value},variationDetail:function(e,n){return te(e,n,!0,!0)},track:function(e,n,t){if("string"==typeof e){u.customEventFilter&&!u.customEventFilter(e)&&m.warn(Y(e));var r=X.getUser(),i={kind:"custom",key:e,user:r,url:u.getCurrentUrl(),creationDate:(new Date).getTime()};r&&r.anonymous&&(i.contextKind=ae(r)),null!=n&&(i.data=n),null!=t&&(i.metricValue=t),Q(i)}else h.maybeReportError(new s(Y(e)))},alias:oe,on:function(e,n,t){de(e)?(g=!0,$&&ve(),h.on(e,n,t)):h.on.apply(h,arguments)},off:function(e){if(h.off.apply(h,arguments),de(e)){var n=!1;h.getEvents().forEach((function(e){de(e)&&h.getEventListenerCount(e)>0&&(n=!0)})),n||(g=!1,d&&void 0===K&&ce())}},setStreaming:function(e){var n=null===e?void 0:e;n!==K&&(K=n,ve())},flush:function(e){return j(k?C.flush():Promise.resolve(),e)},allFlags:function(){var e={};if(!M)return e;for(var n in M)L(M,n)&&(e[n]=te(n,null,!b.sendEventsOnlyForVariation).value);return e},close:function(e){if(B)return j(Promise.resolve(),e);var n=function(){B=!0,M={}};return j(Promise.resolve().then((function(){if(ce(),A&&A.stop(),k)return C.stop(),C.flush()})).then(n).catch(n),e)}},options:b,emitter:h,ident:X,logger:m,requestor:_,start:function(){k&&(A&&A.start(),C.start())},enqueueEvent:Q,getFlagsInternal:function(){return M},getEnvironmentId:function(){return E},internalChangeEventName:"internal-change"}}var mn="3.3.3";export{gn as createConsoleLogger,v as errors,pn as initialize,Oe as messages,_ as utils,mn as version};
|
|
2
2
|
//# sourceMappingURL=ldclient-common.es.js.map
|