@launchdarkly/cloudflare-server-sdk 2.7.6 → 2.7.8
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 +18 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/package.json +2 -2
package/dist/esm/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{EventEmitter as e}from"node:events";import t from"semver";import i from"crypto-js";var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},n={},s={};Object.defineProperty(s,"__esModule",{value:!0});s.default=class{constructor(e){this._onRequestStatus=e}getStatus(){return this._lastStatus}async requireStatus(){return this._lastStatus||await this._onRequestStatus(),this._lastStatus}notify(){var e;this._lastStatus&&(null===(e=this._listener)||void 0===e||e.call(this,this._lastStatus))}setListener(e){this._listener=e}setStatus(e){this._lastStatus=e}};var a={},o={};!function(e){function t(e){return e.indexOf("~")?e.replace(/~1/g,"/").replace(/~0/g,"~"):e}class i{constructor(e,i=!1){if(i){const t=e;this._components=[t],this.isValid=""!==t,this.redactionName=t.startsWith("/")?`/${t.replace(/~/g,"~0").replace(/\//g,"~1")}`:t}else{if(this.redactionName=e,""===e||"/"===e||e.match(/\/\/|(^\/.*~[^0|^1])|~$/))return this.isValid=!1,void(this._components=[]);!function(e){return!e.startsWith("/")}(e)?e.indexOf("/",1)<0?this._components=[t(e.slice(1))]:this._components=function(e){return(e.startsWith("/")?e.substring(1):e).split("/").map((e=>t(e)))}(e):this._components=[e],"_meta"===this._components[0]?this.isValid=!1:this.isValid=!0}}get(e){const{_components:t,isValid:i}=this;if(!i)return;let r=e;for(let e=0;e<t.length;e+=1){const i=t[e];if(null==r||!Object.prototype.hasOwnProperty.call(r,i)||"object"!=typeof r||Array.isArray(r))return;r=r[i]}return r}getComponent(e){return this._components[e]}get depth(){return this._components.length}get isKind(){return 1===this._components.length&&"kind"===this._components[0]}compare(e){return this.depth===e.depth&&this._components.every(((t,i)=>t===e.getComponent(i)))}}i.InvalidReference=new i("");class r{is(e){if(Array.isArray(e))return!1;const t=typeof e;return"function"===t||"object"===t}getType(){return"factory method or object"}}class n{constructor(e,t){this._typeName=e,this.typeOf=typeof t}is(e){return!Array.isArray(e)&&typeof e===this.typeOf}getType(){return this._typeName}}class s{constructor(e,t){this._typeName=e,this.typeOf=typeof t}is(e){return!!Array.isArray(e)&&(!(e.length>0)||e.every((e=>typeof e===this.typeOf)))}getType(){return this._typeName}}class a extends n{constructor(e){super(`number with minimum value of ${e}`,0),this.min=e}is(e){return typeof e===this.typeOf&&e>=this.min}}class o extends n{constructor(e){super(`string matching ${e}`,""),this.expression=e}is(e){return"string"==typeof e&&!!e.match(this.expression)}}class l{is(e){return"function"==typeof e}getType(){return"function"}}class c{is(e){return"boolean"==typeof e||null==e}getType(){return"boolean | undefined | null"}}const u=/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d\d*)?(Z|[-+]\d\d(:\d\d)?)/;class d{is(e){return"number"==typeof e||"string"==typeof e&&u.test(e)}getType(){return"date"}}class h extends o{constructor(){super(/^(\w|\.|-)+$/)}is(e){return super.is(e)&&"kind"!==e}}class _{static createTypeArray(e,t){return new s(e,t)}static numberWithMin(e){return new a(e)}static stringMatchingRegex(e){return new o(e)}}function f(e){return"kind"in e&&(_.String.is(e.kind)&&"multi"!==e.kind)}function v(e){return"kind"in e&&(_.String.is(e.kind)&&"multi"===e.kind)}function g(e){return!("kind"in e)||null===e.kind||void 0===e.kind}_.String=new n("string",""),_.Number=new n("number",0),_.ObjectOrFactory=new r,_.Object=new n("object",{}),_.StringArray=new s("string[]",""),_.Boolean=new n("boolean",!0),_.Function=new l,_.Date=new d,_.Kind=new h,_.NullableBoolean=new c;const p="user";function y(e){return e.includes("%")||e.includes(":")?e.replace(/%/g,"%25").replace(/:/g,"%3A"):e}function m(e){return _.Kind.is(e)}function b(e){return _.String.is(e)&&""!==e}function w(e,t=!1){return e?e.map((e=>new i(e,t))):[]}class S{constructor(e,t,i){this._isMulti=!1,this._isUser=!1,this._wasLegacy=!1,this._contexts={},this.kind=t,this.valid=e,this.message=i}static _contextForError(e,t){return new S(!1,e,t)}static _getValueFromContext(e,t){if(t&&e.isValid)return 1===e.depth&&"anonymous"===e.getComponent(0)?!!t?.anonymous:e.get(t)}_contextForKind(e){return this._isMulti?this._contexts[e]:this.kind===e?this._context:void 0}static _fromMultiKindContext(e){const t=Object.keys(e).filter((e=>"kind"!==e)),i=t.every(m);if(!t.length)return S._contextForError("multi","A multi-kind context must contain at least one kind");if(!i)return S._contextForError("multi","Context contains invalid kinds");const r={};let n=!0;const s=t.reduce(((t,i)=>{const s=e[i];var a;return(a=s)&&_.Object.is(a)?(t[i]=s,r[i]=w(s._meta?.privateAttributes)):n=!1,t}),{});if(!n)return S._contextForError("multi","Context contained contexts that were not objects");if(!Object.values(s).every((e=>b(e.key))))return S._contextForError("multi","Context contained invalid keys");if(1===t.length){const e=t[0],i=new S(!0,e);return i._context={...s[e],kind:e},i._privateAttributeReferences=r,i._isUser="user"===e,i}const a=new S(!0,e.kind);return a._contexts=s,a._privateAttributeReferences=r,a._isMulti=!0,a}static _fromSingleKindContext(e){const{key:t,kind:i}=e,r=m(i),n=b(t);if(!r)return S._contextForError(i??"unknown","The kind was not valid for the context");if(!n)return S._contextForError(i,"The key for the context was not valid");const s=w(e._meta?.privateAttributes),a=new S(!0,i);return a._isUser="user"===i,a._context=e,a._privateAttributeReferences={[i]:s},a}static _fromLegacyUser(e){if(!(void 0!==e.key&&null!==e.key))return S._contextForError("user","The key for the context was not valid");const t=new S(!0,"user");return t._isUser=!0,t._wasLegacy=!0,t._context=function(e){const t={...e.custom||[],kind:"user",key:String(e.key)};if(null!=e.anonymous){const i=!!e.anonymous;delete t.anonymous,t.anonymous=i}return null!==e.name&&void 0!==e.name&&(t.name=e.name),null!==e.ip&&void 0!==e.ip&&(t.ip=e.ip),null!==e.firstName&&void 0!==e.firstName&&(t.firstName=e.firstName),null!==e.lastName&&void 0!==e.lastName&&(t.lastName=e.lastName),null!==e.email&&void 0!==e.email&&(t.email=e.email),null!==e.avatar&&void 0!==e.avatar&&(t.avatar=e.avatar),null!==e.country&&void 0!==e.country&&(t.country=e.country),null!==e.privateAttributeNames&&void 0!==e.privateAttributeNames&&(t._meta={privateAttributes:e.privateAttributeNames}),t}(e),t._privateAttributeReferences={user:w(e.privateAttributeNames,!0)},t}static fromLDContext(e){return e?f(e)?S._fromSingleKindContext(e):v(e)?S._fromMultiKindContext(e):g(e)?S._fromLegacyUser(e):S._contextForError("unknown","Context was not of a valid kind"):S._contextForError("unknown","No context specified. Returning default value")}static toLDContext(e){if(!e.valid)return;const t=e.getContexts();if(!e._isMulti)return t[0][1];const i={kind:"multi"};return t.forEach((e=>{const t=e[0],r=e[1];i[t]=r})),i}valueForKind(e,t=p){return e.isKind?this.kinds:S._getValueFromContext(e,this._contextForKind(t))}key(e=p){return this._contextForKind(e)?.key}get isMultiKind(){return this._isMulti}get canonicalKey(){return this._isUser?this._context.key:this._isMulti?Object.keys(this._contexts).sort().map((e=>`${e}:${y(this._contexts[e].key)}`)).join(":"):`${this.kind}:${y(this._context.key)}`}get kinds(){return this._isMulti?Object.keys(this._contexts):[this.kind]}get kindsAndKeys(){return this._isMulti?Object.entries(this._contexts).reduce(((e,[t,i])=>(e[t]=i.key,e)),{}):{[this.kind]:this._context.key}}privateAttributes(e){return this._privateAttributeReferences?.[e]||[]}getContexts(){return this._isMulti?Object.entries(this._contexts):[[this.kind,this._context]]}get legacy(){return this._wasLegacy}}S.UserKind=p;const k=["key","kind","_meta","anonymous"].map((e=>new i(e,!0))),E=["name","ip","firstName","lastName","email","avatar","country"];class O{constructor(e,t){this._allAttributesPrivate=e,this._privateAttributes=t}filter(e,t=!1){const i=e.getContexts();if(1===i.length)return this._filterSingleKind(e,i[0][1],i[0][0],t);const r={kind:"multi"};return i.forEach((([i,n])=>{r[i]=this._filterSingleKind(e,n,i,t)})),r}_getAttributesToFilter(e,t,r,n){return(n?Object.keys(t).map((e=>new i(e,!0))):[...this._privateAttributes,...e.privateAttributes(r)]).filter((e=>!k.some((t=>t.compare(e)))))}_filterSingleKind(e,t,i,r){const n=this._allAttributesPrivate||r&&!0===t.anonymous,{cloned:s,excluded:a}=function(e,t){const i=[],r={},n=[];for(i.push(...Object.keys(e).map((t=>({key:t,ptr:[t],source:e,parent:r,visited:[e]}))));i.length;){const e=i.pop(),r=t.find((t=>{return i=t,r=e.ptr,i.depth===r.length&&r.every(((e,t)=>e===i.getComponent(t)));var i,r}));if(r)n.push(r.redactionName);else{const t=e.source[e.key];null===t?e.parent[e.key]=t:Array.isArray(t)?e.parent[e.key]=[...t]:"object"==typeof t?e.visited.includes(t)||(e.parent[e.key]={},i.push(...Object.keys(t).map((i=>({key:i,ptr:[...e.ptr,i],source:t,parent:e.parent[e.key],visited:[...e.visited,t]}))))):e.parent[e.key]=t}}return{cloned:r,excluded:n.sort()}}(t,this._getAttributesToFilter(e,t,i,n));return e.legacy&&E.forEach((e=>{e in s&&(s[e]=String(s[e]))})),a.length&&(s._meta||(s._meta={}),s._meta.redactedAttributes=a),s._meta&&(delete s._meta.privateAttributes,0===Object.keys(s._meta).length&&delete s._meta),s}}class x{constructor(e,t,i=Math.random){this._retryResetIntervalMillis=t,this._random=i,this._retryCount=0,this._initialRetryDelayMillis=Math.max(1,e),this._maxExponent=Math.ceil(Math.log2(3e4/this._initialRetryDelayMillis))}_backoff(){const e=Math.min(this._retryCount,this._maxExponent),t=this._initialRetryDelayMillis*2**e;return Math.min(t,3e4)}_jitter(e){return e-Math.trunc(.5*this._random()*e)}success(e=Date.now()){this._activeSince=e}fail(e=Date.now()){void 0!==this._activeSince&&e-this._activeSince>this._retryResetIntervalMillis&&(this._retryCount=0),this._activeSince=void 0;const t=this._jitter(this._backoff());return this._retryCount+=1,t}}class D{constructor(e,t){this._dataCallback=e,this._statusCallback=t,this._disabled=!1}disable(){this._disabled=!0}async dataHandler(e,t){this._disabled||this._dataCallback(e,t)}async statusHandler(e,t){this._disabled||this._statusCallback(e,t)}}var M;!function(e){e[e.Valid=0]="Valid",e[e.Initializing=1]="Initializing",e[e.Interrupted=2]="Interrupted",e[e.Closed=3]="Closed"}(M||(M={}));class P{constructor(e,t){this._list=t?[...t]:[],this._circular=e,this._pos=0}next(){if(this._list.length<=0||this._pos>=this._list.length)return;const e=this._list[this._pos];return this._circular?this._pos=(this._pos+1)%this._list.length:this._pos+=1,e}replace(e){this._list=[...e],this._pos=0}remove(e){const t=this._list.indexOf(e);return!(t<0)&&(this._list.splice(t,1),this._list.length>0&&(t<this._pos&&(this._pos-=1),this._circular&&this._pos>this._list.length-1&&(this._pos=0)),!0)}reset(){this._pos=0}pos(){return this._pos}length(){return this._list.length}clear(){this._list=[],this._pos=0}}var T,C,I,F;e.DataSourceErrorKind=void 0,(T=e.DataSourceErrorKind||(e.DataSourceErrorKind={})).Unknown="UNKNOWN",T.NetworkError="NETWORK_ERROR",T.ErrorResponse="ERROR_RESPONSE",T.InvalidData="INVALID_DATA";class j extends Error{constructor(e){super(e),this.name="LaunchDarklyFileDataSourceError"}}class R extends Error{constructor(e,t,i,r=!0){super(t),this.kind=e,this.status=i,this.name="LaunchDarklyPollingError",this.recoverable=r}}class A extends Error{constructor(e,t,i,r=!0){super(t),this.kind=e,this.code=i,this.name="LaunchDarklyStreamingError",this.recoverable=r}}e.AutoEnvAttributes=void 0,(C=e.AutoEnvAttributes||(e.AutoEnvAttributes={}))[C.Disabled=0]="Disabled",C[C.Enabled=1]="Enabled",function(e){e[e.AnalyticsEvents=0]="AnalyticsEvents",e[e.DiagnosticEvent=1]="DiagnosticEvent"}(I||(I={})),function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.FailedAndMustShutDown=2]="FailedAndMustShutDown"}(F||(F={}));var V=Object.freeze({__proto__:null,get DataSourceState(){return M},get LDDeliveryStatus(){return F},get LDEventType(){return I}});function N(e){if("string"==typeof e)return e;if(void 0===e)return"undefined";if(null===e)return"null";if(Object.prototype.hasOwnProperty.call(e,"toString"))try{return e.toString()}catch{}if("bigint"==typeof e)return`${e}n`;try{return JSON.stringify(e)}catch(e){return e instanceof TypeError&&e.message.indexOf("circular")>=0?"[Circular]":"[Not Stringifiable]"}}const L={s:e=>N(e),d:e=>function(e){return"symbol"==typeof e?"NaN":"bigint"==typeof e?`${e}n`:String(Number(e))}(e),i:e=>function(e){return"symbol"==typeof e?"NaN":"bigint"==typeof e?`${e}n`:String(parseInt(e,10))}(e),f:e=>function(e){return"symbol"==typeof e?"NaN":String(parseFloat(e))}(e),j:e=>N(e),o:e=>N(e),O:e=>N(e),c:()=>""};function K(...e){const t=e.shift();if(_.String.is(t)){let i="",r=0;for(;r<t.length;){const n=t.charAt(r);if("%"===n){if(r+1<t.length){const n=t.charAt(r+1);if(n in L&&e.length){const t=e.shift();i+=L[n]?.(t)}else i+="%"===n?"%":`%${n}`;r+=2}}else i+=n,r+=1}return e.length&&(i.length&&(i+=" "),i+=e.map(N).join(" ")),i}return e.map(N).join(" ")}var $;!function(e){e[e.debug=0]="debug",e[e.info=1]="info",e[e.warn=2]="warn",e[e.error=3]="error",e[e.none=4]="none"}($||($={}));const U=["debug","info","warn","error","none"];class z{static get(){return new z({})}constructor(e){if(this._logLevel=$[e.level??"info"]??$.info,this._name=e.name??"LaunchDarkly",this._formatter=e.formatter,"object"==typeof e.destination)this._destinations={[$.debug]:e.destination.debug,[$.info]:e.destination.info,[$.warn]:e.destination.warn,[$.error]:e.destination.error};else if("function"==typeof e.destination){const{destination:t}=e;this._destinations={[$.debug]:t,[$.info]:t,[$.warn]:t,[$.error]:t}}}_tryFormat(...e){try{return this._formatter?this._formatter?.(...e):K(...e)}catch{return K(...e)}}_tryWrite(e,t){try{e(t)}catch{console.error(t)}}_log(e,t){if(e>=this._logLevel){const i=`${U[e]}: [${this._name}]`;try{const r=this._destinations?.[e];r?this._tryWrite(r,`${i} ${this._tryFormat(...t)}`):console.error(...t)}catch{console.error(...t)}}}error(...e){this._log($.error,e)}warn(...e){this._log($.warn,e)}info(...e){this._log($.info,e)}debug(...e){this._log($.debug,e)}}const B={error:_.Function,warn:_.Function,info:_.Function,debug:_.Function};class H{constructor(e,t){Object.entries(B).forEach((([t,i])=>{if(!i.is(e[t]))throw new Error(`Provided logger instance must support logger.${t}(...) method`)})),this._logger=e,this._fallback=t}_log(e,t){try{this._logger[e](...t)}catch{this._fallback[e](...t)}}error(...e){this._log("error",e)}warn(...e){this._log("warn",e)}info(...e){this._log("info",e)}debug(...e){this._log("debug",e)}}class q{static deprecated(e,t){return`"${e}" is deprecated, please use "${t}"`}static optionBelowMinimum(e,t,i){return`Config option "${e}" had invalid value of ${t}, using minimum of ${i} instead`}static unknownOption(e){return`Ignoring unknown config option "${e}"`}static wrongOptionType(e,t,i){return`Config option "${e}" should be of type ${t}, got ${i}, using default value`}static wrongOptionTypeBoolean(e,t){return`Config option "${e}" should be a boolean, got ${t}, converting to boolean`}static invalidTagValue(e){return`Config option "${e}" must only contain letters, numbers, ., _ or -.`}static tagValueTooLong(e){return`Value of "${e}" was longer than 64 characters and was discarded.`}static partialEndpoint(e){return`You have set custom uris without specifying the ${e} URI; connections may not work properly`}}const W=_.stringMatchingRegex(/^(\w|\.|-)+$/),J=(e,t)=>W.is(e)?e.length>64?{valid:!1,message:q.tagValueTooLong(t)}:{valid:!0}:{valid:!1,message:q.invalidTagValue(t)};function G(e){return e.replace(/\/+$/,"")}function X(e){return e.replace(/^\/+/,"").replace(/\?$/,"")}class Y{constructor(e,t,i=Y.DEFAULT_EVENTS,r="/bulk",n="/diagnostic",s=!0,a){this.streaming=G(e),this.polling=G(t),this.events=G(i),this.analyticsEventPath=r,this.diagnosticEventPath=n,this.includeAuthorizationHeader=s,this.payloadFilterKey=a}}function Q(e,t){if(0===t.length)return e;return`${e}?${t.map((({key:e,value:t})=>`${e}=${t}`)).join("&")}`}function Z(e,t,i){const r=X(t);return Q(`${e.events}/${r}`,i)}Y.DEFAULT_EVENTS="https://events.launchdarkly.com";class ee extends Error{constructor(e){super(e),this.name="LaunchDarklyUnexpectedResponseError"}}class te extends Error{constructor(e){super(e),this.name="LaunchDarklyClientError"}}class ie extends Error{constructor(e){super(e),this.name="LaunchDarklyTimeoutError"}}function re(e){return!(e>=400&&e<500)||(400===e||408===e||429===e)}function ne(e){return 413===e||re(e)}const se=(e,t)=>e?Object.entries(e).reduce(((e,[i,r])=>(!Boolean(r)||(e=>"{}"===JSON.stringify(e))(r)||t?.includes(i)||(e[i]="object"==typeof r?se(r,t):r),e)),{}):e;function ae(e,t,i){let r;r=e.status?`error ${e.status}${401===e.status?" (invalid SDK key)":""}`:`I/O error (${e.message||"unknown error"})`;return`Received ${r} for ${t} - ${i??"giving up permanently"}`}const oe=async(e=1e3)=>new Promise((t=>{setTimeout(t,e)}));var le;!function(e){e.MalformedFlag="MALFORMED_FLAG",e.UserNotSpecified="USER_NOT_SPECIFIED",e.FlagNotFound="FLAG_NOT_FOUND",e.ClientNotReady="CLIENT_NOT_READY",e.WrongType="WRONG_TYPE"}(le||(le={}));var ce=le;class ue{static invalidMetricValue(e){return`The track function was called with a non-numeric "metricValue" (${e}), only numeric metric values are supported.`}}ue.MissingContextKeyNoEvent="Context was unspecified or had no key; event will not be sent";class de{constructor(e,t){const{basicConfiguration:i,platform:r}=e,{serviceEndpoints:{analyticsEventPath:n,diagnosticEventPath:s}}=i,{crypto:a,requests:o}=r;this._defaultHeaders={...t},this._eventsUri=Z(i.serviceEndpoints,n,[]),this._diagnosticEventsUri=Z(i.serviceEndpoints,s,[]),this._requests=o,this._crypto=a}async _tryPostingEvents(e,t,i,r){const n={status:F.Succeeded},s={...this._defaultHeaders,"content-type":"application/json"};let a;i&&(s["x-launchdarkly-payload-id"]=i,s["x-launchDarkly-event-schema"]="4");try{const{status:i,headers:r}=await this._requests.fetch(t,{headers:s,body:JSON.stringify(e),compressBodyIfPossible:!0,method:"POST",keepalive:!0}),o=Date.parse(r.get("date")||"");if(o&&(n.serverTime=o),i<=204)return n;if(a=new ee(ae({status:i,message:"some events were dropped"},"event posting")),!re(i))return ne(i)?n.status=F.Failed:n.status=F.FailedAndMustShutDown,n.error=a,n}catch(e){a=e}return a&&!r?(n.status=F.Failed,n.error=a,n):(await oe(),this._tryPostingEvents(e,this._eventsUri,i,!1))}async sendEventData(e,t){const i=e===I.AnalyticsEvents?this._crypto.randomUUID():void 0,r=e===I.AnalyticsEvents?this._eventsUri:this._diagnosticEventsUri;return this._tryPostingEvents(t,r,i,!0)}}function he(e){return"feature"===e.kind}class _e{constructor(e,t,i,r,n,s){this.count=e,this.key=t,this.value=i,this.version=n,this.variation=s,this.default=r}increment(){this.count+=1}}class fe{constructor(){this._startDate=0,this._endDate=0,this._counters={},this._contextKinds={}}summarizeEvent(e){if(he(e)&&!e.excludeFromSummaries){const t=function(e){return`${e.key}:${null!==e.variation&&void 0!==e.variation?e.variation:""}:${null!==e.version&&void 0!==e.version?e.version:""}`}(e),i=this._counters[t];let r=this._contextKinds[e.key];r||(r=new Set,this._contextKinds[e.key]=r),e.context.kinds.forEach((e=>r.add(e))),i?i.increment():this._counters[t]=new _e(1,e.key,e.value,e.default,e.version,e.variation),(0===this._startDate||e.creationDate<this._startDate)&&(this._startDate=e.creationDate),e.creationDate>this._endDate&&(this._endDate=e.creationDate)}}getSummary(){const e=Object.values(this._counters).reduce(((e,t)=>{let i=e[t.key];i||(i={default:t.default,counters:[],contextKinds:[...this._contextKinds[t.key]]},e[t.key]=i);const r={value:t.value,count:t.count};return void 0!==t.variation&&null!==t.variation&&(r.variation=t.variation),void 0!==t.version&&null!==t.version?r.version=t.version:r.unknown=!0,i.counters.push(r),e}),{});return{startDate:this._startDate,endDate:this._endDate,features:e,kind:"summary"}}clearSummary(){this._startDate=0,this._endDate=0,this._counters={},this._contextKinds={}}}class ve extends Error{constructor(e){super(e),this.name="LaunchDarklyInvalidSDKKeyError"}}function ge(e){const t=Math.trunc(e);return 1===t||0!==t&&0===Math.floor(Math.random()*t)}class pe{constructor(e,t,i,r,n=1,s){this.context=e,this.key=t,this.data=i,this.metricValue=r,this.samplingRatio=n,this.url=s,this.kind="custom",this.creationDate=Date.now(),this.context=e}}class ye{constructor(e,t,i,r,n,s,a,o,l,c,u,d,h=1){this.withReasons=e,this.context=t,this.key=i,this.samplingRatio=h,this.kind="feature",this.creationDate=Date.now(),this.value=r,this.default=n,void 0!==s&&(this.version=s),void 0!==a&&(this.variation=a),void 0!==o&&(this.trackEvents=o),void 0!==l&&(this.prereqOf=l),void 0!==c&&(this.reason=c),void 0!==u&&(this.debugEventsUntilDate=u),void 0!==d&&(this.excludeFromSummaries=d)}}class me{constructor(e,t=1){this.context=e,this.samplingRatio=t,this.kind="identify",this.creationDate=Date.now()}}class be{constructor(e,t,i){this._objProcessors=e,this._errorHandler=t,this._logger=i,this._listeners=[],this._tempId=void 0,this._tempBasis=!1,this._tempUpdates=[],this._processServerIntent=e=>{if(this._resetAll(),!e.payloads.length)return;const t=e.payloads[0];switch(t?.code){case"xfer-full":this._tempBasis=!0;break;case"xfer-changes":this._tempBasis=!1;break;case"none":this._tempBasis=!1,this._processIntentNone(t);break;default:return}this._tempId=t?.id},this._processPutObject=e=>{if(!(this._tempId&&e.kind&&e.key&&e.version&&e.object))return;const t=this._processObj(e.kind,e.object);t?this._tempUpdates.push({kind:e.kind,key:e.key,version:e.version,object:t}):this._logger?.warn(`Unable to process object for kind: '${e.kind}'`)},this._processDeleteObject=e=>{this._tempId&&e.kind&&e.key&&e.version&&this._tempUpdates.push({kind:e.kind,key:e.key,version:e.version,deleted:!0})},this._processIntentNone=e=>{if(!e.id||!e.target)return;const t={id:e.id,version:e.target,basis:!1,updates:[]};this._listeners.forEach((e=>e(t))),this._resetAfterEmission()},this._processPayloadTransferred=e=>{if(!this._tempId||!e.state||!e.version)return void this._resetAll();const t={id:this._tempId,version:e.version,state:e.state,basis:this._tempBasis,updates:this._tempUpdates};this._listeners.forEach((e=>e(t))),this._resetAfterEmission()},this._processGoodbye=e=>{this._logger?.info(`Goodbye was received from the LaunchDarkly connection with reason: ${e.reason}.`),this._resetAll()},this._processError=e=>{this._logger?.info(`An issue was encountered receiving updates for payload ${this._tempId} with reason: ${e.reason}.`),this._resetAfterError()}}addPayloadListener(e){this._listeners.push(e)}removePayloadListener(e){const t=this._listeners.indexOf(e,0);t>-1&&this._listeners.splice(t,1)}processEvents(e){e.forEach((e=>{switch(e.event){case"server-intent":this._processServerIntent(e.data);break;case"put-object":this._processPutObject(e.data);break;case"delete-object":this._processDeleteObject(e.data);break;case"payload-transferred":this._processPayloadTransferred(e.data);break;case"goodbye":this._processGoodbye(e.data);break;case"error":this._processError(e.data)}}))}_processObj(e,t){return this._objProcessors[e]?.(t)}_resetAfterEmission(){this._tempBasis=!1,this._tempUpdates=[]}_resetAfterError(){this._tempUpdates=[]}_resetAll(){this._tempId=void 0,this._tempBasis=!1,this._tempUpdates=[]}}const we="unknown plugin";function Se(e,t){try{return t.getMetadata().name||we}catch{return e.error("Exception thrown getting metadata for plugin. Unable to get plugin name."),we}}var ke=Object.freeze({__proto__:null,ClientMessages:ue,DiagnosticsManager:class{constructor(e,t,i){this._platform=t,this._diagnosticInitConfig=i,this._streamInits=[],this._startTime=Date.now(),this._dataSinceDate=this._startTime,this._id={diagnosticId:t.crypto.randomUUID(),sdkKeySuffix:e.length>6?e.substring(e.length-6):e}}createInitEvent(){const e=this._platform.info.sdkData(),t=this._platform.info.platformData();return{kind:"diagnostic-init",id:this._id,creationDate:this._startTime,sdk:e,configuration:this._diagnosticInitConfig,platform:{name:t.name,osArch:t.os?.arch,osName:t.os?.name,osVersion:t.os?.version,...t.additional||{}}}}recordStreamInit(e,t,i){const r={timestamp:e,failed:t,durationMillis:i};this._streamInits.push(r)}createStatsEventAndReset(e,t,i){const r=Date.now(),n={kind:"diagnostic",id:this._id,creationDate:r,dataSinceDate:this._dataSinceDate,droppedEvents:e,deduplicatedUsers:t,eventsInLastBatch:i,streamInits:this._streamInits};return this._streamInits=[],this._dataSinceDate=r,n}},ErrorKinds:ce,EventFactoryBase:class{constructor(e){this._withReasons=e}evalEvent(e){return new ye(this._withReasons,e.context,e.flagKey,e.value,e.defaultVal,e.version,e.variation??void 0,e.trackEvents||e.addExperimentData,e.prereqOfFlagKey,this._withReasons||e.addExperimentData?e.reason:void 0,e.debugEventsUntilDate,e.excludeFromSummaries,e.samplingRatio)}unknownFlagEvent(e,t,i){return new ye(this._withReasons,i,e,t,t,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}identifyEvent(e){return new me(e,1)}customEvent(e,t,i,r,n=1){return new pe(t,e,i??void 0,r??void 0,n)}},EventProcessor:class{constructor(e,t,r,n,s,a=!0){this._config=e,this._contextDeduplicator=n,this._diagnosticsManager=s,this._summarizer=new fe,this._queue=[],this._lastKnownPastTime=0,this._droppedEvents=0,this._deduplicatedUsers=0,this._exceededCapacity=!1,this._eventsInLastBatch=0,this._shutdown=!1,this._flushUsersTimer=null,this._capacity=e.eventsCapacity,this._logger=t.basicConfiguration.logger,this._eventSender=new de(t,r),this._contextFilter=new O(e.allAttributesPrivate,e.privateAttributes.map((e=>new i(e)))),a&&this.start()}start(){if(void 0!==this._contextDeduplicator?.flushInterval&&(this._flushUsersTimer=setInterval((()=>{this._contextDeduplicator?.flush()}),1e3*this._contextDeduplicator.flushInterval)),this._flushTimer=setInterval((async()=>{try{await this.flush()}catch(e){this._logger?.debug(`Flush failed: ${e}`)}}),1e3*this._config.flushInterval),this._diagnosticsManager){const e=this._diagnosticsManager.createInitEvent();this._postDiagnosticEvent(e),this._diagnosticsTimer=setInterval((()=>{const e=this._diagnosticsManager.createStatsEventAndReset(this._droppedEvents,this._deduplicatedUsers,this._eventsInLastBatch);this._droppedEvents=0,this._deduplicatedUsers=0,this._postDiagnosticEvent(e)}),1e3*this._config.diagnosticRecordingInterval)}this._logger?.debug("Started EventProcessor.")}_postDiagnosticEvent(e){this._eventSender.sendEventData(I.DiagnosticEvent,e)}close(){clearInterval(this._flushTimer),this._flushUsersTimer&&clearInterval(this._flushUsersTimer),this._diagnosticsTimer&&clearInterval(this._diagnosticsTimer)}async flush(){if(this._shutdown)throw new ve("Events cannot be posted because a permanent error has been encountered. This is most likely an invalid SDK key. The specific error information is logged independently.");const e=this._queue;this._queue=[];const t=this._summarizer.getSummary();this._summarizer.clearSummary(),Object.keys(t.features).length&&e.push(t),e.length&&(this._eventsInLastBatch=e.length,this._logger?.debug("Flushing %d events",e.length),await this._tryPostingEvents(e))}sendEvent(e){if(this._shutdown)return;if("migration_op"===e.kind){if(ge(e.samplingRatio)){const t={...e,context:e.context?this._contextFilter.filter(e.context):void 0};1===t.samplingRatio&&delete t.samplingRatio,this._enqueue(t)}return}this._summarizer.summarizeEvent(e);const t=he(e),i=t&&e.trackEvents||!t,r=this._shouldDebugEvent(e),n=function(e){return"identify"===e.kind}(e),s=this._contextDeduplicator?.processContext(e.context);s||n||(this._deduplicatedUsers+=1);s&&!n&&this._enqueue(this._makeOutputEvent({kind:"index",creationDate:e.creationDate,context:e.context,samplingRatio:1},!1)),i&&ge(e.samplingRatio)&&this._enqueue(this._makeOutputEvent(e,!1)),r&&ge(e.samplingRatio)&&this._enqueue(this._makeOutputEvent(e,!0))}_makeOutputEvent(e,t){switch(e.kind){case"feature":{const i={kind:t?"debug":"feature",creationDate:e.creationDate,context:this._contextFilter.filter(e.context,!t),key:e.key,value:e.value,default:e.default};return 1!==e.samplingRatio&&(i.samplingRatio=e.samplingRatio),e.prereqOf&&(i.prereqOf=e.prereqOf),void 0!==e.variation&&(i.variation=e.variation),void 0!==e.version&&(i.version=e.version),e.reason&&(i.reason=e.reason),i}case"index":case"identify":{const t={kind:e.kind,creationDate:e.creationDate,context:this._contextFilter.filter(e.context)};return 1!==e.samplingRatio&&(t.samplingRatio=e.samplingRatio),t}case"custom":{const t={kind:"custom",creationDate:e.creationDate,key:e.key,context:this._contextFilter.filter(e.context)};return 1!==e.samplingRatio&&(t.samplingRatio=e.samplingRatio),void 0!==e.data&&(t.data=e.data),void 0!==e.metricValue&&(t.metricValue=e.metricValue),void 0!==e.url&&(t.url=e.url),t}case"click":return{kind:"click",creationDate:e.creationDate,contextKeys:e.context.kindsAndKeys,key:e.key,url:e.url,selector:e.selector};case"pageview":return{kind:"pageview",creationDate:e.creationDate,contextKeys:e.context.kindsAndKeys,key:e.key,url:e.url};default:return e}}_enqueue(e){this._queue.length<this._capacity?(this._queue.push(e),this._exceededCapacity=!1):(this._exceededCapacity||(this._exceededCapacity=!0,this._logger?.warn("Exceeded event queue capacity. Increase capacity to avoid dropping events.")),this._droppedEvents+=1)}_shouldDebugEvent(e){return he(e)&&e.debugEventsUntilDate&&e.debugEventsUntilDate>this._lastKnownPastTime&&e.debugEventsUntilDate>Date.now()}async _tryPostingEvents(e){const t=await this._eventSender.sendEventData(I.AnalyticsEvents,e);if(t.status===F.FailedAndMustShutDown&&(this._shutdown=!0),t.serverTime&&(this._lastKnownPastTime=t.serverTime),t.error)throw t.error}},InputCustomEvent:pe,InputEvalEvent:ye,InputIdentifyEvent:me,NullEventProcessor:class{close(){}async flush(){}sendEvent(){}},PayloadProcessor:be,PayloadStreamReader:class{constructor(e,t,i,r){this._errorHandler=i,this._logger=r,this._attachHandler(e,"server-intent"),this._attachHandler(e,"put-object"),this._attachHandler(e,"delete-object"),this._attachHandler(e,"payload-transferred"),this._attachHandler(e,"goodbye"),this._attachHandler(e,"error"),this._payloadProcessor=new be(t,i,r)}addPayloadListener(e){this._payloadProcessor.addPayloadListener(e)}removePayloadListener(e){this._payloadProcessor.removePayloadListener(e)}_attachHandler(t,i){t.addEventListener(i,(async t=>{if(t?.data){this._logger?.debug(`Received ${i} event. Data is ${t.data}`);try{this._payloadProcessor.processEvents([{event:i,data:JSON.parse(t.data)}])}catch{this._logger?.error(`Stream received data that was unable to be processed in "${i}" message`),this._logger?.debug(`Data follows: ${t.data}`),this._errorHandler?.(e.DataSourceErrorKind.InvalidData,"Malformed data in EventStream.")}}else this._errorHandler?.(e.DataSourceErrorKind.Unknown,"Event from EventStream missing data.")}))}},initMetadataFromHeaders:function(e){if(e){const t=Object.keys(e).find((e=>"x-ld-envid"===e.toLowerCase()));if(t)return{environmentId:e[t]}}},isLegacyUser:g,isMultiKind:v,isSingleKind:f,safeGetHooks:function(e,t,i){const r=[];return i.forEach((i=>{try{const n=i.getHooks?.(t);void 0===n?e.error(`Plugin ${Se(e,i)} returned undefined from getHooks.`):n&&n.length>0&&r.push(...n)}catch(t){e.error(`Exception thrown getting hooks for plugin ${Se(e,i)}. Unable to get hooks.`)}})),r},safeGetName:Se,safeRegisterPlugins:function(e,t,i,r){r.forEach((r=>{try{r.register(i,t)}catch(t){e.error(`Exception thrown registering plugin ${Se(e,r)}.`)}}))},shouldSample:ge});e.ApplicationTags=class{constructor(e){const t={},i=e?.application,r=e?.logger;i&&Object.entries(i).forEach((([e,i])=>{if(null!=i){const{valid:n,message:s}=J(i,`application.${e}`);n?"versionName"===e?t["application-version-name"]=[i]:t[`application-${e}`]=[i]:r?.warn(s)}}));const n=Object.keys(t);n.length&&(this.value=n.sort().flatMap((e=>t[e].sort().map((t=>`${e}/${t}`)))).join(" "))}},e.AttributeReference=i,e.BasicLogger=z,e.ClientContext=class{constructor(e,t,i){this.platform=i,this.basicConfiguration={tags:t.tags,logger:t.logger,offline:t.offline,serviceEndpoints:t.serviceEndpoints,sdkKey:e}}},e.CompositeDataSource=class{constructor(e,t,i,r={[M.Valid]:{durationMS:3e5,transition:"recover"},[M.Interrupted]:{durationMS:12e4,transition:"fallback"}},n=new x(1e3,3e4)){this._logger=i,this._transitionConditions=r,this._backoff=n,this._stopped=!0,this._cancelTokens=[],this._cancellableDelay=e=>{let t;return{promise:new Promise(((i,r)=>{t=setTimeout(i,e)})),cancel(){t&&(clearTimeout(t),t=void 0)}}},this._externalTransitionPromise=new Promise((e=>{this._externalTransitionResolve=e})),this._initPhaseActive=e.length>0,this._initFactories=new P(!1,e),this._syncFactories=new P(!0,t)}async start(e,t){if(!this._stopped)return void this._logger?.info("CompositeDataSource already running. Ignoring call to start.");this._stopped=!1,this._logger?.debug(`CompositeDataSource starting with (${this._initFactories.length()} initializers, ${this._syncFactories.length()} synchronizers).`);const i=this._wrapStatusCallbackWithSanitizer(t);let r;for(i(M.Initializing);;){const{dataSource:n,isPrimary:s,cullDSFactory:a}=this._pickDataSource(r),o=new Promise((t=>{if(n){let r,o=()=>{};const l=new D(((r,n)=>{this._backoff.success(),e(r,n),r&&this._initPhaseActive&&(l.disable(),this._consumeCancelToken(o),i(M.Interrupted),t({transition:"switchToSync"}))}),((e,n)=>{if(this._logger?.debug(`CompositeDataSource received state ${e} from underlying data source.`),n||e===M.Closed)l.disable(),!1===n.recoverable&&a?.(),i(e,n),this._consumeCancelToken(o),t({transition:"fallback",err:n});else if(i(e),e!==r){r=e,this._consumeCancelToken(o);const n=this._lookupTransitionCondition(e,s);if(n){const{promise:e,cancel:r}=this._cancellableDelay(n.durationMS);o=r,this._cancelTokens.push(o),e.then((()=>{this._consumeCancelToken(r),l.disable(),i(M.Interrupted),t({transition:n.transition})}))}}}));n.start(((e,t)=>l.dataHandler(e,t)),((e,t)=>l.statusHandler(e,t)))}else t({transition:"stop",err:{name:"ExhaustedDataSources",message:"CompositeDataSource has exhausted all configured initializers and synchronizers."}})}));let l=await Promise.race([o,this._externalTransitionPromise]);if(n?.stop(),l.err&&"stop"!==l.transition){const e=this._backoff.fail(),{promise:t,cancel:i}=this._cancellableDelay(e);this._cancelTokens.push(i);const r=t.then((()=>(this._consumeCancelToken(i),l)));l=await Promise.race([r,this._externalTransitionPromise]),this._consumeCancelToken(i)}if(r=l.transition,"stop"===l.transition){t(M.Closed,l.err);break}}this._reset()}async stop(){this._cancelTokens.forEach((e=>e())),this._cancelTokens=[],this._externalTransitionResolve?.({transition:"stop"})}_reset(){this._stopped=!0,this._initPhaseActive=this._initFactories.length()>0,this._initFactories.reset(),this._syncFactories.reset(),this._externalTransitionPromise=new Promise((e=>{this._externalTransitionResolve=e}))}_pickDataSource(e){let t,i;switch(e){case"switchToSync":this._initPhaseActive=!1,this._syncFactories.reset(),i=0===this._syncFactories.pos(),t=this._syncFactories.next();break;case"recover":this._initPhaseActive?(this._initFactories.reset(),i=0===this._initFactories.pos(),t=this._initFactories.next()):(this._syncFactories.reset(),i=0===this._syncFactories.pos(),t=this._syncFactories.next());break;default:this._initPhaseActive?(i=0===this._initFactories.pos(),t=this._initFactories.next()):(i=0===this._syncFactories.pos(),t=this._syncFactories.next())}return t?{dataSource:t(),isPrimary:i,cullDSFactory:()=>{t&&this._syncFactories.remove(t)}}:{dataSource:void 0,isPrimary:i,cullDSFactory:void 0}}_lookupTransitionCondition(e,t){const i=this._transitionConditions[e];if(!t||"recover"!==i?.transition)return i}_consumeCancelToken(e){e();const t=this._cancelTokens.indexOf(e,0);t>-1&&this._cancelTokens.splice(t,1)}_wrapStatusCallbackWithSanitizer(e){let t,i,r=!1;return(n,s)=>{let a=n;if(n===M.Closed&&(a=M.Interrupted),a!==t||s!==i){if(a===M.Initializing){if(r)return;r=!0}t=a,i=s,e(a,s)}}}},e.Context=S,e.ContextFilter=O,e.DateValidator=d,e.DefaultBackoff=x,e.FactoryOrInstance=r,e.Function=l,e.KindValidator=h,e.LDClientError=te,e.LDFileDataSourceError=j,e.LDPollingError=R,e.LDStreamingError=A,e.LDTimeoutError=ie,e.LDUnexpectedResponseError=ee,e.NullableBoolean=c,e.NumberWithMinimum=a,e.OptionMessages=q,e.SafeLogger=H,e.ServiceEndpoints=Y,e.StringMatchingRegex=o,e.Type=n,e.TypeArray=s,e.TypeValidators=_,e.base64UrlEncode=(e,t)=>t.btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.cancelableTimedPromise=function(e,t){let i,r;return{promise:new Promise(((n,s)=>{r=n,i=setTimeout((()=>{s(new ie(`${t} timed out after ${e} seconds.`))}),1e3*e)})),cancel:()=>{r(),clearTimeout(i)}}},e.clone=function(e){return null==e?e:JSON.parse(JSON.stringify(e))},e.createSafeLogger=e=>{const t=new z({level:"info",destination:console.error,formatter:K});return e?new H(e,t):t},e.debounce=(e,t=5e3)=>{let i;return(...r)=>{clearTimeout(i),i=setTimeout((()=>{e(...r)}),t)}},e.deepCompact=se,e.defaultHeaders=function(e,t,i,r=!0,n="user-agent"){const{userAgentBase:s,version:a,wrapperName:o,wrapperVersion:l}=t.sdkData(),c={[n]:`${s??"NodeJSClient"}/${a}`};return r&&(c.authorization=e),o&&(c["x-launchdarkly-wrapper"]=l?`${o}/${l}`:o),i?.value&&(c["x-launchdarkly-tags"]=i.value),c},e.fastDeepEqual=function e(t,i){if(t===i)return!0;if(t&&i&&"object"==typeof t&&"object"==typeof i){if(t.constructor!==i.constructor)return!1;var r,n,s;if(Array.isArray(t)){if((r=t.length)!=i.length)return!1;for(n=r;0!==n--;)if(!e(t[n],i[n]))return!1;return!0}if(t instanceof Map&&i instanceof Map){if(t.size!==i.size)return!1;for(n of t.entries())if(!i.has(n[0]))return!1;for(n of t.entries())if(!e(n[1],i.get(n[0])))return!1;return!0}if(t instanceof Set&&i instanceof Set){if(t.size!==i.size)return!1;for(n of t.entries())if(!i.has(n[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(i)){if((r=t.length)!=i.length)return!1;for(n=r;0!==n--;)if(t[n]!==i[n])return!1;return!0}if(t.constructor===RegExp)return t.source===i.source&&t.flags===i.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===i.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===i.toString();if((r=(s=Object.keys(t)).length)!==Object.keys(i).length)return!1;for(n=r;0!==n--;)if(!Object.prototype.hasOwnProperty.call(i,s[n]))return!1;for(n=r;0!==n--;){var a=s[n];if(!e(t[a],i[a]))return!1}return!0}return t!=t&&i!=i},e.getEventsUri=Z,e.getPollingUri=function(e,t,i){const r=X(t),n=[...i];return e.payloadFilterKey&&n.push({key:"filter",value:e.payloadFilterKey}),Q(`${e.polling}/${r}`,n)},e.getStreamingUri=function(e,t,i){const r=X(t),n=[...i];return e.payloadFilterKey&&n.push({key:"filter",value:e.payloadFilterKey}),Q(`${e.streaming}/${r}`,n)},e.httpErrorMessage=ae,e.internal=ke,e.isHttpLocallyRecoverable=ne,e.isHttpRecoverable=re,e.noop=()=>{},e.secondsToMillis=function(e){return Math.trunc(1e3*e)},e.shouldRetry=function({status:e}){return!e||re(e)},e.sleep=oe,e.subsystem=V,e.timedPromise=(e,t)=>new Promise(((i,r)=>{setTimeout((()=>{r(new ie(`${t} timed out after ${e} seconds.`))}),1e3*e)}))}(o);var l={},c={},u={};Object.defineProperty(u,"__esModule",{value:!0});var d={};Object.defineProperty(d,"__esModule",{value:!0});var h,_,f={};Object.defineProperty(f,"__esModule",{value:!0}),f.IsMigrationStage=f.LDMigrationStage=void 0,(_=h||(f.LDMigrationStage=h={})).Off="off",_.DualWrite="dualwrite",_.Shadow="shadow",_.Live="live",_.RampDown="rampdown",_.Complete="complete",f.IsMigrationStage=function(e){return Object.values(h).includes(e)};var v={};Object.defineProperty(v,"__esModule",{value:!0});var g,p,y,m,b,w={};Object.defineProperty(w,"__esModule",{value:!0}),w.LDConsistencyCheck=void 0,(p=g||(w.LDConsistencyCheck=g={}))[p.Inconsistent=0]="Inconsistent",p[p.Consistent=1]="Consistent",p[p.NotChecked=2]="NotChecked",y=c,m=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),b=r&&r.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||m(t,e,i)},Object.defineProperty(y,"__esModule",{value:!0}),b(u,y),b(d,y),b(f,y),b(v,y),b(w,y);var S={},k={};Object.defineProperty(k,"__esModule",{value:!0});var E={};Object.defineProperty(E,"__esModule",{value:!0});var O={};Object.defineProperty(O,"__esModule",{value:!0});var x={};Object.defineProperty(x,"__esModule",{value:!0});var D,M,P,T,C={};Object.defineProperty(C,"__esModule",{value:!0}),C.LDConcurrentExecution=C.LDSerialExecution=C.LDExecution=C.LDExecutionOrdering=void 0,(M=D||(C.LDExecutionOrdering=D={}))[M.Fixed=0]="Fixed",M[M.Random=1]="Random",(T=P||(C.LDExecution=P={}))[T.Serial=0]="Serial",T[T.Concurrent=1]="Concurrent";C.LDSerialExecution=class{constructor(e){this.ordering=e,this.type=P.Serial}};C.LDConcurrentExecution=class{constructor(){this.type=P.Concurrent}},function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(k,e),i(E,e),i(O,e),i(x,e),i(C,e)}(S);var I={};Object.defineProperty(I,"__esModule",{value:!0});var F={};Object.defineProperty(F,"__esModule",{value:!0});var j={};Object.defineProperty(j,"__esModule",{value:!0});var R={};Object.defineProperty(R,"__esModule",{value:!0});var A={};Object.defineProperty(A,"__esModule",{value:!0});var V={},N={};Object.defineProperty(N,"__esModule",{value:!0});var L={};Object.defineProperty(L,"__esModule",{value:!0}),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(N,e),i(L,e)}(V);var K={},$={};Object.defineProperty($,"__esModule",{value:!0});var U={};Object.defineProperty(U,"__esModule",{value:!0});var z={};Object.defineProperty(z,"__esModule",{value:!0});var B={};Object.defineProperty(B,"__esModule",{value:!0});var H={};Object.defineProperty(H,"__esModule",{value:!0});var q={};Object.defineProperty(q,"__esModule",{value:!0});var W={};Object.defineProperty(W,"__esModule",{value:!0});var J={};Object.defineProperty(J,"__esModule",{value:!0});var G={};Object.defineProperty(G,"__esModule",{value:!0});var X={};Object.defineProperty(X,"__esModule",{value:!0}),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i($,e),i(U,e),i(z,e),i(B,e),i(H,e),i(j,e),i(q,e),i(W,e),i(J,e),i(G,e),i(X,e)}(K);var Y={},Q={};Object.defineProperty(Q,"__esModule",{value:!0});var Z={};Object.defineProperty(Z,"__esModule",{value:!0}),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(Q,e),i(R,e),i(Z,e)}(Y),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.subsystems=e.interfaces=e.integrations=void 0,i(c,e),i(S,e),i(I,e),i(F,e),i(j,e),i(R,e),i(A,e),e.integrations=V,e.interfaces=K,e.subsystems=Y}(l);var ee={},te={};Object.defineProperty(te,"__esModule",{value:!0});te.default=class{constructor(e){this._keyMap=new Map,this._head=0,this._tail=0,this._size=0;const{max:t}=e;this._max=t,this._values=new Array(t),this._keys=new Array(t),this._next=new Uint32Array(t),this._prev=new Uint32Array(t),e.maxAge?(this._lastUpdated=new Array(t).fill(0),this._maxAge=e.maxAge):(this._lastUpdated=[],this._maxAge=0)}set(e,t){let i=this._keyMap.get(e);void 0===i?(i=this._index(),this._keys[i]=e,this._keyMap.set(e,i),this._next[this._tail]=i,this._prev[i]=this._tail,this._tail=i,this._size+=1):this._setTail(i),this._values[i]=t,this._maxAge&&(this._lastUpdated[i]=Date.now())}get(e){const t=this._keyMap.get(e);if(void 0!==t){if(this._maxAge){const e=this._lastUpdated[t];if(Date.now()-e>this._maxAge)return}return this._setTail(t),this._maxAge&&(this._lastUpdated[t]=Date.now()),this._values[t]}}clear(){this._head=0,this._tail=0,this._size=0,this._values.fill(void 0),this._keys.fill(void 0),this._next.fill(0),this._prev.fill(0),this._keyMap.clear()}_index(){return 0===this._size?this._tail:this._size===this._max?this._evict():this._size}_evict(){const{_head:e}=this,t=this._keys[e];return this._head=this._next[e],this._keyMap.delete(t),this._size-=1,e}_link(e,t){this._prev[t]=e,this._next[e]=t}_setTail(e){e!==this._tail&&(e===this._head?this._head=this._next[e]:this._link(this._prev[e],this._next[e]),this._link(this._tail,e),this._tail=e)}},Object.defineProperty(ee,"__esModule",{value:!0});const ie=o,re=s,ne=te;ee.default=class{constructor(e,t,i,r){this._store=e,this._logger=i,this._crypto=r,this.statusProvider=new re.default((async()=>this._pollStoreAndUpdateStatus())),this._staleTimeMs=1e3*(ie.TypeValidators.Number.is(t.staleAfter)&&t.staleAfter>0?t.staleAfter:120);const n=1e3*(ie.TypeValidators.Number.is(t.statusPollInterval)&&t.statusPollInterval>0?t.statusPollInterval:5);this._pollHandle=e?setInterval((()=>this._pollStoreAndUpdateStatus()),n):null,e&&(this._cache=new ne.default({max:t.userCacheSize||1e3,maxAge:1e3*(t.userCacheTime||5)}))}close(){this._pollHandle&&(clearInterval(this._pollHandle),this._pollHandle=void 0),this._store&&this._store.close()}async getUserMembership(e){var t,i,r;if(!this._store)return;const n=null===(t=this._cache)||void 0===t?void 0:t.get(e);let s;if(n)s=n.membership;else try{s=await this._store.getUserMembership(this._hashForUserKey(e));const t={membership:s};null===(i=this._cache)||void 0===i||i.set(e,t)}catch(e){return null===(r=this._logger)||void 0===r||r.error(`Big Segment store membership query returned error: ${e}`),[null,"STORE_ERROR"]}this.statusProvider.getStatus()||await this._pollStoreAndUpdateStatus();const a=this.statusProvider.getStatus();return a.available?[s||null,a.stale?"STALE":"HEALTHY"]:[s||null,"STORE_ERROR"]}async _pollStoreAndUpdateStatus(){var e,t,i;if(!this._store)return void this.statusProvider.setStatus({available:!1,stale:!1});let r;null===(e=this._logger)||void 0===e||e.debug("Querying Big Segment store status");try{const e=await this._store.getMetadata();r={available:!0,stale:!e||!e.lastUpToDate||this._isStale(e.lastUpToDate)}}catch(e){null===(t=this._logger)||void 0===t||t.error(`Big Segment store status query returned error: ${e}`),r={available:!1,stale:!1}}const n=this.statusProvider.getStatus();n&&n.available===r.available&&n.stale===r.stale||(null===(i=this._logger)||void 0===i||i.debug("Big Segment store status changed from %s to %s",JSON.stringify(n),JSON.stringify(r)),this.statusProvider.setStatus(r),this.statusProvider.notify())}_hashForUserKey(e){const t=this._crypto.createHash("sha256");if(t.update(e),!t.digest)throw new Error("Platform must implement digest or asyncDigest");return t.digest("base64")}_isStale(e){return Date.now()-e>=this._staleTimeMs}};var se={},ae={},oe={};Object.defineProperty(oe,"__esModule",{value:!0});class le{static getKeyFromPath(e,t){return t.startsWith(e.streamApiPath)?t.substring(e.streamApiPath.length):void 0}}le.Features={namespace:"features",streamApiPath:"/flags/"},le.Segments={namespace:"segments",streamApiPath:"/segments/"},oe.default=le,Object.defineProperty(ae,"__esModule",{value:!0}),ae.deserializeSegment=ae.serializeSegment=ae.deserializeFlag=ae.serializeFlag=ae.deserializeDelete=ae.deserializePatch=ae.deserializePoll=ae.deserializeAll=ae.processSegment=ae.processFlag=ae.replacer=ae.nullReplacer=void 0;const ce=o,ue=oe,de=100;function he(e,t){const i=[];if(null==e)return;const r=Object.entries(e).filter((([e,i])=>!(null==t?void 0:t.includes(e))));for(i.push(...r.map((([t,i])=>({key:t,value:i,parent:e}))));i.length;){const e=i.pop();null!==e.value||Array.isArray(e.parent)?"object"==typeof e.value&&null!==e.value&&i.push(...Object.entries(e.value).map((([t,i])=>({key:t,value:i,parent:e.value})))):delete e.parent[e.key]}}function _e(e,t){if(!(t instanceof ce.AttributeReference||Array.isArray(t)&&t[0]&&t[0]instanceof ce.AttributeReference))return null==t||(t.generated_includedSet&&(t.included=[...t.generated_includedSet],delete t.generated_includedSet),t.generated_excludedSet&&(t.excluded=[...t.generated_excludedSet],delete t.generated_excludedSet),t.includedContexts&&t.includedContexts.forEach((e=>{e.generated_valuesSet&&(e.values=[...e.generated_valuesSet]),delete e.generated_valuesSet})),t.excludedContexts&&t.excludedContexts.forEach((e=>{e.generated_valuesSet&&(e.values=[...e.generated_valuesSet]),delete e.generated_valuesSet}))),t}function fe(e){e&&e.bucketBy&&(e.bucketByAttributeReference=new ce.AttributeReference(e.bucketBy,!e.contextKind))}function ve(e){var t;if(he(e,["variations"]),e.fallthrough&&e.fallthrough.rollout){fe(e.fallthrough.rollout)}null===(t=null==e?void 0:e.rules)||void 0===t||t.forEach((e=>{var t;fe(e.rollout),null===(t=null==e?void 0:e.clauses)||void 0===t||t.forEach((e=>{e&&e.attribute?e.attributeReference=new ce.AttributeReference(e.attribute,!e.contextKind):e&&(e.attributeReference=ce.AttributeReference.InvalidReference)}))}))}function ge(e){var t,i,r,n,s;he(e),(null===(t=null==e?void 0:e.included)||void 0===t?void 0:t.length)&&e.included.length>de&&(e.generated_includedSet=new Set(e.included),delete e.included),(null===(i=null==e?void 0:e.excluded)||void 0===i?void 0:i.length)&&e.excluded.length>de&&(e.generated_excludedSet=new Set(e.excluded),delete e.excluded),(null===(r=null==e?void 0:e.includedContexts)||void 0===r?void 0:r.length)&&e.includedContexts.forEach((e=>{var t;(null===(t=null==e?void 0:e.values)||void 0===t?void 0:t.length)&&e.values.length>de&&(e.generated_valuesSet=new Set(e.values),e.values=[])})),(null===(n=null==e?void 0:e.excludedContexts)||void 0===n?void 0:n.length)&&e.excludedContexts.forEach((e=>{var t;(null===(t=null==e?void 0:e.values)||void 0===t?void 0:t.length)&&e.values.length>de&&(e.generated_valuesSet=new Set(e.values),e.values=[])})),null===(s=null==e?void 0:e.rules)||void 0===s||s.forEach((e=>{var t;e.bucketBy&&(e.bucketByAttributeReference=new ce.AttributeReference(e.bucketBy,!e.rolloutContextKind)),null===(t=null==e?void 0:e.clauses)||void 0===t||t.forEach((e=>{e&&e.attribute?e.attributeReference=new ce.AttributeReference(e.attribute,!e.contextKind):e&&(e.attributeReference=ce.AttributeReference.InvalidReference)}))}))}function pe(e){try{return JSON.parse(e)}catch(e){return}}ae.nullReplacer=he,ae.replacer=_e,ae.processFlag=ve,ae.processSegment=ge,ae.deserializeAll=function(e){var t,i;const r=pe(e);if(r)return Object.values((null===(t=null==r?void 0:r.data)||void 0===t?void 0:t.flags)||[]).forEach((e=>{ve(e)})),Object.values((null===(i=null==r?void 0:r.data)||void 0===i?void 0:i.segments)||[]).forEach((e=>{ge(e)})),r},ae.deserializePoll=function(e){const t=pe(e);if(t)return Object.values((null==t?void 0:t.flags)||[]).forEach((e=>{ve(e)})),Object.values((null==t?void 0:t.segments)||[]).forEach((e=>{ge(e)})),t},ae.deserializePatch=function(e){const t=pe(e);if(t)return t.path.startsWith(ue.default.Features.streamApiPath)?(ve(t.data),t.kind=ue.default.Features):t.path.startsWith(ue.default.Segments.streamApiPath)&&(ge(t.data),t.kind=ue.default.Segments),t},ae.deserializeDelete=function(e){const t=pe(e);if(t)return t.path.startsWith(ue.default.Features.streamApiPath)?t.kind=ue.default.Features:t.path.startsWith(ue.default.Segments.streamApiPath)&&(t.kind=ue.default.Segments),t},ae.serializeFlag=function(e){return JSON.stringify(e,_e)},ae.deserializeFlag=function(e){const t=pe(e);if(t)return ve(t),t},ae.serializeSegment=function(e){return JSON.stringify(e,_e)},ae.deserializeSegment=function(e){const t=pe(e);if(t)return ge(t),t},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createStreamListeners=e.createDeleteListener=e.createPatchListener=e.createPutListener=void 0;const t=o,i=ae,r=oe,{initMetadataFromHeaders:n}=t.internal;e.createPutListener=(e,t,s=()=>{})=>({deserializeData:i.deserializeAll,processJson:async({data:{flags:i,segments:a}},o)=>{const l={[r.default.Features.namespace]:i,[r.default.Segments.namespace]:a};null==t||t.debug("Initializing all data"),e.init(l,s,n(o))}});e.createPatchListener=(e,t,n=()=>{})=>({deserializeData:i.deserializePatch,processJson:async({data:i,kind:s,path:a})=>{if(s){const o=r.default.getKeyFromPath(s,a);o&&(null==t||t.debug(`Updating ${o} in ${s.namespace}`),e.upsert(s,i,n))}}});e.createDeleteListener=(e,t,n=()=>{})=>({deserializeData:i.deserializeDelete,processJson:async({kind:i,path:s,version:a})=>{if(i){const o=r.default.getKeyFromPath(i,s);o&&(null==t||t.debug(`Deleting ${o} in ${i.namespace}`),e.upsert(i,{key:o,version:a,deleted:!0},n))}}});e.createStreamListeners=(t,i,r)=>{const n=new Map;return n.set("put",(0,e.createPutListener)(t,i,null==r?void 0:r.put)),n.set("patch",(0,e.createPatchListener)(t,i,null==r?void 0:r.patch)),n.set("delete",(0,e.createDeleteListener)(t,i,null==r?void 0:r.delete)),n}}(se);var ye={},me={},be={};Object.defineProperty(be,"__esModule",{value:!0});be.default=class{constructor(){this._itemsByNamespace={}}get(e,t){var i;return null===(i=this._itemsByNamespace[e])||void 0===i?void 0:i[t]}set(e,t,i){e in this._itemsByNamespace||(this._itemsByNamespace[e]={}),this._itemsByNamespace[e][t]=i}remove(e,t){const i=this._itemsByNamespace[e];i&&delete i[t]}removeAll(){this._itemsByNamespace={}}enumerate(e){Object.entries(this._itemsByNamespace).forEach((([t,i])=>{Object.entries(i).forEach((([i,r])=>{e(t,i,r)}))}))}mergeFrom(e){e.enumerate(this.set.bind(this))}},Object.defineProperty(me,"__esModule",{value:!0});const we=be;me.default=class{constructor(){this._dependenciesFrom=new we.default,this._dependenciesTo=new we.default}updateDependenciesFrom(e,t,i){const r=this._dependenciesFrom.get(e,t);null==r||r.enumerate(((i,r)=>{const n=this._dependenciesTo.get(i,r);null==n||n.remove(e,t)})),this._dependenciesFrom.set(e,t,i),null==i||i.enumerate(((i,r)=>{let n=this._dependenciesTo.get(i,r);n||(n=new we.default,this._dependenciesTo.set(i,r,n)),n.set(e,t,!0)}))}updateModifiedItems(e,t,i){if(!e.get(t,i)){e.set(t,i,!0);const r=this._dependenciesTo.get(t,i);null==r||r.enumerate(((t,i)=>{this.updateModifiedItems(e,t,i)}))}}reset(){this._dependenciesFrom.removeAll(),this._dependenciesTo.removeAll()}},Object.defineProperty(ye,"__esModule",{value:!0});const Se=oe,ke=me,Ee=be;function Oe(e,t){var i,r;const n=new Ee.default,s=e===Se.default.Features.namespace,a=e===Se.default.Segments.namespace;if(s){const r=t;null===(i=null==r?void 0:r.prerequisites)||void 0===i||i.forEach((t=>{n.set(e,t.key,!0)}))}if(s||a){const e=t;null===(r=null==e?void 0:e.rules)||void 0===r||r.forEach((e=>{var t;null===(t=e.clauses)||void 0===t||t.forEach((e=>{"segmentMatch"===e.op&&e.values.forEach((e=>{n.set(Se.default.Segments.namespace,e,!0)}))}))}))}return n}ye.default=class{constructor(e,t,i){this._featureStore=e,this._hasEventListeners=t,this._onChange=i,this._dependencyTracker=new ke.default}init(e,t,i){const r=this._hasEventListeners(),n=n=>{this._featureStore.init(e,(()=>{Promise.resolve().then((()=>{if(this._dependencyTracker.reset(),Object.entries(e).forEach((([e,t])=>{Object.keys(t||{}).forEach((i=>{const r=t[i];this._dependencyTracker.updateDependenciesFrom(e,i,Oe(e,r))}))})),r){const t=new Ee.default;Object.keys(e).forEach((i=>{const r=(null==n?void 0:n[i])||{},s=e[i],a=Object.assign(Object.assign({},r),s);Object.keys(a).forEach((e=>{this.addIfModified(i,e,r&&r[e],s&&s[e],t)}))})),this.sendChangeEvents(t)}})),null==t||t()}),i)};r?this._featureStore.all(Se.default.Features,(e=>{this._featureStore.all(Se.default.Segments,(t=>{const i={[Se.default.Features.namespace]:e,[Se.default.Segments.namespace]:t};n(i)}))})):n()}upsert(e,t,i){const{key:r}=t,n=this._hasEventListeners(),s=s=>{this._featureStore.upsert(e,t,(()=>{Promise.resolve().then((()=>{if(this._dependencyTracker.updateDependenciesFrom(e.namespace,r,Oe(e.namespace,t)),n){const i=new Ee.default;this.addIfModified(e.namespace,r,s,t,i),this.sendChangeEvents(i)}})),null==i||i()}))};n?this._featureStore.get(e,r,s):s()}addIfModified(e,t,i,r,n){r&&i&&r.version<=i.version||this._dependencyTracker.updateModifiedItems(n,e,t)}sendChangeEvents(e){e.enumerate(((e,t)=>{e===Se.default.Features.namespace&&this._onChange(t)}))}};var xe={},De={},Me={},Pe={};Object.defineProperty(Pe,"__esModule",{value:!0}),Pe.default=function(e){return new Promise((t=>{e((e=>{t(e)}))}))},Object.defineProperty(Me,"__esModule",{value:!0});const Te=Pe;Me.default=class{constructor(e){this._store=e}async get(e,t){return(0,Te.default)((i=>{this._store.get(e,t,i)}))}async all(e){return(0,Te.default)((t=>{this._store.all(e,t)}))}async init(e,t){return(0,Te.default)((i=>{this._store.init(e,i,t)}))}async delete(e,t,i){return(0,Te.default)((r=>{this._store.delete(e,t,i,r)}))}async upsert(e,t){return(0,Te.default)((i=>{this._store.upsert(e,t,i)}))}async initialized(){return(0,Te.default)((e=>{this._store.initialized(e)}))}close(){this._store.close()}getInitMetadata(){var e,t;return null===(t=(e=this._store).getInitMetaData)||void 0===t?void 0:t.call(e)}};var Ce={},Ie={};function Fe(e){return Date.now()>e.expiration}Object.defineProperty(Ie,"__esModule",{value:!0});Ie.default=class{constructor(e){this._options=e,this._storage=new Map,this._checkIntervalHandle=setInterval((()=>{this._purgeStale()}),1e3*e.checkInterval)}get(e){const t=this._storage.get(e);if(!t||!Fe(t))return null==t?void 0:t.value;this._storage.delete(e)}set(e,t){this._storage.set(e,{value:t,expiration:Date.now()+1e3*this._options.ttl})}delete(e){this._storage.delete(e)}clear(){this._storage.clear()}close(){this.clear(),this._checkIntervalHandle&&(clearInterval(this._checkIntervalHandle),this._checkIntervalHandle=null)}_purgeStale(){this._storage.forEach(((e,t)=>{Fe(e)&&this._storage.delete(t)}))}get size(){return this._storage.size}};var je={};Object.defineProperty(je,"__esModule",{value:!0}),je.persistentStoreKinds=void 0;const Re=ae,Ae=oe;je.persistentStoreKinds={segments:{namespace:Ae.default.Segments.namespace,deserialize:e=>{const t=(0,Re.deserializeSegment)(e);if(t)return{version:t.version,item:t}},serialize:e=>{const t=(0,Re.serializeSegment)(e);return{version:e.version,deleted:e.deleted,serializedItem:t}},priority:0},features:{namespace:Ae.default.Features.namespace,deserialize:e=>{const t=(0,Re.deserializeFlag)(e);if(t)return{version:t.version,item:t}},serialize:e=>{const t=(0,Re.serializeFlag)(e);return{version:e.version,deleted:e.deleted,serializedItem:t}},priority:1}};var Ve={};Object.defineProperty(Ve,"__esModule",{value:!0});const Ne=je;function Le(e,t){const i=[],r=new Set(Object.keys(t)),n=s=>{if(!r.has(s))return;r.delete(s);const a=t[s];var o;"features"===e.namespace&&(o=a,o.prerequisites&&o.prerequisites.length?o.prerequisites.map((e=>e.key)):[]).forEach((e=>{n(e)})),i.push({key:s,item:e.serialize(a)})};for(;r.size>0;){const e=r.values().next().value;n(e)}return i}Ve.default=function(e){const t=[];return Object.keys(e).forEach((i=>{const r=Ne.persistentStoreKinds[i];t.push({key:r,item:Le(r,e[i])})})),t.sort(((e,t)=>e.key.priority-t.key.priority)),t};var Ke={};Object.defineProperty(Ke,"__esModule",{value:!0});Ke.default=class{constructor(){this._queue=[]}enqueue(e,t){this._queue.push([e,t]),1===this._queue.length&&this.executePendingUpdates()}executePendingUpdates(){if(this._queue.length>0){const[e,t]=this._queue[0];e((()=>{this._queue.shift(),this._queue.length>0&&setTimeout((()=>this.executePendingUpdates()),0),null==t||t()}))}}},Object.defineProperty(Ce,"__esModule",{value:!0});const $e=Ie,Ue=je,ze=Ve,Be=Ke;function He(e,t){return`${e.namespace}:${t}`}function qe(e){return`$all:${e.namespace}`}const We="$checkedInit";function Je(e){return!e||e.item.deleted?null:e.item}function Ge(e){return{version:e,item:{version:e,deleted:!0}}}function Xe(e,t){if(t.deleted||!t.serializedItem)return Ge(t.version);const i=e.deserialize(t.serializedItem);return void 0===i?Ge(t.version):0===i.version||i.version===t.version||void 0===i.item?i:{version:t.version,item:i.item}}Ce.default=class{constructor(e,t){this._core=e,this._isInitialized=!1,this._queue=new Be.default,t&&(this._itemCache=new $e.default({ttl:t,checkInterval:600}),this._allItemsCache=new $e.default({ttl:t,checkInterval:600}))}init(e,t){this._queue.enqueue((t=>{this._core.init((0,ze.default)(e),(()=>{this._isInitialized=!0,this._itemCache&&(this._itemCache.clear(),this._allItemsCache.clear(),Object.keys(e).forEach((t=>{const i=Ue.persistentStoreKinds[t],r=e[t];this._allItemsCache.set(qe(i),r),Object.keys(r).forEach((e=>{const t=r[e],n={version:t.version,item:t};this._itemCache.set(He(i,e),n)}))}))),t()}))}),t)}get(e,t,i){if(this._itemCache){const r=this._itemCache.get(He(e,t));if(r)return void i(Je(r))}const r=Ue.persistentStoreKinds[e.namespace];this._core.get(r,t,(n=>{var s;if(n&&n.serializedItem){const a=Xe(r,n);return null===(s=this._itemCache)||void 0===s||s.set(He(e,t),a),void i(Je(a))}i(null)}))}initialized(e){var t;this._isInitialized?e(!0):(null===(t=this._itemCache)||void 0===t?void 0:t.get(We))?e(!1):this._core.initialized((t=>{var i;this._isInitialized=t,this._isInitialized||null===(i=this._itemCache)||void 0===i||i.set(We,!0),e(this._isInitialized)}))}all(e,t){var i;const r=null===(i=this._allItemsCache)||void 0===i?void 0:i.get(qe(e));if(r)return void t(r);const n=Ue.persistentStoreKinds[e.namespace];this._core.getAll(n,(i=>{var r;if(!i)return void t({});const s={};i.forEach((({key:e,item:t})=>{const i=Je(Xe(n,t));i&&(s[e]=i)})),null===(r=this._allItemsCache)||void 0===r||r.set(qe(e),s),t(s)}))}upsert(e,t,i){this._queue.enqueue((i=>{this._allItemsCache&&this._allItemsCache.clear();const r=Ue.persistentStoreKinds[e.namespace];this._core.upsert(r,t.key,r.serialize(t),((n,s)=>{var a,o;if(!n&&s)if(s.serializedItem){const i=Xe(r,s);null===(a=this._itemCache)||void 0===a||a.set(He(e,t.key),i)}else s.deleted&&(null===(o=this._itemCache)||void 0===o||o.set(t.key,{key:t.key,version:s.version,deleted:!0}));i()}))}),i)}delete(e,t,i,r){this.upsert(e,{key:t,version:i,deleted:!0},r)}close(){var e,t;null===(e=this._itemCache)||void 0===e||e.close(),null===(t=this._allItemsCache)||void 0===t||t.close(),this._core.close()}getDescription(){return this._core.getDescription()}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.deserializePoll=e.PersistentDataStoreWrapper=e.AsyncStoreFacade=void 0;const t=Me;e.AsyncStoreFacade=t.default;const i=Ce;e.PersistentDataStoreWrapper=i.default;const r=ae;Object.defineProperty(e,"deserializePoll",{enumerable:!0,get:function(){return r.deserializePoll}})}(De),Object.defineProperty(xe,"__esModule",{value:!0});const Ye=o,Qe=De,Ze=oe,{initMetadataFromHeaders:et}=Ye.internal;xe.default=class{constructor(e,t,i,r=()=>{},n){this._requestor=t,this._featureStore=i,this._initSuccessHandler=r,this._errorHandler=n,this._stopped=!1,this._logger=e.logger,this._pollInterval=e.pollInterval}_poll(){var e;if(this._stopped)return;const t=e=>{var t,i,r;null===(t=this._logger)||void 0===t||t.error("Polling received invalid data"),null===(i=this._logger)||void 0===i||i.debug(`Invalid JSON follows: ${e}`),null===(r=this._errorHandler)||void 0===r||r.call(this,new Ye.LDPollingError(Ye.DataSourceErrorKind.InvalidData,"Malformed JSON data in polling response"))},i=Date.now();null===(e=this._logger)||void 0===e||e.debug("Polling LaunchDarkly for feature flag updates"),this._requestor.requestAllData(((e,r,n)=>{var s,a,o,l;const c=Date.now()-i,u=Math.max(1e3*this._pollInterval-c,0);if(null===(s=this._logger)||void 0===s||s.debug("Elapsed: %d ms, sleeping for %d ms",c,u),e){const{status:t}=e;if(t&&!(0,Ye.isHttpRecoverable)(t)){const i=(0,Ye.httpErrorMessage)(e,"polling request");return null===(a=this._logger)||void 0===a||a.error(i),void(null===(o=this._errorHandler)||void 0===o||o.call(this,new Ye.LDPollingError(Ye.DataSourceErrorKind.ErrorResponse,i,t)))}null===(l=this._logger)||void 0===l||l.warn((0,Ye.httpErrorMessage)(e,"polling request","will retry"))}else if(r){const e=(0,Qe.deserializePoll)(r);if(e){const t={[Ze.default.Features.namespace]:e.flags,[Ze.default.Segments.namespace]:e.segments};return void this._featureStore.init(t,(()=>{this._initSuccessHandler(),this._timeoutHandle=setTimeout((()=>{this._poll()}),u)}),et(n))}t(r)}this._timeoutHandle=setTimeout((()=>{this._poll()}),u)}))}start(){this._poll()}stop(){this._timeoutHandle&&(clearTimeout(this._timeoutHandle),this._timeoutHandle=void 0),this._stopped=!0}close(){this.stop()}};var tt={};Object.defineProperty(tt,"__esModule",{value:!0});const it=o;tt.default=class{constructor(e,t,i){this._requests=t,this._eTagCache={},this._headers=Object.assign({},i),this._uri=(0,it.getPollingUri)(e.serviceEndpoints,"/sdk/latest-all",[])}async _requestWithETagCache(e,t){const i=this._eTagCache[e],r=null==i?void 0:i.etag,n=r?Object.assign(Object.assign({},t),{headers:Object.assign(Object.assign({},t.headers),{"if-none-match":r})}):t,s=await this._requests.fetch(e,n);if(304===s.status&&i)return{res:s,body:i.body};const a=s.headers.get("etag"),o=await s.text();return a&&(this._eTagCache[e]={etag:a,body:o}),{res:s,body:o}}async requestAllData(e){const t={method:"GET",headers:this._headers};try{const{res:i,body:r}=await this._requestWithETagCache(this._uri,t);if(200!==i.status&&304!==i.status){return e(new it.LDPollingError(it.DataSourceErrorKind.ErrorResponse,`Unexpected status code: ${i.status}`,i.status),void 0,void 0)}return e(void 0,304===i.status?null:r,Object.fromEntries(i.headers.entries()))}catch(t){return e(t,void 0,void 0)}}};var rt={};Object.defineProperty(rt,"__esModule",{value:!0});const nt=o;rt.default=class{constructor(e,t,i,r,n,s,a,o=1){this._listeners=r,this._diagnosticsManager=s,this._errorHandler=a,this._streamInitialReconnectDelay=o;const{basicConfiguration:l,platform:c}=e,{logger:u}=l,{requests:d}=c;this._headers=Object.assign({},n),this._logger=u,this._requests=d,this._streamUri=(0,nt.getStreamingUri)(l.serviceEndpoints,t,i)}_logConnectionStarted(){this._connectionAttemptStartTime=Date.now()}_logConnectionResult(e){this._connectionAttemptStartTime&&this._diagnosticsManager&&this._diagnosticsManager.recordStreamInit(this._connectionAttemptStartTime,!e,Date.now()-this._connectionAttemptStartTime),this._connectionAttemptStartTime=void 0}_retryAndHandleError(e){var t,i,r;return(0,nt.shouldRetry)(e)?(null===(r=this._logger)||void 0===r||r.warn((0,nt.httpErrorMessage)(e,"streaming request","will retry")),this._logConnectionResult(!1),this._logConnectionStarted(),!0):(this._logConnectionResult(!1),null===(t=this._errorHandler)||void 0===t||t.call(this,new nt.LDStreamingError(nt.DataSourceErrorKind.ErrorResponse,e.message,e.status)),null===(i=this._logger)||void 0===i||i.error((0,nt.httpErrorMessage)(e,"streaming request")),!1)}start(){this._logConnectionStarted();const e=this._requests.createEventSource(this._streamUri,{headers:this._headers,errorFilter:e=>this._retryAndHandleError(e),initialRetryDelayMillis:1e3*this._streamInitialReconnectDelay,readTimeoutMillis:3e5,retryResetIntervalMillis:6e4});this._eventSource=e,e.onclose=()=>{var e;null===(e=this._logger)||void 0===e||e.info("Closed LaunchDarkly stream connection")},e.onerror=()=>{},e.onopen=e=>{var t;this._initHeaders=e.headers,null===(t=this._logger)||void 0===t||t.info("Opened LaunchDarkly stream connection")},e.onretrying=e=>{var t;null===(t=this._logger)||void 0===t||t.info(`Will retry stream connection in ${e.delayMillis} milliseconds`)},this._listeners.forEach((({deserializeData:t,processJson:i},r)=>{e.addEventListener(r,(e=>{var n,s;if(null===(n=this._logger)||void 0===n||n.debug(`Received ${r} event`),null==e?void 0:e.data){this._logConnectionResult(!0);const{data:n}=e,s=t(n);if(!s)return void((e,t,i,r)=>{null==i||i.error(`Stream received invalid data in "${e}" message`),null==i||i.debug(`Invalid JSON follows: ${t}`),null==r||r(new nt.LDStreamingError(nt.DataSourceErrorKind.InvalidData,"Malformed JSON data in event stream"))})(r,n,this._logger,this._errorHandler);i(s,this._initHeaders)}else null===(s=this._errorHandler)||void 0===s||s.call(this,new nt.LDStreamingError(nt.DataSourceErrorKind.Unknown,"Unexpected payload from event stream"))}))}))}stop(){var e;null===(e=this._eventSource)||void 0===e||e.close(),this._eventSource=void 0}close(){this.stop()}};var st={},at={},ot={};Object.defineProperty(ot,"__esModule",{value:!0});ot.default=class{constructor(){this._allData={},this._initCalled=!1}_addItem(e,t,i){let r=this._allData[e.namespace];if(r||(r={},this._allData[e.namespace]=r),Object.hasOwnProperty.call(r,t)){const e=r[t];(!e||e.version<i.version)&&(r[t]=i)}else r[t]=i}get(e,t,i){const r=this._allData[e.namespace];if(r&&Object.prototype.hasOwnProperty.call(r,t)){const e=r[t];if(e&&!e.deleted)return null==i?void 0:i(e)}return null==i?void 0:i(null)}all(e,t){var i;const r={},n=null!==(i=this._allData[e.namespace])&&void 0!==i?i:{};Object.entries(n).forEach((([e,t])=>{t&&!t.deleted&&(r[e]=t)})),null==t||t(r)}init(e,t,i){this._initCalled=!0,this._allData=e,this._initMetadata=i,null==t||t()}delete(e,t,i,r){const n={version:i,deleted:!0};this._addItem(e,t,n),null==r||r()}upsert(e,t,i){this._addItem(e,t.key,t),null==i||i()}initialized(e){return null==e?void 0:e(this._initCalled)}close(){}getDescription(){return"memory"}getInitMetaData(){return this._initMetadata}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.defaultValues=void 0;const t=o,i=ot,r={baseUri:t.TypeValidators.String,streamUri:t.TypeValidators.String,eventsUri:t.TypeValidators.String,timeout:t.TypeValidators.Number,capacity:t.TypeValidators.Number,logger:t.TypeValidators.Object,featureStore:t.TypeValidators.ObjectOrFactory,bigSegments:t.TypeValidators.Object,updateProcessor:t.TypeValidators.ObjectOrFactory,flushInterval:t.TypeValidators.Number,pollInterval:t.TypeValidators.numberWithMin(30),proxyOptions:t.TypeValidators.Object,offline:t.TypeValidators.Boolean,stream:t.TypeValidators.Boolean,streamInitialReconnectDelay:t.TypeValidators.Number,useLdd:t.TypeValidators.Boolean,sendEvents:t.TypeValidators.Boolean,allAttributesPrivate:t.TypeValidators.Boolean,privateAttributes:t.TypeValidators.StringArray,contextKeysCapacity:t.TypeValidators.Number,contextKeysFlushInterval:t.TypeValidators.Number,tlsParams:t.TypeValidators.Object,diagnosticOptOut:t.TypeValidators.Boolean,diagnosticRecordingInterval:t.TypeValidators.numberWithMin(60),wrapperName:t.TypeValidators.String,wrapperVersion:t.TypeValidators.String,application:t.TypeValidators.Object,payloadFilterKey:t.TypeValidators.stringMatchingRegex(/^[a-zA-Z0-9](\w|\.|-)*$/),hooks:t.TypeValidators.createTypeArray("Hook[]",{}),enableEventCompression:t.TypeValidators.Boolean};e.defaultValues={baseUri:"https://sdk.launchdarkly.com",streamUri:"https://stream.launchdarkly.com",eventsUri:t.ServiceEndpoints.DEFAULT_EVENTS,stream:!0,streamInitialReconnectDelay:1,sendEvents:!0,timeout:5,capacity:1e4,flushInterval:5,pollInterval:30,offline:!1,useLdd:!1,allAttributesPrivate:!1,privateAttributes:[],contextKeysCapacity:1e3,contextKeysFlushInterval:300,diagnosticOptOut:!1,diagnosticRecordingInterval:900,featureStore:()=>new i.default,enableEventCompression:!1};e.default=class{constructor(i={},n={}){i=i||{},this.logger=i.logger;const{errors:s,validatedOptions:a}=function(i){const n=[],s=Object.assign({},e.defaultValues);return Object.keys(i).forEach((a=>{var o;const l=i[a],c=r[a];if(c)if(c.is(l))s[a]=l;else if("boolean"===c.getType())n.push(t.OptionMessages.wrongOptionTypeBoolean(a,typeof l)),s[a]=!!l;else if(c instanceof t.NumberWithMinimum&&t.TypeValidators.Number.is(l)){const{min:e}=c;n.push(t.OptionMessages.optionBelowMinimum(a,l,e)),s[a]=e}else n.push(t.OptionMessages.wrongOptionType(a,c.getType(),typeof l)),s[a]=e.defaultValues[a];else null===(o=i.logger)||void 0===o||o.warn(t.OptionMessages.unknownOption(a))})),{errors:n,validatedOptions:s}}(i);s.forEach((e=>{var t;null===(t=this.logger)||void 0===t||t.warn(e)})),function(e,i){var r,n,s;const{baseUri:a,streamUri:o,eventsUri:l}=e,c=null!=o,u=null!=a,d=null!=l;c===u&&c===d||(!c&&i.stream&&(null===(r=i.logger)||void 0===r||r.warn(t.OptionMessages.partialEndpoint("streamUri"))),u||null===(n=i.logger)||void 0===n||n.warn(t.OptionMessages.partialEndpoint("baseUri")),!d&&i.sendEvents&&(null===(s=i.logger)||void 0===s||s.warn(t.OptionMessages.partialEndpoint("eventsUri"))))}(i,a),this.serviceEndpoints=new t.ServiceEndpoints(a.streamUri,a.baseUri,a.eventsUri,n.analyticsEventPath,n.diagnosticEventPath,n.includeAuthorizationHeader,a.payloadFilterKey),this.eventsCapacity=a.capacity,this.timeout=a.timeout,this.bigSegments=a.bigSegments,this.flushInterval=a.flushInterval,this.pollInterval=a.pollInterval,this.proxyOptions=a.proxyOptions,this.offline=a.offline,this.stream=a.stream,this.streamInitialReconnectDelay=a.streamInitialReconnectDelay,this.useLdd=a.useLdd,this.sendEvents=a.sendEvents,this.allAttributesPrivate=a.allAttributesPrivate,this.privateAttributes=a.privateAttributes,this.contextKeysCapacity=a.contextKeysCapacity,this.contextKeysFlushInterval=a.contextKeysFlushInterval,this.tlsParams=a.tlsParams,this.diagnosticOptOut=a.diagnosticOptOut,this.wrapperName=a.wrapperName,this.payloadFilterKey=a.payloadFilterKey,this.wrapperVersion=a.wrapperVersion,this.tags=new t.ApplicationTags(a),this.diagnosticRecordingInterval=a.diagnosticRecordingInterval,t.TypeValidators.Function.is(a.updateProcessor)?this.updateProcessorFactory=a.updateProcessor:this.updateProcessorFactory=()=>a.updateProcessor,t.TypeValidators.Function.is(a.featureStore)?this.featureStoreFactory=a.featureStore:this.featureStoreFactory=()=>a.featureStore,this.hooks=a.hooks,this.enableEventCompression=a.enableEventCompression}}}(at),Object.defineProperty(st,"__esModule",{value:!0});const lt=o,ct=at;st.default=(e,t,i)=>{var r,n,s,a,o,l;return{customBaseURI:e.serviceEndpoints.polling!==ct.defaultValues.baseUri,customStreamURI:e.serviceEndpoints.streaming!==ct.defaultValues.streamUri,customEventsURI:e.serviceEndpoints.events!==ct.defaultValues.eventsUri,eventsCapacity:e.eventsCapacity,connectTimeoutMillis:(0,lt.secondsToMillis)(e.timeout),socketTimeoutMillis:(0,lt.secondsToMillis)(e.timeout),eventsFlushIntervalMillis:(0,lt.secondsToMillis)(e.flushInterval),pollingIntervalMillis:(0,lt.secondsToMillis)(e.pollInterval),reconnectTimeMillis:(0,lt.secondsToMillis)(e.streamInitialReconnectDelay),contextKeysFlushIntervalMillis:(0,lt.secondsToMillis)(e.contextKeysFlushInterval),diagnosticRecordingIntervalMillis:(0,lt.secondsToMillis)(e.diagnosticRecordingInterval),streamingDisabled:!e.stream,usingRelayDaemon:e.useLdd,offline:e.offline,allAttributesPrivate:e.allAttributesPrivate,contextKeysCapacity:e.contextKeysCapacity,usingProxy:!!(null===(n=(r=t.requests).usingProxy)||void 0===n?void 0:n.call(r)),usingProxyAuthenticator:!!(null===(a=(s=t.requests).usingProxyAuth)||void 0===a?void 0:a.call(s)),dataStoreType:null!==(l=null===(o=i.getDescription)||void 0===o?void 0:o.call(i))&&void 0!==l?l:"memory"}};var ut={};Object.defineProperty(ut,"__esModule",{value:!0}),ut.allAsync=ut.firstSeriesAsync=ut.allSeriesAsync=ut.firstResult=void 0,ut.firstResult=function(e,t){let i;return null==e||e.some(((e,r)=>(i=t(e,r),!!i))),i};function dt(e,t,i,r,n){e?r<(null==e?void 0:e.length)?t(e[r],r,(s=>{if(i){if(!s)return void n(!1)}else if(s)return void n(!0);e.length>50?Promise.resolve().then((()=>{dt(e,t,i,r+1,n)})):dt(e,t,i,r+1,n)})):n(i):n(!1)}ut.allSeriesAsync=function(e,t,i){dt(e,t,!0,0,i)},ut.firstSeriesAsync=function(e,t,i){dt(e,t,!1,0,i)},ut.allAsync=function(e,t,i){e?Promise.all(null==e?void 0:e.map((e=>new Promise((i=>{t(e,i)}))))).then((e=>{i(e.every((e=>e)))})):i(!1)};var ht={},_t={};Object.defineProperty(_t,"__esModule",{value:!0});class ft{static prerequisiteFailed(e){return{kind:"PREREQUISITE_FAILED",prerequisiteKey:e}}static ruleMatch(e,t){return{kind:"RULE_MATCH",ruleId:e,ruleIndex:t}}}ft.Fallthrough={kind:"FALLTHROUGH"},ft.Off={kind:"OFF"},ft.TargetMatch={kind:"TARGET_MATCH"},_t.default=ft,Object.defineProperty(ht,"__esModule",{value:!0});const vt=_t;class gt{constructor(e,t,i){this.isError=e,this.detail=t,this.message=i,this.isError=e,this.detail=t,this.message=i}get isOff(){return this.detail.reason.kind===vt.default.Off.kind}setDefault(e){this.detail.value=e}static forError(e,t,i){return new gt(!0,{value:null!=i?i:null,variationIndex:null,reason:{kind:"ERROR",errorKind:e}},t)}static forSuccess(e,t,i){return new gt(!1,{value:e,variationIndex:void 0===i?null:i,reason:t})}}ht.default=gt;var pt={},yt={};Object.defineProperty(yt,"__esModule",{value:!0});yt.default=class{constructor(e){this._crypto=e}_sha1Hex(e){const t=this._crypto.createHash("sha1");if(t.update(e),!t.digest)throw new Error("Platform must implement digest or asyncDigest");return t.digest("hex")}bucket(e,t,i,r,n="user",s){const a=function(e){return"string"==typeof e?e:Number.isInteger(e)?String(e):null}(e.valueForKind(i,n));if(null===a){return[0,e.kinds.indexOf(n)>=0]}const o=`${s?Number(s):`${t}.${r}`}.${a}`;return[parseInt(this._sha1Hex(o).substring(0,15),16)/0x1000000000000000,!0]}};var mt={},bt={};Object.defineProperty(bt,"__esModule",{value:!0}),bt.getBucketBy=bt.getOffVariation=bt.getVariation=void 0;const wt=o,St=ht,{ErrorKinds:kt}=wt.internal,Et=new wt.AttributeReference("key");function Ot(e,t,i){return wt.TypeValidators.Number.is(t)&&t>=0&&t<e.variations.length?St.default.forSuccess(e.variations[t],i,t):St.default.forError(kt.MalformedFlag,"Invalid variation index in flag")}bt.getVariation=Ot,bt.getOffVariation=function(e,t){return wt.TypeValidators.Number.is(e.offVariation)?Ot(e,e.offVariation,t):St.default.forSuccess(null,t)},bt.getBucketBy=function(e,t){var i;return null!==(i=e?void 0:t)&&void 0!==i?i:Et},Object.defineProperty(mt,"__esModule",{value:!0});const xt=o,Dt=ut,Mt=_t,Pt=bt;function Tt(e,t,i){const r=i.key(t.contextKind);if(void 0!==r){if(t.values.indexOf(r)>=0)return(0,Pt.getVariation)(e,t.variation,Mt.default.TargetMatch)}}mt.default=function(e,t){var i;return(null===(i=e.contextTargets)||void 0===i?void 0:i.length)?(0,Dt.firstResult)(e.contextTargets,(i=>{if(!i.contextKind||i.contextKind===xt.Context.UserKind){const r=(e.targets||[]).find((e=>e.variation===i.variation));return r?Tt(e,r,t):void 0}return Tt(e,i,t)})):(0,Dt.firstResult)(e.targets,(i=>Tt(e,i,t)))};var Ct={};Object.defineProperty(Ct,"__esModule",{value:!0}),Ct.default=function(e){return`${e.key}.g${e.generation}`};var It={},Ft={};Object.defineProperty(Ft,"__esModule",{value:!0});const jt=t,Rt=o,At=/^\d+(\.\d+)?(\.\d+)?/;function Vt(e){if(Rt.TypeValidators.String.is(e)&&!e.startsWith("v")){const t=(0,jt.parse)(e);if(t)return t;const i=At.exec(e);if(i){let t=i[0];for(let e=1;e<i.length;e+=1)void 0===i[e]&&(t+=".0");return t+=e.substring(i[0].length),(0,jt.parse)(t)}}return null}function Nt(e){return(t,i)=>{const r=Vt(t),n=Vt(i);return!!(r&&n&&e(r,n))}}function Lt(e,t,i){return(r,n)=>!(!t.is(r)||!t.is(n))&&(i?e(i(r),i(n)):e(r,n))}function Kt(e){return"number"==typeof e?e:Date.parse(e)}const $t={in:(e,t)=>e===t,endsWith:Lt(((e,t)=>e.endsWith(t)),Rt.TypeValidators.String),startsWith:Lt(((e,t)=>e.startsWith(t)),Rt.TypeValidators.String),matches:Lt(((e,t)=>function(e,t){try{return new RegExp(e).test(t)}catch(e){return!1}}(t,e)),Rt.TypeValidators.String),contains:Lt(((e,t)=>e.indexOf(t)>-1),Rt.TypeValidators.String),lessThan:Lt(((e,t)=>e<t),Rt.TypeValidators.Number),lessThanOrEqual:Lt(((e,t)=>e<=t),Rt.TypeValidators.Number),greaterThan:Lt(((e,t)=>e>t),Rt.TypeValidators.Number),greaterThanOrEqual:Lt(((e,t)=>e>=t),Rt.TypeValidators.Number),before:Lt(((e,t)=>e<t),Rt.TypeValidators.Date,Kt),after:Lt(((e,t)=>e>t),Rt.TypeValidators.Date,Kt),semVerEqual:Nt(((e,t)=>0===e.compare(t))),semVerLessThan:Nt(((e,t)=>e.compare(t)<0)),semVerGreaterThan:Nt(((e,t)=>e.compare(t)>0))};Ft.default=class{static is(e){return Object.prototype.hasOwnProperty.call($t,e)}static execute(e,t,i){var r,n;return null!==(n=null===(r=$t[e])||void 0===r?void 0:r.call($t,t,i))&&void 0!==n&&n}},Object.defineProperty(It,"__esModule",{value:!0}),It.maybeNegate=void 0;const Ut=Ft;function zt(e,t){return e.negate?!t:t}function Bt(e,t,i){return i.some((i=>Ut.default.execute(e,t,i)))}It.maybeNegate=zt,It.default=function(e,t){const i=t.valueForKind(e.attributeReference,e.contextKind);return null!=i&&(Array.isArray(i)?zt(e,i.some((t=>Bt(e.op,t,e.values)))):zt(e,Bt(e.op,i,e.values)))};var Ht={};function qt(e,t,i,r){if(t)for(let i=0;i<t.length;i+=1){const r=t[i],n=e.key(r.contextKind);if(n)if(r.generated_valuesSet){if(r.generated_valuesSet.has(n))return!0}else if(r.values.includes(n))return!0}if(r){const t=e.key("user");if(t&&r.has(t))return!0}else if(i){const t=e.key("user");if(t&&i.includes(t))return!0}return!1}Object.defineProperty(Ht,"__esModule",{value:!0}),Ht.default=function(e,t){if(qt(t,e.includedContexts,e.included,e.generated_includedSet))return!0;const i=qt(t,e.excludedContexts,e.excluded,e.generated_excludedSet);return i?!i:void 0},Object.defineProperty(pt,"__esModule",{value:!0});const Wt=o,Jt=yt,Gt=ut,Xt=ht,Yt=mt,Qt=Ct,Zt=It,ei=Ht,ti=_t,ii=bt,{ErrorKinds:ri}=Wt.internal,ni={HEALTHY:1,STALE:2,STORE_ERROR:3,NOT_CONFIGURED:4};function si(e){return void 0!==e&&ni[e]||0}function ai(e,t){return void 0!==e&&si(e)>si(t)?e:t}function oi(e){return{error:!1,isMatch:e,result:void 0}}function li(e){return{error:!0,isMatch:!1,result:e}}pt.default=class{constructor(e,t){this._queries=t,this._bucketer=new Jt.default(e.crypto)}async evaluate(e,t,i){return new Promise((r=>{this.evaluateCb(e,t,r,i)}))}evaluateCb(e,t,i,r){const n={};this._evaluateInternal(e,t,n,[],(e=>{n.bigSegmentsStatus&&(e.detail.reason=Object.assign(Object.assign({},e.detail.reason),{bigSegmentsStatus:n.bigSegmentsStatus})),n.prerequisites&&(e.prerequisites=n.prerequisites),e.events=n.events,i(e)}),!0,r)}_evaluateInternal(e,t,i,r,n,s,a){e.on?this._checkPrerequisites(e,t,i,r,(r=>{if(r)return void n(r);const s=(0,Yt.default)(e,t);s?n(s):this._evaluateRules(e,t,i,(i=>{n(i||this._variationForContext(e.fallthrough,t,e,ti.default.Fallthrough))}))}),s,a):n((0,ii.getOffVariation)(e,ti.default.Off))}_checkPrerequisites(e,t,i,r,n,s,a){let o;e.prerequisites&&e.prerequisites.length?(0,Gt.allSeriesAsync)(e.prerequisites,((n,l,c)=>{if(-1!==r.indexOf(n.key))return o=Xt.default.forError(ri.MalformedFlag,`Prerequisite of ${e.key} causing a circular reference. This is probably a temporary condition due to an incomplete update.`),void c(!0);const u=[...r,n.key];this._queries.getFlag(n.key,(r=>{if(!r)return o=(0,ii.getOffVariation)(e,ti.default.prerequisiteFailed(n.key)),void c(!1);this._evaluateInternal(r,t,i,u,(l=>{var u,d;return null!==(u=i.events)&&void 0!==u||(i.events=[]),s&&(null!==(d=i.prerequisites)&&void 0!==d||(i.prerequisites=[]),i.prerequisites.push(r.key)),a&&i.events.push(a.evalEventServer(r,t,l.detail,null,e)),l.isError?(o=l,c(!1)):l.isOff||l.detail.variationIndex!==n.variation?(o=(0,ii.getOffVariation)(e,ti.default.prerequisiteFailed(n.key)),c(!1)):c(!0)}),!1,a)}))}),(()=>{n(o)})):n(void 0)}_evaluateRules(e,t,i,r){let n;(0,Gt.firstSeriesAsync)(e.rules,((r,s,a)=>{this._ruleMatchContext(e,r,s,t,i,[],(e=>{n=e,a(!!e)}))}),(()=>r(n)))}_clauseMatchContext(e,t,i,r,n){let s;"segmentMatch"!==e.op?e.attributeReference.isValid?n(oi((0,Zt.default)(e,t))):n(li(Xt.default.forError(ri.MalformedFlag,"Invalid attribute reference in clause"))):(0,Gt.firstSeriesAsync)(e.values,((e,n,a)=>{this._queries.getSegment(e,(e=>{if(e){if(i.includes(e.key))return s=Xt.default.forError(ri.MalformedFlag,`Segment rule referencing segment ${e.key} caused a circular reference. This is probably a temporary condition due to an incomplete update`),void a(!0);const n=[...i,null==e?void 0:e.key];this.segmentMatchContext(e,t,r,n,(e=>{e.error&&(s=e.result),a(e.error||e.isMatch)}))}else a(!1)}))}),(t=>n(s?li(s):oi((0,Zt.maybeNegate)(e,t)))))}_ruleMatchContext(e,t,i,r,n,s,a){if(!t.clauses)return void a(void 0);let o;(0,Gt.allSeriesAsync)(t.clauses,((e,t,i)=>{this._clauseMatchContext(e,r,s,n,(e=>(o=e.result,i(e.error||e.isMatch))))}),(n=>a(o||(n?this._variationForContext(t,r,e,ti.default.ruleMatch(t.id,i)):void 0))))}_variationForContext(e,t,i,r){if(void 0===e)return Xt.default.forError(ri.MalformedFlag,"Fallthrough variation undefined");if(void 0!==e.variation)return(0,ii.getVariation)(i,e.variation,r);if(e.rollout){const{rollout:n}=e,{variations:s}=n,a="experiment"===n.kind;if(s&&s.length){const e=(0,ii.getBucketBy)(a,n.bucketByAttributeReference);if(!e.isValid)return Xt.default.forError(ri.MalformedFlag,"Invalid attribute reference for bucketBy in rollout");const[o,l]=this._bucketer.bucket(t,i.key,e,i.salt||"",n.contextKind,n.seed),c=Object.assign({},r);let u=0;for(let e=0;e<s.length;e+=1){const t=s[e];if(u+=t.weight/1e5,o<u)return a&&l&&!t.untracked&&(c.inExperiment=!0),(0,ii.getVariation)(i,t.variation,c)}const d=s[s.length-1];return a&&!d.untracked&&(c.inExperiment=!0),(0,ii.getVariation)(i,d.variation,c)}}return Xt.default.forError(ri.MalformedFlag,"Variation/rollout object with no variation or rollout")}segmentRuleMatchContext(e,t,i,r,n,s){let a;(0,Gt.allSeriesAsync)(t.clauses,((e,t,s)=>{this._clauseMatchContext(e,i,n,r,(e=>{a=e.result,s(e.error||e.isMatch)}))}),(r=>{if(a)return s(li(a));if(r){if(void 0===t.weight)return s(oi(r));const n=(0,ii.getBucketBy)(!1,t.bucketByAttributeReference);if(!n.isValid)return s(li(Xt.default.forError(ri.MalformedFlag,"Invalid attribute reference in clause")));const[a]=this._bucketer.bucket(i,e.key,n,e.salt||"",t.rolloutContextKind);return s(oi(a<t.weight/1e5))}return s(oi(!1))}))}simpleSegmentMatchContext(e,t,i,r,n){if(!e.unbounded){const i=(0,ei.default)(e,t);if(void 0!==i)return void n(oi(i))}let s;(0,Gt.firstSeriesAsync)(e.rules,((n,a,o)=>{this.segmentRuleMatchContext(e,n,t,i,r,(e=>(s=e.result,o(e.error||e.isMatch))))}),(e=>n(s?li(s):oi(e))))}segmentMatchContext(e,t,i,r,n){if(!e.unbounded)return void this.simpleSegmentMatchContext(e,t,i,r,n);const s=e.unboundedContextKind||"user",a=t.key(s);if(a)return e.generation?void(i.bigSegmentsMembership&&i.bigSegmentsMembership[a]?this.bigSegmentMatchContext(i.bigSegmentsMembership[a],e,t,i).then(n):this._queries.getBigSegmentsMembership(a).then((r=>{if(i.bigSegmentsMembership=i.bigSegmentsMembership||{},r){const[e,t]=r;i.bigSegmentsMembership[a]=e,i.bigSegmentsStatus=ai(i.bigSegmentsStatus,t)}else i.bigSegmentsStatus=ai(i.bigSegmentsStatus,"NOT_CONFIGURED");this.bigSegmentMatchContext(i.bigSegmentsMembership[a],e,t,i).then(n)}))):(i.bigSegmentsStatus=ai(i.bigSegmentsStatus,"NOT_CONFIGURED"),void n(oi(!1)));n(oi(!1))}bigSegmentMatchContext(e,t,i,r){const n=(0,Qt.default)(t),s=null==e?void 0:e[n];return new Promise((e=>{null==s?this.simpleSegmentMatchContext(t,i,r,[],e):e(oi(s))}))}};var ci={};Object.defineProperty(ci,"__esModule",{value:!0});const ui=te;ci.default=class{constructor(e){this._contextKeysCache=new ui.default({max:e.contextKeysCapacity}),this.flushInterval=e.contextKeysFlushInterval}processContext(e){const{canonicalKey:t}=e,i=this._contextKeysCache.get(t);return this._contextKeysCache.set(t,!0),!i}flush(){this._contextKeysCache.clear()}};var di={},hi={};Object.defineProperty(hi,"__esModule",{value:!0}),hi.default=function(e,t){if(t){if(t.inExperiment)return!0;switch(t.kind){case"RULE_MATCH":{const i=t.ruleIndex;if(void 0!==i){const t=e.rules||[];return i>=0&&i<t.length&&!!t[i].trackEvents}break}case"FALLTHROUGH":return!!e.trackEventsFallthrough}}return!1},Object.defineProperty(di,"__esModule",{value:!0});const _i=o,fi=hi;class vi extends _i.internal.EventFactoryBase{evalEventServer(e,t,i,r,n){var s;const a=(0,fi.default)(e,i.reason);return super.evalEvent({addExperimentData:a,context:t,debugEventsUntilDate:e.debugEventsUntilDate,defaultVal:r,excludeFromSummaries:e.excludeFromSummaries,flagKey:e.key,prereqOfFlagKey:null==n?void 0:n.key,reason:i.reason,samplingRatio:e.samplingRatio,trackEvents:e.trackEvents||a,value:i.value,variation:null!==(s=i.variationIndex)&&void 0!==s?s:void 0,version:e.version})}}di.default=vi;var gi={};Object.defineProperty(gi,"__esModule",{value:!0});gi.default=class{constructor(e,t){this._valid=e,this._withReasons=t,this._flagValues={},this._flagMetadata={}}addFlag(e,t,i,r,n,s,a,o){this._flagValues[e.key]=t;const l={};void 0!==i&&(l.variation=i);const c=a&&!n&&!s&&void 0===e.debugEventsUntilDate;c||(l.version=e.version),r&&(s||this._withReasons&&!c)&&(l.reason=r),n&&(l.trackEvents=!0),s&&(l.trackReason=!0),void 0!==e.debugEventsUntilDate&&(l.debugEventsUntilDate=e.debugEventsUntilDate),o&&o.length&&(l.prerequisites=o),this._flagMetadata[e.key]=l}build(){return{valid:this._valid,allValues:()=>this._flagValues,getFlagValue:e=>this._flagValues[e],getFlagReason:e=>{var t;return null!==(t=this._flagMetadata[e]?this._flagMetadata[e].reason:null)&&void 0!==t?t:null},toJSON:()=>Object.assign(Object.assign({},this._flagValues),{$flagsState:this._flagMetadata,$valid:this._valid})}}};var pi={};Object.defineProperty(pi,"__esModule",{value:!0});const yi="unknown hook";pi.default=class{constructor(e,t){this._logger=e,this._hooks=[],this._hooks.push(...t)}async withEvaluationSeries(e,t,i,r,n,s){return 0===this._hooks.length?n():this.withEvaluationSeriesExtraDetail(e,t,i,r,(async()=>({detail:await n()})),s).then((({detail:e})=>e))}async withEvaluationSeriesExtraDetail(e,t,i,r,n,s){if(0===this._hooks.length)return n();const{hooks:a,hookContext:o}=this._prepareHooks(e,t,i,r,s),l=this._executeBeforeEvaluation(a,o),c=await n();return this._executeAfterEvaluation(a,o,l,c.detail),c}_tryExecuteStage(e,t,i){var r;try{return i()}catch(i){return null===(r=this._logger)||void 0===r||r.error(`An error was encountered in "${e}" of the "${t}" hook: ${i}`),{}}}_hookName(e){var t,i;try{return null!==(t=null==e?void 0:e.getMetadata().name)&&void 0!==t?t:yi}catch(e){return null===(i=this._logger)||void 0===i||i.error("Exception thrown getting metadata for hook. Unable to get hook name."),yi}}_executeAfterEvaluation(e,t,i,r){var n;for(let s=e.length-1;s>=0;s-=1){const a=e[s],o=null!==(n=i[s])&&void 0!==n?n:{};this._tryExecuteStage("afterEvaluation",this._hookName(a),(()=>{var e,i;return null!==(i=null===(e=null==a?void 0:a.afterEvaluation)||void 0===e?void 0:e.call(a,t,o,r))&&void 0!==i?i:{}}))}}_executeBeforeEvaluation(e,t){return e.map((e=>this._tryExecuteStage("beforeEvaluation",this._hookName(e),(()=>{var i,r;return null!==(r=null===(i=null==e?void 0:e.beforeEvaluation)||void 0===i?void 0:i.call(e,t,{}))&&void 0!==r?r:{}}))))}_prepareHooks(e,t,i,r,n){return{hooks:[...this._hooks],hookContext:{flagKey:e,context:t,defaultValue:i,method:r,environmentId:n}}}addHook(e){this._hooks.push(e)}};var mi={};Object.defineProperty(mi,"__esModule",{value:!0});const bi=o;function wi(e){const t=e.old,i=e.new;return!(void 0!==t&&!bi.TypeValidators.Boolean.is(t))&&!(void 0!==i&&!bi.TypeValidators.Boolean.is(i))}function Si(e){if(bi.TypeValidators.String.is(e.key)&&""!==e.key){if("latency_ms"===e.key){if(!bi.TypeValidators.Object.is(e.values))return;if(!function(e){const t=e.old,i=e.new;return!(void 0!==t&&!bi.TypeValidators.Number.is(t)||void 0!==i&&!bi.TypeValidators.Number.is(i))}(e.values))return;return{key:e.key,values:{old:e.values.old,new:e.values.new}}}if(function(e){return"error"===e.key}(e)){if(!bi.TypeValidators.Object.is(e.values))return;if(!wi(e.values))return;return{key:e.key,values:{old:e.values.old,new:e.values.new}}}if(function(e){return"consistent"===e.key}(e)){if(!bi.TypeValidators.Boolean.is(e.value)||!bi.TypeValidators.Number.is(e.samplingRatio))return;return{key:e.key,value:e.value,samplingRatio:e.samplingRatio}}if(function(e){return"invoked"===e.key}(e)){if(!bi.TypeValidators.Object.is(e.values))return;if(!wi(e.values))return;return{key:e.key,values:{old:e.values.old,new:e.values.new}}}}}mi.default=function(e){var t,i;if("migration_op"!==e.kind)return;if(i=e.operation,!bi.TypeValidators.String.is(i)||"read"!==i&&"write"!==i)return;if(!bi.TypeValidators.Number.is(e.creationDate))return;const r={};if(bi.TypeValidators.Object.is(e.context)){const t=bi.Context.fromLDContext(e.context);t.valid&&(r.context=t)}else bi.TypeValidators.Object.is(e.contextKeys)&&Object.keys(e.contextKeys).every((e=>bi.TypeValidators.Kind.is(e)))&&Object.values(e.contextKeys).every((e=>bi.TypeValidators.String.is(e)&&""!==e))&&(r.contextKeys=Object.assign({},e.contextKeys));if(!r.context&&!r.contextKeys)return;const n=null!==(t=e.samplingRatio)&&void 0!==t?t:1;if(!bi.TypeValidators.Number.is(n))return;const s=function(e){if(!bi.TypeValidators.String.is(e.key)||""===e.key)return;if(!bi.TypeValidators.Object.is(e.reason))return;if(!bi.TypeValidators.String.is(e.reason.kind)||""===e.reason.kind)return;const t={key:e.key,value:e.value,default:e.default,reason:{kind:e.reason.kind}},i=e.reason,r=t.reason;return bi.TypeValidators.String.is(i.errorKind)&&(r.errorKind=i.errorKind),bi.TypeValidators.String.is(i.ruleId)&&(r.ruleId=i.ruleId),bi.TypeValidators.String.is(i.prerequisiteKey)&&(r.prerequisiteKey=i.prerequisiteKey),bi.TypeValidators.Boolean.is(i.inExperiment)&&(r.inExperiment=i.inExperiment),bi.TypeValidators.Number.is(i.ruleIndex)&&(r.ruleIndex=i.ruleIndex),bi.TypeValidators.String.is(i.bigSegmentsStatus)&&(r.bigSegmentsStatus=i.bigSegmentsStatus),void 0!==e.variation&&bi.TypeValidators.Number.is(e.variation)&&(t.variation=e.variation),void 0!==e.version&&bi.TypeValidators.Number.is(e.version)&&(t.version=e.version),t}(e.evaluation);var a;return s?Object.assign(Object.assign({kind:e.kind,operation:e.operation,creationDate:e.creationDate},r),{measurements:(a=e.measurements,a.map(Si).filter((e=>void 0!==e))),evaluation:s,samplingRatio:n}):void 0};var ki={};Object.defineProperty(ki,"__esModule",{value:!0});const Ei=o,Oi=c;function xi(e){return!Number.isNaN(e)}ki.default=class{constructor(e,t,i,r,n,s,a,o,l,c){this._flagKey=e,this._context=t,this._defaultStage=i,this._stage=r,this._reason=n,this._checkRatio=s,this._variation=a,this._version=o,this._samplingRatio=l,this._logger=c,this._errors={old:!1,new:!1},this._wasInvoked={old:!1,new:!1},this._consistencyCheck=Oi.LDConsistencyCheck.NotChecked,this._latencyMeasurement={old:NaN,new:NaN}}op(e){this._operation=e}error(e){this._errors[e]=!0}consistency(e){var t,i;if(Ei.internal.shouldSample(null!==(t=this._checkRatio)&&void 0!==t?t:1))try{const t=e();this._consistencyCheck=t?Oi.LDConsistencyCheck.Consistent:Oi.LDConsistencyCheck.Inconsistent}catch(e){null===(i=this._logger)||void 0===i||i.error(`Exception when executing consistency check function for migration '${this._flagKey}' the consistency check will not be included in the generated migration op event. Exception: ${e}`)}}latency(e,t){this._latencyMeasurement[e]=t}invoked(e){this._wasInvoked[e]=!0}createEvent(){var e,t,i,r,n;if(!Ei.TypeValidators.String.is(this._flagKey)||""===this._flagKey)return void(null===(e=this._logger)||void 0===e||e.error("The flag key for a migration operation must be a non-empty string."));if(!this._operation)return void(null===(t=this._logger)||void 0===t||t.error('The operation must be set using "op" before an event can be created.'));if(!Ei.Context.fromLDContext(this._context).valid)return void(null===(i=this._logger)||void 0===i||i.error("The migration was not done against a valid context and cannot generate an event."));if(!this._wasInvoked.old&&!this._wasInvoked.new)return void(null===(r=this._logger)||void 0===r||r.error('The migration invoked neither the "old" or "new" implementation andan event cannot be generated'));if(!this._measurementConsistencyCheck())return;const s=[];return this._populateInvoked(s),this._populateConsistency(s),this._populateLatency(s),this._populateErrors(s),{kind:"migration_op",operation:this._operation,creationDate:Date.now(),context:this._context,evaluation:{key:this._flagKey,value:this._stage,default:this._defaultStage,reason:this._reason,variation:this._variation,version:this._version},measurements:s,samplingRatio:null!==(n=this._samplingRatio)&&void 0!==n?n:1}}_logTag(){return`For migration ${this._operation}-${this._flagKey}:`}_latencyConsistencyMessage(e){return`Latency measurement for "${e}", but "${e}" was not invoked.`}_errorConsistencyMessage(e){return`Error occurred for "${e}", but "${e}" was not invoked.`}_consistencyCheckConsistencyMessage(e){return`Consistency check was done, but "${e}" was not invoked.Both "old" and "new" must be invoked to do a consistency check.`}_checkOriginEventConsistency(e){var t,i,r;return!!this._wasInvoked[e]||(Number.isNaN(this._latencyMeasurement[e])?this._errors[e]?(null===(i=this._logger)||void 0===i||i.error(`${this._logTag()} ${this._errorConsistencyMessage(e)}`),!1):this._consistencyCheck===Oi.LDConsistencyCheck.NotChecked||(null===(r=this._logger)||void 0===r||r.error(`${this._logTag()} ${this._consistencyCheckConsistencyMessage(e)}`),!1):(null===(t=this._logger)||void 0===t||t.error(`${this._logTag()} ${this._latencyConsistencyMessage(e)}`),!1))}_measurementConsistencyCheck(){return this._checkOriginEventConsistency("old")&&this._checkOriginEventConsistency("new")}_populateInvoked(e){var t;const i={key:"invoked",values:{}};this._wasInvoked.old||this._wasInvoked.new||null===(t=this._logger)||void 0===t||t.error("Migration op completed without executing any origins (old/new)."),this._wasInvoked.old&&(i.values.old=!0),this._wasInvoked.new&&(i.values.new=!0),e.push(i)}_populateConsistency(e){var t;void 0!==this._consistencyCheck&&this._consistencyCheck!==Oi.LDConsistencyCheck.NotChecked&&e.push({key:"consistent",value:this._consistencyCheck===Oi.LDConsistencyCheck.Consistent,samplingRatio:null!==(t=this._checkRatio)&&void 0!==t?t:1})}_populateErrors(e){if(this._errors.new||this._errors.old){const t={key:"error",values:{}};this._errors.new&&(t.values.new=!0),this._errors.old&&(t.values.old=!0),e.push(t)}}_populateLatency(e){const t=xi(this._latencyMeasurement.new),i=xi(this._latencyMeasurement.old);if(t||i){const r={};t&&(r.new=this._latencyMeasurement.new),i&&(r.old=this._latencyMeasurement.old),e.push({key:"latency_ms",values:r})}}},Object.defineProperty(a,"__esModule",{value:!0});const Di=o,Mi=l,Pi=ee,Ti=se,Ci=ye,Ii=xe,Fi=tt,ji=rt,Ri=st,Ai=ut,Vi=ht,Ni=pt,Li=ci,Ki=di,$i=hi,Ui=gi,zi=pi,Bi=mi,Hi=ki,qi=at,Wi=oe,{ClientMessages:Ji,ErrorKinds:Gi,NullEventProcessor:Xi}=Di.internal;var Yi,Qi;(Qi=Yi||(Yi={}))[Qi.Initializing=0]="Initializing",Qi[Qi.Initialized=1]="Initialized",Qi[Qi.Failed=2]="Failed";a.default=class{get logger(){return this._logger}constructor(e,t,i,r,n){var s,a,o,l,c;this._sdkKey=e,this._platform=t,this._initState=Yi.Initializing,this._eventFactoryDefault=new Ki.default(!1),this._eventFactoryWithReasons=new Ki.default(!0),this._onError=r.onError,this._onFailed=r.onFailed,this._onReady=r.onReady;const{onUpdate:u,hasEventListeners:d}=r,h=new qi.default(i,n);if(this._hookRunner=new zi.default(h.logger,h.hooks||[]),!e&&!h.offline)throw new Error("You must configure the client with an SDK key");this._config=h,this._logger=h.logger;const _=(0,Di.defaultHeaders)(e,t.info,h.tags),f=new Di.ClientContext(e,h,t),v=h.featureStoreFactory(f),g=new Ci.default(v,d,u);!h.sendEvents||h.offline||h.diagnosticOptOut||(this._diagnosticsManager=new Di.internal.DiagnosticsManager(e,t,(0,Ri.default)(h,t,v))),!h.sendEvents||h.offline?this._eventProcessor=new Xi:this._eventProcessor=new Di.internal.EventProcessor(h,f,_,new Li.default(h),this._diagnosticsManager),this._featureStore=v;const p=new Pi.default(null===(a=null===(s=h.bigSegments)||void 0===s?void 0:s.store)||void 0===a?void 0:a.call(s,f),null!==(o=h.bigSegments)&&void 0!==o?o:{},h.logger,this._platform.crypto);this._bigSegmentsManager=p,this.bigSegmentStatusProviderInternal=p.statusProvider;const y={getFlag(e,t){v.get(Wi.default.Features,e,(e=>t(e)))},getSegment(e,t){v.get(Wi.default.Segments,e,(e=>t(e)))},getBigSegmentsMembership:e=>p.getUserMembership(e)};this._evaluator=new Ni.default(this._platform,y);const m=(0,Ti.createStreamListeners)(g,this._logger,{put:()=>this._initSuccess()}),b=()=>h.stream?new ji.default(f,"/all",[],m,_,this._diagnosticsManager,(e=>this._dataSourceErrorHandler(e)),this._config.streamInitialReconnectDelay):new Ii.default(h,new Fi.default(h,this._platform.requests,_),g,(()=>this._initSuccess()),(e=>this._dataSourceErrorHandler(e)));h.offline||h.useLdd||(this._updateProcessor=null!==(c=null===(l=h.updateProcessorFactory)||void 0===l?void 0:l.call(h,f,g,(()=>this._initSuccess()),(e=>this._dataSourceErrorHandler(e))))&&void 0!==c?c:b()),this._updateProcessor?this._updateProcessor.start():setTimeout((()=>this._initSuccess()),0)}initialized(){return this._initState===Yi.Initialized}waitForInitialization(e){var t,i;return void 0===(null==e?void 0:e.timeout)&&void 0!==this._updateProcessor&&(null===(t=this._logger)||void 0===t||t.warn("The waitForInitialization function was called without a timeout specified. In a future version a default timeout will be applied.")),void 0!==(null==e?void 0:e.timeout)&&(null==e?void 0:e.timeout)>60&&void 0!==this._updateProcessor&&(null===(i=this._logger)||void 0===i||i.warn("The waitForInitialization function was called with a timeout greater than 60 seconds. We recommend a timeout of less than 60 seconds.")),this._initializedPromise?this._clientWithTimeout(this._initializedPromise,null==e?void 0:e.timeout,this._logger):this._initState===Yi.Initialized?(this._initializedPromise=Promise.resolve(this),this._initializedPromise):this._initState===Yi.Failed?(this._initializedPromise=Promise.reject(this._rejectionReason),this._initializedPromise):(this._initializedPromise||(this._initializedPromise=new Promise(((e,t)=>{this._initResolve=e,this._initReject=t}))),this._clientWithTimeout(this._initializedPromise,null==e?void 0:e.timeout,this._logger))}variation(e,t,i,r){var n,s,a;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.variation",(()=>new Promise((r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryDefault,(e=>{r(e.detail)}))}))),null===(a=null===(s=(n=this._featureStore).getInitMetaData)||void 0===s?void 0:s.call(n))||void 0===a?void 0:a.environmentId).then((e=>(null==r||r(null,e.value),e.value)))}variationDetail(e,t,i,r){var n,s,a;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.variationDetail",(()=>new Promise((n=>{this._evaluateIfPossible(e,t,i,this._eventFactoryWithReasons,(e=>{n(e.detail),null==r||r(null,e.detail)}))}))),null===(a=null===(s=(n=this._featureStore).getInitMetaData)||void 0===s?void 0:s.call(n))||void 0===a?void 0:a.environmentId)}_typedEval(e,t,i,r,n,s){var a,o,l;return this._hookRunner.withEvaluationSeries(e,t,i,n,(()=>new Promise((n=>{this._evaluateIfPossible(e,t,i,r,(e=>{const t={value:e.detail.value,reason:e.detail.reason,variationIndex:e.detail.variationIndex};n(t)}),s)}))),null===(l=null===(o=(a=this._featureStore).getInitMetaData)||void 0===o?void 0:o.call(a))||void 0===l?void 0:l.environmentId)}async boolVariation(e,t,i){return(await this._typedEval(e,t,i,this._eventFactoryDefault,"LDClient.boolVariation",(e=>[Di.TypeValidators.Boolean.is(e),Di.TypeValidators.Boolean.getType()]))).value}async numberVariation(e,t,i){return(await this._typedEval(e,t,i,this._eventFactoryDefault,"LDClient.numberVariation",(e=>[Di.TypeValidators.Number.is(e),Di.TypeValidators.Number.getType()]))).value}async stringVariation(e,t,i){return(await this._typedEval(e,t,i,this._eventFactoryDefault,"LDClient.stringVariation",(e=>[Di.TypeValidators.String.is(e),Di.TypeValidators.String.getType()]))).value}jsonVariation(e,t,i){var r,n,s;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.jsonVariation",(()=>new Promise((r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryDefault,(e=>{r(e.detail)}))}))),null===(s=null===(n=(r=this._featureStore).getInitMetaData)||void 0===n?void 0:n.call(r))||void 0===s?void 0:s.environmentId).then((e=>e.value))}boolVariationDetail(e,t,i){return this._typedEval(e,t,i,this._eventFactoryWithReasons,"LDClient.boolVariationDetail",(e=>[Di.TypeValidators.Boolean.is(e),Di.TypeValidators.Boolean.getType()]))}numberVariationDetail(e,t,i){return this._typedEval(e,t,i,this._eventFactoryWithReasons,"LDClient.numberVariationDetail",(e=>[Di.TypeValidators.Number.is(e),Di.TypeValidators.Number.getType()]))}stringVariationDetail(e,t,i){return this._typedEval(e,t,i,this._eventFactoryWithReasons,"LDClient.stringVariationDetail",(e=>[Di.TypeValidators.String.is(e),Di.TypeValidators.String.getType()]))}jsonVariationDetail(e,t,i){var r,n,s;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.jsonVariationDetail",(()=>new Promise((r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryWithReasons,(e=>{r(e.detail)}))}))),null===(s=null===(n=(r=this._featureStore).getInitMetaData)||void 0===n?void 0:n.call(r))||void 0===s?void 0:s.environmentId)}async _migrationVariationInternal(e,t,i){var r;const n=await new Promise((r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryWithReasons,(({detail:t},n)=>{if((0,Mi.IsMigrationStage)(t.value))r({detail:t,flag:n});else{const t=new Error(`Unrecognized MigrationState for "${e}"; returning default value.`);this._onError(t);const s={kind:"ERROR",errorKind:Gi.WrongType};r({detail:{value:i,reason:s},flag:n})}}))})),{detail:s,flag:a}=n,o=null===(r=null==a?void 0:a.migration)||void 0===r?void 0:r.checkRatio,l=null==a?void 0:a.samplingRatio;return{detail:s,migration:{value:s.value,tracker:new Hi.default(e,t,i,s.value,s.reason,o,null===s.variationIndex?void 0:s.variationIndex,null==a?void 0:a.version,l,this._logger)}}}async migrationVariation(e,t,i){var r,n,s;return(await this._hookRunner.withEvaluationSeriesExtraDetail(e,t,i,"LDClient.migrationVariation",(()=>this._migrationVariationInternal(e,t,i)),null===(s=null===(n=(r=this._featureStore).getInitMetaData)||void 0===n?void 0:n.call(r))||void 0===s?void 0:s.environmentId)).migration}allFlagsState(e,t,i){var r,n,s;if(this._config.offline){null===(r=this._logger)||void 0===r||r.info("allFlagsState() called in offline mode. Returning empty state.");const e=new Ui.default(!1,!1).build();return null==i||i(null,e),Promise.resolve(e)}const a=Di.Context.fromLDContext(e);return a.valid?new Promise((e=>{const r=r=>this._featureStore.all(Wi.default.Features,(n=>{const s=new Ui.default(r,!!(null==t?void 0:t.withReasons)),o=!!(null==t?void 0:t.clientSideOnly),l=!!(null==t?void 0:t.detailsOnlyForTrackedFlags);(0,Ai.allAsync)(Object.values(n),((e,t)=>{var i;const r=e;!o||(null===(i=r.clientSideAvailability)||void 0===i?void 0:i.usingEnvironmentId)?this._evaluator.evaluateCb(r,a,(e=>{var i;e.isError&&this._onError(new Error(`Error for feature flag "${r.key}" while evaluating all flags: ${e.message}`));const n=(0,$i.default)(r,e.detail.reason);s.addFlag(r,e.detail.value,null!==(i=e.detail.variationIndex)&&void 0!==i?i:void 0,e.detail.reason,r.trackEvents||n,n,l,e.prerequisites),t(!0)})):t(!0)}),(()=>{const t=s.build();null==i||i(null,t),e(t)}))}));this.initialized()?r(!0):this._featureStore.initialized((e=>{var t,i;let n=!0;e?null===(t=this._logger)||void 0===t||t.warn("Called allFlagsState before client initialization; using last known values from data store"):(null===(i=this._logger)||void 0===i||i.warn("Called allFlagsState before client initialization. Data store not available; returning empty state"),n=!1),r(n)}))})):(null===(n=this._logger)||void 0===n||n.info(`${null!==(s=a.message)&&void 0!==s?s:"Invalid context."}. Returning empty state.`),Promise.resolve(new Ui.default(!1,!1).build()))}secureModeHash(e){const t=Di.Context.fromLDContext(e),i=t.valid?t.canonicalKey:void 0;if(!this._platform.crypto.createHmac)throw new Error("Platform must implement createHmac");const r=this._platform.crypto.createHmac("sha256",this._sdkKey);if(void 0===i)throw new Di.LDClientError("Could not generate secure mode hash for invalid context");return r.update(i),r.digest("hex")}close(){var e;this._eventProcessor.close(),null===(e=this._updateProcessor)||void 0===e||e.close(),this._featureStore.close(),this._bigSegmentsManager.close()}isOffline(){return this._config.offline}track(e,t,i,r){var n,s;const a=Di.Context.fromLDContext(t);a.valid?(void 0===r||Di.TypeValidators.Number.is(r)||null===(s=this._logger)||void 0===s||s.warn(Ji.invalidMetricValue(typeof r)),this._eventProcessor.sendEvent(this._eventFactoryDefault.customEvent(e,a,i,r))):null===(n=this._logger)||void 0===n||n.warn(Ji.MissingContextKeyNoEvent)}trackMigration(e){const t=(0,Bi.default)(e);t&&this._eventProcessor.sendEvent(t)}identify(e){var t;const i=Di.Context.fromLDContext(e);i.valid?this._eventProcessor.sendEvent(this._eventFactoryDefault.identifyEvent(i)):null===(t=this._logger)||void 0===t||t.warn(Ji.MissingContextKeyNoEvent)}async flush(e){try{await this._eventProcessor.flush()}catch(t){return null==e?void 0:e(t,!1)}return null==e?void 0:e(null,!0)}addHook(e){this._hookRunner.addHook(e)}_variationInternal(e,t,i,r,n,s){var a,o;if(this._config.offline)return null===(a=this._logger)||void 0===a||a.info("Variation called in offline mode. Returning default value."),void n(Vi.default.forError(Gi.ClientNotReady,void 0,i));const l=Di.Context.fromLDContext(t);if(!l.valid)return this._onError(new Di.LDClientError(`${null!==(o=l.message)&&void 0!==o?o:"Context not valid;"} returning default value.`)),void n(Vi.default.forError(Gi.UserNotSpecified,void 0,i));this._featureStore.get(Wi.default.Features,e,(t=>{const a=t;if(!a){const t=new Di.LDClientError(`Unknown feature flag "${e}"; returning default value`);this._onError(t);const r=Vi.default.forError(Gi.FlagNotFound,void 0,i);return this._eventProcessor.sendEvent(this._eventFactoryDefault.unknownFlagEvent(e,i,l)),void n(r)}this._evaluator.evaluateCb(a,l,(t=>{var o;if(void 0!==t.detail.variationIndex&&null!==t.detail.variationIndex||(null===(o=this._logger)||void 0===o||o.debug("Result value is null in variation"),t.setDefault(i)),s){const[o,c]=s(t.detail.value);if(!o){const t=Vi.default.forError(Gi.WrongType,`Did not receive expected type (${c}) evaluating feature flag "${e}"`,i);return this._sendEvalEvent(t,r,a,l,i),void n(t,a)}}this._sendEvalEvent(t,r,a,l,i),n(t,a)}),r)}))}_sendEvalEvent(e,t,i,r,n){var s;null===(s=e.events)||void 0===s||s.forEach((e=>{this._eventProcessor.sendEvent(Object.assign({},e))})),this._eventProcessor.sendEvent(t.evalEventServer(i,r,e.detail,n,void 0))}_evaluateIfPossible(e,t,i,r,n,s){this.initialized()?this._variationInternal(e,t,i,r,n,s):this._featureStore.initialized((a=>{var o,l;if(a)return null===(o=this._logger)||void 0===o||o.warn("Variation called before LaunchDarkly client initialization completed (did you wait for the 'ready' event?) - using last known values from feature store"),void this._variationInternal(e,t,i,r,n,s);null===(l=this._logger)||void 0===l||l.warn("Variation called before LaunchDarkly client initialization completed (did you wait for the'ready' event?) - using default value"),n(Vi.default.forError(Gi.ClientNotReady,void 0,i))}))}_dataSourceErrorHandler(e){var t;const i=401===e.code?new Error("Authentication failed. Double check your SDK key."):e;this._onError(i),this._onFailed(i),this.initialized()||(this._initState=Yi.Failed,this._rejectionReason=i,null===(t=this._initReject)||void 0===t||t.call(this,i))}_initSuccess(){var e;this.initialized()||(this._initState=Yi.Initialized,null===(e=this._initResolve)||void 0===e||e.call(this,this),this._onReady())}_clientWithTimeout(e,t,i){if(t){const r=(0,Di.cancelableTimedPromise)(t,"waitForInitialization");return Promise.race([e.then((()=>this)),r.promise.then((()=>this))]).catch((e=>{throw e instanceof Di.LDTimeoutError&&(null==i||i.error(e.message)),e})).finally((()=>r.cancel()))}return e}};var Zi={};Object.defineProperty(Zi,"__esModule",{value:!0}),Zi.createMigration=Zi.LDMigrationError=Zi.LDMigrationSuccess=void 0;const er=l,tr=C;Zi.LDMigrationSuccess=function(e){return{success:!0,result:e}},Zi.LDMigrationError=function(e){return{success:!1,error:e}};class ir{constructor(e,t){var i,r;this._client=e,this._config=t,this._readTable={[er.LDMigrationStage.Off]:async e=>this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),[er.LDMigrationStage.DualWrite]:async e=>this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),[er.LDMigrationStage.Shadow]:async e=>{const{fromOld:t,fromNew:i}=await this._doRead(e);return this._trackConsistency(e,t,i),t},[er.LDMigrationStage.Live]:async e=>{const{fromNew:t,fromOld:i}=await this._doRead(e);return this._trackConsistency(e,i,t),t},[er.LDMigrationStage.RampDown]:async e=>this._doSingleOp(e,"new",this._config.readNew.bind(this._config)),[er.LDMigrationStage.Complete]:async e=>this._doSingleOp(e,"new",this._config.readNew.bind(this._config))},this._writeTable={[er.LDMigrationStage.Off]:async e=>({authoritative:await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config))}),[er.LDMigrationStage.DualWrite]:async e=>{const t=await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config))}},[er.LDMigrationStage.Shadow]:async e=>{const t=await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config))}},[er.LDMigrationStage.Live]:async e=>{const t=await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config))}},[er.LDMigrationStage.RampDown]:async e=>{const t=await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config))}},[er.LDMigrationStage.Complete]:async e=>({authoritative:await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config))})},this._config.execution?this._execution=this._config.execution:this._execution=new tr.LDConcurrentExecution,this._latencyTracking=null===(i=this._config.latencyTracking)||void 0===i||i,this._errorTracking=null===(r=this._config.errorTracking)||void 0===r||r}async read(e,t,i,r){const n=await this._client.migrationVariation(e,t,i),s=await this._readTable[n.value]({payload:r,tracker:n.tracker});return n.tracker.op("read"),this._sendEvent(n.tracker),s}async write(e,t,i,r){const n=await this._client.migrationVariation(e,t,i),s=await this._writeTable[n.value]({payload:r,tracker:n.tracker});return n.tracker.op("write"),this._sendEvent(n.tracker),s}_sendEvent(e){const t=e.createEvent();t&&this._client.trackMigration(t)}_trackConsistency(e,t,i){this._config.check&&t.success&&i.success&&e.tracker.consistency((()=>this._config.check(t.result,i.result)))}async _readSequentialFixed(e){return{fromOld:await this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),fromNew:await this._doSingleOp(e,"new",this._config.readNew.bind(this._config))}}async _readConcurrent(e){const t=this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),i=this._doSingleOp(e,"new",this._config.readNew.bind(this._config)),[r,n]=await Promise.all([t,i]);return{fromOld:r,fromNew:n}}async _readSequentialRandom(e){if(0===Math.floor(2*Math.random())){return{fromOld:await this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),fromNew:await this._doSingleOp(e,"new",this._config.readNew.bind(this._config))}}const t=await this._doSingleOp(e,"new",this._config.readNew.bind(this._config));return{fromOld:await this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),fromNew:t}}async _doRead(e){var t;if((null===(t=this._execution)||void 0===t?void 0:t.type)===tr.LDExecution.Serial){return this._execution.ordering===tr.LDExecutionOrdering.Fixed?this._readSequentialFixed(e):this._readSequentialRandom(e)}return this._readConcurrent(e)}async _doSingleOp(e,t,i){e.tracker.invoked(t);const r=await this._trackLatency(e.tracker,t,(()=>async function(e){try{return await e()}catch(e){return{success:!1,error:e}}}((()=>i(e.payload)))));return!r.success&&this._errorTracking&&e.tracker.error(t),Object.assign({origin:t},r)}async _trackLatency(e,t,i){if(!this._latencyTracking)return i();let r,n,s;"undefined"!=typeof performance?(r=performance.now(),s=await i(),n=performance.now()):(r=Date.now(),s=await i(),n=Date.now());const a=n-r;return e.latency(t,a),s}}Zi.createMigration=function(e,t){return new ir(e,t)};var rr={},nr={},sr={},ar={};Object.defineProperty(ar,"__esModule",{value:!0});ar.default=class{constructor(e,t,i,r){this._filesystem=e,this._paths=t,this._watch=i,this._callback=r,this._watchers=[],this._fileData={},this._fileTimestamps={}}async loadAndWatch(){const e=this._paths.map((async e=>({data:await this._filesystem.readFile(e),path:e,timeStamp:await this._filesystem.getFileTimestamp(e)}))),t=await Promise.all(e);t.forEach((e=>{this._fileData[e.path]=e.data,this._fileTimestamps[e.path]=e.timeStamp})),this._callback(t),this._watch&&this._paths.forEach((e=>{const t=this._filesystem.watch(e,(async(e,t)=>{const i=await this._filesystem.getFileTimestamp(t);if(i===this._fileTimestamps[t])return;this._fileTimestamps[t]=i;const r=await this._filesystem.readFile(t);this._fileData[t]=r,this._debounceCallback()}));this._watchers.push(t)}))}close(){this._watchers.forEach((e=>e.close()))}_debounceCallback(){this._debounceHandle||(this._debounceHandle=setTimeout((()=>{this._debounceHandle=void 0,this._callback(Object.entries(this._fileData).reduce(((e,[t,i])=>(e.push({path:t,data:i}),e)),[]))}),10))}},Object.defineProperty(sr,"__esModule",{value:!0});const or=ae,lr=oe,cr=ar;sr.default=class{constructor(e,t,i,r=()=>{},n){var s;this._featureStore=i,this._initSuccessHandler=r,this._errorHandler=n,this._allData={},this._fileLoader=new cr.default(t,e.paths,null!==(s=e.autoUpdate)&&void 0!==s&&s,(e=>{var t,i;try{this._processFileData(e)}catch(e){null===(t=this._errorHandler)||void 0===t||t.call(this,e),null===(i=this._logger)||void 0===i||i.error(`Error processing files: ${e}`)}})),this._logger=e.logger,this._yamlParser=e.yamlParser}start(){(async()=>{var e;try{await this._fileLoader.loadAndWatch()}catch(t){null===(e=this._errorHandler)||void 0===e||e.call(this,t)}})()}stop(){this._fileLoader.close()}close(){this.stop()}_addItem(e,t){if(this._allData[e.namespace]||(this._allData[e.namespace]={}),this._allData[e.namespace][t.key])throw new Error(`found duplicate key: "${t.key}"`);this._allData[e.namespace][t.key]=t}_processFileData(e){const t=this._allData;this._allData={},e.forEach((e=>{let i;if(e.path.endsWith(".yml")||e.path.endsWith(".yaml")){if(!this._yamlParser)throw new Error(`Attempted to parse yaml file (${e.path}) without parser.`);i=this._yamlParser(e.data)}else i=JSON.parse(e.data);this._processParsedData(i,t)})),this._featureStore.init(this._allData,(()=>{this._initSuccessHandler(),this._initSuccessHandler=()=>{}}))}_processParsedData(e,t){Object.keys(e.flags||{}).forEach((t=>{(0,or.processFlag)(e.flags[t]),this._addItem(lr.default.Features,e.flags[t])})),Object.keys(e.flagValues||{}).forEach((i=>{var r,n;const s=null===(r=t[lr.default.Features.namespace])||void 0===r?void 0:r[i];let{version:a}=null!=s?s:{version:1};s&&JSON.stringify(e.flagValues[i])!==JSON.stringify(null===(n=null==s?void 0:s.variations)||void 0===n?void 0:n[0])&&(a+=1);const o=function(e,t,i){return{key:e,on:!0,fallthrough:{variation:0},variations:[t],version:i}}(i,e.flagValues[i],a);(0,or.processFlag)(o),this._addItem(lr.default.Features,o)})),Object.keys(e.segments||{}).forEach((t=>{(0,or.processSegment)(e.segments[t]),this._addItem(lr.default.Segments,e.segments[t])}))}},Object.defineProperty(nr,"__esModule",{value:!0});const ur=sr;nr.default=class{constructor(e){this._options=e}create(e,t,i,r){const n={paths:this._options.paths,autoUpdate:this._options.autoUpdate,logger:this._options.logger||e.basicConfiguration.logger,yamlParser:this._options.yamlParser};return new ur.default(n,e.platform.fileSystem,t,i,r)}getFactory(){return(e,t,i,r)=>this.create(e,t,i,r)}};var dr={},hr={},_r={},fr={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.variationForBoolean=e.FALSE_VARIATION_INDEX=e.TRUE_VARIATION_INDEX=void 0,e.TRUE_VARIATION_INDEX=0,e.FALSE_VARIATION_INDEX=1,e.variationForBoolean=function(t){return t?e.TRUE_VARIATION_INDEX:e.FALSE_VARIATION_INDEX}}(fr);var vr={};Object.defineProperty(vr,"__esModule",{value:!0});const gr=o,pr=fr;class yr{constructor(e,t,i){this._flagBuilder=e,this._clauses=[],t&&(this._clauses=[...t]),void 0!==i&&(this._variation=i)}andMatch(e,t,...i){return this._clauses.push({contextKind:e,attribute:t,attributeReference:new gr.AttributeReference(t),op:"in",values:i,negate:!1}),this}andNotMatch(e,t,...i){return this._clauses.push({contextKind:e,attribute:t,attributeReference:new gr.AttributeReference(t),op:"in",values:i,negate:!0}),this}thenReturn(e){return gr.TypeValidators.Boolean.is(e)?(this._flagBuilder.booleanFlag(),this.thenReturn((0,pr.variationForBoolean)(e))):(this._variation=e,this._flagBuilder.addRule(this),this._flagBuilder)}build(e){return{id:`rule${e}`,variation:this._variation,clauses:this._clauses}}clone(){return new yr(this._flagBuilder,this._clauses,this._variation)}}vr.default=yr,Object.defineProperty(_r,"__esModule",{value:!0});const mr=o,br=fr,wr=vr;class Sr{constructor(e,t){this._key=e,this._data={on:!0,variations:[]},t&&(this._data={on:t.on,variations:[...t.variations]},void 0!==t.offVariation&&(this._data.offVariation=t.offVariation),void 0!==t.fallthroughVariation&&(this._data.fallthroughVariation=t.fallthroughVariation),t.targetsByVariation&&(this._data.targetsByVariation=JSON.parse(JSON.stringify(t.targetsByVariation))),t.rules&&(this._data.rules=[],t.rules.forEach((e=>{var t;null===(t=this._data.rules)||void 0===t||t.push(e.clone())}))))}get _isBooleanFlag(){return 2===this._data.variations.length&&!0===this._data.variations[br.TRUE_VARIATION_INDEX]&&!1===this._data.variations[br.FALSE_VARIATION_INDEX]}booleanFlag(){return this._isBooleanFlag?this:this.variations(!0,!1).fallthroughVariation(br.TRUE_VARIATION_INDEX).offVariation(br.FALSE_VARIATION_INDEX)}variations(...e){return this._data.variations=[...e],this}on(e){return this._data.on=e,this}fallthroughVariation(e){return mr.TypeValidators.Boolean.is(e)?this.booleanFlag().fallthroughVariation((0,br.variationForBoolean)(e)):(this._data.fallthroughVariation=e,this)}offVariation(e){return mr.TypeValidators.Boolean.is(e)?this.booleanFlag().offVariation((0,br.variationForBoolean)(e)):(this._data.offVariation=e,this)}variationForAll(e){return this.on(!0).clearRules().clearAllTargets().fallthroughVariation(e)}valueForAll(e){return this.variations(e).variationForAll(0)}variationForUser(e,t){return this.variationForContext("user",e,t)}variationForContext(e,t,i){return mr.TypeValidators.Boolean.is(i)?this.booleanFlag().variationForContext(e,t,(0,br.variationForBoolean)(i)):(this._data.targetsByVariation||(this._data.targetsByVariation={}),this._data.variations.forEach(((r,n)=>{if(n===i){const i=this._data.targetsByVariation[n]||{};e in i||(i[e]=[]);-1!==i[e].indexOf(t)||i[e].push(t),this._data.targetsByVariation[n]=i}else{const i=this._data.targetsByVariation[n];if(i){const r=i[e];if(r){const n=r.indexOf(t);-1!==n&&(r.splice(n,1),r.length||delete i[e])}Object.keys(i).length||delete this._data.targetsByVariation[n]}}})),this)}clearRules(){return delete this._data.rules,this}clearAllTargets(){return delete this._data.targetsByVariation,this}ifMatch(e,t,...i){return new wr.default(this).andMatch(e,t,...i)}ifNotMatch(e,t,...i){return new wr.default(this).andNotMatch(e,t,...i)}checkRatio(e){var t;return this._data.migration=null!==(t=this._data.migration)&&void 0!==t?t:{},this._data.migration.checkRatio=e,this}samplingRatio(e){return this._data.samplingRatio=e,this}addRule(e){this._data.rules||(this._data.rules=[]),this._data.rules.push(e)}build(e){const t={key:this._key,version:e,on:this._data.on,offVariation:this._data.offVariation,fallthrough:{variation:this._data.fallthroughVariation},variations:[...this._data.variations],migration:this._data.migration,samplingRatio:this._data.samplingRatio};if(this._data.targetsByVariation){const e=[],i=[];Object.entries(this._data.targetsByVariation).forEach((([t,r])=>{Object.entries(r).forEach((([r,n])=>{const s=parseInt(t,10);e.push({contextKind:r,values:"user"===r?[]:n,variation:s}),"user"===r&&i.push({values:n,variation:s})}))})),t.targets=i,t.contextTargets=e}return this._data.rules&&(t.rules=this._data.rules.map(((e,t)=>e.build(String(t))))),t}clone(){return new Sr(this._key,this._data)}getKey(){return this._key}}_r.default=Sr;var kr={};Object.defineProperty(kr,"__esModule",{value:!0});kr.default=class{constructor(e,t,i,r,n){this._featureStore=e,this._onStop=r,this._listeners=n,this._flags=Object.assign({},t),this._segments=Object.assign({},i)}async start(){this._listeners.forEach((({processJson:e})=>{e({data:{flags:this._flags,segments:this._segments}})}))}stop(){this._onStop(this)}close(){this.stop()}async upsert(e,t){return this._featureStore.upsert(e,t)}},Object.defineProperty(hr,"__esModule",{value:!0});const Er=se,Or=Me,xr=ae,Dr=oe,Mr=_r,Pr=kr;hr.default=class{constructor(){this._currentFlags={},this._currentSegments={},this._dataSources=[],this._flagBuilders={}}getFactory(){return(e,t,i,r)=>{const n=(0,Er.createStreamListeners)(t,e.basicConfiguration.logger,{put:i}),s=new Pr.default(new Or.default(t),this._currentFlags,this._currentSegments,(e=>{this._dataSources.splice(this._dataSources.indexOf(e))}),n);return this._dataSources.push(s),s}}flag(e){return this._flagBuilders[e]?this._flagBuilders[e].clone():new Mr.default(e).booleanFlag()}update(e){const t=e.getKey(),i=this._currentFlags[t],r=i?i.version:0,n=e.build(r+1);return this._currentFlags[t]=n,this._flagBuilders[t]=e.clone(),Promise.all(this._dataSources.map((e=>e.upsert(Dr.default.Features,n))))}usePreconfiguredFlag(e){const t=JSON.parse(JSON.stringify(e)),i=this._currentFlags[t.key],r=Object.assign(Object.assign({},t),{version:i?i.version+1:t.version});return(0,xr.processFlag)(r),this._currentFlags[t.key]=r,Promise.all(this._dataSources.map((e=>e.upsert(Dr.default.Features,r))))}usePreconfiguredSegment(e){const t=JSON.parse(JSON.stringify(e)),i=this._currentSegments[t.key],r=Object.assign(Object.assign({},t),{version:i?i.version+1:t.version});return(0,xr.processSegment)(r),this._currentSegments[t.key]=r,Promise.all(this._dataSources.map((e=>e.upsert(Dr.default.Segments,r))))}},Object.defineProperty(dr,"__esModule",{value:!0}),dr.TestDataRuleBuilder=dr.TestDataFlagBuilder=dr.TestData=void 0;const Tr=hr;dr.TestData=Tr.default;const Cr=_r;dr.TestDataFlagBuilder=Cr.default;const Ir=vr;dr.TestDataRuleBuilder=Ir.default,function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.FileDataSourceFactory=void 0;const n=nr;e.FileDataSourceFactory=n.default,i(dr,e),i(V,e)}(rr);var Fr={},jr={};Object.defineProperty(jr,"__esModule",{value:!0});jr.default=class{constructor(e,t){this.handlers={},this.closed=!1,this.url=e,this.options=t}addEventListener(e,t){this.handlers[e]=t}close(){this.closed=!0}simulateError(e){this.options.errorFilter(e)||(this.closed=!0)}},Object.defineProperty(Fr,"__esModule",{value:!0}),Fr.NullEventSource=void 0;const Rr=jr;Fr.NullEventSource=Rr.default;var Ar={};Object.defineProperty(Ar,"__esModule",{value:!0}),Ar.TtlCache=void 0;const Vr=Ie;Ar.TtlCache=Vr.default,function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var n=Object.getOwnPropertyDescriptor(t,i);n&&!("get"in n?!t.__esModule:n.writable||n.configurable)||(n={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,n)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMigration=e.LDMigrationSuccess=e.LDMigrationError=e.BigSegmentStoreStatusProviderImpl=e.LDClientImpl=e.internalServer=e.platform=e.integrations=void 0;const n=s;e.BigSegmentStoreStatusProviderImpl=n.default;const c=a;e.LDClientImpl=c.default;const u=Zi;Object.defineProperty(e,"createMigration",{enumerable:!0,get:function(){return u.createMigration}}),Object.defineProperty(e,"LDMigrationError",{enumerable:!0,get:function(){return u.LDMigrationError}}),Object.defineProperty(e,"LDMigrationSuccess",{enumerable:!0,get:function(){return u.LDMigrationSuccess}}),e.integrations=rr,e.platform=o,i(l,e),i(De,e),i(Fr,e),i(o,e),e.internalServer=Ar}(n);class Nr{constructor(e){let t;switch(e){case"sha1":t=i.algo.SHA1;break;case"sha256":t=i.algo.SHA256;break;default:throw new Error("unsupported hash algorithm. Only sha1 and sha256 are supported.")}this._cryptoJSHasher=t.create()}digest(e){const t=this._cryptoJSHasher.finalize();let r;switch(e){case"base64":r=i.enc.Base64;break;case"hex":r=i.enc.Hex;break;default:throw new Error("unsupported output encoding. Only base64 and hex are supported.")}return t.toString(r)}update(e){return this._cryptoJSHasher.update(e),this}}class Lr{constructor(e,t){let r;switch(e){case"sha1":r=i.algo.SHA1;break;case"sha256":r=i.algo.SHA256;break;default:throw new Error("unsupported hash algorithm. Only sha1 and sha256 are supported.")}this._cryptoJSHmac=i.algo.HMAC.create(r,t)}digest(e){const t=this._cryptoJSHmac.finalize();if("base64"===e)return t.toString(i.enc.Base64);if("hex"===e)return t.toString(i.enc.Hex);throw new Error("unsupported output encoding. Only base64 and hex are supported.")}update(e){return this._cryptoJSHmac.update(e),this}}class Kr{createHash(e){return new Nr(e)}createHmac(e,t){return new Lr(e,t)}randomUUID(){return crypto.randomUUID()}}class $r{fetch(e,t={}){return fetch(e,t)}createEventSource(e,t){return new n.NullEventSource(e,t)}getEventSourceCapabilities(){return{readTimeout:!1,headers:!1,customMethod:!1}}}class Ur{constructor(e){this.crypto=new Kr,this.requests=new $r,this.info=e}}const zr={stream:!1,sendEvents:!1,useLdd:!0,diagnosticOptOut:!0,logger:n.BasicLogger.get()};class Br extends n.LDClientImpl{constructor(t,i,r){const s=new e,a=new Ur(i),o={analyticsEventPath:`/events/bulk/${t}`,diagnosticEventPath:`/events/diagnostic/${t}`,includeAuthorizationHeader:!1},l=(e=>Object.assign(Object.assign({},zr),e))(r);var c,u;super(t,a,l,(c=s,u=l.logger,{onError:e=>{c.listenerCount("error")?c.emit("error",e):null==u||u.error(e.message)},onFailed:e=>{c.emit("failed",e)},onReady:()=>{c.emit("ready")},onUpdate:n.noop,hasEventListeners:()=>!1}),o),this.emitter=s}}class Hr{constructor(e,t,i,r,s){this._edgeProvider=e,this._description=i,this._logger=r,this._cache=s,this.delete=n.noop,this.upsert=n.noop,this._rootKey=`LD-Env-${t}`}async get(e,t,i){const{namespace:r}=e,n="features"===r?"flags":r;this._logger.debug(`Requesting ${t} from ${this._rootKey}.${n}`);try{const e=await this._getStorePayload();switch(r){case"features":i(e.flags[t]);break;case"segments":i(e.segments[t]);break;default:i(null)}}catch(e){this._logger.error(e),i(null)}}async all(e,t=n.noop){const{namespace:i}=e,r="features"===i?"flags":i;this._logger.debug(`Requesting all from ${this._rootKey}.${r}`);try{const e=await this._getStorePayload();switch(i){case"features":t(e.flags);break;case"segments":t(e.segments);break;default:t({})}}catch(e){this._logger.error(e),t({})}}async _getStorePayload(){var e,t;let i=null===(e=this._cache)||void 0===e?void 0:e.get(this._rootKey);if(void 0!==i)return i;const r=await this._edgeProvider.get(this._rootKey);if(!r)throw new Error(`${this._rootKey} is not found in KV.`);if(i=n.deserializePoll(r),!i)throw new Error(`Error deserializing ${this._rootKey}`);return null===(t=this._cache)||void 0===t||t.set(this._rootKey,i),i}async initialized(e=n.noop){const t=null!==await this._edgeProvider.get(this._rootKey);this._logger.debug(`Is ${this._rootKey} initialized? ${t}`),e(t)}init(e,t){t()}getDescription(){return this._description}close(){var e;return null===(e=this._cache)||void 0===e?void 0:e.close()}}const qr=(e,t)=>{const{featureStore:i,logger:r,sendEvents:n}=t,s=function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(r=Object.getOwnPropertySymbols(e);n<r.length;n++)t.indexOf(r[n])<0&&Object.prototype.propertyIsEnumerable.call(e,r[n])&&(i[r[n]]=e[r[n]])}return i}(t,["featureStore","logger","sendEvents"]);if(!e)throw new Error("You must configure the client with a client key");if(!i||"object"!=typeof i||!i.get)throw new Error("You must configure the client with a feature store");if(!r)throw new Error("You must configure the client with a logger");if("{}"!==JSON.stringify(s))throw new Error(`Invalid configuration: ${Object.keys(s).toString()} not supported`);return!0};class Wr{platformData(){return{name:"Cloudflare"}}sdkData(){return{name:"@launchdarkly/cloudflare-server-sdk",version:"2.7.6",userAgentBase:"CloudflareEdgeSDK"}}}var Jr=Object.defineProperty,Gr=Object.getOwnPropertySymbols,Xr=Object.prototype.hasOwnProperty,Yr=Object.prototype.propertyIsEnumerable,Qr=(e,t,i)=>t in e?Jr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;const Zr=(e,t,i={})=>{var r;const s=null!=(r=i.logger)?r:n.BasicLogger.get(),a=((e,t)=>{var i={};for(var r in e)Xr.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&Gr)for(var r of Gr(e))t.indexOf(r)<0&&Yr.call(e,r)&&(i[r]=e[r]);return i})(i,["cache"]),o=i.cache?new n.internalServer.TtlCache(i.cache):void 0;return((e,t,i)=>(qr(e,i),new Br(e,t,i)))(e,new Wr,((e,t)=>{for(var i in t||(t={}))Xr.call(t,i)&&Qr(e,i,t[i]);if(Gr)for(var i of Gr(t))Yr.call(t,i)&&Qr(e,i,t[i]);return e})({featureStore:new Hr(t,e,"Cloudflare",s,o),logger:s},a))};var en=n.BasicLogger,tn=n.IsMigrationStage,rn=n.LDConcurrentExecution,nn=n.LDMigrationStage,sn=n.LDMigrationSuccess,an=n.createMigration,on=n.integrations;export{en as BasicLogger,Hr as EdgeFeatureStore,tn as IsMigrationStage,rn as LDConcurrentExecution,nn as LDMigrationStage,sn as LDMigrationSuccess,an as createMigration,Zr as init,on as integrations};
|
|
1
|
+
import{EventEmitter as e}from"node:events";import t from"semver";import i from"crypto-js";var r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},s={},n={};Object.defineProperty(n,"__esModule",{value:!0});n.default=class{constructor(e){this._onRequestStatus=e}getStatus(){return this._lastStatus}async requireStatus(){return this._lastStatus||await this._onRequestStatus(),this._lastStatus}notify(){var e;this._lastStatus&&(null===(e=this._listener)||void 0===e||e.call(this,this._lastStatus))}setListener(e){this._listener=e}setStatus(e){this._lastStatus=e}};var a={},o={};!function(e){function t(e){return e.indexOf("~")?e.replace(/~1/g,"/").replace(/~0/g,"~"):e}class i{constructor(e,i=!1){if(i){const t=e;this._components=[t],this.isValid=""!==t,this.redactionName=t.startsWith("/")?`/${t.replace(/~/g,"~0").replace(/\//g,"~1")}`:t}else{if(this.redactionName=e,""===e||"/"===e||e.match(/\/\/|(^\/.*~[^0|^1])|~$/))return this.isValid=!1,void(this._components=[]);!function(e){return!e.startsWith("/")}(e)?e.indexOf("/",1)<0?this._components=[t(e.slice(1))]:this._components=function(e){return(e.startsWith("/")?e.substring(1):e).split("/").map(e=>t(e))}(e):this._components=[e],"_meta"===this._components[0]?this.isValid=!1:this.isValid=!0}}get(e){const{_components:t,isValid:i}=this;if(!i)return;let r=e;for(let e=0;e<t.length;e+=1){const i=t[e];if(null==r||!Object.prototype.hasOwnProperty.call(r,i)||"object"!=typeof r||Array.isArray(r))return;r=r[i]}return r}getComponent(e){return this._components[e]}get depth(){return this._components.length}get isKind(){return 1===this._components.length&&"kind"===this._components[0]}compare(e){return this.depth===e.depth&&this._components.every((t,i)=>t===e.getComponent(i))}get components(){return[...this._components]}}i.InvalidReference=new i("");class r{is(e){if(Array.isArray(e))return!1;const t=typeof e;return"function"===t||"object"===t}getType(){return"factory method or object"}}class s{constructor(e,t){this._typeName=e,this.typeOf=typeof t}is(e){return!Array.isArray(e)&&typeof e===this.typeOf}getType(){return this._typeName}}class n{constructor(e,t){this._typeName=e,this.typeOf=typeof t}is(e){return!!Array.isArray(e)&&(!(e.length>0)||e.every(e=>typeof e===this.typeOf))}getType(){return this._typeName}}class a extends s{constructor(e){super(`number with minimum value of ${e}`,0),this.min=e}is(e){return typeof e===this.typeOf&&e>=this.min}}class o extends s{constructor(e){super(`string matching ${e}`,""),this.expression=e}is(e){return"string"==typeof e&&!!e.match(this.expression)}}class l{is(e){return"function"==typeof e}getType(){return"function"}}class c{is(e){return"boolean"==typeof e||null==e}getType(){return"boolean | undefined | null"}}const u=/^\d\d\d\d-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d\d*)?(Z|[-+]\d\d(:\d\d)?)/;class d{is(e){return"number"==typeof e||"string"==typeof e&&u.test(e)}getType(){return"date"}}class h extends o{constructor(){super(/^(\w|\.|-)+$/)}is(e){return super.is(e)&&"kind"!==e}}class g{static createTypeArray(e,t){return new n(e,t)}static numberWithMin(e){return new a(e)}static stringMatchingRegex(e){return new o(e)}}function _(e){return"kind"in e&&(g.String.is(e.kind)&&"multi"!==e.kind)}function v(e){return"kind"in e&&(g.String.is(e.kind)&&"multi"===e.kind)}function f(e){return!("kind"in e)||null===e.kind||void 0===e.kind}function p(e,t=[]){if(null===e||"object"!=typeof e)return JSON.stringify(e);if(t.includes(e))throw new Error("Cycle detected");if(Array.isArray(e)){return`[${e.map(i=>p(i,[...t,e])).map(e=>void 0===e?"null":e).join(",")}]`}return`{${Object.keys(e).sort().map(i=>{const r=p(e[i],[...t,e]);if(void 0!==r)return`${JSON.stringify(i)}:${r}`}).filter(e=>void 0!==e).join(",")}}`}g.String=new s("string",""),g.Number=new s("number",0),g.ObjectOrFactory=new r,g.Object=new s("object",{}),g.StringArray=new n("string[]",""),g.Boolean=new s("boolean",!0),g.Function=new l,g.Date=new d,g.Kind=new h,g.NullableBoolean=new c;const y="user";function m(e){return e.includes("%")||e.includes(":")?e.replace(/%/g,"%25").replace(/:/g,"%3A"):e}function b(e){return g.Kind.is(e)}function S(e){return g.String.is(e)&&""!==e}function w(e,t=!1){return e?e.map(e=>new i(e,t)):[]}class k{constructor(e,t,i){this._isMulti=!1,this._isUser=!1,this._wasLegacy=!1,this._contexts={},this.kind=t,this.valid=e,this.message=i}static _contextForError(e,t){return new k(!1,e,t)}static _getValueFromContext(e,t){if(t&&e.isValid)return 1===e.depth&&"anonymous"===e.getComponent(0)?!!t?.anonymous:e.get(t)}_contextForKind(e){return this._isMulti?this._contexts[e]:this.kind===e?this._context:void 0}static _fromMultiKindContext(e){const t=Object.keys(e).filter(e=>"kind"!==e),i=t.every(b);if(!t.length)return k._contextForError("multi","A multi-kind context must contain at least one kind");if(!i)return k._contextForError("multi","Context contains invalid kinds");const r={};let s=!0;const n=t.reduce((t,i)=>{const n=e[i];var a;return(a=n)&&g.Object.is(a)?(t[i]=n,r[i]=w(n._meta?.privateAttributes)):s=!1,t},{});if(!s)return k._contextForError("multi","Context contained contexts that were not objects");if(!Object.values(n).every(e=>S(e.key)))return k._contextForError("multi","Context contained invalid keys");if(1===t.length){const e=t[0],i=new k(!0,e);return i._context={...n[e],kind:e},i._privateAttributeReferences=r,i._isUser="user"===e,i}const a=new k(!0,e.kind);return a._contexts=n,a._privateAttributeReferences=r,a._isMulti=!0,a}static _fromSingleKindContext(e){const{key:t,kind:i}=e,r=b(i),s=S(t);if(!r)return k._contextForError(i??"unknown","The kind was not valid for the context");if(!s)return k._contextForError(i,"The key for the context was not valid");const n=w(e._meta?.privateAttributes),a=new k(!0,i);return a._isUser="user"===i,a._context=e,a._privateAttributeReferences={[i]:n},a}static _fromLegacyUser(e){if(!(void 0!==e.key&&null!==e.key))return k._contextForError("user","The key for the context was not valid");const t=new k(!0,"user");return t._isUser=!0,t._wasLegacy=!0,t._context=function(e){const t={...e.custom||[],kind:"user",key:String(e.key)};if(null!=e.anonymous){const i=!!e.anonymous;delete t.anonymous,t.anonymous=i}return null!==e.name&&void 0!==e.name&&(t.name=e.name),null!==e.ip&&void 0!==e.ip&&(t.ip=e.ip),null!==e.firstName&&void 0!==e.firstName&&(t.firstName=e.firstName),null!==e.lastName&&void 0!==e.lastName&&(t.lastName=e.lastName),null!==e.email&&void 0!==e.email&&(t.email=e.email),null!==e.avatar&&void 0!==e.avatar&&(t.avatar=e.avatar),null!==e.country&&void 0!==e.country&&(t.country=e.country),null!==e.privateAttributeNames&&void 0!==e.privateAttributeNames&&(t._meta={privateAttributes:e.privateAttributeNames}),t}(e),t._privateAttributeReferences={user:w(e.privateAttributeNames,!0)},t}static fromLDContext(e){return e?_(e)?k._fromSingleKindContext(e):v(e)?k._fromMultiKindContext(e):f(e)?k._fromLegacyUser(e):k._contextForError("unknown","Context was not of a valid kind"):k._contextForError("unknown","No context specified. Returning default value")}static toLDContext(e){if(!e.valid)return;const t=e.getContexts();if(!e._isMulti)return t[0][1];const i={kind:"multi"};return t.forEach(e=>{const t=e[0],r=e[1];i[t]=r}),i}valueForKind(e,t=y){return e.isKind?this.kinds:k._getValueFromContext(e,this._contextForKind(t))}key(e=y){return this._contextForKind(e)?.key}get isMultiKind(){return this._isMulti}get canonicalKey(){return this._isUser?this._context.key:this._isMulti?Object.keys(this._contexts).sort().map(e=>`${e}:${m(this._contexts[e].key)}`).join(":"):`${this.kind}:${m(this._context.key)}`}get kinds(){return this._isMulti?Object.keys(this._contexts):[this.kind]}get kindsAndKeys(){return this._isMulti?Object.entries(this._contexts).reduce((e,[t,i])=>(e[t]=i.key,e),{}):{[this.kind]:this._context.key}}privateAttributes(e){return this._privateAttributeReferences?.[e]||[]}getContexts(){return this._isMulti?Object.entries(this._contexts):[[this.kind,this._context]]}get legacy(){return this._wasLegacy}canonicalUnfilteredJson(){if(this.valid){if(this._cachedCanonicalJson)return this._cachedCanonicalJson;try{this._cachedCanonicalJson=p(k.toLDContext(this))}catch{}return this._cachedCanonicalJson}}}k.UserKind=y;const E=["key","kind","_meta","anonymous"].map(e=>new i(e,!0)),O=["name","ip","firstName","lastName","email","avatar","country"];class D{constructor(e,t){this._allAttributesPrivate=e,this._privateAttributes=t}filter(e,t=!1){const i=e.getContexts();if(1===i.length)return this._filterSingleKind(e,i[0][1],i[0][0],t);const r={kind:"multi"};return i.forEach(([i,s])=>{r[i]=this._filterSingleKind(e,s,i,t)}),r}_getAttributesToFilter(e,t,r,s){return(s?Object.keys(t).map(e=>new i(e,!0)):[...this._privateAttributes,...e.privateAttributes(r)]).filter(e=>!E.some(t=>t.compare(e)))}_filterSingleKind(e,t,i,r){const s=this._allAttributesPrivate||r&&!0===t.anonymous,{cloned:n,excluded:a}=function(e,t){const i=[],r={},s=[];for(i.push(...Object.keys(e).map(t=>({key:t,ptr:[t],source:e,parent:r,visited:[e]})));i.length;){const e=i.pop(),r=t.find(t=>{return i=t,r=e.ptr,i.depth===r.length&&r.every((e,t)=>e===i.getComponent(t));var i,r});if(r)s.push(r.redactionName);else{const t=e.source[e.key];null===t?e.parent[e.key]=t:Array.isArray(t)?e.parent[e.key]=[...t]:"object"==typeof t?e.visited.includes(t)||(e.parent[e.key]={},i.push(...Object.keys(t).map(i=>({key:i,ptr:[...e.ptr,i],source:t,parent:e.parent[e.key],visited:[...e.visited,t]})))):e.parent[e.key]=t}}return{cloned:r,excluded:s.sort()}}(t,this._getAttributesToFilter(e,t,i,s));return e.legacy&&O.forEach(e=>{e in n&&(n[e]=String(n[e]))}),a.length&&(n._meta||(n._meta={}),n._meta.redactedAttributes=a),n._meta&&(delete n._meta.privateAttributes,0===Object.keys(n._meta).length&&delete n._meta),n}}class x{constructor(e,t,i=Math.random){this._retryResetIntervalMillis=t,this._random=i,this._retryCount=0,this._initialRetryDelayMillis=Math.max(1,e),this._maxExponent=Math.ceil(Math.log2(3e4/this._initialRetryDelayMillis))}_backoff(){const e=Math.min(this._retryCount,this._maxExponent),t=this._initialRetryDelayMillis*2**e;return Math.min(t,3e4)}_jitter(e){return e-Math.trunc(.5*this._random()*e)}success(e=Date.now()){this._activeSince=e}fail(e=Date.now()){void 0!==this._activeSince&&e-this._activeSince>this._retryResetIntervalMillis&&(this._retryCount=0),this._activeSince=void 0;const t=this._jitter(this._backoff());return this._retryCount+=1,t}}class P{constructor(e,t){this._dataCallback=e,this._statusCallback=t,this._disabled=!1}disable(){this._disabled=!0}async dataHandler(e,t){this._disabled||this._dataCallback(e,t)}async statusHandler(e,t){this._disabled||this._statusCallback(e,t)}}var M;!function(e){e[e.Valid=0]="Valid",e[e.Initializing=1]="Initializing",e[e.Interrupted=2]="Interrupted",e[e.Closed=3]="Closed"}(M||(M={}));class T{constructor(e,t){this._list=t?[...t]:[],this._circular=e,this._pos=0}next(){if(this._list.length<=0||this._pos>=this._list.length)return;const e=this._list[this._pos];return this._circular?this._pos=(this._pos+1)%this._list.length:this._pos+=1,e}replace(e){this._list=[...e],this._pos=0}remove(e){const t=this._list.indexOf(e);return!(t<0)&&(this._list.splice(t,1),this._list.length>0&&(t<this._pos&&(this._pos-=1),this._circular&&this._pos>this._list.length-1&&(this._pos=0)),!0)}reset(){this._pos=0}pos(){return this._pos}length(){return this._list.length}clear(){this._list=[],this._pos=0}}class C extends Error{constructor(e){super(e),this.name="LaunchDarklyFileDataSourceError"}}class F extends Error{constructor(e,t,i,r=!0){super(t),this.kind=e,this.status=i,this.name="LaunchDarklyPollingError",this.recoverable=r}}class I extends Error{constructor(e,t,i,r=!0){super(t),this.kind=e,this.code=i,this.name="LaunchDarklyStreamingError",this.recoverable=r}}class j extends Error{constructor(e,t,i){super(t),this.kind=e,this.code=i,this.name="LDFlagDeliveryFallbackError",this.recoverable=!1}}var R,A,L,V;e.DataSourceErrorKind=void 0,(R=e.DataSourceErrorKind||(e.DataSourceErrorKind={})).Unknown="UNKNOWN",R.NetworkError="NETWORK_ERROR",R.ErrorResponse="ERROR_RESPONSE",R.InvalidData="INVALID_DATA",e.AutoEnvAttributes=void 0,(A=e.AutoEnvAttributes||(e.AutoEnvAttributes={}))[A.Disabled=0]="Disabled",A[A.Enabled=1]="Enabled",function(e){e[e.AnalyticsEvents=0]="AnalyticsEvents",e[e.DiagnosticEvent=1]="DiagnosticEvent"}(L||(L={})),function(e){e[e.Succeeded=0]="Succeeded",e[e.Failed=1]="Failed",e[e.FailedAndMustShutDown=2]="FailedAndMustShutDown"}(V||(V={}));var N=Object.freeze({__proto__:null,get DataSourceState(){return M},get LDDeliveryStatus(){return V},get LDEventType(){return L}});function K(e){if("string"==typeof e)return e;if(void 0===e)return"undefined";if(null===e)return"null";if(Object.prototype.hasOwnProperty.call(e,"toString"))try{return e.toString()}catch{}if("bigint"==typeof e)return`${e}n`;try{return JSON.stringify(e)}catch(e){return e instanceof TypeError&&e.message.indexOf("circular")>=0?"[Circular]":"[Not Stringifiable]"}}const $={s:e=>K(e),d:e=>function(e){return"symbol"==typeof e?"NaN":"bigint"==typeof e?`${e}n`:String(Number(e))}(e),i:e=>function(e){return"symbol"==typeof e?"NaN":"bigint"==typeof e?`${e}n`:String(parseInt(e,10))}(e),f:e=>function(e){return"symbol"==typeof e?"NaN":String(parseFloat(e))}(e),j:e=>K(e),o:e=>K(e),O:e=>K(e),c:()=>""};function z(...e){const t=e.shift();if(g.String.is(t)){let i="",r=0;for(;r<t.length;){const s=t.charAt(r);if("%"===s){if(r+1<t.length){const s=t.charAt(r+1);if(s in $&&e.length){const t=e.shift();i+=$[s]?.(t)}else i+="%"===s?"%":`%${s}`;r+=2}}else i+=s,r+=1}return e.length&&(i.length&&(i+=" "),i+=e.map(K).join(" ")),i}return e.map(K).join(" ")}var U;!function(e){e[e.debug=0]="debug",e[e.info=1]="info",e[e.warn=2]="warn",e[e.error=3]="error",e[e.none=4]="none"}(U||(U={}));const B=["debug","info","warn","error","none"];class H{static get(){return new H({})}constructor(e){if(this._logLevel=U[e.level??"info"]??U.info,this._name=e.name??"LaunchDarkly",this._formatter=e.formatter,"object"==typeof e.destination)this._destinations={[U.debug]:e.destination.debug,[U.info]:e.destination.info,[U.warn]:e.destination.warn,[U.error]:e.destination.error};else if("function"==typeof e.destination){const{destination:t}=e;this._destinations={[U.debug]:t,[U.info]:t,[U.warn]:t,[U.error]:t}}}_tryFormat(...e){try{return this._formatter?this._formatter?.(...e):z(...e)}catch{return z(...e)}}_tryWrite(e,t){try{e(t)}catch{console.error(t)}}_log(e,t){if(e>=this._logLevel){const i=`${B[e]}: [${this._name}]`;try{const r=this._destinations?.[e];r?this._tryWrite(r,`${i} ${this._tryFormat(...t)}`):console.error(...t)}catch{console.error(...t)}}}error(...e){this._log(U.error,e)}warn(...e){this._log(U.warn,e)}info(...e){this._log(U.info,e)}debug(...e){this._log(U.debug,e)}}const q={error:g.Function,warn:g.Function,info:g.Function,debug:g.Function};class W{constructor(e,t){Object.entries(q).forEach(([t,i])=>{if(!i.is(e[t]))throw new Error(`Provided logger instance must support logger.${t}(...) method`)}),this._logger=e,this._fallback=t}_log(e,t){try{this._logger[e](...t)}catch{this._fallback[e](...t)}}error(...e){this._log("error",e)}warn(...e){this._log("warn",e)}info(...e){this._log("info",e)}debug(...e){this._log("debug",e)}}class J{static deprecated(e,t){return`"${e}" is deprecated, please use "${t}"`}static optionBelowMinimum(e,t,i){return`Config option "${e}" had invalid value of ${t}, using minimum of ${i} instead`}static unknownOption(e){return`Ignoring unknown config option "${e}"`}static wrongOptionType(e,t,i){return`Config option "${e}" should be of type ${t}, got ${i}, using default value`}static wrongOptionTypeBoolean(e,t){return`Config option "${e}" should be a boolean, got ${t}, converting to boolean`}static invalidTagValue(e){return`Config option "${e}" must only contain letters, numbers, ., _ or -.`}static tagValueTooLong(e){return`Value of "${e}" was longer than 64 characters and was discarded.`}static partialEndpoint(e){return`You have set custom uris without specifying the ${e} URI; connections may not work properly`}}const G=g.stringMatchingRegex(/^(\w|\.|-)+$/),X=(e,t)=>G.is(e)?e.length>64?{valid:!1,message:J.tagValueTooLong(t)}:{valid:!0}:{valid:!1,message:J.invalidTagValue(t)};function Y(e){return e.replace(/\/+$/,"")}function Q(e){return e.replace(/^\/+/,"").replace(/\?$/,"")}class Z{constructor(e,t,i=Z.DEFAULT_EVENTS,r="/bulk",s="/diagnostic",n=!0,a){this.streaming=Y(e),this.polling=Y(t),this.events=Y(i),this.analyticsEventPath=r,this.diagnosticEventPath=s,this.includeAuthorizationHeader=n,this.payloadFilterKey=a}}function ee(e,t=[]){if(0===t.length)return e;return`${e}?${t.map(({key:e,value:t})=>`${e}=${t}`).join("&")}`}function te(e,t,i=[]){const r=Q(t);return ee(`${e.events}/${r}`,i)}Z.DEFAULT_EVENTS="https://events.launchdarkly.com";class ie extends Error{constructor(e){super(e),this.name="LaunchDarklyUnexpectedResponseError"}}class re extends Error{constructor(e){super(e),this.name="LaunchDarklyClientError"}}class se extends Error{constructor(e){super(e),this.name="LaunchDarklyTimeoutError"}}function ne(e){return!(e>=400&&e<500)||(400===e||408===e||429===e)}function ae(e){return 413===e||ne(e)}const oe=(e,t)=>e?Object.entries(e).reduce((e,[i,r])=>(!Boolean(r)||(e=>"{}"===JSON.stringify(e))(r)||t?.includes(i)||(e[i]="object"==typeof r?oe(r,t):r),e),{}):e;function le(e,t,i){let r;r=e.status?`error ${e.status}${401===e.status?" (invalid SDK key)":""}`:`I/O error (${e.message||"unknown error"})`;return`Received ${r} for ${t} - ${i??"giving up permanently"}`}const ce=async(e=1e3)=>new Promise(t=>{setTimeout(t,e)});var ue;!function(e){e.MalformedFlag="MALFORMED_FLAG",e.UserNotSpecified="USER_NOT_SPECIFIED",e.FlagNotFound="FLAG_NOT_FOUND",e.ClientNotReady="CLIENT_NOT_READY",e.WrongType="WRONG_TYPE"}(ue||(ue={}));var de=ue;class he{static invalidMetricValue(e){return`The track function was called with a non-numeric "metricValue" (${e}), only numeric metric values are supported.`}}he.MissingContextKeyNoEvent="Context was unspecified or had no key; event will not be sent";class ge{constructor(e,t){const{basicConfiguration:i,platform:r}=e,{serviceEndpoints:{analyticsEventPath:s,diagnosticEventPath:n}}=i,{crypto:a,requests:o}=r;this._defaultHeaders={...t},this._eventsUri=te(i.serviceEndpoints,s,[]),this._diagnosticEventsUri=te(i.serviceEndpoints,n,[]),this._requests=o,this._crypto=a}async _tryPostingEvents(e,t,i,r){const s={status:V.Succeeded},n={...this._defaultHeaders,"content-type":"application/json"};let a;i&&(n["x-launchdarkly-payload-id"]=i,n["x-launchDarkly-event-schema"]="4");try{const{status:i,headers:r}=await this._requests.fetch(t,{headers:n,body:JSON.stringify(e),compressBodyIfPossible:!0,method:"POST",keepalive:!0}),o=Date.parse(r.get("date")||"");if(o&&(s.serverTime=o),i<=204)return s;if(a=new ie(le({status:i,message:"some events were dropped"},"event posting")),!ne(i))return ae(i)?s.status=V.Failed:s.status=V.FailedAndMustShutDown,s.error=a,s}catch(e){a=e}return a&&!r?(s.status=V.Failed,s.error=a,s):(await ce(),this._tryPostingEvents(e,this._eventsUri,i,!1))}async sendEventData(e,t){const i=e===L.AnalyticsEvents?this._crypto.randomUUID():void 0,r=e===L.AnalyticsEvents?this._eventsUri:this._diagnosticEventsUri;return this._tryPostingEvents(t,r,i,!0)}}function _e(e){return"feature"===e.kind}class ve{constructor(e,t,i,r,s,n){this.count=e,this.key=t,this.value=i,this.version=s,this.variation=n,this.default=r}increment(){this.count+=1}}class fe{constructor(e=!1,t){this._singleContext=e,this._contextFilter=t,this._startDate=0,this._endDate=0,this._counters={},this._contextKinds={}}summarizeEvent(e){if(_e(e)&&!e.excludeFromSummaries){this._context||(this._context=e.context);const t=function(e){return`${e.key}:${null!==e.variation&&void 0!==e.variation?e.variation:""}:${null!==e.version&&void 0!==e.version?e.version:""}`}(e),i=this._counters[t];let r=this._contextKinds[e.key];r||(r=new Set,this._contextKinds[e.key]=r),e.context.kinds.forEach(e=>r.add(e)),i?i.increment():this._counters[t]=new ve(1,e.key,e.value,e.default,e.version,e.variation),(0===this._startDate||e.creationDate<this._startDate)&&(this._startDate=e.creationDate),e.creationDate>this._endDate&&(this._endDate=e.creationDate)}}getSummary(){const e=Object.values(this._counters).reduce((e,t)=>{let i=e[t.key];i||(i={default:t.default,counters:[],contextKinds:[...this._contextKinds[t.key]]},e[t.key]=i);const r={value:t.value,count:t.count};return void 0!==t.variation&&null!==t.variation&&(r.variation=t.variation),void 0!==t.version&&null!==t.version?r.version=t.version:r.unknown=!0,i.counters.push(r),e},{}),t={startDate:this._startDate,endDate:this._endDate,features:e,kind:"summary",context:void 0!==this._context&&this._singleContext?this._contextFilter?.filter(this._context):void 0};return this._clearSummary(),t}_clearSummary(){this._startDate=0,this._endDate=0,this._counters={},this._contextKinds={}}}class pe extends Error{constructor(e){super(e),this.name="LaunchDarklyInvalidSDKKeyError"}}class ye{constructor(e,t){this._contextFilter=e,this._logger=t,this._summarizers={}}summarizeEvent(e){if(_e(e)){const t=e.context.canonicalUnfilteredJson();if(!t)return void(e.context.valid&&this._logger?.error("Unable to serialize context, likely the context contains a cycle."));let i=this._summarizers[t];i||(this._summarizers[t]=new fe(!0,this._contextFilter),i=this._summarizers[t]),i.summarizeEvent(e)}}getSummaries(){const e=this._summarizers;return this._summarizers={},Object.values(e).map(e=>e.getSummary())}}function me(e){const t=Math.trunc(e);return 1===t||0!==t&&0===Math.floor(Math.random()*t)}class be{constructor(e,t,i,r,s=1,n){this.context=e,this.key=t,this.data=i,this.metricValue=r,this.samplingRatio=s,this.url=n,this.kind="custom",this.creationDate=Date.now(),this.context=e}}class Se{constructor(e,t,i,r,s,n,a,o,l,c,u,d,h=1){this.withReasons=e,this.context=t,this.key=i,this.samplingRatio=h,this.kind="feature",this.creationDate=Date.now(),this.value=r,this.default=s,void 0!==n&&(this.version=n),void 0!==a&&(this.variation=a),void 0!==o&&(this.trackEvents=o),void 0!==l&&(this.prereqOf=l),void 0!==c&&(this.reason=c),void 0!==u&&(this.debugEventsUntilDate=u),void 0!==d&&(this.excludeFromSummaries=d)}}class we{constructor(e,t=1){this.context=e,this.samplingRatio=t,this.kind="identify",this.creationDate=Date.now()}}class ke{constructor(e,t,i){this._objProcessors=e,this._errorHandler=t,this._logger=i,this._listeners=[],this._tempId=void 0,this._tempBasis=!1,this._tempUpdates=[],this._processServerIntent=e=>{if(this._resetAll(),!e.payloads.length)return;const t=e.payloads[0];switch(t?.intentCode){case"xfer-full":this._tempBasis=!0;break;case"xfer-changes":this._tempBasis=!1;break;case"none":this._tempBasis=!1,this._processIntentNone(t);break;default:return void this._logger?.warn(`Unable to process intent code '${t?.intentCode}'.`)}this._tempId=t?.id},this._processPutObject=e=>{if(!(this._tempId&&e.kind&&e.key&&e.version&&e.object))return;const t=this._processObj(e.kind,e.object);t?this._tempUpdates.push({kind:e.kind,key:e.key,version:e.version,object:t}):this._logger?.warn(`Unable to process object for kind: '${e.kind}'`)},this._processDeleteObject=e=>{this._tempId&&e.kind&&e.key&&e.version&&this._tempUpdates.push({kind:e.kind,key:e.key,version:e.version,deleted:!0})},this._processIntentNone=e=>{if(!e.id||!e.target)return;const t={id:e.id,version:e.target,basis:!1,updates:[]};this._listeners.forEach(e=>e(t)),this._resetAfterEmission()},this._processPayloadTransferred=e=>{if(!this._tempId||!e.state||!e.version)return void this._resetAll();const t={id:this._tempId,version:e.version,state:e.state,basis:this._tempBasis,updates:this._tempUpdates};this._listeners.forEach(e=>e(t)),this._resetAfterEmission()},this._processGoodbye=e=>{this._logger?.info(`Goodbye was received from the LaunchDarkly connection with reason: ${e.reason}.`),this._resetAll()},this._processError=e=>{this._logger?.info(`An issue was encountered receiving updates for payload ${this._tempId} with reason: ${e.reason}.`),this._resetAfterError()}}addPayloadListener(e){this._listeners.push(e)}removePayloadListener(e){const t=this._listeners.indexOf(e,0);t>-1&&this._listeners.splice(t,1)}processEvents(e){e.forEach(e=>{switch(e.event){case"server-intent":this._processServerIntent(e.data);break;case"put-object":this._processPutObject(e.data);break;case"delete-object":this._processDeleteObject(e.data);break;case"payload-transferred":this._processPayloadTransferred(e.data);break;case"goodbye":this._processGoodbye(e.data);break;case"error":this._processError(e.data)}})}_processObj(e,t){return this._objProcessors[e]?.(t)}_resetAfterEmission(){this._tempBasis=!1,this._tempUpdates=[]}_resetAfterError(){this._tempUpdates=[]}_resetAll(){this._tempId=void 0,this._tempBasis=!1,this._tempUpdates=[]}}const Ee="unknown plugin";function Oe(e,t){try{return t.getMetadata().name||Ee}catch{return e.error("Exception thrown getting metadata for plugin. Unable to get plugin name."),Ee}}var De=Object.freeze({__proto__:null,ClientMessages:he,DiagnosticsManager:class{constructor(e,t,i){this._platform=t,this._diagnosticInitConfig=i,this._streamInits=[],this._startTime=Date.now(),this._dataSinceDate=this._startTime,this._id={diagnosticId:t.crypto.randomUUID(),sdkKeySuffix:e.length>6?e.substring(e.length-6):e}}createInitEvent(){const e=this._platform.info.sdkData(),t=this._platform.info.platformData();return{kind:"diagnostic-init",id:this._id,creationDate:this._startTime,sdk:e,configuration:this._diagnosticInitConfig,platform:{name:t.name,osArch:t.os?.arch,osName:t.os?.name,osVersion:t.os?.version,...t.additional||{}}}}recordStreamInit(e,t,i){const r={timestamp:e,failed:t,durationMillis:i};this._streamInits.push(r)}createStatsEventAndReset(e,t,i){const r=Date.now(),s={kind:"diagnostic",id:this._id,creationDate:r,dataSinceDate:this._dataSinceDate,droppedEvents:e,deduplicatedUsers:t,eventsInLastBatch:i,streamInits:this._streamInits};return this._streamInits=[],this._dataSinceDate=r,s}},ErrorKinds:de,EventFactoryBase:class{constructor(e){this._withReasons=e}evalEvent(e){return new Se(this._withReasons,e.context,e.flagKey,e.value,e.defaultVal,e.version,e.variation??void 0,e.trackEvents||e.addExperimentData,e.prereqOfFlagKey,this._withReasons||e.addExperimentData?e.reason:void 0,e.debugEventsUntilDate,e.excludeFromSummaries,e.samplingRatio)}unknownFlagEvent(e,t,i){return new Se(this._withReasons,i,e,t,t,void 0,void 0,void 0,void 0,void 0,void 0,void 0,void 0)}identifyEvent(e){return new we(e,1)}customEvent(e,t,i,r,s=1){return new be(t,e,i??void 0,r??void 0,s)}},EventProcessor:class{constructor(e,t,r,s,n,a=!0,o=!1){this._config=e,this._contextDeduplicator=s,this._diagnosticsManager=n,this._queue=[],this._lastKnownPastTime=0,this._droppedEvents=0,this._deduplicatedUsers=0,this._exceededCapacity=!1,this._eventsInLastBatch=0,this._shutdown=!1,this._flushUsersTimer=null,this._capacity=e.eventsCapacity,this._logger=t.basicConfiguration.logger,this._eventSender=new ge(t,r),this._contextFilter=new D(e.allAttributesPrivate,e.privateAttributes.map(e=>new i(e))),this._summarizer=o?new ye(this._contextFilter,this._logger):new fe,a&&this.start()}start(){if(void 0!==this._contextDeduplicator?.flushInterval&&(this._flushUsersTimer=setInterval(()=>{this._contextDeduplicator?.flush()},1e3*this._contextDeduplicator.flushInterval)),this._flushTimer=setInterval(async()=>{try{await this.flush()}catch(e){this._logger?.debug(`Flush failed: ${e}`)}},1e3*this._config.flushInterval),this._diagnosticsManager){const e=this._diagnosticsManager.createInitEvent();this._postDiagnosticEvent(e),this._diagnosticsTimer=setInterval(()=>{const e=this._diagnosticsManager.createStatsEventAndReset(this._droppedEvents,this._deduplicatedUsers,this._eventsInLastBatch);this._droppedEvents=0,this._deduplicatedUsers=0,this._postDiagnosticEvent(e)},1e3*this._config.diagnosticRecordingInterval)}this._logger?.debug("Started EventProcessor.")}_postDiagnosticEvent(e){this._eventSender.sendEventData(L.DiagnosticEvent,e)}close(){clearInterval(this._flushTimer),this._flushUsersTimer&&clearInterval(this._flushUsersTimer),this._diagnosticsTimer&&clearInterval(this._diagnosticsTimer)}async flush(){if(this._shutdown)throw new pe("Events cannot be posted because a permanent error has been encountered. This is most likely an invalid SDK key. The specific error information is logged independently.");const e=this._queue;if(this._queue=[],void 0!==this._summarizer.getSummaries){this._summarizer.getSummaries().forEach(t=>{Object.keys(t.features).length&&e.push(t)})}else{const t=this._summarizer.getSummary();Object.keys(t.features).length&&e.push(t)}e.length&&(this._eventsInLastBatch=e.length,this._logger?.debug("Flushing %d events",e.length),await this._tryPostingEvents(e))}sendEvent(e){if(this._shutdown)return;if("migration_op"===e.kind){if(me(e.samplingRatio)){const t={...e,context:e.context?this._contextFilter.filter(e.context):void 0};1===t.samplingRatio&&delete t.samplingRatio,this._enqueue(t)}return}this._summarizer.summarizeEvent(e);const t=_e(e),i=t&&e.trackEvents||!t,r=this._shouldDebugEvent(e),s=function(e){return"identify"===e.kind}(e),n=this._contextDeduplicator?.processContext(e.context);n||s||(this._deduplicatedUsers+=1);n&&!s&&this._enqueue(this._makeOutputEvent({kind:"index",creationDate:e.creationDate,context:e.context,samplingRatio:1},!1)),i&&me(e.samplingRatio)&&this._enqueue(this._makeOutputEvent(e,!1)),r&&me(e.samplingRatio)&&this._enqueue(this._makeOutputEvent(e,!0))}_makeOutputEvent(e,t){switch(e.kind){case"feature":{const i={kind:t?"debug":"feature",creationDate:e.creationDate,context:this._contextFilter.filter(e.context,!t),key:e.key,value:e.value,default:e.default};return 1!==e.samplingRatio&&(i.samplingRatio=e.samplingRatio),e.prereqOf&&(i.prereqOf=e.prereqOf),void 0!==e.variation&&(i.variation=e.variation),void 0!==e.version&&(i.version=e.version),e.reason&&(i.reason=e.reason),i}case"index":case"identify":{const t={kind:e.kind,creationDate:e.creationDate,context:this._contextFilter.filter(e.context)};return 1!==e.samplingRatio&&(t.samplingRatio=e.samplingRatio),t}case"custom":{const t={kind:"custom",creationDate:e.creationDate,key:e.key,context:this._contextFilter.filter(e.context)};return 1!==e.samplingRatio&&(t.samplingRatio=e.samplingRatio),void 0!==e.data&&(t.data=e.data),void 0!==e.metricValue&&(t.metricValue=e.metricValue),void 0!==e.url&&(t.url=e.url),t}case"click":return{kind:"click",creationDate:e.creationDate,contextKeys:e.context.kindsAndKeys,key:e.key,url:e.url,selector:e.selector};case"pageview":return{kind:"pageview",creationDate:e.creationDate,contextKeys:e.context.kindsAndKeys,key:e.key,url:e.url};default:return e}}_enqueue(e){this._queue.length<this._capacity?(this._queue.push(e),this._exceededCapacity=!1):(this._exceededCapacity||(this._exceededCapacity=!0,this._logger?.warn("Exceeded event queue capacity. Increase capacity to avoid dropping events.")),this._droppedEvents+=1)}_shouldDebugEvent(e){return _e(e)&&e.debugEventsUntilDate&&e.debugEventsUntilDate>this._lastKnownPastTime&&e.debugEventsUntilDate>Date.now()}async _tryPostingEvents(e){const t=await this._eventSender.sendEventData(L.AnalyticsEvents,e);if(t.status===V.FailedAndMustShutDown&&(this._shutdown=!0),t.serverTime&&(this._lastKnownPastTime=t.serverTime),t.error)throw t.error}},InputCustomEvent:be,InputEvalEvent:Se,InputIdentifyEvent:we,NullEventProcessor:class{close(){}async flush(){}sendEvent(){}},PayloadProcessor:ke,PayloadStreamReader:class{constructor(e,t,i,r){this._errorHandler=i,this._logger=r,this._attachHandler(e,"server-intent"),this._attachHandler(e,"put-object"),this._attachHandler(e,"delete-object"),this._attachHandler(e,"payload-transferred"),this._attachHandler(e,"goodbye"),this._attachHandler(e,"error"),this._payloadProcessor=new ke(t,i,r)}addPayloadListener(e){this._payloadProcessor.addPayloadListener(e)}removePayloadListener(e){this._payloadProcessor.removePayloadListener(e)}_attachHandler(t,i){t.addEventListener(i,async t=>{if(t?.data){this._logger?.debug(`Received ${i} event. Data is ${t.data}`);try{this._payloadProcessor.processEvents([{event:i,data:JSON.parse(t.data)}])}catch{this._logger?.error(`Stream received data that was unable to be processed in "${i}" message`),this._logger?.debug(`Data follows: ${t.data}`),this._errorHandler?.(e.DataSourceErrorKind.InvalidData,"Malformed data in EventStream.")}}else this._errorHandler?.(e.DataSourceErrorKind.Unknown,"Event from EventStream missing data.")})}},canonicalize:p,initMetadataFromHeaders:function(e){if(e){const t=Object.keys(e).find(e=>"x-ld-envid"===e.toLowerCase());if(t)return{environmentId:e[t]}}},isLegacyUser:f,isMultiKind:v,isSingleKind:_,safeGetHooks:function(e,t,i){const r=[];return i.forEach(i=>{try{const s=i.getHooks?.(t);void 0===s?e.error(`Plugin ${Oe(e,i)} returned undefined from getHooks.`):s&&s.length>0&&r.push(...s)}catch(t){e.error(`Exception thrown getting hooks for plugin ${Oe(e,i)}. Unable to get hooks.`)}}),r},safeGetName:Oe,safeRegisterPlugins:function(e,t,i,r){r.forEach(r=>{try{r.register(i,t)}catch(t){e.error(`Exception thrown registering plugin ${Oe(e,r)}.`)}})},shouldSample:me});e.ApplicationTags=class{constructor(e){const t={},i=e?.application,r=e?.logger;i&&Object.entries(i).forEach(([e,i])=>{if(null!=i){const{valid:s,message:n}=X(i,`application.${e}`);s?"versionName"===e?t["application-version-name"]=[i]:t[`application-${e}`]=[i]:r?.warn(n)}});const s=Object.keys(t);s.length&&(this.value=s.sort().flatMap(e=>t[e].sort().map(t=>`${e}/${t}`)).join(" "))}},e.AttributeReference=i,e.BasicLogger=H,e.ClientContext=class{constructor(e,t,i){this.platform=i,this.basicConfiguration={tags:t.tags,logger:t.logger,offline:t.offline,serviceEndpoints:t.serviceEndpoints,sdkKey:e}}},e.CompositeDataSource=class{constructor(e,t,i,r,s={[M.Valid]:{durationMS:3e5,transition:"recover"},[M.Interrupted]:{durationMS:12e4,transition:"fallback"}},n=new x(1e3,3e4)){this._logger=r,this._transitionConditions=s,this._backoff=n,this._stopped=!0,this._cancelTokens=[],this._cancellableDelay=e=>{let t;return{promise:new Promise((i,r)=>{t=setTimeout(i,e)}),cancel(){t&&(clearTimeout(t),t=void 0)}}},this._externalTransitionPromise=new Promise(e=>{this._externalTransitionResolve=e}),this._initPhaseActive=e.length>0,this._initFactories=new T(!1,e),this._syncFactories=new T(!0,t),this._fdv1Synchronizers=new T(!0,i)}async start(e,t,i){if(!this._stopped)return void this._logger?.info("CompositeDataSource already running. Ignoring call to start.");this._stopped=!1,this._logger?.debug(`CompositeDataSource starting with (${this._initFactories.length()} initializers, ${this._syncFactories.length()} synchronizers).`);const r=this._wrapStatusCallbackWithSanitizer(t);let s;for(r(M.Initializing);;){const{dataSource:n,isPrimary:a,cullDSFactory:o}=this._pickDataSource(s),l=new Promise(t=>{if(n){let s,l=()=>{};const c=new P((i,s)=>{this._backoff.success(),e(i,s),i&&this._initPhaseActive&&(c.disable(),this._consumeCancelToken(l),r(M.Interrupted),t({transition:"switchToSync"}))},(e,i)=>{if(this._logger?.debug(`CompositeDataSource received state ${e} from underlying data source. Err is ${i}`),i||e===M.Closed)c.disable(),!1===i?.recoverable&&(this._logger?.debug(`Culling data source due to err ${i}`),o?.(),i instanceof j&&(this._logger?.debug("Falling back to FDv1"),this._syncFactories=this._fdv1Synchronizers)),r(e,i),this._consumeCancelToken(l),t({transition:"fallback",err:i});else if(r(e),e!==s){s=e,this._consumeCancelToken(l);const i=this._lookupTransitionCondition(e,a);if(i){const{promise:e,cancel:s}=this._cancellableDelay(i.durationMS);l=s,this._cancelTokens.push(l),e.then(()=>{this._consumeCancelToken(s),c.disable(),r(M.Interrupted),t({transition:i.transition})})}}});n.start((e,t)=>c.dataHandler(e,t),(e,t)=>c.statusHandler(e,t),i)}else t({transition:"stop",err:{name:"ExhaustedDataSources",message:"CompositeDataSource has exhausted all configured initializers and synchronizers."}})});let c=await Promise.race([l,this._externalTransitionPromise]);if(n?.stop(),c.err&&"stop"!==c.transition){const e=this._backoff.fail(),{promise:t,cancel:i}=this._cancellableDelay(e);this._cancelTokens.push(i);const r=t.then(()=>(this._consumeCancelToken(i),c));c=await Promise.race([r,this._externalTransitionPromise]),this._consumeCancelToken(i)}if(s=c.transition,"stop"===c.transition){t(M.Closed,c.err);break}}this._reset()}async stop(){this._cancelTokens.forEach(e=>e()),this._cancelTokens=[],this._externalTransitionResolve?.({transition:"stop"})}_reset(){this._stopped=!0,this._initPhaseActive=this._initFactories.length()>0,this._initFactories.reset(),this._syncFactories.reset(),this._fdv1Synchronizers.reset(),this._externalTransitionPromise=new Promise(e=>{this._externalTransitionResolve=e})}_pickDataSource(e){let t,i;switch(e){case"switchToSync":this._initPhaseActive=!1,this._syncFactories.reset(),i=0===this._syncFactories.pos(),t=this._syncFactories.next();break;case"recover":this._initPhaseActive?(this._initFactories.reset(),i=0===this._initFactories.pos(),t=this._initFactories.next()):(this._syncFactories.reset(),i=0===this._syncFactories.pos(),t=this._syncFactories.next());break;default:this._initPhaseActive&&this._initFactories.pos()>=this._initFactories.length()&&(this._initPhaseActive=!1,this._syncFactories.reset()),this._initPhaseActive?(i=0===this._initFactories.pos(),t=this._initFactories.next()):(i=0===this._syncFactories.pos(),t=this._syncFactories.next())}return t?{dataSource:t(),isPrimary:i,cullDSFactory:()=>{t&&this._syncFactories.remove(t)}}:{dataSource:void 0,isPrimary:i,cullDSFactory:void 0}}_lookupTransitionCondition(e,t){const i=this._transitionConditions[e];if(!t||"recover"!==i?.transition)return i}_consumeCancelToken(e){e();const t=this._cancelTokens.indexOf(e,0);t>-1&&this._cancelTokens.splice(t,1)}_wrapStatusCallbackWithSanitizer(e){let t,i,r=!1;return(s,n)=>{let a=s;if(s===M.Closed&&(a=M.Interrupted),a!==t||n!==i){if(a===M.Initializing){if(r)return;r=!0}t=a,i=n,e(a,n)}}}},e.Context=k,e.ContextFilter=D,e.DateValidator=d,e.DefaultBackoff=x,e.FactoryOrInstance=r,e.Function=l,e.KindValidator=h,e.LDClientError=re,e.LDFileDataSourceError=C,e.LDFlagDeliveryFallbackError=j,e.LDPollingError=F,e.LDStreamingError=I,e.LDTimeoutError=se,e.LDUnexpectedResponseError=ie,e.NullableBoolean=c,e.NumberWithMinimum=a,e.OptionMessages=J,e.SafeLogger=W,e.ServiceEndpoints=Z,e.StringMatchingRegex=o,e.Type=s,e.TypeArray=n,e.TypeValidators=g,e.base64UrlEncode=(e,t)=>t.btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""),e.cancelableTimedPromise=function(e,t){let i,r;return{promise:new Promise((s,n)=>{r=s,i=setTimeout(()=>{n(new se(`${t} timed out after ${e} seconds.`))},1e3*e)}),cancel:()=>{r(),clearTimeout(i)}}},e.clone=function(e){return null==e?e:JSON.parse(JSON.stringify(e))},e.createSafeLogger=e=>{const t=new H({level:"info",destination:console.error,formatter:z});return e?new W(e,t):t},e.debounce=(e,t=5e3)=>{let i;return(...r)=>{clearTimeout(i),i=setTimeout(()=>{e(...r)},t)}},e.deepCompact=oe,e.defaultHeaders=function(e,t,i,r=!0,s="user-agent"){const{userAgentBase:n,version:a,wrapperName:o,wrapperVersion:l}=t.sdkData(),c={[s]:`${n??"NodeJSClient"}/${a}`};return r&&(c.authorization=e),o&&(c["x-launchdarkly-wrapper"]=l?`${o}/${l}`:o),i?.value&&(c["x-launchdarkly-tags"]=i.value),c},e.fastDeepEqual=function e(t,i){if(t===i)return!0;if(t&&i&&"object"==typeof t&&"object"==typeof i){if(t.constructor!==i.constructor)return!1;var r,s,n;if(Array.isArray(t)){if((r=t.length)!=i.length)return!1;for(s=r;0!==s--;)if(!e(t[s],i[s]))return!1;return!0}if(t instanceof Map&&i instanceof Map){if(t.size!==i.size)return!1;for(s of t.entries())if(!i.has(s[0]))return!1;for(s of t.entries())if(!e(s[1],i.get(s[0])))return!1;return!0}if(t instanceof Set&&i instanceof Set){if(t.size!==i.size)return!1;for(s of t.entries())if(!i.has(s[0]))return!1;return!0}if(ArrayBuffer.isView(t)&&ArrayBuffer.isView(i)){if((r=t.length)!=i.length)return!1;for(s=r;0!==s--;)if(t[s]!==i[s])return!1;return!0}if(t.constructor===RegExp)return t.source===i.source&&t.flags===i.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===i.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===i.toString();if((r=(n=Object.keys(t)).length)!==Object.keys(i).length)return!1;for(s=r;0!==s--;)if(!Object.prototype.hasOwnProperty.call(i,n[s]))return!1;for(s=r;0!==s--;){var a=n[s];if(!e(t[a],i[a]))return!1}return!0}return t!=t&&i!=i},e.getEventsUri=te,e.getPollingUri=function(e,t,i=[]){const r=Q(t),s=[...i];return e.payloadFilterKey&&s.push({key:"filter",value:e.payloadFilterKey}),ee(`${e.polling}/${r}`,s)},e.getStreamingUri=function(e,t,i){const r=Q(t),s=[...i];return e.payloadFilterKey&&s.push({key:"filter",value:e.payloadFilterKey}),ee(`${e.streaming}/${r}`,s)},e.httpErrorMessage=le,e.internal=De,e.isHttpLocallyRecoverable=ae,e.isHttpRecoverable=ne,e.noop=()=>{},e.secondsToMillis=function(e){return Math.trunc(1e3*e)},e.shouldRetry=function({status:e}){return!e||ne(e)},e.sleep=ce,e.subsystem=N,e.timedPromise=(e,t)=>new Promise((i,r)=>{setTimeout(()=>{r(new se(`${t} timed out after ${e} seconds.`))},1e3*e)})}(o);var l={},c={},u={};Object.defineProperty(u,"__esModule",{value:!0});var d={};Object.defineProperty(d,"__esModule",{value:!0});var h,g,_={};Object.defineProperty(_,"__esModule",{value:!0}),_.IsMigrationStage=_.LDMigrationStage=void 0,(g=h||(_.LDMigrationStage=h={})).Off="off",g.DualWrite="dualwrite",g.Shadow="shadow",g.Live="live",g.RampDown="rampdown",g.Complete="complete",_.IsMigrationStage=function(e){return Object.values(h).includes(e)};var v={};Object.defineProperty(v,"__esModule",{value:!0});var f,p,y,m,b,S={};Object.defineProperty(S,"__esModule",{value:!0}),S.LDConsistencyCheck=void 0,(p=f||(S.LDConsistencyCheck=f={}))[p.Inconsistent=0]="Inconsistent",p[p.Consistent=1]="Consistent",p[p.NotChecked=2]="NotChecked",y=c,m=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),b=r&&r.__exportStar||function(e,t){for(var i in e)"default"===i||Object.prototype.hasOwnProperty.call(t,i)||m(t,e,i)},Object.defineProperty(y,"__esModule",{value:!0}),b(u,y),b(d,y),b(_,y),b(v,y),b(S,y);var w={},k={};Object.defineProperty(k,"__esModule",{value:!0});var E={};Object.defineProperty(E,"__esModule",{value:!0});var O={};Object.defineProperty(O,"__esModule",{value:!0});var D={};Object.defineProperty(D,"__esModule",{value:!0});var x,P,M,T,C={};Object.defineProperty(C,"__esModule",{value:!0}),C.LDConcurrentExecution=C.LDSerialExecution=C.LDExecution=C.LDExecutionOrdering=void 0,(P=x||(C.LDExecutionOrdering=x={}))[P.Fixed=0]="Fixed",P[P.Random=1]="Random",(T=M||(C.LDExecution=M={}))[T.Serial=0]="Serial",T[T.Concurrent=1]="Concurrent";C.LDSerialExecution=class{constructor(e){this.ordering=e,this.type=M.Serial}};C.LDConcurrentExecution=class{constructor(){this.type=M.Concurrent}};var F={};Object.defineProperty(F,"__esModule",{value:!0}),F.isPollingOnlyOptions=F.isStreamingOnlyOptions=F.isStandardOptions=void 0,F.isStandardOptions=function(e){return"standard"===e.dataSourceOptionsType},F.isStreamingOnlyOptions=function(e){return"streamingOnly"===e.dataSourceOptionsType},F.isPollingOnlyOptions=function(e){return"pollingOnly"===e.dataSourceOptionsType},function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(k,e),i(E,e),i(O,e),i(D,e),i(C,e),i(F,e)}(w);var I={};Object.defineProperty(I,"__esModule",{value:!0});var j={};Object.defineProperty(j,"__esModule",{value:!0});var R={};Object.defineProperty(R,"__esModule",{value:!0});var A={};Object.defineProperty(A,"__esModule",{value:!0});var L={};Object.defineProperty(L,"__esModule",{value:!0});var V={};Object.defineProperty(V,"__esModule",{value:!0});var N={},K={};Object.defineProperty(K,"__esModule",{value:!0});var $={};Object.defineProperty($,"__esModule",{value:!0}),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(K,e),i($,e)}(N);var z={},U={};Object.defineProperty(U,"__esModule",{value:!0});var B={};Object.defineProperty(B,"__esModule",{value:!0});var H={};Object.defineProperty(H,"__esModule",{value:!0});var q={};Object.defineProperty(q,"__esModule",{value:!0});var W={};Object.defineProperty(W,"__esModule",{value:!0});var J={};Object.defineProperty(J,"__esModule",{value:!0});var G={};Object.defineProperty(G,"__esModule",{value:!0});var X={};Object.defineProperty(X,"__esModule",{value:!0});var Y={};Object.defineProperty(Y,"__esModule",{value:!0});var Q={};Object.defineProperty(Q,"__esModule",{value:!0}),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(U,e),i(B,e),i(H,e),i(q,e),i(W,e),i(R,e),i(J,e),i(G,e),i(X,e),i(Y,e),i(Q,e)}(z);var Z={},ee={};Object.defineProperty(ee,"__esModule",{value:!0});var te={};Object.defineProperty(te,"__esModule",{value:!0});var ie={};Object.defineProperty(ie,"__esModule",{value:!0}),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),i(ee,e),i(te,e),i(A,e),i(ie,e),i(L,e)}(Z),function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.subsystems=e.interfaces=e.integrations=void 0,i(c,e),i(w,e),i(I,e),i(j,e),i(R,e),i(A,e),i(L,e),i(V,e),e.integrations=N,e.interfaces=z,e.subsystems=Z}(l);var re={},se={};Object.defineProperty(se,"__esModule",{value:!0});se.default=class{constructor(e){this._keyMap=new Map,this._head=0,this._tail=0,this._size=0;const{max:t}=e;this._max=t,this._values=new Array(t),this._keys=new Array(t),this._next=new Uint32Array(t),this._prev=new Uint32Array(t),e.maxAge?(this._lastUpdated=new Array(t).fill(0),this._maxAge=e.maxAge):(this._lastUpdated=[],this._maxAge=0)}set(e,t){let i=this._keyMap.get(e);void 0===i?(i=this._index(),this._keys[i]=e,this._keyMap.set(e,i),this._next[this._tail]=i,this._prev[i]=this._tail,this._tail=i,this._size+=1):this._setTail(i),this._values[i]=t,this._maxAge&&(this._lastUpdated[i]=Date.now())}get(e){const t=this._keyMap.get(e);if(void 0!==t){if(this._maxAge){const e=this._lastUpdated[t];if(Date.now()-e>this._maxAge)return}return this._setTail(t),this._maxAge&&(this._lastUpdated[t]=Date.now()),this._values[t]}}clear(){this._head=0,this._tail=0,this._size=0,this._values.fill(void 0),this._keys.fill(void 0),this._next.fill(0),this._prev.fill(0),this._keyMap.clear()}_index(){return 0===this._size?this._tail:this._size===this._max?this._evict():this._size}_evict(){const{_head:e}=this,t=this._keys[e];return this._head=this._next[e],this._keyMap.delete(t),this._size-=1,e}_link(e,t){this._prev[t]=e,this._next[e]=t}_setTail(e){e!==this._tail&&(e===this._head?this._head=this._next[e]:this._link(this._prev[e],this._next[e]),this._link(this._tail,e),this._tail=e)}},Object.defineProperty(re,"__esModule",{value:!0});const ne=o,ae=n,oe=se;re.default=class{constructor(e,t,i,r){this._store=e,this._logger=i,this._crypto=r,this.statusProvider=new ae.default(async()=>this._pollStoreAndUpdateStatus()),this._staleTimeMs=1e3*(ne.TypeValidators.Number.is(t.staleAfter)&&t.staleAfter>0?t.staleAfter:120);const s=1e3*(ne.TypeValidators.Number.is(t.statusPollInterval)&&t.statusPollInterval>0?t.statusPollInterval:5);this._pollHandle=e?setInterval(()=>this._pollStoreAndUpdateStatus(),s):null,e&&(this._cache=new oe.default({max:t.userCacheSize||1e3,maxAge:1e3*(t.userCacheTime||5)}))}close(){this._pollHandle&&(clearInterval(this._pollHandle),this._pollHandle=void 0),this._store&&this._store.close()}async getUserMembership(e){var t,i,r;if(!this._store)return;const s=null===(t=this._cache)||void 0===t?void 0:t.get(e);let n;if(s)n=s.membership;else try{n=await this._store.getUserMembership(this._hashForUserKey(e));const t={membership:n};null===(i=this._cache)||void 0===i||i.set(e,t)}catch(e){return null===(r=this._logger)||void 0===r||r.error(`Big Segment store membership query returned error: ${e}`),[null,"STORE_ERROR"]}this.statusProvider.getStatus()||await this._pollStoreAndUpdateStatus();const a=this.statusProvider.getStatus();return a.available?[n||null,a.stale?"STALE":"HEALTHY"]:[n||null,"STORE_ERROR"]}async _pollStoreAndUpdateStatus(){var e,t,i;if(!this._store)return void this.statusProvider.setStatus({available:!1,stale:!1});let r;null===(e=this._logger)||void 0===e||e.debug("Querying Big Segment store status");try{const e=await this._store.getMetadata();r={available:!0,stale:!e||!e.lastUpToDate||this._isStale(e.lastUpToDate)}}catch(e){null===(t=this._logger)||void 0===t||t.error(`Big Segment store status query returned error: ${e}`),r={available:!1,stale:!1}}const s=this.statusProvider.getStatus();s&&s.available===r.available&&s.stale===r.stale||(null===(i=this._logger)||void 0===i||i.debug("Big Segment store status changed from %s to %s",JSON.stringify(s),JSON.stringify(r)),this.statusProvider.setStatus(r),this.statusProvider.notify())}_hashForUserKey(e){const t=this._crypto.createHash("sha256");if(t.update(e),!t.digest)throw new Error("Platform must implement digest or asyncDigest");return t.digest("base64")}_isStale(e){return Date.now()-e>=this._staleTimeMs}};var le={};Object.defineProperty(le,"__esModule",{value:!0}),le.createPluginEnvironmentMetadata=void 0,le.createPluginEnvironmentMetadata=function(e,t,i){const r={sdk:{name:e.info.sdkData().userAgentBase,version:e.info.sdkData().version},sdkKey:t};return e.info.sdkData().wrapperName&&(r.sdk.wrapperName=e.info.sdkData().wrapperName),e.info.sdkData().wrapperVersion&&(r.sdk.wrapperVersion=e.info.sdkData().wrapperVersion),i.applicationInfo&&(r.application=i.applicationInfo),r};var ce={};Object.defineProperty(ce,"__esModule",{value:!0}),ce.createPayloadListener=void 0;ce.createPayloadListener=(e,t,i=()=>{})=>r=>{const{initMetadata:s,payload:n}=r;if(n.basis)null==t||t.debug("Initializing all data");else{if(!(n.updates.length>0))return void(null==t||t.debug("Payload had no updates, ignoring."));null==t||t.debug("Applying updates")}const a={};n.updates.forEach(e=>{const i=(e=>{switch(e){case"flag":return"features";case"segment":return"segments";default:return e}})(e.kind);a[i]?a[i][e.key]=Object.assign(Object.assign({version:e.version},e.deleted&&{deleted:e.deleted}),e.object):a[i]={[e.key]:Object.assign(Object.assign({version:e.version},e.deleted&&{deleted:e.deleted}),e.object)},e.deleted?null==t||t.debug(`Deleting ${e.key} in ${e.kind}`):null==t||t.debug(`Updating ${e.key} in ${e.kind}`)}),e.applyChanges(n.basis,a,i,s,n.state)};var ue={},de={},he={};Object.defineProperty(he,"__esModule",{value:!0});class ge{static getKeyFromPath(e,t){return t.startsWith(e.streamApiPath)?t.substring(e.streamApiPath.length):void 0}}ge.Features={namespace:"features",streamApiPath:"/flags/"},ge.Segments={namespace:"segments",streamApiPath:"/segments/"},he.default=ge,Object.defineProperty(de,"__esModule",{value:!0}),de.deserializeSegment=de.serializeSegment=de.deserializeFlag=de.serializeFlag=de.deserializeDelete=de.deserializePatch=de.deserializePoll=de.deserializeAll=de.processSegment=de.processFlag=de.replacer=de.nullReplacer=void 0;const _e=o,ve=he,fe=100;function pe(e,t){const i=[];if(null==e)return;const r=Object.entries(e).filter(([e,i])=>!(null==t?void 0:t.includes(e)));for(i.push(...r.map(([t,i])=>({key:t,value:i,parent:e})));i.length;){const e=i.pop();null!==e.value||Array.isArray(e.parent)?"object"==typeof e.value&&null!==e.value&&i.push(...Object.entries(e.value).map(([t,i])=>({key:t,value:i,parent:e.value}))):delete e.parent[e.key]}}function ye(e,t){if(!(t instanceof _e.AttributeReference||Array.isArray(t)&&t[0]&&t[0]instanceof _e.AttributeReference))return null==t||(t.generated_includedSet&&(t.included=[...t.generated_includedSet],delete t.generated_includedSet),t.generated_excludedSet&&(t.excluded=[...t.generated_excludedSet],delete t.generated_excludedSet),t.includedContexts&&t.includedContexts.forEach(e=>{e.generated_valuesSet&&(e.values=[...e.generated_valuesSet]),delete e.generated_valuesSet}),t.excludedContexts&&t.excludedContexts.forEach(e=>{e.generated_valuesSet&&(e.values=[...e.generated_valuesSet]),delete e.generated_valuesSet})),t}function me(e){e&&e.bucketBy&&(e.bucketByAttributeReference=new _e.AttributeReference(e.bucketBy,!e.contextKind))}function be(e){var t;if(pe(e,["variations"]),e.fallthrough&&e.fallthrough.rollout){me(e.fallthrough.rollout)}null===(t=null==e?void 0:e.rules)||void 0===t||t.forEach(e=>{var t;me(e.rollout),null===(t=null==e?void 0:e.clauses)||void 0===t||t.forEach(e=>{e&&e.attribute?e.attributeReference=new _e.AttributeReference(e.attribute,!e.contextKind):e&&(e.attributeReference=_e.AttributeReference.InvalidReference)})})}function Se(e){var t,i,r,s,n;pe(e),(null===(t=null==e?void 0:e.included)||void 0===t?void 0:t.length)&&e.included.length>fe&&(e.generated_includedSet=new Set(e.included),delete e.included),(null===(i=null==e?void 0:e.excluded)||void 0===i?void 0:i.length)&&e.excluded.length>fe&&(e.generated_excludedSet=new Set(e.excluded),delete e.excluded),(null===(r=null==e?void 0:e.includedContexts)||void 0===r?void 0:r.length)&&e.includedContexts.forEach(e=>{var t;(null===(t=null==e?void 0:e.values)||void 0===t?void 0:t.length)&&e.values.length>fe&&(e.generated_valuesSet=new Set(e.values),e.values=[])}),(null===(s=null==e?void 0:e.excludedContexts)||void 0===s?void 0:s.length)&&e.excludedContexts.forEach(e=>{var t;(null===(t=null==e?void 0:e.values)||void 0===t?void 0:t.length)&&e.values.length>fe&&(e.generated_valuesSet=new Set(e.values),e.values=[])}),null===(n=null==e?void 0:e.rules)||void 0===n||n.forEach(e=>{var t;e.bucketBy&&(e.bucketByAttributeReference=new _e.AttributeReference(e.bucketBy,!e.rolloutContextKind)),null===(t=null==e?void 0:e.clauses)||void 0===t||t.forEach(e=>{e&&e.attribute?e.attributeReference=new _e.AttributeReference(e.attribute,!e.contextKind):e&&(e.attributeReference=_e.AttributeReference.InvalidReference)})})}function we(e){try{return JSON.parse(e)}catch(e){return}}de.nullReplacer=pe,de.replacer=ye,de.processFlag=be,de.processSegment=Se,de.deserializeAll=function(e){var t,i;const r=we(e);if(r)return Object.values((null===(t=null==r?void 0:r.data)||void 0===t?void 0:t.flags)||[]).forEach(e=>{be(e)}),Object.values((null===(i=null==r?void 0:r.data)||void 0===i?void 0:i.segments)||[]).forEach(e=>{Se(e)}),r},de.deserializePoll=function(e){const t=we(e);if(t)return Object.values((null==t?void 0:t.flags)||[]).forEach(e=>{be(e)}),Object.values((null==t?void 0:t.segments)||[]).forEach(e=>{Se(e)}),t},de.deserializePatch=function(e){const t=we(e);if(t)return t.path.startsWith(ve.default.Features.streamApiPath)?(be(t.data),t.kind=ve.default.Features):t.path.startsWith(ve.default.Segments.streamApiPath)&&(Se(t.data),t.kind=ve.default.Segments),t},de.deserializeDelete=function(e){const t=we(e);if(t)return t.path.startsWith(ve.default.Features.streamApiPath)?t.kind=ve.default.Features:t.path.startsWith(ve.default.Segments.streamApiPath)&&(t.kind=ve.default.Segments),t},de.serializeFlag=function(e){return JSON.stringify(e,ye)},de.deserializeFlag=function(e){const t=we(e);if(t)return be(t),t},de.serializeSegment=function(e){return JSON.stringify(e,ye)},de.deserializeSegment=function(e){const t=we(e);if(t)return Se(t),t},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.createStreamListeners=e.createDeleteListener=e.createPatchListener=e.createPutListener=void 0;const t=o,i=de,r=he,{initMetadataFromHeaders:s}=t.internal;e.createPutListener=(e,t,n=()=>{})=>({deserializeData:i.deserializeAll,processJson:async({data:{flags:i,segments:a}},o)=>{const l={[r.default.Features.namespace]:i,[r.default.Segments.namespace]:a};null==t||t.debug("Initializing all data"),e.init(l,n,s(o))}});e.createPatchListener=(e,t,s=()=>{})=>({deserializeData:i.deserializePatch,processJson:async({data:i,kind:n,path:a})=>{if(n){const o=r.default.getKeyFromPath(n,a);o&&(null==t||t.debug(`Updating ${o} in ${n.namespace}`),e.upsert(n,i,s))}}});e.createDeleteListener=(e,t,s=()=>{})=>({deserializeData:i.deserializeDelete,processJson:async({kind:i,path:n,version:a})=>{if(i){const o=r.default.getKeyFromPath(i,n);o&&(null==t||t.debug(`Deleting ${o} in ${i.namespace}`),e.upsert(i,{key:o,version:a,deleted:!0},s))}}});e.createStreamListeners=(t,i,r)=>{const s=new Map;return s.set("put",(0,e.createPutListener)(t,i,null==r?void 0:r.put)),s.set("patch",(0,e.createPatchListener)(t,i,null==r?void 0:r.patch)),s.set("delete",(0,e.createDeleteListener)(t,i,null==r?void 0:r.delete)),s}}(ue);var ke={},Ee={},Oe={};Object.defineProperty(Oe,"__esModule",{value:!0});Oe.default=class{constructor(){this._itemsByNamespace={}}get(e,t){var i;return null===(i=this._itemsByNamespace[e])||void 0===i?void 0:i[t]}set(e,t,i){e in this._itemsByNamespace||(this._itemsByNamespace[e]={}),this._itemsByNamespace[e][t]=i}remove(e,t){const i=this._itemsByNamespace[e];i&&delete i[t]}removeAll(){this._itemsByNamespace={}}enumerate(e){Object.entries(this._itemsByNamespace).forEach(([t,i])=>{Object.entries(i).forEach(([i,r])=>{e(t,i,r)})})}mergeFrom(e){e.enumerate(this.set.bind(this))}},Object.defineProperty(Ee,"__esModule",{value:!0});const De=Oe;Ee.default=class{constructor(){this._dependenciesFrom=new De.default,this._dependenciesTo=new De.default}updateDependenciesFrom(e,t,i){const r=this._dependenciesFrom.get(e,t);null==r||r.enumerate((i,r)=>{const s=this._dependenciesTo.get(i,r);null==s||s.remove(e,t)}),this._dependenciesFrom.set(e,t,i),null==i||i.enumerate((i,r)=>{let s=this._dependenciesTo.get(i,r);s||(s=new De.default,this._dependenciesTo.set(i,r,s)),s.set(e,t,!0)})}updateModifiedItems(e,t,i){if(!e.get(t,i)){e.set(t,i,!0);const r=this._dependenciesTo.get(t,i);null==r||r.enumerate((t,i)=>{this.updateModifiedItems(e,t,i)})}}reset(){this._dependenciesFrom.removeAll(),this._dependenciesTo.removeAll()}},Object.defineProperty(ke,"__esModule",{value:!0}),ke.computeDependencies=void 0;const xe=he,Pe=Ee,Me=Oe;function Te(e,t){var i,r;const s=new Me.default,n=e===xe.default.Features.namespace,a=e===xe.default.Segments.namespace;if(n){const r=t;null===(i=null==r?void 0:r.prerequisites)||void 0===i||i.forEach(t=>{s.set(e,t.key,!0)})}if(n||a){const e=t;null===(r=null==e?void 0:e.rules)||void 0===r||r.forEach(e=>{var t;null===(t=e.clauses)||void 0===t||t.forEach(e=>{"segmentMatch"===e.op&&e.values.forEach(e=>{s.set(xe.default.Segments.namespace,e,!0)})})})}return s}ke.computeDependencies=Te;ke.default=class{constructor(e,t,i){this._featureStore=e,this._hasEventListeners=t,this._onChange=i,this._dependencyTracker=new Pe.default}init(e,t,i){const r=this._hasEventListeners(),s=s=>{this._featureStore.init(e,()=>{Promise.resolve().then(()=>{if(this._dependencyTracker.reset(),Object.entries(e).forEach(([e,t])=>{Object.keys(t||{}).forEach(i=>{const r=t[i];this._dependencyTracker.updateDependenciesFrom(e,i,Te(e,r))})}),r){const t=new Me.default;Object.keys(e).forEach(i=>{const r=(null==s?void 0:s[i])||{},n=e[i],a=Object.assign(Object.assign({},r),n);Object.keys(a).forEach(e=>{this.addIfModified(i,e,r&&r[e],n&&n[e],t)})}),this.sendChangeEvents(t)}}),null==t||t()},i)};r?this._featureStore.all(xe.default.Features,e=>{this._featureStore.all(xe.default.Segments,t=>{const i={[xe.default.Features.namespace]:e,[xe.default.Segments.namespace]:t};s(i)})}):s()}upsert(e,t,i){const{key:r}=t,s=this._hasEventListeners(),n=n=>{this._featureStore.upsert(e,t,()=>{Promise.resolve().then(()=>{if(this._dependencyTracker.updateDependenciesFrom(e.namespace,r,Te(e.namespace,t)),s){const i=new Me.default;this.addIfModified(e.namespace,r,n,t,i),this.sendChangeEvents(i)}}),null==i||i()})};s?this._featureStore.get(e,r,n):n()}addIfModified(e,t,i,r,s){r&&i&&r.version<=i.version||this._dependencyTracker.updateModifiedItems(s,e,t)}sendChangeEvents(e){e.enumerate((e,t)=>{e===xe.default.Features.namespace&&this._onChange(t)})}};var Ce={};Object.defineProperty(Ce,"__esModule",{value:!0});const Fe=o,Ie=de;Ce.default=class{constructor(e,t){this._requestor=e,this._logger=t,this._stopped=!1}start(e,t){var i;t(Fe.subsystem.DataSourceState.Initializing),null===(i=this._logger)||void 0===i||i.debug("Performing initialization request to LaunchDarkly for feature flag data."),this._requestor.requestAllData((i,r)=>{var s,n,a;if(!this._stopped){if(i){const{status:e}=i,r=(0,Fe.httpErrorMessage)(i,"initializer","initializer does not retry");return null===(s=this._logger)||void 0===s||s.error(r),void t(Fe.subsystem.DataSourceState.Closed,new Fe.LDPollingError(Fe.DataSourceErrorKind.ErrorResponse,r,e))}if(r)try{const i=JSON.parse(r),s=new Fe.internal.PayloadProcessor({flag:e=>((0,Ie.processFlag)(e),e),segment:e=>((0,Ie.processSegment)(e),e)},(e,i)=>{t(Fe.subsystem.DataSourceState.Interrupted,new Fe.LDPollingError(e,i))},this._logger);t(Fe.subsystem.DataSourceState.Valid),s.addPayloadListener(t=>{e(t.basis,t)}),s.processEvents(i.events),t(Fe.subsystem.DataSourceState.Closed)}catch(e){null===(n=this._logger)||void 0===n||n.error("Response contained invalid data"),null===(a=this._logger)||void 0===a||a.debug(`${i} - Body follows: ${r}`),t(Fe.subsystem.DataSourceState.Closed,new Fe.LDPollingError(Fe.DataSourceErrorKind.InvalidData,"Malformed data in polling response"))}else t(Fe.subsystem.DataSourceState.Closed,new Fe.LDPollingError(Fe.DataSourceErrorKind.InvalidData,"One shot initializer response missing body."))}})}stop(){this._stopped=!0}};var je={},Re={},Ae={},Le={};Object.defineProperty(Le,"__esModule",{value:!0}),Le.default=function(e){return new Promise(t=>{e(e=>{t(e)})})},Object.defineProperty(Ae,"__esModule",{value:!0});const Ve=Le;Ae.default=class{constructor(e){this._store=e}async get(e,t){return(0,Ve.default)(i=>{this._store.get(e,t,i)})}async all(e){return(0,Ve.default)(t=>{this._store.all(e,t)})}async init(e,t){return(0,Ve.default)(i=>{this._store.init(e,i,t)})}async delete(e,t,i){return(0,Ve.default)(r=>{this._store.delete(e,t,i,r)})}async upsert(e,t){return(0,Ve.default)(i=>{this._store.upsert(e,t,i)})}async initialized(){return(0,Ve.default)(e=>{this._store.initialized(e)})}close(){this._store.close()}getInitMetadata(){var e,t;return null===(t=(e=this._store).getInitMetaData)||void 0===t?void 0:t.call(e)}};var Ne={};Object.defineProperty(Ne,"__esModule",{value:!0});const Ke=Le;Ne.default=class{constructor(e){this._store=e}async get(e,t){return(0,Ke.default)(i=>{this._store.get(e,t,i)})}async all(e){return(0,Ke.default)(t=>{this._store.all(e,t)})}async init(e,t){return(0,Ke.default)(i=>{this._store.init(e,i,t)})}async delete(e,t,i){return(0,Ke.default)(r=>{this._store.delete(e,t,i,r)})}async upsert(e,t){return(0,Ke.default)(i=>{this._store.upsert(e,t,i)})}async initialized(){return(0,Ke.default)(e=>{this._store.initialized(e)})}async applyChanges(e,t,i,r){return(0,Ke.default)(s=>{this._store.applyChanges(e,t,s,i,r)})}close(){this._store.close()}getInitMetadata(){var e,t;return null===(t=(e=this._store).getInitMetaData)||void 0===t?void 0:t.call(e)}};var $e={},ze={};function Ue(e){return Date.now()>e.expiration}Object.defineProperty(ze,"__esModule",{value:!0});ze.default=class{constructor(e){this._options=e,this._storage=new Map,this._checkIntervalHandle=setInterval(()=>{this._purgeStale()},1e3*e.checkInterval)}get(e){const t=this._storage.get(e);if(!t||!Ue(t))return null==t?void 0:t.value;this._storage.delete(e)}set(e,t){this._storage.set(e,{value:t,expiration:Date.now()+1e3*this._options.ttl})}delete(e){this._storage.delete(e)}clear(){this._storage.clear()}close(){this.clear(),this._checkIntervalHandle&&(clearInterval(this._checkIntervalHandle),this._checkIntervalHandle=null)}_purgeStale(){this._storage.forEach((e,t)=>{Ue(e)&&this._storage.delete(t)})}get size(){return this._storage.size}};var Be={};Object.defineProperty(Be,"__esModule",{value:!0}),Be.persistentStoreKinds=void 0;const He=de,qe=he;Be.persistentStoreKinds={segments:{namespace:qe.default.Segments.namespace,deserialize:e=>{const t=(0,He.deserializeSegment)(e);if(t)return{version:t.version,item:t}},serialize:e=>{const t=(0,He.serializeSegment)(e);return{version:e.version,deleted:e.deleted,serializedItem:t}},priority:0},features:{namespace:qe.default.Features.namespace,deserialize:e=>{const t=(0,He.deserializeFlag)(e);if(t)return{version:t.version,item:t}},serialize:e=>{const t=(0,He.serializeFlag)(e);return{version:e.version,deleted:e.deleted,serializedItem:t}},priority:1}};var We={};Object.defineProperty(We,"__esModule",{value:!0});const Je=Be;function Ge(e,t){const i=[],r=new Set(Object.keys(t)),s=n=>{if(!r.has(n))return;r.delete(n);const a=t[n];var o;"features"===e.namespace&&(o=a,o.prerequisites&&o.prerequisites.length?o.prerequisites.map(e=>e.key):[]).forEach(e=>{s(e)}),i.push({key:n,item:e.serialize(a)})};for(;r.size>0;){const e=r.values().next().value;s(e)}return i}We.default=function(e){const t=[];return Object.keys(e).forEach(i=>{const r=Je.persistentStoreKinds[i];t.push({key:r,item:Ge(r,e[i])})}),t.sort((e,t)=>e.key.priority-t.key.priority),t};var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0});Xe.default=class{constructor(){this._queue=[]}enqueue(e,t){this._queue.push([e,t]),1===this._queue.length&&this.executePendingUpdates()}executePendingUpdates(){if(this._queue.length>0){const[e,t]=this._queue[0];e(()=>{this._queue.shift(),this._queue.length>0&&setTimeout(()=>this.executePendingUpdates(),0),null==t||t()})}}},Object.defineProperty($e,"__esModule",{value:!0});const Ye=ze,Qe=Be,Ze=We,et=Xe;function tt(e,t){return`${e.namespace}:${t}`}function it(e){return`$all:${e.namespace}`}const rt="$checkedInit";function st(e){return!e||e.item.deleted?null:e.item}function nt(e){return{version:e,item:{version:e,deleted:!0}}}function at(e,t){if(t.deleted||!t.serializedItem)return nt(t.version);const i=e.deserialize(t.serializedItem);return void 0===i?nt(t.version):0===i.version||i.version===t.version||void 0===i.item?i:{version:t.version,item:i.item}}$e.default=class{constructor(e,t){this._core=e,this._isInitialized=!1,this._queue=new et.default,t&&(this._itemCache=new Ye.default({ttl:t,checkInterval:600}),this._allItemsCache=new Ye.default({ttl:t,checkInterval:600}))}init(e,t){this._queue.enqueue(t=>{this._core.init((0,Ze.default)(e),()=>{this._isInitialized=!0,this._itemCache&&(this._itemCache.clear(),this._allItemsCache.clear(),Object.keys(e).forEach(t=>{const i=Qe.persistentStoreKinds[t],r=e[t];this._allItemsCache.set(it(i),r),Object.keys(r).forEach(e=>{const t=r[e],s={version:t.version,item:t};this._itemCache.set(tt(i,e),s)})})),t()})},t)}get(e,t,i){if(this._itemCache){const r=this._itemCache.get(tt(e,t));if(r)return void i(st(r))}const r=Qe.persistentStoreKinds[e.namespace];this._core.get(r,t,s=>{var n;if(s&&s.serializedItem){const a=at(r,s);return null===(n=this._itemCache)||void 0===n||n.set(tt(e,t),a),void i(st(a))}i(null)})}initialized(e){var t;this._isInitialized?e(!0):(null===(t=this._itemCache)||void 0===t?void 0:t.get(rt))?e(!1):this._core.initialized(t=>{var i;this._isInitialized=t,this._isInitialized||null===(i=this._itemCache)||void 0===i||i.set(rt,!0),e(this._isInitialized)})}all(e,t){var i;const r=null===(i=this._allItemsCache)||void 0===i?void 0:i.get(it(e));if(r)return void t(r);const s=Qe.persistentStoreKinds[e.namespace];this._core.getAll(s,i=>{var r;if(!i)return void t({});const n={};i.forEach(({key:e,item:t})=>{const i=st(at(s,t));i&&(n[e]=i)}),null===(r=this._allItemsCache)||void 0===r||r.set(it(e),n),t(n)})}upsert(e,t,i){this._queue.enqueue(i=>{this._allItemsCache&&this._allItemsCache.clear();const r=Qe.persistentStoreKinds[e.namespace];this._core.upsert(r,t.key,r.serialize(t),(s,n)=>{var a,o;if(!s&&n)if(n.serializedItem){const i=at(r,n);null===(a=this._itemCache)||void 0===a||a.set(tt(e,t.key),i)}else n.deleted&&(null===(o=this._itemCache)||void 0===o||o.set(t.key,{key:t.key,version:n.version,deleted:!0}));i()})},i)}delete(e,t,i,r){this.upsert(e,{key:t,version:i,deleted:!0},r)}close(){var e,t;null===(e=this._itemCache)||void 0===e||e.close(),null===(t=this._allItemsCache)||void 0===t||t.close(),this._core.close()}getDescription(){return this._core.getDescription()}};var ot={},lt={};Object.defineProperty(lt,"__esModule",{value:!0});lt.default=class{constructor(){this._allData={},this._initCalled=!1}get(e,t,i){const r=this._allData[e.namespace];if(r&&Object.prototype.hasOwnProperty.call(r,t)){const e=r[t];if(e&&!e.deleted)return null==i?void 0:i(e)}return null==i?void 0:i(null)}all(e,t){var i;const r={},s=null!==(i=this._allData[e.namespace])&&void 0!==i?i:{};Object.entries(s).forEach(([e,t])=>{t&&!t.deleted&&(r[e]=t)}),null==t||t(r)}init(e,t,i){this.applyChanges(!0,e,t,i)}delete(e,t,i,r){const s={key:t,version:i,deleted:!0};this.applyChanges(!1,{[e.namespace]:{[t]:s}},r)}upsert(e,t,i){this.applyChanges(!1,{[e.namespace]:{[t.key]:t}},i)}applyChanges(e,t,i,r,s){if(e)this._initCalled=!0,this._allData=t,this._initMetadata=r;else{const e={};Object.entries(this._allData).forEach(([t,i])=>{e[t]=Object.assign({},i)}),Object.entries(t).forEach(([t,i])=>{Object.keys(i||{}).forEach(r=>{let s=e[t];s||(s={},e[t]=s);const n=i[r];if(Object.hasOwnProperty.call(s,r)){const e=s[r];(!e||e.version<n.version)&&(s[r]=Object.assign({key:r},n))}else s[r]=Object.assign({key:r},n)})}),this._allData=e}this._selector=s,null==i||i()}initialized(e){return null==e?void 0:e(this._initCalled)}close(){}getDescription(){return"memory"}getInitMetaData(){return this._initMetadata}getSelector(){return this._selector}},Object.defineProperty(ot,"__esModule",{value:!0});const ct=lt;ot.default=class{constructor(e){this._nonTransPersistenceStore=e,this._activeStore=this._nonTransPersistenceStore,this._memoryStore=new ct.default}get(e,t,i){this._activeStore.get(e,t,i)}all(e,t){this._activeStore.all(e,t)}init(e,t){this.applyChanges(!0,e,t)}delete(e,t,i,r){const s={key:t,version:i,deleted:!0};this.applyChanges(!1,{[e.namespace]:{[t]:s}},r)}upsert(e,t,i){this.applyChanges(!1,{[e.namespace]:{[t.key]:t}},i)}applyChanges(e,t,i,r,s){this._memoryStore.applyChanges(e,t,()=>{if(e)this._activeStore=this._memoryStore,this._nonTransPersistenceStore.init(t,i);else{const e=[];Object.entries(t).forEach(([t,i])=>{Object.keys(i||{}).forEach(r=>{e.push({dataKind:{namespace:t},item:Object.assign({key:r},i[r])})})}),e.reduce((e,t)=>e.then(()=>new Promise(e=>{this._nonTransPersistenceStore.upsert(t.dataKind,t.item,e)})),Promise.resolve()).then(i)}},r,s)}initialized(e){this._activeStore.initialized(e)}close(){this._nonTransPersistenceStore.close(),this._memoryStore.close()}getDescription(){return"transactional persistent store"}},function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.deserializePoll=e.TransactionalFeatureStore=e.PersistentDataStoreWrapper=e.AsyncTransactionalStoreFacade=e.AsyncStoreFacade=void 0;const t=Ae;e.AsyncStoreFacade=t.default;const i=Ne;e.AsyncTransactionalStoreFacade=i.default;const r=$e;e.PersistentDataStoreWrapper=r.default;const s=de;Object.defineProperty(e,"deserializePoll",{enumerable:!0,get:function(){return s.deserializePoll}});const n=ot;e.TransactionalFeatureStore=n.default}(Re),Object.defineProperty(je,"__esModule",{value:!0});const ut=o,dt=Re,ht=he,{initMetadataFromHeaders:gt}=ut.internal;je.default=class{constructor(e,t,i,r,s=()=>{},n){this._requestor=e,this._pollInterval=t,this._featureStore=i,this._logger=r,this._initSuccessHandler=s,this._errorHandler=n,this._stopped=!1}_poll(){var e;if(this._stopped)return;const t=e=>{var t,i,r;null===(t=this._logger)||void 0===t||t.error("Polling received invalid data"),null===(i=this._logger)||void 0===i||i.debug(`Invalid JSON follows: ${e}`),null===(r=this._errorHandler)||void 0===r||r.call(this,new ut.LDPollingError(ut.DataSourceErrorKind.InvalidData,"Malformed JSON data in polling response"))},i=Date.now();null===(e=this._logger)||void 0===e||e.debug("Polling LaunchDarkly for feature flag updates"),this._requestor.requestAllData((e,r,s)=>{var n,a,o,l;const c=Date.now()-i,u=Math.max(1e3*this._pollInterval-c,0);if(null===(n=this._logger)||void 0===n||n.debug("Elapsed: %d ms, sleeping for %d ms",c,u),e){const{status:t}=e;if(t&&!(0,ut.isHttpRecoverable)(t)){const i=(0,ut.httpErrorMessage)(e,"polling request");return null===(a=this._logger)||void 0===a||a.error(i),void(null===(o=this._errorHandler)||void 0===o||o.call(this,new ut.LDPollingError(ut.DataSourceErrorKind.ErrorResponse,i,t)))}null===(l=this._logger)||void 0===l||l.warn((0,ut.httpErrorMessage)(e,"polling request","will retry"))}else if(r){const e=(0,dt.deserializePoll)(r);if(e){const t={[ht.default.Features.namespace]:e.flags,[ht.default.Segments.namespace]:e.segments};return void this._featureStore.init(t,()=>{this._initSuccessHandler(),this._timeoutHandle=setTimeout(()=>{this._poll()},u)},gt(s))}t(r)}this._timeoutHandle=setTimeout(()=>{this._poll()},u)})}start(){this._poll()}stop(){this._timeoutHandle&&(clearTimeout(this._timeoutHandle),this._timeoutHandle=void 0),this._stopped=!0}close(){this.stop()}};var _t={};Object.defineProperty(_t,"__esModule",{value:!0});const vt=o,ft=de;_t.default=class{constructor(e,t=30,i,r=!1){this._requestor=e,this._pollInterval=t,this._logger=i,this._processResponseAsFDv1=r,this._stopped=!1}_poll(e,t,i){var r;if(this._stopped)return;const s=Date.now();var n;null===(r=this._logger)||void 0===r||r.debug("Polling LaunchDarkly for feature flag updates"),this._requestor.requestAllData((r,n,a)=>{var o,l,c,u,d,h,g;if(this._stopped)return;const _=Date.now()-s,v=Math.max(1e3*this._pollInterval-_,0);if(null===(o=this._logger)||void 0===o||o.debug("Elapsed: %d ms, sleeping for %d ms",_,v),r){const{status:s}=r;if(r instanceof vt.LDFlagDeliveryFallbackError)return null===(l=this._logger)||void 0===l||l.error(r.message),void t(vt.subsystem.DataSourceState.Closed,r);if(s&&!(0,vt.isHttpRecoverable)(s)){const e=(0,vt.httpErrorMessage)(r,"polling request");return null===(c=this._logger)||void 0===c||c.error(e),void t(vt.subsystem.DataSourceState.Closed,new vt.LDPollingError(vt.DataSourceErrorKind.ErrorResponse,e,s,!1))}const n=(0,vt.httpErrorMessage)(r,"polling request","will retry");return t(vt.subsystem.DataSourceState.Interrupted,new vt.LDPollingError(vt.DataSourceErrorKind.ErrorResponse,n,s)),null===(u=this._logger)||void 0===u||u.warn(n),void(this._timeoutHandle=setTimeout(()=>{this._poll(e,t,i)},v))}const f=vt.internal.initMetadataFromHeaders(a);if(n)try{const i=new vt.internal.PayloadProcessor({flag:e=>((0,ft.processFlag)(e),e),segment:e=>((0,ft.processSegment)(e),e)},(e,i)=>{t(vt.subsystem.DataSourceState.Interrupted,new vt.LDPollingError(e,i))},this._logger);if(i.addPayloadListener(t=>{e(t.basis,{initMetadata:f,payload:t})}),null===(d=this._logger)||void 0===d||d.debug(`Got body: ${n}`),this._processResponseAsFDv1){!function(e,t){e.processEvents([{event:"server-intent",data:{payloads:[{id:"FDv1Fallback",target:1,intentCode:"xfer-full"}]}}]),Object.entries((null==t?void 0:t.flags)||[]).forEach(([t,i])=>{e.processEvents([{event:"put-object",data:{kind:"flag",key:t,version:i.version,object:i}}])}),Object.entries((null==t?void 0:t.segments)||[]).forEach(([t,i])=>{e.processEvents([{event:"put-object",data:{kind:"segment",key:t,version:i.version,object:i}}])}),e.processEvents([{event:"payload-transferred",data:{state:"FDv1Fallback",version:1}}])}(i,JSON.parse(n))}else{const e=JSON.parse(n);i.processEvents(e.events)}t(vt.subsystem.DataSourceState.Valid)}catch(e){null===(h=this._logger)||void 0===h||h.error("Response contained invalid data"),null===(g=this._logger)||void 0===g||g.debug(`${r} - Body follows: ${n}`),t(vt.subsystem.DataSourceState.Interrupted,new vt.LDPollingError(vt.DataSourceErrorKind.InvalidData,"Malformed data in polling response"))}this._timeoutHandle=setTimeout(()=>{this._poll(e,t,i)},v)},(n=null==i?void 0:i())?[{key:"basis",value:n}]:[])}start(e,t,i){this._statusCallback=t,t(vt.subsystem.DataSourceState.Initializing),this._poll(e,t,i)}stop(){var e;this._timeoutHandle&&(clearTimeout(this._timeoutHandle),this._timeoutHandle=void 0),null===(e=this._statusCallback)||void 0===e||e.call(this,vt.subsystem.DataSourceState.Closed),this._stopped=!0,this._statusCallback=void 0}};var pt={};Object.defineProperty(pt,"__esModule",{value:!0});const yt=o;pt.default=class{constructor(e,t,i,r="/sdk/latest-all",s){this._requests=t,this._path=r,this._logger=s,this._eTagCache={},this._headers=Object.assign({},i),this._serviceEndpoints=e.serviceEndpoints}async _requestWithETagCache(e,t){const i=this._eTagCache[e],r=null==i?void 0:i.etag,s=r?Object.assign(Object.assign({},t),{headers:Object.assign(Object.assign({},t.headers),{"if-none-match":r})}):t,n=await this._requests.fetch(e,s);if(304===n.status&&i)return{res:n,body:i.body};const a=n.headers.get("etag"),o=await n.text();return a&&(this._eTagCache[e]={etag:a,body:o}),{res:n,body:o}}async requestAllData(e,t=[]){var i,r;const s={method:"GET",headers:this._headers},n=(0,yt.getPollingUri)(this._serviceEndpoints,this._path,t);null===(i=this._logger)||void 0===i||i.debug(`Requestor making request to uri: ${n}`);try{const{res:t,body:i}=await this._requestWithETagCache(n,s);if(null===(r=this._logger)||void 0===r||r.debug(`Requestor got (possibly cached) body: ${JSON.stringify(i)}`),"true"===t.headers.get("x-ld-fd-fallback")){return e(new yt.LDFlagDeliveryFallbackError(yt.DataSourceErrorKind.ErrorResponse,"Response header indicates to fallback to FDv1.",t.status),void 0,void 0)}if(200!==t.status&&304!==t.status){return e(new yt.LDPollingError(yt.DataSourceErrorKind.ErrorResponse,`Unexpected status code: ${t.status}`,t.status),void 0,void 0)}return e(void 0,304===t.status?null:i,Object.fromEntries(t.headers.entries()))}catch(t){return e(t,void 0,void 0)}}};var mt={};Object.defineProperty(mt,"__esModule",{value:!0});const bt=o;mt.default=class{constructor(e,t,i,r,s,n,a,o=1){this._listeners=r,this._diagnosticsManager=n,this._errorHandler=a,this._streamInitialReconnectDelay=o;const{basicConfiguration:l,platform:c}=e,{logger:u}=l,{requests:d}=c;this._headers=Object.assign({},s),this._logger=u,this._requests=d,this._streamUri=(0,bt.getStreamingUri)(l.serviceEndpoints,t,i)}_logConnectionStarted(){this._connectionAttemptStartTime=Date.now()}_logConnectionResult(e){this._connectionAttemptStartTime&&this._diagnosticsManager&&this._diagnosticsManager.recordStreamInit(this._connectionAttemptStartTime,!e,Date.now()-this._connectionAttemptStartTime),this._connectionAttemptStartTime=void 0}_retryAndHandleError(e){var t,i,r;return(0,bt.shouldRetry)(e)?(null===(r=this._logger)||void 0===r||r.warn((0,bt.httpErrorMessage)(e,"streaming request","will retry")),this._logConnectionResult(!1),this._logConnectionStarted(),!0):(this._logConnectionResult(!1),null===(t=this._errorHandler)||void 0===t||t.call(this,new bt.LDStreamingError(bt.DataSourceErrorKind.ErrorResponse,e.message,e.status)),null===(i=this._logger)||void 0===i||i.error((0,bt.httpErrorMessage)(e,"streaming request")),!1)}start(){this._logConnectionStarted();const e=this._requests.createEventSource(this._streamUri,{headers:this._headers,errorFilter:e=>this._retryAndHandleError(e),initialRetryDelayMillis:1e3*this._streamInitialReconnectDelay,readTimeoutMillis:3e5,retryResetIntervalMillis:6e4});this._eventSource=e,e.onclose=()=>{var e;null===(e=this._logger)||void 0===e||e.info("Closed LaunchDarkly stream connection")},e.onerror=()=>{},e.onopen=e=>{var t;this._initHeaders=e.headers,null===(t=this._logger)||void 0===t||t.info("Opened LaunchDarkly stream connection")},e.onretrying=e=>{var t;null===(t=this._logger)||void 0===t||t.info(`Will retry stream connection in ${e.delayMillis} milliseconds`)},this._listeners.forEach(({deserializeData:t,processJson:i},r)=>{e.addEventListener(r,e=>{var s,n;if(null===(s=this._logger)||void 0===s||s.debug(`Received ${r} event`),null==e?void 0:e.data){this._logConnectionResult(!0);const{data:s}=e,n=t(s);if(!n)return void((e,t,i,r)=>{null==i||i.error(`Stream received invalid data in "${e}" message`),null==i||i.debug(`Invalid JSON follows: ${t}`),null==r||r(new bt.LDStreamingError(bt.DataSourceErrorKind.InvalidData,"Malformed JSON data in event stream"))})(r,s,this._logger,this._errorHandler);i(n,this._initHeaders)}else null===(n=this._errorHandler)||void 0===n||n.call(this,new bt.LDStreamingError(bt.DataSourceErrorKind.Unknown,"Unexpected payload from event stream"))})})}stop(){var e;null===(e=this._eventSource)||void 0===e||e.close(),this._eventSource=void 0}close(){this.stop()}};var St={};Object.defineProperty(St,"__esModule",{value:!0});const wt=o,kt=de;St.default=class{constructor(e,t,i,r,s,n=1){this._streamUriPath=t,this._parameters=i,this._diagnosticsManager=s,this._streamInitialReconnectDelay=n;const{basicConfiguration:a,platform:o}=e,{logger:l,serviceEndpoints:c}=a,{requests:u}=o;this._headers=Object.assign({},r),this._serviceEndpoints=c,this._logger=l,this._requests=u}_logConnectionAttempt(){this._connectionAttemptStartTime=Date.now()}_logConnectionResult(e){this._connectionAttemptStartTime&&this._diagnosticsManager&&this._diagnosticsManager.recordStreamInit(this._connectionAttemptStartTime,!e,Date.now()-this._connectionAttemptStartTime),this._connectionAttemptStartTime=void 0}_retryAndHandleError(e,t){var i,r,s;if("true"===(null===(i=e.headers)||void 0===i?void 0:i["x-ld-fd-fallback"])){const i=new wt.LDFlagDeliveryFallbackError(wt.DataSourceErrorKind.ErrorResponse,"Response header indicates to fallback to FDv1",e.status);return t(wt.subsystem.DataSourceState.Closed,i),!1}return(0,wt.shouldRetry)(e)?(null===(s=this._logger)||void 0===s||s.warn((0,wt.httpErrorMessage)(e,"streaming request","will retry")),this._logConnectionResult(!1),this._logConnectionAttempt(),t(wt.subsystem.DataSourceState.Interrupted),!0):(null===(r=this._logger)||void 0===r||r.error((0,wt.httpErrorMessage)(e,"streaming request")),this._logConnectionResult(!1),t(wt.subsystem.DataSourceState.Closed,new wt.LDStreamingError(wt.DataSourceErrorKind.ErrorResponse,e.message,e.status,!1)),!1)}start(e,t,i){var r;this._logConnectionAttempt(),t(wt.subsystem.DataSourceState.Initializing);const s=null==i?void 0:i(),n=s?[...this._parameters,{key:"basis",value:s}]:this._parameters,a=(0,wt.getStreamingUri)(this._serviceEndpoints,this._streamUriPath,n);null===(r=this._logger)||void 0===r||r.debug(`Streaming processor opening event source to uri: ${a}`);const o=this._requests.createEventSource(a,{headers:this._headers,errorFilter:e=>this._retryAndHandleError(e,t),initialRetryDelayMillis:1e3*this._streamInitialReconnectDelay,readTimeoutMillis:3e5,retryResetIntervalMillis:6e4});this._eventSource=o;new wt.internal.PayloadStreamReader(o,{flag:e=>((0,kt.processFlag)(e),e),segment:e=>((0,kt.processSegment)(e),e)},(e,i)=>{t(wt.subsystem.DataSourceState.Interrupted,new wt.LDStreamingError(e,i)),this.stop()},this._logger).addPayloadListener(t=>{this._logConnectionResult(!0),e(t.basis,{initMetadata:this._initMetadata,payload:t})}),o.onclose=()=>{var e;null===(e=this._logger)||void 0===e||e.info("Closed LaunchDarkly stream connection"),t(wt.subsystem.DataSourceState.Closed)},o.onerror=()=>{},o.onopen=e=>{var i;null===(i=this._logger)||void 0===i||i.info("Opened LaunchDarkly stream connection"),this._initMetadata=wt.internal.initMetadataFromHeaders(e.headers),t(wt.subsystem.DataSourceState.Valid)},o.onretrying=e=>{var t;null===(t=this._logger)||void 0===t||t.info(`Will retry stream connection in ${e.delayMillis} milliseconds`)}}stop(){var e;null===(e=this._eventSource)||void 0===e||e.close(),this._eventSource=void 0}close(){this.stop()}};var Et={};Object.defineProperty(Et,"__esModule",{value:!0});const Ot=he,Dt=ke,xt=Ee,Pt=Oe;Et.default=class{constructor(e,t,i){this._featureStore=e,this._hasEventListeners=t,this._onChange=i,this._dependencyTracker=new xt.default}init(e,t,i){this.applyChanges(!0,e,t,i)}upsert(e,t,i){this.applyChanges(!1,{[e.namespace]:{[t.key]:t}},i)}applyChanges(e,t,i,r,s){const n=this._hasEventListeners();let a={};n&&this._featureStore.all(Ot.default.Features,e=>{this._featureStore.all(Ot.default.Segments,t=>{a={[Ot.default.Features.namespace]:e,[Ot.default.Segments.namespace]:t}})}),(a=>{this._featureStore.applyChanges(e,t,()=>{Promise.resolve().then(()=>{if(e&&this._dependencyTracker.reset(),Object.entries(t).forEach(([e,t])=>{Object.keys(t||{}).forEach(i=>{const r=t[i];this._dependencyTracker.updateDependenciesFrom(e,i,(0,Dt.computeDependencies)(e,r))})}),n){const i=new Pt.default;Object.keys(t).forEach(r=>{const s=a[r],n=t[r];let o;o=e?Object.assign(Object.assign({},s),n):Object.assign({},n),Object.keys(o).forEach(e=>{this.addIfModified(r,e,s&&s[e],n&&n[e],i)})}),this.sendChangeEvents(i)}}),null==i||i()},r,s)})(a)}addIfModified(e,t,i,r,s){r&&i&&r.version<=i.version||this._dependencyTracker.updateModifiedItems(s,e,t)}sendChangeEvents(e){e.enumerate((e,t)=>{e===Ot.default.Features.namespace&&this._onChange(t)})}};var Mt={},Tt={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.defaultValues=e.DEFAULT_POLL_INTERVAL=void 0;const t=o,i=F,r=lt,s={baseUri:t.TypeValidators.String,streamUri:t.TypeValidators.String,eventsUri:t.TypeValidators.String,timeout:t.TypeValidators.Number,capacity:t.TypeValidators.Number,logger:t.TypeValidators.Object,featureStore:t.TypeValidators.ObjectOrFactory,dataSystem:t.TypeValidators.Object,bigSegments:t.TypeValidators.Object,updateProcessor:t.TypeValidators.ObjectOrFactory,flushInterval:t.TypeValidators.Number,pollInterval:t.TypeValidators.numberWithMin(30),proxyOptions:t.TypeValidators.Object,offline:t.TypeValidators.Boolean,stream:t.TypeValidators.Boolean,streamInitialReconnectDelay:t.TypeValidators.Number,useLdd:t.TypeValidators.Boolean,sendEvents:t.TypeValidators.Boolean,allAttributesPrivate:t.TypeValidators.Boolean,privateAttributes:t.TypeValidators.StringArray,contextKeysCapacity:t.TypeValidators.Number,contextKeysFlushInterval:t.TypeValidators.Number,tlsParams:t.TypeValidators.Object,diagnosticOptOut:t.TypeValidators.Boolean,diagnosticRecordingInterval:t.TypeValidators.numberWithMin(60),wrapperName:t.TypeValidators.String,wrapperVersion:t.TypeValidators.String,application:t.TypeValidators.Object,payloadFilterKey:t.TypeValidators.stringMatchingRegex(/^[a-zA-Z0-9](\w|\.|-)*$/),hooks:t.TypeValidators.createTypeArray("Hook[]",{}),enableEventCompression:t.TypeValidators.Boolean,dataSourceOptionsType:t.TypeValidators.String};e.DEFAULT_POLL_INTERVAL=30;const n={dataSourceOptionsType:"standard",streamInitialReconnectDelay:1,pollInterval:e.DEFAULT_POLL_INTERVAL},a={dataSourceOptionsType:"streamingOnly",streamInitialReconnectDelay:1},l={dataSourceOptionsType:"pollingOnly",pollInterval:e.DEFAULT_POLL_INTERVAL},c={dataSource:n};function u(i,r){const n=[],a=Object.assign({},r);return Object.keys(i).forEach(r=>{var o;const l=i[r],c=s[r];if(c)if(c.is(l))a[r]=l;else if("boolean"===c.getType())n.push(t.OptionMessages.wrongOptionTypeBoolean(r,typeof l)),a[r]=!!l;else if(c instanceof t.NumberWithMinimum&&t.TypeValidators.Number.is(l)){const{min:e}=c;n.push(t.OptionMessages.optionBelowMinimum(r,l,e)),a[r]=e}else n.push(t.OptionMessages.wrongOptionType(r,c.getType(),typeof l)),a[r]=e.defaultValues[r];else null===(o=i.logger)||void 0===o||o.warn(t.OptionMessages.unknownOption(r))}),{errors:n,validatedOptions:a}}e.defaultValues={baseUri:"https://sdk.launchdarkly.com",streamUri:"https://stream.launchdarkly.com",eventsUri:t.ServiceEndpoints.DEFAULT_EVENTS,stream:!0,streamInitialReconnectDelay:1,sendEvents:!0,timeout:5,capacity:1e4,flushInterval:5,pollInterval:e.DEFAULT_POLL_INTERVAL,offline:!1,useLdd:!1,allAttributesPrivate:!1,privateAttributes:[],contextKeysCapacity:1e3,contextKeysFlushInterval:300,diagnosticOptOut:!1,diagnosticRecordingInterval:900,featureStore:()=>new r.default,enableEventCompression:!1,dataSystem:c};e.default=class{constructor(s={},o={}){var c;s=s||{},this.logger=s.logger;const{errors:d,validatedOptions:h}=u(s,e.defaultValues),g=h;if(d.forEach(e=>{var t;null===(t=this.logger)||void 0===t||t.warn(e)}),function(e,i){var r,s,n;const{baseUri:a,streamUri:o,eventsUri:l}=e,c=null!=o,u=null!=a,d=null!=l;c===u&&c===d||(!c&&i.stream&&(null===(r=i.logger)||void 0===r||r.warn(t.OptionMessages.partialEndpoint("streamUri"))),u||null===(s=i.logger)||void 0===s||s.warn(t.OptionMessages.partialEndpoint("baseUri")),!d&&i.sendEvents&&(null===(n=i.logger)||void 0===n||n.warn(t.OptionMessages.partialEndpoint("eventsUri"))))}(s,g),s.dataSystem){const{errors:e,validatedOptions:o}=function(e){const r=[],s=Object.assign({},e);if(e.persistentStore&&!t.TypeValidators.ObjectOrFactory.is(e.persistentStore)&&(s.persistentStore=void 0,r.push(t.OptionMessages.wrongOptionType("persistentStore","LDFeatureStore",typeof e.persistentStore))),e.dataSource){let o,c;(0,i.isStandardOptions)(e.dataSource)?({errors:o,validatedOptions:c}=u(e.dataSource,n)):(0,i.isStreamingOnlyOptions)(e.dataSource)?({errors:o,validatedOptions:c}=u(e.dataSource,a)):(0,i.isPollingOnlyOptions)(e.dataSource)?({errors:o,validatedOptions:c}=u(e.dataSource,l)):(c=n,o=[t.OptionMessages.wrongOptionType("dataSource","DataSourceOptions",typeof e.dataSource)]),s.dataSource=c,r.push(...o)}else s.dataSource=n;return{errors:r,validatedOptions:s}}(s.dataSystem),c=o;this.dataSystem={dataSource:c.dataSource,useLdd:c.useLdd,featureStoreFactory:e=>void 0===c.persistentStore?new r.default:t.TypeValidators.Function.is(c.persistentStore)?c.persistentStore(e):c.persistentStore},e.forEach(e=>{var t;null===(t=this.logger)||void 0===t||t.warn(e)})}this.serviceEndpoints=new t.ServiceEndpoints(g.streamUri,g.baseUri,g.eventsUri,o.analyticsEventPath,o.diagnosticEventPath,o.includeAuthorizationHeader,g.payloadFilterKey),this.eventsCapacity=g.capacity,this.timeout=g.timeout,this.bigSegments=g.bigSegments,this.flushInterval=g.flushInterval,this.pollInterval=g.pollInterval,this.proxyOptions=g.proxyOptions,this.offline=g.offline,this.stream=g.stream,this.streamInitialReconnectDelay=g.streamInitialReconnectDelay,this.useLdd=g.useLdd,this.sendEvents=g.sendEvents,this.allAttributesPrivate=g.allAttributesPrivate,this.privateAttributes=g.privateAttributes,this.contextKeysCapacity=g.contextKeysCapacity,this.contextKeysFlushInterval=g.contextKeysFlushInterval,this.tlsParams=g.tlsParams,this.diagnosticOptOut=g.diagnosticOptOut,this.wrapperName=g.wrapperName,this.payloadFilterKey=g.payloadFilterKey,this.wrapperVersion=g.wrapperVersion,this.tags=new t.ApplicationTags(g),this.diagnosticRecordingInterval=g.diagnosticRecordingInterval,t.TypeValidators.Function.is(g.updateProcessor)?this.updateProcessorFactory=g.updateProcessor:this.updateProcessorFactory=()=>g.updateProcessor,t.TypeValidators.Function.is(g.featureStore)?this.featureStoreFactory=g.featureStore:this.featureStoreFactory=()=>g.featureStore,this.hooks=g.hooks,this.enableEventCompression=g.enableEventCompression,this.getImplementationHooks=null!==(c=o.getImplementationHooks)&&void 0!==c?c:()=>[],this.applicationInfo=g.application}}}(Tt),Object.defineProperty(Mt,"__esModule",{value:!0});const Ct=o,Ft=l,It=Tt;Mt.default=(e,t,i)=>{var r,s,n,a,o,l,c,u,d,h,g,_;let v,f,p;return(null===(r=e.dataSystem)||void 0===r?void 0:r.dataSource)?((0,Ft.isStandardOptions)(e.dataSystem.dataSource)||(0,Ft.isPollingOnlyOptions)(e.dataSystem.dataSource))&&e.dataSystem.dataSource.pollInterval&&(v=(0,Ct.secondsToMillis)(e.dataSystem.dataSource.pollInterval)):v=(0,Ct.secondsToMillis)(e.pollInterval),(null===(s=e.dataSystem)||void 0===s?void 0:s.dataSource)?((0,Ft.isStandardOptions)(e.dataSystem.dataSource)||(0,Ft.isStreamingOnlyOptions)(e.dataSystem.dataSource))&&e.dataSystem.dataSource.streamInitialReconnectDelay&&(f=(0,Ct.secondsToMillis)(e.dataSystem.dataSource.streamInitialReconnectDelay)):f=(0,Ct.secondsToMillis)(e.streamInitialReconnectDelay),p=(null===(n=e.dataSystem)||void 0===n?void 0:n.dataSource)?(0,Ft.isPollingOnlyOptions)(null===(a=e.dataSystem)||void 0===a?void 0:a.dataSource):!e.stream,Object.assign(Object.assign(Object.assign({customBaseURI:e.serviceEndpoints.polling!==It.defaultValues.baseUri,customStreamURI:e.serviceEndpoints.streaming!==It.defaultValues.streamUri,customEventsURI:e.serviceEndpoints.events!==It.defaultValues.eventsUri,eventsCapacity:e.eventsCapacity,connectTimeoutMillis:(0,Ct.secondsToMillis)(e.timeout),socketTimeoutMillis:(0,Ct.secondsToMillis)(e.timeout),eventsFlushIntervalMillis:(0,Ct.secondsToMillis)(e.flushInterval)},v?{pollingIntervalMillis:v}:null),f?{reconnectTimeMillis:f}:null),{contextKeysFlushIntervalMillis:(0,Ct.secondsToMillis)(e.contextKeysFlushInterval),diagnosticRecordingIntervalMillis:(0,Ct.secondsToMillis)(e.diagnosticRecordingInterval),streamingDisabled:p,usingRelayDaemon:null!==(l=null===(o=e.dataSystem)||void 0===o?void 0:o.useLdd)&&void 0!==l?l:e.useLdd,offline:e.offline,allAttributesPrivate:e.allAttributesPrivate,contextKeysCapacity:e.contextKeysCapacity,usingProxy:!!(null===(u=(c=t.requests).usingProxy)||void 0===u?void 0:u.call(c)),usingProxyAuthenticator:!!(null===(h=(d=t.requests).usingProxyAuth)||void 0===h?void 0:h.call(d)),dataStoreType:null!==(_=null===(g=i.getDescription)||void 0===g?void 0:g.call(i))&&void 0!==_?_:"memory"})};var jt={};Object.defineProperty(jt,"__esModule",{value:!0}),jt.allAsync=jt.firstSeriesAsync=jt.allSeriesAsync=jt.firstResult=void 0,jt.firstResult=function(e,t){let i;return null==e||e.some((e,r)=>(i=t(e,r),!!i)),i};function Rt(e,t,i,r,s){e?r<(null==e?void 0:e.length)?t(e[r],r,n=>{if(i){if(!n)return void s(!1)}else if(n)return void s(!0);e.length>50?Promise.resolve().then(()=>{Rt(e,t,i,r+1,s)}):Rt(e,t,i,r+1,s)}):s(i):s(!1)}jt.allSeriesAsync=function(e,t,i){Rt(e,t,!0,0,i)},jt.firstSeriesAsync=function(e,t,i){Rt(e,t,!1,0,i)},jt.allAsync=function(e,t,i){e?Promise.all(null==e?void 0:e.map(e=>new Promise(i=>{t(e,i)}))).then(e=>{i(e.every(e=>e))}):i(!1)};var At={},Lt={};Object.defineProperty(Lt,"__esModule",{value:!0});class Vt{static prerequisiteFailed(e){return{kind:"PREREQUISITE_FAILED",prerequisiteKey:e}}static ruleMatch(e,t){return{kind:"RULE_MATCH",ruleId:e,ruleIndex:t}}}Vt.Fallthrough={kind:"FALLTHROUGH"},Vt.Off={kind:"OFF"},Vt.TargetMatch={kind:"TARGET_MATCH"},Lt.default=Vt,Object.defineProperty(At,"__esModule",{value:!0});const Nt=Lt;class Kt{constructor(e,t,i){this.isError=e,this.detail=t,this.message=i,this.isError=e,this.detail=t,this.message=i}get isOff(){return this.detail.reason.kind===Nt.default.Off.kind}setDefault(e){this.detail.value=e}static forError(e,t,i){return new Kt(!0,{value:null!=i?i:null,variationIndex:null,reason:{kind:"ERROR",errorKind:e}},t)}static forSuccess(e,t,i){return new Kt(!1,{value:e,variationIndex:void 0===i?null:i,reason:t})}}At.default=Kt;var $t={},zt={};Object.defineProperty(zt,"__esModule",{value:!0});zt.default=class{constructor(e){this._crypto=e}_sha1Hex(e){const t=this._crypto.createHash("sha1");if(t.update(e),!t.digest)throw new Error("Platform must implement digest or asyncDigest");return t.digest("hex")}bucket(e,t,i,r,s="user",n){const a=function(e){return"string"==typeof e?e:Number.isInteger(e)?String(e):null}(e.valueForKind(i,s));if(null===a){return[0,e.kinds.indexOf(s)>=0]}const o=`${n?Number(n):`${t}.${r}`}.${a}`;return[parseInt(this._sha1Hex(o).substring(0,15),16)/0x1000000000000000,!0]}};var Ut={},Bt={};Object.defineProperty(Bt,"__esModule",{value:!0}),Bt.getBucketBy=Bt.getOffVariation=Bt.getVariation=void 0;const Ht=o,qt=At,{ErrorKinds:Wt}=Ht.internal,Jt=new Ht.AttributeReference("key");function Gt(e,t,i){return Ht.TypeValidators.Number.is(t)&&t>=0&&t<e.variations.length?qt.default.forSuccess(e.variations[t],i,t):qt.default.forError(Wt.MalformedFlag,"Invalid variation index in flag")}Bt.getVariation=Gt,Bt.getOffVariation=function(e,t){return Ht.TypeValidators.Number.is(e.offVariation)?Gt(e,e.offVariation,t):qt.default.forSuccess(null,t)},Bt.getBucketBy=function(e,t){var i;return null!==(i=e?void 0:t)&&void 0!==i?i:Jt},Object.defineProperty(Ut,"__esModule",{value:!0});const Xt=o,Yt=jt,Qt=Lt,Zt=Bt;function ei(e,t,i){const r=i.key(t.contextKind);if(void 0!==r){if(t.values.indexOf(r)>=0)return(0,Zt.getVariation)(e,t.variation,Qt.default.TargetMatch)}}Ut.default=function(e,t){var i;return(null===(i=e.contextTargets)||void 0===i?void 0:i.length)?(0,Yt.firstResult)(e.contextTargets,i=>{if(!i.contextKind||i.contextKind===Xt.Context.UserKind){const r=(e.targets||[]).find(e=>e.variation===i.variation);return r?ei(e,r,t):void 0}return ei(e,i,t)}):(0,Yt.firstResult)(e.targets,i=>ei(e,i,t))};var ti={};Object.defineProperty(ti,"__esModule",{value:!0}),ti.default=function(e){return`${e.key}.g${e.generation}`};var ii={},ri={};Object.defineProperty(ri,"__esModule",{value:!0});const si=t,ni=o,ai=/^\d+(\.\d+)?(\.\d+)?/;function oi(e){if(ni.TypeValidators.String.is(e)&&!e.startsWith("v")){const t=(0,si.parse)(e);if(t)return t;const i=ai.exec(e);if(i){let t=i[0];for(let e=1;e<i.length;e+=1)void 0===i[e]&&(t+=".0");return t+=e.substring(i[0].length),(0,si.parse)(t)}}return null}function li(e){return(t,i)=>{const r=oi(t),s=oi(i);return!!(r&&s&&e(r,s))}}function ci(e,t,i){return(r,s)=>!(!t.is(r)||!t.is(s))&&(i?e(i(r),i(s)):e(r,s))}function ui(e){return"number"==typeof e?e:Date.parse(e)}const di={in:(e,t)=>e===t,endsWith:ci((e,t)=>e.endsWith(t),ni.TypeValidators.String),startsWith:ci((e,t)=>e.startsWith(t),ni.TypeValidators.String),matches:ci((e,t)=>function(e,t){try{return new RegExp(e).test(t)}catch(e){return!1}}(t,e),ni.TypeValidators.String),contains:ci((e,t)=>e.indexOf(t)>-1,ni.TypeValidators.String),lessThan:ci((e,t)=>e<t,ni.TypeValidators.Number),lessThanOrEqual:ci((e,t)=>e<=t,ni.TypeValidators.Number),greaterThan:ci((e,t)=>e>t,ni.TypeValidators.Number),greaterThanOrEqual:ci((e,t)=>e>=t,ni.TypeValidators.Number),before:ci((e,t)=>e<t,ni.TypeValidators.Date,ui),after:ci((e,t)=>e>t,ni.TypeValidators.Date,ui),semVerEqual:li((e,t)=>0===e.compare(t)),semVerLessThan:li((e,t)=>e.compare(t)<0),semVerGreaterThan:li((e,t)=>e.compare(t)>0)};ri.default=class{static is(e){return Object.prototype.hasOwnProperty.call(di,e)}static execute(e,t,i){var r,s;return null!==(s=null===(r=di[e])||void 0===r?void 0:r.call(di,t,i))&&void 0!==s&&s}},Object.defineProperty(ii,"__esModule",{value:!0}),ii.maybeNegate=void 0;const hi=ri;function gi(e,t){return e.negate?!t:t}function _i(e,t,i){return i.some(i=>hi.default.execute(e,t,i))}ii.maybeNegate=gi,ii.default=function(e,t){const i=t.valueForKind(e.attributeReference,e.contextKind);return null!=i&&(Array.isArray(i)?gi(e,i.some(t=>_i(e.op,t,e.values))):gi(e,_i(e.op,i,e.values)))};var vi={};function fi(e,t,i,r){if(t)for(let i=0;i<t.length;i+=1){const r=t[i],s=e.key(r.contextKind);if(s)if(r.generated_valuesSet){if(r.generated_valuesSet.has(s))return!0}else if(r.values.includes(s))return!0}if(r){const t=e.key("user");if(t&&r.has(t))return!0}else if(i){const t=e.key("user");if(t&&i.includes(t))return!0}return!1}Object.defineProperty(vi,"__esModule",{value:!0}),vi.default=function(e,t){if(fi(t,e.includedContexts,e.included,e.generated_includedSet))return!0;const i=fi(t,e.excludedContexts,e.excluded,e.generated_excludedSet);return i?!i:void 0},Object.defineProperty($t,"__esModule",{value:!0});const pi=o,yi=zt,mi=jt,bi=At,Si=Ut,wi=ti,ki=ii,Ei=vi,Oi=Lt,Di=Bt,{ErrorKinds:xi}=pi.internal,Pi={HEALTHY:1,STALE:2,STORE_ERROR:3,NOT_CONFIGURED:4};function Mi(e){return void 0!==e&&Pi[e]||0}function Ti(e,t){return void 0!==e&&Mi(e)>Mi(t)?e:t}function Ci(e){return{error:!1,isMatch:e,result:void 0}}function Fi(e){return{error:!0,isMatch:!1,result:e}}$t.default=class{constructor(e,t){this._queries=t,this._bucketer=new yi.default(e.crypto)}async evaluate(e,t,i){return new Promise(r=>{this.evaluateCb(e,t,r,i)})}evaluateCb(e,t,i,r){const s={};this._evaluateInternal(e,t,s,[],e=>{s.bigSegmentsStatus&&(e.detail.reason=Object.assign(Object.assign({},e.detail.reason),{bigSegmentsStatus:s.bigSegmentsStatus})),s.prerequisites&&(e.prerequisites=s.prerequisites),e.events=s.events,i(e)},!0,r)}_evaluateInternal(e,t,i,r,s,n,a){e.on?this._checkPrerequisites(e,t,i,r,r=>{if(r)return void s(r);const n=(0,Si.default)(e,t);n?s(n):this._evaluateRules(e,t,i,i=>{s(i||this._variationForContext(e.fallthrough,t,e,Oi.default.Fallthrough))})},n,a):s((0,Di.getOffVariation)(e,Oi.default.Off))}_checkPrerequisites(e,t,i,r,s,n,a){let o;e.prerequisites&&e.prerequisites.length?(0,mi.allSeriesAsync)(e.prerequisites,(s,l,c)=>{if(-1!==r.indexOf(s.key))return o=bi.default.forError(xi.MalformedFlag,`Prerequisite of ${e.key} causing a circular reference. This is probably a temporary condition due to an incomplete update.`),void c(!0);const u=[...r,s.key];this._queries.getFlag(s.key,r=>{if(!r)return o=(0,Di.getOffVariation)(e,Oi.default.prerequisiteFailed(s.key)),void c(!1);this._evaluateInternal(r,t,i,u,l=>{var u,d;return null!==(u=i.events)&&void 0!==u||(i.events=[]),n&&(null!==(d=i.prerequisites)&&void 0!==d||(i.prerequisites=[]),i.prerequisites.push(r.key)),a&&i.events.push(a.evalEventServer(r,t,l.detail,null,e)),l.isError?(o=l,c(!1)):l.isOff||l.detail.variationIndex!==s.variation?(o=(0,Di.getOffVariation)(e,Oi.default.prerequisiteFailed(s.key)),c(!1)):c(!0)},!1,a)})},()=>{s(o)}):s(void 0)}_evaluateRules(e,t,i,r){let s;(0,mi.firstSeriesAsync)(e.rules,(r,n,a)=>{this._ruleMatchContext(e,r,n,t,i,[],e=>{s=e,a(!!e)})},()=>r(s))}_clauseMatchContext(e,t,i,r,s){let n;"segmentMatch"!==e.op?e.attributeReference.isValid?s(Ci((0,ki.default)(e,t))):s(Fi(bi.default.forError(xi.MalformedFlag,"Invalid attribute reference in clause"))):(0,mi.firstSeriesAsync)(e.values,(e,s,a)=>{this._queries.getSegment(e,e=>{if(e){if(i.includes(e.key))return n=bi.default.forError(xi.MalformedFlag,`Segment rule referencing segment ${e.key} caused a circular reference. This is probably a temporary condition due to an incomplete update`),void a(!0);const s=[...i,null==e?void 0:e.key];this.segmentMatchContext(e,t,r,s,e=>{e.error&&(n=e.result),a(e.error||e.isMatch)})}else a(!1)})},t=>s(n?Fi(n):Ci((0,ki.maybeNegate)(e,t))))}_ruleMatchContext(e,t,i,r,s,n,a){if(!t.clauses)return void a(void 0);let o;(0,mi.allSeriesAsync)(t.clauses,(e,t,i)=>{this._clauseMatchContext(e,r,n,s,e=>(o=e.result,i(e.error||e.isMatch)))},s=>a(o||(s?this._variationForContext(t,r,e,Oi.default.ruleMatch(t.id,i)):void 0)))}_variationForContext(e,t,i,r){if(void 0===e)return bi.default.forError(xi.MalformedFlag,"Fallthrough variation undefined");if(void 0!==e.variation)return(0,Di.getVariation)(i,e.variation,r);if(e.rollout){const{rollout:s}=e,{variations:n}=s,a="experiment"===s.kind;if(n&&n.length){const e=(0,Di.getBucketBy)(a,s.bucketByAttributeReference);if(!e.isValid)return bi.default.forError(xi.MalformedFlag,"Invalid attribute reference for bucketBy in rollout");const[o,l]=this._bucketer.bucket(t,i.key,e,i.salt||"",s.contextKind,s.seed),c=Object.assign({},r);let u=0;for(let e=0;e<n.length;e+=1){const t=n[e];if(u+=t.weight/1e5,o<u)return a&&l&&!t.untracked&&(c.inExperiment=!0),(0,Di.getVariation)(i,t.variation,c)}const d=n[n.length-1];return a&&!d.untracked&&(c.inExperiment=!0),(0,Di.getVariation)(i,d.variation,c)}}return bi.default.forError(xi.MalformedFlag,"Variation/rollout object with no variation or rollout")}segmentRuleMatchContext(e,t,i,r,s,n){let a;(0,mi.allSeriesAsync)(t.clauses,(e,t,n)=>{this._clauseMatchContext(e,i,s,r,e=>{a=e.result,n(e.error||e.isMatch)})},r=>{if(a)return n(Fi(a));if(r){if(void 0===t.weight)return n(Ci(r));const s=(0,Di.getBucketBy)(!1,t.bucketByAttributeReference);if(!s.isValid)return n(Fi(bi.default.forError(xi.MalformedFlag,"Invalid attribute reference in clause")));const[a]=this._bucketer.bucket(i,e.key,s,e.salt||"",t.rolloutContextKind);return n(Ci(a<t.weight/1e5))}return n(Ci(!1))})}simpleSegmentMatchContext(e,t,i,r,s){if(!e.unbounded){const i=(0,Ei.default)(e,t);if(void 0!==i)return void s(Ci(i))}let n;(0,mi.firstSeriesAsync)(e.rules,(s,a,o)=>{this.segmentRuleMatchContext(e,s,t,i,r,e=>(n=e.result,o(e.error||e.isMatch)))},e=>s(n?Fi(n):Ci(e)))}segmentMatchContext(e,t,i,r,s){if(!e.unbounded)return void this.simpleSegmentMatchContext(e,t,i,r,s);const n=e.unboundedContextKind||"user",a=t.key(n);if(a)return e.generation?void(i.bigSegmentsMembership&&i.bigSegmentsMembership[a]?this.bigSegmentMatchContext(i.bigSegmentsMembership[a],e,t,i).then(s):this._queries.getBigSegmentsMembership(a).then(r=>{if(i.bigSegmentsMembership=i.bigSegmentsMembership||{},r){const[e,t]=r;i.bigSegmentsMembership[a]=e,i.bigSegmentsStatus=Ti(i.bigSegmentsStatus,t)}else i.bigSegmentsStatus=Ti(i.bigSegmentsStatus,"NOT_CONFIGURED");this.bigSegmentMatchContext(i.bigSegmentsMembership[a],e,t,i).then(s)})):(i.bigSegmentsStatus=Ti(i.bigSegmentsStatus,"NOT_CONFIGURED"),void s(Ci(!1)));s(Ci(!1))}bigSegmentMatchContext(e,t,i,r){const s=(0,wi.default)(t),n=null==e?void 0:e[s];return new Promise(e=>{null==n?this.simpleSegmentMatchContext(t,i,r,[],e):e(Ci(n))})}};var Ii={};Object.defineProperty(Ii,"__esModule",{value:!0});const ji=se;Ii.default=class{constructor(e){this._contextKeysCache=new ji.default({max:e.contextKeysCapacity}),this.flushInterval=e.contextKeysFlushInterval}processContext(e){const{canonicalKey:t}=e,i=this._contextKeysCache.get(t);return this._contextKeysCache.set(t,!0),!i}flush(){this._contextKeysCache.clear()}};var Ri={},Ai={};Object.defineProperty(Ai,"__esModule",{value:!0}),Ai.default=function(e,t){if(t){if(t.inExperiment)return!0;switch(t.kind){case"RULE_MATCH":{const i=t.ruleIndex;if(void 0!==i){const t=e.rules||[];return i>=0&&i<t.length&&!!t[i].trackEvents}break}case"FALLTHROUGH":return!!e.trackEventsFallthrough}}return!1},Object.defineProperty(Ri,"__esModule",{value:!0});const Li=o,Vi=Ai;class Ni extends Li.internal.EventFactoryBase{evalEventServer(e,t,i,r,s){var n;const a=(0,Vi.default)(e,i.reason);return super.evalEvent({addExperimentData:a,context:t,debugEventsUntilDate:e.debugEventsUntilDate,defaultVal:r,excludeFromSummaries:e.excludeFromSummaries,flagKey:e.key,prereqOfFlagKey:null==s?void 0:s.key,reason:i.reason,samplingRatio:e.samplingRatio,trackEvents:e.trackEvents||a,value:i.value,variation:null!==(n=i.variationIndex)&&void 0!==n?n:void 0,version:e.version})}}Ri.default=Ni;var Ki={};Object.defineProperty(Ki,"__esModule",{value:!0});Ki.default=class{constructor(e,t){this._valid=e,this._withReasons=t,this._flagValues={},this._flagMetadata={}}addFlag(e,t,i,r,s,n,a,o){this._flagValues[e.key]=t;const l={};void 0!==i&&(l.variation=i);const c=a&&!s&&!n&&void 0===e.debugEventsUntilDate;c||(l.version=e.version),r&&(n||this._withReasons&&!c)&&(l.reason=r),s&&(l.trackEvents=!0),n&&(l.trackReason=!0),void 0!==e.debugEventsUntilDate&&(l.debugEventsUntilDate=e.debugEventsUntilDate),o&&o.length&&(l.prerequisites=o),this._flagMetadata[e.key]=l}build(){return{valid:this._valid,allValues:()=>this._flagValues,getFlagValue:e=>this._flagValues[e],getFlagReason:e=>{var t;return null!==(t=this._flagMetadata[e]?this._flagMetadata[e].reason:null)&&void 0!==t?t:null},toJSON:()=>Object.assign(Object.assign({},this._flagValues),{$flagsState:this._flagMetadata,$valid:this._valid})}}};var $i={};Object.defineProperty($i,"__esModule",{value:!0});const zi="unknown hook";$i.default=class{constructor(e,t){this._logger=e,this._hooks=[],this._hooks.push(...t)}async withEvaluationSeries(e,t,i,r,s,n){return 0===this._hooks.length?s():this.withEvaluationSeriesExtraDetail(e,t,i,r,async()=>({detail:await s()}),n).then(({detail:e})=>e)}async withEvaluationSeriesExtraDetail(e,t,i,r,s,n){if(0===this._hooks.length)return s();const{hooks:a,hookContext:o}=this._prepareHooks(e,t,i,r,n),l=this._executeBeforeEvaluation(a,o),c=await s();return this._executeAfterEvaluation(a,o,l,c.detail),c}_tryExecuteStage(e,t,i){var r;try{return i()}catch(i){return null===(r=this._logger)||void 0===r||r.error(`An error was encountered in "${e}" of the "${t}" hook: ${i}`),{}}}_hookName(e){var t,i;try{return null!==(t=null==e?void 0:e.getMetadata().name)&&void 0!==t?t:zi}catch(e){return null===(i=this._logger)||void 0===i||i.error("Exception thrown getting metadata for hook. Unable to get hook name."),zi}}_executeAfterEvaluation(e,t,i,r){var s;for(let n=e.length-1;n>=0;n-=1){const a=e[n],o=null!==(s=i[n])&&void 0!==s?s:{};this._tryExecuteStage("afterEvaluation",this._hookName(a),()=>{var e,i;return null!==(i=null===(e=null==a?void 0:a.afterEvaluation)||void 0===e?void 0:e.call(a,t,o,r))&&void 0!==i?i:{}})}}_executeBeforeEvaluation(e,t){return e.map(e=>this._tryExecuteStage("beforeEvaluation",this._hookName(e),()=>{var i,r;return null!==(r=null===(i=null==e?void 0:e.beforeEvaluation)||void 0===i?void 0:i.call(e,t,{}))&&void 0!==r?r:{}}))}_prepareHooks(e,t,i,r,s){return{hooks:[...this._hooks],hookContext:{flagKey:e,context:t,defaultValue:i,method:r,environmentId:s}}}addHook(e){this._hooks.push(e)}};var Ui={};Object.defineProperty(Ui,"__esModule",{value:!0});const Bi=o;function Hi(e){const t=e.old,i=e.new;return!(void 0!==t&&!Bi.TypeValidators.Boolean.is(t))&&!(void 0!==i&&!Bi.TypeValidators.Boolean.is(i))}function qi(e){if(Bi.TypeValidators.String.is(e.key)&&""!==e.key){if("latency_ms"===e.key){if(!Bi.TypeValidators.Object.is(e.values))return;if(!function(e){const t=e.old,i=e.new;return!(void 0!==t&&!Bi.TypeValidators.Number.is(t)||void 0!==i&&!Bi.TypeValidators.Number.is(i))}(e.values))return;return{key:e.key,values:{old:e.values.old,new:e.values.new}}}if(function(e){return"error"===e.key}(e)){if(!Bi.TypeValidators.Object.is(e.values))return;if(!Hi(e.values))return;return{key:e.key,values:{old:e.values.old,new:e.values.new}}}if(function(e){return"consistent"===e.key}(e)){if(!Bi.TypeValidators.Boolean.is(e.value)||!Bi.TypeValidators.Number.is(e.samplingRatio))return;return{key:e.key,value:e.value,samplingRatio:e.samplingRatio}}if(function(e){return"invoked"===e.key}(e)){if(!Bi.TypeValidators.Object.is(e.values))return;if(!Hi(e.values))return;return{key:e.key,values:{old:e.values.old,new:e.values.new}}}}}Ui.default=function(e){var t,i;if("migration_op"!==e.kind)return;if(i=e.operation,!Bi.TypeValidators.String.is(i)||"read"!==i&&"write"!==i)return;if(!Bi.TypeValidators.Number.is(e.creationDate))return;const r={};if(Bi.TypeValidators.Object.is(e.context)){const t=Bi.Context.fromLDContext(e.context);t.valid&&(r.context=t)}else Bi.TypeValidators.Object.is(e.contextKeys)&&Object.keys(e.contextKeys).every(e=>Bi.TypeValidators.Kind.is(e))&&Object.values(e.contextKeys).every(e=>Bi.TypeValidators.String.is(e)&&""!==e)&&(r.contextKeys=Object.assign({},e.contextKeys));if(!r.context&&!r.contextKeys)return;const s=null!==(t=e.samplingRatio)&&void 0!==t?t:1;if(!Bi.TypeValidators.Number.is(s))return;const n=function(e){if(!Bi.TypeValidators.String.is(e.key)||""===e.key)return;if(!Bi.TypeValidators.Object.is(e.reason))return;if(!Bi.TypeValidators.String.is(e.reason.kind)||""===e.reason.kind)return;const t={key:e.key,value:e.value,default:e.default,reason:{kind:e.reason.kind}},i=e.reason,r=t.reason;return Bi.TypeValidators.String.is(i.errorKind)&&(r.errorKind=i.errorKind),Bi.TypeValidators.String.is(i.ruleId)&&(r.ruleId=i.ruleId),Bi.TypeValidators.String.is(i.prerequisiteKey)&&(r.prerequisiteKey=i.prerequisiteKey),Bi.TypeValidators.Boolean.is(i.inExperiment)&&(r.inExperiment=i.inExperiment),Bi.TypeValidators.Number.is(i.ruleIndex)&&(r.ruleIndex=i.ruleIndex),Bi.TypeValidators.String.is(i.bigSegmentsStatus)&&(r.bigSegmentsStatus=i.bigSegmentsStatus),void 0!==e.variation&&Bi.TypeValidators.Number.is(e.variation)&&(t.variation=e.variation),void 0!==e.version&&Bi.TypeValidators.Number.is(e.version)&&(t.version=e.version),t}(e.evaluation);var a;return n?Object.assign(Object.assign({kind:e.kind,operation:e.operation,creationDate:e.creationDate},r),{measurements:(a=e.measurements,a.map(qi).filter(e=>void 0!==e)),evaluation:n,samplingRatio:s}):void 0};var Wi={};Object.defineProperty(Wi,"__esModule",{value:!0});const Ji=o,Gi=c;function Xi(e){return!Number.isNaN(e)}Wi.default=class{constructor(e,t,i,r,s,n,a,o,l,c){this._flagKey=e,this._context=t,this._defaultStage=i,this._stage=r,this._reason=s,this._checkRatio=n,this._variation=a,this._version=o,this._samplingRatio=l,this._logger=c,this._errors={old:!1,new:!1},this._wasInvoked={old:!1,new:!1},this._consistencyCheck=Gi.LDConsistencyCheck.NotChecked,this._latencyMeasurement={old:NaN,new:NaN}}op(e){this._operation=e}error(e){this._errors[e]=!0}consistency(e){var t,i;if(Ji.internal.shouldSample(null!==(t=this._checkRatio)&&void 0!==t?t:1))try{const t=e();this._consistencyCheck=t?Gi.LDConsistencyCheck.Consistent:Gi.LDConsistencyCheck.Inconsistent}catch(e){null===(i=this._logger)||void 0===i||i.error(`Exception when executing consistency check function for migration '${this._flagKey}' the consistency check will not be included in the generated migration op event. Exception: ${e}`)}}latency(e,t){this._latencyMeasurement[e]=t}invoked(e){this._wasInvoked[e]=!0}createEvent(){var e,t,i,r,s;if(!Ji.TypeValidators.String.is(this._flagKey)||""===this._flagKey)return void(null===(e=this._logger)||void 0===e||e.error("The flag key for a migration operation must be a non-empty string."));if(!this._operation)return void(null===(t=this._logger)||void 0===t||t.error('The operation must be set using "op" before an event can be created.'));if(!Ji.Context.fromLDContext(this._context).valid)return void(null===(i=this._logger)||void 0===i||i.error("The migration was not done against a valid context and cannot generate an event."));if(!this._wasInvoked.old&&!this._wasInvoked.new)return void(null===(r=this._logger)||void 0===r||r.error('The migration invoked neither the "old" or "new" implementation andan event cannot be generated'));if(!this._measurementConsistencyCheck())return;const n=[];return this._populateInvoked(n),this._populateConsistency(n),this._populateLatency(n),this._populateErrors(n),{kind:"migration_op",operation:this._operation,creationDate:Date.now(),context:this._context,evaluation:{key:this._flagKey,value:this._stage,default:this._defaultStage,reason:this._reason,variation:this._variation,version:this._version},measurements:n,samplingRatio:null!==(s=this._samplingRatio)&&void 0!==s?s:1}}_logTag(){return`For migration ${this._operation}-${this._flagKey}:`}_latencyConsistencyMessage(e){return`Latency measurement for "${e}", but "${e}" was not invoked.`}_errorConsistencyMessage(e){return`Error occurred for "${e}", but "${e}" was not invoked.`}_consistencyCheckConsistencyMessage(e){return`Consistency check was done, but "${e}" was not invoked.Both "old" and "new" must be invoked to do a consistency check.`}_checkOriginEventConsistency(e){var t,i,r;return!!this._wasInvoked[e]||(Number.isNaN(this._latencyMeasurement[e])?this._errors[e]?(null===(i=this._logger)||void 0===i||i.error(`${this._logTag()} ${this._errorConsistencyMessage(e)}`),!1):this._consistencyCheck===Gi.LDConsistencyCheck.NotChecked||(null===(r=this._logger)||void 0===r||r.error(`${this._logTag()} ${this._consistencyCheckConsistencyMessage(e)}`),!1):(null===(t=this._logger)||void 0===t||t.error(`${this._logTag()} ${this._latencyConsistencyMessage(e)}`),!1))}_measurementConsistencyCheck(){return this._checkOriginEventConsistency("old")&&this._checkOriginEventConsistency("new")}_populateInvoked(e){var t;const i={key:"invoked",values:{}};this._wasInvoked.old||this._wasInvoked.new||null===(t=this._logger)||void 0===t||t.error("Migration op completed without executing any origins (old/new)."),this._wasInvoked.old&&(i.values.old=!0),this._wasInvoked.new&&(i.values.new=!0),e.push(i)}_populateConsistency(e){var t;void 0!==this._consistencyCheck&&this._consistencyCheck!==Gi.LDConsistencyCheck.NotChecked&&e.push({key:"consistent",value:this._consistencyCheck===Gi.LDConsistencyCheck.Consistent,samplingRatio:null!==(t=this._checkRatio)&&void 0!==t?t:1})}_populateErrors(e){if(this._errors.new||this._errors.old){const t={key:"error",values:{}};this._errors.new&&(t.values.new=!0),this._errors.old&&(t.values.old=!0),e.push(t)}}_populateLatency(e){const t=Xi(this._latencyMeasurement.new),i=Xi(this._latencyMeasurement.old);if(t||i){const r={};t&&(r.new=this._latencyMeasurement.new),i&&(r.old=this._latencyMeasurement.old),e.push({key:"latency_ms",values:r})}}},Object.defineProperty(a,"__esModule",{value:!0});const Yi=o,Qi=l,Zi=F,er=re,tr=le,ir=ce,rr=ue,sr=ke,nr=Ce,ar=je,or=_t,lr=pt,cr=mt,ur=St,dr=Et,hr=Mt,gr=jt,_r=At,vr=$t,fr=Ii,pr=Ri,yr=Ai,mr=Ki,br=$i,Sr=Ui,wr=Wi,kr=Tt,Er=he,{ClientMessages:Or,ErrorKinds:Dr,NullEventProcessor:xr}=Yi.internal;var Pr,Mr;(Mr=Pr||(Pr={}))[Mr.Initializing=0]="Initializing",Mr[Mr.Initialized=1]="Initialized",Mr[Mr.Failed=2]="Failed";function Tr(e,t,i,r,s,n,a){var o,l,c,u,d;const{onUpdate:h,hasEventListeners:g}=r,_=new br.default(i.logger,a);if(!e&&!i.offline)throw new Error("You must configure the client with an SDK key");const{logger:v}=i,f=(0,Yi.defaultHeaders)(e,t.info,i.tags),p=new Yi.ClientContext(e,i,t),y=i.featureStoreFactory(p),m=new sr.default(y,g,h);let b,S;!i.sendEvents||i.offline||i.diagnosticOptOut||(b=new Yi.internal.DiagnosticsManager(e,t,(0,hr.default)(i,t,y))),S=!i.sendEvents||i.offline?new xr:new Yi.internal.EventProcessor(i,p,f,new fr.default(i),b);const w=new er.default(null===(l=null===(o=i.bigSegments)||void 0===o?void 0:o.store)||void 0===l?void 0:l.call(o,p),null!==(c=i.bigSegments)&&void 0!==c?c:{},i.logger,t.crypto),k={getFlag(e,t){y.get(Er.default.Features,e,e=>t(e))},getSegment(e,t){y.get(Er.default.Segments,e,e=>t(e))},getBigSegmentsMembership:e=>w.getUserMembership(e)},E=new vr.default(t,k),O=(0,rr.createStreamListeners)(m,v,{put:s});let D;return i.offline||i.useLdd||(D=null!==(d=null===(u=i.updateProcessorFactory)||void 0===u?void 0:u.call(i,p,m,s,n))&&void 0!==d?d:i.stream?new cr.default(p,"/all",[],O,f,b,n,i.streamInitialReconnectDelay):new ar.default(new lr.default(i,t.requests,f),i.pollInterval,m,i.logger,s,n)),{config:i,logger:v,evaluator:E,featureStore:y,updateProcessor:D,eventProcessor:S,bigSegmentsManager:w,hookRunner:_,onError:r.onError,onFailed:r.onFailed,onReady:r.onReady}}a.default=class{get logger(){return this._logger}constructor(e,t,i,r,s){this._sdkKey=e,this._platform=t,this._initState=Pr.Initializing,this._eventFactoryDefault=new pr.default(!1),this._eventFactoryWithReasons=new pr.default(!0);const n=new kr.default(i,s);this.environmentMetadata=(0,tr.createPluginEnvironmentMetadata)(t,e,n);const a=[];if(n.hooks&&a.push(...n.hooks),n.getImplementationHooks(this.environmentMetadata).forEach(e=>{a.push(e)}),n.dataSystem){let i,s;({config:this._config,logger:this._logger,evaluator:this._evaluator,featureStore:i,dataSource:this._dataSource,payloadListener:s,eventProcessor:this._eventProcessor,bigSegmentsManager:this._bigSegmentsManager,hookRunner:this._hookRunner,onError:this._onError,onFailed:this._onFailed,onReady:this._onReady}=function(e,t,i,r,s,n){var a,o,l,c;const{onUpdate:u,hasEventListeners:d}=r,h=new br.default(i.logger,n);if(!e&&!i.offline)throw new Error("You must configure the client with an SDK key");const{logger:g}=i,_=(0,Yi.defaultHeaders)(e,t.info,i.tags),v=new Yi.ClientContext(e,i,t),f=i.dataSystem,p=f.featureStoreFactory(v),y=new dr.default(p,d,u);let m,b;!i.sendEvents||i.offline||i.diagnosticOptOut||(m=new Yi.internal.DiagnosticsManager(e,t,(0,hr.default)(i,t,p))),b=!i.sendEvents||i.offline?new xr:new Yi.internal.EventProcessor(i,v,_,new fr.default(i),m);const S=new er.default(null===(o=null===(a=i.bigSegments)||void 0===a?void 0:a.store)||void 0===o?void 0:o.call(a,v),null!==(l=i.bigSegments)&&void 0!==l?l:{},i.logger,t.crypto),w={getFlag(e,t){p.get(Er.default.Features,e,e=>t(e))},getSegment(e,t){p.get(Er.default.Segments,e,e=>t(e))},getBigSegmentsMembership:e=>S.getUserMembership(e)},k=new vr.default(t,w);let E,O;if(!i.offline&&!i.dataSystem.useLdd){const e=[];e.push(()=>new nr.default(new lr.default(i,t.requests,_,"/sdk/poll",i.logger),i.logger));const r=[];if((0,Zi.isStandardOptions)(f.dataSource)||(0,Zi.isStreamingOnlyOptions)(f.dataSource)){const e=f.dataSource.streamInitialReconnectDelay;r.push(()=>new ur.default(v,"/sdk/stream",[],_,m,e))}let n=kr.DEFAULT_POLL_INTERVAL;((0,Zi.isStandardOptions)(f.dataSource)||(0,Zi.isPollingOnlyOptions)(f.dataSource))&&(n=null!==(c=f.dataSource.pollInterval)&&void 0!==c?c:kr.DEFAULT_POLL_INTERVAL,r.push(()=>new or.default(new lr.default(i,t.requests,_,"/sdk/poll",g),n,g)));const a=[()=>new or.default(new lr.default(i,t.requests,_,"/sdk/poll",i.logger),n,i.logger,!0)];E=new Yi.CompositeDataSource(e,r,a,g),O=(0,ir.createPayloadListener)(y,g,s)}return{config:i,logger:g,evaluator:k,featureStore:p,dataSource:E,payloadListener:O,eventProcessor:b,bigSegmentsManager:S,hookRunner:h,onError:r.onError,onFailed:r.onFailed,onReady:r.onReady}}(e,t,n,r,()=>this._initSuccess(),a)),this._featureStore=i,this.bigSegmentStatusProviderInternal=this._bigSegmentsManager.statusProvider,this._dataSource?this._dataSource.start((e,t)=>{null==s||s(t)},(e,t)=>{e===Yi.subsystem.DataSourceState.Closed&&t&&this._dataSourceErrorHandler(t)},()=>{var e;return null===(e=i.getSelector)||void 0===e?void 0:e.call(i)}):setTimeout(()=>this._initSuccess(),0)}else({config:this._config,logger:this._logger,evaluator:this._evaluator,featureStore:this._featureStore,updateProcessor:this._updateProcessor,eventProcessor:this._eventProcessor,bigSegmentsManager:this._bigSegmentsManager,hookRunner:this._hookRunner,onError:this._onError,onFailed:this._onFailed,onReady:this._onReady}=Tr(e,t,n,r,()=>this._initSuccess(),e=>this._dataSourceErrorHandler(e),a)),this.bigSegmentStatusProviderInternal=this._bigSegmentsManager.statusProvider,this._updateProcessor?this._updateProcessor.start():setTimeout(()=>this._initSuccess(),0)}initialized(){return this._initState===Pr.Initialized}waitForInitialization(e){var t,i;return void 0!==(null==e?void 0:e.timeout)||void 0===this._updateProcessor&&void 0===this._dataSource||null===(t=this._logger)||void 0===t||t.warn("The waitForInitialization function was called without a timeout specified. In a future version a default timeout will be applied."),void 0!==(null==e?void 0:e.timeout)&&(null==e?void 0:e.timeout)>60&&(void 0!==this._updateProcessor||void 0!==this._dataSource)&&(null===(i=this._logger)||void 0===i||i.warn("The waitForInitialization function was called with a timeout greater than 60 seconds. We recommend a timeout of less than 60 seconds.")),this._initializedPromise?this._clientWithTimeout(this._initializedPromise,null==e?void 0:e.timeout,this._logger):this._initState===Pr.Initialized?(this._initializedPromise=Promise.resolve(this),this._initializedPromise):this._initState===Pr.Failed?(this._initializedPromise=Promise.reject(this._rejectionReason),this._initializedPromise):(this._initializedPromise||(this._initializedPromise=new Promise((e,t)=>{this._initResolve=e,this._initReject=t})),this._clientWithTimeout(this._initializedPromise,null==e?void 0:e.timeout,this._logger))}variation(e,t,i,r){var s,n,a;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.variation",()=>new Promise(r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryDefault,e=>{r(e.detail)})}),null===(a=null===(n=(s=this._featureStore).getInitMetaData)||void 0===n?void 0:n.call(s))||void 0===a?void 0:a.environmentId).then(e=>(null==r||r(null,e.value),e.value))}variationDetail(e,t,i,r){var s,n,a;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.variationDetail",()=>new Promise(s=>{this._evaluateIfPossible(e,t,i,this._eventFactoryWithReasons,e=>{s(e.detail),null==r||r(null,e.detail)})}),null===(a=null===(n=(s=this._featureStore).getInitMetaData)||void 0===n?void 0:n.call(s))||void 0===a?void 0:a.environmentId)}_typedEval(e,t,i,r,s,n){var a,o,l;return this._hookRunner.withEvaluationSeries(e,t,i,s,()=>new Promise(s=>{this._evaluateIfPossible(e,t,i,r,e=>{const t={value:e.detail.value,reason:e.detail.reason,variationIndex:e.detail.variationIndex};s(t)},n)}),null===(l=null===(o=(a=this._featureStore).getInitMetaData)||void 0===o?void 0:o.call(a))||void 0===l?void 0:l.environmentId)}async boolVariation(e,t,i){return(await this._typedEval(e,t,i,this._eventFactoryDefault,"LDClient.boolVariation",e=>[Yi.TypeValidators.Boolean.is(e),Yi.TypeValidators.Boolean.getType()])).value}async numberVariation(e,t,i){return(await this._typedEval(e,t,i,this._eventFactoryDefault,"LDClient.numberVariation",e=>[Yi.TypeValidators.Number.is(e),Yi.TypeValidators.Number.getType()])).value}async stringVariation(e,t,i){return(await this._typedEval(e,t,i,this._eventFactoryDefault,"LDClient.stringVariation",e=>[Yi.TypeValidators.String.is(e),Yi.TypeValidators.String.getType()])).value}jsonVariation(e,t,i){var r,s,n;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.jsonVariation",()=>new Promise(r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryDefault,e=>{r(e.detail)})}),null===(n=null===(s=(r=this._featureStore).getInitMetaData)||void 0===s?void 0:s.call(r))||void 0===n?void 0:n.environmentId).then(e=>e.value)}boolVariationDetail(e,t,i){return this._typedEval(e,t,i,this._eventFactoryWithReasons,"LDClient.boolVariationDetail",e=>[Yi.TypeValidators.Boolean.is(e),Yi.TypeValidators.Boolean.getType()])}numberVariationDetail(e,t,i){return this._typedEval(e,t,i,this._eventFactoryWithReasons,"LDClient.numberVariationDetail",e=>[Yi.TypeValidators.Number.is(e),Yi.TypeValidators.Number.getType()])}stringVariationDetail(e,t,i){return this._typedEval(e,t,i,this._eventFactoryWithReasons,"LDClient.stringVariationDetail",e=>[Yi.TypeValidators.String.is(e),Yi.TypeValidators.String.getType()])}jsonVariationDetail(e,t,i){var r,s,n;return this._hookRunner.withEvaluationSeries(e,t,i,"LDClient.jsonVariationDetail",()=>new Promise(r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryWithReasons,e=>{r(e.detail)})}),null===(n=null===(s=(r=this._featureStore).getInitMetaData)||void 0===s?void 0:s.call(r))||void 0===n?void 0:n.environmentId)}async _migrationVariationInternal(e,t,i){var r;const s=await new Promise(r=>{this._evaluateIfPossible(e,t,i,this._eventFactoryWithReasons,({detail:t},s)=>{if((0,Qi.IsMigrationStage)(t.value))r({detail:t,flag:s});else{const t=new Error(`Unrecognized MigrationState for "${e}"; returning default value.`);this._onError(t);const n={kind:"ERROR",errorKind:Dr.WrongType};r({detail:{value:i,reason:n},flag:s})}})}),{detail:n,flag:a}=s,o=null===(r=null==a?void 0:a.migration)||void 0===r?void 0:r.checkRatio,l=null==a?void 0:a.samplingRatio;return{detail:n,migration:{value:n.value,tracker:new wr.default(e,t,i,n.value,n.reason,o,null===n.variationIndex?void 0:n.variationIndex,null==a?void 0:a.version,l,this._logger)}}}async migrationVariation(e,t,i){var r,s,n;return(await this._hookRunner.withEvaluationSeriesExtraDetail(e,t,i,"LDClient.migrationVariation",()=>this._migrationVariationInternal(e,t,i),null===(n=null===(s=(r=this._featureStore).getInitMetaData)||void 0===s?void 0:s.call(r))||void 0===n?void 0:n.environmentId)).migration}allFlagsState(e,t,i){var r,s,n;if(this._config.offline){null===(r=this._logger)||void 0===r||r.info("allFlagsState() called in offline mode. Returning empty state.");const e=new mr.default(!1,!1).build();return null==i||i(null,e),Promise.resolve(e)}const a=Yi.Context.fromLDContext(e);return a.valid?new Promise(e=>{const r=r=>this._featureStore.all(Er.default.Features,s=>{const n=new mr.default(r,!!(null==t?void 0:t.withReasons)),o=!!(null==t?void 0:t.clientSideOnly),l=!!(null==t?void 0:t.detailsOnlyForTrackedFlags);(0,gr.allAsync)(Object.values(s),(e,t)=>{var i;const r=e;!o||(null===(i=r.clientSideAvailability)||void 0===i?void 0:i.usingEnvironmentId)?this._evaluator.evaluateCb(r,a,e=>{var i;e.isError&&this._onError(new Error(`Error for feature flag "${r.key}" while evaluating all flags: ${e.message}`));const s=(0,yr.default)(r,e.detail.reason);n.addFlag(r,e.detail.value,null!==(i=e.detail.variationIndex)&&void 0!==i?i:void 0,e.detail.reason,r.trackEvents||s,s,l,e.prerequisites),t(!0)}):t(!0)},()=>{const t=n.build();null==i||i(null,t),e(t)})});this.initialized()?r(!0):this._featureStore.initialized(e=>{var t,i;let s=!0;e?null===(t=this._logger)||void 0===t||t.warn("Called allFlagsState before client initialization; using last known values from data store"):(null===(i=this._logger)||void 0===i||i.warn("Called allFlagsState before client initialization. Data store not available; returning empty state"),s=!1),r(s)})}):(null===(s=this._logger)||void 0===s||s.info(`${null!==(n=a.message)&&void 0!==n?n:"Invalid context."}. Returning empty state.`),Promise.resolve(new mr.default(!1,!1).build()))}secureModeHash(e){const t=Yi.Context.fromLDContext(e),i=t.valid?t.canonicalKey:void 0;if(!this._platform.crypto.createHmac)throw new Error("Platform must implement createHmac");const r=this._platform.crypto.createHmac("sha256",this._sdkKey);if(void 0===i)throw new Yi.LDClientError("Could not generate secure mode hash for invalid context");return r.update(i),r.digest("hex")}close(){var e,t;this._eventProcessor.close(),null===(e=this._updateProcessor)||void 0===e||e.close(),null===(t=this._dataSource)||void 0===t||t.stop(),this._featureStore.close(),this._bigSegmentsManager.close()}isOffline(){return this._config.offline}track(e,t,i,r){var s,n;const a=Yi.Context.fromLDContext(t);a.valid?(void 0===r||Yi.TypeValidators.Number.is(r)||null===(n=this._logger)||void 0===n||n.warn(Or.invalidMetricValue(typeof r)),this._eventProcessor.sendEvent(this._eventFactoryDefault.customEvent(e,a,i,r))):null===(s=this._logger)||void 0===s||s.warn(Or.MissingContextKeyNoEvent)}trackMigration(e){const t=(0,Sr.default)(e);t&&this._eventProcessor.sendEvent(t)}identify(e){var t;const i=Yi.Context.fromLDContext(e);i.valid?this._eventProcessor.sendEvent(this._eventFactoryDefault.identifyEvent(i)):null===(t=this._logger)||void 0===t||t.warn(Or.MissingContextKeyNoEvent)}async flush(e){try{await this._eventProcessor.flush()}catch(t){return null==e?void 0:e(t,!1)}return null==e?void 0:e(null,!0)}addHook(e){this._hookRunner.addHook(e)}_variationInternal(e,t,i,r,s,n){var a,o;if(this._config.offline)return null===(a=this._logger)||void 0===a||a.info("Variation called in offline mode. Returning default value."),void s(_r.default.forError(Dr.ClientNotReady,void 0,i));const l=Yi.Context.fromLDContext(t);if(!l.valid)return this._onError(new Yi.LDClientError(`${null!==(o=l.message)&&void 0!==o?o:"Context not valid;"} returning default value.`)),void s(_r.default.forError(Dr.UserNotSpecified,void 0,i));this._featureStore.get(Er.default.Features,e,t=>{const a=t;if(!a){const t=new Yi.LDClientError(`Unknown feature flag "${e}"; returning default value`);this._onError(t);const r=_r.default.forError(Dr.FlagNotFound,void 0,i);return this._eventProcessor.sendEvent(this._eventFactoryDefault.unknownFlagEvent(e,i,l)),void s(r)}this._evaluator.evaluateCb(a,l,t=>{var o;if(void 0!==t.detail.variationIndex&&null!==t.detail.variationIndex||(null===(o=this._logger)||void 0===o||o.debug("Result value is null in variation"),t.setDefault(i)),n){const[o,c]=n(t.detail.value);if(!o){const t=_r.default.forError(Dr.WrongType,`Did not receive expected type (${c}) evaluating feature flag "${e}"`,i);return this._sendEvalEvent(t,r,a,l,i),void s(t,a)}}this._sendEvalEvent(t,r,a,l,i),s(t,a)},r)})}_sendEvalEvent(e,t,i,r,s){var n;null===(n=e.events)||void 0===n||n.forEach(e=>{this._eventProcessor.sendEvent(Object.assign({},e))}),this._eventProcessor.sendEvent(t.evalEventServer(i,r,e.detail,s,void 0))}_evaluateIfPossible(e,t,i,r,s,n){this.initialized()?this._variationInternal(e,t,i,r,s,n):this._featureStore.initialized(a=>{var o,l;if(a)return null===(o=this._logger)||void 0===o||o.warn("Variation called before LaunchDarkly client initialization completed (did you wait for the 'ready' event?) - using last known values from feature store"),void this._variationInternal(e,t,i,r,s,n);null===(l=this._logger)||void 0===l||l.warn("Variation called before LaunchDarkly client initialization completed (did you wait for the'ready' event?) - using default value"),s(_r.default.forError(Dr.ClientNotReady,void 0,i))})}_dataSourceErrorHandler(e){var t;const i=401===e.code?new Error("Authentication failed. Double check your SDK key."):e;this._onError(i),this._onFailed(i),this.initialized()||(this._initState=Pr.Failed,this._rejectionReason=i,null===(t=this._initReject)||void 0===t||t.call(this,i))}_initSuccess(){var e;this.initialized()||(this._initState=Pr.Initialized,null===(e=this._initResolve)||void 0===e||e.call(this,this),this._onReady())}_clientWithTimeout(e,t,i){if(t){const r=(0,Yi.cancelableTimedPromise)(t,"waitForInitialization");return Promise.race([e.then(()=>this),r.promise.then(()=>this)]).catch(e=>{throw e instanceof Yi.LDTimeoutError&&(null==i||i.error(e.message)),e}).finally(()=>r.cancel())}return e}};var Cr={};Object.defineProperty(Cr,"__esModule",{value:!0}),Cr.createMigration=Cr.LDMigrationError=Cr.LDMigrationSuccess=void 0;const Fr=l,Ir=C;Cr.LDMigrationSuccess=function(e){return{success:!0,result:e}},Cr.LDMigrationError=function(e){return{success:!1,error:e}};class jr{constructor(e,t){var i,r;this._client=e,this._config=t,this._readTable={[Fr.LDMigrationStage.Off]:async e=>this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),[Fr.LDMigrationStage.DualWrite]:async e=>this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),[Fr.LDMigrationStage.Shadow]:async e=>{const{fromOld:t,fromNew:i}=await this._doRead(e);return this._trackConsistency(e,t,i),t},[Fr.LDMigrationStage.Live]:async e=>{const{fromNew:t,fromOld:i}=await this._doRead(e);return this._trackConsistency(e,i,t),t},[Fr.LDMigrationStage.RampDown]:async e=>this._doSingleOp(e,"new",this._config.readNew.bind(this._config)),[Fr.LDMigrationStage.Complete]:async e=>this._doSingleOp(e,"new",this._config.readNew.bind(this._config))},this._writeTable={[Fr.LDMigrationStage.Off]:async e=>({authoritative:await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config))}),[Fr.LDMigrationStage.DualWrite]:async e=>{const t=await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config))}},[Fr.LDMigrationStage.Shadow]:async e=>{const t=await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config))}},[Fr.LDMigrationStage.Live]:async e=>{const t=await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config))}},[Fr.LDMigrationStage.RampDown]:async e=>{const t=await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config));if(!t.success)return{authoritative:t};return{authoritative:t,nonAuthoritative:await this._doSingleOp(e,"old",this._config.writeOld.bind(this._config))}},[Fr.LDMigrationStage.Complete]:async e=>({authoritative:await this._doSingleOp(e,"new",this._config.writeNew.bind(this._config))})},this._config.execution?this._execution=this._config.execution:this._execution=new Ir.LDConcurrentExecution,this._latencyTracking=null===(i=this._config.latencyTracking)||void 0===i||i,this._errorTracking=null===(r=this._config.errorTracking)||void 0===r||r}async read(e,t,i,r){const s=await this._client.migrationVariation(e,t,i),n=await this._readTable[s.value]({payload:r,tracker:s.tracker});return s.tracker.op("read"),this._sendEvent(s.tracker),n}async write(e,t,i,r){const s=await this._client.migrationVariation(e,t,i),n=await this._writeTable[s.value]({payload:r,tracker:s.tracker});return s.tracker.op("write"),this._sendEvent(s.tracker),n}_sendEvent(e){const t=e.createEvent();t&&this._client.trackMigration(t)}_trackConsistency(e,t,i){this._config.check&&t.success&&i.success&&e.tracker.consistency(()=>this._config.check(t.result,i.result))}async _readSequentialFixed(e){return{fromOld:await this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),fromNew:await this._doSingleOp(e,"new",this._config.readNew.bind(this._config))}}async _readConcurrent(e){const t=this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),i=this._doSingleOp(e,"new",this._config.readNew.bind(this._config)),[r,s]=await Promise.all([t,i]);return{fromOld:r,fromNew:s}}async _readSequentialRandom(e){if(0===Math.floor(2*Math.random())){return{fromOld:await this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),fromNew:await this._doSingleOp(e,"new",this._config.readNew.bind(this._config))}}const t=await this._doSingleOp(e,"new",this._config.readNew.bind(this._config));return{fromOld:await this._doSingleOp(e,"old",this._config.readOld.bind(this._config)),fromNew:t}}async _doRead(e){var t;if((null===(t=this._execution)||void 0===t?void 0:t.type)===Ir.LDExecution.Serial){return this._execution.ordering===Ir.LDExecutionOrdering.Fixed?this._readSequentialFixed(e):this._readSequentialRandom(e)}return this._readConcurrent(e)}async _doSingleOp(e,t,i){e.tracker.invoked(t);const r=await this._trackLatency(e.tracker,t,()=>async function(e){try{return await e()}catch(e){return{success:!1,error:e}}}(()=>i(e.payload)));return!r.success&&this._errorTracking&&e.tracker.error(t),Object.assign({origin:t},r)}async _trackLatency(e,t,i){if(!this._latencyTracking)return i();let r,s,n;"undefined"!=typeof performance?(r=performance.now(),n=await i(),s=performance.now()):(r=Date.now(),n=await i(),s=Date.now());const a=s-r;return e.latency(t,a),n}}Cr.createMigration=function(e,t){return new jr(e,t)};var Rr={},Ar={},Lr={},Vr={};Object.defineProperty(Vr,"__esModule",{value:!0});Vr.default=class{constructor(e,t,i,r){this._filesystem=e,this._paths=t,this._watch=i,this._callback=r,this._watchers=[],this._fileData={},this._fileTimestamps={}}async loadAndWatch(){const e=this._paths.map(async e=>({data:await this._filesystem.readFile(e),path:e,timeStamp:await this._filesystem.getFileTimestamp(e)})),t=await Promise.all(e);t.forEach(e=>{this._fileData[e.path]=e.data,this._fileTimestamps[e.path]=e.timeStamp}),this._callback(t),this._watch&&this._paths.forEach(e=>{const t=this._filesystem.watch(e,async(e,t)=>{const i=await this._filesystem.getFileTimestamp(t);if(i===this._fileTimestamps[t])return;this._fileTimestamps[t]=i;const r=await this._filesystem.readFile(t);this._fileData[t]=r,this._debounceCallback()});this._watchers.push(t)})}close(){this._watchers.forEach(e=>e.close())}_debounceCallback(){this._debounceHandle||(this._debounceHandle=setTimeout(()=>{this._debounceHandle=void 0,this._callback(Object.entries(this._fileData).reduce((e,[t,i])=>(e.push({path:t,data:i}),e),[]))},10))}},Object.defineProperty(Lr,"__esModule",{value:!0});const Nr=de,Kr=he,$r=Vr;Lr.default=class{constructor(e,t,i,r=()=>{},s){var n;this._featureStore=i,this._initSuccessHandler=r,this._errorHandler=s,this._allData={},this._fileLoader=new $r.default(t,e.paths,null!==(n=e.autoUpdate)&&void 0!==n&&n,e=>{var t,i;try{this._processFileData(e)}catch(e){null===(t=this._errorHandler)||void 0===t||t.call(this,e),null===(i=this._logger)||void 0===i||i.error(`Error processing files: ${e}`)}}),this._logger=e.logger,this._yamlParser=e.yamlParser}start(){(async()=>{var e;try{await this._fileLoader.loadAndWatch()}catch(t){null===(e=this._errorHandler)||void 0===e||e.call(this,t)}})()}stop(){this._fileLoader.close()}close(){this.stop()}_addItem(e,t){if(this._allData[e.namespace]||(this._allData[e.namespace]={}),this._allData[e.namespace][t.key])throw new Error(`found duplicate key: "${t.key}"`);this._allData[e.namespace][t.key]=t}_processFileData(e){const t=this._allData;this._allData={},e.forEach(e=>{let i;if(e.path.endsWith(".yml")||e.path.endsWith(".yaml")){if(!this._yamlParser)throw new Error(`Attempted to parse yaml file (${e.path}) without parser.`);i=this._yamlParser(e.data)}else i=JSON.parse(e.data);this._processParsedData(i,t)}),this._featureStore.init(this._allData,()=>{this._initSuccessHandler(),this._initSuccessHandler=()=>{}})}_processParsedData(e,t){Object.keys(e.flags||{}).forEach(t=>{(0,Nr.processFlag)(e.flags[t]),this._addItem(Kr.default.Features,e.flags[t])}),Object.keys(e.flagValues||{}).forEach(i=>{var r,s;const n=null===(r=t[Kr.default.Features.namespace])||void 0===r?void 0:r[i];let{version:a}=null!=n?n:{version:1};n&&JSON.stringify(e.flagValues[i])!==JSON.stringify(null===(s=null==n?void 0:n.variations)||void 0===s?void 0:s[0])&&(a+=1);const o=function(e,t,i){return{key:e,on:!0,fallthrough:{variation:0},variations:[t],version:i}}(i,e.flagValues[i],a);(0,Nr.processFlag)(o),this._addItem(Kr.default.Features,o)}),Object.keys(e.segments||{}).forEach(t=>{(0,Nr.processSegment)(e.segments[t]),this._addItem(Kr.default.Segments,e.segments[t])})}},Object.defineProperty(Ar,"__esModule",{value:!0});const zr=Lr;Ar.default=class{constructor(e){this._options=e}create(e,t,i,r){const s={paths:this._options.paths,autoUpdate:this._options.autoUpdate,logger:this._options.logger||e.basicConfiguration.logger,yamlParser:this._options.yamlParser};return new zr.default(s,e.platform.fileSystem,t,i,r)}getFactory(){return(e,t,i,r)=>this.create(e,t,i,r)}};var Ur={},Br={},Hr={},qr={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.variationForBoolean=e.FALSE_VARIATION_INDEX=e.TRUE_VARIATION_INDEX=void 0,e.TRUE_VARIATION_INDEX=0,e.FALSE_VARIATION_INDEX=1,e.variationForBoolean=function(t){return t?e.TRUE_VARIATION_INDEX:e.FALSE_VARIATION_INDEX}}(qr);var Wr={};Object.defineProperty(Wr,"__esModule",{value:!0});const Jr=o,Gr=qr;class Xr{constructor(e,t,i){this._flagBuilder=e,this._clauses=[],t&&(this._clauses=[...t]),void 0!==i&&(this._variation=i)}andMatch(e,t,...i){return this._clauses.push({contextKind:e,attribute:t,attributeReference:new Jr.AttributeReference(t),op:"in",values:i,negate:!1}),this}andNotMatch(e,t,...i){return this._clauses.push({contextKind:e,attribute:t,attributeReference:new Jr.AttributeReference(t),op:"in",values:i,negate:!0}),this}thenReturn(e){return Jr.TypeValidators.Boolean.is(e)?(this._flagBuilder.booleanFlag(),this.thenReturn((0,Gr.variationForBoolean)(e))):(this._variation=e,this._flagBuilder.addRule(this),this._flagBuilder)}build(e){return{id:`rule${e}`,variation:this._variation,clauses:this._clauses}}clone(){return new Xr(this._flagBuilder,this._clauses,this._variation)}}Wr.default=Xr,Object.defineProperty(Hr,"__esModule",{value:!0});const Yr=o,Qr=qr,Zr=Wr;class es{constructor(e,t){this._key=e,this._data={on:!0,variations:[]},t&&(this._data={on:t.on,variations:[...t.variations]},void 0!==t.offVariation&&(this._data.offVariation=t.offVariation),void 0!==t.fallthroughVariation&&(this._data.fallthroughVariation=t.fallthroughVariation),t.targetsByVariation&&(this._data.targetsByVariation=JSON.parse(JSON.stringify(t.targetsByVariation))),t.rules&&(this._data.rules=[],t.rules.forEach(e=>{var t;null===(t=this._data.rules)||void 0===t||t.push(e.clone())})))}get _isBooleanFlag(){return 2===this._data.variations.length&&!0===this._data.variations[Qr.TRUE_VARIATION_INDEX]&&!1===this._data.variations[Qr.FALSE_VARIATION_INDEX]}booleanFlag(){return this._isBooleanFlag?this:this.variations(!0,!1).fallthroughVariation(Qr.TRUE_VARIATION_INDEX).offVariation(Qr.FALSE_VARIATION_INDEX)}variations(...e){return this._data.variations=[...e],this}on(e){return this._data.on=e,this}fallthroughVariation(e){return Yr.TypeValidators.Boolean.is(e)?this.booleanFlag().fallthroughVariation((0,Qr.variationForBoolean)(e)):(this._data.fallthroughVariation=e,this)}offVariation(e){return Yr.TypeValidators.Boolean.is(e)?this.booleanFlag().offVariation((0,Qr.variationForBoolean)(e)):(this._data.offVariation=e,this)}variationForAll(e){return this.on(!0).clearRules().clearAllTargets().fallthroughVariation(e)}valueForAll(e){return this.variations(e).variationForAll(0)}variationForUser(e,t){return this.variationForContext("user",e,t)}variationForContext(e,t,i){return Yr.TypeValidators.Boolean.is(i)?this.booleanFlag().variationForContext(e,t,(0,Qr.variationForBoolean)(i)):(this._data.targetsByVariation||(this._data.targetsByVariation={}),this._data.variations.forEach((r,s)=>{if(s===i){const i=this._data.targetsByVariation[s]||{};e in i||(i[e]=[]);-1!==i[e].indexOf(t)||i[e].push(t),this._data.targetsByVariation[s]=i}else{const i=this._data.targetsByVariation[s];if(i){const r=i[e];if(r){const s=r.indexOf(t);-1!==s&&(r.splice(s,1),r.length||delete i[e])}Object.keys(i).length||delete this._data.targetsByVariation[s]}}}),this)}clearRules(){return delete this._data.rules,this}clearAllTargets(){return delete this._data.targetsByVariation,this}ifMatch(e,t,...i){return new Zr.default(this).andMatch(e,t,...i)}ifNotMatch(e,t,...i){return new Zr.default(this).andNotMatch(e,t,...i)}checkRatio(e){var t;return this._data.migration=null!==(t=this._data.migration)&&void 0!==t?t:{},this._data.migration.checkRatio=e,this}samplingRatio(e){return this._data.samplingRatio=e,this}addRule(e){this._data.rules||(this._data.rules=[]),this._data.rules.push(e)}build(e){const t={key:this._key,version:e,on:this._data.on,offVariation:this._data.offVariation,fallthrough:{variation:this._data.fallthroughVariation},variations:[...this._data.variations],migration:this._data.migration,samplingRatio:this._data.samplingRatio};if(this._data.targetsByVariation){const e=[],i=[];Object.entries(this._data.targetsByVariation).forEach(([t,r])=>{Object.entries(r).forEach(([r,s])=>{const n=parseInt(t,10);e.push({contextKind:r,values:"user"===r?[]:s,variation:n}),"user"===r&&i.push({values:s,variation:n})})}),t.targets=i,t.contextTargets=e}return this._data.rules&&(t.rules=this._data.rules.map((e,t)=>e.build(String(t)))),t}clone(){return new es(this._key,this._data)}getKey(){return this._key}}Hr.default=es;var ts={};Object.defineProperty(ts,"__esModule",{value:!0});ts.default=class{constructor(e,t,i,r,s){this._featureStore=e,this._onStop=r,this._listeners=s,this._flags=Object.assign({},t),this._segments=Object.assign({},i)}async start(){this._listeners.forEach(({processJson:e})=>{e({data:{flags:this._flags,segments:this._segments}})})}stop(){this._onStop(this)}close(){this.stop()}async upsert(e,t){return this._featureStore.upsert(e,t)}},Object.defineProperty(Br,"__esModule",{value:!0});const is=ue,rs=Ae,ss=de,ns=he,as=Hr,os=ts;Br.default=class{constructor(){this._currentFlags={},this._currentSegments={},this._dataSources=[],this._flagBuilders={}}getFactory(){return(e,t,i,r)=>{const s=(0,is.createStreamListeners)(t,e.basicConfiguration.logger,{put:i}),n=new os.default(new rs.default(t),this._currentFlags,this._currentSegments,e=>{this._dataSources.splice(this._dataSources.indexOf(e))},s);return this._dataSources.push(n),n}}flag(e){return this._flagBuilders[e]?this._flagBuilders[e].clone():new as.default(e).booleanFlag()}update(e){const t=e.getKey(),i=this._currentFlags[t],r=i?i.version:0,s=e.build(r+1);return this._currentFlags[t]=s,this._flagBuilders[t]=e.clone(),Promise.all(this._dataSources.map(e=>e.upsert(ns.default.Features,s)))}usePreconfiguredFlag(e){const t=JSON.parse(JSON.stringify(e)),i=this._currentFlags[t.key],r=Object.assign(Object.assign({},t),{version:i?i.version+1:t.version});return(0,ss.processFlag)(r),this._currentFlags[t.key]=r,Promise.all(this._dataSources.map(e=>e.upsert(ns.default.Features,r)))}usePreconfiguredSegment(e){const t=JSON.parse(JSON.stringify(e)),i=this._currentSegments[t.key],r=Object.assign(Object.assign({},t),{version:i?i.version+1:t.version});return(0,ss.processSegment)(r),this._currentSegments[t.key]=r,Promise.all(this._dataSources.map(e=>e.upsert(ns.default.Segments,r)))}},Object.defineProperty(Ur,"__esModule",{value:!0}),Ur.TestDataRuleBuilder=Ur.TestDataFlagBuilder=Ur.TestData=void 0;const ls=Br;Ur.TestData=ls.default;const cs=Hr;Ur.TestDataFlagBuilder=cs.default;const us=Wr;Ur.TestDataRuleBuilder=us.default,function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.FileDataSourceFactory=void 0;const s=Ar;e.FileDataSourceFactory=s.default,i(Ur,e),i(N,e)}(Rr);var ds={},hs={};Object.defineProperty(hs,"__esModule",{value:!0});hs.default=class{constructor(e,t){this.handlers={},this.closed=!1,this.url=e,this.options=t}addEventListener(e,t){this.handlers[e]=t}close(){this.closed=!0}simulateError(e){this.options.errorFilter(e)||(this.closed=!0)}},Object.defineProperty(ds,"__esModule",{value:!0}),ds.NullEventSource=void 0;const gs=hs;ds.NullEventSource=gs.default;var _s={};Object.defineProperty(_s,"__esModule",{value:!0}),_s.TtlCache=void 0;const vs=ze;_s.TtlCache=vs.default,function(e){var t=r&&r.__createBinding||(Object.create?function(e,t,i,r){void 0===r&&(r=i);var s=Object.getOwnPropertyDescriptor(t,i);s&&!("get"in s?!t.__esModule:s.writable||s.configurable)||(s={enumerable:!0,get:function(){return t[i]}}),Object.defineProperty(e,r,s)}:function(e,t,i,r){void 0===r&&(r=i),e[r]=t[i]}),i=r&&r.__exportStar||function(e,i){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(i,r)||t(i,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.createMigration=e.LDMigrationSuccess=e.LDMigrationError=e.BigSegmentStoreStatusProviderImpl=e.LDClientImpl=e.internalServer=e.platform=e.integrations=void 0;const s=n;e.BigSegmentStoreStatusProviderImpl=s.default;const c=a;e.LDClientImpl=c.default;const u=Cr;Object.defineProperty(e,"createMigration",{enumerable:!0,get:function(){return u.createMigration}}),Object.defineProperty(e,"LDMigrationError",{enumerable:!0,get:function(){return u.LDMigrationError}}),Object.defineProperty(e,"LDMigrationSuccess",{enumerable:!0,get:function(){return u.LDMigrationSuccess}}),e.integrations=Rr,e.platform=o,i(l,e),i(Re,e),i(ds,e),i(o,e),e.internalServer=_s}(s);class fs{constructor(e){let t;switch(e){case"sha1":t=i.algo.SHA1;break;case"sha256":t=i.algo.SHA256;break;default:throw new Error("unsupported hash algorithm. Only sha1 and sha256 are supported.")}this._cryptoJSHasher=t.create()}digest(e){const t=this._cryptoJSHasher.finalize();let r;switch(e){case"base64":r=i.enc.Base64;break;case"hex":r=i.enc.Hex;break;default:throw new Error("unsupported output encoding. Only base64 and hex are supported.")}return t.toString(r)}update(e){return this._cryptoJSHasher.update(e),this}}class ps{constructor(e,t){let r;switch(e){case"sha1":r=i.algo.SHA1;break;case"sha256":r=i.algo.SHA256;break;default:throw new Error("unsupported hash algorithm. Only sha1 and sha256 are supported.")}this._cryptoJSHmac=i.algo.HMAC.create(r,t)}digest(e){const t=this._cryptoJSHmac.finalize();if("base64"===e)return t.toString(i.enc.Base64);if("hex"===e)return t.toString(i.enc.Hex);throw new Error("unsupported output encoding. Only base64 and hex are supported.")}update(e){return this._cryptoJSHmac.update(e),this}}class ys{createHash(e){return new fs(e)}createHmac(e,t){return new ps(e,t)}randomUUID(){return crypto.randomUUID()}}class ms{fetch(e,t={}){return fetch(e,t)}createEventSource(e,t){return new s.NullEventSource(e,t)}getEventSourceCapabilities(){return{readTimeout:!1,headers:!1,customMethod:!1}}}class bs{constructor(e){this.crypto=new ys,this.requests=new ms,this.info=e}}const Ss={stream:!1,sendEvents:!1,useLdd:!0,diagnosticOptOut:!0,logger:s.BasicLogger.get()};class ws extends s.LDClientImpl{constructor(t,i,r){const n=new e,a=new bs(i),o={analyticsEventPath:`/events/bulk/${t}`,diagnosticEventPath:`/events/diagnostic/${t}`,includeAuthorizationHeader:!1},l=(e=>Object.assign(Object.assign({},Ss),e))(r);var c,u;super(t,a,l,(c=n,u=l.logger,{onError:e=>{c.listenerCount("error")?c.emit("error",e):null==u||u.error(e.message)},onFailed:e=>{c.emit("failed",e)},onReady:()=>{c.emit("ready")},onUpdate:s.noop,hasEventListeners:()=>!1}),o),this.emitter=n}}class ks{constructor(e,t,i,r,n){this._edgeProvider=e,this._description=i,this._logger=r,this._cache=n,this.delete=s.noop,this.upsert=s.noop,this._rootKey=`LD-Env-${t}`}async get(e,t,i){const{namespace:r}=e,s="features"===r?"flags":r;this._logger.debug(`Requesting ${t} from ${this._rootKey}.${s}`);try{const e=await this._getStorePayload();switch(r){case"features":i(e.flags[t]);break;case"segments":i(e.segments[t]);break;default:i(null)}}catch(e){this._logger.error(e),i(null)}}async all(e,t=s.noop){const{namespace:i}=e,r="features"===i?"flags":i;this._logger.debug(`Requesting all from ${this._rootKey}.${r}`);try{const e=await this._getStorePayload();switch(i){case"features":t(e.flags);break;case"segments":t(e.segments);break;default:t({})}}catch(e){this._logger.error(e),t({})}}async _getStorePayload(){var e,t;let i=null===(e=this._cache)||void 0===e?void 0:e.get(this._rootKey);if(void 0!==i)return i;const r=await this._edgeProvider.get(this._rootKey);if(!r)throw new Error(`${this._rootKey} is not found in KV.`);if(i=s.deserializePoll(r),!i)throw new Error(`Error deserializing ${this._rootKey}`);return null===(t=this._cache)||void 0===t||t.set(this._rootKey,i),i}async initialized(e=s.noop){const t=null!==await this._edgeProvider.get(this._rootKey);this._logger.debug(`Is ${this._rootKey} initialized? ${t}`),e(t)}init(e,t){t()}getDescription(){return this._description}close(){var e;return null===(e=this._cache)||void 0===e?void 0:e.close()}}const Es=(e,t)=>{const{featureStore:i,logger:r,sendEvents:s}=t,n=function(e,t){var i={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var s=0;for(r=Object.getOwnPropertySymbols(e);s<r.length;s++)t.indexOf(r[s])<0&&Object.prototype.propertyIsEnumerable.call(e,r[s])&&(i[r[s]]=e[r[s]])}return i}(t,["featureStore","logger","sendEvents"]);if(!e)throw new Error("You must configure the client with a client key");if(!i||"object"!=typeof i||!i.get)throw new Error("You must configure the client with a feature store");if(!r)throw new Error("You must configure the client with a logger");if("{}"!==JSON.stringify(n))throw new Error(`Invalid configuration: ${Object.keys(n).toString()} not supported`);return!0};class Os{platformData(){return{name:"Cloudflare"}}sdkData(){return{name:"@launchdarkly/cloudflare-server-sdk",version:"2.7.8",userAgentBase:"CloudflareEdgeSDK"}}}var Ds=Object.defineProperty,xs=Object.getOwnPropertySymbols,Ps=Object.prototype.hasOwnProperty,Ms=Object.prototype.propertyIsEnumerable,Ts=(e,t,i)=>t in e?Ds(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i;const Cs=(e,t,i={})=>{var r;const n=null!=(r=i.logger)?r:s.BasicLogger.get(),a=((e,t)=>{var i={};for(var r in e)Ps.call(e,r)&&t.indexOf(r)<0&&(i[r]=e[r]);if(null!=e&&xs)for(var r of xs(e))t.indexOf(r)<0&&Ms.call(e,r)&&(i[r]=e[r]);return i})(i,["cache"]),o=i.cache?new s.internalServer.TtlCache(i.cache):void 0;return((e,t,i)=>(Es(e,i),new ws(e,t,i)))(e,new Os,((e,t)=>{for(var i in t||(t={}))Ps.call(t,i)&&Ts(e,i,t[i]);if(xs)for(var i of xs(t))Ms.call(t,i)&&Ts(e,i,t[i]);return e})({featureStore:new ks(t,e,"Cloudflare",n,o),logger:n},a))};var Fs=s.BasicLogger,Is=s.IsMigrationStage,js=s.LDConcurrentExecution,Rs=s.LDMigrationStage,As=s.LDMigrationSuccess,Ls=s.createMigration,Vs=s.integrations;export{Fs as BasicLogger,ks as EdgeFeatureStore,Is as IsMigrationStage,js as LDConcurrentExecution,Rs as LDMigrationStage,As as LDMigrationSuccess,Ls as createMigration,Cs as init,Vs as integrations};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|