@openfeature/web-sdk 1.6.1 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";var OpenFeature=(()=>{var Ae=Object.create;var j=Object.defineProperty,Oe=Object.defineProperties,Te=Object.getOwnPropertyDescriptor,be=Object.getOwnPropertyDescriptors,De=Object.getOwnPropertyNames,ve=Object.getOwnPropertySymbols,ce=Object.getPrototypeOf,pe=Object.prototype.hasOwnProperty,ke=Object.prototype.propertyIsEnumerable,Se=Reflect.get;var ue=(i,e,t)=>e in i?j(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,P=(i,e)=>{for(var t in e||(e={}))pe.call(e,t)&&ue(i,t,e[t]);if(ve)for(var t of ve(e))ke.call(e,t)&&ue(i,t,e[t]);return i},k=(i,e)=>Oe(i,be(e));var Ne=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Le=(i,e)=>{for(var t in e)j(i,t,{get:e[t],enumerable:!0})},ge=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of De(e))!pe.call(i,o)&&o!==t&&j(i,o,{get:()=>e[o],enumerable:!(r=Te(e,o))||r.enumerable});return i};var He=(i,e,t)=>(t=i!=null?Ae(ce(i)):{},ge(e||!i||!i.__esModule?j(t,"default",{value:i,enumerable:!0}):t,i)),Fe=i=>ge(j({},"__esModule",{value:!0}),i);var Ee=(i,e,t)=>Se(ce(i),t,e);var m=(i,e,t)=>new Promise((r,o)=>{var a=s=>{try{d(t.next(s))}catch(l){o(l)}},n=s=>{try{d(t.throw(s))}catch(l){o(l)}},d=s=>s.done?r(s.value):Promise.resolve(s.value).then(a,n);d((t=t.apply(i,e)).next())});var Ce=Ne((zr,ae)=>{"use strict";var Ge=Object.prototype.hasOwnProperty,y="~";function X(){}Object.create&&(X.prototype=Object.create(null),new X().__proto__||(y=!1));function je(i,e,t){this.fn=i,this.context=e,this.once=t||!1}function Pe(i,e,t,r,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var a=new je(t,r||i,o),n=y?y+e:e;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],a]:i._events[n].push(a):(i._events[n]=a,i._eventsCount++),i}function Q(i,e){--i._eventsCount===0?i._events=new X:delete i._events[e]}function f(){this._events=new X,this._eventsCount=0}f.prototype.eventNames=function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)Ge.call(t,r)&&e.push(y?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};f.prototype.listeners=function(e){var t=y?y+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,a=r.length,n=new Array(a);o<a;o++)n[o]=r[o].fn;return n};f.prototype.listenerCount=function(e){var t=y?y+e:e,r=this._events[t];return r?r.fn?1:r.length:0};f.prototype.emit=function(e,t,r,o,a,n){var d=y?y+e:e;if(!this._events[d])return!1;var s=this._events[d],l=arguments.length,c,v;if(s.fn){switch(s.once&&this.removeListener(e,s.fn,void 0,!0),l){case 1:return s.fn.call(s.context),!0;case 2:return s.fn.call(s.context,t),!0;case 3:return s.fn.call(s.context,t,r),!0;case 4:return s.fn.call(s.context,t,r,o),!0;case 5:return s.fn.call(s.context,t,r,o,a),!0;case 6:return s.fn.call(s.context,t,r,o,a,n),!0}for(v=1,c=new Array(l-1);v<l;v++)c[v-1]=arguments[v];s.fn.apply(s.context,c)}else{var C=s.length,u;for(v=0;v<C;v++)switch(s[v].once&&this.removeListener(e,s[v].fn,void 0,!0),l){case 1:s[v].fn.call(s[v].context);break;case 2:s[v].fn.call(s[v].context,t);break;case 3:s[v].fn.call(s[v].context,t,r);break;case 4:s[v].fn.call(s[v].context,t,r,o);break;default:if(!c)for(u=1,c=new Array(l-1);u<l;u++)c[u-1]=arguments[u];s[v].fn.apply(s[v].context,c)}}return!0};f.prototype.on=function(e,t,r){return Pe(this,e,t,r,!1)};f.prototype.once=function(e,t,r){return Pe(this,e,t,r,!0)};f.prototype.removeListener=function(e,t,r,o){var a=y?y+e:e;if(!this._events[a])return this;if(!t)return Q(this,a),this;var n=this._events[a];if(n.fn)n.fn===t&&(!o||n.once)&&(!r||n.context===r)&&Q(this,a);else{for(var d=0,s=[],l=n.length;d<l;d++)(n[d].fn!==t||o&&!n[d].once||r&&n[d].context!==r)&&s.push(n[d]);s.length?this._events[a]=s.length===1?s[0]:s:Q(this,a)}return this};f.prototype.removeAllListeners=function(e){var t;return e?(t=y?y+e:e,this._events[t]&&Q(this,t)):(this._events=new X,this._eventsCount=0),this};f.prototype.off=f.prototype.removeListener;f.prototype.addListener=f.prototype.on;f.prefixed=y;f.EventEmitter=f;typeof ae!="undefined"&&(ae.exports=f)});var Ke={};Le(Ke,{AllProviderEvents:()=>A,AllProviderStatus:()=>w,ClientProviderEvents:()=>A,ClientProviderStatus:()=>w,DefaultLogger:()=>I,ErrorCode:()=>h,FlagNotFoundError:()=>N,GeneralError:()=>T,GenericEventEmitter:()=>J,InMemoryProvider:()=>de,InvalidContextError:()=>K,LOG_LEVELS:()=>he,MapHookData:()=>Y,NOOP_PROVIDER:()=>q,OpenFeature:()=>Ye,OpenFeatureAPI:()=>te,OpenFeatureCommonAPI:()=>z,OpenFeatureError:()=>g,OpenFeatureEventEmitter:()=>S,ParseError:()=>U,ProviderEvents:()=>A,ProviderFatalError:()=>L,ProviderNotReadyError:()=>H,ProviderStatus:()=>w,ProviderWrapper:()=>M,SafeLogger:()=>b,ServerProviderEvents:()=>fe,ServerProviderStatus:()=>me,StandardResolutionReasons:()=>R,TargetingKeyMissingError:()=>W,TelemetryAttribute:()=>_,TelemetryFlagMetadata:()=>$,TypeMismatchError:()=>F,createEvaluationEvent:()=>Me,instantiateErrorByErrorCode:()=>oe,isObject:()=>ye,isString:()=>xe,objectOrUndefined:()=>x,statusMatchesEvent:()=>B,stringOrUndefined:()=>D});var Y=class{constructor(){this.data=new Map}set(e,t){this.data.set(e,t)}get(e){return this.data.get(e)}has(e){return this.data.has(e)}delete(e){return this.data.delete(e)}clear(){this.data.clear()}};var R={STATIC:"STATIC",DEFAULT:"DEFAULT",TARGETING_MATCH:"TARGETING_MATCH",SPLIT:"SPLIT",CACHED:"CACHED",DISABLED:"DISABLED",UNKNOWN:"UNKNOWN",STALE:"STALE",ERROR:"ERROR"},h=(s=>(s.PROVIDER_NOT_READY="PROVIDER_NOT_READY",s.PROVIDER_FATAL="PROVIDER_FATAL",s.FLAG_NOT_FOUND="FLAG_NOT_FOUND",s.PARSE_ERROR="PARSE_ERROR",s.TYPE_MISMATCH="TYPE_MISMATCH",s.TARGETING_KEY_MISSING="TARGETING_KEY_MISSING",s.INVALID_CONTEXT="INVALID_CONTEXT",s.GENERAL="GENERAL",s))(h||{});var g=class i extends Error{constructor(e,t){super(e),Object.setPrototypeOf(this,i.prototype),this.name="OpenFeatureError",this.cause=t==null?void 0:t.cause}};var N=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="FlagNotFoundError",this.code="FLAG_NOT_FOUND"}};var T=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="GeneralError",this.code="GENERAL"}};var K=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="InvalidContextError",this.code="INVALID_CONTEXT"}};var U=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="ParseError",this.code="PARSE_ERROR"}};var L=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="ProviderFatalError",this.code="PROVIDER_FATAL"}};var H=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="ProviderNotReadyError",this.code="PROVIDER_NOT_READY"}};var W=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="TargetingKeyMissingError",this.code="TARGETING_KEY_MISSING"}};var F=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="TypeMismatchError",this.code="TYPE_MISMATCH"}};var oe=(i,e)=>{switch(i){case"FLAG_NOT_FOUND":return new N(e);case"PARSE_ERROR":return new U(e);case"TYPE_MISMATCH":return new F(e);case"TARGETING_KEY_MISSING":return new W(e);case"INVALID_CONTEXT":return new K(e);case"PROVIDER_NOT_READY":return new H(e);case"PROVIDER_FATAL":return new L(e);default:return new T(e)}};var me=(a=>(a.NOT_READY="NOT_READY",a.READY="READY",a.ERROR="ERROR",a.STALE="STALE",a.FATAL="FATAL",a))(me||{}),w=(n=>(n.NOT_READY="NOT_READY",n.READY="READY",n.ERROR="ERROR",n.STALE="STALE",n.FATAL="FATAL",n.RECONCILING="RECONCILING",n))(w||{});var fe=(o=>(o.Ready="PROVIDER_READY",o.Error="PROVIDER_ERROR",o.ConfigurationChanged="PROVIDER_CONFIGURATION_CHANGED",o.Stale="PROVIDER_STALE",o))(fe||{}),A=(n=>(n.Ready="PROVIDER_READY",n.Error="PROVIDER_ERROR",n.ConfigurationChanged="PROVIDER_CONFIGURATION_CHANGED",n.ContextChanged="PROVIDER_CONTEXT_CHANGED",n.Reconciling="PROVIDER_RECONCILING",n.Stale="PROVIDER_STALE",n))(A||{});var we={READY:"PROVIDER_READY",ERROR:"PROVIDER_ERROR",FATAL:"PROVIDER_ERROR",STALE:"PROVIDER_STALE",RECONCILING:"PROVIDER_RECONCILING",NOT_READY:void 0},B=(i,e)=>!e&&i==="PROVIDER_READY"||we[e]===i;var I=class{error(...e){console.error(...e)}warn(...e){console.warn(...e)}info(){}debug(){}};var he=["error","warn","info","debug"],b=class{constructor(e){this.fallbackLogger=new I;try{for(let t of he)if(!e[t]||typeof e[t]!="function")throw new Error(`The provided logger is missing the ${t} method.`);this.logger=e}catch(t){console.error(t),console.error("Falling back to the default logger."),this.logger=this.fallbackLogger}}error(...e){this.log("error",...e)}warn(...e){this.log("warn",...e)}info(...e){this.log("info",...e)}debug(...e){this.log("debug",...e)}log(e,...t){try{this.logger[e](...t)}catch(r){this.fallbackLogger[e](...t)}}};var J=class{constructor(e){this.globalLogger=e;this._handlers={PROVIDER_CONFIGURATION_CHANGED:new WeakMap,PROVIDER_CONTEXT_CHANGED:new WeakMap,PROVIDER_READY:new WeakMap,PROVIDER_ERROR:new WeakMap,PROVIDER_STALE:new WeakMap,PROVIDER_RECONCILING:new WeakMap}}emit(e,t){this.eventEmitter.emit(e,t)}addHandler(e,t){let r=a=>m(this,null,function*(){var n;try{yield t(a)}catch(d){(n=this._logger)==null||n.error("Error running event handler:",d)}}),o=this._handlers[e].get(t);this._handlers[e].set(t,[...o||[],r]),this.eventEmitter.on(e,r)}removeHandler(e,t){let r=this._handlers[e].get(t);if(r){let o=r.pop();o&&this.eventEmitter.removeListener(e,o)}}removeAllHandlers(e){e?this.eventEmitter.removeAllListeners(e):this.eventEmitter.removeAllListeners()}getHandlers(e){return this.eventEmitter.listeners(e)}setLogger(e){return this._eventLogger=new b(e),this}get _logger(){var e,t;return(t=this._eventLogger)!=null?t:(e=this.globalLogger)==null?void 0:e.call(this)}};var _={KEY:"feature_flag.key",ERROR_CODE:"error.type",ERROR_MESSAGE:"error.message",VARIANT:"feature_flag.result.variant",VALUE:"feature_flag.result.value",CONTEXT_ID:"feature_flag.context.id",REASON:"feature_flag.result.reason",PROVIDER:"feature_flag.provider.name",FLAG_SET_ID:"feature_flag.set.id",VERSION:"feature_flag.version"};var $={CONTEXT_ID:"contextId",FLAG_SET_ID:"flagSetId",VERSION:"version"};var Ie="feature_flag.evaluation";function Me(i,e){var n,d;let t={[_.KEY]:i.flagKey,[_.PROVIDER]:i.providerMetadata.name,[_.REASON]:((n=e.reason)!=null?n:R.UNKNOWN).toLowerCase()};e.variant?t[_.VARIANT]=e.variant:t[_.VALUE]=e.value;let r=e.flagMetadata[$.CONTEXT_ID]||i.context.targetingKey;r&&(t[_.CONTEXT_ID]=r);let o=e.flagMetadata[$.FLAG_SET_ID];o&&(t[_.FLAG_SET_ID]=o);let a=e.flagMetadata[$.VERSION];return a&&(t[_.VERSION]=a),e.reason===R.ERROR&&(t[_.ERROR_CODE]=((d=e.errorCode)!=null?d:"GENERAL").toLowerCase(),e.errorMessage&&(t[_.ERROR_MESSAGE]=e.errorMessage)),{name:Ie,attributes:t}}function xe(i){return typeof i=="string"}function D(i){return xe(i)?i:void 0}function ye(i){return typeof i=="object"}function x(i){return ye(i)?i:void 0}function ne(i){return typeof i!="undefined"&&i!==null}var M=class{constructor(e,t,r){this._provider=e;this._status=t;this._pendingContextChanges=0;var o,a,n;(o=e.events)==null||o.addHandler("PROVIDER_READY",()=>{this._status=r.READY}),(a=e.events)==null||a.addHandler("PROVIDER_STALE",()=>{this._status=r.STALE}),(n=e.events)==null||n.addHandler("PROVIDER_ERROR",d=>{(d==null?void 0:d.errorCode)==="PROVIDER_FATAL"?this._status=r.FATAL:this._status=r.ERROR})}get provider(){return this._provider}set provider(e){this._provider=e}get status(){return this._status}set status(e){this._status=e}get allContextChangesSettled(){return this._pendingContextChanges===0}incrementPendingContextChanges(){this._pendingContextChanges++}decrementPendingContextChanges(){this._pendingContextChanges--}},z=class{constructor(e){this._hooks=[];this._context={};this._logger=new I;this._clientEventHandlers=new Map;this._domainScopedContext=new Map;this._clientEvents=new Map;this._runsOn=e}addHooks(...e){return this._hooks=[...this._hooks,...e],this}getHooks(){return this._hooks}clearHooks(){return this._hooks=[],this}setLogger(e){return this._logger=new b(e),this}get providerMetadata(){return this.getProviderMetadata()}getProviderMetadata(e){return this.getProviderForClient(e).metadata}addHandler(e,t,r){[...new Map([[void 0,this._defaultProvider]]),...this._domainScopedProviders].forEach(o=>{var l;let a=o[0],n=o[1].provider,d=o[1].status;if(B(e,d))try{t({domain:a,providerName:n.metadata.name})}catch(c){(l=this._logger)==null||l.error("Error running event handler:",c)}}),this._apiEmitter.addHandler(e,t),r!=null&&r.signal&&typeof r.signal.addEventListener=="function"&&r.signal.addEventListener("abort",()=>{this.removeHandler(e,t)})}removeHandler(e,t){this._apiEmitter.removeHandler(e,t)}clearHandlers(){this._apiEmitter.removeAllHandlers()}getHandlers(e){return this._apiEmitter.getHandlers(e)}setAwaitableProvider(e,t){var c,v,C,u,E,O,V,le;let r=D(e),o=(c=x(e))!=null?c:x(t);if(!o){this._logger.debug("No provider defined, ignoring setProvider call");return}let a=this.getProviderForClient(r),n=o.metadata.name;if(a===o){this._logger.debug("Provider is already set, ignoring setProvider call");return}if(!o.runsOn)this._logger.debug(`Provider '${o.metadata.name}' has not defined its intended use.`);else if(o.runsOn!==this._runsOn)throw new T(`Provider '${o.metadata.name}' is intended for use on the ${o.runsOn}.`);let d=this.getAssociatedEventEmitters(r),s,l=new M(o,this._statusEnumType.NOT_READY,this._statusEnumType);return typeof o.initialize=="function"&&!this.allProviders.includes(o)?s=(E=(u=(C=o.initialize)==null?void 0:C.call(o,r?(v=this._domainScopedContext.get(r))!=null?v:this._context:this._context))==null?void 0:u.then(()=>{var p;l.status=this._statusEnumType.READY,this.getAssociatedEventEmitters(r).forEach(G=>{G==null||G.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})}),(p=this._apiEmitter)==null||p.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})}))==null?void 0:E.catch(p=>{var G;throw(p==null?void 0:p.code)==="PROVIDER_FATAL"?l.status=this._statusEnumType.FATAL:l.status=this._statusEnumType.ERROR,this.getAssociatedEventEmitters(r).forEach(re=>{re==null||re.emit("PROVIDER_ERROR",{clientName:r,domain:r,providerName:n,message:p==null?void 0:p.message})}),(G=this._apiEmitter)==null||G.emit("PROVIDER_ERROR",{clientName:r,domain:r,providerName:n,message:p==null?void 0:p.message}),p}):(l.status=this._statusEnumType.READY,d.forEach(p=>{p==null||p.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})}),(O=this._apiEmitter)==null||O.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})),r?this._domainScopedProviders.set(r,l):this._defaultProvider=l,this.transferListeners(a,o,r,d),this.allProviders.includes(a)||(le=(V=a==null?void 0:a.onClose)==null?void 0:V.call(a))==null||le.catch(p=>{this._logger.error(`error closing provider: ${p==null?void 0:p.message}, ${p==null?void 0:p.stack}`)}),s}getProviderForClient(e){var t,r;return e?(r=(t=this._domainScopedProviders.get(e))==null?void 0:t.provider)!=null?r:this._defaultProvider.provider:this._defaultProvider.provider}buildAndCacheEventEmitterForClient(e){let t=this._clientEvents.get(e);if(t)return t;let r=this._createEventEmitter();this._clientEvents.set(e,r);let o=this.getProviderForClient(e);return Object.values(A).forEach(a=>{var n;return(n=o.events)==null?void 0:n.addHandler(a,d=>m(this,null,function*(){r.emit(a,k(P({},d),{clientName:e,domain:e,providerName:o.metadata.name}))}))}),r}getUnboundEmitters(){let e=[...this._domainScopedProviders.keys()];return[...[...this._clientEvents.keys()].filter(ne).filter(o=>!e.includes(o)).map(o=>this._clientEvents.get(o)),this._clientEvents.get(void 0)].filter(ne)}getAssociatedEventEmitters(e){return e?[this.buildAndCacheEventEmitterForClient(e)]:this.getUnboundEmitters()}transferListeners(e,t,r,o){var n;(n=this._clientEventHandlers.get(r))==null||n.forEach(d=>{var s;return(s=e.events)==null?void 0:s.removeHandler(...d)});let a=Object.values(A).map(d=>[d,l=>m(this,null,function*(){o.forEach(c=>{c==null||c.emit(d,k(P({},l),{clientName:r,domain:r,providerName:t.metadata.name}))}),this._apiEmitter.emit(d,k(P({},l),{clientName:r,domain:r,providerName:t.metadata.name}))})]);this._clientEventHandlers.set(r,a),a.forEach(d=>{var s;return(s=t.events)==null?void 0:s.addHandler(...d)})}close(){return m(this,null,function*(){var t,r;try{yield(r=(t=this==null?void 0:this._defaultProvider.provider)==null?void 0:t.onClose)==null?void 0:r.call(t)}catch(o){this.handleShutdownError(this._defaultProvider.provider,o)}let e=Array.from(this._domainScopedProviders);yield Promise.all(e.map(a=>m(this,[a],function*([,o]){var n,d;try{yield(d=o==null?void 0:(n=o.provider).onClose)==null?void 0:d.call(n)}catch(s){this.handleShutdownError(o==null?void 0:o.provider,s)}})))})}clearProvidersAndSetDefault(e){return m(this,null,function*(){try{yield this.close()}catch(t){this._logger.error("Unable to cleanly close providers. Resetting to the default configuration.")}finally{this._domainScopedProviders.clear(),this._defaultProvider=new M(e,this._statusEnumType.NOT_READY,this._statusEnumType)}})}get allProviders(){return[...[...this._domainScopedProviders.values()].map(e=>e.provider),this._defaultProvider.provider]}handleShutdownError(e,t){this._logger.error(`Error during shutdown of provider ${e.metadata.name}: ${t}`),this._logger.error(t==null?void 0:t.stack)}};var Ve="No-op",ie=class{constructor(){this.metadata={name:"No-op Provider"}}resolveBooleanEvaluation(e,t){return this.noOp(t)}resolveStringEvaluation(e,t){return this.noOp(t)}resolveNumberEvaluation(e,t){return this.noOp(t)}resolveObjectEvaluation(e,t){return this.noOp(t)}noOp(e){return{value:e,reason:Ve}}},q=new ie;var se=He(Ce(),1);var S=class extends J{constructor(){super();this.eventEmitter=new se.default}};var Z=class i extends g{constructor(e){super(e),Object.setPrototypeOf(this,i.prototype),this.name="VariantNotFoundError",this.code="GENERAL"}};var de=class{constructor(e={}){this.events=new S;this.runsOn="client";this.metadata={name:"in-memory"};this._flagConfiguration=P({},e)}putConfiguration(e){return m(this,null,function*(){try{let t=Object.entries(P(P({},e),this._flagConfiguration)).map(([r])=>r);this._flagConfiguration=P({},e),this.events.emit("PROVIDER_CONFIGURATION_CHANGED",{flagsChanged:t})}catch(t){throw this.events.emit("PROVIDER_ERROR"),t}})}resolveBooleanEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveNumberEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveStringEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveObjectEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveAndCheckFlag(e,t,r,o){if(!(e in this._flagConfiguration)){let n=`no flag found with key ${e}`;throw o==null||o.debug(n),new N(n)}if(this._flagConfiguration[e].disabled)return{value:t,reason:R.DISABLED};let a=this.resolveFlagWithReason(e,r);if(a.value===void 0){let n=`no value associated with variant provided for ${e} found`;throw o==null||o.error(n),new Z(n)}if(typeof a.value!=typeof t)throw new F;return a}resolveFlagWithReason(e,t){try{return this.lookupFlagValue(e,t)}catch(r){throw r instanceof g?r:new T((r==null?void 0:r.message)||"unknown error")}}lookupFlagValue(e,t){var s;let r=this._flagConfiguration[e],o=t&&(r==null?void 0:r.contextEvaluator),a=o?(s=r.contextEvaluator)==null?void 0:s.call(r,t):r.defaultVariant,n=a&&(r==null?void 0:r.variants[a]),d=o?R.TARGETING_MATCH:R.STATIC;return k(P({value:n},a&&{variant:a}),{reason:d})}};var ee=class{constructor(e,t,r,o,a,n,d){this.providerAccessor=e;this.providerStatusAccessor=t;this.emitterAccessor=r;this.apiContextAccessor=o;this.apiHooksAccessor=a;this.globalLogger=n;this.options=d;this._hooks=[]}get metadata(){var e,t;return{name:(e=this.options.domain)!=null?e:this.options.name,domain:(t=this.options.domain)!=null?t:this.options.name,version:this.options.version,providerMetadata:this.providerAccessor().metadata}}get providerStatus(){return this.providerStatusAccessor()}addHandler(e,t,r){var a;if(this.emitterAccessor().addHandler(e,t),B(e,this.providerStatus))try{t({clientName:this.metadata.name,domain:this.metadata.domain,providerName:this._provider.metadata.name})}catch(n){(a=this._logger)==null||a.error("Error running event handler:",n)}r!=null&&r.signal&&typeof r.signal.addEventListener=="function"&&r.signal.addEventListener("abort",()=>{this.removeHandler(e,t)})}removeHandler(e,t){this.emitterAccessor().removeHandler(e,t)}getHandlers(e){return this.emitterAccessor().getHandlers(e)}setLogger(e){return this._clientLogger=new b(e),this}addHooks(...e){return this._hooks=[...this._hooks,...e],this}getHooks(){return this._hooks}clearHooks(){return this._hooks=[],this}getBooleanValue(e,t,r){return this.getBooleanDetails(e,t,r).value}getBooleanDetails(e,t,r){return this.evaluate(e,this._provider.resolveBooleanEvaluation,t,"boolean",r)}getStringValue(e,t,r){return this.getStringDetails(e,t,r).value}getStringDetails(e,t,r){return this.evaluate(e,this._provider.resolveStringEvaluation,t,"string",r)}getNumberValue(e,t,r){return this.getNumberDetails(e,t,r).value}getNumberDetails(e,t,r){return this.evaluate(e,this._provider.resolveNumberEvaluation,t,"number",r)}getObjectValue(e,t,r){return this.getObjectDetails(e,t,r).value}getObjectDetails(e,t,r){return this.evaluate(e,this._provider.resolveObjectEvaluation,t,"object",r)}track(e,t={}){var r,o,a;try{if(this.shortCircuitIfNotReady(),typeof this._provider.track=="function"){let n=Object.freeze(P({},this.apiContextAccessor((r=this==null?void 0:this.options)==null?void 0:r.domain)));return(a=(o=this._provider).track)==null?void 0:a.call(o,e,n,t)}else this._logger.debug("Provider does not support the track function; will no-op.")}catch(n){this._logger.debug("Error recording tracking event.",n)}}evaluate(e,t,r,o,a={}){var v,C;let n=[...this.apiHooksAccessor(),...this.getHooks(),...a.hooks||[],...this._provider.hooks||[]],d=[...n].reverse(),s=P({},this.apiContextAccessor((v=this==null?void 0:this.options)==null?void 0:v.domain)),l=d.map(()=>Object.freeze({flagKey:e,defaultValue:r,flagValueType:o,clientMetadata:this.metadata,providerMetadata:this._provider.metadata,context:s,logger:this._logger,hookData:new Y})),c;try{this.beforeHooks(n,l,a),this.shortCircuitIfNotReady();let u=t.call(this._provider,e,r,s,this._logger),E=k(P({},u),{flagMetadata:Object.freeze((C=u.flagMetadata)!=null?C:{}),flagKey:e});if(E.errorCode){let O=oe(E.errorCode,E.errorMessage);this.errorHooks(d,l,O,a),c=this.getErrorEvaluationDetails(e,r,O,E.flagMetadata)}else this.afterHooks(d,l,E,a),c=E}catch(u){this.errorHooks(d,l,u,a),c=this.getErrorEvaluationDetails(e,r,u)}return this.finallyHooks(d,l,c,a),c}beforeHooks(e,t,r){var o;for(let[a,n]of e.entries()){let d=e.length-1-a,s=t[d];Object.freeze(s),Object.freeze(s.context),(o=n==null?void 0:n.before)==null||o.call(n,s,Object.freeze(r.hookHints))}}afterHooks(e,t,r,o){var a;for(let[n,d]of e.entries()){let s=t[n];(a=d==null?void 0:d.after)==null||a.call(d,s,r,o.hookHints)}}errorHooks(e,t,r,o){var a;for(let[n,d]of e.entries())try{let s=t[n];(a=d==null?void 0:d.error)==null||a.call(d,s,r,o.hookHints)}catch(s){this._logger.error(`Unhandled error during 'error' hook: ${s}`),s instanceof Error&&this._logger.error(s.stack),this._logger.error(s==null?void 0:s.stack)}}finallyHooks(e,t,r,o){var a;for(let[n,d]of e.entries())try{let s=t[n];(a=d==null?void 0:d.finally)==null||a.call(d,s,r,o.hookHints)}catch(s){this._logger.error(`Unhandled error during 'finally' hook: ${s}`),s instanceof Error&&this._logger.error(s.stack),this._logger.error(s==null?void 0:s.stack)}}get _provider(){return this.providerAccessor()}get _logger(){return this._clientLogger||this.globalLogger()}shortCircuitIfNotReady(){if(this.providerStatus==="NOT_READY")throw new H("provider has not yet initialized");if(this.providerStatus==="FATAL")throw new L("provider is in an irrecoverable error state")}getErrorEvaluationDetails(e,t,r,o={}){let a=r==null?void 0:r.message;return{errorCode:(r==null?void 0:r.code)||"GENERAL",errorMessage:a,value:t,reason:R.ERROR,flagMetadata:Object.freeze(o),flagKey:e}}};var _e=Symbol.for("@openfeature/web-sdk/api"),Re=globalThis,te=class i extends z{constructor(){super("client");this._statusEnumType=w;this._apiEmitter=new S;this._defaultProvider=new M(q,"NOT_READY",this._statusEnumType);this._domainScopedProviders=new Map;this._createEventEmitter=()=>new S}static getInstance(){let t=Re[_e];if(t)return t;let r=new i;return Re[_e]=r,r}getProviderStatus(t){var r,o;return t?(o=(r=this._domainScopedProviders.get(t))==null?void 0:r.status)!=null?o:this._defaultProvider.status:this._defaultProvider.status}setProviderAndWait(t,r,o){return m(this,null,function*(){let a=D(t),n=a?x(r):x(t),d=a?x(o):x(r);d&&(a?this._domainScopedContext.set(a,d):this._context=d),yield this.setAwaitableProvider(a,n)})}setProvider(t,r,o){let a=D(t),n=a?x(r):x(t),d=a?x(o):x(r);d&&(a?this._domainScopedContext.set(a,d):this._context=d);let s=this.setAwaitableProvider(a,n);return Promise.resolve(s).catch(l=>{this._logger.error("Error during provider initialization:",l)}),this}getProvider(t){return this.getProviderForClient(t)}setContext(t,r){return m(this,null,function*(){var n,d;let o=D(t),a=(d=(n=x(t))!=null?n:x(r))!=null?d:{};if(o){let s=this._domainScopedProviders.get(o);if(s){let l=this.getContext(o);this._domainScopedContext.set(o,a),yield this.runProviderContextChangeHandler(o,s,l,a)}else this._domainScopedContext.set(o,a)}else{let s=this._context;this._context=a;let l=Array.from(this._domainScopedProviders.entries()).filter(([v])=>!this._domainScopedContext.has(v)).reduce((v,[C,u])=>(v.push({domain:C,wrapper:u}),v),[]),c=[{domain:void 0,wrapper:this._defaultProvider},...l];yield Promise.all(c.map(v=>this.runProviderContextChangeHandler(v.domain,v.wrapper,s,a)))}})}getContext(t){let r=D(t);if(r){let o=this._domainScopedContext.get(r);if(o)return o;this._logger.debug(`Unable to find context for '${r}'.`)}return this._context}clearContext(t){return m(this,null,function*(){let r=D(t);if(r){let o=this._domainScopedProviders.get(r);if(o){let a=this.getContext(r);this._domainScopedContext.delete(r);let n=this.getContext();yield this.runProviderContextChangeHandler(r,o,a,n)}else this._domainScopedContext.delete(r)}else return this.setContext({})})}clearContexts(){return m(this,null,function*(){yield this.clearContext(),yield Promise.allSettled(Array.from(this._domainScopedProviders.keys()).map(t=>this.clearContext(t)))})}getClient(t,r){return new ee(()=>this.getProviderForClient(t),()=>this.getProviderStatus(t),()=>this.buildAndCacheEventEmitterForClient(t),o=>this.getContext(o),()=>this.getHooks(),()=>this._logger,{domain:t,version:r})}clearProviders(){return m(this,null,function*(){yield Ee(i.prototype,this,"clearProvidersAndSetDefault").call(this,q),this._domainScopedContext.clear()})}runProviderContextChangeHandler(t,r,o,a){return m(this,null,function*(){var d,s,l,c,v,C;let n=((s=(d=r.provider)==null?void 0:d.metadata)==null?void 0:s.name)||"unnamed-provider";try{if(typeof r.provider.onContextChange=="function"){let u=r.provider.onContextChange(o,a);typeof(u==null?void 0:u.then)=="function"&&(r.incrementPendingContextChanges(),r.status=this._statusEnumType.RECONCILING,this.getAssociatedEventEmitters(t).forEach(E=>{E==null||E.emit("PROVIDER_RECONCILING",{domain:t,providerName:n})}),(l=this._apiEmitter)==null||l.emit("PROVIDER_RECONCILING",{domain:t,providerName:n}),yield u,r.decrementPendingContextChanges())}r.status=this._statusEnumType.READY,r.allContextChangesSettled&&(this.getAssociatedEventEmitters(t).forEach(u=>{u==null||u.emit("PROVIDER_CONTEXT_CHANGED",{clientName:t,domain:t,providerName:n})}),(c=this._apiEmitter)==null||c.emit("PROVIDER_CONTEXT_CHANGED",{clientName:t,domain:t,providerName:n}))}catch(u){if(r.decrementPendingContextChanges(),r.status=this._statusEnumType.ERROR,r.allContextChangesSettled){let E=u,O=`Error running ${n}'s context change handler: ${E==null?void 0:E.message}`;(v=this._logger)==null||v.error(`${O}`,u),this.getAssociatedEventEmitters(t).forEach(V=>{V==null||V.emit("PROVIDER_ERROR",{clientName:t,domain:t,providerName:n,message:O})}),(C=this._apiEmitter)==null||C.emit("PROVIDER_ERROR",{clientName:t,domain:t,providerName:n,message:O})}}})}},Ye=te.getInstance();return Fe(Ke);})();
1
+ "use strict";var OpenFeature=(()=>{var Ae=Object.create;var j=Object.defineProperty,Oe=Object.defineProperties,Te=Object.getOwnPropertyDescriptor,be=Object.getOwnPropertyDescriptors,De=Object.getOwnPropertyNames,ve=Object.getOwnPropertySymbols,ce=Object.getPrototypeOf,pe=Object.prototype.hasOwnProperty,Se=Object.prototype.propertyIsEnumerable,ke=Reflect.get;var ue=(i,e,t)=>e in i?j(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,P=(i,e)=>{for(var t in e||(e={}))pe.call(e,t)&&ue(i,t,e[t]);if(ve)for(var t of ve(e))Se.call(e,t)&&ue(i,t,e[t]);return i},S=(i,e)=>Oe(i,be(e));var Ne=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),Le=(i,e)=>{for(var t in e)j(i,t,{get:e[t],enumerable:!0})},ge=(i,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of De(e))!pe.call(i,o)&&o!==t&&j(i,o,{get:()=>e[o],enumerable:!(r=Te(e,o))||r.enumerable});return i};var He=(i,e,t)=>(t=i!=null?Ae(ce(i)):{},ge(e||!i||!i.__esModule?j(t,"default",{value:i,enumerable:!0}):t,i)),Fe=i=>ge(j({},"__esModule",{value:!0}),i);var Ee=(i,e,t)=>ke(ce(i),t,e);var m=(i,e,t)=>new Promise((r,o)=>{var s=a=>{try{d(t.next(a))}catch(l){o(l)}},n=a=>{try{d(t.throw(a))}catch(l){o(l)}},d=a=>a.done?r(a.value):Promise.resolve(a.value).then(s,n);d((t=t.apply(i,e)).next())});var Ce=Ne((zr,ae)=>{"use strict";var Ge=Object.prototype.hasOwnProperty,y="~";function X(){}Object.create&&(X.prototype=Object.create(null),new X().__proto__||(y=!1));function je(i,e,t){this.fn=i,this.context=e,this.once=t||!1}function Pe(i,e,t,r,o){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new je(t,r||i,o),n=y?y+e:e;return i._events[n]?i._events[n].fn?i._events[n]=[i._events[n],s]:i._events[n].push(s):(i._events[n]=s,i._eventsCount++),i}function Q(i,e){--i._eventsCount===0?i._events=new X:delete i._events[e]}function f(){this._events=new X,this._eventsCount=0}f.prototype.eventNames=function(){var e=[],t,r;if(this._eventsCount===0)return e;for(r in t=this._events)Ge.call(t,r)&&e.push(y?r.slice(1):r);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};f.prototype.listeners=function(e){var t=y?y+e:e,r=this._events[t];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,n=new Array(s);o<s;o++)n[o]=r[o].fn;return n};f.prototype.listenerCount=function(e){var t=y?y+e:e,r=this._events[t];return r?r.fn?1:r.length:0};f.prototype.emit=function(e,t,r,o,s,n){var d=y?y+e:e;if(!this._events[d])return!1;var a=this._events[d],l=arguments.length,c,v;if(a.fn){switch(a.once&&this.removeListener(e,a.fn,void 0,!0),l){case 1:return a.fn.call(a.context),!0;case 2:return a.fn.call(a.context,t),!0;case 3:return a.fn.call(a.context,t,r),!0;case 4:return a.fn.call(a.context,t,r,o),!0;case 5:return a.fn.call(a.context,t,r,o,s),!0;case 6:return a.fn.call(a.context,t,r,o,s,n),!0}for(v=1,c=new Array(l-1);v<l;v++)c[v-1]=arguments[v];a.fn.apply(a.context,c)}else{var _=a.length,u;for(v=0;v<_;v++)switch(a[v].once&&this.removeListener(e,a[v].fn,void 0,!0),l){case 1:a[v].fn.call(a[v].context);break;case 2:a[v].fn.call(a[v].context,t);break;case 3:a[v].fn.call(a[v].context,t,r);break;case 4:a[v].fn.call(a[v].context,t,r,o);break;default:if(!c)for(u=1,c=new Array(l-1);u<l;u++)c[u-1]=arguments[u];a[v].fn.apply(a[v].context,c)}}return!0};f.prototype.on=function(e,t,r){return Pe(this,e,t,r,!1)};f.prototype.once=function(e,t,r){return Pe(this,e,t,r,!0)};f.prototype.removeListener=function(e,t,r,o){var s=y?y+e:e;if(!this._events[s])return this;if(!t)return Q(this,s),this;var n=this._events[s];if(n.fn)n.fn===t&&(!o||n.once)&&(!r||n.context===r)&&Q(this,s);else{for(var d=0,a=[],l=n.length;d<l;d++)(n[d].fn!==t||o&&!n[d].once||r&&n[d].context!==r)&&a.push(n[d]);a.length?this._events[s]=a.length===1?a[0]:a:Q(this,s)}return this};f.prototype.removeAllListeners=function(e){var t;return e?(t=y?y+e:e,this._events[t]&&Q(this,t)):(this._events=new X,this._eventsCount=0),this};f.prototype.off=f.prototype.removeListener;f.prototype.addListener=f.prototype.on;f.prefixed=y;f.EventEmitter=f;typeof ae!="undefined"&&(ae.exports=f)});var Ke={};Le(Ke,{AllProviderEvents:()=>A,AllProviderStatus:()=>w,ClientProviderEvents:()=>A,ClientProviderStatus:()=>w,DefaultLogger:()=>I,ErrorCode:()=>h,FlagNotFoundError:()=>N,GeneralError:()=>T,GenericEventEmitter:()=>J,InMemoryProvider:()=>de,InvalidContextError:()=>K,LOG_LEVELS:()=>he,MapHookData:()=>Y,NOOP_PROVIDER:()=>q,OpenFeature:()=>Ye,OpenFeatureAPI:()=>te,OpenFeatureCommonAPI:()=>z,OpenFeatureError:()=>g,OpenFeatureEventEmitter:()=>k,ParseError:()=>U,ProviderEvents:()=>A,ProviderFatalError:()=>L,ProviderNotReadyError:()=>H,ProviderStatus:()=>w,ProviderWrapper:()=>M,SafeLogger:()=>b,ServerProviderEvents:()=>fe,ServerProviderStatus:()=>me,StandardResolutionReasons:()=>R,TargetingKeyMissingError:()=>W,TelemetryAttribute:()=>C,TelemetryFlagMetadata:()=>$,TypeMismatchError:()=>F,createEvaluationEvent:()=>Me,instantiateErrorByErrorCode:()=>oe,isObject:()=>ye,isString:()=>xe,objectOrUndefined:()=>x,statusMatchesEvent:()=>B,stringOrUndefined:()=>D});var Y=class{constructor(){this.data=new Map}set(e,t){this.data.set(e,t)}get(e){return this.data.get(e)}has(e){return this.data.has(e)}delete(e){return this.data.delete(e)}clear(){this.data.clear()}};var R={STATIC:"STATIC",DEFAULT:"DEFAULT",TARGETING_MATCH:"TARGETING_MATCH",SPLIT:"SPLIT",CACHED:"CACHED",DISABLED:"DISABLED",UNKNOWN:"UNKNOWN",STALE:"STALE",ERROR:"ERROR"},h=(a=>(a.PROVIDER_NOT_READY="PROVIDER_NOT_READY",a.PROVIDER_FATAL="PROVIDER_FATAL",a.FLAG_NOT_FOUND="FLAG_NOT_FOUND",a.PARSE_ERROR="PARSE_ERROR",a.TYPE_MISMATCH="TYPE_MISMATCH",a.TARGETING_KEY_MISSING="TARGETING_KEY_MISSING",a.INVALID_CONTEXT="INVALID_CONTEXT",a.GENERAL="GENERAL",a))(h||{});var g=class i extends Error{constructor(e,t){super(e),Object.setPrototypeOf(this,i.prototype),this.name="OpenFeatureError",this.cause=t==null?void 0:t.cause}};var N=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="FlagNotFoundError",this.code="FLAG_NOT_FOUND"}};var T=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="GeneralError",this.code="GENERAL"}};var K=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="InvalidContextError",this.code="INVALID_CONTEXT"}};var U=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="ParseError",this.code="PARSE_ERROR"}};var L=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="ProviderFatalError",this.code="PROVIDER_FATAL"}};var H=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="ProviderNotReadyError",this.code="PROVIDER_NOT_READY"}};var W=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="TargetingKeyMissingError",this.code="TARGETING_KEY_MISSING"}};var F=class i extends g{constructor(e,t){super(e,t),Object.setPrototypeOf(this,i.prototype),this.name="TypeMismatchError",this.code="TYPE_MISMATCH"}};var oe=(i,e)=>{switch(i){case"FLAG_NOT_FOUND":return new N(e);case"PARSE_ERROR":return new U(e);case"TYPE_MISMATCH":return new F(e);case"TARGETING_KEY_MISSING":return new W(e);case"INVALID_CONTEXT":return new K(e);case"PROVIDER_NOT_READY":return new H(e);case"PROVIDER_FATAL":return new L(e);default:return new T(e)}};var me=(s=>(s.NOT_READY="NOT_READY",s.READY="READY",s.ERROR="ERROR",s.STALE="STALE",s.FATAL="FATAL",s))(me||{}),w=(n=>(n.NOT_READY="NOT_READY",n.READY="READY",n.ERROR="ERROR",n.STALE="STALE",n.FATAL="FATAL",n.RECONCILING="RECONCILING",n))(w||{});var fe=(o=>(o.Ready="PROVIDER_READY",o.Error="PROVIDER_ERROR",o.ConfigurationChanged="PROVIDER_CONFIGURATION_CHANGED",o.Stale="PROVIDER_STALE",o))(fe||{}),A=(n=>(n.Ready="PROVIDER_READY",n.Error="PROVIDER_ERROR",n.ConfigurationChanged="PROVIDER_CONFIGURATION_CHANGED",n.ContextChanged="PROVIDER_CONTEXT_CHANGED",n.Reconciling="PROVIDER_RECONCILING",n.Stale="PROVIDER_STALE",n))(A||{});var we={READY:"PROVIDER_READY",ERROR:"PROVIDER_ERROR",FATAL:"PROVIDER_ERROR",STALE:"PROVIDER_STALE",RECONCILING:"PROVIDER_RECONCILING",NOT_READY:void 0},B=(i,e)=>!e&&i==="PROVIDER_READY"||we[e]===i;var I=class{error(...e){console.error(...e)}warn(...e){console.warn(...e)}info(){}debug(){}};var he=["error","warn","info","debug"],b=class{constructor(e){this.fallbackLogger=new I;try{for(let t of he)if(!e[t]||typeof e[t]!="function")throw new Error(`The provided logger is missing the ${t} method.`);this.logger=e}catch(t){console.error(t),console.error("Falling back to the default logger."),this.logger=this.fallbackLogger}}error(...e){this.log("error",...e)}warn(...e){this.log("warn",...e)}info(...e){this.log("info",...e)}debug(...e){this.log("debug",...e)}log(e,...t){try{this.logger[e](...t)}catch(r){this.fallbackLogger[e](...t)}}};var J=class{constructor(e){this.globalLogger=e;this._handlers={PROVIDER_CONFIGURATION_CHANGED:new WeakMap,PROVIDER_CONTEXT_CHANGED:new WeakMap,PROVIDER_READY:new WeakMap,PROVIDER_ERROR:new WeakMap,PROVIDER_STALE:new WeakMap,PROVIDER_RECONCILING:new WeakMap}}emit(e,t){this.eventEmitter.emit(e,t)}addHandler(e,t){let r=s=>m(this,null,function*(){var n;try{yield t(s)}catch(d){(n=this._logger)==null||n.error("Error running event handler:",d)}}),o=this._handlers[e].get(t);this._handlers[e].set(t,[...o||[],r]),this.eventEmitter.on(e,r)}removeHandler(e,t){let r=this._handlers[e].get(t);if(r){let o=r.pop();o&&this.eventEmitter.removeListener(e,o)}}removeAllHandlers(e){e?this.eventEmitter.removeAllListeners(e):this.eventEmitter.removeAllListeners()}getHandlers(e){return this.eventEmitter.listeners(e)}setLogger(e){return this._eventLogger=new b(e),this}get _logger(){var e,t;return(t=this._eventLogger)!=null?t:(e=this.globalLogger)==null?void 0:e.call(this)}};var C={KEY:"feature_flag.key",ERROR_CODE:"error.type",ERROR_MESSAGE:"error.message",VARIANT:"feature_flag.result.variant",VALUE:"feature_flag.result.value",CONTEXT_ID:"feature_flag.context.id",REASON:"feature_flag.result.reason",PROVIDER:"feature_flag.provider.name",FLAG_SET_ID:"feature_flag.set.id",VERSION:"feature_flag.version"};var $={CONTEXT_ID:"contextId",FLAG_SET_ID:"flagSetId",VERSION:"version"};var Ie="feature_flag.evaluation";function Me(i,e){var n,d,a;let t={[C.KEY]:i.flagKey,[C.PROVIDER]:i.providerMetadata.name,[C.REASON]:((n=e.reason)!=null?n:R.UNKNOWN).toLowerCase()};if(e.variant&&(t[C.VARIANT]=e.variant),e.value!==null)if(typeof e.value!="object")t[C.VALUE]=e.value;else try{t[C.VALUE]=JSON.stringify(e.value)}catch(l){}let r=(d=e.flagMetadata[$.CONTEXT_ID])!=null?d:i.context.targetingKey;r&&(t[C.CONTEXT_ID]=r);let o=e.flagMetadata[$.FLAG_SET_ID];o&&(t[C.FLAG_SET_ID]=o);let s=e.flagMetadata[$.VERSION];return s&&(t[C.VERSION]=s),e.reason===R.ERROR&&(t[C.ERROR_CODE]=((a=e.errorCode)!=null?a:"GENERAL").toLowerCase(),e.errorMessage&&(t[C.ERROR_MESSAGE]=e.errorMessage)),{name:Ie,attributes:t}}function xe(i){return typeof i=="string"}function D(i){return xe(i)?i:void 0}function ye(i){return typeof i=="object"}function x(i){return ye(i)?i:void 0}function ne(i){return typeof i!="undefined"&&i!==null}var M=class{constructor(e,t,r){this._provider=e;this._status=t;this._pendingContextChanges=0;var o,s,n;(o=e.events)==null||o.addHandler("PROVIDER_READY",()=>{this._status=r.READY}),(s=e.events)==null||s.addHandler("PROVIDER_STALE",()=>{this._status=r.STALE}),(n=e.events)==null||n.addHandler("PROVIDER_ERROR",d=>{(d==null?void 0:d.errorCode)==="PROVIDER_FATAL"?this._status=r.FATAL:this._status=r.ERROR})}get provider(){return this._provider}set provider(e){this._provider=e}get status(){return this._status}set status(e){this._status=e}get allContextChangesSettled(){return this._pendingContextChanges===0}incrementPendingContextChanges(){this._pendingContextChanges++}decrementPendingContextChanges(){this._pendingContextChanges--}},z=class{constructor(e){this._hooks=[];this._context={};this._logger=new I;this._clientEventHandlers=new Map;this._domainScopedContext=new Map;this._clientEvents=new Map;this._runsOn=e}addHooks(...e){return this._hooks=[...this._hooks,...e],this}getHooks(){return this._hooks}clearHooks(){return this._hooks=[],this}setLogger(e){return this._logger=new b(e),this}get providerMetadata(){return this.getProviderMetadata()}getProviderMetadata(e){return this.getProviderForClient(e).metadata}addHandler(e,t,r){[...new Map([[void 0,this._defaultProvider]]),...this._domainScopedProviders].forEach(o=>{var l;let s=o[0],n=o[1].provider,d=o[1].status;if(B(e,d))try{t({domain:s,providerName:n.metadata.name})}catch(c){(l=this._logger)==null||l.error("Error running event handler:",c)}}),this._apiEmitter.addHandler(e,t),r!=null&&r.signal&&typeof r.signal.addEventListener=="function"&&r.signal.addEventListener("abort",()=>{this.removeHandler(e,t)})}removeHandler(e,t){this._apiEmitter.removeHandler(e,t)}clearHandlers(){this._apiEmitter.removeAllHandlers()}getHandlers(e){return this._apiEmitter.getHandlers(e)}setAwaitableProvider(e,t){var c,v,_,u,E,O,V,le;let r=D(e),o=(c=x(e))!=null?c:x(t);if(!o){this._logger.debug("No provider defined, ignoring setProvider call");return}let s=this.getProviderForClient(r),n=o.metadata.name;if(s===o){this._logger.debug("Provider is already set, ignoring setProvider call");return}if(!o.runsOn)this._logger.debug(`Provider '${o.metadata.name}' has not defined its intended use.`);else if(o.runsOn!==this._runsOn)throw new T(`Provider '${o.metadata.name}' is intended for use on the ${o.runsOn}.`);let d=this.getAssociatedEventEmitters(r),a,l=new M(o,this._statusEnumType.NOT_READY,this._statusEnumType);return typeof o.initialize=="function"&&!this.allProviders.includes(o)?a=(E=(u=(_=o.initialize)==null?void 0:_.call(o,r?(v=this._domainScopedContext.get(r))!=null?v:this._context:this._context))==null?void 0:u.then(()=>{var p;l.status=this._statusEnumType.READY,this.getAssociatedEventEmitters(r).forEach(G=>{G==null||G.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})}),(p=this._apiEmitter)==null||p.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})}))==null?void 0:E.catch(p=>{var G;throw(p==null?void 0:p.code)==="PROVIDER_FATAL"?l.status=this._statusEnumType.FATAL:l.status=this._statusEnumType.ERROR,this.getAssociatedEventEmitters(r).forEach(re=>{re==null||re.emit("PROVIDER_ERROR",{clientName:r,domain:r,providerName:n,message:p==null?void 0:p.message})}),(G=this._apiEmitter)==null||G.emit("PROVIDER_ERROR",{clientName:r,domain:r,providerName:n,message:p==null?void 0:p.message}),p}):(l.status=this._statusEnumType.READY,d.forEach(p=>{p==null||p.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})}),(O=this._apiEmitter)==null||O.emit("PROVIDER_READY",{clientName:r,domain:r,providerName:n})),r?this._domainScopedProviders.set(r,l):this._defaultProvider=l,this.transferListeners(s,o,r,d),this.allProviders.includes(s)||(le=(V=s==null?void 0:s.onClose)==null?void 0:V.call(s))==null||le.catch(p=>{this._logger.error(`error closing provider: ${p==null?void 0:p.message}, ${p==null?void 0:p.stack}`)}),a}getProviderForClient(e){var t,r;return e?(r=(t=this._domainScopedProviders.get(e))==null?void 0:t.provider)!=null?r:this._defaultProvider.provider:this._defaultProvider.provider}buildAndCacheEventEmitterForClient(e){let t=this._clientEvents.get(e);if(t)return t;let r=this._createEventEmitter();this._clientEvents.set(e,r);let o=this.getProviderForClient(e);return Object.values(A).forEach(s=>{var n;return(n=o.events)==null?void 0:n.addHandler(s,d=>m(this,null,function*(){r.emit(s,S(P({},d),{clientName:e,domain:e,providerName:o.metadata.name}))}))}),r}getUnboundEmitters(){let e=[...this._domainScopedProviders.keys()];return[...[...this._clientEvents.keys()].filter(ne).filter(o=>!e.includes(o)).map(o=>this._clientEvents.get(o)),this._clientEvents.get(void 0)].filter(ne)}getAssociatedEventEmitters(e){return e?[this.buildAndCacheEventEmitterForClient(e)]:this.getUnboundEmitters()}transferListeners(e,t,r,o){var n;(n=this._clientEventHandlers.get(r))==null||n.forEach(d=>{var a;return(a=e.events)==null?void 0:a.removeHandler(...d)});let s=Object.values(A).map(d=>[d,l=>m(this,null,function*(){o.forEach(c=>{c==null||c.emit(d,S(P({},l),{clientName:r,domain:r,providerName:t.metadata.name}))}),this._apiEmitter.emit(d,S(P({},l),{clientName:r,domain:r,providerName:t.metadata.name}))})]);this._clientEventHandlers.set(r,s),s.forEach(d=>{var a;return(a=t.events)==null?void 0:a.addHandler(...d)})}close(){return m(this,null,function*(){var t,r;try{yield(r=(t=this==null?void 0:this._defaultProvider.provider)==null?void 0:t.onClose)==null?void 0:r.call(t)}catch(o){this.handleShutdownError(this._defaultProvider.provider,o)}let e=Array.from(this._domainScopedProviders);yield Promise.all(e.map(s=>m(this,[s],function*([,o]){var n,d;try{yield(d=o==null?void 0:(n=o.provider).onClose)==null?void 0:d.call(n)}catch(a){this.handleShutdownError(o==null?void 0:o.provider,a)}})))})}clearProvidersAndSetDefault(e){return m(this,null,function*(){try{yield this.close()}catch(t){this._logger.error("Unable to cleanly close providers. Resetting to the default configuration.")}finally{this._domainScopedProviders.clear(),this._defaultProvider=new M(e,this._statusEnumType.NOT_READY,this._statusEnumType)}})}get allProviders(){return[...[...this._domainScopedProviders.values()].map(e=>e.provider),this._defaultProvider.provider]}handleShutdownError(e,t){this._logger.error(`Error during shutdown of provider ${e.metadata.name}: ${t}`),this._logger.error(t==null?void 0:t.stack)}};var Ve="No-op",ie=class{constructor(){this.metadata={name:"No-op Provider"}}resolveBooleanEvaluation(e,t){return this.noOp(t)}resolveStringEvaluation(e,t){return this.noOp(t)}resolveNumberEvaluation(e,t){return this.noOp(t)}resolveObjectEvaluation(e,t){return this.noOp(t)}noOp(e){return{value:e,reason:Ve}}},q=new ie;var se=He(Ce(),1);var k=class extends J{constructor(){super();this.eventEmitter=new se.default}};var Z=class i extends g{constructor(e){super(e),Object.setPrototypeOf(this,i.prototype),this.name="VariantNotFoundError",this.code="GENERAL"}};var de=class{constructor(e={}){this.events=new k;this.runsOn="client";this.metadata={name:"in-memory"};this._flagConfiguration=P({},e)}putConfiguration(e){return m(this,null,function*(){try{let t=Object.entries(P(P({},e),this._flagConfiguration)).map(([r])=>r);this._flagConfiguration=P({},e),this.events.emit("PROVIDER_CONFIGURATION_CHANGED",{flagsChanged:t})}catch(t){throw this.events.emit("PROVIDER_ERROR"),t}})}resolveBooleanEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveNumberEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveStringEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveObjectEvaluation(e,t,r,o){return this.resolveAndCheckFlag(e,t,r||this._context,o)}resolveAndCheckFlag(e,t,r,o){if(!(e in this._flagConfiguration)){let n=`no flag found with key ${e}`;throw o==null||o.debug(n),new N(n)}if(this._flagConfiguration[e].disabled)return{value:t,reason:R.DISABLED};let s=this.resolveFlagWithReason(e,r);if(s.value===void 0){let n=`no value associated with variant provided for ${e} found`;throw o==null||o.error(n),new Z(n)}if(typeof s.value!=typeof t)throw new F;return s}resolveFlagWithReason(e,t){try{return this.lookupFlagValue(e,t)}catch(r){throw r instanceof g?r:new T((r==null?void 0:r.message)||"unknown error")}}lookupFlagValue(e,t){var a;let r=this._flagConfiguration[e],o=t&&(r==null?void 0:r.contextEvaluator),s=o?(a=r.contextEvaluator)==null?void 0:a.call(r,t):r.defaultVariant,n=s&&(r==null?void 0:r.variants[s]),d=o?R.TARGETING_MATCH:R.STATIC;return S(P({value:n},s&&{variant:s}),{reason:d})}};var ee=class{constructor(e,t,r,o,s,n,d){this.providerAccessor=e;this.providerStatusAccessor=t;this.emitterAccessor=r;this.apiContextAccessor=o;this.apiHooksAccessor=s;this.globalLogger=n;this.options=d;this._hooks=[]}get metadata(){var e,t;return{name:(e=this.options.domain)!=null?e:this.options.name,domain:(t=this.options.domain)!=null?t:this.options.name,version:this.options.version,providerMetadata:this.providerAccessor().metadata}}get providerStatus(){return this.providerStatusAccessor()}addHandler(e,t,r){var s;if(this.emitterAccessor().addHandler(e,t),B(e,this.providerStatus))try{t({clientName:this.metadata.name,domain:this.metadata.domain,providerName:this._provider.metadata.name})}catch(n){(s=this._logger)==null||s.error("Error running event handler:",n)}r!=null&&r.signal&&typeof r.signal.addEventListener=="function"&&r.signal.addEventListener("abort",()=>{this.removeHandler(e,t)})}removeHandler(e,t){this.emitterAccessor().removeHandler(e,t)}getHandlers(e){return this.emitterAccessor().getHandlers(e)}setLogger(e){return this._clientLogger=new b(e),this}addHooks(...e){return this._hooks=[...this._hooks,...e],this}getHooks(){return this._hooks}clearHooks(){return this._hooks=[],this}getBooleanValue(e,t,r){return this.getBooleanDetails(e,t,r).value}getBooleanDetails(e,t,r){return this.evaluate(e,this._provider.resolveBooleanEvaluation,t,"boolean",r)}getStringValue(e,t,r){return this.getStringDetails(e,t,r).value}getStringDetails(e,t,r){return this.evaluate(e,this._provider.resolveStringEvaluation,t,"string",r)}getNumberValue(e,t,r){return this.getNumberDetails(e,t,r).value}getNumberDetails(e,t,r){return this.evaluate(e,this._provider.resolveNumberEvaluation,t,"number",r)}getObjectValue(e,t,r){return this.getObjectDetails(e,t,r).value}getObjectDetails(e,t,r){return this.evaluate(e,this._provider.resolveObjectEvaluation,t,"object",r)}track(e,t={}){var r,o,s;try{if(this.shortCircuitIfNotReady(),typeof this._provider.track=="function"){let n=Object.freeze(P({},this.apiContextAccessor((r=this==null?void 0:this.options)==null?void 0:r.domain)));return(s=(o=this._provider).track)==null?void 0:s.call(o,e,n,t)}else this._logger.debug("Provider does not support the track function; will no-op.")}catch(n){this._logger.debug("Error recording tracking event.",n)}}evaluate(e,t,r,o,s={}){var v,_;let n=[...this.apiHooksAccessor(),...this.getHooks(),...s.hooks||[],...this._provider.hooks||[]],d=[...n].reverse(),a=P({},this.apiContextAccessor((v=this==null?void 0:this.options)==null?void 0:v.domain)),l=d.map(()=>Object.freeze({flagKey:e,defaultValue:r,flagValueType:o,clientMetadata:this.metadata,providerMetadata:this._provider.metadata,context:a,logger:this._logger,hookData:new Y})),c;try{this.beforeHooks(n,l,s),this.shortCircuitIfNotReady();let u=t.call(this._provider,e,r,a,this._logger),E=S(P({},u),{flagMetadata:Object.freeze((_=u.flagMetadata)!=null?_:{}),flagKey:e});if(E.errorCode){let O=oe(E.errorCode,E.errorMessage);this.errorHooks(d,l,O,s),c=this.getErrorEvaluationDetails(e,r,O,E.flagMetadata)}else this.afterHooks(d,l,E,s),c=E}catch(u){this.errorHooks(d,l,u,s),c=this.getErrorEvaluationDetails(e,r,u)}return this.finallyHooks(d,l,c,s),c}beforeHooks(e,t,r){var o;for(let[s,n]of e.entries()){let d=e.length-1-s,a=t[d];Object.freeze(a),Object.freeze(a.context),(o=n==null?void 0:n.before)==null||o.call(n,a,Object.freeze(r.hookHints))}}afterHooks(e,t,r,o){var s;for(let[n,d]of e.entries()){let a=t[n];(s=d==null?void 0:d.after)==null||s.call(d,a,r,o.hookHints)}}errorHooks(e,t,r,o){var s;for(let[n,d]of e.entries())try{let a=t[n];(s=d==null?void 0:d.error)==null||s.call(d,a,r,o.hookHints)}catch(a){this._logger.error(`Unhandled error during 'error' hook: ${a}`),a instanceof Error&&this._logger.error(a.stack),this._logger.error(a==null?void 0:a.stack)}}finallyHooks(e,t,r,o){var s;for(let[n,d]of e.entries())try{let a=t[n];(s=d==null?void 0:d.finally)==null||s.call(d,a,r,o.hookHints)}catch(a){this._logger.error(`Unhandled error during 'finally' hook: ${a}`),a instanceof Error&&this._logger.error(a.stack),this._logger.error(a==null?void 0:a.stack)}}get _provider(){return this.providerAccessor()}get _logger(){return this._clientLogger||this.globalLogger()}shortCircuitIfNotReady(){if(this.providerStatus==="NOT_READY")throw new H("provider has not yet initialized");if(this.providerStatus==="FATAL")throw new L("provider is in an irrecoverable error state")}getErrorEvaluationDetails(e,t,r,o={}){let s=r==null?void 0:r.message;return{errorCode:(r==null?void 0:r.code)||"GENERAL",errorMessage:s,value:t,reason:R.ERROR,flagMetadata:Object.freeze(o),flagKey:e}}};var _e=Symbol.for("@openfeature/web-sdk/api"),Re=globalThis,te=class i extends z{constructor(){super("client");this._statusEnumType=w;this._apiEmitter=new k;this._defaultProvider=new M(q,"NOT_READY",this._statusEnumType);this._domainScopedProviders=new Map;this._createEventEmitter=()=>new k}static getInstance(){let t=Re[_e];if(t)return t;let r=new i;return Re[_e]=r,r}getProviderStatus(t){var r,o;return t?(o=(r=this._domainScopedProviders.get(t))==null?void 0:r.status)!=null?o:this._defaultProvider.status:this._defaultProvider.status}setProviderAndWait(t,r,o){return m(this,null,function*(){let s=D(t),n=s?x(r):x(t),d=s?x(o):x(r);d&&(s?this._domainScopedContext.set(s,d):this._context=d),yield this.setAwaitableProvider(s,n)})}setProvider(t,r,o){let s=D(t),n=s?x(r):x(t),d=s?x(o):x(r);d&&(s?this._domainScopedContext.set(s,d):this._context=d);let a=this.setAwaitableProvider(s,n);return Promise.resolve(a).catch(l=>{this._logger.error("Error during provider initialization:",l)}),this}getProvider(t){return this.getProviderForClient(t)}setContext(t,r){return m(this,null,function*(){var n,d;let o=D(t),s=(d=(n=x(t))!=null?n:x(r))!=null?d:{};if(o){let a=this._domainScopedProviders.get(o);if(a){let l=this.getContext(o);this._domainScopedContext.set(o,s),yield this.runProviderContextChangeHandler(o,a,l,s)}else this._domainScopedContext.set(o,s)}else{let a=this._context;this._context=s;let l=Array.from(this._domainScopedProviders.entries()).filter(([v])=>!this._domainScopedContext.has(v)).reduce((v,[_,u])=>(v.push({domain:_,wrapper:u}),v),[]),c=[{domain:void 0,wrapper:this._defaultProvider},...l];yield Promise.all(c.map(v=>this.runProviderContextChangeHandler(v.domain,v.wrapper,a,s)))}})}getContext(t){let r=D(t);if(r){let o=this._domainScopedContext.get(r);if(o)return o;this._logger.debug(`Unable to find context for '${r}'.`)}return this._context}clearContext(t){return m(this,null,function*(){let r=D(t);if(r){let o=this._domainScopedProviders.get(r);if(o){let s=this.getContext(r);this._domainScopedContext.delete(r);let n=this.getContext();yield this.runProviderContextChangeHandler(r,o,s,n)}else this._domainScopedContext.delete(r)}else return this.setContext({})})}clearContexts(){return m(this,null,function*(){yield this.clearContext(),yield Promise.allSettled(Array.from(this._domainScopedProviders.keys()).map(t=>this.clearContext(t)))})}getClient(t,r){return new ee(()=>this.getProviderForClient(t),()=>this.getProviderStatus(t),()=>this.buildAndCacheEventEmitterForClient(t),o=>this.getContext(o),()=>this.getHooks(),()=>this._logger,{domain:t,version:r})}clearProviders(){return m(this,null,function*(){yield Ee(i.prototype,this,"clearProvidersAndSetDefault").call(this,q),this._domainScopedContext.clear()})}runProviderContextChangeHandler(t,r,o,s){return m(this,null,function*(){var d,a,l,c,v,_;let n=((a=(d=r.provider)==null?void 0:d.metadata)==null?void 0:a.name)||"unnamed-provider";try{if(typeof r.provider.onContextChange=="function"){let u=r.provider.onContextChange(o,s);u&&typeof(u==null?void 0:u.then)=="function"&&(r.incrementPendingContextChanges(),r.status=this._statusEnumType.RECONCILING,this.getAssociatedEventEmitters(t).forEach(E=>{E==null||E.emit("PROVIDER_RECONCILING",{domain:t,providerName:n})}),(l=this._apiEmitter)==null||l.emit("PROVIDER_RECONCILING",{domain:t,providerName:n}),yield u,r.decrementPendingContextChanges())}r.status=this._statusEnumType.READY,r.allContextChangesSettled&&(this.getAssociatedEventEmitters(t).forEach(u=>{u==null||u.emit("PROVIDER_CONTEXT_CHANGED",{clientName:t,domain:t,providerName:n})}),(c=this._apiEmitter)==null||c.emit("PROVIDER_CONTEXT_CHANGED",{clientName:t,domain:t,providerName:n}))}catch(u){if(r.decrementPendingContextChanges(),r.status=this._statusEnumType.ERROR,r.allContextChangesSettled){let E=u,O=`Error running ${n}'s context change handler: ${E==null?void 0:E.message}`;(v=this._logger)==null||v.error(`${O}`,u),this.getAssociatedEventEmitters(t).forEach(V=>{V==null||V.emit("PROVIDER_ERROR",{clientName:t,domain:t,providerName:n,message:O})}),(_=this._apiEmitter)==null||_.emit("PROVIDER_ERROR",{clientName:t,domain:t,providerName:n,message:O})}}})}},Ye=te.getInstance();return Fe(Ke);})();
2
2
  //# sourceMappingURL=index.min.js.map