fern-api 5.170.0 → 5.170.1

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.
Files changed (2) hide show
  1. package/cli.cjs +6 -6
  2. package/package.json +1 -1
package/cli.cjs CHANGED
@@ -3461,7 +3461,7 @@ ${pnl.default.cursorShow}`)}releaseCursor(){this.extraLinesUnderPrompt>0&&BJo(th
3461
3461
  `).length),this}updateBottomBar(t){return IHt(this.rl,1),this.rl.output.unmute(),this.clean(),this.bottomBar=t,this.render(),this.rl.output.mute(),this}writeLog(t){return this.rl.output.unmute(),this.clean(),this.rl.output.write(this.enforceLF(t.toString())),this.render(),this.rl.output.mute(),this}enforceLF(t){return/[\n\r]$/.test(t)?t:t+`
3462
3462
  `}write(t){let r=t.split(/\n/);this.height=r.length,this.rl.setPrompt(r.at(-1)),this.rl.output.rows===0&&this.rl.output.columns===0&&xnn(this.rl,t.length+this.rl.line.length),this.rl.output.write(t)}};var am=Ae(_4(),1),Bil=Ae(Z7t(),1);var nin=Ae(_4(),1),Oil=Ae(Z7t(),1),iin=function(e,t,r){return typeof e[t]!="function"?(0,nin.of)(e):(0,nin.from)((0,Oil.default)(e[t])(r).then(n=>(e[t]=n,e)))};var Pil={set:(e,t="",r)=>{let n=e;t.split(".").forEach((i,o,s)=>{i==="__proto__"||i==="constructor"||(o===s.length-1?n[i]=r:(!(i in n)||typeof n[i]!="object")&&(n[i]={}),n=n[i])})},get:(e,t="",r)=>{let n=o=>String.prototype.split.call(t,o).filter(Boolean).reduce((s,a)=>s!=null?s[a]:s,e),i=n(/[,[\]]+?/)||n(/[,.[\]]+?/);return i===void 0||i===e?r:i}},Aft=class extends d5e{constructor(t,r){super(r),this.prompts=t}run(t,r){this.answers=typeof r=="object"?{...r}:{};let n;return Array.isArray(t)?n=(0,am.from)(t):(0,am.isObservable)(t)?n=t:Object.values(t).every(i=>typeof i=="object"&&!Array.isArray(i)&&i!=null)?n=(0,am.from)(Object.entries(t).map(([i,o])=>({name:i,...o}))):n=(0,am.from)([t]),this.process=n.pipe((0,am.concatMap)(this.processQuestion.bind(this)),(0,am.publish)()),this.process.connect(),this.process.pipe((0,am.reduce)((i,o)=>(Pil.set(i,o.name,o.answer),i),this.answers)).toPromise(Promise).then(this.onCompletion.bind(this),this.onError.bind(this))}onCompletion(){return this.close(),this.answers}onError(t){return this.close(),Promise.reject(t)}processQuestion(t){return t={...t},(0,am.defer)(()=>(0,am.of)(t).pipe((0,am.concatMap)(this.setDefaultType.bind(this)),(0,am.concatMap)(this.filterIfRunnable.bind(this)),(0,am.concatMap)(()=>iin(t,"message",this.answers)),(0,am.concatMap)(()=>iin(t,"default",this.answers)),(0,am.concatMap)(()=>iin(t,"choices",this.answers)),(0,am.concatMap)(this.fetchAnswer.bind(this))))}fetchAnswer(t){let r=this.prompts[t.type];return this.activePrompt=new r(t,this.rl,this.answers),(0,am.defer)(()=>(0,am.from)(this.activePrompt.run().then(n=>({name:t.name,answer:n}))))}setDefaultType(t){return this.prompts[t.type]||(t.type="input"),(0,am.defer)(()=>(0,am.of)(t))}filterIfRunnable(t){if(t.askAnswered!==!0&&Pil.get(this.answers,t.name)!==void 0)return am.EMPTY;if(t.when===!1)return am.EMPTY;if(typeof t.when!="function")return(0,am.of)(t);let{answers:r}=this;return(0,am.defer)(()=>(0,am.from)((0,Bil.default)(t.when)(r).then(n=>{if(n)return t})).pipe((0,am.filter)(n=>n!=null)))}};function Ril(e){let t=function(r,n){let i;try{i=new Aft(t.prompts,e)}catch(s){return Promise.reject(s)}let o=i.run(r,n);return o.ui=i,o};return t.prompts={},t.registerPrompt=function(r,n){return t.prompts[r]=n,this},t.restoreDefaultPrompts=function(){this.registerPrompt("list",CHt),this.registerPrompt("input",c5e),this.registerPrompt("number",xHt),this.registerPrompt("confirm",wHt),this.registerPrompt("rawlist",SHt),this.registerPrompt("expand",THt),this.registerPrompt("checkbox",OHt),this.registerPrompt("password",PHt),this.registerPrompt("editor",zHt)},t.restoreDefaultPrompts(),t}var ZYo=Ril();function rah(e,t){ZYo.registerPrompt(e,t)}function nah(){ZYo.restoreDefaultPrompts()}var iah={prompt:ZYo,ui:{BottomBar:QHt,Prompt:Aft},createPromptModule:Ril,registerPrompt:rah,restoreDefaultPrompts:nah,Separator:SM},Pu=iah;var oah=["prod","pre-prod","beta","dev","local"];function sah(e){return oah.some(t=>t===e)}function jJ(e="prod"){let t=e?.trim();return t!=null&&sah(t)?t:"local"}function oin(){let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";return e==null||e.trim().length===0?!1:process.env.FERN_DISABLE_TELEMETRY!=="true"}var yft=require("path");function kil(){let e=aah();return async t=>{for(let r of t)r.module=e(r.filename);return t}}function aah(e=process.argv[1]?(0,yft.dirname)(process.argv[1]):process.cwd(),t=yft.sep==="\\"){let r=t?Dil(e):e;return n=>{if(!n)return;let i=t?Dil(n):n,{dir:o,base:s,ext:a}=yft.posix.parse(i);(a===".js"||a===".mjs"||a===".cjs")&&(s=s.slice(0,-1*a.length));let c=decodeURIComponent(s);o||(o=".");let u=o.lastIndexOf("/node_modules");if(u>-1)return`${o.slice(u+14).replace(/\//g,".")}:${c}`;if(o.startsWith(r)){let l=o.slice(r.length+1).replace(/\//g,".");return l?`${l}:${c}`:c}return c}}function Dil(e){return e.replace(/^[A-Z]:/,"").replace(/\\/g,"/")}var nO={};te(nO,{DEFAULT_EXCEPTION_STEPS_CONFIG:()=>Cin,DOMExceptionCoercer:()=>hXo,EXCEPTION_STEP_INTERNAL_FIELDS:()=>KHt,ErrorCoercer:()=>GHt,ErrorEventCoercer:()=>gXo,ErrorPropertiesBuilder:()=>VHt,EventCoercer:()=>AXo,ExceptionStepsBuffer:()=>IXo,ObjectCoercer:()=>WHt,PrimitiveCoercer:()=>HHt,PromiseRejectionEventCoercer:()=>yXo,ReduceableCache:()=>bXo,StringCoercer:()=>qHt,chromeStackLineParser:()=>pXo,createDefaultStackParser:()=>mXo,createStackParser:()=>Iol,geckoStackLineParser:()=>fXo,getInjectedReleaseId:()=>Ich,getUtf8ByteLength:()=>Col,nodeStackLineParser:()=>hol,opera10StackLineParser:()=>fol,opera11StackLineParser:()=>dol,resolveExceptionStepsConfig:()=>EXo,reverseAndStripFrames:()=>Eol,stripReservedExceptionStepFields:()=>ych,winjsStackLineParser:()=>pol});var OM=(function(e){return e.AnonymousId="anonymous_id",e.DistinctId="distinct_id",e.Props="props",e.EnablePersonProcessing="enable_person_processing",e.PersonMode="person_mode",e.FeatureFlagDetails="feature_flag_details",e.FeatureFlags="feature_flags",e.FeatureFlagPayloads="feature_flag_payloads",e.BootstrapFeatureFlagDetails="bootstrap_feature_flag_details",e.BootstrapFeatureFlags="bootstrap_feature_flags",e.BootstrapFeatureFlagPayloads="bootstrap_feature_flag_payloads",e.OverrideFeatureFlags="override_feature_flags",e.Queue="queue",e.AiQueue="ai_queue",e.AiCaptureQueue="ai_capture_queue",e.LogsQueue="logs_queue",e.OptedOut="opted_out",e.SessionId="session_id",e.SessionStartTimestamp="session_start_timestamp",e.SessionLastTimestamp="session_timestamp",e.PersonProperties="person_properties",e.GroupProperties="group_properties",e.InstalledAppBuild="installed_app_build",e.InstalledAppVersion="installed_app_version",e.SessionReplay="session_replay",e.PushRegistered="push_registered",e.SessionReplayEventTriggerActivatedSession="session_replay_event_trigger_activated_session",e.SurveyLastSeenDate="survey_last_seen_date",e.SurveysInProgress="surveys_in_progress",e.SurveysSeen="surveys_seen",e.Surveys="surveys",e.RemoteConfig="remote_config",e.FlagsEndpointWasHit="flags_endpoint_was_hit",e.DeviceId="device_id",e})({});function u1e(e){let t=[];return JSON.stringify(e,function(r,n){if(typeof n=="bigint")return n.toString();if(!(typeof n=="function"||typeof n=="symbol")){if(n instanceof Error)return{name:n.name,message:n.message,stack:n.stack};if(n&&typeof n=="object"){for(;t.length>0&&t[t.length-1]!==this;)t.pop();if(t.includes(n))return"[Circular]";t.push(n)}return n}})??"null"}var cah=Array.isArray,Nil=Object.prototype,fqv=Nil.hasOwnProperty,sin=Nil.toString,V4=cah||function(e){return sin.call(e)==="[object Array]"};var MHt=e=>e===Object(e)&&!V4(e);var Vhe=e=>e===void 0,rk=e=>sin.call(e)=="[object String]",$Yo=e=>rk(e)&&e.trim().length===0,eXo=e=>e===null,zJ=e=>Vhe(e)||eXo(e),bft=e=>sin.call(e)=="[object Number]"&&e===e;var jil=e=>sin.call(e)==="[object Boolean]";function ain(e){return e===null||typeof e!="object"}function m5e(e,t){return Object.prototype.toString.call(e)===`[object ${t}]`}function l1e(e){switch(Object.prototype.toString.call(e)){case"[object Error]":case"[object Exception]":case"[object DOMException]":case"[object DOMError]":case"[object WebAssembly.Exception]":return!0;default:return Mil(e,Error)}}function zil(e){return m5e(e,"ErrorEvent")}function Eft(e){return"u">typeof Event&&Mil(e,Event)}function Qil(e){return m5e(e,"Object")}function Mil(e,t){try{return e instanceof t}catch{return!1}}var uah=["amazonbot","amazonproductbot","app.hypefactors.com","applebot","archive.org_bot","awariobot","backlinksextendedbot","baiduspider","bingbot","bingpreview","chrome-lighthouse","dataforseobot","deepscan","duckduckbot","facebookexternal","facebookcatalog","http://yandex.com/bots","hubspot","ia_archiver","leikibot","linkedinbot","meta-externalagent","mj12bot","msnbot","nessus","petalbot","pinterestbot","prerender","rogerbot","screaming frog","sebot-wa","sitebulb","slackbot","slurp","trendictionbot","turnitin","twitterbot","vercel-screenshot","vercelbot","yahoo! slurp","yandexbot","zoombot","bot.htm","bot.php","(bot;","bot/","crawler","ahrefsbot","ahrefssiteaudit","semrushbot","siteauditbot","splitsignalbot","gptbot","oai-searchbot","chatgpt-user","perplexitybot","better uptime bot","sentryuptimebot","uptimerobot","headlesschrome","cypress","google-hoteladsverifier","adsbot-google","apis-google","duplexweb-google","feedfetcher-google","google favicon","google web preview","google-read-aloud","googlebot","googleother","google-cloudvertexbot","googleweblight","mediapartners-google","storebot-google","google-inspectiontool","bytespider"],cin=new Map,lah=256;function pah(e,t){let r="";for(let n=0;n<t.length;n++){let i=t[n];r+=i.length+":"+i}return e.length+":"+e+"|"+t.length+":"+r}var Lil=function(e,t=[]){if(!e)return!1;let r=pah(e,t),n=cin.get(r);if(n!==void 0)return n;let i=e.toLowerCase(),o=uah.concat(t).some(s=>i.indexOf(s.toLowerCase())!==-1);return cin.size>=lah&&cin.clear(),cin.set(r,o),o};function LHt(e,t,r,n,i){return t>r&&(n.warn("min cannot be greater than max."),t=r),bft(e)?e>r?(n.warn(" cannot be greater than max: "+r+". Using max value instead."),r):e<t?(n.warn(" cannot be less than min: "+t+". Using min value instead."),t):e:(n.warn(" must be a number. using max or fallback. max: "+r+", fallback: "+i),LHt(i??r,t,r,n))}var fah=864e5,dah=1,mah=10;function _il(e={}){return{refillRate:e.exceptionRateLimiterRefillRate??e.__exceptionRateLimiterRefillRate??dah,bucketSize:e.exceptionRateLimiterBucketSize??e.__exceptionRateLimiterBucketSize??mah}}var uin=class{constructor(t){this._buckets={},this._onBucketRateLimited=t._onBucketRateLimited,this._bucketSize=LHt(t.bucketSize,0,100,t._logger),this._refillRate=LHt(t.refillRate,0,this._bucketSize,t._logger),this._refillInterval=LHt(t.refillInterval,0,fah,t._logger)}_applyRefill(t,r){let n=r-t.lastAccess,i=Math.floor(n/this._refillInterval);if(i>0){let o=i*this._refillRate;t.tokens=Math.min(t.tokens+o,this._bucketSize),t.lastAccess=t.lastAccess+i*this._refillInterval}}consumeRateLimit(t){let r=Date.now(),n=String(t),i=this._buckets[n];return i?this._applyRefill(i,r):(i={tokens:this._bucketSize,lastAccess:r},this._buckets[n]=i),i.tokens===0?!0:(i.tokens--,i.tokens===0&&this._onBucketRateLimited?.(t),i.tokens===0)}stop(){this._buckets={}}};var lin="0123456789abcdef",pin=class e{constructor(t){this.bytes=t}static ofInner(t){if(t.length===16)return new e(t);throw new TypeError("not 128-bit length")}static fromFieldsV7(t,r,n,i){if(!Number.isInteger(t)||!Number.isInteger(r)||!Number.isInteger(n)||!Number.isInteger(i)||t<0||r<0||n<0||i<0||t>0xffffffffffff||r>4095||n>1073741823||i>4294967295)throw new RangeError("invalid field value");let o=new Uint8Array(16);return o[0]=t/2**40,o[1]=t/2**32,o[2]=t/2**24,o[3]=t/2**16,o[4]=t/256,o[5]=t,o[6]=112|r>>>8,o[7]=r,o[8]=128|n>>>24,o[9]=n>>>16,o[10]=n>>>8,o[11]=n,o[12]=i>>>24,o[13]=i>>>16,o[14]=i>>>8,o[15]=i,new e(o)}static parse(t){let r;switch(t.length){case 32:r=/^[0-9a-f]{32}$/i.exec(t)?.[0];break;case 36:r=/^([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break;case 38:r=/^\{([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})\}$/i.exec(t)?.slice(1,6).join("");break;case 45:r=/^urn:uuid:([0-9a-f]{8})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{4})-([0-9a-f]{12})$/i.exec(t)?.slice(1,6).join("");break;default:break}if(r){let n=new Uint8Array(16);for(let i=0;i<16;i+=4){let o=parseInt(r.substring(2*i,2*i+8),16);n[i+0]=o>>>24,n[i+1]=o>>>16,n[i+2]=o>>>8,n[i+3]=o}return new e(n)}throw new SyntaxError("could not parse UUID string")}toString(){let t="";for(let r=0;r<this.bytes.length;r++)t+=lin.charAt(this.bytes[r]>>>4),t+=lin.charAt(15&this.bytes[r]),(r===3||r===5||r===7||r===9)&&(t+="-");return t}toHex(){let t="";for(let r=0;r<this.bytes.length;r++)t+=lin.charAt(this.bytes[r]>>>4),t+=lin.charAt(15&this.bytes[r]);return t}toJSON(){return this.toString()}getVariant(){let t=this.bytes[8]>>>4;if(t<0)throw new Error("unreachable");if(t<=7)return this.bytes.every(r=>r===0)?"NIL":"VAR_0";if(t<=11)return"VAR_10";if(t<=13)return"VAR_110";if(t<=15)return this.bytes.every(r=>r===255)?"MAX":"VAR_RESERVED";throw new Error("unreachable")}getVersion(){return this.getVariant()==="VAR_10"?this.bytes[6]>>>4:void 0}clone(){return new e(this.bytes.slice(0))}equals(t){return this.compareTo(t)===0}compareTo(t){for(let r=0;r<16;r++){let n=this.bytes[r]-t.bytes[r];if(n!==0)return Math.sign(n)}return 0}},tXo=class{constructor(t){this.timestamp=0,this.counter=0,this.random=t??hah()}generate(){return this.generateOrResetCore(Date.now(),1e4)}generateOrAbort(){return this.generateOrAbortCore(Date.now(),1e4)}generateOrResetCore(t,r){let n=this.generateOrAbortCore(t,r);return n===void 0&&(this.timestamp=0,n=this.generateOrAbortCore(t,r)),n}generateOrAbortCore(t,r){if(!Number.isInteger(t)||t<1||t>0xffffffffffff)throw new RangeError("`unixTsMs` must be a 48-bit positive integer");if(r<0||r>0xffffffffffff)throw new RangeError("`rollbackAllowance` out of reasonable range");if(t>this.timestamp)this.timestamp=t,this.resetCounter();else{if(!(t+r>=this.timestamp))return;this.counter++,this.counter>4398046511103&&(this.timestamp++,this.resetCounter())}return pin.fromFieldsV7(this.timestamp,Math.trunc(this.counter/2**30),this.counter&2**30-1,this.random.nextUint32())}resetCounter(){this.counter=1024*this.random.nextUint32()+(1023&this.random.nextUint32())}generateV4(){let t=new Uint8Array(Uint32Array.of(this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32(),this.random.nextUint32()).buffer);return t[6]=64|t[6]>>>4,t[8]=128|t[8]>>>2,pin.ofInner(t)}},hah=()=>({nextUint32:()=>65536*Math.trunc(65536*Math.random())+Math.trunc(65536*Math.random())>>>0}),Uil,jN=()=>gah().toString(),gah=()=>(Uil||(Uil=new tXo)).generate();var fin=class{add(t){let r=jN(),n=++this.nextId;return this.promiseByIds[r]={id:n,promise:t},t.catch(()=>{}).finally(()=>{delete this.promiseByIds[r]}),t}async join(){let t=Object.values(this.promiseByIds).map(n=>n.promise),r=t.length;for(;r>0;)await Promise.all(t),t=Object.values(this.promiseByIds).map(n=>n.promise),r=t.length}getPromises(t=[],r=this.nextId){let n=new Set(t);return Object.values(this.promiseByIds).filter(i=>i.id<=r&&!n.has(i.promise)).map(i=>i.promise)}get maxId(){return this.nextId}get length(){return Object.keys(this.promiseByIds).length}constructor(){this.promiseByIds={},this.nextId=0}};function Aah(e=console){return{log:e.log.bind(e),warn:e.warn.bind(e),error:e.error.bind(e),debug:e.debug.bind(e)}}var Vil=(e,t,r)=>{function n(o,...s){t(()=>{let a=r[o];a(e,...s)})}return{debug:(...o)=>{n("debug",...o)},info:(...o)=>{n("log",...o)},warn:(...o)=>{n("warn",...o)},error:(...o)=>{n("error",...o)},critical:(...o)=>{r.error(e,...o)},createLogger:o=>Vil(`${e} ${o}`,t,r)}},yah=e=>e();function Gil(e,t=yah){return Vil(e,t,Aah())}var vft="Mobile",min="iOS",Ift="Android",Jil="Tablet",Tqv=Ift+" "+Jil;var Eah="Apple",Oqv=Eah+" Watch",Yil="Safari",hin="BlackBerry",Xil="Samsung",Iah=Xil+"Browser",vah=Xil+" Internet",gin="Chrome",Cah=gin+" OS",xah=gin+" "+min,Zil="Internet Explorer",wah=Zil+" "+vft,iXo="Opera",Pqv=iXo+" Mini",$il="Edge",Sah="Microsoft "+$il,oXo="Firefox",Tah=oXo+" "+min,sXo="Nintendo",aXo="PlayStation",din="Xbox",Oah=Ift+" "+vft,Pah=vft+" "+Yil,_Ht="Windows",Bah=_Ht+" Phone";var eol="Generic",Bqv=eol+" "+vft.toLowerCase(),Rqv=eol+" "+Jil.toLowerCase(),Rah="Konqueror",Dah="Oculus Browser",qil="Vivaldi",kah="Yandex",Wil="Whale",Fah="DuckDuckGo",Nah="Pale Moon",Hil="Waterfox",Kil="Brave",tol="Claude",rol="Codex",nol="ChatGPT",jah="Google Search App",E0="(\\d+(\\.\\d+)?)",rXo=new RegExp("Version/"+E0),nXo=new RegExp("("+tol+"|"+rol+"|"+nol+")\\/"+E0);var Dqv=new RegExp(din,"i"),kqv=new RegExp(aXo+" \\w+","i"),Fqv=new RegExp(sXo+" \\w+","i"),zah=new RegExp(hin+"|PlayBook|BB10","i"),Qah={"NT3.51":"NT 3.11","NT4.0":"NT 4.0","5.0":"2000","5.1":"XP","5.2":"XP","6.0":"Vista","6.1":"7","6.2":"8","6.3":"8.1","6.4":"10","10.0":"10"};var Nqv={[wah]:[new RegExp("rv:"+E0)],[Sah]:[new RegExp($il+"?\\/"+E0)],[gin]:[new RegExp("("+gin+"|CrMo)\\/"+E0)],[xah]:[new RegExp("CriOS\\/"+E0)],"UC Browser":[new RegExp("(UCBrowser|UCWEB)\\/"+E0)],[Yil]:[rXo],[Pah]:[rXo],[iXo]:[new RegExp("("+iXo+"|OPR)\\/"+E0)],[oXo]:[new RegExp(oXo+"\\/"+E0)],[Tah]:[new RegExp("FxiOS\\/"+E0)],[Rah]:[new RegExp("Konqueror[:/]?"+E0,"i")],[hin]:[new RegExp(hin+" "+E0),rXo],[Oah]:[new RegExp("android\\s"+E0,"i")],[vah]:[new RegExp(Iah+"\\/"+E0)],[Dah]:[new RegExp("OculusBrowser\\/"+E0)],[qil]:[new RegExp(qil+"\\/"+E0)],[kah]:[new RegExp("YaBrowser\\/"+E0)],[Wil]:[new RegExp(Wil+"\\/"+E0)],[Kil]:[new RegExp(Kil+"\\/"+E0)],[tol]:[nXo],[rol]:[nXo],[nol]:[nXo],[Fah]:[new RegExp("(DuckDuckGo|Ddg)\\/"+E0)],[Nah]:[new RegExp("PaleMoon\\/"+E0)],[Hil]:[new RegExp(Hil+"\\/"+E0)],[jah]:[new RegExp("GSA\\/"+E0)],[Zil]:[new RegExp("(rv:|MSIE )"+E0)],Mozilla:[new RegExp("rv:"+E0)]};var jqv=[[new RegExp(din+"; "+din+" (.*?)[);]","i"),e=>[din,e&&e[1]||""]],[new RegExp(sXo,"i"),[sXo,""]],[new RegExp(aXo,"i"),[aXo,""]],[zah,[hin,""]],[new RegExp(_Ht,"i"),(e,t)=>{if(/Phone/.test(t)||/WPDesktop/.test(t))return[Bah,""];if(new RegExp(vft).test(t)&&!/IEMobile\b/.test(t))return[_Ht+" "+vft,""];let r=/Windows NT ([0-9.]+)/i.exec(t);if(r&&r[1]){let n=r[1],i=Qah[n]||"";return/arm/i.test(t)&&(i="RT"),[_Ht,i]}return[_Ht,""]}],[/((iPhone|iPad|iPod).*?OS (\d+)_(\d+)_?(\d+)?|iPhone)/,e=>{if(e&&e[3]){let t=[e[3],e[4],e[5]||"0"];return[min,t.join(".")]}return[min,""]}],[/(watch.*\/(\d+\.\d+\.\d+)|watch os,(\d+\.\d+),)/i,e=>{let t="";return e&&e.length>=3&&(t=Vhe(e[2])?e[3]:e[2]),["watchOS",t]}],[new RegExp("("+Ift+" (\\d+)\\.(\\d+)\\.?(\\d+)?|"+Ift+")","i"),e=>{if(e&&e[2]){let t=[e[2],e[3],e[4]||"0"];return[Ift,t.join(".")]}return[Ift,""]}],[/Mac OS X (\d+)[_.](\d+)[_.]?(\d+)?/i,e=>{let t=["Mac OS X",""];if(e&&e[1]){let r=[e[1],e[2],e[3]||"0"];t[1]=r.join(".")}return t}],[/Mac/i,["Mac OS X",""]],[/CrOS/,[Cah,""]],[/Linux|debian/i,["Linux",""]]];var Ain="[Circular]",yin="[Truncated]",_8="[Unserializable]",iol="[Function]",Mqv=Date.prototype.getTime,Lqv=Date.prototype.toISOString;function mne(e){let t="";for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if(n>=55296&&n<=56319){let i=e.charCodeAt(r+1);i>=56320&&i<=57343?(t+=e[r]+e[r+1],r++):t+="\uFFFD"}else t+=n>=56320&&n<=57343?"\uFFFD":e[r]}return t}function Ghe(e,t){if(!t)return e;let r=[];try{r=Object.keys(t)}catch{r=[]}for(let n of r){let i;try{i=t[n]}catch{i=_8}Object.defineProperty(e,n,{value:i,enumerable:!0,writable:!0,configurable:!0})}return e}function cXo(e,t=Date.now()){if(typeof e!="string"||!e)return;let r=e.trim(),n=/^\d+\s*,/.test(r)?r.slice(0,r.indexOf(",")).trim():r;if(/^\d+$/.test(n)){let s=1e3*Math.min(Number(n),300);return s>0?s:void 0}if(!/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun)[a-z]*[ ,]/.test(n))return;let i=/^\w{3} \w{3} /.test(n)?n+" GMT":n,o=Date.parse(i)-t;if(!(!Number.isFinite(o)||o<=0))return Math.min(o,3e5)}var h5e=class{record(t){if(t.kind==="too-large")return;if(t.kind!=="retry-later")return void this.reset();if(!t.retryAfterMs)return;let r=this.isOpen(),n=Date.now(),i=Math.min(t.retryAfterMs,3e5);if(!r){this._installedAt=n,this._until=n+i;return}this._until=Math.max(this._until,Math.min(n+i,this._installedAt+3e5))}remainingMs(){let t=Date.now();if(t<this._installedAt-5e3)return this.reset(),0;let r=Math.min(3e5,Math.max(0,this._until-t));return r===0&&this.reset(),r}isOpen(){return this.remainingMs()>0}reset(){this._until=0,this._installedAt=0}constructor(){this._until=0,this._installedAt=0}};var ool="utf8",Mah=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Lah(e){return typeof e=="string"&&Mah.test(e)}function g5e(e,t){return Lah(e)?e:t()}function Cft(e,t){let r=new Error(t);try{Object.defineProperty(r,"name",{value:e,writable:!0,enumerable:!0,configurable:!0})}catch{}return r}function sol(e){return e?.replace(/\/+$/,"")}async function aol(e,t){let r=null;for(let n=0;n<t.retryCount+1;n++){n>0&&await new Promise(i=>setTimeout(i,t.retryDelay));try{return await e()}catch(i){if(r=i,!t.retryCheck(i))throw i}}throw r}function uXo(){return new Date().toISOString()}function zN(e,t){let r=setTimeout(e,t);return r?.unref&&r?.unref(),r}async function p1e(e,t,r){let n;try{return await Promise.race([e,new Promise((i,o)=>{n=zN(()=>{try{r?.(),i()}catch(s){o(s)}},t)})])}finally{clearTimeout(n)}}var col=e=>e&&typeof e.then=="function";function UHt(e){return Promise.all(e.map(t=>(t??Promise.resolve()).then(r=>({status:"fulfilled",value:r}),r=>({status:"rejected",reason:r}))))}var bin,uol,Ein;function lol(e){let t=globalThis._posthogChunkIds;if(!t)return;let r=Object.keys(t);return Ein&&r.length===uol||(uol=r.length,Ein=r.reduce((n,i)=>{bin||(bin={});let o=bin[i];if(o)n[o[0]]=o[1];else{let s=e(i);for(let a=s.length-1;a>=0;a--){let u=s[a]?.filename,l=t[i];if(u&&l){n[u]=l,bin[i]=[u,l];break}}}return n},{})),Ein}var lXo=50,_ah=1e3,Uah=100,Vah=4,VHt=class{constructor(t,r,n=[]){this.coercers=t,this.stackParser=r,this.modifiers=n}buildFromUnknown(t,r={}){let i=r&&r.mechanism||{handled:!0,type:"generic"},s=this.buildCoercingContext(i,r,0).apply(t),a=this.buildParsingContext(r),c=this.parseStacktrace(s,a);return{$exception_list:this.convertToExceptionList(c,i),$exception_level:"error"}}async modifyFrames(t){for(let r of t)r.stacktrace&&r.stacktrace.frames&&V4(r.stacktrace.frames)&&(r.stacktrace.frames=await this.applyModifiers(r.stacktrace.frames));return t}coerceFallback(t){return{type:"Error",value:"Unknown error",stack:t.syntheticException?.stack,synthetic:!0}}parseStacktrace(t,r){let n;t.cause!=null&&(n=this.parseStacktrace(t.cause,r));let i;if(t.stack!=""&&t.stack!=null)try{i=this.applyChunkIds(this.stackParser(t.stack,t.synthetic?r.skipFirstLines:0),r.chunkIdMap)}catch{}return{...t,cause:n,stack:i,errors:t.errors?.map(o=>this.parseStacktrace(o,r))}}applyChunkIds(t,r){return t.map(n=>(n.filename&&r&&(n.chunk_id=r[n.filename]),n))}applyCoercers(t,r){for(let n of this.coercers)if(n.match(t))return n.coerce(t,r);return this.coerceFallback(r)}async applyModifiers(t){let r=t;for(let n of this.modifiers)r=await n(r);return r}convertToExceptionList(t,r){let n=[],i=(o,s,a)=>{let c=n.length,u=s===void 0?{type:typeof r.type=="string"&&r.type.length>0?r.type:"generic",...typeof r.handled=="boolean"?{handled:r.handled}:r.handled===void 0?{handled:!0}:{},synthetic:typeof r.synthetic=="boolean"?r.synthetic:o.synthetic,exception_id:c}:{type:"chained",source:a,synthetic:o.synthetic,exception_id:c,parent_id:s},l={type:o.type,value:o.value,mechanism:u};o.stack&&(l.stacktrace={type:"raw",frames:o.stack}),n.push(l),o.cause&&i(o.cause,c,"cause");for(let p of o.errors??[])i(p,c,"member")};return i(t),n}buildParsingContext(t){return{chunkIdMap:lol(this.stackParser),skipFirstLines:t.skipFirstLines??1}}getAggregateErrors(t){try{if(l1e(t)){let r=Object.getPrototypeOf(t);for(let n=0;r&&n<Uah;n++){let i=Object.getOwnPropertyDescriptor(r,"constructor")?.value;if(typeof i=="function"&&i.name==="AggregateError"){let o=t.errors;return V4(o)?o:void 0}r=Object.getPrototypeOf(r)}}}catch{}}buildCoercingContext(t,r,n=0){let i=0,o=0,s=!1,a=new Set,c=[],u={},l=(f,m,g=0)=>{let A=p(m,g),y=A.apply;if(A.apply=R=>{c.push(f);try{return y(R)}finally{c.pop()}},g>Vah||g>0&&c.indexOf(f)!==-1)return this.coerceFallback(A);let I=typeof f=="object"&&f!==null||typeof f=="function";if(g===0&&i>=lXo||I&&a.has(f))return;I&&a.add(f),g===0&&i++;let x=this.getAggregateErrors(f);s||=!!x;let v;try{if(v=this.applyCoercers(f,A),!v)throw u}catch(R){if(R===u){g===0&&i--;return}if(!s)throw R;v=this.coerceFallback(A)}if(!x||i>=lXo)return v;let w;try{w=x.length}catch{return v}if(!Number.isInteger(w)||w<0||w>4294967295)return v;let B=[];for(let R=0;i<lXo&&o<_ah&&R<w;R++){o++;let D;try{D=A.next(x[R])}catch{i++,D=this.coerceFallback(p(m+1))}D&&B.push(D)}return{...v,errors:B}},p=(f,m=0)=>({...r,syntheticException:f==0?r.syntheticException:void 0,mechanism:f==0?t:{},apply:g=>{let A=l(g,f,m+1);if(!A)throw u;return A},next:g=>l(g,f+1)}),d=p(n);return{...d,apply:f=>l(f,n)??this.coerceFallback(d)}}};var tR="?",Gah="<anonymous>",qah=/^([a-z][a-z0-9.+-]+):/i,Wah=["http","https","file","blob","app","capacitor","ionic","webpack","webpack-internal","ng"];function Hah(e){if(!e||e===Gah)return!1;let t=qah.exec(e);return!t||Wah.includes(t[1].toLowerCase())}function hne(e,t,r,n,i){let o={platform:e,filename:t,function:r==="<anonymous>"?tR:r,in_app:Hah(t)};return Vhe(n)||(o.lineno=n),Vhe(i)||(o.colno=i),o}var Iin=(e,t)=>{let r=e.indexOf("safari-extension")!==-1,n=e.indexOf("safari-web-extension")!==-1;return r||n?[e.indexOf("@")!==-1?e.split("@")[0]:tR,r?`safari-extension:${t}`:`safari-web-extension:${t}`]:[e,t]};var Kah=/^\s*at (\S+?)(?::(\d+))(?::(\d+))\s*$/i,Jah=/^\s*at (?:(.+?\)(?: \[.+\])?|.*?) ?\((?:address at )?)?(?:async )?((?:<anonymous>|[-a-z]+:|.*bundle|\/)?.*?)(?::(\d+))?(?::(\d+))?\)?\s*$/i,Yah=/\((\S*)(?::(\d+))(?::(\d+))\)/,pXo=(e,t)=>{let r=Kah.exec(e);if(r){let[,i,o,s]=r;return hne(t,i,tR,+o,+s)}let n=Jah.exec(e);if(n){if(n[2]&&n[2].indexOf("eval")===0){let a=Yah.exec(n[2]);a&&(n[2]=a[1],n[3]=a[2],n[4]=a[3])}let[o,s]=Iin(n[1]||tR,n[2]);return hne(t,s,o,n[3]?+n[3]:void 0,n[4]?+n[4]:void 0)}};var Xah=/^\s*(.*?)(?:\((.*?)\))?(?:^|@)?((?:[-a-z]+)?:\/.*?|\[native code\]|[^@]*(?:bundle|\d+\.js)|\/[\w\-. /=]+)(?::(\d+))?(?::(\d+))?\s*$/i,Zah=/(\S+) line (\d+)(?: > eval line \d+)* > eval/i,fXo=(e,t)=>{let r=Xah.exec(e);if(r){if(r[3]&&r[3].indexOf(" > eval")>-1){let s=Zah.exec(r[3]);s&&(r[1]=r[1]||"eval",r[3]=s[1],r[4]=s[2],r[5]="")}let i=r[3],o=r[1]||tR;return[o,i]=Iin(o,i),hne(t,i,o,r[4]?+r[4]:void 0,r[5]?+r[5]:void 0)}};var $ah=/^\s*at (?:((?:\[object object\])?.+) )?\(?((?:[-a-z]+):.*?):(\d+)(?::(\d+))?\)?\s*$/i,pol=(e,t)=>{let r=$ah.exec(e);return r?hne(t,r[2],r[1]||tR,+r[3],r[4]?+r[4]:void 0):void 0};var ech=/ line (\d+).*script (?:in )?(\S+)(?:: in function (\S+))?$/i,fol=(e,t)=>{let r=ech.exec(e);return r?hne(t,r[2],r[3]||tR,+r[1]):void 0},tch=/ line (\d+), column (\d+)\s*(?:in (?:<anonymous function: ([^>]+)>|([^)]+))\(.*\))? in (.*):\s*$/i,dol=(e,t)=>{let r=tch.exec(e);return r?hne(t,r[5],r[3]||r[4]||tR,+r[1],+r[2]):void 0};var rch=/^\s*[-]{4,}$/,nch=/at (?:async )?(?:(.+?)\s+\()?(?:(.+):(\d+):(\d+)?|([^)]+))\)?/,ich=/^Promise\.(?:all|any)$/,och=/^index \d+$/,sch="node:internal/promise",hol=(e,t)=>{let r=e.match(nch);if(r){let n,i,o,s,a;if(r[1]){o=r[1];let l=o.lastIndexOf(".");if(o[l-1]==="."&&l--,l>0){n=o.slice(0,l),i=o.slice(l+1);let p=n.indexOf(".Module");p>0&&(o=o.slice(p+1),n=n.slice(0,p))}s=void 0}i&&(s=n,a=i),i==="<anonymous>"&&(a=void 0,o=void 0),o===void 0&&(a=a||tR,o=s?`${s}.${a}`:a);let c=r[2]?.startsWith("file://")?r[2].slice(7):r[2],u=r[5]==="native";return c?.match(/\/[A-Z]:/)&&(c=c.slice(1)),!c&&r[5]&&!u&&(c=r[5]),ich.test(o)&&och.test(c||"")&&(c=sch),{filename:c?decodeURI(c):void 0,module:void 0,function:o,lineno:mol(r[3]),colno:mol(r[4]),in_app:ach(c||"",u),platform:t}}if(e.match(rch))return{filename:e,platform:t}};function ach(e,t=!1){return!(t||e&&!e.startsWith("/")&&!e.match(/^[A-Z]:/)&&!e.startsWith(".")&&!e.match(/^[a-zA-Z]([a-zA-Z0-9.\-+])*:\/\//))&&e!==void 0&&!e.includes("node_modules/")}function mol(e){return parseInt(e||"",10)||void 0}var gol=/\(error: (.*)\)/,Aol=50,cch=10,uch=1e3;function dXo(e,t){return e.filename===t.filename&&e.function===t.function&&e.module===t.module&&e.lineno===t.lineno&&e.colno===t.colno}function lch(e){for(let t=1;t<=cch;t++){let r=e.length-2*t;if(r<0)break;let n=!0;for(let i=0;i<t;i++){let o=e[r+i];if(!dXo(o,e[r+t+i])){n=!1;break}}if(n){for(let i=0;i<t;i++)e[r+i]=e[r+t+i];return e.length=r+t,{start:r,length:t}}}}function pch(e,t){let r=t.start+t.length,n=bol(e,t);n&&e.splice(r+n===e.length?r:t.start,n)}function yol(e,t){let r=t.start;for(;r>0&&dXo(e[r-1],e[r-1+t.length]);)r--;return t.start-r}function bol(e,t){let r=t.start+t.length,n=r;for(;n<e.length&&dXo(e[n],e[n-t.length]);)n++;return n-r}function fch(e,t){let r=t[0],n=e.length-(r?yol(e,r):0);for(let i of t)n-=bol(e,i);return n}function dch(e){let t=e.map(n=>`${n.function}|${n.filename}|${n.lineno}|${n.colno}|${n.module}`),r=0;for(let n=1;n<t.length;n++)mch(t,n,r)&&(r=n);e.push(...e.splice(0,r))}function mch(e,t,r){for(let n=0;n<e.length;n++){let i=e[(t+n)%e.length],o=e[(r+n)%e.length];if(i!==o)return i<o}return!1}function Eol(e){if(!e.length)return[];let t=Array.from(e);return t.reverse(),t.slice(0,Aol).map(r=>({...r,filename:r.filename||hch(t).filename,function:r.function||tR}))}function hch(e){return e[e.length-1]||{}}function mXo(){return Iol("web:javascript",pXo,fXo)}function Iol(e,...t){return(r,n=0)=>{let i=[],o=r.split(`
3463
3463
  `),s=Math.min(o.length,n+uch),a=[];for(let l=n;l<s;l++){let p=o[l];if(p.length>1024)continue;let d=gol.test(p)?p.replace(gol,"$1"):p;if(!d.match(/\S*Error: /)){for(let f of t){let m=f(d,e);if(m){i.push(m);let g=lch(i);if(g){for(let A=a.length-1;A>=0;A--){let y=a[A];if(y.start+y.length<=g.start)break;a.pop()}a.push(g)}break}}if(fch(i,a)>=Aol)break}}let c=[...a].sort((l,p)=>p.start-l.start),u=c[c.length-1];if(u){let l=yol(i,u);i.splice(u.start-l,l);for(let p of c)p.start-=l}for(let l of c)pch(i,l);return a.some(l=>l.start===0&&i.length===l.length)&&dch(i),Eol(i)}}var hXo=class{match(t){return this.isDOMException(t)||this.isDOMError(t)}coerce(t,r){let n=rk(t.stack);return{type:this.getType(t),value:this.getValue(t),stack:n?t.stack:void 0,cause:t.cause?r.next(t.cause):void 0,synthetic:!1}}getType(t){return this.isDOMError(t)?"DOMError":"DOMException"}getValue(t){let r=t.name||(this.isDOMError(t)?"DOMError":"DOMException");return t.message?`${r}: ${t.message}`:r}isDOMException(t){return m5e(t,"DOMException")}isDOMError(t){return m5e(t,"DOMError")}};var GHt=class{match(t){return l1e(t)}coerce(t,r){let n=this.getStack(t),i=n===void 0?r.syntheticException?.stack:void 0,o=!!i;return{type:this.getType(t),value:this.getMessage(t,r),stack:n??i,cause:t.cause?r.next(t.cause):void 0,synthetic:o}}getType(t){return t.name||t.constructor.name}getMessage(t,r){let n=t.message;return n.error&&typeof n.error.message=="string"?String(n.error.message):String(n)}getStack(t){try{let r=t.stacktrace;if(typeof r=="string"&&r.length>0)return r;let n=t.stack;return typeof n=="string"&&n.length>0?n:void 0}catch{return}}};var gXo=class{match(t){if(!zil(t))return!1;let r=t;return r.error!=null||this._hasUsableMessage(r)}coerce(t,r){if(t.error!=null)return r.apply(t.error);let n=r.apply(t.message);return{...n,stack:this._buildLocationStack(t)??n.stack,synthetic:!0}}_hasUsableMessage(t){return rk(t.message)&&t.message.length>0}_buildLocationStack(t){let r=t,n=r.lineno??0,i=r.colno??0;if(!(!rk(r.filename)||r.filename.length===0)&&n!==0)return`Error
3464
- at ${r.filename}:${n}:${i}`}};var gch=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,qHt=class{match(t){return typeof t=="string"}coerce(t,r){let[n,i]=this.getInfos(t);return{type:n??"Error",value:i??t,stack:r.syntheticException?.stack,synthetic:!0}}getInfos(t){let r="Error",n=t,i=t.match(gch);return i&&(r=i[1],n=i[2]),[r,n]}};var vol=["fatal","error","warning","log","info","debug"];function vin(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let n=r.length;n>0;n--){let i=r.slice(0,n).join(", ");if(!(i.length>t))return n===r.length||i.length<=t?i:`${i.slice(0,t)}...`}return""}var WHt=class{match(t){return typeof t=="object"&&t!==null}coerce(t,r){let n=this.getErrorPropertyFromObject(t);return n?r.apply(n):{type:this.getType(t),value:this.getValue(t),stack:this.getStack(t)??r.syntheticException?.stack,level:this.isSeverityLevel(t.level)?t.level:"error",synthetic:!0}}getType(t){if(Eft(t))return t.constructor.name;let r="name"in t?t.name:void 0;return rk(r)&&!$Yo(r)?r:"Error"}getValue(t){if("name"in t&&typeof t.name=="string"){let i=`'${t.name}' captured as exception`;return"message"in t&&typeof t.message=="string"&&(i+=` with message: '${t.message}'`),i}if("message"in t&&typeof t.message=="string")return t.message;let r=this.getObjectClassName(t),n=vin(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return rk(t)&&!$Yo(t)&&vol.indexOf(t)>=0}getStack(t){try{return rk(t.stacktrace)&&t.stacktrace.length>0?t.stacktrace:rk(t.stack)&&t.stack.length>0?t.stack:void 0}catch{return}}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(l1e(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var AXo=class{match(t){return Eft(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${vin(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var HHt=class{match(t){return ain(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var yXo=class{match(t){return m5e(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Eft(t))return!1;try{let r=t.detail;return r!=null&&typeof r=="object"&&"reason"in r}catch{return!1}}coerce(t,r){let n=this.getUnhandledRejectionReason(t);return ain(n)?{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(n)}`,stack:r.syntheticException?.stack,synthetic:!0}:r.apply(n)}getUnhandledRejectionReason(t){try{if("reason"in t)return t.reason;if("detail"in t&&t.detail!=null&&typeof t.detail=="object"&&"reason"in t.detail)return t.detail.reason}catch{}return t}};var bXo=class{constructor(t){this._maxSize=t,this._cache=new Map}get(t){let r=this._cache.get(t);if(r!==void 0)return this._cache.delete(t),this._cache.set(t,r),r}set(t,r){this._cache.set(t,r)}reduce(){for(;this._cache.size>=this._maxSize;){let t=this._cache.keys().next().value;t&&this._cache.delete(t)}}};var KHt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},Ach=new Set([KHt.MESSAGE,KHt.TIMESTAMP]),Cin={enabled:!0,max_bytes:32768};function EXo(e){return e?{enabled:e.enabled??Cin.enabled,max_bytes:bch(e.max_bytes,Cin.max_bytes)}:{...Cin}}function ych(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>Ach.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var IXo=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=EXo(t)}setConfig(t){this._config=EXo(t),this._trimToMaxBytes()}add(t){let r=Ech(t);if(!r)return;let n=Col(r.json);n>this._config.max_bytes||(this._entries.push({step:r.step,bytes:n}),this._totalBytes+=n,this._trimToMaxBytes())}getAttachable(){return this._entries.map(t=>t.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let t=this._entries.shift();t&&(this._totalBytes-=t.bytes)}}};function bch(e,t){if(!bft(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function Ech(e){let t;try{t=u1e(e)}catch{return}try{let r=JSON.parse(t);if(!MHt(r))return;let n=r,i=n[KHt.MESSAGE],o=n[KHt.TIMESTAMP];return!rk(i)||i.trim().length===0||!rk(o)&&!bft(o)?void 0:{step:n,json:t}}catch{return}}function Col(e){if("u">typeof TextEncoder)return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)t[n]==="%"?(r+=1,n+=2):r+=1;return r}function Ich(){let e=globalThis._posthogReleaseId;return typeof e=="string"&&e.length>0?e:void 0}var vXo=e=>{if("flags"in e){let t=xol(e.flags),r=wol(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,xft(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,vch(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function vch(e,t,r){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:r?JSON.stringify(r):void 0,description:void 0}}}var xol=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,JHt(r)]).filter(([,t])=>t!==void 0)),wol=e=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter(r=>{let n=t[r];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map(r=>{let n=t[r].metadata?.payload;return[r,n?xft(n):void 0]}))},JHt=e=>e===void 0?void 0:e.variant??e.enabled,xft=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var Sol=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","oppref","irclid","_kx"],Cch=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain",...Sol,"$session_id","$window_id","$lib","$lib_version","$device_id","$is_server","$react_native_version"],YHt=(e,t=[])=>{let r={},n=i=>{e[i]!==void 0&&(r[i]=e[i])};return Cch.forEach(n),t.forEach(n),r};var xin=class{constructor(){this.events={},this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),()=>{this.events[t]=this.events[t].filter(n=>n!==r)}}emit(t,r){for(let n of this.events[t]||[])n(r);for(let n of this.events["*"]||[])n(t,r)}};function CXo(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var wch="NativeGzipValidationError",Sch=31,Tch=139,Och=8,Pch=e=>e.length>=2&&e[0]===Sch&&e[1]===Tch;var XHt,Bch=()=>{if(XHt)return XHt;XHt=[];for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;XHt[e]=t>>>0}return XHt},Rch=e=>{let t=Bch(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},win=e=>{throw Cft(wch,`Native gzip produced invalid output: ${e}`)},Dch=async(e,t)=>{e.size<18&&win("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());(!Pch(r)||r[2]!==Och)&&win("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());n.getUint32(0,!0)!==Rch(t)&&win("invalid-crc");let i=t.length>>>0;n.getUint32(4,!0)!==i&&win("invalid-size")};async function ZHt(e,t=!0,r){try{let n=new TextEncoder().encode(e),i=new globalThis.CompressionStream("gzip"),o=i.writable.getWriter(),s=o.write(n).then(()=>o.close()).catch(async u=>{try{await o.abort(u)}catch{}throw u}),a=new Response(i.readable).blob(),[c]=await Promise.all([a,s]);return await Dch(c,n),c}catch(n){if(r?.rethrow)throw n;return t&&console.error("Failed to gzip compress data",n),null}}var U8=class extends Error{constructor(t,r,n,i){super("HTTP error while fetching PostHog: status="+t.status+", reqByteLength="+r),this.response=t,this.reqByteLength=r,this.responseBodyDeadline=n,this.abortController=i,this.name="PostHogFetchHttpError",this._bodyReadTimedOut=!1}get status(){return this.response.status}get retryAfterMs(){try{return cXo(this.response.headers?.get("retry-after"))}catch{return}}get bodyReadTimedOut(){return this._bodyReadTimedOut}get text(){if(!this.responseBodyTextPromise)if(Date.now()>=this.responseBodyDeadline){this._bodyReadTimedOut=!0;let t=Cft("AbortError","Response body read timed out");this.cancelResponseBody(t),this.responseBodyTextPromise=Promise.reject(t)}else{let t=new Promise((n,i)=>{this.responseBodyTimer=zN(()=>{this._bodyReadTimedOut=!0;let o=Cft("AbortError","Response body read timed out");i(o),this.cancelResponseBody(o)},this.responseBodyDeadline-Date.now())}),r;try{r=Promise.resolve(this.response.text())}catch(n){r=Promise.reject(n)}this.responseBodyTextPromise=Promise.race([r,t]).finally(()=>clearTimeout(this.responseBodyTimer))}return this.responseBodyTextPromise}get json(){return this.text.then(t=>JSON.parse(t))}cancelResponseBody(t){clearTimeout(this.responseBodyTimer),this.abortController.signal.aborted||this.abortController.abort(t),(async()=>{try{await this.response.body?.cancel()}catch{}})()}},qhe=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};var Rol=(e,t)=>{for(let r of Object.keys(t))(r.startsWith("$feature/")||r==="$active_feature_flags")&&(e[r]=t[r])};async function Tol(e){if(e instanceof U8){let t="";try{t=await e.text}catch{e.bodyReadTimedOut&&(t="<response body read timed out>")}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function kch(e){return typeof e=="object"&&(e instanceof U8||Dol(e))}function Dol(e){return e instanceof qhe}function Fch(e){if(e instanceof U8)return e.status===502||e.status===504;if(!(e instanceof qhe))return!1;let t=e.error;return(t?.code??t?.cause?.code)!=="ECONNREFUSED"}var Ool=10485760;function Pol(e){try{return typeof e!="string"?e instanceof Uint8Array?e.byteLength:e.size:"u">typeof Buffer?Buffer.byteLength(e,ool):new TextEncoder().encode(e).length}catch{return 0}}function wft(e){return typeof e=="object"&&e instanceof U8&&e.status===413}function Sin(e){return e instanceof U8?e.status===408||e.status===429||e.status>=500:Dol(e)}function Bol(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var xXo="default",$Ht=class{getErrorPropertiesBuilder(){return this._errorPropertiesBuilder||(this._errorPropertiesBuilder=this.createErrorPropertiesBuilder()),this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new VHt([new GHt,new WHt,new qHt,new HHt],mXo())}getEvaluationRuntime(){}constructor(t,r={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new fin,this._events=new xin,this._isInitialized=!1;let n=typeof t=="string"?t.trim():"",i=typeof r.host=="string"?r.host.trim():"",o=!n;this._logger=Gil("[PostHog]",this.logMsgIfDebug.bind(this)),o&&this._logger.error("You must pass your PostHog project's api key. The client will be disabled."),this.apiKey=n,this.host=sol(i||"https://us.i.posthog.com"),this.flushAt=r.flushAt?Math.max(r.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r.maxQueueSize??1e3),this.flushInterval=r.flushInterval??1e4,this.preloadFeatureFlags=r.preloadFeatureFlags??!0,this.defaultOptIn=r.defaultOptIn??!0,this.disableSurveys=r.disableSurveys??!1,this._retryOptions={retryCount:r.fetchRetryCount??3,retryDelay:r.fetchRetryDelay??3e3,retryCheck:Sin},this.requestTimeout=r.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r.featureFlagsRequestTimeoutMs??3e3,this.featureFlagsRequestMaxRetries=r.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=r.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=r.disableGeoip??!0,this.disabled=(r.disabled??!1)||o,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=r?.evaluationContexts??r?.evaluationEnvironments,r?.evaluationEnvironments&&!r?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!CXo()||(r?.disableCompression??!1)}logMsgIfDebug(t){this.isDebug&&t()}wrap(t){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return t();this._initPromise.then(()=>t())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(OM.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(OM.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(OM.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>this._logger.info(n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(t){let r=t.properties||{},n={...r,...this.getCommonEventProperties()};return Rol(n,r),t.event==="$feature_flag_called"&&n.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled()&&(n=YHt(n)),{distinct_id:t.distinct_id,event:t.event,properties:n}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(t){return this.promiseQueue.add(t)}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}async identifyStatelessImmediate(t,r,n){let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};await this.sendImmediate("identify",i,n)}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}async captureStatelessImmediate(t,r,n,i){let o=this.buildPayload({distinct_id:t,event:r,properties:n});await this.sendImmediate("capture",o,i)}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}async aliasStatelessImmediate(t,r,n,i){let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});await this.sendImmediate("alias",o,i)}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",a,i)})}async groupIdentifyStatelessImmediate(t,r,n,i,o,s){let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});await this.sendImmediate("capture",a,i)}async getRemoteConfig(){await this._initPromise;let t=this.host;t==="https://us.i.posthog.com"?t="https://us-assets.i.posthog.com":t==="https://eu.i.posthog.com"&&(t="https://eu-assets.i.posthog.com");let r=`${t}/array/${this.apiKey}/config`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(r,n,{type:"required",consume:i=>i.json()},{retryCount:0},this.remoteConfigRequestTimeoutMs).catch(i=>{this._logger.error("Remote config could not be loaded",i),this._events.emit("error",i)})}async getFlags(t,r={},n={},i={},o={},s=!1){await this._initPromise;let a=s?"&config=true":"",c=`${this.host}/flags/?v=2${a}`,u={token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o};n.$device_id&&(u.$device_id=n.$device_id),this.evaluationContexts&&this.evaluationContexts.length>0&&(u.evaluation_contexts=this.evaluationContexts);let l=this.getEvaluationRuntime();l&&(u.evaluation_runtime=l);let p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(u)};return this._logger.info("Flags URL",c),this.fetchWithRetry(c,p,{type:"required",consume:d=>d.json()},{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:Fch},this.featureFlagsRequestTimeoutMs).then(d=>({success:!0,response:vXo(d)})).catch(d=>(this._events.emit("error",d),{success:!1,error:this.categorizeRequestError(d)}))}categorizeRequestError(t){if(t instanceof U8)return{type:"api_error",statusCode:t.status};if(t instanceof qhe){let r=t.error;return r instanceof Error&&(r.name==="AbortError"||r.name==="TimeoutError")?{type:"timeout"}:{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailStateless(t,r,n,i,o,s);if(a===void 0)return{response:void 0,requestId:void 0};let c=JHt(a.response);return c===void 0&&(c=!1),{response:c,requestId:a.requestId}}async getFeatureFlagDetailStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(r,n,i,o,s,[t]);return a===void 0?void 0:{response:a.flags[t],requestId:a.requestId,evaluatedAt:a.evaluatedAt}}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s,[t]);if(!a)return;let c=a[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)).payloads}async getFeatureFlagsStateless(t,r={},n={},i={},o,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(t,r,n,i,o,s);return a?{flags:a.featureFlags,payloads:a.featureFlagPayloads,requestId:a.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a={geoip_disable:o??this.disableGeoip};s&&(a.flag_keys_to_evaluate=s);let c=await this.getFlags(t,r,n,i,a);if(!c.success)return;let u=c.response;return u.errorsWhileComputingFlags&&console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices"),u.quotaLimited?.includes("feature_flags")?(console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:u?.requestId,quotaLimited:u.quotaLimited}):u}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let t=`${this.host}/api/surveys/?token=${this.apiKey}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(t,r,{type:"required",consume:o=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,a=new Error(s);return this._logger.error(a),this._events.emit("error",new Error(s)),Promise.resolve(void 0)}return o.json()}}).catch(o=>{this._logger.error("Surveys API could not be loaded",o),this._events.emit("error",o)}))?.surveys;return i&&this._logger.info("Surveys fetched from API: ",JSON.stringify(i)),i??[]}get props(){return this._props||(this._props=this.getPersistedProperty(OM.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(OM.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(OM.Props,this.props)})}processBeforeEnqueue(t){return t}async flushStorage(){}getQueueRouteKey(t){return xXo}persistedQueueKeyForRoute(t){return OM.Queue}getActiveQueueRoutes(){return[xXo]}getRouteQueue(t){return this.getPersistedProperty(this.persistedQueueKeyForRoute(t))||[]}enqueue(t,r,n,i){this.wrap(()=>{if(this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let o=this.prepareMessage(r,n);if(o=this.processBeforeEnqueue(o),o===null)return;o=this.normalizeMessage(o);let s=this.persistedQueueKeyForRoute(i??this.getQueueRouteKey(o)),a=this.getPersistedProperty(s)||[];a.length>=this.maxQueueSize&&(a.shift(),this._logger.warn("Queue is full, the oldest event is dropped.")),a.push({message:o}),this.setPersistedProperty(s,a),this._events.emit(t,o),a.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=zN(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(t,r,n,i){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let o=this.prepareMessage(r,n);if(o=this.processBeforeEnqueue(o),o!==null){o=this.normalizeMessage(o);try{await this.sendBatch([o],void 0,i??this.getQueueRouteKey(o))}catch(s){this._events.emit("error",s)}}}normalizeMessage(t){let{type:r,library:n,library_version:i,...o}=t,s=Bol(o.properties)?o.properties:void 0;return n!==void 0&&s?.$lib===void 0&&(s={...s||{},$lib:n}),i!==void 0&&s?.$lib_version===void 0&&(s={...s||{},$lib_version:i}),s&&(o.properties=s),o.uuid=g5e(o.uuid,jN),o}normalizeTimestampForWire(t){let r=t instanceof Date?t:typeof t=="string"?new Date(t):null;if(!r||Number.isNaN(r.getTime()))return t;let n=r.toISOString(),i=typeof t=="string"?t.match(/\.(\d+)(?:Z|[+-]\d{2}:?\d{2})?$/i)?.[1]:void 0;return i&&i.length>3?n.replace(/\.\d{3}Z$/,`.${i}Z`):n}prepareMessage(t,r){let n={...t,timestamp:r?.timestamp?r?.timestamp:uXo(),uuid:g5e(r?.uuid,jN)};return(r?.disableGeoip??this.disableGeoip)&&(Bol(n.properties)||(n.properties={}),n.properties.$geoip_disable=!0),n.distinctId&&(n.distinct_id=n.distinctId,delete n.distinctId),n}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.pendingFlushPromise||this.flushAutomatic().catch(async t=>{await Tol(t)})}flushAutomatic(){return this.flush()}async waitForPendingPromises(t,r=[]){let n=r.filter(o=>!!o),i=0;for(;;){let o=this.promiseQueue.getPromises([...n,...this.flushPromises],t);if(o.length===0)return;i>0&&this._logger.debug(`flush() re-checking ${o.length} pending promise(s) before flushing`),await Promise.all(o.map(s=>s.catch(()=>{}))),i++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(t){if(this.disabled)return Promise.resolve();if(!t&&this.pendingFlushPromise)return this.pendingFlushPromise;let r=this.flushPromise,n=this.promiseQueue.maxId,i=Promise.resolve().then(()=>{if(t)return this.waitForPendingPromises(n,[r,i])}).then(()=>UHt([r])).then(()=>(this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this._flush()));return this.pendingFlushPromise=i,this.flushPromise=i,this.flushPromises.add(i),this.addPendingPromise(i),UHt([i]).then(()=>{this.flushPromises.delete(i),this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this.flushPromise===i&&(this.flushPromise=null)}),i}getCustomHeaders(){let t=this.getCustomUserAgent(),r={};return t&&t!==""&&(r["User-Agent"]=t),r}compressPayload(t){return ZHt(t,this.isDebug)}getBatchEndpointPath(t){return"/batch/"}async sendBatch(t,r,n=xXo){let i={api_key:this.apiKey,batch:t.map(u=>{if(!u)return u;let l=this.normalizeTimestampForWire(u.timestamp);return l===u.timestamp?u:{...u,timestamp:l}}),sent_at:uXo()};this.historicalMigration&&(i.historical_migration=!0);let o=u1e(i),s=`${this.host}${this.getBatchEndpointPath(n)}`,a=this.disableCompression?null:await this.compressPayload(o),c={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...a!==null&&{"Content-Encoding":"gzip"}},body:a||o};await this.fetchWithRetry(s,c,{type:"successful-write"},r)}async _flush(){this.clearFlushTimer(),await this._initPromise;let t=this.getActiveQueueRoutes();if(!t.some(i=>this.getRouteQueue(i).length>0))return;let r=[],n;for(let i of t)try{await this._flushRoute(i,r)}catch(o){n===void 0&&(n=o)}if(n!==void 0)throw n;this._events.emit("flush",r)}async _flushRoute(t,r){let n=this.persistedQueueKeyForRoute(t),i=this.getPersistedProperty(n)||[];if(!i.length)return;let o=i.length,s=0;for(;i.length>0&&s<o;){let a=i.slice(0,this.maxBatchSize),c=a.map(p=>p.message===void 0?p.message:this.normalizeMessage(p.message)),u=async()=>{let p=this.getPersistedProperty(n)||[],d=[...a],f=p.filter(m=>{let g=m.message?.uuid,A=d.findIndex(y=>y===m||typeof g=="string"&&g.length>0&&y.message?.uuid===g);return A===-1?!0:(d.splice(A,1),!1)});this.setPersistedProperty(n,f),i=f,this._dequeuedMessagesCount+=a.length,await this.flushStorage()},l={retryCheck:p=>wft(p)?!1:Sin(p)};try{await this.sendBatch(c,l,t)}catch(p){if(wft(p)&&c.length>1){this.maxBatchSize=Math.max(1,Math.floor(c.length/2)),this._logger.warn(`Received 413 when sending batch of size ${c.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw p instanceof qhe||await u(),this._events.emit("error",p),p}await u(),r.push(...c),s+=c.length}}async _sendOtlpBatch({path:t,auth:r,payload:n}){if(this.disabled)return{kind:"fatal",error:new Error("The client is disabled")};let i;try{i=JSON.stringify(n)}catch(l){return this.logMsgIfDebug(()=>console.warn(`[PostHog] Could not serialize a ${t} batch; reporting it as too large`,l)),{kind:"too-large",measuredLocally:!0}}let o=Pol(i);if(o>Ool)return this.logMsgIfDebug(()=>console.warn(`[PostHog] Not sending a ${t} batch of ${o} bytes: the endpoint accepts at most ${Ool}`)),{kind:"too-large",measuredLocally:!0};let s=r==="bearer"?`${this.host}/i/v1/${t}`:`${this.host}/i/v1/${t}?token=${encodeURIComponent(this.apiKey)}`,a=this.disableCompression?null:await this.compressPayload(i),c=a||i,u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...r==="bearer"&&{Authorization:`Bearer ${this.apiKey}`},...a!==null&&{"Content-Encoding":"gzip"}},body:c};try{return await this.fetchWithRetry(s,u,{type:"successful-write"},{retryCheck:l=>wft(l)||l instanceof U8&&l.retryAfterMs!==void 0?!1:Sin(l)}),{kind:"ok"}}catch(l){if(wft(l))return{kind:"too-large"};if(Sin(l)){let p=l instanceof U8?l.retryAfterMs:void 0;return{kind:"retry-later",error:l,...p!==void 0&&{retryAfterMs:p}}}return{kind:"fatal",error:l}}}async _sendLogsBatch(t){return this._sendOtlpBatch({path:"logs",auth:"query-token",payload:t})}async _sendMetricsBatch(t){return this._sendOtlpBatch({path:"metrics",auth:"query-token",payload:t})}async _sendTracesBatch(t){return this._sendOtlpBatch({path:"traces",auth:"bearer",payload:t})}async fetchWithRetry(t,r,n,i,o){let s=r.body?r.body:"",a=Pol(s),c={...this._retryOptions,...i},u=0;return await aol(async()=>{u++;let l=new AbortController,p=o??this.requestTimeout,d=Date.now()+p,f,m=new Promise((x,v)=>{f=zN(()=>{let w=Cft("AbortError",`Request timed out after ${p}ms`);v(w),l.abort(w)},p)}),g,A=!1,y,I=()=>y??=(async()=>{try{await g?.body?.cancel()}catch{}})();try{let x;try{x=this.fetch(t,{signal:l.signal,...r})}catch(B){throw new qhe(B)}x.then(B=>{l.signal.aborted&&!A&&Promise.resolve(B.body?.cancel()).catch(()=>{})}).catch(()=>{});try{g=await Promise.race([x,m]),A=!0}catch(B){throw new qhe(B)}let v=r.mode==="no-cors",w=n.type==="successful-write"?300:400;if(!v&&(g.status<200||g.status>=w))throw new U8(g,a,d,l);if(n.type==="successful-write"){try{await Promise.race([I(),m])}catch{}return}try{return await Promise.race([n.consume(g),m])}catch(B){throw l.signal.aborted?new qhe(B):B}}finally{clearTimeout(f),l.signal.aborted&&g&&I()}},{...c,retryCheck:l=>{let p=c.retryCheck(l);return p&&u<=c.retryCount&&l instanceof U8&&l.cancelResponseBody(),p}})}async _shutdown(t=3e4){await this._initPromise;let r=!1;return this.clearFlushTimer(),this.disabled?void 0:p1e((async()=>{try{for(await this.promiseQueue.join();this.getActiveQueueRoutes().some(s=>this.getRouteQueue(s).length>0);){let o=this._dequeuedMessagesCount;if(await this.flush(),r)break;if(this._dequeuedMessagesCount===o){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(i){if(!kch(i))throw i;await Tol(i)}})(),t,()=>{this._logger.critical("Timeout while shutting down PostHog. Some events may not have been sent.",{shutdownTimeoutMs:t}),r=!0})}async shutdown(t=3e4){return this.shutdownPromise?this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup"):this.shutdownPromise=this._shutdown(t).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}};var Mch=/[a-z][a-z0-9+.-]{0,63}:[^\s<>"]+/gi;var WWv=new RegExp(Mch.source,"i"),kol=/[a-z][a-z0-9+.-]{0,63}:\/\//i,HWv=new RegExp(`^${kol.source}`,"i"),KWv=new RegExp(kol.source,"gi");var Lch=["is_not","is_set"],_ch=1152921504606847e3,Zu=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}};function wXo(e){if(typeof e=="boolean")return!0;if(typeof e=="string"){let t=e.toLowerCase();return t==="true"||t==="false"}if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t++)if(!wXo(t in e?e[t]:null))return!1;return!0}function SXo(e){if(typeof e=="boolean")return e;if(typeof e=="string")return e.toLowerCase()==="true";if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t++)if(!SXo(t in e?e[t]:null))return!1;return!0}function eKt(e){for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let n=e.charCodeAt(t+1);if(t+1>=e.length||n<56320||n>57343)throw new Zu("Cannot stringify an unpaired surrogate like the flags service");t++}else if(r>=56320&&r<=57343)throw new Zu("Cannot stringify an unpaired surrogate like the flags service")}}function Oin(e,t=new Set){if(!(e===null||typeof e=="boolean")){if(typeof e=="string")return void eKt(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new Zu(`Cannot represent non-finite number ${e} like the flags service`);return}if(Array.isArray(e)){if(t.has(e))throw new Zu("Cannot represent a circular array during local evaluation");t.add(e);try{for(let r=0;r<e.length;r++)r in e&&Oin(e[r],t)}finally{t.delete(e)}return}if(typeof e=="object"){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw new Zu("Cannot represent a non-JSON object like the flags service");if(t.has(e))throw new Zu("Cannot represent a circular object during local evaluation");t.add(e);try{for(let n of Object.keys(e))eKt(n),Oin(e[n],t)}finally{t.delete(e)}return}throw new Zu(`Cannot represent ${typeof e} like the flags service`)}}function Uch(e,t){let r=0,n=0;for(;r<e.length&&n<t.length;){let i=e.charCodeAt(r),o=t.charCodeAt(n),s=i>=55296&&i<=56319,a=o>=55296&&o<=56319,c=s?e.charCodeAt(r+1):0,u=a?t.charCodeAt(n+1):0,l=s?(i-55296)*1024+c-56320+65536:i,p=a?(o-55296)*1024+u-56320+65536:o;if(l!==p)return l-p;r+=s?2:1,n+=a?2:1}return e.length-t.length}function TXo(e,t=new Set){if(e===null)return"null";if(typeof e=="string")return eKt(e),JSON.stringify(e);if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"){if(!Number.isFinite(e))throw new Zu(`Cannot stringify non-finite number ${e} like the flags service`);if(Number.isInteger(e))throw new Zu(`Cannot distinguish integer ${e} from an integral JSON float during local evaluation`);return String(e)}if(Array.isArray(e)){if(t.has(e))throw new Zu("Cannot stringify a circular array during local evaluation");t.add(e);try{let r=[];for(let n=0;n<e.length;n++)r.push(n in e?TXo(e[n],t):"null");return`[${r.join(",")}]`}finally{t.delete(e)}}if(typeof e=="object"){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw new Zu("Cannot stringify a non-JSON object like the flags service");if(t.has(e))throw new Zu("Cannot stringify a circular object during local evaluation");t.add(e);try{let n=Object.keys(e);return n.forEach(eKt),`{${n.sort(Uch).map(i=>`${JSON.stringify(i)}:${TXo(e[i],t)}`).join(",")}}`}finally{t.delete(e)}}throw new Zu(`Cannot stringify ${typeof e} like the flags service`)}function Tin(e){return typeof e=="string"?(eKt(e),e):TXo(e)}function Fol(e){try{return new RegExp(e),!0}catch{return!1}}function V8(e){return String(e).replace(/[A-Z]/g,t=>t.toLowerCase())}function jol(e,t,r){if(!/^\d+$/.test(e)||r==="strict"&&e.length>1&&e[0]==="0")throw new Zu(`Invalid semver: ${t}`);return parseInt(e,10)}function XS(e,t="strict"){let n=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!n||n.startsWith("."))throw new Zu(`Invalid semver: ${e}`);let i=n.split("."),o=s=>s===void 0||s===""?0:jol(s,e,t);return[o(i[0]),o(i[1]),o(i[2])]}function G8(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function Vch(e,t){let r=XS(e,t);return{lower:[r[0],r[1],r[2]],upper:[r[0],r[1]+1,0]}}function Gch(e,t){let[r,n,i]=XS(e,t),o=[r,n,i],s;return s=r>0?[r+1,0,0]:n>0?[0,n+1,0]:[0,0,i+1],{lower:o,upper:s}}function qch(e,t){let n=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!n)throw new Zu(`Invalid wildcard semver: ${e}`);let i=n.split("."),o=c=>{if(t==="legacy-permissive"){let u=parseInt(c,10);if(!isNaN(u))return u}else try{return jol(c,e,t)}catch{}throw new Zu(`Invalid wildcard semver: ${e}`)},s=o(i[0]);if(i.length===1)return{lower:[s,0,0],upper:[s+1,0,0]};let a=o(i[1]);return{lower:[s,a,0],upper:[s,a+1,0]}}function Nol(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new Zu(`${e} is in an invalid date format`)}throw new Zu(`The date provided ${e} must be a string, number, or date object`)}function OXo(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r||!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let o=r.groups.interval;if(o==="h")n.setUTCHours(n.getUTCHours()-i);else if(o==="d")n.setUTCDate(n.getUTCDate()-i);else if(o==="w")n.setUTCDate(n.getUTCDate()-7*i);else if(o==="m")n.setUTCMonth(n.getUTCMonth()-i);else{if(o!=="y")return null;n.setUTCFullYear(n.getUTCFullYear()-i)}return n}function PXo(e,t,r={}){let n=e.key,i=e.value,o=e.operator||"exact",s=r.semverParsingPolicy??"strict";if(Object.prototype.hasOwnProperty.call(t,n)){if(o==="is_not_set")return!1;if(o==="is_set")return!0}else throw new Zu(`Property ${n} not found in propertyValues`);let c=t[n];if(c===void 0)return r.warnFunction?.(`Property ${n} cannot have a value of undefined with the ${o} operator`),o==="is_not";if(c===null&&!Lch.includes(o)&&o!=="exact"&&o!=="is_not")return r.warnFunction?.(`Property ${n} cannot have a value of null with the ${o} operator`),!1;let u=(p,d)=>{if(r.propertyMatchingVersion!==2&&wXo(p)||Array.isArray(p)&&p.length===0)return Oin(d),SXo(p)===SXo(d);if(r.propertyMatchingVersion===2&&typeof d=="number"&&wXo(p))return Oin(d),!1;if(Array.isArray(p)){let f=Tin(d).toLowerCase();return p.some(m=>Tin(m).toLowerCase()===f)}return Tin(p).toLowerCase()===Tin(d).toLowerCase()},l=(p,d,f)=>{if(f==="gt")return p>d;if(f==="gte")return p>=d;if(f==="lt")return p<d;if(f==="lte")return p<=d;throw new Error(`Invalid operator: ${f}`)};switch(o){case"exact":return u(i,c);case"is_not":return!u(i,c);case"is_set":return!0;case"icontains":return V8(c).includes(V8(i));case"not_icontains":return!V8(c).includes(V8(i));case"starts_with":return V8(c).startsWith(V8(i));case"not_starts_with":return!V8(c).startsWith(V8(i));case"ends_with":return V8(c).endsWith(V8(i));case"not_ends_with":return!V8(c).endsWith(V8(i));case"regex":return Fol(String(i))&&String(c).match(String(i))!==null;case"not_regex":return Fol(String(i))&&String(c).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let p=typeof i=="number"?i:parseFloat(String(i)),d=typeof c=="number"?c:c!=null?parseFloat(String(c)):NaN;return Number.isFinite(p)&&Number.isFinite(d)?l(d,p,o):l(String(c),String(i),o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Zu("Date operations cannot be performed on boolean values");let p=OXo(String(i));p==null&&(p=Nol(i));let d=Nol(c);return o==="is_date_before"?d<p:d>p}case"semver_eq":return G8(XS(String(c),s),XS(String(i),s))===0;case"semver_neq":return G8(XS(String(c),s),XS(String(i),s))!==0;case"semver_gt":return G8(XS(String(c),s),XS(String(i),s))>0;case"semver_gte":return G8(XS(String(c),s),XS(String(i),s))>=0;case"semver_lt":return G8(XS(String(c),s),XS(String(i),s))<0;case"semver_lte":return G8(XS(String(c),s),XS(String(i),s))<=0;case"semver_tilde":{let p=XS(String(c),s),{lower:d,upper:f}=Vch(String(i),s);return G8(p,d)>=0&&G8(p,f)<0}case"semver_caret":{let p=XS(String(c),s),{lower:d,upper:f}=Gch(String(i),s);return G8(p,d)>=0&&G8(p,f)<0}case"semver_wildcard":{let p=XS(String(c),s),{lower:d,upper:f}=qch(String(i),s);return G8(p,d)>=0&&G8(p,f)<0}default:throw new Zu(`Unknown operator: ${o}`)}}async function zol(e){let t=globalThis.crypto?.subtle;if(!t)throw new Error("SubtleCrypto API not available");let r=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(r)).map(n=>n.toString(16).padStart(2,"0")).join("")}async function tKt(e,t,r="",n="."){let i=await zol(`${e}${n}${t}${r}`);return parseInt(i.slice(0,15),16)/_ch}async function BXo(e,t){if(e==null||e.id==null||e.exclusion_percentage==null)return;let r=Number(e.exclusion_percentage);if(!Number.isFinite(r))return;let n=Math.min(Math.max(r,0),100);if(!(n!==100&&await tKt("holdout",t,"","-")>n/100))return`holdout-${e.id}`}function Pin(e){let t=[],r=0;for(let n of e){let i=r+n.rollout_percentage/100;t.push({valueMin:r,valueMax:i,key:n.key}),r=i}return t}async function RXo(e,t,r){let n=await tKt(e,t,"variant");return Pin(r).find(i=>n>=i.valueMin&&n<i.valueMax)?.key}function DXo(e,t){if(t===!1||t==null||!e)return null;let r=typeof t=="boolean"?t.toString():t,n=e[r]||null;return n==null?null:xft(n)}var Qol=9223372036854776e3,Wch="9223372036854775808",Hch=Object.prototype.propertyIsEnumerable;function Kch(){return{ancestors:new WeakSet,remainingNodes:1e4}}function gne(e,t){try{return Mol(e,t,Kch(),0)}catch{return[]}}function Jch(e,t){let r=e.toString(),n=BigInt(Wch);return e>=n||e<-n?(t?.debug(`Attribute ${r} is outside the int64 range; encoding it as a string`),{stringValue:r}):{intValue:r}}function NXo(e,t,r,n){if(r.remainingNodes<=0)return{stringValue:yin};if(r.remainingNodes--,jil(e))return{boolValue:e};if(typeof e=="bigint")return Jch(e,t);if(typeof e=="number"){if(!Number.isFinite(e))return{stringValue:String(e)};if(Number.isInteger(e)){if(Number.isSafeInteger(e))return{intValue:String(e)};if("u"<typeof BigInt)return{stringValue:String(e)};let i=BigInt(e).toString();return e>=Qol||e<-Qol?(t?.debug(`Attribute ${i} is outside the int64 range; encoding it as a string`),{stringValue:i}):{intValue:i}}return{doubleValue:e}}if(typeof e=="string")return{stringValue:mne(e)};if(typeof e=="function")return{stringValue:iol};if(typeof e=="symbol")return{stringValue:String(e)};if(typeof e=="object"&&e!==null){if(r.ancestors.has(e))return{stringValue:Ain};if(n>=20)return{stringValue:yin};if(e instanceof Date){let i=e.getTime(),o=Number.isFinite(i)?e.toISOString():String(e);return{stringValue:typeof o=="string"?mne(o):String(o)}}r.ancestors.add(e);try{try{let i=e.toJSON;if(typeof i=="function")return NXo(i.call(e),t,r,n+1)}catch{}return V4(e)?{arrayValue:{values:Ych(e,t,r,n+1)}}:{kvlistValue:{values:Mol(e,t,r,n+1)}}}finally{r.ancestors.delete(e)}}return{stringValue:mne(String(e))}}function Ych(e,t,r,n){let i=[],o=Math.min(e.length,1e3),s=0;for(;s<o&&r.remainingNodes>0;s++)try{let a=s in e?e[s]:void 0;if(zJ(a))continue;i.push(NXo(a,t,r,n))}catch{i.push({stringValue:_8})}return e.length>s&&i.push({stringValue:yin}),i}function Mol(e,t,r,n){let i=[];for(let o in e)if(Hch.call(e,o)){if(!o){t?.debug("Dropping an attribute with an empty key");continue}if(i.length>=1e3||r.remainingNodes<=0){t?.debug("Attributes truncated: the value exceeds the OTLP encoder budget");break}try{let s=e[o];if(eXo(s)||Vhe(s))continue;i.push({key:mne(o),value:NXo(s,t,r,n)})}catch{i.push({key:mne(o),value:{stringValue:_8}})}}return i}function nKt(e,t,r){return{...Ghe({},e.resourceAttributes),"service.name":e.serviceName||"unknown_service",...e.environment&&{"deployment.environment":e.environment},...e.serviceVersion&&{"service.version":e.serviceVersion},"telemetry.sdk.name":t,"telemetry.sdk.version":r}}var Xch=["service.name","deployment.environment","service.version","telemetry.sdk.name","telemetry.sdk.version"];function iKt(e,t){let r=Ghe({},e),n={};for(let i of Xch)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i],delete r[i]);return[...gne(r,t),...gne(n,t)]}var Lol={darwin:"macOS",win32:"Windows",cygwin:"Windows",linux:"Linux",android:"Android",freebsd:"FreeBSD",openbsd:"OpenBSD",netbsd:"NetBSD",sunos:"SunOS",aix:"AIX",haiku:"Haiku","Mac OS X":"macOS"};function Zch(e){if(e)return Object.prototype.hasOwnProperty.call(Lol,e)?Lol[e]:e}function jXo(e,t){let r=Zch(e);return{...r?{"os.name":r}:{},...t?{"os.version":t}:{}}}var $ch={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},l7v=$ch.info;var A5e=class{constructor(t){this._onFire=t,this._firesAt=0}get pending(){return!!this._timer}arm(t){this.clear(),this._firesAt=Date.now()+t,this._timer=zN(()=>{this._timer=void 0,this._onFire()},t)}armNoEarlierThan(t){this._timer&&Date.now()+t<=this._firesAt||this.arm(t)}clear(){this._timer&&(clearTimeout(this._timer),this._timer=void 0)}};function oKt(){return 1-.25+Math.random()*.25*2}var q8=1;function sKt(e,t,r,n){let i=Math.min(Math.max(0,t-1),6),o=e*2**i,s=n===void 0?o:Math.min(o,Math.max(n,e));return Math.round(s*r)}var aKt=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function zXo(e){return String(e)+"000000"}function QXo(e,t,r,n){let i="";return n&&(i=Object.keys(n).sort().map(s=>`${JSON.stringify(s)}:${JSON.stringify(n[s])}`).join(",")),`${e}\0${t}\0${r??""}\0${i}`}function _ol(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}function MXo(e,t,r){return nKt(e,t,r)}function LXo(e,t,r,n){return{resourceMetrics:[{resource:{attributes:iKt(t)},scopeMetrics:[{scope:{name:r,version:n},metrics:e}]}]}}function Rin(e){let t=e?.resourceAttributes;return{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1e3}}var Uol=1,cKt=class{constructor(t,r,n){this._instance=t,this._config=r,this._logger=n,this._series=new Map,this._flushTimer=new A5e(()=>this.flush().catch(i=>{this._logger.error("Metrics flush failed:",i)})),this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._retryAfter=new h5e,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._generation=0}count(t,r=1,n){this._capture({name:t,type:"count",value:r,unit:n?.unit,attributes:n?.attributes})}gauge(t,r,n){this._capture({name:t,type:"gauge",value:r,unit:n?.unit,attributes:n?.attributes})}histogram(t,r,n){this._capture({name:t,type:"histogram",value:r,unit:n?.unit,attributes:n?.attributes})}flush(){let t=this._flushPromise,n=(async()=>{t&&await t.catch(()=>{}),await this._doFlush()})().finally(()=>{this._flushPromise===n&&(this._flushPromise=null)});return this._flushPromise=n,n}drainWindow(){if(this._series.size===0)return null;let t=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(t)}reset(){this._generation++,this._retryAfter.reset(),this._consecutiveFlushFailures=0,this._flushJitter=q8,this._flushTimer.clear(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(t){if(this._instance.isDisabled||this._instance.optedOut)return;let r=this._runBeforeSend(t);if(r===null)return;if(!r.name||typeof r.name!="string")return void this._logger.warn("Dropping metric with empty name");if(typeof r.value!="number"||!Number.isFinite(r.value))return void this._logger.warn(`Dropping metric '${r.name}': value must be a finite number`);if(r.type==="count"&&r.value<0)return void this._logger.warn(`Dropping count '${r.name}': counters are monotonic, value must be >= 0`);let n,i;try{n=r.attributes?{...r.attributes}:void 0,i=QXo(r.type,r.name,r.unit,n)}catch(a){this._logger.warn(`Dropping metric '${r.name}': attributes could not be serialized`,a);return}let o=this._series.get(i);if(!o){if(!this._admitNewSeries())return;o={name:r.name,type:r.type,unit:r.unit,attributes:n,windowStartMs:Date.now()},this._series.set(i,o)}let s=this._typeByName.get(r.name);s===void 0?this._typeByName.set(r.name,r.type):s!==r.type&&!this._typeCollisionWarned.has(r.name)&&(this._typeCollisionWarned.add(r.name),this._logger.warn(`Metric name '${r.name}' is already used as a ${s}; recording it as a ${r.type} too will blend both series in charts. Use a distinct name.`)),this._fold(o,r.value),this._armFlushTimer()}_admitNewSeries(){return this._series.size<this._config.maxSeriesPerFlush?!0:(this._seriesCapWarned||(this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`)),!1)}_fold(t,r){switch(t.type){case"count":t.total=(t.total??0)+r;break;case"gauge":t.last=r;break;case"histogram":{t.hist||(t.hist={count:0,sum:0,min:r,max:r,bucketCounts:new Array(aKt.length+1).fill(0)});let n=t.hist;n.count+=1,n.sum+=r,n.min=Math.min(n.min,r),n.max=Math.max(n.max,r),n.bucketCounts[_ol(r,aKt)]+=1;break}}}_runBeforeSend(t){let r=this._config.beforeSend;if(!r)return t;let n=V4(r)?r:[r],i=t;for(let o of n)try{let s=o(i);if(!s)return this._logger.info("Metric was rejected in beforeSend function"),null;i=s}catch(s){return this._logger.error("Error in beforeSend function for metric:",s),null}return i}_armFlushTimer(){this._flushTimer.pending||this._flushTimer.arm(this._nextFlushDelay())}_nextFlushDelay(){return Math.max(sKt(this._config.flushIntervalMs,this._consecutiveFlushFailures,this._flushJitter,3e4),this._retryAfter.remainingMs())}async _doFlush(){if(this._flushTimer.clear(),this._series.size===0)return;let t=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let r=this._generation,n=await this._instance._sendMetricsBatch(this._buildPayload(t));if(r===this._generation)switch(this._retryAfter.record(n),n.kind==="retry-later"?(this._consecutiveFlushFailures++,this._flushJitter=oKt()):(this._consecutiveFlushFailures=0,this._flushJitter=q8),this._flushTimer.pending&&this._flushTimer.arm(this._nextFlushDelay()),n.kind){case"ok":return;case"retry-later":this._mergeWindowBack(t),this._flushTimer.armNoEarlierThan(this._nextFlushDelay());return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",n.error);return}}_buildPayload(t){return LXo(this._buildMetrics(t),MXo(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(t){let r=zXo(Date.now()),n=new Map;for(let i of t.values()){let o=QXo(i.type,i.name,i.unit,void 0),s=n.get(o);s||(s={name:i.name,...i.unit&&{unit:i.unit}},i.type==="count"?s.sum={aggregationTemporality:Uol,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?s.gauge={dataPoints:[]}:s.histogram={aggregationTemporality:Uol,dataPoints:[]},n.set(o,s));let a=gne(i.attributes??{},this._logger),c=zXo(i.windowStartMs);if(i.type==="count"){let u={attributes:a,startTimeUnixNano:c,timeUnixNano:r,asDouble:i.total??0};s.sum.dataPoints.push(u)}else if(i.type==="gauge"){let u={attributes:a,timeUnixNano:r,asDouble:i.last??0};s.gauge.dataPoints.push(u)}else if(i.hist){let u={attributes:a,startTimeUnixNano:c,timeUnixNano:r,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:aKt};s.histogram.dataPoints.push(u)}}return Array.from(n.values())}_mergeWindowBack(t){for(let[r,n]of t){let i=this._series.get(r);if(!i){this._admitNewSeries()&&this._series.set(r,n);continue}switch(i.windowStartMs=Math.min(i.windowStartMs,n.windowStartMs),i.type){case"count":i.total=(i.total??0)+(n.total??0);break;case"gauge":break;case"histogram":if(n.hist)if(i.hist){i.hist.count+=n.hist.count,i.hist.sum+=n.hist.sum,i.hist.min=Math.min(i.hist.min,n.hist.min),i.hist.max=Math.max(i.hist.max,n.hist.max);for(let o=0;o<i.hist.bucketCounts.length;o++)i.hist.bucketCounts[o]+=n.hist.bucketCounts[o]}else i.hist=n.hist;break}}}};var nuh="0".repeat(32),iuh="0".repeat(16),ouh=/^[0-9a-f]+$/;function suh(e){let t=new Uint8Array(e),r=globalThis.crypto;if(r&&typeof r.getRandomValues=="function")try{return r.getRandomValues(t),t}catch{}for(let n=0;n<e;n++)t[n]=Math.floor(256*Math.random());return t}function auh(e){let t="";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,"0");return t}function Vol(e){let t=auh(suh(e));return/[^0]/.test(t)?t:t.slice(0,-1)+"1"}function Gol(){return Vol(16)}function qol(){return Vol(8)}function Wol(e,t,r){return typeof e=="string"&&e.length===t&&e!==r&&ouh.test(e)}function Hol(e){return Wol(e,32,nuh)}function Kol(e){return Wol(e,16,iuh)}var cuh=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?$/;function Jol(e){let t=Yol(e);return t&&{traceId:t.traceId,spanId:t.spanId,flags:uuh(t.flags)}}function uuh(e){return 1&parseInt(e,16)?kin:luh}function Yol(e){if(typeof e!="string")return;let t=cuh.exec(e.trim());if(!t)return;let[,r,n,i,o,s]=t;if(r!=="ff"&&!(r==="00"&&s)&&!(!Hol(n)||!Kol(i)))return{version:r,traceId:n,spanId:i,flags:o}}function Xol(e){return Yol(e)&&e.trim()}function Din(e){return Array.isArray(e)&&e.length===1?e[0]:e}var kin="01",luh="00";function Zol(e,t,r=kin){return`00-${e}-${t}-${r}`}var puh=32,_Xo=512;function Fin(e){if(typeof e!="string")return;let t=e.trim();if(!t||/[^\x20-\x7e\t]/.test(t))return;let r=t.split(",");if(!(r.length>puh)){for(let n of r)if(n.trim()&&!n.includes("="))return;return t.length<=_Xo?t:duh(r)}}var fuh=128;function duh(e){let t=[...e],r=()=>t.reduce((n,i)=>n+i.length,0)+t.length-1;for(let n=t.length-1;n>=0&&r()>_Xo;n--)t[n].length>fuh&&t.splice(n,1);for(;t.length&&r()>_Xo;)t.pop();return t.length?t.join(","):void 0}var $ol="unknown";function y5e(e,t,r,n){return typeof e=="string"&&e.trim()?e.length>r?e.slice(0,r):e:(n?.debug(`${t} must be a non-empty string; using "${$ol}"`),$ol)}function Sft(e){if(e==null)return;let t=e;if(e instanceof Date)try{t=e.getTime()}catch{return}if(!(typeof t!="number"||!Number.isFinite(t))&&!(t<0||t>9223372036854))return t}function esl(e,t,r){let n=Sft(e);return n===void 0?(e!==void 0&&r?.debug("Span startTime is out of range or not a valid time; using the current time"),t):(t-n>864e5?r?.debug("Span startTime is more than 24 hours in the past; the server will clamp it to receive time and keep the original in $originalTimestamp"):n>t&&r?.debug("Span startTime is in the future; the span may export with a zero duration"),n)}function Nin(e,t){return e<t?t:e}function uKt(e,t,r,n){let i=Sft(e);return i===void 0?(e!==void 0&&n?.debug(`Span ${r} is out of range or not a valid time; using the derived time`),t):i}function zin(){let e=globalThis.performance;return typeof e?.now=="function"?e.now():void 0}var Tft=class{constructor(t,r,n){this._onEnd=r,this._logger=n,this._events=[],this._ended=!1,this._userAttributeCount=0,this._userEventCount=0,this._droppedAttributes=0,this._droppedEvents=0,this._traceId=t.traceId,this._spanId=t.spanId,this._parentSpanId=t.parentSpanId,this._traceState=t.traceState,this._traceFlags=t.traceFlags??kin,this._parentIsRemote=t.parentIsRemote??!1,this._name=t.name,this._kind=t.kind,this._autoKeys=new Set(t.autoAttributeKeys),this._maxAttributes=t.maxAttributes,this._maxEvents=t.maxEvents,this._maxAttributesPerEvent=t.maxAttributesPerEvent,this._maxAttributeValueLength=t.maxAttributeValueLength,this._attributes=Object.create(null);for(let i of Object.keys(t.attributes))this._writeAttribute(i,t.attributes[i]);this._startMono=t.backdated?void 0:zin(),this._startTime=t.clockAnchor&&this._startMono!==void 0?t.clockAnchor.wall+(this._startMono-t.clockAnchor.mono):t.startTime,this._startMono!==void 0&&(this._clockAnchor=t.clockAnchor??{wall:this._startTime,mono:this._startMono})}_now(){if(this._startMono!==void 0){let t=zin();if(t!==void 0)return this._startTime+Math.max(0,t-this._startMono)}return Date.now()}_mutable(t){return this._ended?(this._logger?.debug(`Ignoring ${t} on a span that has already ended`),!1):!0}_writeAttribute(t,r){if(zJ(r)){t in this._attributes&&!this._autoKeys.has(t)&&this._userAttributeCount--,delete this._attributes[t];return}if(!this._autoKeys.has(t)&&!(t in this._attributes)){if(this._userAttributeCount>=this._maxAttributes)return void this._droppedAttributes++;this._userAttributeCount++}this._attributes[t]=Min(r,this._maxAttributeValueLength)}setAttribute(t,r){return this._mutable("setAttribute")&&this._writeAttribute(t,r),this}setAttributes(t){if(this._mutable("setAttributes")){let r=Ghe({},t);for(let n of Object.keys(r))this._writeAttribute(n,r[n])}return this}addEvent(t,r,n){if(this._mutable("addEvent")){if(this._userEventCount>=this._maxEvents)return this._droppedEvents++,this;this._userEventCount++;let i=r&&isl(r,this._maxAttributesPerEvent,this._maxAttributeValueLength);this._events.push({name:y5e(t,"Span event name",this._maxAttributeValueLength,this._logger),timestamp:uKt(n,this._now(),"event timestamp",this._logger),...i&&{attributes:i.attributes,...i.dropped&&{droppedAttributesCount:i.dropped}}})}return this}setStatus(t,r){if(this._mutable("setStatus")){if(t!=="ok"&&t!=="error")return this._logger?.debug(`Ignoring unknown span status "${String(t)}"; expected "ok" or "error"`),this;this._status={code:t,...r&&{message:UXo(r,this._maxAttributeValueLength)}}}return this}get statusIsExplicitlyOk(){return this._status?.code==="ok"}recordException(t){if(!this._mutable("recordException"))return this;let{type:r,message:n,stack:i}=VXo(t);return this.addEvent(muh,{"exception.type":r,"exception.message":n,...i&&{"exception.stacktrace":i}}),this.setStatus("error",n)}updateName(t){return this._mutable("updateName")&&(this._name=y5e(t,"Span name",this._maxAttributeValueLength,this._logger)),this}traceparent(){return Zol(this._traceId,this._spanId,this._traceFlags)}tracestate(){return this._traceState??null}childContext(){return{traceId:this._traceId,parentSpanId:this._spanId,traceState:this._traceState,traceFlags:this._traceFlags,clockAnchor:this._clockAnchor}}end(t){if(this._ended)return void this._logger?.debug("Ignoring end() on a span that has already ended");this._ended=!0;let r=this._now(),n=uKt(t,r,"end time",this._logger);this._onEnd({traceId:this._traceId,spanId:this._spanId,...this._parentSpanId&&{parentSpanId:this._parentSpanId},...this._traceState&&{traceState:this._traceState},traceFlags:this._traceFlags,parentIsRemote:this._parentIsRemote,name:this._name,kind:this._kind,...this._status&&{status:this._status},attributes:{...this._attributes},events:this._events,startTime:this._startTime,endTime:Nin(n,this._startTime),...this._droppedAttributes&&{droppedAttributesCount:this._droppedAttributes},...this._droppedEvents&&{droppedEventsCount:this._droppedEvents}},this._autoKeys)}},muh="exception",huh=4294967295;function guh(e){try{return typeof e=="string"?e:String(e)}catch{return _8}}function b5e(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?0:Math.min(Math.floor(e),huh)}function Auh(e,t){if(!t.length)return Object.keys(e);let r=t.filter(i=>Object.prototype.propertyIsEnumerable.call(e,i)),n=new Set(r);return[...r,...Object.keys(e).filter(i=>!n.has(i))]}function rsl(e,t,r,n,i,o,s=[]){let a=0,c=0,u={};for(let f of Auh(e.attributes,s)){let m=e.attributes[f];if(!zJ(m)){if(!t.has(f)){if(a>=r){c++;continue}a++}Object.defineProperty(u,f,{value:Min(m,o),enumerable:!0,writable:!0,configurable:!0})}}e.attributes=u,c&&(e.droppedAttributesCount=b5e(e.droppedAttributesCount)+c);let l=0,p=0,d=[];for(let f of e.events){if(l>=n){p++;continue}if(l++,f.attributes){let m=isl(f.attributes,i,o);f.attributes=m.attributes,m.dropped&&(f.droppedAttributesCount=b5e(f.droppedAttributesCount)+m.dropped)}d.push(f)}e.events=d,p&&(e.droppedEventsCount=b5e(e.droppedEventsCount)+p),e.status?.message&&(e.status={...e.status,message:UXo(guh(e.status.message),o)})}var Qin=class{setAttribute(){return this}setAttributes(){return this}addEvent(){return this}setStatus(){return this}recordException(){return this}updateName(){return this}traceparent(){return null}tracestate(){return null}end(){}},nsl=new Qin,lKt=class extends Qin{constructor(t,r){super(),this._traceparent=t,this._tracestate=r}traceparent(){return this._traceparent}tracestate(){return this._tracestate??null}};function yuh(e){try{let t=e.stack;return typeof t=="string"&&t?{stack:t}:{}}catch{return{}}}function f1e(e,t){let r=Din(e?.parent)??t,n=typeof r=="string"||r==null?r:tsl(r,"traceparent"),i=Xol(n);if(!i)return nsl;let o=typeof r=="string"||r==null?e?.tracestate:tsl(r,"tracestate");return new lKt(i,Fin(o))}function tsl(e,t){try{let r=e[t];return typeof r=="function"?r.call(e):void 0}catch{return}}function UXo(e,t){return e.length>t?e.slice(0,t):e}function Min(e,t){return jin(e,t,{ancestors:new WeakSet,remainingNodes:1e4},0)}function jin(e,t,r,n){if(e===null||typeof e!="object")return zJ(e)||r.remainingNodes<=0?e:(r.remainingNodes--,typeof e=="string"?UXo(e,t):e);if(r.ancestors.has(e))return Ain;if(r.remainingNodes<=0||n>=20)return e;r.remainingNodes--,r.ancestors.add(e);try{if(e instanceof Date)return e;let i=buh(e);if(i.selfDescribed)return zJ(i.value)?String(i.value):jin(i.value,t,r,n+1);if(V4(e)){let a=Math.min(e.length,1e3),c=[];for(let u=0;u<a;u++)try{c.push(jin(e[u],t,r,n+1))}catch{c.push(_8)}return e.length>a&&(c.length=e.length),c}let o={},s=0;for(let a of Object.keys(e)){if(s>=1e3)break;let c;try{c=jin(e[a],t,r,n+1)}catch{c=_8}a&&!zJ(c)&&s++,Object.defineProperty(o,a,{value:c,enumerable:!0,writable:!0,configurable:!0})}return o}catch{return e}finally{r.ancestors.delete(e)}}function buh(e){try{let t=e.toJSON;if(typeof t=="function")return{selfDescribed:!0,value:t.call(e)}}catch{}return{selfDescribed:!1}}function isl(e,t,r){let n;try{n=Object.keys(e)}catch{return{attributes:{},dropped:0}}let i={},o=0,s=0;for(let a of n){if(o>=t){s++;continue}let c;try{c=Min(e[a],r)}catch{c=_8}zJ(c)||(o++,Object.defineProperty(i,a,{value:c,enumerable:!0,writable:!0,configurable:!0}))}return{attributes:i,dropped:s}}function osl(e,t){for(let r of Object.keys(e))e[r]=Min(e[r],t);return e}function pKt(e,t,r){return t===nsl?r(t):e.with(t,()=>r(t))}function VXo(e){try{let t=yuh(e);if(l1e(e))return{type:e.name||"Error",message:e.message||"",...t};if(typeof e=="string")return{type:"string",message:e};if(e&&typeof e=="object"){let r=e;if(typeof r.message=="string")return{type:typeof r.name=="string"?r.name:"Object",message:r.message,...t}}return{type:typeof e,message:String(e)}}catch{return{type:typeof e,message:""}}}var GXo={internal:1,server:2,client:3,producer:4,consumer:5},Euh={ok:1,error:2},Iuh=1,vuh=256,Cuh=512;function xuh(e){let t=parseInt(e.traceFlags,16);return(Number.isFinite(t)?255&t:Iuh)|vuh|(e.parentIsRemote?Cuh:0)}function Lin(e){if(typeof e=="string")return mne(e);try{return mne(String(e))}catch{return _8}}function wuh(e){return e&&Object.prototype.hasOwnProperty.call(GXo,e)?GXo[e]:GXo.internal}function qXo(e){let t=Math.floor(e),r=Math.round((e-t)*1e6);return r>=1e6&&(t+=1,r=0),String(t)+String(r).padStart(6,"0")}function Suh(e,t){let r={name:Lin(e.name),timeUnixNano:qXo(e.timestamp)};if(e.attributes){let i=gne(e.attributes,t);i.length&&(r.attributes=i)}let n=b5e(e.droppedAttributesCount);return n&&(r.droppedAttributesCount=n),r}function ssl(e,t){let r={traceId:e.traceId,spanId:e.spanId,name:Lin(e.name),kind:wuh(e.kind),startTimeUnixNano:qXo(e.startTime),endTimeUnixNano:qXo(e.endTime),flags:xuh(e)};e.parentSpanId&&(r.parentSpanId=e.parentSpanId),e.traceState&&(r.traceState=Lin(e.traceState));let n=gne(e.attributes,t);n.length&&(r.attributes=n),e.events.length&&(r.events=e.events.map(s=>Suh(s,t)));let i=b5e(e.droppedAttributesCount);i&&(r.droppedAttributesCount=i);let o=b5e(e.droppedEventsCount);return o&&(r.droppedEventsCount=o),e.status&&(r.status={code:Euh[e.status.code],...e.status.message&&{message:Lin(e.status.message)}}),r}function asl(e,t,r){return nKt(e,t,r)}function csl(e,t,r,n,i){return{resourceSpans:[{resource:{attributes:iKt(t,i)},scopeSpans:[{scope:{name:r,version:n},spans:e}]}]}}var usl=8;function _in(){return zin()??Date.now()}function WXo(e){try{return e instanceof Tft}catch{return!1}}function lsl(e,t){let r=Jol(e);if(r)return{traceId:r.traceId,parentSpanId:r.spanId,traceState:Fin(t),traceFlags:r.flags,isRemote:!0}}function Tuh(e){try{return typeof e.traceparent=="function"}catch{return!1}}function Ouh(e){return!!e.attributes&&typeof e.attributes=="object"&&!Array.isArray(e.attributes)&&Array.isArray(e.events)&&e.name!==void 0&&e.kind!==void 0&&e.startTime!==void 0&&e.endTime!==void 0}function Uin(e,t,r){e[t]!==r&&(e[t]=r)}function Puh(e,t){try{let r=Object.getOwnPropertyDescriptors(e);for(let n of["traceId","spanId","parentSpanId","traceState"])r[n]={value:t[n],enumerable:!0,writable:!0,configurable:!0};return Object.create(Object.getPrototypeOf(e),r)}catch{return e}}var fKt=class{constructor(t,r,n,i,o,s){this._instance=t,this._config=r,this._logger=n,this._getContext=i,this._contextManager=o,this._onSpanQueued=s,this._queue=[],this._flushTimer=new A5e(()=>this._flushInBackground()),this._flushPromise=null,this._droppedSinceWarning=0,this._lastDropWarningAt=0,this._dropReasons=new Set,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._retryAfter=new h5e,this._headBatchFailures=0,this._headBatchSize=0,this._headBatchChargeableAt=0,this._generation=0,this._liveSpans=new Map,this._maxExportBatchSize=r.maxExportBatchSize}startSpan(t,r){if(this._instance.isDisabled||this._instance.optedOut)return f1e(r,this._contextManager.active());let n=Din(r?.parent);if(n&&typeof n!="string"&&!WXo(n)){if(Tuh(n))return this._logger.debug("Span parent is not a span from this SDK; returning an inert span"),f1e(r,this._contextManager.active());this._logger.debug("Ignoring an unusable span parent")}let i=this._resolveParent(n,r);if(this._liveSpans.size>=this._config.maxLiveSpans&&this._evictAgedSpans(),this._liveSpans.size>=this._config.maxLiveSpans)return this._recordDrop(1,`the live-span limit (${this._config.maxLiveSpans}) was reached \u2014 spans are being started and never ended`),f1e(r,this._contextManager.active());let o=Date.now(),s=esl(r?.startTime,o,this._logger),a=qol();this._liveSpans.set(a,_in());let c=this._autoContextAttributes();return new Tft({traceId:i?.traceId??Gol(),spanId:a,parentSpanId:i?.parentSpanId,traceState:i?.traceState,traceFlags:i?.traceFlags,parentIsRemote:i?.isRemote,name:y5e(t,"Span name",this._config.maxAttributeValueLength,this._logger),kind:r?.kind??"internal",attributes:Ghe({...c},r?.attributes),autoAttributeKeys:Object.keys(c),maxAttributes:this._config.maxAttributesPerSpan,maxEvents:this._config.maxEventsPerSpan,maxAttributesPerEvent:this._config.maxAttributesPerEvent,maxAttributeValueLength:this._config.maxAttributeValueLength,startTime:s,backdated:s!==o,clockAnchor:Sft(r?.startTime)===void 0?i?.clockAnchor:void 0},(u,l)=>this._onSpanEnd(u,l),this._logger)}withSpan(t,r,n){let i=typeof r=="function"?void 0:r,o=typeof r=="function"?r:n,s=this.startSpan(t,i);try{let a=pKt(this._contextManager,s,o);return col(a)?a.then(c=>(s.end(),c),c=>{throw this._recordCallbackError(s,c),s.end(),c}):(s.end(),a)}catch(a){throw this._recordCallbackError(s,a),s.end(),a}}getActiveSpan(){return this._contextManager.active()??null}get throttled(){return this._retryAfter.isOpen()}async flush(){for(;;)if(!this._queue.length||!await(this._flushPromise??this._startFlush()))return}_startFlush(){this._flushTimer.clear();let t=this._generation,r=Promise.resolve().then(()=>t===this._generation?this._flushInner():0).finally(()=>{this._flushPromise===r&&(this._flushPromise=null),this._armFlushTimerIfQueuedNoEarlierThan()});return this._flushPromise=r,r}reset(){this._flushTimer.clear(),this._queue.length&&this._logger.critical(`Discarding ${this._queue.length} span(s) that were still queued when tracing was shut down. Raise the shutdown timeout or flush earlier if they matter.`),this._queue=[],this._liveSpans.clear(),this._flushPromise=null,this._generation++,this._maxExportBatchSize=this._config.maxExportBatchSize,this._droppedSinceWarning=0,this._dropReasons.clear(),this._lastDropWarningAt=0,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._retryAfter.reset(),this._resetHeadBatchBudget()}_resetHeadBatchBudget(){this._headBatchFailures=0,this._headBatchChargeableAt=0}_resolveParent(t,r){if(typeof t=="string"){let i=lsl(t,r?.tracestate);return i||this._logger.debug("Ignoring malformed traceparent; starting a new trace"),i}if(WXo(t))return t.childContext();let n=this._contextManager.active();if(WXo(n))return n.childContext();if(n instanceof lKt)return lsl(n.traceparent(),n.tracestate()??void 0)}_autoContextAttributes(){let t;try{t=this._getContext()}catch(n){return this._logger.debug("Failed to read tracing context; span will carry no PostHog attributes",n),{}}let r={};return t.distinctId&&(r.posthogDistinctId=t.distinctId),t.sessionId&&(r.sessionId=t.sessionId),t.currentUrl&&(r["url.full"]=t.currentUrl),t.screenName&&(r["screen.name"]=t.screenName),t.appState&&(r["app.state"]=t.appState),r}_recordCallbackError(t,r){if(!(t instanceof Tft))return;let{type:n,message:i,stack:o}=VXo(r);t.addEvent("exception",{"exception.type":n,"exception.message":i,...o&&{"exception.stacktrace":o}}),t.statusIsExplicitlyOk||t.setStatus("error",i)}_evictAgedSpans(){let t=_in()-this._config.maxSpanAgeMs,r=0;for(let[n,i]of this._liveSpans){if(i>t)break;this._liveSpans.delete(n),r++}r&&this._recordDrop(r,`they were still live after ${this._config.maxSpanAgeMs}ms`)}_onSpanEnd(t,r){if(!this._liveSpans.delete(t.spanId))return;if(this._instance.isDisabled||this._instance.optedOut)return void this._recordDrop(1,"the user has opted out");let n=this._runBeforeSpanSend(t,r);if(n){if(this._reportLimitDrops(n),this._queue.length>=this._config.maxQueueSize)return void this._recordDrop(1,`the queue is full (${this._config.maxQueueSize}) \u2014 raise the flush frequency or reduce span volume`);this._queue.push(n);try{this._onSpanQueued?.()}catch(i){this._logger.debug("Span queue notification failed",i)}!(this._queue.length>=this._maxExportBatchSize)||this._consecutiveFlushFailures||this._retryAfter.isOpen()?this._armFlushTimerIfQueued():this._flushInBackground()}}_reportLimitDrops(t){let r=t.droppedAttributesCount??0,n=t.droppedEventsCount??0,i=0;for(let o of t.events)i+=o.droppedAttributesCount??0;(r||n||i)&&this._logger.debug(`Span limits discarded data from "${t.name}": ${r} attributes, ${n} events, ${i} event attributes`)}_runBeforeSpanSend(t,r){if(!this._config.beforeSpanSend.length)return t;let n={traceId:t.traceId,spanId:t.spanId,parentSpanId:t.parentSpanId,traceState:t.traceState},i={startTime:t.startTime,endTime:t.endTime},o={attributes:t.droppedAttributesCount,events:t.droppedEventsCount},s=Object.keys(t.attributes),a={traceFlags:t.traceFlags,parentIsRemote:t.parentIsRemote},c=t.status&&{...t.status},u=t,l=t;try{for(let f of this._config.beforeSpanSend){let m=f(u);if(!m)return this._recordDrop(1,"beforeSpanSend dropped it"),null;u=this._keepSpanIdentity(m,n)}if(l={traceId:n.traceId,spanId:n.spanId,parentSpanId:n.parentSpanId,traceState:n.traceState,name:u.name,kind:u.kind,status:u.status,attributes:u.attributes,events:u.events,startTime:u.startTime,endTime:u.endTime,traceFlags:a.traceFlags,parentIsRemote:a.parentIsRemote,droppedAttributesCount:o.attributes,droppedEventsCount:o.events},!Ouh(l))return this._logger.debug("beforeSpanSend did not return a span record; dropping the span"),this._recordDrop(1,"beforeSpanSend returned an unusable record"),null;l.name=y5e(l.name,"Span name",this._config.maxAttributeValueLength,this._logger),l.status&&l.status.code!=="ok"&&l.status.code!=="error"&&(this._logger.debug("beforeSpanSend set an unknown span status; keeping the original"),l.status=c),l.startTime=Sft(l.startTime)??i.startTime,l.endTime=Nin(Sft(l.endTime)??i.endTime,l.startTime);let d=[];for(let f of l.events)try{d.push({...f,name:y5e(f.name,"Span event name",this._config.maxAttributeValueLength,this._logger),timestamp:uKt(f.timestamp,l.startTime,"event timestamp",this._logger)})}catch{this._logger.debug("beforeSpanSend left an unreadable span event; dropping it")}return l.events=d,rsl(l,r,this._config.maxAttributesPerSpan,this._config.maxEventsPerSpan,this._config.maxAttributesPerEvent,this._config.maxAttributeValueLength,s),l}catch(p){return this._logger.debug("beforeSpanSend failed; dropping the span rather than exporting it unscrubbed",p),this._recordDrop(1,"beforeSpanSend failed"),null}}_keepSpanIdentity(t,r){(t.traceId!==r.traceId||t.spanId!==r.spanId||t.parentSpanId!==r.parentSpanId)&&this._logger.debug("beforeSpanSend changed a span identity field; keeping the original ids");try{Uin(t,"traceId",r.traceId),Uin(t,"spanId",r.spanId),Uin(t,"parentSpanId",r.parentSpanId),Uin(t,"traceState",r.traceState)}catch{return Puh(t,r)}return t}_recordDrop(t,r){this._droppedSinceWarning+=t,this._dropReasons.add(r),Date.now()-this._lastDropWarningAt>=this._config.flushIntervalMs&&this._warnAboutDrops()}_warnAboutDrops(){this._droppedSinceWarning&&(this._lastDropWarningAt=Date.now(),this._logger.warn(`Dropping ${this._droppedSinceWarning} span(s): ${[...this._dropReasons].join("; ")}`),this._droppedSinceWarning=0,this._dropReasons.clear())}_encodeBatch(t){let r=[];for(let n of t)try{r.push(ssl(n,this._logger))}catch(i){this._logger.debug("Failed to encode a span; dropping it",i),this._recordDrop(1,"its attributes could not be encoded")}return r}_discardQueueIfConsentWithdrawn(){if(!this._instance.isDisabled&&!this._instance.optedOut)return 0;let t=this._queue.length;return this._queue=[],this._resetHeadBatchBudget(),this._recordDrop(t,"the user has opted out"),this._warnAboutDrops(),t}async _flushInner(){if(!this._queue.length)return 0;let t=this._discardQueueIfConsentWithdrawn();if(t)return t;let r=osl(asl(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._config.maxAttributeValueLength),n=this._instance.getLibraryId(),i=this._instance.getLibraryVersion(),o=this._queue.length,s=0,a=1/0,c=this._generation;try{for(;o>0&&this._queue.length>0;){let u=this._discardQueueIfConsentWithdrawn();if(u)return s+u;let l=this._headBatchFailures>0?Math.min(this._maxExportBatchSize,this._headBatchSize):this._maxExportBatchSize,p=Math.max(1,Math.min(l,a,o,this._queue.length)),d=this._queue.slice(0,p),f=this._encodeBatch(d);if(!f.length){this._queue.splice(0,p),o-=p,s+=p,this._resetHeadBatchBudget();continue}let m=_in()>=this._headBatchChargeableAt&&!this._retryAfter.isOpen(),g=await this._instance._sendTracesBatch(csl(f,r,n,i,this._logger));if(c!==this._generation)break;if(this._retryAfter.record(g),g.kind==="ok"){this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget(),this._queue.splice(0,p),o-=p,s+=p,this._maxExportBatchSize<this._config.maxExportBatchSize&&this._maxExportBatchSize++;continue}if(g.kind==="too-large"){if(p===1){this._queue.splice(0,1),o-=1,s+=1,this._recordDrop(1,"it is too large for the ingestion endpoint"),this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget();continue}let A=Math.max(1,Math.floor(p/2));g.measuredLocally?a=A:this._maxExportBatchSize=A,this._resetHeadBatchBudget(),this._logger.debug(`Batch too large; retrying the same spans in batches of ${A}`);continue}if(g.kind==="retry-later"){if(this._consecutiveFlushFailures++,this._flushJitter=oKt(),this._headBatchSize=p,m&&(this._headBatchFailures++,this._headBatchChargeableAt=_in()+this._nextFlushDelay()),this._headBatchFailures<usl)return this._logger.debug("Span export failed; retrying on the next flush",g.error),s;if(this._queue.splice(0,p),o-=p,s+=p,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget(),this._recordDrop(p,`the ingestion endpoint failed ${usl} times in a row`),this._retryAfter.isOpen())return s;continue}this._logger.debug("Dropping a span batch the ingestion endpoint rejected",g.error),this._queue.splice(0,p),o-=p,s+=p,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget(),this._recordDrop(p,"the ingestion endpoint rejected the batch")}return s}finally{this._warnAboutDrops()}}_flushInBackground(){this._backgroundFlush||(this._backgroundFlush=this.flush().catch(t=>{this._logger.debug("Background span flush failed",t)}).finally(()=>{this._backgroundFlush=void 0,this._armFlushTimerIfQueuedNoEarlierThan()}))}_armFlushTimerIfQueued(){this._flushTimer.pending||!this._queue.length||this._flushTimer.arm(this._nextFlushDelay())}_armFlushTimerIfQueuedNoEarlierThan(){this._queue.length&&this._flushTimer.armNoEarlierThan(this._nextFlushDelay())}_nextFlushDelay(){return Math.max(sKt(this._config.flushIntervalMs,this._consecutiveFlushFailures,this._flushJitter,3e4),this._retryAfter.remainingMs())}};var dKt=class{active(){return this._active}with(t,r){let n=this._active;this._active=t;try{return r()}finally{this._active=n}}};var Buh=5e3,Ruh=512,Duh=2048,kuh=128,Fuh=128,Nuh=128,juh=8192,zuh=1e4,Quh=36e5;function d1e(e,t){return typeof e=="number"&&Number.isInteger(e)&&e>=1?e:t}var psl=["service.name","service.version","deployment.environment"];function Muh(e){if(!(!e||typeof e!="object"||Array.isArray(e)))try{if(psl.every(r=>!(r in e)||typeof e[r]=="string"))return e;let t={...e};for(let r of psl)r in t&&typeof t[r]!="string"&&delete t[r];return t}catch{return}}function Luh(e,t){if(!e)return[];let r=[e].flat().filter(i=>!!i),n=r.filter(i=>typeof i=="function");return n.length!==r.length&&t?.critical(`beforeSpanSend: ignoring ${r.length-n.length} of ${r.length} entries that are not functions. Spans export without them, so whatever they were redacting is not redacted.`),n}function HXo(e,t,r){let n=Ghe({...t},Muh(e?.resourceAttributes)),i=d1e(e?.maxExportBatchSize,Ruh);return{serviceName:n?.["service.name"]??e?.serviceName,serviceVersion:n?.["service.version"]??e?.serviceVersion,environment:n?.["deployment.environment"]??e?.environment,resourceAttributes:n,beforeSpanSend:Luh(e?.beforeSpanSend,r),maxAttributesPerSpan:d1e(e?.maxAttributesPerSpan,kuh),maxEventsPerSpan:d1e(e?.maxEventsPerSpan,Fuh),maxAttributesPerEvent:Nuh,maxAttributeValueLength:d1e(e?.maxAttributeValueLength,juh),flushIntervalMs:d1e(e?.flushIntervalMs,Buh),maxExportBatchSize:i,maxQueueSize:Math.max(d1e(e?.maxQueueSize,Duh),i),maxLiveSpans:d1e(e?.maxLiveSpans,zuh),maxSpanAgeMs:d1e(e?.maxSpanAgeMs,Quh)}}var KXo=require("fs"),msl=require("fs/promises"),YXo=require("path"),hsl=require("readline"),Vin=new nO.ReduceableCache(25),mKt=new nO.ReduceableCache(20),XXo=7,_uh=1e3,Uuh=1e4,JXo=10485760;async function gsl(e,t=msl.open,r){let n={},i;try{i=process.cwd()}catch{}for(let a=e.length-1;a>=0;a--){let c=e[a],u=c?.filename;if(!c||typeof u!="string"||typeof c.lineno!="number"||Huh(u)||Kuh(c)||!(0,YXo.isAbsolute)(u)&&i===void 0)continue;n[u]||(n[u]=[]),n[u].push(c.lineno)}let o=Object.keys(n);if(o.length==0)return e;let s=[];for(let a of o){let c=Asl(a,i);if(c===void 0||mKt.get(c))continue;let u=n[a];if(!u)continue;u.sort((d,f)=>d-f);let l=Yuh(u);if(l.every(d=>Juh(c,d)))continue;let p=Xuh(Vin,c,{});s.push(Guh(a,l,p,c,t,r))}return await Promise.all(s).catch(()=>{}),e&&e.length>0&&quh(e,Vin,i),Vin.reduce(),e}async function Vuh(e,t,r){let n,i=!1;try{n=await t(e,KXo.constants.O_RDONLY|KXo.constants.O_NONBLOCK);let o=await n.stat();return o.isFile()?o.size>JXo?void r?.debug(`Skipping source context for oversized file ${e}: ${o.size} bytes exceeds ${JXo}`):(i=!0,n):void 0}catch{return}finally{n&&!i&&await n.close().catch(()=>{})}}async function Guh(e,t,r,n,i,o){let s=await Vuh(e,i,o);if(s===void 0)return void mKt.set(n,1);let a=s;return new Promise(c=>{let u=!1;function l(x){u||(u=!0,x?.destroy(),a.close().then(c,c))}let p;try{p=a.createReadStream({autoClose:!1,start:0,end:JXo-1})}catch{mKt.set(n,1),l();return}let d;try{d=(0,hsl.createInterface)({input:p})}catch{mKt.set(n,1),l(p);return}let f=0,m=0,g=t[m];if(g===void 0)return void l(p);let A=g[0],y=g[1];function I(){mKt.set(n,1),d.close(),d.removeAllListeners(),l(p)}p.on("error",I),d.on("error",I),d.on("close",()=>l(p)),d.on("line",x=>{if(f++,!(f<A)&&(r[f]=Zuh(x,0),f>=y)){if(m===t.length-1){d.close(),d.removeAllListeners();return}m++;let v=t[m];if(v===void 0){d.close(),d.removeAllListeners();return}A=v[0],y=v[1]}})})}function quh(e,t,r){for(let n of e)if(n.filename&&n.context_line===void 0&&typeof n.lineno=="number"){let i=Asl(n.filename,r),o=i===void 0?void 0:t.get(i);if(o===void 0)continue;Wuh(n.lineno,n,o)}}function Wuh(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=ysl(e);i<e;i++){let o=r[i];if(o===void 0)return void fsl(t);t.pre_context.push(o)}if(r[e]===void 0)return void fsl(t);t.context_line=r[e];let n=bsl(e);t.post_context=[];for(let i=e+1;i<=n;i++){let o=r[i];if(o===void 0)break;t.post_context.push(o)}}function fsl(e){delete e.pre_context,delete e.context_line,delete e.post_context}function Huh(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function Kuh(e){return e.lineno!==void 0&&e.lineno>Uuh||e.colno!==void 0&&e.colno>_uh}function Asl(e,t){return(0,YXo.isAbsolute)(e)?JSON.stringify([null,e]):t===void 0?void 0:JSON.stringify([t,e])}function Juh(e,t){let r=Vin.get(e);if(r===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(r[n]===void 0)return!1;return!0}function Yuh(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=dsl(r),i=[];for(;;){if(t===e.length-1){i.push(n);break}let o=e[t+1];if(typeof o!="number")break;o<=n[1]?n[1]=o+XXo:(i.push(n),n=dsl(o)),t++}return i}function dsl(e){return[ysl(e),bsl(e)]}function ysl(e){return Math.max(1,e-XXo)}function bsl(e){return e+XXo}function Xuh(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Zuh(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}var Oft=require("path");function Esl(e=process.cwd()){let t=Oft.sep==="\\",r=i=>t?i.replace(/\\/g,"/"):i,n=r(e);return async i=>{for(let o of i)!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:")||(0,Oft.isAbsolute)(o.filename)&&(o.filename=r((0,Oft.relative)(n,r(o.filename))));return i}}var Isl="5.55.0";var Whe={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};var m1e=class e{constructor(t){this._host=t.host,this._distinctId=t.distinctId,this._groups=t.groups,this._disableGeoip=t.disableGeoip,this._flags=t.flags,this._requestId=t.requestId,this._evaluatedAt=t.evaluatedAt,this._flagDefinitionsLoadedAt=t.flagDefinitionsLoadedAt,this._errorsWhileComputing=t.errorsWhileComputing??!1,this._quotaLimited=t.quotaLimited??!1,this._accessed=t.accessed??new Set,this._isSlice=t.isSlice??!1}isEnabled(t,r={}){let n=this._flags[t];return this._recordAccess(t),n?.enabled??r.defaultValue??!1}getFlag(t){let r=this._flags[t];if(this._recordAccess(t),!!r)return r.enabled?r.variant??!0:!1}getFlagPayload(t){return this._flags[t]?.payload}onlyAccessed(){let t={};for(let r of this._accessed){let n=this._flags[r];n&&(t[r]=n)}return this._cloneWith(t)}only(t){let r={},n=[];for(let i of t){let o=this._flags[i];o?r[i]=o:n.push(i)}return n.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${n.join(", ")}`),this._cloneWith(r)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let t={},r=[];for(let[n,i]of Object.entries(this._flags)){let o=i.enabled===!1?!1:i.variant??!0;t[`$feature/${n}`]=o,i.enabled&&r.push(n)}return r.length>0&&(r.sort(),t.$active_feature_flags=r),t}_cloneWith(t){return new e({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:t,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(t){if(this._accessed.add(t),this._distinctId===""||this._isSlice&&!(t in this._flags))return;let r=this._flags[t],n=r===void 0?void 0:r.enabled===!1?!1:r.variant??!0,i={$feature_flag:t,$feature_flag_response:n,$feature_flag_id:r?.id,$feature_flag_version:r?.version,$feature_flag_reason:r?.reason,locally_evaluated:r?.locallyEvaluated??!1,[`$feature/${t}`]:n,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:r?.locallyEvaluated?Date.now():this._evaluatedAt};r?.hasExperiment!==void 0&&(i.$feature_flag_has_experiment=r.hasExperiment),r?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let o=[];this._errorsWhileComputing&&o.push(Whe.ERRORS_WHILE_COMPUTING),this._quotaLimited&&o.push(Whe.QUOTA_LIMITED),r===void 0&&o.push(Whe.FLAG_MISSING),o.length>0&&(i.$feature_flag_error=o.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:t,response:n,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}};var $uh=6e4;function vsl(e){return e==="client"||e==="server"?e:"all"}function elh(e,t){return e===t||e==="all"||t==="all"}var Pft=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}};function tlh(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}var Ane=class e extends Error{constructor(t){super(t),tlh(this,e)}},Gin=class{constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...a}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollerStopped=!1,this.filteredOutFlagKeys=new Set,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=a.fetch||fetch,this.onError=a.onError,this.customHeaders=s,this.onLoad=a.onLoad,this.onMinimalFlagCalledEvents=a.onMinimalFlagCalledEvents,this.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.evaluationContexts=a.evaluationContexts,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}withEvaluationSnapshot(t){return t.definitions?t:{...t,evaluationCache:{},definitions:{featureFlagsByKey:this.featureFlagsByKey,groupTypeMapping:this.groupTypeMapping,cohorts:this.cohorts,filteredOutFlagKeys:this.filteredOutFlagKeys,propertyMatchingVersion:this.propertyMatchingVersion}}}createEvaluationContext(t,r={},n={},i={},o={}){return{distinctId:t,groups:r,personProperties:n,groupProperties:i,evaluationCache:o}}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,a;if(!this.loadedSuccessfullyOnce)return s;if(a=this.featureFlagsByKey[t],a!==void 0){let c=this.createEvaluationContext(r,n,i,o);try{s=(await this.computeFlagAndPayloadLocally(a,c)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${t} -> ${s}`))}catch(u){u instanceof Ane||u instanceof Zu?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${t}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${u}`))}}return s}async getAllFlagsAndPayloads(t,r){await this.loadFeatureFlags();let n={},i={},o=this.featureFlags.length==0,s=r?r.map(c=>this.featureFlagsByKey[c]).filter(Boolean):this.featureFlags,a=this.withEvaluationSnapshot({...t,definitions:void 0});return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a,{skipLoadCheck:!0});n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof Ane||u instanceof Zu?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(this.loadedSuccessfullyOnce&&(r=this.withEvaluationSnapshot(r)),o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};r=this.withEvaluationSnapshot(r),t=r.definitions.featureFlagsByKey[t.key]??t;let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=DXo(t.filters?.payloads,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(!t.active)return!1;if(t.ensure_experience_continuity)throw new Zu("Flag has experience continuity enabled");let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=r.definitions.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new Zu("Flag has unknown group type index");if(!(u in i))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${t.key} without group names passed in`)),!1;t.bucketing_identifier==="device_id"&&(o?.$device_id===void 0||o?.$device_id===null||o?.$device_id==="")&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${t.key}`));let l=s[u];return await this.matchFeatureFlagProperties(t,i[u],l,r)}{let u=this.getBucketingValueForFlag(t,n,o);if(u===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${t.key} without $device_id, falling back to server evaluation`)),new Zu(`Can't compute feature flag: ${t.key} without $device_id`);return await this.matchFeatureFlagProperties(t,u,o,r)}}getBucketingValueForFlag(t,r,n){if(t.filters?.aggregation_group_type_index!=null)return r;if(t.bucketing_identifier==="device_id"){let i=n?.$device_id;return i==null||i===""?void 0:i}return r}async evaluateFlagDependency(t,r,n){let{evaluationCache:i}=n,o=t.key;if(!n.definitions.featureFlagsByKey)throw new Zu("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Zu(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Zu(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Zu(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let c of s){if(!(c in i)){let l=n.definitions.featureFlagsByKey[c];if(l)if(l.active)try{let p=await this.computeFlagValueLocally(l,n);i[c]=p}catch(p){throw new Zu(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else if(n.definitions.filteredOutFlagKeys.has(c))i[c]=!1;else throw new Zu(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Zu(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){i=this.withEvaluationSnapshot(i);let o=t.filters||{},s=await BXo(o.holdout,r);if(s!==void 0)return s;let a=o.groups||[],c=o.aggregation_group_type_index,u=o.early_exit??!1,{groups:l,groupProperties:p}=i,d=!1,f;for(let m of a)try{let g=m.aggregation_group_type_index!==void 0?m.aggregation_group_type_index:c,A=n,y=r;if(g!==c&&g!=null){let x=i.definitions.groupTypeMapping[String(g)];if(!x||!(x in l)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${t.key}': group type index ${g} not available`));continue}if(!(x in p)){d=!0;continue}A=p[x],y=l[x]}let I=await this.isConditionMatch(t,y,m,A,i);if(I==="match"){let x=m.variant,v=o.multivariate?.variants||[];f=x&&v.some(w=>w.key===x)?x:await this.getMatchingVariant(t,y)||!0;break}if(u&&I==="out_of_rollout_bound"){if(d)break;return!1}}catch(g){if(g instanceof Ane)throw g;if(g instanceof Zu)d=!0;else throw g}if(f!==void 0)return f;if(d)throw new Zu("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){o=this.withEvaluationSnapshot(o);let s=o.definitions,a=n.rollout_percentage,c=u=>{this.logMsgIfDebug(()=>console.warn(u))};if((n.properties||[]).length>0){for(let u of n.properties){let l=u.type,p=!1;if(l==="cohort"){let d=await xsl(u,i,s.cohorts,this.debugMode,f=>this.evaluateFlagDependency(f,i,o),s.propertyMatchingVersion);p=u.operator==="not_in"?!d:d}else p=l==="flag"?await this.evaluateFlagDependency(u,i,o):Csl(u,i,c,s.propertyMatchingVersion);if(!p)return"no_match"}if(a==null)return"match"}return a!=null&&await tKt(t.key,r)>a/100?"out_of_rollout_bound":"match"}async getMatchingVariant(t,r){return RXo(t.key,r,t.filters?.multivariate?.variants||[])}variantLookupTable(t){return Pin(t.filters?.multivariate?.variants||[])}filterFlagsByEvaluationContexts(t){if(!this.evaluationContexts||this.evaluationContexts.length===0)return t;let r=new Set(this.evaluationContexts);return t.filter(n=>{let i=n.evaluation_contexts??n.evaluation_tags;return!i||i.length===0?!0:i.some(o=>r.has(o))})}getEvaluationRuntimeForFlag(t){let r=this.featureFlagsByKey[t];return r?vsl(r.evaluation_runtime):void 0}getFlagKeysByEvaluationRuntime(t){return this.featureFlags.filter(r=>elh(vsl(r.evaluation_runtime),t)).map(r=>r.key)}updateFlagState(t){let r=this.filterFlagsByEvaluationContexts(t.flags);this.featureFlags=r,this.featureFlagsByKey=r.reduce((i,o)=>(i[o.key]=o,i),{});let n=new Set(r.map(i=>i.key));this.filteredOutFlagKeys=new Set(t.flags.filter(i=>!n.has(i.key)).map(i=>i.key)),this.groupTypeMapping=t.group_type_mapping??t.groupTypeMapping??{},this.cohorts=t.cohorts,this.propertyMatchingVersion=t.property_matching_version??t.propertyMatchingVersion,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.((t.minimal_flag_called_events??t.minimalFlagCalledEvents)===!0)}warnAboutExperienceContinuityFlags(t){if(this.strictLocalEvaluation)return;let r=t.filter(n=>n.ensure_experience_continuity);r.length>0&&console.warn(`[PostHog] You are using local evaluation but ${r.length} flag(s) have experience continuity enabled: ${r.map(n=>n.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(t){if(!this.cacheProvider)return!1;try{let r=await this.cacheProvider.getFlagDefinitions();return r?(this.updateFlagState(r),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${t} (${r.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(this.featureFlags),!0):!1}catch(r){return this.onError?.(new Error(`Failed to load from cache: ${r}`)),!1}}async loadFeatureFlags(t=!1){if(!(this.loadedSuccessfullyOnce&&!t))return!t&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period")):(this.loadingPromise||(this.loadingPromise=this._loadFeatureFlags().catch(r=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${r}`))).finally(()=>{this.loadingPromise=void 0})),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){let t=this.pollingInterval??3e4;return this.shouldBeginExponentialBackoff?Math.min($uh,t*2**this.backOffCount):t}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0);try{let t=!0;if(this.cacheProvider)try{t=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(n){this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${n}`))}if(!t&&(await this.loadFromCache("Loaded flags from cache (skipped fetch)")||this.loadedSuccessfullyOnce))return;let r=await this._requestFeatureFlagDefinitions();if(!r)return;switch(r.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=r.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new Pft(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.filteredOutFlagKeys=new Set,this.groupTypeMapping={},this.cohorts={},this.propertyMatchingVersion=void 0,this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new Pft(`Your secret key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new Pft(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let n=await r.json()??{};if(!("flags"in n))return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(n)}`));this.flagsEtag=r.headers?.get("ETag")??void 0;let i=n.group_type_mapping||{},o=n.minimal_flag_called_events===!0,s={flags:n.flags??[],group_type_mapping:i,cohorts:n.cohorts||{},minimal_flag_called_events:o,property_matching_version:n.property_matching_version,propertyMatchingVersion:n.property_matching_version,groupTypeMapping:i,minimalFlagCalledEvents:o};if(this.updateFlagState(s),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&t)try{await this.cacheProvider.onFlagDefinitionsReceived(s)}catch(a){this.onError?.(new Error(`Failed to store in cache: ${a}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(this.featureFlags);break}default:return}}catch(t){t instanceof Pft&&this.onError?.(t)}finally{!this.pollerStopped&&this.pollingInterval!==null&&(this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval()))}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}async _requestFeatureFlagDefinitions(){let t=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let o=new AbortController;n=zN(()=>{o.abort()},this.timeout),r.signal=o.signal}let i=()=>clearTimeout(n);try{let o=this.fetch,s=await o(t,r);return s.status!==200?(i(),s):{status:s.status,headers:s.headers,body:s.body,text:async()=>{try{return await s.text()}finally{i()}},json:async()=>{try{return await s.json()}finally{i()}}}}catch(o){throw i(),o}}async stopPoller(t=3e4){if(this.pollerStopped=!0,clearTimeout(this.poller),this.poller=void 0,this.cacheProvider)try{let r=this.cacheProvider.shutdown();r instanceof Promise&&await p1e(r,t,()=>{throw new Error(`Cache shutdown timeout after ${t}ms`)})}catch(r){this.onError?.(new Error(`Error during cache shutdown: ${r}`))}}};function Csl(e,t,r,n){return PXo(e,t,{warnFunction:r,propertyMatchingVersion:n})}function rlh(e,t){if(!(e in t))throw new Ane(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function xsl(e,t,r,n=!1,i,o){let s=String(e.value);rlh(s,r);let a=r[s];return wsl(a,t,r,n,i,o)}async function wsl(e,t,r,n=!1,i,o){if(!e)return!0;let s=e.type,a=e.values;if(!a||a.length===0)return!0;let c=!1;if("values"in a[0]){for(let u of a)try{let l=await wsl(u,t,r,n,i,o);if(s==="AND"){if(!l)return!1}else if(l)return!0}catch(l){if(l instanceof Ane)throw l;if(l instanceof Zu)n&&console.debug(`Failed to compute property ${u} locally: ${l}`),c=!0;else throw l}if(c)throw new Zu("Can't match cohort without a given cohort property value");return s==="AND"}for(let u of a)try{let l;if(u.type==="cohort")l=await xsl(u,t,r,n,i,o);else if(u.type==="flag"){if(!i)throw new Zu(`Flag dependency '${u.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);l=await i(u)}else l=Csl(u,t,void 0,o);let p=u.negation||!1;if(s==="AND"){if(!l&&!p||l&&p)return!1}else if(l&&!p||!l&&p)return!0}catch(l){if(l instanceof Ane)throw l;if(l instanceof Zu)n&&console.debug(`Failed to compute property ${u} locally: ${l}`),c=!0;else throw l}if(c)throw new Zu("can't match cohort without a given cohort property value");return s==="AND"}var nlh=["--unhandled-rejections","--unhandled_rejections"],ilh=new Set(["throw","strict","warn","warn-with-error-code","none"]),olh=[...globalThis.process?.execArgv??[]],slh=globalThis.process?.env?.NODE_OPTIONS;function alh(e){let t=[],r="",n=!1;for(let i=0;i<e.length;i++){let o=e[i];o==="\\"&&n&&i+1<e.length?r+=e[++i]:o!==" "||n?o==='"'?n=!n:r+=o:r&&(t.push(r),r="")}return r&&t.push(r),t}function Ssl(e){let t;for(let r=0;r<e.length;r++){let n=e[r],i=nlh.find(s=>n===s||n.startsWith(`${s}=`));if(!i)continue;let o=n===i?e[++r]:n.slice(i.length+1);ilh.has(o)&&(t=o)}return t}function clh(e=olh,t=slh){return Ssl(e)??Ssl(alh(t??""))??"throw"}var Tsl=clh();function Osl(e,t,r){e(t,{mechanism:{type:r==="unhandledRejection"?"onunhandledrejection":"onuncaughtexception",handled:!1}})}function ulh(e,t){let r=!1;return Object.assign((n,i)=>{let o=global.process.listeners("uncaughtException").filter(s=>s.name!=="domainUncaughtExceptionClear"&&s._posthogErrorHandler!==!0).length;Osl(e,n,i),!r&&o===0&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function Psl(e,t,r=Tsl){let n=globalThis.process;if(n){if(r==="strict")return void n.on("uncaughtExceptionMonitor",(i,o)=>Osl(e,i,o));n.on("uncaughtException",ulh(e,t))}}function Bsl(e,t=Tsl){let r=globalThis.process;!r||t==="throw"||t==="strict"||t==="warn-with-error-code"||r.on("unhandledRejection",n=>{e(n,{mechanism:{type:"onunhandledrejection",handled:!1}})})}var llh=2e3,ZXo=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new uin({..._il(r),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return MHt(t)&&"__posthog_previously_captured_error"in t&&t.__posthog_previously_captured_error===!0}static async buildEventMessage(t,r,n,i,o){let s={...o},a=t.buildFromUnknown(r,n);a.$exception_list=await t.modifyFrames(a.$exception_list);let c=nO.getInjectedReleaseId();return c&&(s.$release_id=c),{event:"$exception",distinctId:i,properties:{...a,...s},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(Psl(this.onException.bind(this),this.onFatalError.bind(this)),Bsl(this.onException.bind(this)))}onException(t,r){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let n=await e.buildEventMessage(this.client.getErrorPropertiesBuilder(),t,r),o=n.properties?.$exception_list[0]?.type??"Exception";return this._rateLimiter.consumeRateLimit(o)?void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:o}):this.client._capturePreparedEvent(n,!1)}})())}async onFatalError(t){console.error(t),await this.client.shutdown(llh),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}},E5e=ZXo;var qin=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};function plh(e){return e==="v0"||e==="v1"}function Rsl(){let e="u">typeof process?process.env?.POSTHOG_CAPTURE_MODE:void 0;return plh(e)?e:"v0"}var flh="$ai_",hKt="analytics";function Dsl(e){return typeof e.event=="string"&&e.event.startsWith(flh)}var Bft=class e extends Error{constructor({requestId:t,drops:r,retryExhausted:n,cause:i}){super(e.buildMessage(t,r,n,i)),this.name="CaptureV1Error",this.requestId=t,this.drops=r,this.retryExhausted=n,this.cause=i}static buildMessage(t,r,n,i){let o=`Capture V1 batch ${t} did not fully deliver: ${r.length} dropped, ${n.length} undelivered`;return i instanceof Error&&(o+=` (${i.message})`),o}};function $Xo(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function dlh(e){return typeof e=="string"?e:void 0}var mlh=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:$Xo},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:$Xo},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:$Xo},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:dlh}],hlh=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function glh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Alh(e){if(typeof e=="string"){let r=new Date(e);if(Number.isNaN(r.getTime()))return new Date().toISOString();let n=r.toISOString(),i=e.match(/\.(\d+)(?:Z|[+-]\d{2}:?\d{2})?$/i)?.[1];return i&&i.length>3?n.replace(/\.\d{3}Z$/,`.${i}Z`):n}if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=e==null?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}function ksl(e,t,r){r!==void 0&&!(t in e)&&(e[t]=r)}function ylh(e){let r={...glh(e.properties)?e.properties:{}},n={};for(let{property:o,optionKey:s,coerce:a}of mlh)if(o in r){let c=a(r[o]);c!==void 0&&(n[s]=c),delete r[o]}let i={};for(let{property:o,field:s}of hlh)if(o in r){let a=r[o];typeof a=="string"&&(i[s]=a),delete r[o]}return delete r.$lib,delete r.$lib_version,ksl(r,"$set",e.$set),ksl(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:Alh(e.timestamp),...i,options:n,properties:r}}function Fsl(e,{createdAt:t,historicalMigration:r}){let n={created_at:t,batch:e.map(ylh)};return r&&(n.historical_migration=!0),n}var blh="/i/v1/analytics/events",Elh=3e4,Ilh=new Set([408,500,502,503,504]),Win=class{constructor(t,r){this.config=t,this.maxBackoffMs=t.maxBackoffMs??Elh,this.fetchFn=r.fetch,this.onError=r.onError,this.now=r.now??Date.now,this.sleep=r.sleep??(n=>new Promise(i=>zN(i,n))),this.generateRequestId=r.generateRequestId??jN,this.compress=r.compress??ZHt}async sendV1Batch(t){if(t.length===0)return;let r=this.generateRequestId(),n=new Date(this.now()).toISOString(),{batch:i}=Fsl(t,{createdAt:n,historicalMigration:this.config.historicalMigration}),o=`${this.config.host}${blh}`,s=[],a=i,c=Math.max(1,this.config.maxAttempts);for(let u=1;u<=c;u++){let l=u===c,p=u1e({created_at:n,...this.config.historicalMigration?{historical_migration:!0}:{},batch:a}),d,f;try{d=await this.sendOnce(o,p,u,r);let{response:m,signal:g}=d,{status:A}=m;if(A<200||A>=300)if(!l&&Ilh.has(A)){let y=this.parseRetryAfter(m);await d.waitFor(d.cancelBody()).catch(()=>{}),f=this.backoffDelay(u,y)}else{let y=await this.buildHttpError(m,A,d.waitFor);return this.surfaceBatchFailure(r,s,a,y)}else{let y;try{y=await d.waitFor(this.parseResponse(m))}catch(v){if(g.aborted)throw v;return this.surfaceBatchFailure(r,s,a,new Error(`Capture V1 returned an unparseable ${A} response body`))}let I=this.classify(a,y,s);if(I.length===0)return this.surfacePartialDrops(r,s);if(l)return void this.onError(new Bft({requestId:r,drops:s,retryExhausted:I.map(v=>v.uuid)}));a=I;let x=this.parseRetryAfter(m);f=this.backoffDelay(u,x)}}catch(m){if(d&&!d.signal.aborted)throw m;if(l)return this.surfaceBatchFailure(r,s,a,m);f=this.backoffDelay(u)}finally{d?.cleanup()}f!==void 0&&await this.sleep(f)}}async sendOnce(t,r,n,i){let o=this.buildHeaders(n,i),s=r;if(this.config.compressionEnabled){let p=await this.compress(r,this.config.isDebug);p!==null&&(s=p,o["Content-Encoding"]="gzip")}let a=new AbortController,c="waiting for response headers",u,l=new Promise((p,d)=>{u=zN(()=>{let f=new Error(`Capture V1 request timed out ${c} after ${this.config.requestTimeoutMs}ms`);f.name="AbortError",d(f),a.abort(f)},this.config.requestTimeoutMs)});try{let p=this.fetchFn(t,{method:"POST",headers:o,body:s,signal:a.signal}),d=!1;p.then(y=>{a.signal.aborted&&!d&&this.cancelBody(y)}).catch(()=>{});let f=await Promise.race([p,l]);d=!0,c="while reading the response body";let m=!1,g,A=()=>g??=this.cancelBody(f);return{response:f,signal:a.signal,waitFor:y=>Promise.race([y,l]),cancelBody:A,cleanup:()=>{m||(m=!0,clearTimeout(u),a.signal.aborted&&A())}}}catch(p){throw clearTimeout(u),p}}buildHeaders(t,r){let n=`${this.config.libraryId}/${this.config.libraryVersion}`,i={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":n,"PostHog-Attempt":String(t),"PostHog-Request-Id":r,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};return this.config.userAgent&&(i["User-Agent"]=this.config.userAgent),i}classify(t,r,n){let i=r.results??{},o=[];for(let s of t){let a=i[s.uuid];a&&(a.result==="drop"?n.push({uuid:s.uuid,details:a.details??void 0}):a.result==="retry"&&o.push(s))}return o}backoffDelay(t,r){let n=Math.min(this.config.initialRetryDelayMs*2**(t-1),this.maxBackoffMs);return r===void 0?n:Math.max(n,Math.min(r,this.maxBackoffMs))}parseRetryAfter(t){let r=t.headers?.get("Retry-After");if(!r)return;let n=r.trim();if(/^\d+$/.test(n)){let s=parseInt(n,10);return Number.isFinite(s)&&s>0?1e3*s:void 0}let i=Date.parse(n);if(Number.isNaN(i))return;let o=i-this.now();return o>0?o:void 0}async parseResponse(t){let r=await t.text(),n=JSON.parse(r);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("unexpected response shape");let i=n.results;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw new Error("unexpected results shape");return{results:i??{}}}async buildHttpError(t,r,n){let i="";try{i=(await n(t.text())).slice(0,512)}catch{}let o=i?`: ${i}`:"";return new Error(`Capture V1 request failed with HTTP ${r}${o}`)}surfaceBatchFailure(t,r,n,i){this.onError(new Bft({requestId:t,drops:r,retryExhausted:n.map(o=>o.uuid),cause:i}))}surfacePartialDrops(t,r){r.length>0&&this.onError(new Bft({requestId:t,drops:r,retryExhausted:[]}))}async cancelBody(t){try{await t.body?.cancel()}catch{}}};var I5e="ai-capture",Hin="/i/v0/ai/batch/";var Clh=new TextEncoder;function tZo(e){return Clh.encode(u1e(e)).length}function Nsl(e,t=8388608,r=5242880){let n=[],i=[],o=[],s=0;for(let a of e){if(a===void 0)continue;let c=tZo(a);if(c>t){i.push({event:typeof a.event=="string"?a.event:"unknown",bytes:c});continue}o.length>0&&s+c>r&&(n.push(o),o=[],s=0),o.push(a),s+=c}return o.length>0&&n.push(o),{batches:n,dropped:i}}var xlh=100,jsl=3e4,wlh=5e4,Slh=50,Tlh=500,Olh="https://us.i.posthog.com",zsl=new Set;function Jin(e,t){zsl.has(e)||(zsl.add(e),console.warn(`[PostHog] ${t}`))}function Plh(e){return typeof e=="string"?e.trim():""}function Blh(e){return(typeof e=="string"?e.trim():"")||void 0}function Rlh(e){return(typeof e=="string"?e.trim():"")||Olh}function Dlh(e){return(Array.isArray(e)?e:[e]).filter(r=>typeof r=="string"&&r.trim().length>0)}function klh(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter(n=>e[n]!==!1).sort();return r.length>0&&(t.$active_feature_flags=r),t}var Yin=class extends $Ht{constructor(t,r={}){let n=Plh(t),i={...r,maxQueueSize:r.maxQueueSize??1e4,flushInterval:r.flushInterval??5e3,host:Rlh(r.host),personalApiKey:Blh(r.secretKey??r.personalApiKey)};if(super(n,i),this._memoryStorage=new qin,this._aiCaptureRouteActive=!1,this._minimalFlagCalledEvents=!1,this.options=i,this.captureMode=Rsl(),this.enableFullAiCapture=i.enableFullAiCapture===!0,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,xlh):i.featureFlagsPollingInterval===null?null:jsl,typeof i.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),typeof i.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),!this.disabled&&i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');i.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new Gin({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:n,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:s=>{this._events.emit("error",s)},onLoad:s=>{this._events.emit("localEvaluationFlagsLoaded",s)},onMinimalFlagCalledEvents:s=>{this._minimalFlagCalledEvents=s},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation,evaluationContexts:i.evaluationContexts??i.evaluationEnvironments}))}this.errorTracking=new E5e(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||wlh}enqueue(t,r,n,i){super.enqueue(t,r,n,i),this.scheduleDebouncedFlush()}_flushEventsAndSpans(t=!1){let r=this.flushWithPendingPromises();return!this._traces||t&&this._traces.throttled?r:UHt([r,this._traces.flush().catch(()=>{})]).then(([n])=>{if(n.status==="rejected")throw n.reason})}flushAutomatic(){return this._flushKeepingRuntimeAlive(!0)}async flush(){return this._flushKeepingRuntimeAlive(!1)}_flushKeepingRuntimeAlive(t){let r=this._flushEventsAndSpans(t),n=this.options.waitUntil;if(n&&!this._waitUntilCycle)try{n(r.catch(()=>{}))}catch{}return r}scheduleDebouncedFlush(){let t=this.options.waitUntil;if(!t||this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let s,a=new Promise(c=>{s=c});try{t(a)}catch{return}this._waitUntilCycle={resolve:s,startedAt:Date.now(),timer:void 0}}let r=Date.now()-this._waitUntilCycle.startedAt,n=this.options.waitUntilMaxWaitMs??Tlh,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??Slh;this._waitUntilCycle.timer=zN(()=>{this.resolveWaitUntilFlush()},o)}_consumeWaitUntilCycle(){let t=this._waitUntilCycle;return t&&(clearTimeout(t.timer),this._waitUntilCycle=void 0),t?.resolve}async resolveWaitUntilFlush(){let t=this._consumeWaitUntilCycle();try{await this._flushEventsAndSpans()}catch{}finally{t?.()}}getPersistedProperty(t){return this._memoryStorage.getProperty(t)}setPersistedProperty(t,r){return this._memoryStorage.setProperty(t,r)}fetch(t,r){return this.options.fetch?this.options.fetch(t,r):fetch(t,r)}getQueueRouteKey(t){return this.captureMode==="v1"&&Dsl(t)?"ai":hKt}persistedQueueKeyForRoute(t){return t===I5e?OM.AiCaptureQueue:t==="ai"?OM.AiQueue:OM.Queue}getActiveQueueRoutes(){let t=this.captureMode==="v1"?[hKt,"ai"]:[hKt];return this._aiCaptureRouteActive&&t.push(I5e),t}getBatchEndpointPath(t){return t===I5e?Hin:super.getBatchEndpointPath(t)}async sendBatch(t,r,n=hKt){if(n===I5e)return this.sendAiCaptureBatch(t,r);if(this.captureMode!=="v1"||n==="ai")return super.sendBatch(t,r,n);let i=t.filter(o=>o!==void 0);await this.getV1Sender().sendV1Batch(i)}async sendAiCaptureBatch(t,r){let{batches:n,dropped:i}=Nsl(t);for(let{event:o,bytes:s}of i){let a=`Event ${o} (${s} bytes) exceeds the ${8388608/1048576}MiB limit for ${Hin}, dropping.`;this._logger.error(a),this._events.emit("error",new Error(a))}for(let o of n)await this.sendAiSubBatch(o,r)}async sendAiSubBatch(t,r){try{await super.sendBatch(t,r,I5e)}catch(n){if(!wft(n))throw n;if(t.length===1){let[o]=t,a=`Event ${typeof o.event=="string"?o.event:"unknown"} (${tZo(o)} bytes) was rejected with 413 by ${Hin} on its own, dropping.`;this._logger.error(a),this._events.emit("error",new Error(a));return}let i=Math.ceil(t.length/2);await this.sendAiSubBatch(t.slice(0,i),r),await this.sendAiSubBatch(t.slice(i),r)}}getV1Sender(){return this._v1Sender||(this._v1Sender=new Win({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3e3,isDebug:this.isDebug},{fetch:(t,r)=>this.fetch(t,r),onError:t=>this._events.emit("error",t),compress:t=>this.compressPayload(t)})),this._v1Sender}getLibraryVersion(){return Isl}get metrics(){return this._metrics||(this._metrics=new cKt(this,Rin(this.options.metrics),this._logger)),this._metrics}initializeSpanContextManager(){return new dKt}hostResourceAttributes(){return{}}get _spanContextManager(){return this._spanContext||(this._spanContext=this.initializeSpanContextManager()),this._spanContext}get _tracesPipeline(){if(this.options.traces)return this._traces||(this._traces=new fKt(this,HXo(this.options.traces,this.hostResourceAttributes(),this._logger),this._logger,()=>this._tracingContext(),this._spanContextManager,()=>this.scheduleDebouncedFlush())),this._traces}_tracingContext(){let t=this.context?.get();return{distinctId:t?.distinctId,sessionId:t?.sessionId}}startSpan(t,r){return this._tracesPipeline?.startSpan(t,r)??f1e(r,this._spanContextManager.active())}withSpan(t,r,n){let i=typeof r=="function"?void 0:r,o=typeof r=="function"?r:n,s=this._tracesPipeline;return s?i?s.withSpan(t,i,o):s.withSpan(t,o):pKt(this._spanContextManager,f1e(i,this._spanContextManager.active()),o)}getActiveSpan(){return this._spanContextManager.active()??null}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getEvaluationRuntime(){return"server"}getCommonEventProperties(){let t=super.getCommonEventProperties();return(this.options.isServer??!0)&&(t.$is_server=!0),t}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}_warnIfInvalidCapture(t,r,n){typeof t=="string"&&this._logger.warn(r),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn(n)}_sendPreparedEvent(t,r,n,i,o){return this.addPendingPromise(this._prepareEventMessage(r,i).then(({distinctId:s,event:a,properties:c,options:u})=>{let l={timestamp:u.timestamp,disableGeoip:u.disableGeoip,uuid:u.uuid},p={distinctId:s,event:a,properties:{...c,...this.getCommonEventProperties()}};return n?this.sendImmediate(t,p,l,o):this.enqueue(t,p,l,o)}).catch(s=>{s&&console.error(s)}))}_capturePreparedEvent(t,r){return this._sendPreparedEvent("capture",t,r)}capture(t){this._warnIfInvalidCapture(t,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(t,!1)}async captureImmediate(t){return this._warnIfInvalidCapture(t,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(t,!0)}captureAi(t){if(this.disabled)return;let r=g5e(t.uuid,jN);return this._sendPreparedAiEvent({...t,uuid:r},!1),r}async captureAiImmediate(t){if(this.disabled)return;let r=g5e(t.uuid,jN);return await this._sendPreparedAiEvent({...t,uuid:r},!0),r}_sendPreparedAiEvent(t,r){return typeof t?.event=="string"&&!t.event.startsWith("$ai_")&&this._logger.debug(`captureAi called with non-AI event ${t.event}; routing it to the AI endpoint anyway.`),this._aiCaptureRouteActive=!0,this._sendPreparedEvent("capture",t,r,void 0,I5e)}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};this._sendPreparedEvent("identify",{distinctId:t,event:"$identify",properties:l,disableGeoip:n},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};await this._sendPreparedEvent("identify",{distinctId:t,event:"$identify",properties:l,disableGeoip:n},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:t,properties:r={},propertiesOnce:n={}}){if(Object.keys(r).length===0&&Object.keys(n).length===0)return;let i={};Object.keys(r).length>0&&(i.$set=r),Object.keys(n).length>0&&(i.$set_once=n),this.capture({distinctId:t,event:"$set",properties:i})}unsetPersonProperties({distinctId:t,properties:r}){let n=Dlh(r);n.length!==0&&this.capture({distinctId:t,event:"$set",properties:{$unset:n}})}alias(t){this._sendPreparedEvent("alias",{distinctId:t.distinctId,event:"$create_alias",properties:{distinct_id:t.distinctId,alias:t.alias},disableGeoip:t.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(t){await this._sendPreparedEvent("alias",{distinctId:t.distinctId,event:"$create_alias",properties:{distinct_id:t.distinctId,alias:t.alias},disableGeoip:t.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}getFeatureFlagEvaluationRuntime(t){return this.featureFlagsPoller?.getEvaluationRuntimeForFlag(t)}getFeatureFlagKeysByEvaluationRuntime(t){return this.featureFlagsPoller?.getFlagKeysByEvaluationRuntime(t)??[]}async waitForLocalEvaluationReady(t=jsl){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){if(this.disabled)return void this._logger.warn("The client is disabled");let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let R=this._flagOverrides[t];if(R===void 0)return;let D=this._payloadOverrides?.[t];return{key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:D}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,this.personPropertiesForLocalEvaluation(r,u),l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,g,A,y,I,x,v,w;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let R=this.featureFlagsPoller?.featureFlagsByKey[t];if(R)try{let D=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(R,d,{matchValue:i});if(D){m=!0;let O=D.value;I=R.id,v="Evaluated locally",w=R.has_experiment,f={key:t,enabled:O!==!1,variant:typeof O=="string"?O:void 0,payload:D.payload??void 0,reason:v,reasonCode:R.active===!1?"flag_disabled":void 0}}}catch(D){if(D instanceof Ane||D instanceof Zu)this._logger?.info(`${D.name} when computing flag locally: ${t}: ${D.message}`);else throw D}}if(!m&&!c){let R=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,u,l,a,[t]);if(R===void 0)y=Whe.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=R.minimalFlagCalledEvents===!0,g=R.requestId,A=R.evaluatedAt;let D=[];R.errorsWhileComputingFlags&&D.push(Whe.ERRORS_WHILE_COMPUTING),R.quotaLimited?.includes("feature_flags")&&D.push(Whe.QUOTA_LIMITED);let O=R.flags[t];if(O===void 0)D.push(Whe.FLAG_MISSING);else{I=O.metadata?.id,x=O.metadata?.version,v=O.reason?.description??O.reason?.code,w=O.metadata?.has_experiment;let z;if(O.metadata?.payload!==void 0)try{z=JSON.parse(O.metadata.payload)}catch{z=O.metadata.payload}f={key:t,enabled:O.enabled,variant:O.variant??void 0,payload:z,reason:v,reasonCode:O.reason?.code}}D.length>0&&(y=D.join(","))}}if(o){let R=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,D={$feature_flag:t,$feature_flag_response:R,$feature_flag_id:I,$feature_flag_version:x,$feature_flag_reason:v,locally_evaluated:m,[`$feature/${t}`]:R,$feature_flag_request_id:g,$feature_flag_evaluated_at:m?Date.now():A};if(w!==void 0&&(D.$feature_flag_has_experiment=w),m&&this.featureFlagsPoller){let O=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();O!==void 0&&(D.$feature_flag_definitions_loaded_at=O)}y&&(D.$feature_flag_error=y),this._captureFlagCalledEventIfNeeded({distinctId:r,key:t,response:R,groups:s,disableGeoip:a,properties:D})}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){Jin("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(Jin("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){Jin("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return i===void 0?void 0:i.enabled===!1?!1:!!(i.variant??!0)||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,this.personPropertiesForLocalEvaluation(n,u),l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},g={},A=!0;if(f&&(m=f.response,g=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,u,l,s,a);m={...m,...y.flags||{}},g={...g,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(g={...g,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:g}}async evaluateFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,flags:{}});let{groups:o,disableGeoip:s}=i||{},a=i?.flagKeys??void 0;if(a?.length===0)return new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:{}});let{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,this.personPropertiesForLocalEvaluation(n,u),l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=a?new Set(a):void 0,m={},g,A,y=!1,I=!1,x=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),v=new Set;if(x)for(let[R,D]of Object.entries(x.response)){let O=this.featureFlagsPoller?.featureFlagsByKey[R];m[R]={key:R,enabled:D!==!1,variant:typeof D=="string"?D:void 0,payload:x.payloads[R],id:O?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:O?.has_experiment},v.add(R)}let w=f!==void 0&&Array.from(f).some(R=>this.featureFlagsPoller?.featureFlagsByKey[R]===void 0);if((x?x.fallbackToFlags||w:!0)&&!c){let R=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,u,l,s,a);if(R){this._minimalFlagCalledEvents=R.minimalFlagCalledEvents===!0,g=R.requestId,A=R.evaluatedAt,y=!!R.errorsWhileComputingFlags,I=Array.isArray(R.quotaLimited)&&R.quotaLimited.includes("feature_flags");for(let[D,O]of Object.entries(R.flags)){if(v.has(D))continue;let z;if(O.metadata?.payload!==void 0)try{z=JSON.parse(O.metadata.payload)}catch{z=O.metadata.payload}m[D]={key:D,enabled:O.enabled,variant:O.variant,payload:z,id:O.metadata?.id,version:O.metadata?.version,reason:O.reason?.description??O.reason?.code,locallyEvaluated:!1,hasExperiment:O.metadata?.has_experiment}}}}if(this._flagOverrides!==void 0)for(let[R,D]of Object.entries(this._flagOverrides)){if(D===void 0){delete m[R];continue}let O=m[R];m[R]={key:R,enabled:D!==!1,variant:typeof D=="string"?D:void 0,payload:O?.payload,id:O?.id,version:O?.version,reason:O?.reason,locallyEvaluated:O?.locallyEvaluated??!1,hasExperiment:O?.hasExperiment}}if(this._payloadOverrides!==void 0)for(let[R,D]of Object.entries(this._payloadOverrides)){let O=m[R];O&&(m[R]={...O,payload:D})}if(f!==void 0)for(let R of Object.keys(m))f.has(R)||delete m[R];return new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:m,requestId:g,evaluatedAt:A,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:y,quotaLimited:I})}_shouldSendMinimalFlagCalledEvent(t,r){return t==="$feature_flag_called"&&this._minimalFlagCalledEvents&&r.$feature_flag_has_experiment===!1}_captureFlagCalledEventIfNeeded(t){let{distinctId:r,key:n,response:i,groups:o,disableGeoip:s,properties:a}=t,c=o&&Object.keys(o).length>0?`_${JSON.stringify(Object.entries(o).sort(([l],[p])=>l<p?-1:l>p?1:0))}`:"",u=`${n}_${i}${c}`;r in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[r].has(u)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),this.distinctIdHasSentFlagCalls[r]instanceof Set?this.distinctIdHasSentFlagCalls[r].add(u):this.distinctIdHasSentFlagCalls[r]=new Set([u]),this.capture({distinctId:r,event:"$feature_flag_called",properties:a,groups:o,disableGeoip:s}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:t=>this._captureFlagCalledEventIfNeeded(t),logWarning:t=>{this.options.featureFlagsLogWarnings!==!1&&console.warn(`[PostHog] ${t}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){this._sendPreparedEvent("capture",{distinctId:i||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{}},disableGeoip:o},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){await this._sendPreparedEvent("capture",{distinctId:i||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{}},disableGeoip:o},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=Date.now()+(t??3e4),n=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown(),this._metrics&&(await p1e(this._metrics.flush().catch(()=>{}),Math.max(0,r-Date.now())),this._metrics.reset()),this._traces&&(await p1e(this._traces.flush().catch(()=>{}),Math.max(0,r-Date.now())),this._traces.reset());try{return await super._shutdown(Math.max(0,r-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},n?.()}}async _requestRemoteConfigPayload(t){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=zN(()=>{o.abort()},this.options.requestTimeout),n.signal=o.signal}try{return await this.fetch(r,n)}catch(o){this._events.emit("error",o);return}finally{i&&clearTimeout(i)}}extractPropertiesFromEvent(t,r){if(!t)return{personProperties:{},groupProperties:{}};let n={},i={};for(let[o,s]of Object.entries(t))if(Qil(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}personPropertiesForLocalEvaluation(t,r){return{distinct_id:t,...r||{}}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i,o){if(!E5e.isPreviouslyCapturedError(t)){let s=new Error("PostHog syntheticException");this.addPendingPromise(E5e.buildEventMessage(this.getErrorPropertiesBuilder(),t,{syntheticException:s},r,n).then(a=>this._capturePreparedEvent({...a,uuid:i,flags:o},!1)))}}async captureExceptionImmediate(t,r,n,i){if(!E5e.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");return this.addPendingPromise(E5e.buildEventMessage(this.getErrorPropertiesBuilder(),t,{syntheticException:o},r,n).then(s=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(t){return this._prepareEventMessage(t)}async _prepareEventMessage(t,r={}){let{distinctId:n,event:i,properties:o,groups:s,flags:a,sendFeatureFlags:c,timestamp:u,disableGeoip:l,uuid:p}=t,d=this.context?.get(),f=r.includeContextProperties??!0,m=n||d?.distinctId,g=f?{...this.props,...d?.properties||{},...o||{}}:{...o||{}};m||(m=jN(),g.$process_person_profile=!1),f&&d?.sessionId&&!g.$session_id&&(g.$session_id=d.sessionId);let A=this._shouldSendMinimalFlagCalledEvent(i,g)?YHt(g):g,y=this._runBeforeSend({distinctId:m,event:i,properties:A,groups:s,flags:a,sendFeatureFlags:c,timestamp:u,disableGeoip:l,uuid:p});if(!y)return Promise.reject(null);let I=await Promise.resolve().then(async()=>{if(a)return c&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),a._getEventProperties();if(c){Jin("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let x=typeof c=="object"?c:void 0,v=await this.getFeatureFlagsForEvent(y.distinctId,s,l,x);return klh(v)}return{}}).catch(()=>({})).then(x=>{let v=y.groups||s;return{...x,...y.properties||{},...v!==void 0&&Object.keys(v).length>0?{$groups:v}:{}}});return y.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof I.$raw_user_agent=="string"&&Lil(I.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(y.event="$bot_pageview",I.$browser_type="bot"),{distinctId:y.distinctId,event:y.event,properties:I,options:{timestamp:y.timestamp,disableGeoip:y.disableGeoip,uuid:y.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n)try{if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}catch(s){return this._logger.error(`Error in before_send function for event '${t.event}':`,s),null}return i}};var Qsl=require("async_hooks"),Xin=class{constructor(){this.storage=new Qsl.AsyncLocalStorage}get(){return this.storage.getStore()}run(t,r,n){return this.storage.run(this.resolve(t,n),r)}enter(t,r){this.storage.enterWith(this.resolve(t,r))}resolve(t,r){if(r?.fresh===!0)return t;let n=this.get()||{};return{distinctId:t.distinctId??n.distinctId,sessionId:t.sessionId??n.sessionId,properties:{...n.properties||{},...t.properties||{}}}}};var Msl=require("async_hooks"),Zin=class{active(){return this._storage.getStore()}with(t,r){return this._storage.run(t,r)}constructor(){this._storage=new Msl.AsyncLocalStorage}};var Lsl=require("zlib"),_sl=require("util"),Flh=(0,_sl.promisify)(Lsl.gzip);async function Usl(e,t=!0){try{let r=await Flh(e);return new Uint8Array(r)}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var $in=require("os");function Vsl(){let e,t;try{e=(0,$in.platform)(),t=(0,$in.release)()}catch{}return jXo(e,t)}var Gsl="posthog-node";function Nlh(e,{organization:t,projectId:r,prefix:n,severityAllowList:i=["error"],sendExceptionsToPostHog:o=!0}={}){return s=>{if(!(i==="*"||i.includes(s.level)))return s;s.tags||(s.tags={});let c=s.tags[rZo.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(g=>({...g,stacktrace:g.stacktrace?{...g.stacktrace,type:"raw",frames:(g.stacktrace.frames||[]).map(A=>({...A,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags},m=nO.getInjectedReleaseId();return m&&(f.$release_id=m),t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var rZo=class{static{this.POSTHOG_ID_TAG="posthog_distinct_id"}constructor(t,r,n,i,o){this.name=Gsl,this.name=Gsl,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(Nlh(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};var yne=class extends Yin{getLibraryId(){return"posthog-node"}compressPayload(t){return Usl(t,this.isDebug)}initializeContext(){return new Xin}initializeSpanContextManager(){return new Zin}hostResourceAttributes(){return Vsl()}createErrorPropertiesBuilder(){return new nO.ErrorPropertiesBuilder([new nO.EventCoercer,new nO.ErrorCoercer,new nO.ObjectCoercer,new nO.StringCoercer,new nO.PrimitiveCoercer],nO.createStackParser("node:javascript",nO.nodeStackLineParser),[kil(),t=>gsl(t,void 0,this._logger),Esl()])}};function qsl(e){return e==null||!e.enabled?!1:e.variant==null||e.variant==="true"}var eon=class{isEnabled(){return Promise.resolve(!1)}getCachedValue(){}flush(){return Promise.resolve()}},jlh="feature_flag_evaluated",zlh=3e3,Qlh=3e3,ton=class{evaluator;environment;sendFeatureFlagEvents;pending=new Map;resolved=new Map;constructor({environment:t,sendFeatureFlagEvents:r,posthogApiKey:n,evaluator:i}){this.environment=t,this.sendFeatureFlagEvents=r,this.evaluator=i??new yne(n??"",{featureFlagsRequestTimeoutMs:zlh,isServer:!1})}isEnabled(t,r){let n=Wsl(t,r),i=this.pending.get(n);if(i!=null)return i;let o=this.evaluateAndRemember(t,r,n);return this.pending.set(n,o),o}async evaluateAndRemember(t,r,n){let i=await this.evaluate(t,r);return this.resolved.set(n,i),i}getCachedValue(t,r){return this.resolved.get(Wsl(t,r))}async flush(){if(!this.sendFeatureFlagEvents)return;let t;try{await Promise.race([this.flushAfterPendingEvaluations(),new Promise(r=>{t=setTimeout(r,Qlh),t.unref()})])}catch{}finally{clearTimeout(t)}}async flushAfterPendingEvaluations(){await Promise.allSettled(this.pending.values()),await this.evaluator.flush()}async evaluate(t,r){let{org:n}=r,i=Llh(r,this.environment),o;try{o=await this.evaluator.getFeatureFlagResult(t,nZo(n),{personProperties:i,groups:{organization:n},groupProperties:{organization:i},sendFeatureFlagEvents:!1})}catch{return!1}return this.sendFeatureFlagEvents&&this.captureFlagUsage({flag:t,org:n,result:o,properties:i}),qsl(o)}captureFlagUsage({flag:t,org:r,result:n,properties:i}){let o=Mlh(n),s={...i,...n?.reason!=null?{$feature_flag_reason:n.reason}:{},version:"5.170.0"};this.tryCapture({distinctId:nZo(r),event:"$feature_flag_called",groups:{organization:r},properties:{...s,$feature_flag:t,$feature_flag_response:o,[`$feature/${t}`]:o}}),this.tryCapture({distinctId:nZo(r),event:jlh,groups:{organization:r},properties:{...s,flag:t,response:o,enabled:qsl(n)}})}tryCapture(t){try{this.evaluator.capture(t)}catch{}}};function Mlh(e){if(e!=null)return e.enabled?e.variant??!0:!1}function nZo(e){return`org:${e}`}function Llh({org:e,generator:t,language:r},n){return{org:e,environment:n,...t!=null?{generator:t}:{},...r!=null?{language:r}:{}}}function Wsl(e,{org:t,generator:r,language:n}){return JSON.stringify([e,t,r??null,n??null])}var ron;function non(){return ron==null&&(ron=_lh()),ron}async function iZo(){await ron?.flush()}function _lh(){let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";return e==null||e.trim().length===0?new eon:new ton({posthogApiKey:e,environment:jJ(),sendFeatureFlagEvents:oin()})}var ion=class{posthog;constructor({posthogApiKey:t}){this.posthog=new yne(t,{isServer:!1})}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.170.0",usingAccessToken:!0,cliReleaseEnvironment:jJ(),...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:jJ()}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var gKt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};kd();er();var Rft=require("fs/promises"),Hsl=require("os"),Ksl=require("path");iVe();var Ulh="id",Vlh=".fern",AKt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yne(r,{isServer:!1}),this.userId=t==null?void 0:J9o(t),this.token=t}async identify(){this.userId!=null&&this.posthog.alias({distinctId:this.userId,alias:await this.getPersistedDistinctId()})}async sendEvent(t){let r=await this.getUserEmail();this.posthog.capture({distinctId:this.userId??await this.getPersistedDistinctId(),event:"CLI",properties:{version:"5.170.0",...t,...t.properties,usingAccessToken:!1,cliReleaseEnvironment:jJ(),agent:oHr(),...r!=null?{userEmail:r}:{},...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:jJ()}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}userEmail;async getUserEmail(){if(this.userEmail!==null){if(this.userEmail!=null)return this.userEmail;if(this.token==null){this.userEmail=null;return}try{let t=await Kf({token:this.token.value}).user.getMyself();if(t.ok&&t.body.email!=null)return this.userEmail=t.body.email,this.userEmail}catch{}this.userEmail=null}}persistedDistinctId;async getPersistedDistinctId(){if(this.persistedDistinctId==null){let t=WS(),r=De(_t.of((0,Hsl.homedir)()),be.of(Vlh),be.of(Ulh));try{await Ut(r)?this.persistedDistinctId=(await(0,Rft.readFile)(r)).toString():(await(0,Rft.mkdir)((0,Ksl.dirname)(r),{recursive:!0}),await(0,Rft.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var oZo;async function yKt(){return oZo==null&&(oZo=await Glh()),oZo}async function Glh(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";if(e==null||!oin())return new gKt;let t=await Ult();return t!=null?new AKt({token:t,posthogApiKey:e}):await EM()!=null?new ion({posthogApiKey:e}):new AKt({token:void 0,posthogApiKey:e})}catch{return new gKt}}On();Ct();kt();g8();var bKt=Ae(require("process"),1);sZe();var Xsl=Ae(w3o(),1),Zsl=Ae(Ysl(),1);function iO(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=pH(e),e.length===0))return 0;e=e.replace((0,Zsl.default)()," ");let r=t.ambiguousIsNarrow?1:2,n=0;for(let i of e){let o=i.codePointAt(0);if(o<=31||o>=127&&o<=159||o>=768&&o<=879)continue;switch(Xsl.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}On();function oon(e){let t=0;for(let r of e.split(`
3464
+ at ${r.filename}:${n}:${i}`}};var gch=/^(?:[Uu]ncaught (?:exception: )?)?(?:((?:Eval|Internal|Range|Reference|Syntax|Type|URI|)Error): )?(.*)$/i,qHt=class{match(t){return typeof t=="string"}coerce(t,r){let[n,i]=this.getInfos(t);return{type:n??"Error",value:i??t,stack:r.syntheticException?.stack,synthetic:!0}}getInfos(t){let r="Error",n=t,i=t.match(gch);return i&&(r=i[1],n=i[2]),[r,n]}};var vol=["fatal","error","warning","log","info","debug"];function vin(e,t=40){let r=Object.keys(e);if(r.sort(),!r.length)return"[object has no keys]";for(let n=r.length;n>0;n--){let i=r.slice(0,n).join(", ");if(!(i.length>t))return n===r.length||i.length<=t?i:`${i.slice(0,t)}...`}return""}var WHt=class{match(t){return typeof t=="object"&&t!==null}coerce(t,r){let n=this.getErrorPropertyFromObject(t);return n?r.apply(n):{type:this.getType(t),value:this.getValue(t),stack:this.getStack(t)??r.syntheticException?.stack,level:this.isSeverityLevel(t.level)?t.level:"error",synthetic:!0}}getType(t){if(Eft(t))return t.constructor.name;let r="name"in t?t.name:void 0;return rk(r)&&!$Yo(r)?r:"Error"}getValue(t){if("name"in t&&typeof t.name=="string"){let i=`'${t.name}' captured as exception`;return"message"in t&&typeof t.message=="string"&&(i+=` with message: '${t.message}'`),i}if("message"in t&&typeof t.message=="string")return t.message;let r=this.getObjectClassName(t),n=vin(t);return`${r&&r!=="Object"?`'${r}'`:"Object"} captured as exception with keys: ${n}`}isSeverityLevel(t){return rk(t)&&!$Yo(t)&&vol.indexOf(t)>=0}getStack(t){try{return rk(t.stacktrace)&&t.stacktrace.length>0?t.stacktrace:rk(t.stack)&&t.stack.length>0?t.stack:void 0}catch{return}}getErrorPropertyFromObject(t){for(let r in t)if(Object.prototype.hasOwnProperty.call(t,r)){let n=t[r];if(l1e(n))return n}}getObjectClassName(t){try{let r=Object.getPrototypeOf(t);return r?r.constructor.name:void 0}catch{return}}};var AXo=class{match(t){return Eft(t)}coerce(t,r){let n=t.constructor.name;return{type:n,value:`${n} captured as exception with keys: ${vin(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var HHt=class{match(t){return ain(t)}coerce(t,r){return{type:"Error",value:`Primitive value captured as exception: ${String(t)}`,stack:r.syntheticException?.stack,synthetic:!0}}};var yXo=class{match(t){return m5e(t,"PromiseRejectionEvent")||this.isCustomEventWrappingRejection(t)}isCustomEventWrappingRejection(t){if(!Eft(t))return!1;try{let r=t.detail;return r!=null&&typeof r=="object"&&"reason"in r}catch{return!1}}coerce(t,r){let n=this.getUnhandledRejectionReason(t);return ain(n)?{type:"UnhandledRejection",value:`Non-Error promise rejection captured with value: ${String(n)}`,stack:r.syntheticException?.stack,synthetic:!0}:r.apply(n)}getUnhandledRejectionReason(t){try{if("reason"in t)return t.reason;if("detail"in t&&t.detail!=null&&typeof t.detail=="object"&&"reason"in t.detail)return t.detail.reason}catch{}return t}};var bXo=class{constructor(t){this._maxSize=t,this._cache=new Map}get(t){let r=this._cache.get(t);if(r!==void 0)return this._cache.delete(t),this._cache.set(t,r),r}set(t,r){this._cache.set(t,r)}reduce(){for(;this._cache.size>=this._maxSize;){let t=this._cache.keys().next().value;t&&this._cache.delete(t)}}};var KHt={MESSAGE:"$message",TIMESTAMP:"$timestamp"},Ach=new Set([KHt.MESSAGE,KHt.TIMESTAMP]),Cin={enabled:!0,max_bytes:32768};function EXo(e){return e?{enabled:e.enabled??Cin.enabled,max_bytes:bch(e.max_bytes,Cin.max_bytes)}:{...Cin}}function ych(e){if(!e)return{sanitizedProperties:{},droppedKeys:[]};let t=[];return{sanitizedProperties:Object.keys(e).reduce((n,i)=>Ach.has(i)?(t.push(i),n):(n[i]=e[i],n),{}),droppedKeys:t}}var IXo=class{constructor(t){this._entries=[],this._totalBytes=0,this._config=EXo(t)}setConfig(t){this._config=EXo(t),this._trimToMaxBytes()}add(t){let r=Ech(t);if(!r)return;let n=Col(r.json);n>this._config.max_bytes||(this._entries.push({step:r.step,bytes:n}),this._totalBytes+=n,this._trimToMaxBytes())}getAttachable(){return this._entries.map(t=>t.step)}clear(){this._entries=[],this._totalBytes=0}size(){return this._entries.length}_trimToMaxBytes(){for(;this._totalBytes>this._config.max_bytes&&this._entries.length>0;){let t=this._entries.shift();t&&(this._totalBytes-=t.bytes)}}};function bch(e,t){if(!bft(e)||e===1/0||e===-1/0)return t;let r=Math.floor(e);return r<0?t:r}function Ech(e){let t;try{t=u1e(e)}catch{return}try{let r=JSON.parse(t);if(!MHt(r))return;let n=r,i=n[KHt.MESSAGE],o=n[KHt.TIMESTAMP];return!rk(i)||i.trim().length===0||!rk(o)&&!bft(o)?void 0:{step:n,json:t}}catch{return}}function Col(e){if("u">typeof TextEncoder)return new TextEncoder().encode(e).length;let t=encodeURIComponent(e),r=0;for(let n=0;n<t.length;n++)t[n]==="%"?(r+=1,n+=2):r+=1;return r}function Ich(){let e=globalThis._posthogReleaseId;return typeof e=="string"&&e.length>0?e:void 0}var vXo=e=>{if("flags"in e){let t=xol(e.flags),r=wol(e.flags);return{...e,featureFlags:t,featureFlagPayloads:r}}{let t=e.featureFlags??{},r=Object.fromEntries(Object.entries(e.featureFlagPayloads||{}).map(([i,o])=>[i,xft(o)])),n=Object.fromEntries(Object.entries(t).map(([i,o])=>[i,vch(i,o,r[i])]));return{...e,featureFlags:t,featureFlagPayloads:r,flags:n}}};function vch(e,t,r){return{key:e,enabled:typeof t=="string"?!0:t,variant:typeof t=="string"?t:void 0,reason:void 0,metadata:{id:void 0,version:void 0,payload:r?JSON.stringify(r):void 0,description:void 0}}}var xol=e=>Object.fromEntries(Object.entries(e??{}).map(([t,r])=>[t,JHt(r)]).filter(([,t])=>t!==void 0)),wol=e=>{let t=e??{};return Object.fromEntries(Object.keys(t).filter(r=>{let n=t[r];return n.enabled&&n.metadata&&n.metadata.payload!==void 0}).map(r=>{let n=t[r].metadata?.payload;return[r,n?xft(n):void 0]}))},JHt=e=>e===void 0?void 0:e.variant??e.enabled,xft=e=>{if(typeof e!="string")return e;try{return JSON.parse(e)}catch{return e}};var Sol=["utm_source","utm_medium","utm_campaign","utm_content","utm_term","gad_source","mc_cid","gclid","gclsrc","dclid","gbraid","wbraid","fbclid","msclkid","twclid","li_fat_id","igshid","ttclid","rdt_cid","epik","qclid","sccid","oppref","irclid","_kx"],Cch=["$feature_flag","$feature_flag_response","$feature_flag_has_experiment","$feature_flag_id","$feature_flag_version","$feature_flag_reason","$feature_flag_request_id","$feature_flag_evaluated_at","$feature_flag_error","locally_evaluated","$groups","$process_person_profile","$geoip_disable","$current_url","$pathname","$referring_domain",...Sol,"$session_id","$window_id","$lib","$lib_version","$device_id","$is_server","$react_native_version"],YHt=(e,t=[])=>{let r={},n=i=>{e[i]!==void 0&&(r[i]=e[i])};return Cch.forEach(n),t.forEach(n),r};var xin=class{constructor(){this.events={},this.events={}}on(t,r){return this.events[t]||(this.events[t]=[]),this.events[t].push(r),()=>{this.events[t]=this.events[t].filter(n=>n!==r)}}emit(t,r){for(let n of this.events[t]||[])n(r);for(let n of this.events["*"]||[])n(t,r)}};function CXo(){return"CompressionStream"in globalThis&&"TextEncoder"in globalThis&&"Response"in globalThis&&typeof Response.prototype.blob=="function"}var wch="NativeGzipValidationError",Sch=31,Tch=139,Och=8,Pch=e=>e.length>=2&&e[0]===Sch&&e[1]===Tch;var XHt,Bch=()=>{if(XHt)return XHt;XHt=[];for(let e=0;e<256;e++){let t=e;for(let r=0;r<8;r++)t=1&t?3988292384^t>>>1:t>>>1;XHt[e]=t>>>0}return XHt},Rch=e=>{let t=Bch(),r=4294967295;for(let n=0;n<e.length;n++)r=t[(r^e[n])&255]^r>>>8;return(4294967295^r)>>>0},win=e=>{throw Cft(wch,`Native gzip produced invalid output: ${e}`)},Dch=async(e,t)=>{e.size<18&&win("too-short");let r=new Uint8Array(await e.slice(0,10).arrayBuffer());(!Pch(r)||r[2]!==Och)&&win("invalid-header");let n=new DataView(await e.slice(e.size-8).arrayBuffer());n.getUint32(0,!0)!==Rch(t)&&win("invalid-crc");let i=t.length>>>0;n.getUint32(4,!0)!==i&&win("invalid-size")};async function ZHt(e,t=!0,r){try{let n=new TextEncoder().encode(e),i=new globalThis.CompressionStream("gzip"),o=i.writable.getWriter(),s=o.write(n).then(()=>o.close()).catch(async u=>{try{await o.abort(u)}catch{}throw u}),a=new Response(i.readable).blob(),[c]=await Promise.all([a,s]);return await Dch(c,n),c}catch(n){if(r?.rethrow)throw n;return t&&console.error("Failed to gzip compress data",n),null}}var U8=class extends Error{constructor(t,r,n,i){super("HTTP error while fetching PostHog: status="+t.status+", reqByteLength="+r),this.response=t,this.reqByteLength=r,this.responseBodyDeadline=n,this.abortController=i,this.name="PostHogFetchHttpError",this._bodyReadTimedOut=!1}get status(){return this.response.status}get retryAfterMs(){try{return cXo(this.response.headers?.get("retry-after"))}catch{return}}get bodyReadTimedOut(){return this._bodyReadTimedOut}get text(){if(!this.responseBodyTextPromise)if(Date.now()>=this.responseBodyDeadline){this._bodyReadTimedOut=!0;let t=Cft("AbortError","Response body read timed out");this.cancelResponseBody(t),this.responseBodyTextPromise=Promise.reject(t)}else{let t=new Promise((n,i)=>{this.responseBodyTimer=zN(()=>{this._bodyReadTimedOut=!0;let o=Cft("AbortError","Response body read timed out");i(o),this.cancelResponseBody(o)},this.responseBodyDeadline-Date.now())}),r;try{r=Promise.resolve(this.response.text())}catch(n){r=Promise.reject(n)}this.responseBodyTextPromise=Promise.race([r,t]).finally(()=>clearTimeout(this.responseBodyTimer))}return this.responseBodyTextPromise}get json(){return this.text.then(t=>JSON.parse(t))}cancelResponseBody(t){clearTimeout(this.responseBodyTimer),this.abortController.signal.aborted||this.abortController.abort(t),(async()=>{try{await this.response.body?.cancel()}catch{}})()}},qhe=class extends Error{constructor(t){super("Network error while fetching PostHog",t instanceof Error?{cause:t}:{}),this.error=t,this.name="PostHogFetchNetworkError"}};var Rol=(e,t)=>{for(let r of Object.keys(t))(r.startsWith("$feature/")||r==="$active_feature_flags")&&(e[r]=t[r])};async function Tol(e){if(e instanceof U8){let t="";try{t=await e.text}catch{e.bodyReadTimedOut&&(t="<response body read timed out>")}console.error(`Error while flushing PostHog: message=${e.message}, response body=${t}`,e)}else console.error("Error while flushing PostHog",e);return Promise.resolve()}function kch(e){return typeof e=="object"&&(e instanceof U8||Dol(e))}function Dol(e){return e instanceof qhe}function Fch(e){if(e instanceof U8)return e.status===502||e.status===504;if(!(e instanceof qhe))return!1;let t=e.error;return(t?.code??t?.cause?.code)!=="ECONNREFUSED"}var Ool=10485760;function Pol(e){try{return typeof e!="string"?e instanceof Uint8Array?e.byteLength:e.size:"u">typeof Buffer?Buffer.byteLength(e,ool):new TextEncoder().encode(e).length}catch{return 0}}function wft(e){return typeof e=="object"&&e instanceof U8&&e.status===413}function Sin(e){return e instanceof U8?e.status===408||e.status===429||e.status>=500:Dol(e)}function Bol(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}var xXo="default",$Ht=class{getErrorPropertiesBuilder(){return this._errorPropertiesBuilder||(this._errorPropertiesBuilder=this.createErrorPropertiesBuilder()),this._errorPropertiesBuilder}createErrorPropertiesBuilder(){return new VHt([new GHt,new WHt,new qHt,new HHt],mXo())}getEvaluationRuntime(){}constructor(t,r={}){this.flushPromise=null,this.pendingFlushPromise=null,this.flushPromises=new Set,this._dequeuedMessagesCount=0,this.shutdownPromise=null,this.promiseQueue=new fin,this._events=new xin,this._isInitialized=!1;let n=typeof t=="string"?t.trim():"",i=typeof r.host=="string"?r.host.trim():"",o=!n;this._logger=Gil("[PostHog]",this.logMsgIfDebug.bind(this)),o&&this._logger.error("You must pass your PostHog project's api key. The client will be disabled."),this.apiKey=n,this.host=sol(i||"https://us.i.posthog.com"),this.flushAt=r.flushAt?Math.max(r.flushAt,1):20,this.maxBatchSize=Math.max(this.flushAt,r.maxBatchSize??100),this.maxQueueSize=Math.max(this.flushAt,r.maxQueueSize??1e3),this.flushInterval=r.flushInterval??1e4,this.preloadFeatureFlags=r.preloadFeatureFlags??!0,this.defaultOptIn=r.defaultOptIn??!0,this.disableSurveys=r.disableSurveys??!1,this._retryOptions={retryCount:r.fetchRetryCount??3,retryDelay:r.fetchRetryDelay??3e3,retryCheck:Sin},this.requestTimeout=r.requestTimeout??1e4,this.featureFlagsRequestTimeoutMs=r.featureFlagsRequestTimeoutMs??3e3,this.featureFlagsRequestMaxRetries=r.featureFlagsRequestMaxRetries??1,this.remoteConfigRequestTimeoutMs=r.remoteConfigRequestTimeoutMs??3e3,this.disableGeoip=r.disableGeoip??!0,this.disabled=(r.disabled??!1)||o,this.historicalMigration=r?.historicalMigration??!1,this._initPromise=Promise.resolve(),this._isInitialized=!0,this.evaluationContexts=r?.evaluationContexts??r?.evaluationEnvironments,r?.evaluationEnvironments&&!r?.evaluationContexts&&this._logger.warn("evaluationEnvironments is deprecated. Use evaluationContexts instead. This property will be removed in a future version."),this.disableCompression=!CXo()||(r?.disableCompression??!1)}logMsgIfDebug(t){this.isDebug&&t()}wrap(t){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized)return t();this._initPromise.then(()=>t())}getCommonEventProperties(){return{$lib:this.getLibraryId(),$lib_version:this.getLibraryVersion()}}get optedOut(){return this.getPersistedProperty(OM.OptedOut)??!this.defaultOptIn}async optIn(){this.wrap(()=>{this.setPersistedProperty(OM.OptedOut,!1)})}async optOut(){this.wrap(()=>{this.setPersistedProperty(OM.OptedOut,!0)})}on(t,r){return this._events.on(t,r)}debug(t=!0){if(this.removeDebugCallback?.(),t){let r=this.on("*",(n,i)=>this._logger.info(n,i));this.removeDebugCallback=()=>{r(),this.removeDebugCallback=void 0}}}get isDebug(){return!!this.removeDebugCallback}get isDisabled(){return this.disabled}buildPayload(t){let r=t.properties||{},n={...r,...this.getCommonEventProperties()};return Rol(n,r),t.event==="$feature_flag_called"&&n.$feature_flag_has_experiment===!1&&this.isMinimalFlagCalledEventsEnabled()&&(n=YHt(n)),{distinct_id:t.distinct_id,event:t.event,properties:n}}isMinimalFlagCalledEventsEnabled(){return!1}addPendingPromise(t){return this.promiseQueue.add(t)}identifyStateless(t,r,n){this.wrap(()=>{let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};this.enqueue("identify",i,n)})}async identifyStatelessImmediate(t,r,n){let i={...this.buildPayload({distinct_id:t,event:"$identify",properties:r})};await this.sendImmediate("identify",i,n)}captureStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({distinct_id:t,event:r,properties:n});this.enqueue("capture",o,i)})}async captureStatelessImmediate(t,r,n,i){let o=this.buildPayload({distinct_id:t,event:r,properties:n});await this.sendImmediate("capture",o,i)}aliasStateless(t,r,n,i){this.wrap(()=>{let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});this.enqueue("alias",o,i)})}async aliasStatelessImmediate(t,r,n,i){let o=this.buildPayload({event:"$create_alias",distinct_id:r,properties:{...n||{},distinct_id:r,alias:t}});await this.sendImmediate("alias",o,i)}groupIdentifyStateless(t,r,n,i,o,s){this.wrap(()=>{let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});this.enqueue("capture",a,i)})}async groupIdentifyStatelessImmediate(t,r,n,i,o,s){let a=this.buildPayload({distinct_id:o||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{},...s||{}}});await this.sendImmediate("capture",a,i)}async getRemoteConfig(){await this._initPromise;let t=this.host;t==="https://us.i.posthog.com"?t="https://us-assets.i.posthog.com":t==="https://eu.i.posthog.com"&&(t="https://eu-assets.i.posthog.com");let r=`${t}/array/${this.apiKey}/config`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}};return this.fetchWithRetry(r,n,{type:"required",consume:i=>i.json()},{retryCount:0},this.remoteConfigRequestTimeoutMs).catch(i=>{this._logger.error("Remote config could not be loaded",i),this._events.emit("error",i)})}async getFlags(t,r={},n={},i={},o={},s=!1){await this._initPromise;let a=s?"&config=true":"",c=`${this.host}/flags/?v=2${a}`,u={token:this.apiKey,distinct_id:t,groups:r,person_properties:n,group_properties:i,...o};n.$device_id&&(u.$device_id=n.$device_id),this.evaluationContexts&&this.evaluationContexts.length>0&&(u.evaluation_contexts=this.evaluationContexts);let l=this.getEvaluationRuntime();l&&(u.evaluation_runtime=l);let p={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"},body:JSON.stringify(u)};return this._logger.info("Flags URL",c),this.fetchWithRetry(c,p,{type:"required",consume:d=>d.json()},{retryCount:this.featureFlagsRequestMaxRetries,retryCheck:Fch},this.featureFlagsRequestTimeoutMs).then(d=>({success:!0,response:vXo(d)})).catch(d=>(this._events.emit("error",d),{success:!1,error:this.categorizeRequestError(d)}))}categorizeRequestError(t){if(t instanceof U8)return{type:"api_error",statusCode:t.status};if(t instanceof qhe){let r=t.error;return r instanceof Error&&(r.name==="AbortError"||r.name==="TimeoutError")?{type:"timeout"}:{type:"connection_error"}}return{type:"unknown_error"}}async getFeatureFlagStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailStateless(t,r,n,i,o,s);if(a===void 0)return{response:void 0,requestId:void 0};let c=JHt(a.response);return c===void 0&&(c=!1),{response:c,requestId:a.requestId}}async getFeatureFlagDetailStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(r,n,i,o,s,[t]);return a===void 0?void 0:{response:a.flags[t],requestId:a.requestId,evaluatedAt:a.evaluatedAt}}async getFeatureFlagPayloadStateless(t,r,n={},i={},o={},s){await this._initPromise;let a=await this.getFeatureFlagPayloadsStateless(r,n,i,o,s,[t]);if(!a)return;let c=a[t];return c===void 0?null:c}async getFeatureFlagPayloadsStateless(t,r={},n={},i={},o,s){return await this._initPromise,(await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)).payloads}async getFeatureFlagsStateless(t,r={},n={},i={},o,s){return await this._initPromise,await this.getFeatureFlagsAndPayloadsStateless(t,r,n,i,o,s)}async getFeatureFlagsAndPayloadsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a=await this.getFeatureFlagDetailsStateless(t,r,n,i,o,s);return a?{flags:a.featureFlags,payloads:a.featureFlagPayloads,requestId:a.requestId}:{flags:void 0,payloads:void 0,requestId:void 0}}async getFeatureFlagDetailsStateless(t,r={},n={},i={},o,s){await this._initPromise;let a={geoip_disable:o??this.disableGeoip};s&&(a.flag_keys_to_evaluate=s);let c=await this.getFlags(t,r,n,i,a);if(!c.success)return;let u=c.response;return u.errorsWhileComputingFlags&&console.error("[FEATURE FLAGS] Error while computing feature flags, some flags may be missing or incorrect. Learn more at https://posthog.com/docs/feature-flags/best-practices"),u.quotaLimited?.includes("feature_flags")?(console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - feature flags unavailable. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),{flags:{},featureFlags:{},featureFlagPayloads:{},requestId:u?.requestId,quotaLimited:u.quotaLimited}):u}async getSurveysStateless(){if(await this._initPromise,this.disabled)return[];if(this.disableSurveys===!0)return this._logger.info("Loading surveys is disabled."),[];let t=`${this.host}/api/surveys/?token=${this.apiKey}`,r={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json"}},i=(await this.fetchWithRetry(t,r,{type:"required",consume:o=>{if(o.status!==200||!o.json){let s=`Surveys API could not be loaded: ${o.status}`,a=new Error(s);return this._logger.error(a),this._events.emit("error",new Error(s)),Promise.resolve(void 0)}return o.json()}}).catch(o=>{this._logger.error("Surveys API could not be loaded",o),this._events.emit("error",o)}))?.surveys;return i&&this._logger.info("Surveys fetched from API: ",JSON.stringify(i)),i??[]}get props(){return this._props||(this._props=this.getPersistedProperty(OM.Props)),this._props||{}}set props(t){this._props=t}async register(t){this.wrap(()=>{this.props={...this.props,...t},this.setPersistedProperty(OM.Props,this.props)})}async unregister(t){this.wrap(()=>{delete this.props[t],this.setPersistedProperty(OM.Props,this.props)})}processBeforeEnqueue(t){return t}async flushStorage(){}getQueueRouteKey(t){return xXo}persistedQueueKeyForRoute(t){return OM.Queue}getActiveQueueRoutes(){return[xXo]}getRouteQueue(t){return this.getPersistedProperty(this.persistedQueueKeyForRoute(t))||[]}enqueue(t,r,n,i){this.wrap(()=>{if(this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let o=this.prepareMessage(r,n);if(o=this.processBeforeEnqueue(o),o===null)return;o=this.normalizeMessage(o);let s=this.persistedQueueKeyForRoute(i??this.getQueueRouteKey(o)),a=this.getPersistedProperty(s)||[];a.length>=this.maxQueueSize&&(a.shift(),this._logger.warn("Queue is full, the oldest event is dropped.")),a.push({message:o}),this.setPersistedProperty(s,a),this._events.emit(t,o),a.length>=this.flushAt&&this.flushBackground(),this.flushInterval&&!this._flushTimer&&(this._flushTimer=zN(()=>this.flushBackground(),this.flushInterval))})}async sendImmediate(t,r,n,i){if(this.disabled)return void this._logger.warn("The client is disabled");if(this._isInitialized||await this._initPromise,this.optedOut)return void this._events.emit(t,"Library is disabled. Not sending event. To re-enable, call posthog.optIn()");let o=this.prepareMessage(r,n);if(o=this.processBeforeEnqueue(o),o!==null){o=this.normalizeMessage(o);try{await this.sendBatch([o],void 0,i??this.getQueueRouteKey(o))}catch(s){this._events.emit("error",s)}}}normalizeMessage(t){let{type:r,library:n,library_version:i,...o}=t,s=Bol(o.properties)?o.properties:void 0;return n!==void 0&&s?.$lib===void 0&&(s={...s||{},$lib:n}),i!==void 0&&s?.$lib_version===void 0&&(s={...s||{},$lib_version:i}),s&&(o.properties=s),o.uuid=g5e(o.uuid,jN),o}normalizeTimestampForWire(t){let r=t instanceof Date?t:typeof t=="string"?new Date(t):null;if(!r||Number.isNaN(r.getTime()))return t;let n=r.toISOString(),i=typeof t=="string"?t.match(/\.(\d+)(?:Z|[+-]\d{2}:?\d{2})?$/i)?.[1]:void 0;return i&&i.length>3?n.replace(/\.\d{3}Z$/,`.${i}Z`):n}prepareMessage(t,r){let n={...t,timestamp:r?.timestamp?r?.timestamp:uXo(),uuid:g5e(r?.uuid,jN)};return(r?.disableGeoip??this.disableGeoip)&&(Bol(n.properties)||(n.properties={}),n.properties.$geoip_disable=!0),n.distinctId&&(n.distinct_id=n.distinctId,delete n.distinctId),n}clearFlushTimer(){this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=void 0)}flushBackground(){this.pendingFlushPromise||this.flushAutomatic().catch(async t=>{await Tol(t)})}flushAutomatic(){return this.flush()}async waitForPendingPromises(t,r=[]){let n=r.filter(o=>!!o),i=0;for(;;){let o=this.promiseQueue.getPromises([...n,...this.flushPromises],t);if(o.length===0)return;i>0&&this._logger.debug(`flush() re-checking ${o.length} pending promise(s) before flushing`),await Promise.all(o.map(s=>s.catch(()=>{}))),i++}}flushWithPendingPromises(){return this.flushInternal(!0)}flush(){return this.flushInternal(!1)}flushInternal(t){if(this.disabled)return Promise.resolve();if(!t&&this.pendingFlushPromise)return this.pendingFlushPromise;let r=this.flushPromise,n=this.promiseQueue.maxId,i=Promise.resolve().then(()=>{if(t)return this.waitForPendingPromises(n,[r,i])}).then(()=>UHt([r])).then(()=>(this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this._flush()));return this.pendingFlushPromise=i,this.flushPromise=i,this.flushPromises.add(i),this.addPendingPromise(i),UHt([i]).then(()=>{this.flushPromises.delete(i),this.pendingFlushPromise===i&&(this.pendingFlushPromise=null),this.flushPromise===i&&(this.flushPromise=null)}),i}getCustomHeaders(){let t=this.getCustomUserAgent(),r={};return t&&t!==""&&(r["User-Agent"]=t),r}compressPayload(t){return ZHt(t,this.isDebug)}getBatchEndpointPath(t){return"/batch/"}async sendBatch(t,r,n=xXo){let i={api_key:this.apiKey,batch:t.map(u=>{if(!u)return u;let l=this.normalizeTimestampForWire(u.timestamp);return l===u.timestamp?u:{...u,timestamp:l}}),sent_at:uXo()};this.historicalMigration&&(i.historical_migration=!0);let o=u1e(i),s=`${this.host}${this.getBatchEndpointPath(n)}`,a=this.disableCompression?null:await this.compressPayload(o),c={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...a!==null&&{"Content-Encoding":"gzip"}},body:a||o};await this.fetchWithRetry(s,c,{type:"successful-write"},r)}async _flush(){this.clearFlushTimer(),await this._initPromise;let t=this.getActiveQueueRoutes();if(!t.some(i=>this.getRouteQueue(i).length>0))return;let r=[],n;for(let i of t)try{await this._flushRoute(i,r)}catch(o){n===void 0&&(n=o)}if(n!==void 0)throw n;this._events.emit("flush",r)}async _flushRoute(t,r){let n=this.persistedQueueKeyForRoute(t),i=this.getPersistedProperty(n)||[];if(!i.length)return;let o=i.length,s=0;for(;i.length>0&&s<o;){let a=i.slice(0,this.maxBatchSize),c=a.map(p=>p.message===void 0?p.message:this.normalizeMessage(p.message)),u=async()=>{let p=this.getPersistedProperty(n)||[],d=[...a],f=p.filter(m=>{let g=m.message?.uuid,A=d.findIndex(y=>y===m||typeof g=="string"&&g.length>0&&y.message?.uuid===g);return A===-1?!0:(d.splice(A,1),!1)});this.setPersistedProperty(n,f),i=f,this._dequeuedMessagesCount+=a.length,await this.flushStorage()},l={retryCheck:p=>wft(p)?!1:Sin(p)};try{await this.sendBatch(c,l,t)}catch(p){if(wft(p)&&c.length>1){this.maxBatchSize=Math.max(1,Math.floor(c.length/2)),this._logger.warn(`Received 413 when sending batch of size ${c.length}, reducing batch size to ${this.maxBatchSize}`);continue}throw p instanceof qhe||await u(),this._events.emit("error",p),p}await u(),r.push(...c),s+=c.length}}async _sendOtlpBatch({path:t,auth:r,payload:n}){if(this.disabled)return{kind:"fatal",error:new Error("The client is disabled")};let i;try{i=JSON.stringify(n)}catch(l){return this.logMsgIfDebug(()=>console.warn(`[PostHog] Could not serialize a ${t} batch; reporting it as too large`,l)),{kind:"too-large",measuredLocally:!0}}let o=Pol(i);if(o>Ool)return this.logMsgIfDebug(()=>console.warn(`[PostHog] Not sending a ${t} batch of ${o} bytes: the endpoint accepts at most ${Ool}`)),{kind:"too-large",measuredLocally:!0};let s=r==="bearer"?`${this.host}/i/v1/${t}`:`${this.host}/i/v1/${t}?token=${encodeURIComponent(this.apiKey)}`,a=this.disableCompression?null:await this.compressPayload(i),c=a||i,u={method:"POST",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",...r==="bearer"&&{Authorization:`Bearer ${this.apiKey}`},...a!==null&&{"Content-Encoding":"gzip"}},body:c};try{return await this.fetchWithRetry(s,u,{type:"successful-write"},{retryCheck:l=>wft(l)||l instanceof U8&&l.retryAfterMs!==void 0?!1:Sin(l)}),{kind:"ok"}}catch(l){if(wft(l))return{kind:"too-large"};if(Sin(l)){let p=l instanceof U8?l.retryAfterMs:void 0;return{kind:"retry-later",error:l,...p!==void 0&&{retryAfterMs:p}}}return{kind:"fatal",error:l}}}async _sendLogsBatch(t){return this._sendOtlpBatch({path:"logs",auth:"query-token",payload:t})}async _sendMetricsBatch(t){return this._sendOtlpBatch({path:"metrics",auth:"query-token",payload:t})}async _sendTracesBatch(t){return this._sendOtlpBatch({path:"traces",auth:"bearer",payload:t})}async fetchWithRetry(t,r,n,i,o){let s=r.body?r.body:"",a=Pol(s),c={...this._retryOptions,...i},u=0;return await aol(async()=>{u++;let l=new AbortController,p=o??this.requestTimeout,d=Date.now()+p,f,m=new Promise((x,v)=>{f=zN(()=>{let w=Cft("AbortError",`Request timed out after ${p}ms`);v(w),l.abort(w)},p)}),g,A=!1,y,I=()=>y??=(async()=>{try{await g?.body?.cancel()}catch{}})();try{let x;try{x=this.fetch(t,{signal:l.signal,...r})}catch(B){throw new qhe(B)}x.then(B=>{l.signal.aborted&&!A&&Promise.resolve(B.body?.cancel()).catch(()=>{})}).catch(()=>{});try{g=await Promise.race([x,m]),A=!0}catch(B){throw new qhe(B)}let v=r.mode==="no-cors",w=n.type==="successful-write"?300:400;if(!v&&(g.status<200||g.status>=w))throw new U8(g,a,d,l);if(n.type==="successful-write"){try{await Promise.race([I(),m])}catch{}return}try{return await Promise.race([n.consume(g),m])}catch(B){throw l.signal.aborted?new qhe(B):B}}finally{clearTimeout(f),l.signal.aborted&&g&&I()}},{...c,retryCheck:l=>{let p=c.retryCheck(l);return p&&u<=c.retryCount&&l instanceof U8&&l.cancelResponseBody(),p}})}async _shutdown(t=3e4){await this._initPromise;let r=!1;return this.clearFlushTimer(),this.disabled?void 0:p1e((async()=>{try{for(await this.promiseQueue.join();this.getActiveQueueRoutes().some(s=>this.getRouteQueue(s).length>0);){let o=this._dequeuedMessagesCount;if(await this.flush(),r)break;if(this._dequeuedMessagesCount===o){this._logger.warn("Shutdown flush completed but did not send any queued events. Stopping drain to avoid a loop.");break}}}catch(i){if(!kch(i))throw i;await Tol(i)}})(),t,()=>{this._logger.critical("Timeout while shutting down PostHog. Some events may not have been sent.",{shutdownTimeoutMs:t}),r=!0})}async shutdown(t=3e4){return this.shutdownPromise?this._logger.warn("shutdown() called while already shutting down. shutdown() is meant to be called once before process exit - use flush() for per-request cleanup"):this.shutdownPromise=this._shutdown(t).finally(()=>{this.shutdownPromise=null}),this.shutdownPromise}};var Mch=/[a-z][a-z0-9+.-]{0,63}:[^\s<>"]+/gi;var WWv=new RegExp(Mch.source,"i"),kol=/[a-z][a-z0-9+.-]{0,63}:\/\//i,HWv=new RegExp(`^${kol.source}`,"i"),KWv=new RegExp(kol.source,"gi");var Lch=["is_not","is_set"],_ch=1152921504606847e3,Zu=class e extends Error{constructor(t){super(t),this.name=this.constructor.name,Object.setPrototypeOf(this,e.prototype)}};function wXo(e){if(typeof e=="boolean")return!0;if(typeof e=="string"){let t=e.toLowerCase();return t==="true"||t==="false"}if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t++)if(!wXo(t in e?e[t]:null))return!1;return!0}function SXo(e){if(typeof e=="boolean")return e;if(typeof e=="string")return e.toLowerCase()==="true";if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t++)if(!SXo(t in e?e[t]:null))return!1;return!0}function eKt(e){for(let t=0;t<e.length;t++){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let n=e.charCodeAt(t+1);if(t+1>=e.length||n<56320||n>57343)throw new Zu("Cannot stringify an unpaired surrogate like the flags service");t++}else if(r>=56320&&r<=57343)throw new Zu("Cannot stringify an unpaired surrogate like the flags service")}}function Oin(e,t=new Set){if(!(e===null||typeof e=="boolean")){if(typeof e=="string")return void eKt(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new Zu(`Cannot represent non-finite number ${e} like the flags service`);return}if(Array.isArray(e)){if(t.has(e))throw new Zu("Cannot represent a circular array during local evaluation");t.add(e);try{for(let r=0;r<e.length;r++)r in e&&Oin(e[r],t)}finally{t.delete(e)}return}if(typeof e=="object"){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw new Zu("Cannot represent a non-JSON object like the flags service");if(t.has(e))throw new Zu("Cannot represent a circular object during local evaluation");t.add(e);try{for(let n of Object.keys(e))eKt(n),Oin(e[n],t)}finally{t.delete(e)}return}throw new Zu(`Cannot represent ${typeof e} like the flags service`)}}function Uch(e,t){let r=0,n=0;for(;r<e.length&&n<t.length;){let i=e.charCodeAt(r),o=t.charCodeAt(n),s=i>=55296&&i<=56319,a=o>=55296&&o<=56319,c=s?e.charCodeAt(r+1):0,u=a?t.charCodeAt(n+1):0,l=s?(i-55296)*1024+c-56320+65536:i,p=a?(o-55296)*1024+u-56320+65536:o;if(l!==p)return l-p;r+=s?2:1,n+=a?2:1}return e.length-t.length}function TXo(e,t=new Set){if(e===null)return"null";if(typeof e=="string")return eKt(e),JSON.stringify(e);if(typeof e=="boolean")return e?"true":"false";if(typeof e=="number"){if(!Number.isFinite(e))throw new Zu(`Cannot stringify non-finite number ${e} like the flags service`);if(Number.isInteger(e))throw new Zu(`Cannot distinguish integer ${e} from an integral JSON float during local evaluation`);return String(e)}if(Array.isArray(e)){if(t.has(e))throw new Zu("Cannot stringify a circular array during local evaluation");t.add(e);try{let r=[];for(let n=0;n<e.length;n++)r.push(n in e?TXo(e[n],t):"null");return`[${r.join(",")}]`}finally{t.delete(e)}}if(typeof e=="object"){let r=Object.getPrototypeOf(e);if(r!==Object.prototype&&r!==null)throw new Zu("Cannot stringify a non-JSON object like the flags service");if(t.has(e))throw new Zu("Cannot stringify a circular object during local evaluation");t.add(e);try{let n=Object.keys(e);return n.forEach(eKt),`{${n.sort(Uch).map(i=>`${JSON.stringify(i)}:${TXo(e[i],t)}`).join(",")}}`}finally{t.delete(e)}}throw new Zu(`Cannot stringify ${typeof e} like the flags service`)}function Tin(e){return typeof e=="string"?(eKt(e),e):TXo(e)}function Fol(e){try{return new RegExp(e),!0}catch{return!1}}function V8(e){return String(e).replace(/[A-Z]/g,t=>t.toLowerCase())}function jol(e,t,r){if(!/^\d+$/.test(e)||r==="strict"&&e.length>1&&e[0]==="0")throw new Zu(`Invalid semver: ${t}`);return parseInt(e,10)}function XS(e,t="strict"){let n=String(e).trim().replace(/^[vV]/,"").split("-")[0].split("+")[0];if(!n||n.startsWith("."))throw new Zu(`Invalid semver: ${e}`);let i=n.split("."),o=s=>s===void 0||s===""?0:jol(s,e,t);return[o(i[0]),o(i[1]),o(i[2])]}function G8(e,t){for(let r=0;r<3;r++){if(e[r]<t[r])return-1;if(e[r]>t[r])return 1}return 0}function Vch(e,t){let r=XS(e,t);return{lower:[r[0],r[1],r[2]],upper:[r[0],r[1]+1,0]}}function Gch(e,t){let[r,n,i]=XS(e,t),o=[r,n,i],s;return s=r>0?[r+1,0,0]:n>0?[0,n+1,0]:[0,0,i+1],{lower:o,upper:s}}function qch(e,t){let n=String(e).trim().replace(/^[vV]/,"").replace(/\.\*$/,"").replace(/\*$/,"");if(!n)throw new Zu(`Invalid wildcard semver: ${e}`);let i=n.split("."),o=c=>{if(t==="legacy-permissive"){let u=parseInt(c,10);if(!isNaN(u))return u}else try{return jol(c,e,t)}catch{}throw new Zu(`Invalid wildcard semver: ${e}`)},s=o(i[0]);if(i.length===1)return{lower:[s,0,0],upper:[s+1,0,0]};let a=o(i[1]);return{lower:[s,a,0],upper:[s,a+1,0]}}function Nol(e){if(e instanceof Date)return e;if(typeof e=="string"||typeof e=="number"){let t=new Date(e);if(!isNaN(t.valueOf()))return t;throw new Zu(`${e} is in an invalid date format`)}throw new Zu(`The date provided ${e} must be a string, number, or date object`)}function OXo(e){let t=/^-?(?<number>[0-9]+)(?<interval>[a-z])$/,r=e.match(t),n=new Date(new Date().toISOString());if(!r||!r.groups)return null;let i=parseInt(r.groups.number);if(i>=1e4)return null;let o=r.groups.interval;if(o==="h")n.setUTCHours(n.getUTCHours()-i);else if(o==="d")n.setUTCDate(n.getUTCDate()-i);else if(o==="w")n.setUTCDate(n.getUTCDate()-7*i);else if(o==="m")n.setUTCMonth(n.getUTCMonth()-i);else{if(o!=="y")return null;n.setUTCFullYear(n.getUTCFullYear()-i)}return n}function PXo(e,t,r={}){let n=e.key,i=e.value,o=e.operator||"exact",s=r.semverParsingPolicy??"strict";if(Object.prototype.hasOwnProperty.call(t,n)){if(o==="is_not_set")return!1;if(o==="is_set")return!0}else throw new Zu(`Property ${n} not found in propertyValues`);let c=t[n];if(c===void 0)return r.warnFunction?.(`Property ${n} cannot have a value of undefined with the ${o} operator`),o==="is_not";if(c===null&&!Lch.includes(o)&&o!=="exact"&&o!=="is_not")return r.warnFunction?.(`Property ${n} cannot have a value of null with the ${o} operator`),!1;let u=(p,d)=>{if(r.propertyMatchingVersion!==2&&wXo(p)||Array.isArray(p)&&p.length===0)return Oin(d),SXo(p)===SXo(d);if(r.propertyMatchingVersion===2&&typeof d=="number"&&wXo(p))return Oin(d),!1;if(Array.isArray(p)){let f=Tin(d).toLowerCase();return p.some(m=>Tin(m).toLowerCase()===f)}return Tin(p).toLowerCase()===Tin(d).toLowerCase()},l=(p,d,f)=>{if(f==="gt")return p>d;if(f==="gte")return p>=d;if(f==="lt")return p<d;if(f==="lte")return p<=d;throw new Error(`Invalid operator: ${f}`)};switch(o){case"exact":return u(i,c);case"is_not":return!u(i,c);case"is_set":return!0;case"icontains":return V8(c).includes(V8(i));case"not_icontains":return!V8(c).includes(V8(i));case"starts_with":return V8(c).startsWith(V8(i));case"not_starts_with":return!V8(c).startsWith(V8(i));case"ends_with":return V8(c).endsWith(V8(i));case"not_ends_with":return!V8(c).endsWith(V8(i));case"regex":return Fol(String(i))&&String(c).match(String(i))!==null;case"not_regex":return Fol(String(i))&&String(c).match(String(i))===null;case"gt":case"gte":case"lt":case"lte":{let p=typeof i=="number"?i:parseFloat(String(i)),d=typeof c=="number"?c:c!=null?parseFloat(String(c)):NaN;return Number.isFinite(p)&&Number.isFinite(d)?l(d,p,o):l(String(c),String(i),o)}case"is_date_after":case"is_date_before":{if(typeof i=="boolean")throw new Zu("Date operations cannot be performed on boolean values");let p=OXo(String(i));p==null&&(p=Nol(i));let d=Nol(c);return o==="is_date_before"?d<p:d>p}case"semver_eq":return G8(XS(String(c),s),XS(String(i),s))===0;case"semver_neq":return G8(XS(String(c),s),XS(String(i),s))!==0;case"semver_gt":return G8(XS(String(c),s),XS(String(i),s))>0;case"semver_gte":return G8(XS(String(c),s),XS(String(i),s))>=0;case"semver_lt":return G8(XS(String(c),s),XS(String(i),s))<0;case"semver_lte":return G8(XS(String(c),s),XS(String(i),s))<=0;case"semver_tilde":{let p=XS(String(c),s),{lower:d,upper:f}=Vch(String(i),s);return G8(p,d)>=0&&G8(p,f)<0}case"semver_caret":{let p=XS(String(c),s),{lower:d,upper:f}=Gch(String(i),s);return G8(p,d)>=0&&G8(p,f)<0}case"semver_wildcard":{let p=XS(String(c),s),{lower:d,upper:f}=qch(String(i),s);return G8(p,d)>=0&&G8(p,f)<0}default:throw new Zu(`Unknown operator: ${o}`)}}async function zol(e){let t=globalThis.crypto?.subtle;if(!t)throw new Error("SubtleCrypto API not available");let r=await t.digest("SHA-1",new TextEncoder().encode(e));return Array.from(new Uint8Array(r)).map(n=>n.toString(16).padStart(2,"0")).join("")}async function tKt(e,t,r="",n="."){let i=await zol(`${e}${n}${t}${r}`);return parseInt(i.slice(0,15),16)/_ch}async function BXo(e,t){if(e==null||e.id==null||e.exclusion_percentage==null)return;let r=Number(e.exclusion_percentage);if(!Number.isFinite(r))return;let n=Math.min(Math.max(r,0),100);if(!(n!==100&&await tKt("holdout",t,"","-")>n/100))return`holdout-${e.id}`}function Pin(e){let t=[],r=0;for(let n of e){let i=r+n.rollout_percentage/100;t.push({valueMin:r,valueMax:i,key:n.key}),r=i}return t}async function RXo(e,t,r){let n=await tKt(e,t,"variant");return Pin(r).find(i=>n>=i.valueMin&&n<i.valueMax)?.key}function DXo(e,t){if(t===!1||t==null||!e)return null;let r=typeof t=="boolean"?t.toString():t,n=e[r]||null;return n==null?null:xft(n)}var Qol=9223372036854776e3,Wch="9223372036854775808",Hch=Object.prototype.propertyIsEnumerable;function Kch(){return{ancestors:new WeakSet,remainingNodes:1e4}}function gne(e,t){try{return Mol(e,t,Kch(),0)}catch{return[]}}function Jch(e,t){let r=e.toString(),n=BigInt(Wch);return e>=n||e<-n?(t?.debug(`Attribute ${r} is outside the int64 range; encoding it as a string`),{stringValue:r}):{intValue:r}}function NXo(e,t,r,n){if(r.remainingNodes<=0)return{stringValue:yin};if(r.remainingNodes--,jil(e))return{boolValue:e};if(typeof e=="bigint")return Jch(e,t);if(typeof e=="number"){if(!Number.isFinite(e))return{stringValue:String(e)};if(Number.isInteger(e)){if(Number.isSafeInteger(e))return{intValue:String(e)};if("u"<typeof BigInt)return{stringValue:String(e)};let i=BigInt(e).toString();return e>=Qol||e<-Qol?(t?.debug(`Attribute ${i} is outside the int64 range; encoding it as a string`),{stringValue:i}):{intValue:i}}return{doubleValue:e}}if(typeof e=="string")return{stringValue:mne(e)};if(typeof e=="function")return{stringValue:iol};if(typeof e=="symbol")return{stringValue:String(e)};if(typeof e=="object"&&e!==null){if(r.ancestors.has(e))return{stringValue:Ain};if(n>=20)return{stringValue:yin};if(e instanceof Date){let i=e.getTime(),o=Number.isFinite(i)?e.toISOString():String(e);return{stringValue:typeof o=="string"?mne(o):String(o)}}r.ancestors.add(e);try{try{let i=e.toJSON;if(typeof i=="function")return NXo(i.call(e),t,r,n+1)}catch{}return V4(e)?{arrayValue:{values:Ych(e,t,r,n+1)}}:{kvlistValue:{values:Mol(e,t,r,n+1)}}}finally{r.ancestors.delete(e)}}return{stringValue:mne(String(e))}}function Ych(e,t,r,n){let i=[],o=Math.min(e.length,1e3),s=0;for(;s<o&&r.remainingNodes>0;s++)try{let a=s in e?e[s]:void 0;if(zJ(a))continue;i.push(NXo(a,t,r,n))}catch{i.push({stringValue:_8})}return e.length>s&&i.push({stringValue:yin}),i}function Mol(e,t,r,n){let i=[];for(let o in e)if(Hch.call(e,o)){if(!o){t?.debug("Dropping an attribute with an empty key");continue}if(i.length>=1e3||r.remainingNodes<=0){t?.debug("Attributes truncated: the value exceeds the OTLP encoder budget");break}try{let s=e[o];if(eXo(s)||Vhe(s))continue;i.push({key:mne(o),value:NXo(s,t,r,n)})}catch{i.push({key:mne(o),value:{stringValue:_8}})}}return i}function nKt(e,t,r){return{...Ghe({},e.resourceAttributes),"service.name":e.serviceName||"unknown_service",...e.environment&&{"deployment.environment":e.environment},...e.serviceVersion&&{"service.version":e.serviceVersion},"telemetry.sdk.name":t,"telemetry.sdk.version":r}}var Xch=["service.name","deployment.environment","service.version","telemetry.sdk.name","telemetry.sdk.version"];function iKt(e,t){let r=Ghe({},e),n={};for(let i of Xch)Object.prototype.hasOwnProperty.call(r,i)&&(n[i]=r[i],delete r[i]);return[...gne(r,t),...gne(n,t)]}var Lol={darwin:"macOS",win32:"Windows",cygwin:"Windows",linux:"Linux",android:"Android",freebsd:"FreeBSD",openbsd:"OpenBSD",netbsd:"NetBSD",sunos:"SunOS",aix:"AIX",haiku:"Haiku","Mac OS X":"macOS"};function Zch(e){if(e)return Object.prototype.hasOwnProperty.call(Lol,e)?Lol[e]:e}function jXo(e,t){let r=Zch(e);return{...r?{"os.name":r}:{},...t?{"os.version":t}:{}}}var $ch={trace:{text:"TRACE",number:1},debug:{text:"DEBUG",number:5},info:{text:"INFO",number:9},warn:{text:"WARN",number:13},error:{text:"ERROR",number:17},fatal:{text:"FATAL",number:21}},l7v=$ch.info;var A5e=class{constructor(t){this._onFire=t,this._firesAt=0}get pending(){return!!this._timer}arm(t){this.clear(),this._firesAt=Date.now()+t,this._timer=zN(()=>{this._timer=void 0,this._onFire()},t)}armNoEarlierThan(t){this._timer&&Date.now()+t<=this._firesAt||this.arm(t)}clear(){this._timer&&(clearTimeout(this._timer),this._timer=void 0)}};function oKt(){return 1-.25+Math.random()*.25*2}var q8=1;function sKt(e,t,r,n){let i=Math.min(Math.max(0,t-1),6),o=e*2**i,s=n===void 0?o:Math.min(o,Math.max(n,e));return Math.round(s*r)}var aKt=[0,5,10,25,50,75,100,250,500,750,1e3,2500,5e3,7500,1e4];function zXo(e){return String(e)+"000000"}function QXo(e,t,r,n){let i="";return n&&(i=Object.keys(n).sort().map(s=>`${JSON.stringify(s)}:${JSON.stringify(n[s])}`).join(",")),`${e}\0${t}\0${r??""}\0${i}`}function _ol(e,t){for(let r=0;r<t.length;r++)if(e<=t[r])return r;return t.length}function MXo(e,t,r){return nKt(e,t,r)}function LXo(e,t,r,n){return{resourceMetrics:[{resource:{attributes:iKt(t)},scopeMetrics:[{scope:{name:r,version:n},metrics:e}]}]}}function Rin(e){let t=e?.resourceAttributes;return{serviceName:t?.["service.name"]??e?.serviceName,serviceVersion:t?.["service.version"]??e?.serviceVersion,environment:t?.["deployment.environment"]??e?.environment,resourceAttributes:t,beforeSend:e?.beforeSend,flushIntervalMs:e?.flushIntervalMs??1e4,maxSeriesPerFlush:e?.maxSeriesPerFlush??1e3}}var Uol=1,cKt=class{constructor(t,r,n){this._instance=t,this._config=r,this._logger=n,this._series=new Map,this._flushTimer=new A5e(()=>this.flush().catch(i=>{this._logger.error("Metrics flush failed:",i)})),this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._retryAfter=new h5e,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._generation=0}count(t,r=1,n){this._capture({name:t,type:"count",value:r,unit:n?.unit,attributes:n?.attributes})}gauge(t,r,n){this._capture({name:t,type:"gauge",value:r,unit:n?.unit,attributes:n?.attributes})}histogram(t,r,n){this._capture({name:t,type:"histogram",value:r,unit:n?.unit,attributes:n?.attributes})}flush(){let t=this._flushPromise,n=(async()=>{t&&await t.catch(()=>{}),await this._doFlush()})().finally(()=>{this._flushPromise===n&&(this._flushPromise=null)});return this._flushPromise=n,n}drainWindow(){if(this._series.size===0)return null;let t=this._series;return this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set,this._buildPayload(t)}reset(){this._generation++,this._retryAfter.reset(),this._consecutiveFlushFailures=0,this._flushJitter=q8,this._flushTimer.clear(),this._series=new Map,this._flushPromise=null,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set}_capture(t){if(this._instance.isDisabled||this._instance.optedOut)return;let r=this._runBeforeSend(t);if(r===null)return;if(!r.name||typeof r.name!="string")return void this._logger.warn("Dropping metric with empty name");if(typeof r.value!="number"||!Number.isFinite(r.value))return void this._logger.warn(`Dropping metric '${r.name}': value must be a finite number`);if(r.type==="count"&&r.value<0)return void this._logger.warn(`Dropping count '${r.name}': counters are monotonic, value must be >= 0`);let n,i;try{n=r.attributes?{...r.attributes}:void 0,i=QXo(r.type,r.name,r.unit,n)}catch(a){this._logger.warn(`Dropping metric '${r.name}': attributes could not be serialized`,a);return}let o=this._series.get(i);if(!o){if(!this._admitNewSeries())return;o={name:r.name,type:r.type,unit:r.unit,attributes:n,windowStartMs:Date.now()},this._series.set(i,o)}let s=this._typeByName.get(r.name);s===void 0?this._typeByName.set(r.name,r.type):s!==r.type&&!this._typeCollisionWarned.has(r.name)&&(this._typeCollisionWarned.add(r.name),this._logger.warn(`Metric name '${r.name}' is already used as a ${s}; recording it as a ${r.type} too will blend both series in charts. Use a distinct name.`)),this._fold(o,r.value),this._armFlushTimer()}_admitNewSeries(){return this._series.size<this._config.maxSeriesPerFlush?!0:(this._seriesCapWarned||(this._seriesCapWarned=!0,this._logger.warn(`Metric series cap reached (${this._config.maxSeriesPerFlush} per flush window); dropping new series until the next flush. Reduce attribute cardinality.`)),!1)}_fold(t,r){switch(t.type){case"count":t.total=(t.total??0)+r;break;case"gauge":t.last=r;break;case"histogram":{t.hist||(t.hist={count:0,sum:0,min:r,max:r,bucketCounts:new Array(aKt.length+1).fill(0)});let n=t.hist;n.count+=1,n.sum+=r,n.min=Math.min(n.min,r),n.max=Math.max(n.max,r),n.bucketCounts[_ol(r,aKt)]+=1;break}}}_runBeforeSend(t){let r=this._config.beforeSend;if(!r)return t;let n=V4(r)?r:[r],i=t;for(let o of n)try{let s=o(i);if(!s)return this._logger.info("Metric was rejected in beforeSend function"),null;i=s}catch(s){return this._logger.error("Error in beforeSend function for metric:",s),null}return i}_armFlushTimer(){this._flushTimer.pending||this._flushTimer.arm(this._nextFlushDelay())}_nextFlushDelay(){return Math.max(sKt(this._config.flushIntervalMs,this._consecutiveFlushFailures,this._flushJitter,3e4),this._retryAfter.remainingMs())}async _doFlush(){if(this._flushTimer.clear(),this._series.size===0)return;let t=this._series;this._series=new Map,this._seriesCapWarned=!1,this._typeByName=new Map,this._typeCollisionWarned=new Set;let r=this._generation,n=await this._instance._sendMetricsBatch(this._buildPayload(t));if(r===this._generation)switch(this._retryAfter.record(n),n.kind==="retry-later"?(this._consecutiveFlushFailures++,this._flushJitter=oKt()):(this._consecutiveFlushFailures=0,this._flushJitter=q8),this._flushTimer.pending&&this._flushTimer.arm(this._nextFlushDelay()),n.kind){case"ok":return;case"retry-later":this._mergeWindowBack(t),this._flushTimer.armNoEarlierThan(this._nextFlushDelay());return;case"too-large":this._logger.warn("Metrics batch exceeded the server size limit and was dropped");return;case"fatal":this._logger.error("Failed to send metrics batch:",n.error);return}}_buildPayload(t){return LXo(this._buildMetrics(t),MXo(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._instance.getLibraryId(),this._instance.getLibraryVersion())}_buildMetrics(t){let r=zXo(Date.now()),n=new Map;for(let i of t.values()){let o=QXo(i.type,i.name,i.unit,void 0),s=n.get(o);s||(s={name:i.name,...i.unit&&{unit:i.unit}},i.type==="count"?s.sum={aggregationTemporality:Uol,isMonotonic:!0,dataPoints:[]}:i.type==="gauge"?s.gauge={dataPoints:[]}:s.histogram={aggregationTemporality:Uol,dataPoints:[]},n.set(o,s));let a=gne(i.attributes??{},this._logger),c=zXo(i.windowStartMs);if(i.type==="count"){let u={attributes:a,startTimeUnixNano:c,timeUnixNano:r,asDouble:i.total??0};s.sum.dataPoints.push(u)}else if(i.type==="gauge"){let u={attributes:a,timeUnixNano:r,asDouble:i.last??0};s.gauge.dataPoints.push(u)}else if(i.hist){let u={attributes:a,startTimeUnixNano:c,timeUnixNano:r,count:i.hist.count,sum:i.hist.sum,min:i.hist.min,max:i.hist.max,bucketCounts:i.hist.bucketCounts,explicitBounds:aKt};s.histogram.dataPoints.push(u)}}return Array.from(n.values())}_mergeWindowBack(t){for(let[r,n]of t){let i=this._series.get(r);if(!i){this._admitNewSeries()&&this._series.set(r,n);continue}switch(i.windowStartMs=Math.min(i.windowStartMs,n.windowStartMs),i.type){case"count":i.total=(i.total??0)+(n.total??0);break;case"gauge":break;case"histogram":if(n.hist)if(i.hist){i.hist.count+=n.hist.count,i.hist.sum+=n.hist.sum,i.hist.min=Math.min(i.hist.min,n.hist.min),i.hist.max=Math.max(i.hist.max,n.hist.max);for(let o=0;o<i.hist.bucketCounts.length;o++)i.hist.bucketCounts[o]+=n.hist.bucketCounts[o]}else i.hist=n.hist;break}}}};var nuh="0".repeat(32),iuh="0".repeat(16),ouh=/^[0-9a-f]+$/;function suh(e){let t=new Uint8Array(e),r=globalThis.crypto;if(r&&typeof r.getRandomValues=="function")try{return r.getRandomValues(t),t}catch{}for(let n=0;n<e;n++)t[n]=Math.floor(256*Math.random());return t}function auh(e){let t="";for(let r=0;r<e.length;r++)t+=e[r].toString(16).padStart(2,"0");return t}function Vol(e){let t=auh(suh(e));return/[^0]/.test(t)?t:t.slice(0,-1)+"1"}function Gol(){return Vol(16)}function qol(){return Vol(8)}function Wol(e,t,r){return typeof e=="string"&&e.length===t&&e!==r&&ouh.test(e)}function Hol(e){return Wol(e,32,nuh)}function Kol(e){return Wol(e,16,iuh)}var cuh=/^([0-9a-f]{2})-([0-9a-f]{32})-([0-9a-f]{16})-([0-9a-f]{2})(-.*)?$/;function Jol(e){let t=Yol(e);return t&&{traceId:t.traceId,spanId:t.spanId,flags:uuh(t.flags)}}function uuh(e){return 1&parseInt(e,16)?kin:luh}function Yol(e){if(typeof e!="string")return;let t=cuh.exec(e.trim());if(!t)return;let[,r,n,i,o,s]=t;if(r!=="ff"&&!(r==="00"&&s)&&!(!Hol(n)||!Kol(i)))return{version:r,traceId:n,spanId:i,flags:o}}function Xol(e){return Yol(e)&&e.trim()}function Din(e){return Array.isArray(e)&&e.length===1?e[0]:e}var kin="01",luh="00";function Zol(e,t,r=kin){return`00-${e}-${t}-${r}`}var puh=32,_Xo=512;function Fin(e){if(typeof e!="string")return;let t=e.trim();if(!t||/[^\x20-\x7e\t]/.test(t))return;let r=t.split(",");if(!(r.length>puh)){for(let n of r)if(n.trim()&&!n.includes("="))return;return t.length<=_Xo?t:duh(r)}}var fuh=128;function duh(e){let t=[...e],r=()=>t.reduce((n,i)=>n+i.length,0)+t.length-1;for(let n=t.length-1;n>=0&&r()>_Xo;n--)t[n].length>fuh&&t.splice(n,1);for(;t.length&&r()>_Xo;)t.pop();return t.length?t.join(","):void 0}var $ol="unknown";function y5e(e,t,r,n){return typeof e=="string"&&e.trim()?e.length>r?e.slice(0,r):e:(n?.debug(`${t} must be a non-empty string; using "${$ol}"`),$ol)}function Sft(e){if(e==null)return;let t=e;if(e instanceof Date)try{t=e.getTime()}catch{return}if(!(typeof t!="number"||!Number.isFinite(t))&&!(t<0||t>9223372036854))return t}function esl(e,t,r){let n=Sft(e);return n===void 0?(e!==void 0&&r?.debug("Span startTime is out of range or not a valid time; using the current time"),t):(t-n>864e5?r?.debug("Span startTime is more than 24 hours in the past; the server will clamp it to receive time and keep the original in $originalTimestamp"):n>t&&r?.debug("Span startTime is in the future; the span may export with a zero duration"),n)}function Nin(e,t){return e<t?t:e}function uKt(e,t,r,n){let i=Sft(e);return i===void 0?(e!==void 0&&n?.debug(`Span ${r} is out of range or not a valid time; using the derived time`),t):i}function zin(){let e=globalThis.performance;return typeof e?.now=="function"?e.now():void 0}var Tft=class{constructor(t,r,n){this._onEnd=r,this._logger=n,this._events=[],this._ended=!1,this._userAttributeCount=0,this._userEventCount=0,this._droppedAttributes=0,this._droppedEvents=0,this._traceId=t.traceId,this._spanId=t.spanId,this._parentSpanId=t.parentSpanId,this._traceState=t.traceState,this._traceFlags=t.traceFlags??kin,this._parentIsRemote=t.parentIsRemote??!1,this._name=t.name,this._kind=t.kind,this._autoKeys=new Set(t.autoAttributeKeys),this._maxAttributes=t.maxAttributes,this._maxEvents=t.maxEvents,this._maxAttributesPerEvent=t.maxAttributesPerEvent,this._maxAttributeValueLength=t.maxAttributeValueLength,this._attributes=Object.create(null);for(let i of Object.keys(t.attributes))this._writeAttribute(i,t.attributes[i]);this._startMono=t.backdated?void 0:zin(),this._startTime=t.clockAnchor&&this._startMono!==void 0?t.clockAnchor.wall+(this._startMono-t.clockAnchor.mono):t.startTime,this._startMono!==void 0&&(this._clockAnchor=t.clockAnchor??{wall:this._startTime,mono:this._startMono})}_now(){if(this._startMono!==void 0){let t=zin();if(t!==void 0)return this._startTime+Math.max(0,t-this._startMono)}return Date.now()}_mutable(t){return this._ended?(this._logger?.debug(`Ignoring ${t} on a span that has already ended`),!1):!0}_writeAttribute(t,r){if(zJ(r)){t in this._attributes&&!this._autoKeys.has(t)&&this._userAttributeCount--,delete this._attributes[t];return}if(!this._autoKeys.has(t)&&!(t in this._attributes)){if(this._userAttributeCount>=this._maxAttributes)return void this._droppedAttributes++;this._userAttributeCount++}this._attributes[t]=Min(r,this._maxAttributeValueLength)}setAttribute(t,r){return this._mutable("setAttribute")&&this._writeAttribute(t,r),this}setAttributes(t){if(this._mutable("setAttributes")){let r=Ghe({},t);for(let n of Object.keys(r))this._writeAttribute(n,r[n])}return this}addEvent(t,r,n){if(this._mutable("addEvent")){if(this._userEventCount>=this._maxEvents)return this._droppedEvents++,this;this._userEventCount++;let i=r&&isl(r,this._maxAttributesPerEvent,this._maxAttributeValueLength);this._events.push({name:y5e(t,"Span event name",this._maxAttributeValueLength,this._logger),timestamp:uKt(n,this._now(),"event timestamp",this._logger),...i&&{attributes:i.attributes,...i.dropped&&{droppedAttributesCount:i.dropped}}})}return this}setStatus(t,r){if(this._mutable("setStatus")){if(t!=="ok"&&t!=="error")return this._logger?.debug(`Ignoring unknown span status "${String(t)}"; expected "ok" or "error"`),this;this._status={code:t,...r&&{message:UXo(r,this._maxAttributeValueLength)}}}return this}get statusIsExplicitlyOk(){return this._status?.code==="ok"}recordException(t){if(!this._mutable("recordException"))return this;let{type:r,message:n,stack:i}=VXo(t);return this.addEvent(muh,{"exception.type":r,"exception.message":n,...i&&{"exception.stacktrace":i}}),this.setStatus("error",n)}updateName(t){return this._mutable("updateName")&&(this._name=y5e(t,"Span name",this._maxAttributeValueLength,this._logger)),this}traceparent(){return Zol(this._traceId,this._spanId,this._traceFlags)}tracestate(){return this._traceState??null}childContext(){return{traceId:this._traceId,parentSpanId:this._spanId,traceState:this._traceState,traceFlags:this._traceFlags,clockAnchor:this._clockAnchor}}end(t){if(this._ended)return void this._logger?.debug("Ignoring end() on a span that has already ended");this._ended=!0;let r=this._now(),n=uKt(t,r,"end time",this._logger);this._onEnd({traceId:this._traceId,spanId:this._spanId,...this._parentSpanId&&{parentSpanId:this._parentSpanId},...this._traceState&&{traceState:this._traceState},traceFlags:this._traceFlags,parentIsRemote:this._parentIsRemote,name:this._name,kind:this._kind,...this._status&&{status:this._status},attributes:{...this._attributes},events:this._events,startTime:this._startTime,endTime:Nin(n,this._startTime),...this._droppedAttributes&&{droppedAttributesCount:this._droppedAttributes},...this._droppedEvents&&{droppedEventsCount:this._droppedEvents}},this._autoKeys)}},muh="exception",huh=4294967295;function guh(e){try{return typeof e=="string"?e:String(e)}catch{return _8}}function b5e(e){return typeof e!="number"||!Number.isFinite(e)||e<=0?0:Math.min(Math.floor(e),huh)}function Auh(e,t){if(!t.length)return Object.keys(e);let r=t.filter(i=>Object.prototype.propertyIsEnumerable.call(e,i)),n=new Set(r);return[...r,...Object.keys(e).filter(i=>!n.has(i))]}function rsl(e,t,r,n,i,o,s=[]){let a=0,c=0,u={};for(let f of Auh(e.attributes,s)){let m=e.attributes[f];if(!zJ(m)){if(!t.has(f)){if(a>=r){c++;continue}a++}Object.defineProperty(u,f,{value:Min(m,o),enumerable:!0,writable:!0,configurable:!0})}}e.attributes=u,c&&(e.droppedAttributesCount=b5e(e.droppedAttributesCount)+c);let l=0,p=0,d=[];for(let f of e.events){if(l>=n){p++;continue}if(l++,f.attributes){let m=isl(f.attributes,i,o);f.attributes=m.attributes,m.dropped&&(f.droppedAttributesCount=b5e(f.droppedAttributesCount)+m.dropped)}d.push(f)}e.events=d,p&&(e.droppedEventsCount=b5e(e.droppedEventsCount)+p),e.status?.message&&(e.status={...e.status,message:UXo(guh(e.status.message),o)})}var Qin=class{setAttribute(){return this}setAttributes(){return this}addEvent(){return this}setStatus(){return this}recordException(){return this}updateName(){return this}traceparent(){return null}tracestate(){return null}end(){}},nsl=new Qin,lKt=class extends Qin{constructor(t,r){super(),this._traceparent=t,this._tracestate=r}traceparent(){return this._traceparent}tracestate(){return this._tracestate??null}};function yuh(e){try{let t=e.stack;return typeof t=="string"&&t?{stack:t}:{}}catch{return{}}}function f1e(e,t){let r=Din(e?.parent)??t,n=typeof r=="string"||r==null?r:tsl(r,"traceparent"),i=Xol(n);if(!i)return nsl;let o=typeof r=="string"||r==null?e?.tracestate:tsl(r,"tracestate");return new lKt(i,Fin(o))}function tsl(e,t){try{let r=e[t];return typeof r=="function"?r.call(e):void 0}catch{return}}function UXo(e,t){return e.length>t?e.slice(0,t):e}function Min(e,t){return jin(e,t,{ancestors:new WeakSet,remainingNodes:1e4},0)}function jin(e,t,r,n){if(e===null||typeof e!="object")return zJ(e)||r.remainingNodes<=0?e:(r.remainingNodes--,typeof e=="string"?UXo(e,t):e);if(r.ancestors.has(e))return Ain;if(r.remainingNodes<=0||n>=20)return e;r.remainingNodes--,r.ancestors.add(e);try{if(e instanceof Date)return e;let i=buh(e);if(i.selfDescribed)return zJ(i.value)?String(i.value):jin(i.value,t,r,n+1);if(V4(e)){let a=Math.min(e.length,1e3),c=[];for(let u=0;u<a;u++)try{c.push(jin(e[u],t,r,n+1))}catch{c.push(_8)}return e.length>a&&(c.length=e.length),c}let o={},s=0;for(let a of Object.keys(e)){if(s>=1e3)break;let c;try{c=jin(e[a],t,r,n+1)}catch{c=_8}a&&!zJ(c)&&s++,Object.defineProperty(o,a,{value:c,enumerable:!0,writable:!0,configurable:!0})}return o}catch{return e}finally{r.ancestors.delete(e)}}function buh(e){try{let t=e.toJSON;if(typeof t=="function")return{selfDescribed:!0,value:t.call(e)}}catch{}return{selfDescribed:!1}}function isl(e,t,r){let n;try{n=Object.keys(e)}catch{return{attributes:{},dropped:0}}let i={},o=0,s=0;for(let a of n){if(o>=t){s++;continue}let c;try{c=Min(e[a],r)}catch{c=_8}zJ(c)||(o++,Object.defineProperty(i,a,{value:c,enumerable:!0,writable:!0,configurable:!0}))}return{attributes:i,dropped:s}}function osl(e,t){for(let r of Object.keys(e))e[r]=Min(e[r],t);return e}function pKt(e,t,r){return t===nsl?r(t):e.with(t,()=>r(t))}function VXo(e){try{let t=yuh(e);if(l1e(e))return{type:e.name||"Error",message:e.message||"",...t};if(typeof e=="string")return{type:"string",message:e};if(e&&typeof e=="object"){let r=e;if(typeof r.message=="string")return{type:typeof r.name=="string"?r.name:"Object",message:r.message,...t}}return{type:typeof e,message:String(e)}}catch{return{type:typeof e,message:""}}}var GXo={internal:1,server:2,client:3,producer:4,consumer:5},Euh={ok:1,error:2},Iuh=1,vuh=256,Cuh=512;function xuh(e){let t=parseInt(e.traceFlags,16);return(Number.isFinite(t)?255&t:Iuh)|vuh|(e.parentIsRemote?Cuh:0)}function Lin(e){if(typeof e=="string")return mne(e);try{return mne(String(e))}catch{return _8}}function wuh(e){return e&&Object.prototype.hasOwnProperty.call(GXo,e)?GXo[e]:GXo.internal}function qXo(e){let t=Math.floor(e),r=Math.round((e-t)*1e6);return r>=1e6&&(t+=1,r=0),String(t)+String(r).padStart(6,"0")}function Suh(e,t){let r={name:Lin(e.name),timeUnixNano:qXo(e.timestamp)};if(e.attributes){let i=gne(e.attributes,t);i.length&&(r.attributes=i)}let n=b5e(e.droppedAttributesCount);return n&&(r.droppedAttributesCount=n),r}function ssl(e,t){let r={traceId:e.traceId,spanId:e.spanId,name:Lin(e.name),kind:wuh(e.kind),startTimeUnixNano:qXo(e.startTime),endTimeUnixNano:qXo(e.endTime),flags:xuh(e)};e.parentSpanId&&(r.parentSpanId=e.parentSpanId),e.traceState&&(r.traceState=Lin(e.traceState));let n=gne(e.attributes,t);n.length&&(r.attributes=n),e.events.length&&(r.events=e.events.map(s=>Suh(s,t)));let i=b5e(e.droppedAttributesCount);i&&(r.droppedAttributesCount=i);let o=b5e(e.droppedEventsCount);return o&&(r.droppedEventsCount=o),e.status&&(r.status={code:Euh[e.status.code],...e.status.message&&{message:Lin(e.status.message)}}),r}function asl(e,t,r){return nKt(e,t,r)}function csl(e,t,r,n,i){return{resourceSpans:[{resource:{attributes:iKt(t,i)},scopeSpans:[{scope:{name:r,version:n},spans:e}]}]}}var usl=8;function _in(){return zin()??Date.now()}function WXo(e){try{return e instanceof Tft}catch{return!1}}function lsl(e,t){let r=Jol(e);if(r)return{traceId:r.traceId,parentSpanId:r.spanId,traceState:Fin(t),traceFlags:r.flags,isRemote:!0}}function Tuh(e){try{return typeof e.traceparent=="function"}catch{return!1}}function Ouh(e){return!!e.attributes&&typeof e.attributes=="object"&&!Array.isArray(e.attributes)&&Array.isArray(e.events)&&e.name!==void 0&&e.kind!==void 0&&e.startTime!==void 0&&e.endTime!==void 0}function Uin(e,t,r){e[t]!==r&&(e[t]=r)}function Puh(e,t){try{let r=Object.getOwnPropertyDescriptors(e);for(let n of["traceId","spanId","parentSpanId","traceState"])r[n]={value:t[n],enumerable:!0,writable:!0,configurable:!0};return Object.create(Object.getPrototypeOf(e),r)}catch{return e}}var fKt=class{constructor(t,r,n,i,o,s){this._instance=t,this._config=r,this._logger=n,this._getContext=i,this._contextManager=o,this._onSpanQueued=s,this._queue=[],this._flushTimer=new A5e(()=>this._flushInBackground()),this._flushPromise=null,this._droppedSinceWarning=0,this._lastDropWarningAt=0,this._dropReasons=new Set,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._retryAfter=new h5e,this._headBatchFailures=0,this._headBatchSize=0,this._headBatchChargeableAt=0,this._generation=0,this._liveSpans=new Map,this._maxExportBatchSize=r.maxExportBatchSize}startSpan(t,r){if(this._instance.isDisabled||this._instance.optedOut)return f1e(r,this._contextManager.active());let n=Din(r?.parent);if(n&&typeof n!="string"&&!WXo(n)){if(Tuh(n))return this._logger.debug("Span parent is not a span from this SDK; returning an inert span"),f1e(r,this._contextManager.active());this._logger.debug("Ignoring an unusable span parent")}let i=this._resolveParent(n,r);if(this._liveSpans.size>=this._config.maxLiveSpans&&this._evictAgedSpans(),this._liveSpans.size>=this._config.maxLiveSpans)return this._recordDrop(1,`the live-span limit (${this._config.maxLiveSpans}) was reached \u2014 spans are being started and never ended`),f1e(r,this._contextManager.active());let o=Date.now(),s=esl(r?.startTime,o,this._logger),a=qol();this._liveSpans.set(a,_in());let c=this._autoContextAttributes();return new Tft({traceId:i?.traceId??Gol(),spanId:a,parentSpanId:i?.parentSpanId,traceState:i?.traceState,traceFlags:i?.traceFlags,parentIsRemote:i?.isRemote,name:y5e(t,"Span name",this._config.maxAttributeValueLength,this._logger),kind:r?.kind??"internal",attributes:Ghe({...c},r?.attributes),autoAttributeKeys:Object.keys(c),maxAttributes:this._config.maxAttributesPerSpan,maxEvents:this._config.maxEventsPerSpan,maxAttributesPerEvent:this._config.maxAttributesPerEvent,maxAttributeValueLength:this._config.maxAttributeValueLength,startTime:s,backdated:s!==o,clockAnchor:Sft(r?.startTime)===void 0?i?.clockAnchor:void 0},(u,l)=>this._onSpanEnd(u,l),this._logger)}withSpan(t,r,n){let i=typeof r=="function"?void 0:r,o=typeof r=="function"?r:n,s=this.startSpan(t,i);try{let a=pKt(this._contextManager,s,o);return col(a)?a.then(c=>(s.end(),c),c=>{throw this._recordCallbackError(s,c),s.end(),c}):(s.end(),a)}catch(a){throw this._recordCallbackError(s,a),s.end(),a}}getActiveSpan(){return this._contextManager.active()??null}get throttled(){return this._retryAfter.isOpen()}async flush(){for(;;)if(!this._queue.length||!await(this._flushPromise??this._startFlush()))return}_startFlush(){this._flushTimer.clear();let t=this._generation,r=Promise.resolve().then(()=>t===this._generation?this._flushInner():0).finally(()=>{this._flushPromise===r&&(this._flushPromise=null),this._armFlushTimerIfQueuedNoEarlierThan()});return this._flushPromise=r,r}reset(){this._flushTimer.clear(),this._queue.length&&this._logger.critical(`Discarding ${this._queue.length} span(s) that were still queued when tracing was shut down. Raise the shutdown timeout or flush earlier if they matter.`),this._queue=[],this._liveSpans.clear(),this._flushPromise=null,this._generation++,this._maxExportBatchSize=this._config.maxExportBatchSize,this._droppedSinceWarning=0,this._dropReasons.clear(),this._lastDropWarningAt=0,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._retryAfter.reset(),this._resetHeadBatchBudget()}_resetHeadBatchBudget(){this._headBatchFailures=0,this._headBatchChargeableAt=0}_resolveParent(t,r){if(typeof t=="string"){let i=lsl(t,r?.tracestate);return i||this._logger.debug("Ignoring malformed traceparent; starting a new trace"),i}if(WXo(t))return t.childContext();let n=this._contextManager.active();if(WXo(n))return n.childContext();if(n instanceof lKt)return lsl(n.traceparent(),n.tracestate()??void 0)}_autoContextAttributes(){let t;try{t=this._getContext()}catch(n){return this._logger.debug("Failed to read tracing context; span will carry no PostHog attributes",n),{}}let r={};return t.distinctId&&(r.posthogDistinctId=t.distinctId),t.sessionId&&(r.sessionId=t.sessionId),t.currentUrl&&(r["url.full"]=t.currentUrl),t.screenName&&(r["screen.name"]=t.screenName),t.appState&&(r["app.state"]=t.appState),r}_recordCallbackError(t,r){if(!(t instanceof Tft))return;let{type:n,message:i,stack:o}=VXo(r);t.addEvent("exception",{"exception.type":n,"exception.message":i,...o&&{"exception.stacktrace":o}}),t.statusIsExplicitlyOk||t.setStatus("error",i)}_evictAgedSpans(){let t=_in()-this._config.maxSpanAgeMs,r=0;for(let[n,i]of this._liveSpans){if(i>t)break;this._liveSpans.delete(n),r++}r&&this._recordDrop(r,`they were still live after ${this._config.maxSpanAgeMs}ms`)}_onSpanEnd(t,r){if(!this._liveSpans.delete(t.spanId))return;if(this._instance.isDisabled||this._instance.optedOut)return void this._recordDrop(1,"the user has opted out");let n=this._runBeforeSpanSend(t,r);if(n){if(this._reportLimitDrops(n),this._queue.length>=this._config.maxQueueSize)return void this._recordDrop(1,`the queue is full (${this._config.maxQueueSize}) \u2014 raise the flush frequency or reduce span volume`);this._queue.push(n);try{this._onSpanQueued?.()}catch(i){this._logger.debug("Span queue notification failed",i)}!(this._queue.length>=this._maxExportBatchSize)||this._consecutiveFlushFailures||this._retryAfter.isOpen()?this._armFlushTimerIfQueued():this._flushInBackground()}}_reportLimitDrops(t){let r=t.droppedAttributesCount??0,n=t.droppedEventsCount??0,i=0;for(let o of t.events)i+=o.droppedAttributesCount??0;(r||n||i)&&this._logger.debug(`Span limits discarded data from "${t.name}": ${r} attributes, ${n} events, ${i} event attributes`)}_runBeforeSpanSend(t,r){if(!this._config.beforeSpanSend.length)return t;let n={traceId:t.traceId,spanId:t.spanId,parentSpanId:t.parentSpanId,traceState:t.traceState},i={startTime:t.startTime,endTime:t.endTime},o={attributes:t.droppedAttributesCount,events:t.droppedEventsCount},s=Object.keys(t.attributes),a={traceFlags:t.traceFlags,parentIsRemote:t.parentIsRemote},c=t.status&&{...t.status},u=t,l=t;try{for(let f of this._config.beforeSpanSend){let m=f(u);if(!m)return this._recordDrop(1,"beforeSpanSend dropped it"),null;u=this._keepSpanIdentity(m,n)}if(l={traceId:n.traceId,spanId:n.spanId,parentSpanId:n.parentSpanId,traceState:n.traceState,name:u.name,kind:u.kind,status:u.status,attributes:u.attributes,events:u.events,startTime:u.startTime,endTime:u.endTime,traceFlags:a.traceFlags,parentIsRemote:a.parentIsRemote,droppedAttributesCount:o.attributes,droppedEventsCount:o.events},!Ouh(l))return this._logger.debug("beforeSpanSend did not return a span record; dropping the span"),this._recordDrop(1,"beforeSpanSend returned an unusable record"),null;l.name=y5e(l.name,"Span name",this._config.maxAttributeValueLength,this._logger),l.status&&l.status.code!=="ok"&&l.status.code!=="error"&&(this._logger.debug("beforeSpanSend set an unknown span status; keeping the original"),l.status=c),l.startTime=Sft(l.startTime)??i.startTime,l.endTime=Nin(Sft(l.endTime)??i.endTime,l.startTime);let d=[];for(let f of l.events)try{d.push({...f,name:y5e(f.name,"Span event name",this._config.maxAttributeValueLength,this._logger),timestamp:uKt(f.timestamp,l.startTime,"event timestamp",this._logger)})}catch{this._logger.debug("beforeSpanSend left an unreadable span event; dropping it")}return l.events=d,rsl(l,r,this._config.maxAttributesPerSpan,this._config.maxEventsPerSpan,this._config.maxAttributesPerEvent,this._config.maxAttributeValueLength,s),l}catch(p){return this._logger.debug("beforeSpanSend failed; dropping the span rather than exporting it unscrubbed",p),this._recordDrop(1,"beforeSpanSend failed"),null}}_keepSpanIdentity(t,r){(t.traceId!==r.traceId||t.spanId!==r.spanId||t.parentSpanId!==r.parentSpanId)&&this._logger.debug("beforeSpanSend changed a span identity field; keeping the original ids");try{Uin(t,"traceId",r.traceId),Uin(t,"spanId",r.spanId),Uin(t,"parentSpanId",r.parentSpanId),Uin(t,"traceState",r.traceState)}catch{return Puh(t,r)}return t}_recordDrop(t,r){this._droppedSinceWarning+=t,this._dropReasons.add(r),Date.now()-this._lastDropWarningAt>=this._config.flushIntervalMs&&this._warnAboutDrops()}_warnAboutDrops(){this._droppedSinceWarning&&(this._lastDropWarningAt=Date.now(),this._logger.warn(`Dropping ${this._droppedSinceWarning} span(s): ${[...this._dropReasons].join("; ")}`),this._droppedSinceWarning=0,this._dropReasons.clear())}_encodeBatch(t){let r=[];for(let n of t)try{r.push(ssl(n,this._logger))}catch(i){this._logger.debug("Failed to encode a span; dropping it",i),this._recordDrop(1,"its attributes could not be encoded")}return r}_discardQueueIfConsentWithdrawn(){if(!this._instance.isDisabled&&!this._instance.optedOut)return 0;let t=this._queue.length;return this._queue=[],this._resetHeadBatchBudget(),this._recordDrop(t,"the user has opted out"),this._warnAboutDrops(),t}async _flushInner(){if(!this._queue.length)return 0;let t=this._discardQueueIfConsentWithdrawn();if(t)return t;let r=osl(asl(this._config,this._instance.getLibraryId(),this._instance.getLibraryVersion()),this._config.maxAttributeValueLength),n=this._instance.getLibraryId(),i=this._instance.getLibraryVersion(),o=this._queue.length,s=0,a=1/0,c=this._generation;try{for(;o>0&&this._queue.length>0;){let u=this._discardQueueIfConsentWithdrawn();if(u)return s+u;let l=this._headBatchFailures>0?Math.min(this._maxExportBatchSize,this._headBatchSize):this._maxExportBatchSize,p=Math.max(1,Math.min(l,a,o,this._queue.length)),d=this._queue.slice(0,p),f=this._encodeBatch(d);if(!f.length){this._queue.splice(0,p),o-=p,s+=p,this._resetHeadBatchBudget();continue}let m=_in()>=this._headBatchChargeableAt&&!this._retryAfter.isOpen(),g=await this._instance._sendTracesBatch(csl(f,r,n,i,this._logger));if(c!==this._generation)break;if(this._retryAfter.record(g),g.kind==="ok"){this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget(),this._queue.splice(0,p),o-=p,s+=p,this._maxExportBatchSize<this._config.maxExportBatchSize&&this._maxExportBatchSize++;continue}if(g.kind==="too-large"){if(p===1){this._queue.splice(0,1),o-=1,s+=1,this._recordDrop(1,"it is too large for the ingestion endpoint"),this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget();continue}let A=Math.max(1,Math.floor(p/2));g.measuredLocally?a=A:this._maxExportBatchSize=A,this._resetHeadBatchBudget(),this._logger.debug(`Batch too large; retrying the same spans in batches of ${A}`);continue}if(g.kind==="retry-later"){if(this._consecutiveFlushFailures++,this._flushJitter=oKt(),this._headBatchSize=p,m&&(this._headBatchFailures++,this._headBatchChargeableAt=_in()+this._nextFlushDelay()),this._headBatchFailures<usl)return this._logger.debug("Span export failed; retrying on the next flush",g.error),s;if(this._queue.splice(0,p),o-=p,s+=p,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget(),this._recordDrop(p,`the ingestion endpoint failed ${usl} times in a row`),this._retryAfter.isOpen())return s;continue}this._logger.debug("Dropping a span batch the ingestion endpoint rejected",g.error),this._queue.splice(0,p),o-=p,s+=p,this._consecutiveFlushFailures=0,this._flushJitter=q8,this._resetHeadBatchBudget(),this._recordDrop(p,"the ingestion endpoint rejected the batch")}return s}finally{this._warnAboutDrops()}}_flushInBackground(){this._backgroundFlush||(this._backgroundFlush=this.flush().catch(t=>{this._logger.debug("Background span flush failed",t)}).finally(()=>{this._backgroundFlush=void 0,this._armFlushTimerIfQueuedNoEarlierThan()}))}_armFlushTimerIfQueued(){this._flushTimer.pending||!this._queue.length||this._flushTimer.arm(this._nextFlushDelay())}_armFlushTimerIfQueuedNoEarlierThan(){this._queue.length&&this._flushTimer.armNoEarlierThan(this._nextFlushDelay())}_nextFlushDelay(){return Math.max(sKt(this._config.flushIntervalMs,this._consecutiveFlushFailures,this._flushJitter,3e4),this._retryAfter.remainingMs())}};var dKt=class{active(){return this._active}with(t,r){let n=this._active;this._active=t;try{return r()}finally{this._active=n}}};var Buh=5e3,Ruh=512,Duh=2048,kuh=128,Fuh=128,Nuh=128,juh=8192,zuh=1e4,Quh=36e5;function d1e(e,t){return typeof e=="number"&&Number.isInteger(e)&&e>=1?e:t}var psl=["service.name","service.version","deployment.environment"];function Muh(e){if(!(!e||typeof e!="object"||Array.isArray(e)))try{if(psl.every(r=>!(r in e)||typeof e[r]=="string"))return e;let t={...e};for(let r of psl)r in t&&typeof t[r]!="string"&&delete t[r];return t}catch{return}}function Luh(e,t){if(!e)return[];let r=[e].flat().filter(i=>!!i),n=r.filter(i=>typeof i=="function");return n.length!==r.length&&t?.critical(`beforeSpanSend: ignoring ${r.length-n.length} of ${r.length} entries that are not functions. Spans export without them, so whatever they were redacting is not redacted.`),n}function HXo(e,t,r){let n=Ghe({...t},Muh(e?.resourceAttributes)),i=d1e(e?.maxExportBatchSize,Ruh);return{serviceName:n?.["service.name"]??e?.serviceName,serviceVersion:n?.["service.version"]??e?.serviceVersion,environment:n?.["deployment.environment"]??e?.environment,resourceAttributes:n,beforeSpanSend:Luh(e?.beforeSpanSend,r),maxAttributesPerSpan:d1e(e?.maxAttributesPerSpan,kuh),maxEventsPerSpan:d1e(e?.maxEventsPerSpan,Fuh),maxAttributesPerEvent:Nuh,maxAttributeValueLength:d1e(e?.maxAttributeValueLength,juh),flushIntervalMs:d1e(e?.flushIntervalMs,Buh),maxExportBatchSize:i,maxQueueSize:Math.max(d1e(e?.maxQueueSize,Duh),i),maxLiveSpans:d1e(e?.maxLiveSpans,zuh),maxSpanAgeMs:d1e(e?.maxSpanAgeMs,Quh)}}var KXo=require("fs"),msl=require("fs/promises"),YXo=require("path"),hsl=require("readline"),Vin=new nO.ReduceableCache(25),mKt=new nO.ReduceableCache(20),XXo=7,_uh=1e3,Uuh=1e4,JXo=10485760;async function gsl(e,t=msl.open,r){let n={},i;try{i=process.cwd()}catch{}for(let a=e.length-1;a>=0;a--){let c=e[a],u=c?.filename;if(!c||typeof u!="string"||typeof c.lineno!="number"||Huh(u)||Kuh(c)||!(0,YXo.isAbsolute)(u)&&i===void 0)continue;n[u]||(n[u]=[]),n[u].push(c.lineno)}let o=Object.keys(n);if(o.length==0)return e;let s=[];for(let a of o){let c=Asl(a,i);if(c===void 0||mKt.get(c))continue;let u=n[a];if(!u)continue;u.sort((d,f)=>d-f);let l=Yuh(u);if(l.every(d=>Juh(c,d)))continue;let p=Xuh(Vin,c,{});s.push(Guh(a,l,p,c,t,r))}return await Promise.all(s).catch(()=>{}),e&&e.length>0&&quh(e,Vin,i),Vin.reduce(),e}async function Vuh(e,t,r){let n,i=!1;try{n=await t(e,KXo.constants.O_RDONLY|KXo.constants.O_NONBLOCK);let o=await n.stat();return o.isFile()?o.size>JXo?void r?.debug(`Skipping source context for oversized file ${e}: ${o.size} bytes exceeds ${JXo}`):(i=!0,n):void 0}catch{return}finally{n&&!i&&await n.close().catch(()=>{})}}async function Guh(e,t,r,n,i,o){let s=await Vuh(e,i,o);if(s===void 0)return void mKt.set(n,1);let a=s;return new Promise(c=>{let u=!1;function l(x){u||(u=!0,x?.destroy(),a.close().then(c,c))}let p;try{p=a.createReadStream({autoClose:!1,start:0,end:JXo-1})}catch{mKt.set(n,1),l();return}let d;try{d=(0,hsl.createInterface)({input:p})}catch{mKt.set(n,1),l(p);return}let f=0,m=0,g=t[m];if(g===void 0)return void l(p);let A=g[0],y=g[1];function I(){mKt.set(n,1),d.close(),d.removeAllListeners(),l(p)}p.on("error",I),d.on("error",I),d.on("close",()=>l(p)),d.on("line",x=>{if(f++,!(f<A)&&(r[f]=Zuh(x,0),f>=y)){if(m===t.length-1){d.close(),d.removeAllListeners();return}m++;let v=t[m];if(v===void 0){d.close(),d.removeAllListeners();return}A=v[0],y=v[1]}})})}function quh(e,t,r){for(let n of e)if(n.filename&&n.context_line===void 0&&typeof n.lineno=="number"){let i=Asl(n.filename,r),o=i===void 0?void 0:t.get(i);if(o===void 0)continue;Wuh(n.lineno,n,o)}}function Wuh(e,t,r){if(t.lineno===void 0||r===void 0)return;t.pre_context=[];for(let i=ysl(e);i<e;i++){let o=r[i];if(o===void 0)return void fsl(t);t.pre_context.push(o)}if(r[e]===void 0)return void fsl(t);t.context_line=r[e];let n=bsl(e);t.post_context=[];for(let i=e+1;i<=n;i++){let o=r[i];if(o===void 0)break;t.post_context.push(o)}}function fsl(e){delete e.pre_context,delete e.context_line,delete e.post_context}function Huh(e){return e.startsWith("node:")||e.endsWith(".min.js")||e.endsWith(".min.cjs")||e.endsWith(".min.mjs")||e.startsWith("data:")}function Kuh(e){return e.lineno!==void 0&&e.lineno>Uuh||e.colno!==void 0&&e.colno>_uh}function Asl(e,t){return(0,YXo.isAbsolute)(e)?JSON.stringify([null,e]):t===void 0?void 0:JSON.stringify([t,e])}function Juh(e,t){let r=Vin.get(e);if(r===void 0)return!1;for(let n=t[0];n<=t[1];n++)if(r[n]===void 0)return!1;return!0}function Yuh(e){if(!e.length)return[];let t=0,r=e[0];if(typeof r!="number")return[];let n=dsl(r),i=[];for(;;){if(t===e.length-1){i.push(n);break}let o=e[t+1];if(typeof o!="number")break;o<=n[1]?n[1]=o+XXo:(i.push(n),n=dsl(o)),t++}return i}function dsl(e){return[ysl(e),bsl(e)]}function ysl(e){return Math.max(1,e-XXo)}function bsl(e){return e+XXo}function Xuh(e,t,r){let n=e.get(t);return n===void 0?(e.set(t,r),r):n}function Zuh(e,t){let r=e,n=r.length;if(n<=150)return r;t>n&&(t=n);let i=Math.max(t-60,0);i<5&&(i=0);let o=Math.min(i+140,n);return o>n-5&&(o=n),o===n&&(i=Math.max(o-140,0)),r=r.slice(i,o),i>0&&(r=`...${r}`),o<n&&(r+="..."),r}var Oft=require("path");function Esl(e=process.cwd()){let t=Oft.sep==="\\",r=i=>t?i.replace(/\\/g,"/"):i,n=r(e);return async i=>{for(let o of i)!o.filename||o.filename.startsWith("node:")||o.filename.startsWith("data:")||(0,Oft.isAbsolute)(o.filename)&&(o.filename=r((0,Oft.relative)(n,r(o.filename))));return i}}var Isl="5.55.0";var Whe={ERRORS_WHILE_COMPUTING:"errors_while_computing_flags",FLAG_MISSING:"flag_missing",QUOTA_LIMITED:"quota_limited",UNKNOWN_ERROR:"unknown_error"};var m1e=class e{constructor(t){this._host=t.host,this._distinctId=t.distinctId,this._groups=t.groups,this._disableGeoip=t.disableGeoip,this._flags=t.flags,this._requestId=t.requestId,this._evaluatedAt=t.evaluatedAt,this._flagDefinitionsLoadedAt=t.flagDefinitionsLoadedAt,this._errorsWhileComputing=t.errorsWhileComputing??!1,this._quotaLimited=t.quotaLimited??!1,this._accessed=t.accessed??new Set,this._isSlice=t.isSlice??!1}isEnabled(t,r={}){let n=this._flags[t];return this._recordAccess(t),n?.enabled??r.defaultValue??!1}getFlag(t){let r=this._flags[t];if(this._recordAccess(t),!!r)return r.enabled?r.variant??!0:!1}getFlagPayload(t){return this._flags[t]?.payload}onlyAccessed(){let t={};for(let r of this._accessed){let n=this._flags[r];n&&(t[r]=n)}return this._cloneWith(t)}only(t){let r={},n=[];for(let i of t){let o=this._flags[i];o?r[i]=o:n.push(i)}return n.length>0&&this._host.logWarning(`FeatureFlagEvaluations.only() was called with flag keys that are not in the evaluation set and will be dropped: ${n.join(", ")}`),this._cloneWith(r)}get keys(){return Object.keys(this._flags)}_getEventProperties(){let t={},r=[];for(let[n,i]of Object.entries(this._flags)){let o=i.enabled===!1?!1:i.variant??!0;t[`$feature/${n}`]=o,i.enabled&&r.push(n)}return r.length>0&&(r.sort(),t.$active_feature_flags=r),t}_cloneWith(t){return new e({host:this._host,distinctId:this._distinctId,groups:this._groups,disableGeoip:this._disableGeoip,flags:t,requestId:this._requestId,evaluatedAt:this._evaluatedAt,flagDefinitionsLoadedAt:this._flagDefinitionsLoadedAt,errorsWhileComputing:this._errorsWhileComputing,quotaLimited:this._quotaLimited,accessed:new Set(this._accessed),isSlice:!0})}_recordAccess(t){if(this._accessed.add(t),this._distinctId===""||this._isSlice&&!(t in this._flags))return;let r=this._flags[t],n=r===void 0?void 0:r.enabled===!1?!1:r.variant??!0,i={$feature_flag:t,$feature_flag_response:n,$feature_flag_id:r?.id,$feature_flag_version:r?.version,$feature_flag_reason:r?.reason,locally_evaluated:r?.locallyEvaluated??!1,[`$feature/${t}`]:n,$feature_flag_request_id:this._requestId,$feature_flag_evaluated_at:r?.locallyEvaluated?Date.now():this._evaluatedAt};r?.hasExperiment!==void 0&&(i.$feature_flag_has_experiment=r.hasExperiment),r?.locallyEvaluated&&this._flagDefinitionsLoadedAt!==void 0&&(i.$feature_flag_definitions_loaded_at=this._flagDefinitionsLoadedAt);let o=[];this._errorsWhileComputing&&o.push(Whe.ERRORS_WHILE_COMPUTING),this._quotaLimited&&o.push(Whe.QUOTA_LIMITED),r===void 0&&o.push(Whe.FLAG_MISSING),o.length>0&&(i.$feature_flag_error=o.join(",")),this._host.captureFlagCalledEventIfNeeded({distinctId:this._distinctId,key:t,response:n,groups:this._groups,disableGeoip:this._disableGeoip,properties:i})}};var $uh=6e4;function vsl(e){return e==="client"||e==="server"?e:"all"}function elh(e,t){return e===t||e==="all"||t==="all"}var Pft=class e extends Error{constructor(t){super(),Error.captureStackTrace(this,this.constructor),this.name="ClientError",this.message=t,Object.setPrototypeOf(this,e.prototype)}};function tlh(e,t){e.name=t.name,Error.captureStackTrace(e,t),Object.setPrototypeOf(e,t.prototype)}var Ane=class e extends Error{constructor(t){super(t),tlh(this,e)}},Gin=class{constructor({pollingInterval:t,personalApiKey:r,projectApiKey:n,timeout:i,host:o,customHeaders:s,...a}){this.debugMode=!1,this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.pollerStopped=!1,this.filteredOutFlagKeys=new Set,this.pollingInterval=t,this.personalApiKey=r,this.featureFlags=[],this.featureFlagsByKey={},this.groupTypeMapping={},this.cohorts={},this.loadedSuccessfullyOnce=!1,this.timeout=i,this.projectApiKey=n,this.host=o,this.poller=void 0,this.fetch=a.fetch||fetch,this.onError=a.onError,this.customHeaders=s,this.onLoad=a.onLoad,this.onMinimalFlagCalledEvents=a.onMinimalFlagCalledEvents,this.cacheProvider=a.cacheProvider,this.strictLocalEvaluation=a.strictLocalEvaluation??!1,this.evaluationContexts=a.evaluationContexts,this.loadFeatureFlags()}debug(t=!0){this.debugMode=t}logMsgIfDebug(t){this.debugMode&&t()}withEvaluationSnapshot(t){return t.definitions?t:{...t,evaluationCache:{},definitions:{featureFlagsByKey:this.featureFlagsByKey,groupTypeMapping:this.groupTypeMapping,cohorts:this.cohorts,filteredOutFlagKeys:this.filteredOutFlagKeys,propertyMatchingVersion:this.propertyMatchingVersion}}}createEvaluationContext(t,r={},n={},i={},o={}){return{distinctId:t,groups:r,personProperties:n,groupProperties:i,evaluationCache:o}}async getFeatureFlag(t,r,n={},i={},o={}){await this.loadFeatureFlags();let s,a;if(!this.loadedSuccessfullyOnce)return s;if(a=this.featureFlagsByKey[t],a!==void 0){let c=this.createEvaluationContext(r,n,i,o);try{s=(await this.computeFlagAndPayloadLocally(a,c)).value,this.logMsgIfDebug(()=>console.debug(`Successfully computed flag locally: ${t} -> ${s}`))}catch(u){u instanceof Ane||u instanceof Zu?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${t}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${t}: ${u}`))}}return s}async getAllFlagsAndPayloads(t,r){await this.loadFeatureFlags();let n={},i={},o=this.featureFlags.length==0,s=r?r.map(c=>this.featureFlagsByKey[c]).filter(Boolean):this.featureFlags,a=this.withEvaluationSnapshot({...t,definitions:void 0});return await Promise.all(s.map(async c=>{try{let{value:u,payload:l}=await this.computeFlagAndPayloadLocally(c,a,{skipLoadCheck:!0});n[c.key]=u,l&&(i[c.key]=l)}catch(u){u instanceof Ane||u instanceof Zu?this.logMsgIfDebug(()=>console.debug(`${u.name} when computing flag locally: ${c.key}: ${u.message}`)):u instanceof Error&&this.onError?.(new Error(`Error computing flag locally: ${c.key}: ${u}`)),o=!0}})),{response:n,payloads:i,fallbackToFlags:o}}async computeFlagAndPayloadLocally(t,r,n={}){let{matchValue:i,skipLoadCheck:o=!1}=n;if(this.loadedSuccessfullyOnce&&(r=this.withEvaluationSnapshot(r)),o||await this.loadFeatureFlags(),!this.loadedSuccessfullyOnce)return{value:!1,payload:null};r=this.withEvaluationSnapshot(r),t=r.definitions.featureFlagsByKey[t.key]??t;let s;s=i!==void 0?i:await this.computeFlagValueLocally(t,r);let a=DXo(t.filters?.payloads,s);return{value:s,payload:a}}async computeFlagValueLocally(t,r){let{distinctId:n,groups:i,personProperties:o,groupProperties:s}=r;if(!t.active)return!1;if(t.ensure_experience_continuity)throw new Zu("Flag has experience continuity enabled");let c=(t.filters||{}).aggregation_group_type_index;if(c!=null){let u=r.definitions.groupTypeMapping[String(c)];if(!u)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Unknown group type index ${c} for feature flag ${t.key}`)),new Zu("Flag has unknown group type index");if(!(u in i))return this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute group feature flag: ${t.key} without group names passed in`)),!1;t.bucketing_identifier==="device_id"&&(o?.$device_id===void 0||o?.$device_id===null||o?.$device_id==="")&&this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Ignoring bucketing_identifier for group flag: ${t.key}`));let l=s[u];return await this.matchFeatureFlagProperties(t,i[u],l,r)}{let u=this.getBucketingValueForFlag(t,n,o);if(u===void 0)throw this.logMsgIfDebug(()=>console.warn(`[FEATURE FLAGS] Can't compute feature flag: ${t.key} without $device_id, falling back to server evaluation`)),new Zu(`Can't compute feature flag: ${t.key} without $device_id`);return await this.matchFeatureFlagProperties(t,u,o,r)}}getBucketingValueForFlag(t,r,n){if(t.filters?.aggregation_group_type_index!=null)return r;if(t.bucketing_identifier==="device_id"){let i=n?.$device_id;return i==null||i===""?void 0:i}return r}async evaluateFlagDependency(t,r,n){let{evaluationCache:i}=n,o=t.key;if(!n.definitions.featureFlagsByKey)throw new Zu("Feature flags not available for dependency evaluation");if(!("dependency_chain"in t))throw new Zu(`Flag dependency property for '${o}' is missing required 'dependency_chain' field`);let s=t.dependency_chain;if(!Array.isArray(s))throw new Zu(`Flag dependency property for '${o}' has an invalid 'dependency_chain' (expected array, got ${typeof s})`);if(s.length===0)throw new Zu(`Circular dependency detected for flag '${o}' (empty dependency chain)`);for(let c of s){if(!(c in i)){let l=n.definitions.featureFlagsByKey[c];if(l)if(l.active)try{let p=await this.computeFlagValueLocally(l,n);i[c]=p}catch(p){throw new Zu(`Error evaluating flag dependency '${c}' for flag '${o}': ${p}`)}else i[c]=!1;else if(n.definitions.filteredOutFlagKeys.has(c))i[c]=!1;else throw new Zu(`Missing flag dependency '${c}' for flag '${o}'`)}if(i[c]==null)throw new Zu(`Dependency '${c}' could not be evaluated`)}let a=i[o];return this.flagEvaluatesToExpectedValue(t.value,a)}flagEvaluatesToExpectedValue(t,r){return typeof t=="boolean"?t===r||typeof r=="string"&&r!==""&&t===!0:typeof t=="string"?r===t:!1}async matchFeatureFlagProperties(t,r,n,i){i=this.withEvaluationSnapshot(i);let o=t.filters||{},s=await BXo(o.holdout,r);if(s!==void 0)return s;let a=o.groups||[],c=o.aggregation_group_type_index,u=o.early_exit??!1,{groups:l,groupProperties:p}=i,d=!1,f;for(let m of a)try{let g=m.aggregation_group_type_index!==void 0?m.aggregation_group_type_index:c,A=n,y=r;if(g!==c&&g!=null){let x=i.definitions.groupTypeMapping[String(g)];if(!x||!(x in l)){this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Skipping group condition for flag '${t.key}': group type index ${g} not available`));continue}if(!(x in p)){d=!0;continue}A=p[x],y=l[x]}let I=await this.isConditionMatch(t,y,m,A,i);if(I==="match"){let x=m.variant,v=o.multivariate?.variants||[];f=x&&v.some(w=>w.key===x)?x:await this.getMatchingVariant(t,y)||!0;break}if(u&&I==="out_of_rollout_bound"){if(d)break;return!1}}catch(g){if(g instanceof Ane)throw g;if(g instanceof Zu)d=!0;else throw g}if(f!==void 0)return f;if(d)throw new Zu("Can't determine if feature flag is enabled or not with given properties");return!1}async isConditionMatch(t,r,n,i,o){o=this.withEvaluationSnapshot(o);let s=o.definitions,a=n.rollout_percentage,c=u=>{this.logMsgIfDebug(()=>console.warn(u))};if((n.properties||[]).length>0){for(let u of n.properties){let l=u.type,p=!1;if(l==="cohort"){let d=await xsl(u,i,s.cohorts,this.debugMode,f=>this.evaluateFlagDependency(f,i,o),s.propertyMatchingVersion);p=u.operator==="not_in"?!d:d}else p=l==="flag"?await this.evaluateFlagDependency(u,i,o):Csl(u,i,c,s.propertyMatchingVersion);if(!p)return"no_match"}if(a==null)return"match"}return a!=null&&await tKt(t.key,r)>a/100?"out_of_rollout_bound":"match"}async getMatchingVariant(t,r){return RXo(t.key,r,t.filters?.multivariate?.variants||[])}variantLookupTable(t){return Pin(t.filters?.multivariate?.variants||[])}filterFlagsByEvaluationContexts(t){if(!this.evaluationContexts||this.evaluationContexts.length===0)return t;let r=new Set(this.evaluationContexts);return t.filter(n=>{let i=n.evaluation_contexts??n.evaluation_tags;return!i||i.length===0?!0:i.some(o=>r.has(o))})}getEvaluationRuntimeForFlag(t){let r=this.featureFlagsByKey[t];return r?vsl(r.evaluation_runtime):void 0}getFlagKeysByEvaluationRuntime(t){return this.featureFlags.filter(r=>elh(vsl(r.evaluation_runtime),t)).map(r=>r.key)}updateFlagState(t){let r=this.filterFlagsByEvaluationContexts(t.flags);this.featureFlags=r,this.featureFlagsByKey=r.reduce((i,o)=>(i[o.key]=o,i),{});let n=new Set(r.map(i=>i.key));this.filteredOutFlagKeys=new Set(t.flags.filter(i=>!n.has(i.key)).map(i=>i.key)),this.groupTypeMapping=t.group_type_mapping??t.groupTypeMapping??{},this.cohorts=t.cohorts,this.propertyMatchingVersion=t.property_matching_version??t.propertyMatchingVersion,this.loadedSuccessfullyOnce=!0,this.onMinimalFlagCalledEvents?.((t.minimal_flag_called_events??t.minimalFlagCalledEvents)===!0)}warnAboutExperienceContinuityFlags(t){if(this.strictLocalEvaluation)return;let r=t.filter(n=>n.ensure_experience_continuity);r.length>0&&console.warn(`[PostHog] You are using local evaluation but ${r.length} flag(s) have experience continuity enabled: ${r.map(n=>n.key).join(", ")}. Experience continuity is incompatible with local evaluation and will cause a server request on every flag evaluation, negating local evaluation cost savings. To avoid server requests and unexpected costs, either disable experience continuity on these flags in PostHog, use strictLocalEvaluation: true in client init, or pass onlyEvaluateLocally: true per flag call (flags that cannot be evaluated locally will return undefined).`)}async loadFromCache(t){if(!this.cacheProvider)return!1;try{let r=await this.cacheProvider.getFlagDefinitions();return r?(this.updateFlagState(r),this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] ${t} (${r.flags.length} flags)`)),this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(this.featureFlags),!0):!1}catch(r){return this.onError?.(new Error(`Failed to load from cache: ${r}`)),!1}}async loadFeatureFlags(t=!1){if(!(this.loadedSuccessfullyOnce&&!t))return!t&&this.nextFetchAllowedAt&&Date.now()<this.nextFetchAllowedAt?void this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Skipping fetch, in backoff period")):(this.loadingPromise||(this.loadingPromise=this._loadFeatureFlags().catch(r=>this.logMsgIfDebug(()=>console.debug(`[FEATURE FLAGS] Failed to load feature flags: ${r}`))).finally(()=>{this.loadingPromise=void 0})),this.loadingPromise)}isLocalEvaluationReady(){return(this.loadedSuccessfullyOnce??!1)&&(this.featureFlags?.length??0)>0}getFlagDefinitionsLoadedAt(){return this.flagDefinitionsLoadedAt}getPollingInterval(){let t=this.pollingInterval??3e4;return this.shouldBeginExponentialBackoff?Math.min($uh,t*2**this.backOffCount):t}beginBackoff(){this.shouldBeginExponentialBackoff=!0,this.backOffCount+=1,this.nextFetchAllowedAt=Date.now()+this.getPollingInterval()}clearBackoff(){this.shouldBeginExponentialBackoff=!1,this.backOffCount=0,this.nextFetchAllowedAt=void 0}async _loadFeatureFlags(){this.poller&&(clearTimeout(this.poller),this.poller=void 0);try{let t=!0;if(this.cacheProvider)try{t=await this.cacheProvider.shouldFetchFlagDefinitions()}catch(n){this.onError?.(new Error(`Error in shouldFetchFlagDefinitions: ${n}`))}if(!t&&(await this.loadFromCache("Loaded flags from cache (skipped fetch)")||this.loadedSuccessfullyOnce))return;let r=await this._requestFeatureFlagDefinitions();if(!r)return;switch(r.status){case 304:this.logMsgIfDebug(()=>console.debug("[FEATURE FLAGS] Flags not modified (304), using cached data")),this.flagsEtag=r.headers?.get("ETag")??this.flagsEtag,this.loadedSuccessfullyOnce=!0,this.clearBackoff();return;case 401:throw this.beginBackoff(),new Pft(`Your project key or secret key is invalid. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 402:console.warn("[FEATURE FLAGS] Feature flags quota limit exceeded - unsetting all local flags. Learn more about billing limits at https://posthog.com/docs/billing/limits-alerts"),this.featureFlags=[],this.featureFlagsByKey={},this.filteredOutFlagKeys=new Set,this.groupTypeMapping={},this.cohorts={},this.propertyMatchingVersion=void 0,this.onMinimalFlagCalledEvents?.(!1);return;case 403:throw this.beginBackoff(),new Pft(`Your secret key does not have permission to fetch feature flag definitions for local evaluation. Setting next polling interval to ${this.getPollingInterval()}ms. Are you sure you're using the correct secret and Project API key pair? More information: https://posthog.com/docs/api/overview`);case 429:throw this.beginBackoff(),new Pft(`You are being rate limited. Setting next polling interval to ${this.getPollingInterval()}ms. More information: https://posthog.com/docs/api#rate-limiting`);case 200:{let n=await r.json()??{};if(!("flags"in n))return void this.onError?.(new Error(`Invalid response when getting feature flags: ${JSON.stringify(n)}`));this.flagsEtag=r.headers?.get("ETag")??void 0;let i=n.group_type_mapping||{},o=n.minimal_flag_called_events===!0,s={flags:n.flags??[],group_type_mapping:i,cohorts:n.cohorts||{},minimal_flag_called_events:o,property_matching_version:n.property_matching_version,propertyMatchingVersion:n.property_matching_version,groupTypeMapping:i,minimalFlagCalledEvents:o};if(this.updateFlagState(s),this.flagDefinitionsLoadedAt=Date.now(),this.clearBackoff(),this.cacheProvider&&t)try{await this.cacheProvider.onFlagDefinitionsReceived(s)}catch(a){this.onError?.(new Error(`Failed to store in cache: ${a}`))}this.onLoad?.(this.featureFlags.length),this.warnAboutExperienceContinuityFlags(this.featureFlags);break}default:return}}catch(t){t instanceof Pft&&this.onError?.(t)}finally{!this.pollerStopped&&this.pollingInterval!==null&&(this.poller=setTimeout(()=>this.loadFeatureFlags(!0),this.getPollingInterval()))}}getPersonalApiKeyRequestOptions(t="GET",r){let n={...this.customHeaders,"Content-Type":"application/json",Authorization:`Bearer ${this.personalApiKey}`};return r&&(n["If-None-Match"]=r),{method:t,headers:n}}async _requestFeatureFlagDefinitions(){let t=`${this.host}/flags/definitions?token=${this.projectApiKey}&send_cohorts`,r=this.getPersonalApiKeyRequestOptions("GET",this.flagsEtag),n=null;if(this.timeout&&typeof this.timeout=="number"){let o=new AbortController;n=zN(()=>{o.abort()},this.timeout),r.signal=o.signal}let i=()=>clearTimeout(n);try{let o=this.fetch,s=await o(t,r);return s.status!==200?(i(),s):{status:s.status,headers:s.headers,body:s.body,text:async()=>{try{return await s.text()}finally{i()}},json:async()=>{try{return await s.json()}finally{i()}}}}catch(o){throw i(),o}}async stopPoller(t=3e4){if(this.pollerStopped=!0,clearTimeout(this.poller),this.poller=void 0,this.cacheProvider)try{let r=this.cacheProvider.shutdown();r instanceof Promise&&await p1e(r,t,()=>{throw new Error(`Cache shutdown timeout after ${t}ms`)})}catch(r){this.onError?.(new Error(`Error during cache shutdown: ${r}`))}}};function Csl(e,t,r,n){return PXo(e,t,{warnFunction:r,propertyMatchingVersion:n})}function rlh(e,t){if(!(e in t))throw new Ane(`cohort ${e} not found in local cohorts - likely a static cohort that requires server evaluation`)}async function xsl(e,t,r,n=!1,i,o){let s=String(e.value);rlh(s,r);let a=r[s];return wsl(a,t,r,n,i,o)}async function wsl(e,t,r,n=!1,i,o){if(!e)return!0;let s=e.type,a=e.values;if(!a||a.length===0)return!0;let c=!1;if("values"in a[0]){for(let u of a)try{let l=await wsl(u,t,r,n,i,o);if(s==="AND"){if(!l)return!1}else if(l)return!0}catch(l){if(l instanceof Ane)throw l;if(l instanceof Zu)n&&console.debug(`Failed to compute property ${u} locally: ${l}`),c=!0;else throw l}if(c)throw new Zu("Can't match cohort without a given cohort property value");return s==="AND"}for(let u of a)try{let l;if(u.type==="cohort")l=await xsl(u,t,r,n,i,o);else if(u.type==="flag"){if(!i)throw new Zu(`Flag dependency '${u.key||"unknown"}' cannot be evaluated without a flag dependency evaluator`);l=await i(u)}else l=Csl(u,t,void 0,o);let p=u.negation||!1;if(s==="AND"){if(!l&&!p||l&&p)return!1}else if(l&&!p||!l&&p)return!0}catch(l){if(l instanceof Ane)throw l;if(l instanceof Zu)n&&console.debug(`Failed to compute property ${u} locally: ${l}`),c=!0;else throw l}if(c)throw new Zu("can't match cohort without a given cohort property value");return s==="AND"}var nlh=["--unhandled-rejections","--unhandled_rejections"],ilh=new Set(["throw","strict","warn","warn-with-error-code","none"]),olh=[...globalThis.process?.execArgv??[]],slh=globalThis.process?.env?.NODE_OPTIONS;function alh(e){let t=[],r="",n=!1;for(let i=0;i<e.length;i++){let o=e[i];o==="\\"&&n&&i+1<e.length?r+=e[++i]:o!==" "||n?o==='"'?n=!n:r+=o:r&&(t.push(r),r="")}return r&&t.push(r),t}function Ssl(e){let t;for(let r=0;r<e.length;r++){let n=e[r],i=nlh.find(s=>n===s||n.startsWith(`${s}=`));if(!i)continue;let o=n===i?e[++r]:n.slice(i.length+1);ilh.has(o)&&(t=o)}return t}function clh(e=olh,t=slh){return Ssl(e)??Ssl(alh(t??""))??"throw"}var Tsl=clh();function Osl(e,t,r){e(t,{mechanism:{type:r==="unhandledRejection"?"onunhandledrejection":"onuncaughtexception",handled:!1}})}function ulh(e,t){let r=!1;return Object.assign((n,i)=>{let o=global.process.listeners("uncaughtException").filter(s=>s.name!=="domainUncaughtExceptionClear"&&s._posthogErrorHandler!==!0).length;Osl(e,n,i),!r&&o===0&&(r=!0,t(n))},{_posthogErrorHandler:!0})}function Psl(e,t,r=Tsl){let n=globalThis.process;if(n){if(r==="strict")return void n.on("uncaughtExceptionMonitor",(i,o)=>Osl(e,i,o));n.on("uncaughtException",ulh(e,t))}}function Bsl(e,t=Tsl){let r=globalThis.process;!r||t==="throw"||t==="strict"||t==="warn-with-error-code"||r.on("unhandledRejection",n=>{e(n,{mechanism:{type:"onunhandledrejection",handled:!1}})})}var llh=2e3,ZXo=class e{constructor(t,r,n){this.client=t,this._exceptionAutocaptureEnabled=r.enableExceptionAutocapture||!1,this._logger=n,this._rateLimiter=new uin({..._il(r),refillInterval:1e4,_logger:this._logger}),this.startAutocaptureIfEnabled()}static isPreviouslyCapturedError(t){return MHt(t)&&"__posthog_previously_captured_error"in t&&t.__posthog_previously_captured_error===!0}static async buildEventMessage(t,r,n,i,o){let s={...o},a=t.buildFromUnknown(r,n);a.$exception_list=await t.modifyFrames(a.$exception_list);let c=nO.getInjectedReleaseId();return c&&(s.$release_id=c),{event:"$exception",distinctId:i,properties:{...a,...s},_originatedFromCaptureException:!0}}startAutocaptureIfEnabled(){this.isEnabled()&&(Psl(this.onException.bind(this),this.onFatalError.bind(this)),Bsl(this.onException.bind(this)))}onException(t,r){this.client.addPendingPromise((async()=>{if(!e.isPreviouslyCapturedError(t)){let n=await e.buildEventMessage(this.client.getErrorPropertiesBuilder(),t,r),o=n.properties?.$exception_list[0]?.type??"Exception";return this._rateLimiter.consumeRateLimit(o)?void this._logger.info("Skipping exception capture because of client rate limiting.",{exception:o}):this.client._capturePreparedEvent(n,!1)}})())}async onFatalError(t){console.error(t),await this.client.shutdown(llh),globalThis.process.exit(1)}isEnabled(){return!this.client.isDisabled&&this._exceptionAutocaptureEnabled}shutdown(){this._rateLimiter.stop()}},E5e=ZXo;var qin=class{getProperty(t){return this._memoryStorage[t]}setProperty(t,r){this._memoryStorage[t]=r!==null?r:void 0}constructor(){this._memoryStorage={}}};function plh(e){return e==="v0"||e==="v1"}function Rsl(){let e="u">typeof process?process.env?.POSTHOG_CAPTURE_MODE:void 0;return plh(e)?e:"v0"}var flh="$ai_",hKt="analytics";function Dsl(e){return typeof e.event=="string"&&e.event.startsWith(flh)}var Bft=class e extends Error{constructor({requestId:t,drops:r,retryExhausted:n,cause:i}){super(e.buildMessage(t,r,n,i)),this.name="CaptureV1Error",this.requestId=t,this.drops=r,this.retryExhausted=n,this.cause=i}static buildMessage(t,r,n,i){let o=`Capture V1 batch ${t} did not fully deliver: ${r.length} dropped, ${n.length} undelivered`;return i instanceof Error&&(o+=` (${i.message})`),o}};function $Xo(e){if(typeof e=="boolean")return e;if(typeof e=="number")return e!==0;if(typeof e=="string"){let t=e.trim().toLowerCase();if(t==="true"||t==="1")return!0;if(t==="false"||t==="0")return!1}}function dlh(e){return typeof e=="string"?e:void 0}var mlh=[{property:"$cookieless_mode",optionKey:"cookieless_mode",coerce:$Xo},{property:"$ignore_sent_at",optionKey:"disable_skew_correction",coerce:$Xo},{property:"$process_person_profile",optionKey:"process_person_profile",coerce:$Xo},{property:"$product_tour_id",optionKey:"product_tour_id",coerce:dlh}],hlh=[{property:"$session_id",field:"session_id"},{property:"$window_id",field:"window_id"}];function glh(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Alh(e){if(typeof e=="string"){let r=new Date(e);if(Number.isNaN(r.getTime()))return new Date().toISOString();let n=r.toISOString(),i=e.match(/\.(\d+)(?:Z|[+-]\d{2}:?\d{2})?$/i)?.[1];return i&&i.length>3?n.replace(/\.\d{3}Z$/,`.${i}Z`):n}if(e instanceof Date)return Number.isNaN(e.getTime())?new Date().toISOString():e.toISOString();let t=e==null?new Date:new Date(e);return Number.isNaN(t.getTime())?new Date().toISOString():t.toISOString()}function ksl(e,t,r){r!==void 0&&!(t in e)&&(e[t]=r)}function ylh(e){let r={...glh(e.properties)?e.properties:{}},n={};for(let{property:o,optionKey:s,coerce:a}of mlh)if(o in r){let c=a(r[o]);c!==void 0&&(n[s]=c),delete r[o]}let i={};for(let{property:o,field:s}of hlh)if(o in r){let a=r[o];typeof a=="string"&&(i[s]=a),delete r[o]}return delete r.$lib,delete r.$lib_version,ksl(r,"$set",e.$set),ksl(r,"$set_once",e.$set_once),{event:String(e.event??""),uuid:String(e.uuid??""),distinct_id:String(e.distinct_id??""),timestamp:Alh(e.timestamp),...i,options:n,properties:r}}function Fsl(e,{createdAt:t,historicalMigration:r}){let n={created_at:t,batch:e.map(ylh)};return r&&(n.historical_migration=!0),n}var blh="/i/v1/analytics/events",Elh=3e4,Ilh=new Set([408,500,502,503,504]),Win=class{constructor(t,r){this.config=t,this.maxBackoffMs=t.maxBackoffMs??Elh,this.fetchFn=r.fetch,this.onError=r.onError,this.now=r.now??Date.now,this.sleep=r.sleep??(n=>new Promise(i=>zN(i,n))),this.generateRequestId=r.generateRequestId??jN,this.compress=r.compress??ZHt}async sendV1Batch(t){if(t.length===0)return;let r=this.generateRequestId(),n=new Date(this.now()).toISOString(),{batch:i}=Fsl(t,{createdAt:n,historicalMigration:this.config.historicalMigration}),o=`${this.config.host}${blh}`,s=[],a=i,c=Math.max(1,this.config.maxAttempts);for(let u=1;u<=c;u++){let l=u===c,p=u1e({created_at:n,...this.config.historicalMigration?{historical_migration:!0}:{},batch:a}),d,f;try{d=await this.sendOnce(o,p,u,r);let{response:m,signal:g}=d,{status:A}=m;if(A<200||A>=300)if(!l&&Ilh.has(A)){let y=this.parseRetryAfter(m);await d.waitFor(d.cancelBody()).catch(()=>{}),f=this.backoffDelay(u,y)}else{let y=await this.buildHttpError(m,A,d.waitFor);return this.surfaceBatchFailure(r,s,a,y)}else{let y;try{y=await d.waitFor(this.parseResponse(m))}catch(v){if(g.aborted)throw v;return this.surfaceBatchFailure(r,s,a,new Error(`Capture V1 returned an unparseable ${A} response body`))}let I=this.classify(a,y,s);if(I.length===0)return this.surfacePartialDrops(r,s);if(l)return void this.onError(new Bft({requestId:r,drops:s,retryExhausted:I.map(v=>v.uuid)}));a=I;let x=this.parseRetryAfter(m);f=this.backoffDelay(u,x)}}catch(m){if(d&&!d.signal.aborted)throw m;if(l)return this.surfaceBatchFailure(r,s,a,m);f=this.backoffDelay(u)}finally{d?.cleanup()}f!==void 0&&await this.sleep(f)}}async sendOnce(t,r,n,i){let o=this.buildHeaders(n,i),s=r;if(this.config.compressionEnabled){let p=await this.compress(r,this.config.isDebug);p!==null&&(s=p,o["Content-Encoding"]="gzip")}let a=new AbortController,c="waiting for response headers",u,l=new Promise((p,d)=>{u=zN(()=>{let f=new Error(`Capture V1 request timed out ${c} after ${this.config.requestTimeoutMs}ms`);f.name="AbortError",d(f),a.abort(f)},this.config.requestTimeoutMs)});try{let p=this.fetchFn(t,{method:"POST",headers:o,body:s,signal:a.signal}),d=!1;p.then(y=>{a.signal.aborted&&!d&&this.cancelBody(y)}).catch(()=>{});let f=await Promise.race([p,l]);d=!0,c="while reading the response body";let m=!1,g,A=()=>g??=this.cancelBody(f);return{response:f,signal:a.signal,waitFor:y=>Promise.race([y,l]),cancelBody:A,cleanup:()=>{m||(m=!0,clearTimeout(u),a.signal.aborted&&A())}}}catch(p){throw clearTimeout(u),p}}buildHeaders(t,r){let n=`${this.config.libraryId}/${this.config.libraryVersion}`,i={"Content-Type":"application/json",Authorization:`Bearer ${this.config.apiKey}`,"PostHog-Sdk-Info":n,"PostHog-Attempt":String(t),"PostHog-Request-Id":r,"PostHog-Request-Timestamp":new Date(this.now()).toISOString()};return this.config.userAgent&&(i["User-Agent"]=this.config.userAgent),i}classify(t,r,n){let i=r.results??{},o=[];for(let s of t){let a=i[s.uuid];a&&(a.result==="drop"?n.push({uuid:s.uuid,details:a.details??void 0}):a.result==="retry"&&o.push(s))}return o}backoffDelay(t,r){let n=Math.min(this.config.initialRetryDelayMs*2**(t-1),this.maxBackoffMs);return r===void 0?n:Math.max(n,Math.min(r,this.maxBackoffMs))}parseRetryAfter(t){let r=t.headers?.get("Retry-After");if(!r)return;let n=r.trim();if(/^\d+$/.test(n)){let s=parseInt(n,10);return Number.isFinite(s)&&s>0?1e3*s:void 0}let i=Date.parse(n);if(Number.isNaN(i))return;let o=i-this.now();return o>0?o:void 0}async parseResponse(t){let r=await t.text(),n=JSON.parse(r);if(typeof n!="object"||n===null||Array.isArray(n))throw new Error("unexpected response shape");let i=n.results;if(i!==void 0&&(typeof i!="object"||i===null||Array.isArray(i)))throw new Error("unexpected results shape");return{results:i??{}}}async buildHttpError(t,r,n){let i="";try{i=(await n(t.text())).slice(0,512)}catch{}let o=i?`: ${i}`:"";return new Error(`Capture V1 request failed with HTTP ${r}${o}`)}surfaceBatchFailure(t,r,n,i){this.onError(new Bft({requestId:t,drops:r,retryExhausted:n.map(o=>o.uuid),cause:i}))}surfacePartialDrops(t,r){r.length>0&&this.onError(new Bft({requestId:t,drops:r,retryExhausted:[]}))}async cancelBody(t){try{await t.body?.cancel()}catch{}}};var I5e="ai-capture",Hin="/i/v0/ai/batch/";var Clh=new TextEncoder;function tZo(e){return Clh.encode(u1e(e)).length}function Nsl(e,t=8388608,r=5242880){let n=[],i=[],o=[],s=0;for(let a of e){if(a===void 0)continue;let c=tZo(a);if(c>t){i.push({event:typeof a.event=="string"?a.event:"unknown",bytes:c});continue}o.length>0&&s+c>r&&(n.push(o),o=[],s=0),o.push(a),s+=c}return o.length>0&&n.push(o),{batches:n,dropped:i}}var xlh=100,jsl=3e4,wlh=5e4,Slh=50,Tlh=500,Olh="https://us.i.posthog.com",zsl=new Set;function Jin(e,t){zsl.has(e)||(zsl.add(e),console.warn(`[PostHog] ${t}`))}function Plh(e){return typeof e=="string"?e.trim():""}function Blh(e){return(typeof e=="string"?e.trim():"")||void 0}function Rlh(e){return(typeof e=="string"?e.trim():"")||Olh}function Dlh(e){return(Array.isArray(e)?e:[e]).filter(r=>typeof r=="string"&&r.trim().length>0)}function klh(e){if(!e)return{};let t={};for(let[n,i]of Object.entries(e))t[`$feature/${n}`]=i;let r=Object.keys(e).filter(n=>e[n]!==!1).sort();return r.length>0&&(t.$active_feature_flags=r),t}var Yin=class extends $Ht{constructor(t,r={}){let n=Plh(t),i={...r,maxQueueSize:r.maxQueueSize??1e4,flushInterval:r.flushInterval??5e3,host:Rlh(r.host),personalApiKey:Blh(r.secretKey??r.personalApiKey)};if(super(n,i),this._memoryStorage=new qin,this._aiCaptureRouteActive=!1,this._minimalFlagCalledEvents=!1,this.options=i,this.captureMode=Rsl(),this.enableFullAiCapture=i.enableFullAiCapture===!0,this.context=this.initializeContext(),this.options.featureFlagsPollingInterval=typeof i.featureFlagsPollingInterval=="number"?Math.max(i.featureFlagsPollingInterval,xlh):i.featureFlagsPollingInterval===null?null:jsl,typeof i.waitUntilDebounceMs=="number"&&(this.options.waitUntilDebounceMs=Math.max(i.waitUntilDebounceMs,0)),typeof i.waitUntilMaxWaitMs=="number"&&(this.options.waitUntilMaxWaitMs=Math.max(i.waitUntilMaxWaitMs,0)),!this.disabled&&i.personalApiKey){if(i.personalApiKey.includes("phc_"))throw new Error('Your Personal API key is invalid. These keys are prefixed with "phx_" and can be created in PostHog project settings.');i.enableLocalEvaluation!==!1&&(this.featureFlagsPoller=new Gin({pollingInterval:this.options.featureFlagsPollingInterval,personalApiKey:i.personalApiKey,projectApiKey:n,timeout:i.requestTimeout??1e4,host:this.host,fetch:i.fetch,onError:s=>{this._events.emit("error",s)},onLoad:s=>{this._events.emit("localEvaluationFlagsLoaded",s)},onMinimalFlagCalledEvents:s=>{this._minimalFlagCalledEvents=s},customHeaders:this.getCustomHeaders(),cacheProvider:i.flagDefinitionCacheProvider,strictLocalEvaluation:i.strictLocalEvaluation,evaluationContexts:i.evaluationContexts??i.evaluationEnvironments}))}this.errorTracking=new E5e(this,i,this._logger),this.distinctIdHasSentFlagCalls={},this.maxCacheSize=i.maxCacheSize||wlh}enqueue(t,r,n,i){super.enqueue(t,r,n,i),this.scheduleDebouncedFlush()}_flushEventsAndSpans(t=!1){let r=this.flushWithPendingPromises();return!this._traces||t&&this._traces.throttled?r:UHt([r,this._traces.flush().catch(()=>{})]).then(([n])=>{if(n.status==="rejected")throw n.reason})}flushAutomatic(){return this._flushKeepingRuntimeAlive(!0)}async flush(){return this._flushKeepingRuntimeAlive(!1)}_flushKeepingRuntimeAlive(t){let r=this._flushEventsAndSpans(t),n=this.options.waitUntil;if(n&&!this._waitUntilCycle)try{n(r.catch(()=>{}))}catch{}return r}scheduleDebouncedFlush(){let t=this.options.waitUntil;if(!t||this.disabled||this.optedOut)return;if(!this._waitUntilCycle){let s,a=new Promise(c=>{s=c});try{t(a)}catch{return}this._waitUntilCycle={resolve:s,startedAt:Date.now(),timer:void 0}}let r=Date.now()-this._waitUntilCycle.startedAt,n=this.options.waitUntilMaxWaitMs??Tlh,i=r>=n;if(this._waitUntilCycle.timer!==void 0&&clearTimeout(this._waitUntilCycle.timer),i)return void this.resolveWaitUntilFlush();let o=this.options.waitUntilDebounceMs??Slh;this._waitUntilCycle.timer=zN(()=>{this.resolveWaitUntilFlush()},o)}_consumeWaitUntilCycle(){let t=this._waitUntilCycle;return t&&(clearTimeout(t.timer),this._waitUntilCycle=void 0),t?.resolve}async resolveWaitUntilFlush(){let t=this._consumeWaitUntilCycle();try{await this._flushEventsAndSpans()}catch{}finally{t?.()}}getPersistedProperty(t){return this._memoryStorage.getProperty(t)}setPersistedProperty(t,r){return this._memoryStorage.setProperty(t,r)}fetch(t,r){return this.options.fetch?this.options.fetch(t,r):fetch(t,r)}getQueueRouteKey(t){return this.captureMode==="v1"&&Dsl(t)?"ai":hKt}persistedQueueKeyForRoute(t){return t===I5e?OM.AiCaptureQueue:t==="ai"?OM.AiQueue:OM.Queue}getActiveQueueRoutes(){let t=this.captureMode==="v1"?[hKt,"ai"]:[hKt];return this._aiCaptureRouteActive&&t.push(I5e),t}getBatchEndpointPath(t){return t===I5e?Hin:super.getBatchEndpointPath(t)}async sendBatch(t,r,n=hKt){if(n===I5e)return this.sendAiCaptureBatch(t,r);if(this.captureMode!=="v1"||n==="ai")return super.sendBatch(t,r,n);let i=t.filter(o=>o!==void 0);await this.getV1Sender().sendV1Batch(i)}async sendAiCaptureBatch(t,r){let{batches:n,dropped:i}=Nsl(t);for(let{event:o,bytes:s}of i){let a=`Event ${o} (${s} bytes) exceeds the ${8388608/1048576}MiB limit for ${Hin}, dropping.`;this._logger.error(a),this._events.emit("error",new Error(a))}for(let o of n)await this.sendAiSubBatch(o,r)}async sendAiSubBatch(t,r){try{await super.sendBatch(t,r,I5e)}catch(n){if(!wft(n))throw n;if(t.length===1){let[o]=t,a=`Event ${typeof o.event=="string"?o.event:"unknown"} (${tZo(o)} bytes) was rejected with 413 by ${Hin} on its own, dropping.`;this._logger.error(a),this._events.emit("error",new Error(a));return}let i=Math.ceil(t.length/2);await this.sendAiSubBatch(t.slice(0,i),r),await this.sendAiSubBatch(t.slice(i),r)}}getV1Sender(){return this._v1Sender||(this._v1Sender=new Win({host:this.host,apiKey:this.apiKey,libraryId:this.getLibraryId(),libraryVersion:this.getLibraryVersion(),userAgent:this.getCustomUserAgent()||void 0,historicalMigration:this.historicalMigration,compressionEnabled:!this.disableCompression,requestTimeoutMs:this.requestTimeout,maxAttempts:(this.options.fetchRetryCount??3)+1,initialRetryDelayMs:this.options.fetchRetryDelay??3e3,isDebug:this.isDebug},{fetch:(t,r)=>this.fetch(t,r),onError:t=>this._events.emit("error",t),compress:t=>this.compressPayload(t)})),this._v1Sender}getLibraryVersion(){return Isl}get metrics(){return this._metrics||(this._metrics=new cKt(this,Rin(this.options.metrics),this._logger)),this._metrics}initializeSpanContextManager(){return new dKt}hostResourceAttributes(){return{}}get _spanContextManager(){return this._spanContext||(this._spanContext=this.initializeSpanContextManager()),this._spanContext}get _tracesPipeline(){if(this.options.traces)return this._traces||(this._traces=new fKt(this,HXo(this.options.traces,this.hostResourceAttributes(),this._logger),this._logger,()=>this._tracingContext(),this._spanContextManager,()=>this.scheduleDebouncedFlush())),this._traces}_tracingContext(){let t=this.context?.get();return{distinctId:t?.distinctId,sessionId:t?.sessionId}}startSpan(t,r){return this._tracesPipeline?.startSpan(t,r)??f1e(r,this._spanContextManager.active())}withSpan(t,r,n){let i=typeof r=="function"?void 0:r,o=typeof r=="function"?r:n,s=this._tracesPipeline;return s?i?s.withSpan(t,i,o):s.withSpan(t,o):pKt(this._spanContextManager,f1e(i,this._spanContextManager.active()),o)}getActiveSpan(){return this._spanContextManager.active()??null}getCustomUserAgent(){return`${this.getLibraryId()}/${this.getLibraryVersion()}`}getEvaluationRuntime(){return"server"}getCommonEventProperties(){let t=super.getCommonEventProperties();return(this.options.isServer??!0)&&(t.$is_server=!0),t}enable(){return super.optIn()}disable(){return super.optOut()}debug(t=!0){super.debug(t),this.featureFlagsPoller?.debug(t)}_warnIfInvalidCapture(t,r,n){typeof t=="string"&&this._logger.warn(r),t.event==="$exception"&&!t._originatedFromCaptureException&&this._logger.warn(n)}_sendPreparedEvent(t,r,n,i,o){return this.addPendingPromise(this._prepareEventMessage(r,i).then(({distinctId:s,event:a,properties:c,options:u})=>{let l={timestamp:u.timestamp,disableGeoip:u.disableGeoip,uuid:u.uuid},p={distinctId:s,event:a,properties:{...c,...this.getCommonEventProperties()}};return n?this.sendImmediate(t,p,l,o):this.enqueue(t,p,l,o)}).catch(s=>{s&&console.error(s)}))}_capturePreparedEvent(t,r){return this._sendPreparedEvent("capture",t,r)}capture(t){this._warnIfInvalidCapture(t,"Called capture() with a string as the first argument when an object was expected.","Using `posthog.capture('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureException(error)` instead, which attaches required metadata automatically."),this._capturePreparedEvent(t,!1)}async captureImmediate(t){return this._warnIfInvalidCapture(t,"Called captureImmediate() with a string as the first argument when an object was expected.","Capturing a `$exception` event via `posthog.captureImmediate('$exception')` is unreliable because it does not attach required metadata. Use `posthog.captureExceptionImmediate(error)` instead, which attaches this metadata by default."),this._capturePreparedEvent(t,!0)}captureAi(t){if(this.disabled)return;let r=g5e(t.uuid,jN);return this._sendPreparedAiEvent({...t,uuid:r},!1),r}async captureAiImmediate(t){if(this.disabled)return;let r=g5e(t.uuid,jN);return await this._sendPreparedAiEvent({...t,uuid:r},!0),r}_sendPreparedAiEvent(t,r){return typeof t?.event=="string"&&!t.event.startsWith("$ai_")&&this._logger.debug(`captureAi called with non-AI event ${t.event}; routing it to the AI endpoint anyway.`),this._aiCaptureRouteActive=!0,this._sendPreparedEvent("capture",t,r,void 0,I5e)}identify({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};this._sendPreparedEvent("identify",{distinctId:t,event:"$identify",properties:l,disableGeoip:n},!1,{includeContextProperties:!1})}async identifyImmediate({distinctId:t,properties:r={},disableGeoip:n}){let{$set:i,$set_once:o,$anon_distinct_id:s,...a}=r,l={$set:i||a,$set_once:o||{},$anon_distinct_id:s??void 0};await this._sendPreparedEvent("identify",{distinctId:t,event:"$identify",properties:l,disableGeoip:n},!0,{includeContextProperties:!1})}setPersonProperties({distinctId:t,properties:r={},propertiesOnce:n={}}){if(Object.keys(r).length===0&&Object.keys(n).length===0)return;let i={};Object.keys(r).length>0&&(i.$set=r),Object.keys(n).length>0&&(i.$set_once=n),this.capture({distinctId:t,event:"$set",properties:i})}unsetPersonProperties({distinctId:t,properties:r}){let n=Dlh(r);n.length!==0&&this.capture({distinctId:t,event:"$set",properties:{$unset:n}})}alias(t){this._sendPreparedEvent("alias",{distinctId:t.distinctId,event:"$create_alias",properties:{distinct_id:t.distinctId,alias:t.alias},disableGeoip:t.disableGeoip},!1,{includeContextProperties:!1})}async aliasImmediate(t){await this._sendPreparedEvent("alias",{distinctId:t.distinctId,event:"$create_alias",properties:{distinct_id:t.distinctId,alias:t.alias},disableGeoip:t.disableGeoip},!0,{includeContextProperties:!1})}isLocalEvaluationReady(){return this.featureFlagsPoller?.isLocalEvaluationReady()??!1}getFeatureFlagEvaluationRuntime(t){return this.featureFlagsPoller?.getEvaluationRuntimeForFlag(t)}getFeatureFlagKeysByEvaluationRuntime(t){return this.featureFlagsPoller?.getFlagKeysByEvaluationRuntime(t)??[]}async waitForLocalEvaluationReady(t=jsl){return this.isLocalEvaluationReady()?!0:this.featureFlagsPoller===void 0?!1:new Promise(r=>{let n=setTimeout(()=>{i(),r(!1)},t),i=this._events.on("localEvaluationFlagsLoaded",o=>{clearTimeout(n),i(),r(o>0)})})}_resolveDistinctId(t,r){return typeof t=="string"?{distinctId:t,options:r}:{distinctId:this.context?.get()?.distinctId,options:t}}async _getFeatureFlagResult(t,r,n={},i){if(this.disabled)return void this._logger.warn("The client is disabled");let o=n.sendFeatureFlagEvents??!0;if(this._flagOverrides!==void 0&&t in this._flagOverrides){let R=this._flagOverrides[t];if(R===void 0)return;let D=this._payloadOverrides?.[t];return{key:t,enabled:R!==!1,variant:typeof R=="string"?R:void 0,payload:D}}let{groups:s,disableGeoip:a}=n,{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=n,p=this.addLocalPersonAndGroupProperties(r,s,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(r,s,this.personPropertiesForLocalEvaluation(r,u),l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f,m=!1,g,A,y,I,x,v,w;if(this.featureFlagsPoller!==void 0){await this.featureFlagsPoller?.loadFeatureFlags();let R=this.featureFlagsPoller?.featureFlagsByKey[t];if(R)try{let D=await this.featureFlagsPoller?.computeFlagAndPayloadLocally(R,d,{matchValue:i});if(D){m=!0;let O=D.value;I=R.id,v="Evaluated locally",w=R.has_experiment,f={key:t,enabled:O!==!1,variant:typeof O=="string"?O:void 0,payload:D.payload??void 0,reason:v,reasonCode:R.active===!1?"flag_disabled":void 0}}}catch(D){if(D instanceof Ane||D instanceof Zu)this._logger?.info(`${D.name} when computing flag locally: ${t}: ${D.message}`);else throw D}}if(!m&&!c){let R=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,u,l,a,[t]);if(R===void 0)y=Whe.UNKNOWN_ERROR;else{this._minimalFlagCalledEvents=R.minimalFlagCalledEvents===!0,g=R.requestId,A=R.evaluatedAt;let D=[];R.errorsWhileComputingFlags&&D.push(Whe.ERRORS_WHILE_COMPUTING),R.quotaLimited?.includes("feature_flags")&&D.push(Whe.QUOTA_LIMITED);let O=R.flags[t];if(O===void 0)D.push(Whe.FLAG_MISSING);else{I=O.metadata?.id,x=O.metadata?.version,v=O.reason?.description??O.reason?.code,w=O.metadata?.has_experiment;let z;if(O.metadata?.payload!==void 0)try{z=JSON.parse(O.metadata.payload)}catch{z=O.metadata.payload}f={key:t,enabled:O.enabled,variant:O.variant??void 0,payload:z,reason:v,reasonCode:O.reason?.code}}D.length>0&&(y=D.join(","))}}if(o){let R=f===void 0?void 0:f.enabled===!1?!1:f.variant??!0,D={$feature_flag:t,$feature_flag_response:R,$feature_flag_id:I,$feature_flag_version:x,$feature_flag_reason:v,locally_evaluated:m,[`$feature/${t}`]:R,$feature_flag_request_id:g,$feature_flag_evaluated_at:m?Date.now():A};if(w!==void 0&&(D.$feature_flag_has_experiment=w),m&&this.featureFlagsPoller){let O=this.featureFlagsPoller.getFlagDefinitionsLoadedAt();O!==void 0&&(D.$feature_flag_definitions_loaded_at=O)}y&&(D.$feature_flag_error=y),this._captureFlagCalledEventIfNeeded({distinctId:r,key:t,response:R,groups:s,disableGeoip:a,properties:D})}return f!==void 0&&this._payloadOverrides!==void 0&&t in this._payloadOverrides&&(f={...f,payload:this._payloadOverrides[t]}),f}async getFeatureFlag(t,r,n){Jin("getFeatureFlag","`getFeatureFlag` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlag(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});if(i!==void 0)return i.enabled===!1?!1:i.variant??!0}async getFeatureFlagPayload(t,r,n,i){if(Jin("getFeatureFlagPayload","`getFeatureFlagPayload` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.getFlagPayload(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request."),this._payloadOverrides!==void 0&&t in this._payloadOverrides)return this._payloadOverrides[t];let o=await this._getFeatureFlagResult(t,r,{...i,sendFeatureFlagEvents:!1},n);if(o!==void 0)return o.payload??null}async getFeatureFlagResult(t,r,n){let{distinctId:i,options:o}=this._resolveDistinctId(r,n);return i?this._getFeatureFlagResult(t,i,{...o,sendFeatureFlagEvents:o?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0}):void this._logger.warn("[PostHog] distinctId is required \u2014 pass it explicitly or use withContext()")}async getRemoteConfigPayload(t){if(this.disabled)return void this._logger.warn("The client is disabled");if(!this.options.personalApiKey)throw new Error("Personal API key is required for remote config payload decryption");let r=await this._requestRemoteConfigPayload(t);if(!r)return;let n=await r.json();if(typeof n=="string")try{return JSON.parse(n)}catch{}return n}async isFeatureEnabled(t,r,n){Jin("isFeatureEnabled","`isFeatureEnabled` is deprecated and will be removed in a future major version. Use `posthog.evaluateFlags(distinctId, ...)` and call `flags.isEnabled(key)` instead \u2014 this consolidates flag evaluation into a single `/flags` request per incoming request.");let i=await this._getFeatureFlagResult(t,r,{...n,sendFeatureFlagEvents:n?.sendFeatureFlagEvents??this.options.sendFeatureFlagEvent??!0});return i===void 0?void 0:i.enabled===!1?!1:!!(i.variant??!0)||!1}async getAllFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);return n?(await this.getAllFlagsAndPayloads(n,i)).featureFlags||{}:(this._logger.warn("[PostHog] distinctId is required to get feature flags \u2014 pass it explicitly or use withContext()"),{})}async getAllFlagsAndPayloads(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to get feature flags and payloads \u2014 pass it explicitly or use withContext()"),{featureFlags:{},featureFlagPayloads:{}};if(this.disabled)return this._logger.warn("The client is disabled"),{featureFlags:{},featureFlagPayloads:{}};let{groups:o,disableGeoip:s,flagKeys:a}=i||{},{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,this.personPropertiesForLocalEvaluation(n,u),l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),m={},g={},A=!0;if(f&&(m=f.response,g=f.payloads,A=f.fallbackToFlags),A&&!c){let y=await super.getFeatureFlagsAndPayloadsStateless(d.distinctId,d.groups,u,l,s,a);m={...m,...y.flags||{}},g={...g,...y.payloads||{}}}return this._flagOverrides!==void 0&&(m={...m,...this._flagOverrides}),this._payloadOverrides!==void 0&&(g={...g,...this._payloadOverrides}),{featureFlags:m,featureFlagPayloads:g}}async evaluateFlags(t,r){let{distinctId:n,options:i}=this._resolveDistinctId(t,r);if(!n)return this._logger.warn("[PostHog] distinctId is required to evaluate feature flags \u2014 pass it explicitly or use withContext()"),new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:"",flags:{}});if(this.disabled)return this._logger.warn("The client is disabled"),new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,flags:{}});let{groups:o,disableGeoip:s}=i||{},a=i?.flagKeys??void 0;if(a?.length===0)return new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:{}});let{onlyEvaluateLocally:c,personProperties:u,groupProperties:l}=i||{},p=this.addLocalPersonAndGroupProperties(n,o,u,l);u=p.allPersonProperties,l=p.allGroupProperties;let d=this.createFeatureFlagEvaluationContext(n,o,this.personPropertiesForLocalEvaluation(n,u),l);c==null&&(c=this.options.strictLocalEvaluation??!1);let f=a?new Set(a):void 0,m={},g,A,y=!1,I=!1,x=await this.featureFlagsPoller?.getAllFlagsAndPayloads(d,a),v=new Set;if(x)for(let[R,D]of Object.entries(x.response)){let O=this.featureFlagsPoller?.featureFlagsByKey[R];m[R]={key:R,enabled:D!==!1,variant:typeof D=="string"?D:void 0,payload:x.payloads[R],id:O?.id,version:void 0,reason:"Evaluated locally",locallyEvaluated:!0,hasExperiment:O?.has_experiment},v.add(R)}let w=f!==void 0&&Array.from(f).some(R=>this.featureFlagsPoller?.featureFlagsByKey[R]===void 0);if((x?x.fallbackToFlags||w:!0)&&!c){let R=await super.getFeatureFlagDetailsStateless(d.distinctId,d.groups,u,l,s,a);if(R){this._minimalFlagCalledEvents=R.minimalFlagCalledEvents===!0,g=R.requestId,A=R.evaluatedAt,y=!!R.errorsWhileComputingFlags,I=Array.isArray(R.quotaLimited)&&R.quotaLimited.includes("feature_flags");for(let[D,O]of Object.entries(R.flags)){if(v.has(D))continue;let z;if(O.metadata?.payload!==void 0)try{z=JSON.parse(O.metadata.payload)}catch{z=O.metadata.payload}m[D]={key:D,enabled:O.enabled,variant:O.variant,payload:z,id:O.metadata?.id,version:O.metadata?.version,reason:O.reason?.description??O.reason?.code,locallyEvaluated:!1,hasExperiment:O.metadata?.has_experiment}}}}if(this._flagOverrides!==void 0)for(let[R,D]of Object.entries(this._flagOverrides)){if(D===void 0){delete m[R];continue}let O=m[R];m[R]={key:R,enabled:D!==!1,variant:typeof D=="string"?D:void 0,payload:O?.payload,id:O?.id,version:O?.version,reason:O?.reason,locallyEvaluated:O?.locallyEvaluated??!1,hasExperiment:O?.hasExperiment}}if(this._payloadOverrides!==void 0)for(let[R,D]of Object.entries(this._payloadOverrides)){let O=m[R];O&&(m[R]={...O,payload:D})}if(f!==void 0)for(let R of Object.keys(m))f.has(R)||delete m[R];return new m1e({host:this._getFeatureFlagEvaluationsHost(),distinctId:n,groups:o,disableGeoip:s,flags:m,requestId:g,evaluatedAt:A,flagDefinitionsLoadedAt:this.featureFlagsPoller?.getFlagDefinitionsLoadedAt(),errorsWhileComputing:y,quotaLimited:I})}_shouldSendMinimalFlagCalledEvent(t,r){return t==="$feature_flag_called"&&this._minimalFlagCalledEvents&&r.$feature_flag_has_experiment===!1}_captureFlagCalledEventIfNeeded(t){let{distinctId:r,key:n,response:i,groups:o,disableGeoip:s,properties:a}=t,c=o&&Object.keys(o).length>0?`_${JSON.stringify(Object.entries(o).sort(([l],[p])=>l<p?-1:l>p?1:0))}`:"",u=`${n}_${i}${c}`;r in this.distinctIdHasSentFlagCalls&&this.distinctIdHasSentFlagCalls[r].has(u)||(Object.keys(this.distinctIdHasSentFlagCalls).length>=this.maxCacheSize&&(this.distinctIdHasSentFlagCalls={}),this.distinctIdHasSentFlagCalls[r]instanceof Set?this.distinctIdHasSentFlagCalls[r].add(u):this.distinctIdHasSentFlagCalls[r]=new Set([u]),this.capture({distinctId:r,event:"$feature_flag_called",properties:a,groups:o,disableGeoip:s}))}_getFeatureFlagEvaluationsHost(){return this._featureFlagEvaluationsHost||(this._featureFlagEvaluationsHost={captureFlagCalledEventIfNeeded:t=>this._captureFlagCalledEventIfNeeded(t),logWarning:t=>{this.options.featureFlagsLogWarnings!==!1&&console.warn(`[PostHog] ${t}`)}}),this._featureFlagEvaluationsHost}groupIdentify({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){this._sendPreparedEvent("capture",{distinctId:i||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{}},disableGeoip:o},!1,{includeContextProperties:!1})}async groupIdentifyImmediate({groupType:t,groupKey:r,properties:n,distinctId:i,disableGeoip:o}){await this._sendPreparedEvent("capture",{distinctId:i||`$${t}_${r}`,event:"$groupidentify",properties:{$group_type:t,$group_key:r,$group_set:n||{}},disableGeoip:o},!0,{includeContextProperties:!1})}async reloadFeatureFlags(){await this.featureFlagsPoller?.loadFeatureFlags(!0)}overrideFeatureFlags(t){let r=n=>Object.fromEntries(n.map(i=>[i,!0]));if(t===!1){this._flagOverrides=void 0,this._payloadOverrides=void 0;return}if(Array.isArray(t)){this._flagOverrides=r(t);return}if(this._isFeatureFlagOverrideOptions(t)){"flags"in t&&(t.flags===!1?this._flagOverrides=void 0:Array.isArray(t.flags)?this._flagOverrides=r(t.flags):t.flags!==void 0&&(this._flagOverrides={...t.flags})),"payloads"in t&&(t.payloads===!1?this._payloadOverrides=void 0:t.payloads!==void 0&&(this._payloadOverrides={...t.payloads}));return}this._flagOverrides={...t}}_isFeatureFlagOverrideOptions(t){if(typeof t!="object"||t===null||Array.isArray(t))return!1;let r=t;if("flags"in r){let n=r.flags;if(n===!1||Array.isArray(n)||typeof n=="object"&&n!==null)return!0}if("payloads"in r){let n=r.payloads;if(n===!1||typeof n=="object"&&n!==null)return!0}return!1}withContext(t,r,n){return this.context?this.context.run(t,r,n):r()}getContext(){return this.context?.get()}enterContext(t,r){this.context?.enter(t,r)}async _shutdown(t){let r=Date.now()+(t??3e4),n=this._consumeWaitUntilCycle();await this.featureFlagsPoller?.stopPoller(t),this.errorTracking.shutdown(),this._metrics&&(await p1e(this._metrics.flush().catch(()=>{}),Math.max(0,r-Date.now())),this._metrics.reset()),this._traces&&(await p1e(this._traces.flush().catch(()=>{}),Math.max(0,r-Date.now())),this._traces.reset());try{return await super._shutdown(Math.max(0,r-Date.now()))}finally{this.distinctIdHasSentFlagCalls={},n?.()}}async _requestRemoteConfigPayload(t){if(this.disabled||!this.apiKey||!this.options.personalApiKey)return;let r=`${this.host}/api/projects/@current/feature_flags/${t}/remote_config?token=${encodeURIComponent(this.apiKey)}`,n={method:"GET",headers:{...this.getCustomHeaders(),"Content-Type":"application/json",Authorization:`Bearer ${this.options.personalApiKey}`}},i=null;if(this.options.requestTimeout&&typeof this.options.requestTimeout=="number"){let o=new AbortController;i=zN(()=>{o.abort()},this.options.requestTimeout),n.signal=o.signal}try{return await this.fetch(r,n)}catch(o){this._events.emit("error",o);return}finally{i&&clearTimeout(i)}}extractPropertiesFromEvent(t,r){if(!t)return{personProperties:{},groupProperties:{}};let n={},i={};for(let[o,s]of Object.entries(t))if(Qil(s)&&r&&o in r){let a={};for(let[c,u]of Object.entries(s))a[String(c)]=String(u);i[String(o)]=a}else n[String(o)]=String(s);return{personProperties:n,groupProperties:i}}async getFeatureFlagsForEvent(t,r,n,i){if(this.disabled||!this.apiKey)return void this._logger.warn("The client is disabled");let o=i?.personProperties||{},s=i?.groupProperties||{},a=i?.flagKeys;if(i?.onlyEvaluateLocally??this.options.strictLocalEvaluation??!1)if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}else return{};if((this.featureFlagsPoller?.featureFlags?.length||0)>0){let u={};for(let[l,p]of Object.entries(r||{}))u[l]=String(p);return await this.getAllFlags(t,{groups:u,personProperties:o,groupProperties:s,disableGeoip:n,onlyEvaluateLocally:!0,flagKeys:a})}return(await super.getFeatureFlagsStateless(t,r,o,s,n)).flags}addLocalPersonAndGroupProperties(t,r,n,i){let o={...n||{}},s={};if(r)for(let a of Object.keys(r))s[a]={$group_key:r[a],...i?.[a]||{}};return{allPersonProperties:o,allGroupProperties:s}}personPropertiesForLocalEvaluation(t,r){return{distinct_id:t,...r||{}}}createFeatureFlagEvaluationContext(t,r,n,i){return{distinctId:t,groups:r||{},personProperties:n||{},groupProperties:i||{},evaluationCache:{}}}captureException(t,r,n,i,o){if(!E5e.isPreviouslyCapturedError(t)){let s=new Error("PostHog syntheticException");this.addPendingPromise(E5e.buildEventMessage(this.getErrorPropertiesBuilder(),t,{syntheticException:s},r,n).then(a=>this._capturePreparedEvent({...a,uuid:i,flags:o},!1)))}}async captureExceptionImmediate(t,r,n,i){if(!E5e.isPreviouslyCapturedError(t)){let o=new Error("PostHog syntheticException");return this.addPendingPromise(E5e.buildEventMessage(this.getErrorPropertiesBuilder(),t,{syntheticException:o},r,n).then(s=>this.captureImmediate({...s,flags:i})))}}async prepareEventMessage(t){return this._prepareEventMessage(t)}async _prepareEventMessage(t,r={}){let{distinctId:n,event:i,properties:o,groups:s,flags:a,sendFeatureFlags:c,timestamp:u,disableGeoip:l,uuid:p}=t,d=this.context?.get(),f=r.includeContextProperties??!0,m=n||d?.distinctId,g=f?{...this.props,...d?.properties||{},...o||{}}:{...o||{}};m||(m=jN(),g.$process_person_profile=!1),f&&d?.sessionId&&!g.$session_id&&(g.$session_id=d.sessionId);let A=this._shouldSendMinimalFlagCalledEvent(i,g)?YHt(g):g,y=this._runBeforeSend({distinctId:m,event:i,properties:A,groups:s,flags:a,sendFeatureFlags:c,timestamp:u,disableGeoip:l,uuid:p});if(!y)return Promise.reject(null);let I=await Promise.resolve().then(async()=>{if(a)return c&&console.warn("[PostHog] Both `flags` and `sendFeatureFlags` were passed to capture(); using `flags` and ignoring `sendFeatureFlags`."),a._getEventProperties();if(c){Jin("sendFeatureFlags","`sendFeatureFlags` is deprecated and will be removed in a future major version. Pass a `flags` snapshot from `posthog.evaluateFlags(...)` instead \u2014 it avoids a second `/flags` request per capture and guarantees the event carries the exact flag values your code branched on.");let x=typeof c=="object"?c:void 0,v=await this.getFeatureFlagsForEvent(y.distinctId,s,l,x);return klh(v)}return{}}).catch(()=>({})).then(x=>{let v=y.groups||s;return{...x,...y.properties||{},...v!==void 0&&Object.keys(v).length>0?{$groups:v}:{}}});return y.event==="$pageview"&&this.options.__preview_capture_bot_pageviews&&typeof I.$raw_user_agent=="string"&&Lil(I.$raw_user_agent,this.options.custom_blocked_useragents||[])&&(y.event="$bot_pageview",I.$browser_type="bot"),{distinctId:y.distinctId,event:y.event,properties:I,options:{timestamp:y.timestamp,disableGeoip:y.disableGeoip,uuid:y.uuid}}}_runBeforeSend(t){let r=this.options.before_send;if(!r)return t;let n=Array.isArray(r)?r:[r],i=t;for(let o of n)try{if(i=o(i),!i)return this._logger.info(`Event '${t.event}' was rejected in beforeSend function`),null;if(!i.properties||Object.keys(i.properties).length===0){let s=`Event '${i.event}' has no properties after beforeSend function, this is likely an error.`;this._logger.warn(s)}}catch(s){return this._logger.error(`Error in before_send function for event '${t.event}':`,s),null}return i}};var Qsl=require("async_hooks"),Xin=class{constructor(){this.storage=new Qsl.AsyncLocalStorage}get(){return this.storage.getStore()}run(t,r,n){return this.storage.run(this.resolve(t,n),r)}enter(t,r){this.storage.enterWith(this.resolve(t,r))}resolve(t,r){if(r?.fresh===!0)return t;let n=this.get()||{};return{distinctId:t.distinctId??n.distinctId,sessionId:t.sessionId??n.sessionId,properties:{...n.properties||{},...t.properties||{}}}}};var Msl=require("async_hooks"),Zin=class{active(){return this._storage.getStore()}with(t,r){return this._storage.run(t,r)}constructor(){this._storage=new Msl.AsyncLocalStorage}};var Lsl=require("zlib"),_sl=require("util"),Flh=(0,_sl.promisify)(Lsl.gzip);async function Usl(e,t=!0){try{let r=await Flh(e);return new Uint8Array(r)}catch(r){return t&&console.error("Failed to gzip compress data",r),null}}var $in=require("os");function Vsl(){let e,t;try{e=(0,$in.platform)(),t=(0,$in.release)()}catch{}return jXo(e,t)}var Gsl="posthog-node";function Nlh(e,{organization:t,projectId:r,prefix:n,severityAllowList:i=["error"],sendExceptionsToPostHog:o=!0}={}){return s=>{if(!(i==="*"||i.includes(s.level)))return s;s.tags||(s.tags={});let c=s.tags[rZo.POSTHOG_ID_TAG];if(c===void 0)return s;let u=e.options.host??"https://us.i.posthog.com",l=new URL(`/project/${e.apiKey}/person/${c}`,u).toString();s.tags["PostHog Person URL"]=l;let p=s.exception?.values||[],d=p.map(g=>({...g,stacktrace:g.stacktrace?{...g.stacktrace,type:"raw",frames:(g.stacktrace.frames||[]).map(A=>({...A,platform:"node:javascript"}))}:void 0})),f={$exception_message:p[0]?.value||s.message,$exception_type:p[0]?.type,$exception_level:s.level,$exception_list:d,$sentry_event_id:s.event_id,$sentry_exception:s.exception,$sentry_exception_message:p[0]?.value||s.message,$sentry_exception_type:p[0]?.type,$sentry_tags:s.tags},m=nO.getInjectedReleaseId();return m&&(f.$release_id=m),t&&r&&(f.$sentry_url=(n||"https://sentry.io/organizations/")+t+"/issues/?project="+r+"&query="+s.event_id),o&&e.capture({event:"$exception",distinctId:c,properties:f}),s}}var rZo=class{static{this.POSTHOG_ID_TAG="posthog_distinct_id"}constructor(t,r,n,i,o){this.name=Gsl,this.name=Gsl,this.setupOnce=function(s,a){let c=a()?.getClient()?.getDsn()?.projectId;s(Nlh(t,{organization:r,projectId:c,prefix:n,severityAllowList:i,sendExceptionsToPostHog:o??!0}))}}};var yne=class extends Yin{getLibraryId(){return"posthog-node"}compressPayload(t){return Usl(t,this.isDebug)}initializeContext(){return new Xin}initializeSpanContextManager(){return new Zin}hostResourceAttributes(){return Vsl()}createErrorPropertiesBuilder(){return new nO.ErrorPropertiesBuilder([new nO.EventCoercer,new nO.ErrorCoercer,new nO.ObjectCoercer,new nO.StringCoercer,new nO.PrimitiveCoercer],nO.createStackParser("node:javascript",nO.nodeStackLineParser),[kil(),t=>gsl(t,void 0,this._logger),Esl()])}};function qsl(e){return e==null||!e.enabled?!1:e.variant==null||e.variant==="true"}var eon=class{isEnabled(){return Promise.resolve(!1)}getCachedValue(){}flush(){return Promise.resolve()}},jlh="feature_flag_evaluated",zlh=3e3,Qlh=3e3,ton=class{evaluator;environment;sendFeatureFlagEvents;pending=new Map;resolved=new Map;constructor({environment:t,sendFeatureFlagEvents:r,posthogApiKey:n,evaluator:i}){this.environment=t,this.sendFeatureFlagEvents=r,this.evaluator=i??new yne(n??"",{featureFlagsRequestTimeoutMs:zlh,isServer:!1})}isEnabled(t,r){let n=Wsl(t,r),i=this.pending.get(n);if(i!=null)return i;let o=this.evaluateAndRemember(t,r,n);return this.pending.set(n,o),o}async evaluateAndRemember(t,r,n){let i=await this.evaluate(t,r);return this.resolved.set(n,i),i}getCachedValue(t,r){return this.resolved.get(Wsl(t,r))}async flush(){if(!this.sendFeatureFlagEvents)return;let t;try{await Promise.race([this.flushAfterPendingEvaluations(),new Promise(r=>{t=setTimeout(r,Qlh),t.unref()})])}catch{}finally{clearTimeout(t)}}async flushAfterPendingEvaluations(){await Promise.allSettled(this.pending.values()),await this.evaluator.flush()}async evaluate(t,r){let{org:n}=r,i=Llh(r,this.environment),o;try{o=await this.evaluator.getFeatureFlagResult(t,nZo(n),{personProperties:i,groups:{organization:n},groupProperties:{organization:i},sendFeatureFlagEvents:!1})}catch{return!1}return this.sendFeatureFlagEvents&&this.captureFlagUsage({flag:t,org:n,result:o,properties:i}),qsl(o)}captureFlagUsage({flag:t,org:r,result:n,properties:i}){let o=Mlh(n),s={...i,...n?.reason!=null?{$feature_flag_reason:n.reason}:{},version:"5.170.1"};this.tryCapture({distinctId:nZo(r),event:"$feature_flag_called",groups:{organization:r},properties:{...s,$feature_flag:t,$feature_flag_response:o,[`$feature/${t}`]:o}}),this.tryCapture({distinctId:nZo(r),event:jlh,groups:{organization:r},properties:{...s,flag:t,response:o,enabled:qsl(n)}})}tryCapture(t){try{this.evaluator.capture(t)}catch{}}};function Mlh(e){if(e!=null)return e.enabled?e.variant??!0:!1}function nZo(e){return`org:${e}`}function Llh({org:e,generator:t,language:r},n){return{org:e,environment:n,...t!=null?{generator:t}:{},...r!=null?{language:r}:{}}}function Wsl(e,{org:t,generator:r,language:n}){return JSON.stringify([e,t,r??null,n??null])}var ron;function non(){return ron==null&&(ron=_lh()),ron}async function iZo(){await ron?.flush()}function _lh(){let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";return e==null||e.trim().length===0?new eon:new ton({posthogApiKey:e,environment:jJ(),sendFeatureFlagEvents:oin()})}var ion=class{posthog;constructor({posthogApiKey:t}){this.posthog=new yne(t,{isServer:!1})}async identify(){}async sendEvent(t){t.orgId!=null&&this.posthog.capture({distinctId:t.orgId,event:"CLI",properties:{...t,...t.properties,version:"5.170.1",usingAccessToken:!0,cliReleaseEnvironment:jJ(),...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:jJ()}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}};var gKt=class{async sendEvent(){}async sendAutomationEvent(){}async identify(){}async flush(){}};kd();er();var Rft=require("fs/promises"),Hsl=require("os"),Ksl=require("path");iVe();var Ulh="id",Vlh=".fern",AKt=class{posthog;userId;token;constructor({token:t,posthogApiKey:r}){this.posthog=new yne(r,{isServer:!1}),this.userId=t==null?void 0:J9o(t),this.token=t}async identify(){this.userId!=null&&this.posthog.alias({distinctId:this.userId,alias:await this.getPersistedDistinctId()})}async sendEvent(t){let r=await this.getUserEmail();this.posthog.capture({distinctId:this.userId??await this.getPersistedDistinctId(),event:"CLI",properties:{version:"5.170.1",...t,...t.properties,usingAccessToken:!1,cliReleaseEnvironment:jJ(),agent:oHr(),...r!=null?{userEmail:r}:{},...Ppe()}})}sendAutomationEvent(t){this.posthog.capture({distinctId:t.distinctId,event:t.event,properties:{...t.properties,cliReleaseEnvironment:jJ()}})}async flush(){try{await Promise.race([this.posthog.flush(),new Promise(t=>setTimeout(t,3e3))])}catch{}}userEmail;async getUserEmail(){if(this.userEmail!==null){if(this.userEmail!=null)return this.userEmail;if(this.token==null){this.userEmail=null;return}try{let t=await Kf({token:this.token.value}).user.getMyself();if(t.ok&&t.body.email!=null)return this.userEmail=t.body.email,this.userEmail}catch{}this.userEmail=null}}persistedDistinctId;async getPersistedDistinctId(){if(this.persistedDistinctId==null){let t=WS(),r=De(_t.of((0,Hsl.homedir)()),be.of(Vlh),be.of(Ulh));try{await Ut(r)?this.persistedDistinctId=(await(0,Rft.readFile)(r)).toString():(await(0,Rft.mkdir)((0,Ksl.dirname)(r),{recursive:!0}),await(0,Rft.writeFile)(r,t),this.persistedDistinctId=t)}catch{this.persistedDistinctId=t}}return this.persistedDistinctId}};var oZo;async function yKt(){return oZo==null&&(oZo=await Glh()),oZo}async function Glh(){try{let e="phc_yQgAEdJJkVpI24NdSRID2mor1x1leRpDoC9yZ9mfXal";if(e==null||!oin())return new gKt;let t=await Ult();return t!=null?new AKt({token:t,posthogApiKey:e}):await EM()!=null?new ion({posthogApiKey:e}):new AKt({token:void 0,posthogApiKey:e})}catch{return new gKt}}On();Ct();kt();g8();var bKt=Ae(require("process"),1);sZe();var Xsl=Ae(w3o(),1),Zsl=Ae(Ysl(),1);function iO(e,t={}){if(typeof e!="string"||e.length===0||(t={ambiguousIsNarrow:!0,...t},e=pH(e),e.length===0))return 0;e=e.replace((0,Zsl.default)()," ");let r=t.ambiguousIsNarrow?1:2,n=0;for(let i of e){let o=i.codePointAt(0);if(o<=31||o>=127&&o<=159||o>=768&&o<=879)continue;switch(Xsl.default.eastAsianWidth(i)){case"F":case"W":n+=2;break;case"A":n+=r;break;default:n+=1}}return n}On();function oon(e){let t=0;for(let r of e.split(`
3465
3465
  `))t=Math.max(t,iO(r));return t}var yal=Ae(aZo(),1);var Wlh=/[\p{Lu}]/u,Hlh=/[\p{Ll}]/u,tal=/^[\p{Lu}](?![\p{Lu}])/gu,ial=/([\p{Alpha}\p{N}_]|$)/u,cZo=/[_.\- ]+/,Klh=new RegExp("^"+cZo.source),ral=new RegExp(cZo.source+ial.source,"gu"),nal=new RegExp("\\d+"+ial.source,"gu"),Jlh=(e,t,r,n)=>{let i=!1,o=!1,s=!1,a=!1;for(let c=0;c<e.length;c++){let u=e[c];a=c>2?e[c-3]==="-":!0,i&&Wlh.test(u)?(e=e.slice(0,c)+"-"+e.slice(c),i=!1,s=o,o=!0,c++):o&&s&&Hlh.test(u)&&(!a||n)?(e=e.slice(0,c-1)+"-"+e.slice(c-1),s=o,o=!1,i=!0):(i=t(u)===u&&r(u)!==u,s=o,o=r(u)===u&&t(u)!==u)}return e},Ylh=(e,t)=>(tal.lastIndex=0,e.replace(tal,r=>t(r))),Xlh=(e,t)=>(ral.lastIndex=0,nal.lastIndex=0,e.replace(ral,(r,n)=>t(n)).replace(nal,r=>t(r)));function uZo(e,t){if(!(typeof e=="string"||Array.isArray(e)))throw new TypeError("Expected the input to be `string | string[]`");if(t={pascalCase:!1,preserveConsecutiveUppercase:!1,...t},Array.isArray(e)?e=e.map(o=>o.trim()).filter(o=>o.length).join("-"):e=e.trim(),e.length===0)return"";let r=t.locale===!1?o=>o.toLowerCase():o=>o.toLocaleLowerCase(t.locale),n=t.locale===!1?o=>o.toUpperCase():o=>o.toLocaleUpperCase(t.locale);return e.length===1?cZo.test(e)?"":t.pascalCase?n(e):r(e):(e!==r(e)&&(e=Jlh(e,r,n,t.preserveConsecutiveUppercase)),e=e.replace(Klh,""),e=t.preserveConsecutiveUppercase?Ylh(e,r):r(e),t.pascalCase&&(e=n(e.charAt(0))+e.slice(1)),Xlh(e,n))}var dZo=Ae(sal(),1);sZe();var aal=(e=0)=>t=>`\x1B[${t+e}m`,cal=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,ual=(e=0)=>(t,r,n)=>`\x1B[${38+e};2;${t};${r};${n}m`,vE={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},tYv=Object.keys(vE.modifier),tph=Object.keys(vE.color),rph=Object.keys(vE.bgColor),rYv=[...tph,...rph];function nph(){let e=new Map;for(let[t,r]of Object.entries(vE)){for(let[n,i]of Object.entries(r))vE[n]={open:`\x1B[${i[0]}m`,close:`\x1B[${i[1]}m`},r[n]=vE[n],e.set(i[0],i[1]);Object.defineProperty(vE,t,{value:r,enumerable:!1})}return Object.defineProperty(vE,"codes",{value:e,enumerable:!1}),vE.color.close="\x1B[39m",vE.bgColor.close="\x1B[49m",vE.color.ansi=aal(),vE.color.ansi256=cal(),vE.color.ansi16m=ual(),vE.bgColor.ansi=aal(10),vE.bgColor.ansi256=cal(10),vE.bgColor.ansi16m=ual(10),Object.defineProperties(vE,{rgbToAnsi256:{value(t,r,n){return t===r&&r===n?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(o=>o+o).join(""));let i=Number.parseInt(n,16);return[i>>16&255,i>>8&255,i&255]},enumerable:!1},hexToAnsi256:{value:t=>vE.rgbToAnsi256(...vE.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,n,i;if(t>=232)r=((t-232)*10+8)/255,n=r,i=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,n=Math.floor(a/6)/5,i=a%6/5}let o=Math.max(r,n,i)*2;if(o===0)return 30;let s=30+(Math.round(i)<<2|Math.round(n)<<1|Math.round(r));return o===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,n)=>vE.ansi256ToAnsi(vE.rgbToAnsi256(t,r,n)),enumerable:!1},hexToAnsi:{value:t=>vE.ansi256ToAnsi(vE.hexToAnsi256(t)),enumerable:!1}}),vE}var iph=nph(),lal=iph;var son=new Set(["\x1B","\x9B"]),oph=39,pZo="\x07",dal="[",sph="]",mal="m",fZo=`${sph}8;;`,pal=e=>`${son.values().next().value}${dal}${e}${mal}`,fal=e=>`${son.values().next().value}${fZo}${e}${pZo}`,aph=e=>e.split(" ").map(t=>iO(t)),lZo=(e,t,r)=>{let n=[...t],i=!1,o=!1,s=iO(pH(e[e.length-1]));for(let[a,c]of n.entries()){let u=iO(c);if(s+u<=r?e[e.length-1]+=c:(e.push(c),s=0),son.has(c)&&(i=!0,o=n.slice(a+1).join("").startsWith(fZo)),i){o?c===pZo&&(i=!1,o=!1):c===mal&&(i=!1);continue}s+=u,s===r&&a<n.length-1&&(e.push(""),s=0)}!s&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},cph=e=>{let t=e.split(" "),r=t.length;for(;r>0&&!(iO(t[r-1])>0);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},uph=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",i,o,s=aph(e),a=[""];for(let[u,l]of e.split(" ").entries()){r.trim!==!1&&(a[a.length-1]=a[a.length-1].trimStart());let p=iO(a[a.length-1]);if(u!==0&&(p>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),p=0),(p>0||r.trim===!1)&&(a[a.length-1]+=" ",p++)),r.hard&&s[u]>t){let d=t-p,f=1+Math.floor((s[u]-d-1)/t);Math.floor((s[u]-1)/t)<f&&a.push(""),lZo(a,l,t);continue}if(p+s[u]>t&&p>0&&s[u]>0){if(r.wordWrap===!1&&p<t){lZo(a,l,t);continue}a.push("")}if(p+s[u]>t&&r.wordWrap===!1){lZo(a,l,t);continue}a[a.length-1]+=l}r.trim!==!1&&(a=a.map(u=>cph(u)));let c=[...a.join(`
3466
3466
  `)];for(let[u,l]of c.entries()){if(n+=l,son.has(l)){let{groups:d}=new RegExp(`(?:\\${dal}(?<code>\\d+)m|\\${fZo}(?<uri>.*)${pZo})`).exec(c.slice(u).join(""))||{groups:{}};if(d.code!==void 0){let f=Number.parseFloat(d.code);i=f===oph?void 0:f}else d.uri!==void 0&&(o=d.uri.length===0?void 0:d.uri)}let p=lal.codes.get(Number(i));c[u+1]===`
3467
3467
  `?(o&&(n+=fal("")),i&&p&&(n+=pal(p))):l===`
@@ -4091,7 +4091,7 @@ let credentials = Data("${r.username}:${r.password}".utf8).base64EncodedString()
4091
4091
  `)),Object.keys(l).length>0&&(s.css=l)}let c;if(i!=null){let{inline:u,...l}=i;u!=null&&u.length>0&&(c=u.join(`
4092
4092
  `)),Object.keys(l).length>0&&(s.js=l)}return{stripped:s,header:t!=null&&t.length>0?t:void 0,footer:r!=null&&r.length>0?r:void 0,cssInline:a,jsInline:c}}var Oql=require("fs/promises");function c9e(e){return e.outputMode._visit({downloadFiles:()=>{},github:t=>`https://github.com/${t.owner}/${t.repo}`,githubV2:t=>t._visit({commitAndRelease:r=>`https://github.com/${r.owner}/${r.repo}`,pullRequest:r=>`https://github.com/${r.owner}/${r.repo}`,push:r=>`https://github.com/${r.owner}/${r.repo}`,_other:()=>{}}),publish:()=>{},publishV2:()=>{},_other:()=>{}})}async function u9e(e,t,r){let n;try{n=await(0,Oql.readFile)(e,"utf8")}catch{return}let i=new Set([t]),o="fernapi/";t.startsWith(o)&&i.add(t.slice(o.length));let s=n.split(`
4093
4093
  `),a=0,c=/^\s*-\s+name:\s*["']?([A-Za-z0-9/_.\-@]+)["']?\s*(#.*)?$/;for(let u=0;u<s.length;u++){let l=s[u];if(l==null)continue;let p=l.match(c);if(!(p==null||p[1]==null)&&i.has(p[1])){if(a===r)return u+1;a++}}}var a9e=class{#e=new WeakMap;#t=new Map;recordOccurrences(t){for(let r of t){let n=this.#t.get(r.name)??0;this.#e.set(r,n),this.#t.set(r.name,n+1)}}lookup(t){return this.#e.get(t)??0}};kt();var Rql=Ae(_y(),1),x0i=new Map;async function Dql({origin:e,organization:t,token:r,generatorId:n,language:i}){let o=JSON.stringify([e,t,r.value,n,i]),s=x0i.get(o);if(s!=null)return s;let a=Vvs({origin:e,organization:t,token:r,generatorId:n,language:i,currentVersion:"latest",includeMajor:!0});x0i.set(o,a);try{return await a}finally{x0i.get(o)===a&&x0i.delete(o)}}async function Vvs({origin:e,organization:t,token:r,generatorId:n,language:i,currentVersion:o,includeMajor:s}){let a=new URL("v1/fern/generator-versions/discover",`${e.replace(/\/+$/,"")}/`),c=`${n}@${o}`,u;try{u=await fetch(a,{method:"POST",headers:{Authorization:`Bearer ${r.value}`,"X-Fern-Organization-Id":t,"content-type":"application/json"},body:JSON.stringify({targets:[{targetId:"generator",generatorId:n,language:i,currentVersion:o,includeMajor:s}]})})}catch(l){throw new Error(`SDK Gen API version discovery failed for ${c} because the API could not be reached. Verify FERN_SDK_GEN_API_ORIGIN and the selected environment.`,{cause:l})}if(!u.ok)throw new Error(`SDK Gen API version discovery failed for ${c} with HTTP ${u.status}. Verify FERN_SDK_GEN_API_ORIGIN and the selected environment.`);return xag(await u.json())}function xag(e){if(!Bql(e,["targets"])||!Array.isArray(e.targets)||e.targets.length!==1)throw new Error("SDK Gen API returned an invalid generator version discovery response");let t=e.targets[0];if(!kql(t)||t.targetId!=="generator")throw new Error("SDK Gen API returned an invalid generator version discovery target");if(t.state==="UNAVAILABLE"){if(!Bql(t,["targetId","state","reason"])||t.reason!=="IDENTITY_UNAVAILABLE"&&t.reason!=="LANGUAGE_MISMATCH"&&t.reason!=="VERSION_UNAVAILABLE")throw new Error("SDK Gen API returned an invalid unavailable generator version result");return{targetId:"generator",state:"UNAVAILABLE",reason:t.reason}}if(t.state!=="RESOLVED")throw new Error("SDK Gen API returned an unknown generator version discovery state");if(!Fql(t,["targetId","state","compatibleVersion","withheldMajorVersion"]))throw new Error("SDK Gen API returned an invalid resolved generator version result");let r=Pql(t,"compatibleVersion"),n=Pql(t,"withheldMajorVersion");if(r==null&&n==null)throw new Error("SDK Gen API returned an empty generator version discovery result");return{targetId:"generator",state:"RESOLVED",...r==null?{}:{compatibleVersion:r},...n==null?{}:{withheldMajorVersion:n}}}function Pql(e,t){if(!Object.hasOwn(e,t))return;let r=e[t];if(typeof r!="string"||Rql.default.valid(r)!==r)throw new T({message:`SDK Gen API returned invalid ${t} ${JSON.stringify(r)}. Expected an exact semantic version such as 1.2.3.`,code:T.Code.VersionError});return r}function kql(e){return typeof e=="object"&&e!=null&&!Array.isArray(e)}function Bql(e,t){return kql(e)&&Object.keys(e).length===t.length&&Fql(e,t)}function Fql(e,t){let r=new Set(t);return Object.keys(e).every(n=>r.has(n))}var Ntr=require("os"),Nql=require("v8"),W2e=require("worker_threads"),O0i=require("zlib");Uy();kt();SY();MN();gp();function w0i({workspace:e,generators:t,context:r}){return t.map(n=>{let i=fA({workspace:e,generationLanguage:n.language,keywords:void 0,smartCasing:n.smartCasing,smartCasingDigitWordBoundary:n.smartCasingDigitWordBoundary,exampleGeneration:{disabled:!0,skipAutogenerationIfManualExamplesExist:!0,skipErrorAutogenerationIfManualErrorExamplesExist:!0},audiences:{type:"all"},readme:void 0,packageName:n.packageName,version:void 0,context:r,sourceResolver:new tg(r,e),dynamicGeneratorConfig:n.dynamicGeneratorConfig}),o=cUe({ir:i,disableExamples:!0,smartCasing:n.smartCasing,smartCasingDigitWordBoundary:n.smartCasingDigitWordBoundary,generationLanguage:n.language,generatorConfig:n.dynamicGeneratorConfig});return[n.language,o]})}var jql="fernDynamicIrWorker",zql;function Gvs(e){zql=e}function qvs(){return!W2e.isMainThread&&W2e.workerData?.[jql]===!0}function Qql(e){return JSON.parse((0,O0i.gunzipSync)(e).toString("utf8"))}function Wvs(){let e=W2e.parentPort;e?.on("message",t=>{let r=[],n=aIe({logger:oI((o,...s)=>r.push([o,s]))}),i;try{let o=Sag(t.workspace),s=w0i({workspace:o,generators:t.generators,context:n});i={id:t.id,ok:!0,results:s.map(([a,c])=>[a,c==null?void 0:(0,O0i.gzipSync)(JSON.stringify(c),{level:1})]),logs:r}}catch(o){i={id:t.id,ok:!1,error:o instanceof Error?o.stack??o.message:String(o)}}e.postMessage(i)})}function wag(e){return{args:S0i({generatorsConfiguration:e.generatorsConfiguration,workspaceName:e.workspaceName,cliVersion:e.cliVersion,absoluteFilePath:e.absoluteFilePath,changelog:e.changelog,dependenciesConfiguration:{dependencies:{}},sources:e.sources}),definition:e.definition,sourceDerivedGlobalHeaderNames:e.definition.sourceDerivedGlobalHeaderNames}}function Sag({args:e,definition:t,sourceDerivedGlobalHeaderNames:r}){return r!=null&&Object.defineProperty(t,"sourceDerivedGlobalHeaderNames",{configurable:!0,enumerable:!1,value:r,writable:!0}),new bD({...e,definition:t})}function S0i(e,t=new Map){if(e==null||typeof e!="object")return e;if(t.has(e))return t.get(e);if(Array.isArray(e)){let n=[];t.set(e,n);for(let i of e)n.push(typeof i=="function"?void 0:S0i(i,t));return n}let r={};t.set(e,r);for(let[n,i]of Object.entries(e))typeof i!="function"&&(r[n]=S0i(i,t));return r}var Mql=1024**3,Tag=1536,Oag=8*Mql,Pag=1.5*Mql;function Bag(){let e=process.constrainedMemory?.()??0;return e>0?Math.min(e,(0,Ntr.totalmem)()):(0,Ntr.totalmem)()}function Rag({registrationConcurrency:e,cores:t=(0,Ntr.availableParallelism)(),memoryBytes:r=Bag()}){if(e<=1)return 0;let n=Math.floor((r-Oag)/Pag);return Math.max(0,Math.min(e,t-1,n))}var T0i=class e{size;createWorker;idle=[];running=new Map;queue=[];workerCount=0;nextId=0;terminated=!1;constructor(t,r){this.size=t,this.createWorker=r}static create({registrationConcurrency:t,context:r}){let n=Rag({registrationConcurrency:t}),i=zql;if(n===0||i==null)return;r.logger.debug(`Generating dynamic snippet IRs on up to ${n} worker thread(s)`);let o=Math.min(Tag,Math.floor((0,Nql.getHeapStatistics)().heap_size_limit/1024/1024));return new e(n,()=>new W2e.Worker(i,{workerData:{[jql]:!0},execArgv:process.execArgv.filter(s=>s==="--enable-source-maps"),resourceLimits:{maxOldGenerationSizeMb:o},stdout:!1,stderr:!1}))}get threadCount(){return this.workerCount}get isTerminated(){return this.terminated}run(t,r){if(this.terminated)return Promise.reject(new Error("Dynamic IR worker pool was terminated"));let n;try{n={id:this.nextId++,workspace:wag(t),generators:S0i(r)}}catch(i){return Promise.reject(i)}return new Promise((i,o)=>{this.queue.push({request:n,resolve:i,reject:o}),this.dispatch()})}async terminate(){this.terminated=!0;for(let r of this.queue.splice(0))r.reject(new Error("Dynamic IR worker pool was terminated"));let t=[...this.idle.splice(0),...this.running.keys()];await Promise.all(t.map(r=>r.terminate()))}dispatch(){for(;this.queue.length>0;){let t=this.idle.pop()??(this.workerCount<this.size?this.spawn():void 0);if(t==null)return;let r=this.queue.shift();if(r==null){this.idle.push(t);return}try{t.postMessage(r.request),this.running.set(t,r),t.ref()}catch(n){this.idle.push(t),r.reject(n instanceof Error?n:new Error(String(n)))}}}spawn(){let t=this.createWorker();this.workerCount++,t.unref();let r=!1;t.on("message",i=>{if(r)return;let o=this.running.get(t);this.running.delete(t),t.unref(),this.idle.push(t),o!=null&&(i.ok?o.resolve({results:i.results,logs:i.logs}):o.reject(new Error(i.error))),this.dispatch()});let n=i=>{r||(r=!0,this.removeWorker(t),this.running.get(t)?.reject(i),this.running.delete(t),this.terminated||this.dispatch())};return t.on("error",n),t.on("exit",i=>n(new Error(`Dynamic IR worker exited with code ${i}`))),t}removeWorker(t){let r=this.idle.indexOf(t);r!==-1&&this.idle.splice(r,1),this.workerCount--}};Pc();er();var wTt=Ae(fye(),1);kt();g8();var ece=require("crypto"),PZl=Ae(rut(),1),BZl=require("zlib");var N1s="Direct RubyGems publishing is not supported. Use output.delivery: github with publish.registry: rubygems so the gem is published by the GitHub Actions workflow generated in that repository.",Qgg=/^\$\{([A-Za-z_][A-Za-z0-9_]*)\}$/;function AEi(e){return e==null?void 0:Qgg.exec(e)?.[1]}function j1s(e,t,r){if(r!=null&&e.registry!==r)throw new Error(`Direct publication credential registry ${e.registry} does not match requested registry ${r}`);switch(t!=null&&OWl(t),e.registry){case"npm":case"crates":return Y2e(e.registry,"token",e.token),{registry:e.registry,token:e.token};case"pypi":return Y2e("pypi","username",e.username),Y2e("pypi","password",e.password),{registry:"pypi",username:e.username,password:e.password};case"maven":{Y2e("maven","username",e.username),Y2e("maven","password",e.password);let n=Mgg(e.signature);return{registry:"maven",username:e.username,password:e.password,...n==null?{}:{signature:n}}}case"rubygems":throw new Error(N1s);case"nuget":case"go":case"composer":case"postman":throw new Error(`sdk-gen-api does not support direct ${e.registry} registry publication`)}}function TWl(e){OWl(e)}function yEi(e){let t=e.flatMap(n=>{if(!n.publicationRequested)return[];if(n.publishCredential==null){if(n.credentialsRequired)throw new Error("SDK Config direct publication is missing its credential configuration");return[]}return[j1s(n.publishCredential,n.publishUrl,n.publishRegistry)]});if(t.length>64)throw new Error("sdk-gen-api supports at most 64 direct publish credential targets");let r=Buffer.from(JSON.stringify({schemaVersion:"fern-publish-credentials/v1",credentialSetId:"00000000-0000-8000-8000-000000000000",targets:t.map(n=>({targetId:"0".repeat(20),...n}))}));if(r.length>65536)throw new Error(`sdk-gen-api publish credentials file is ${Lgg(r.length)}, exceeding the 64 KiB limit`)}function Mgg(e){if(e!=null)return Y2e("maven","signature.keyId",e.keyId),Y2e("maven","signature.password",e.password),Y2e("maven","signature.secretKey",e.secretKey),{keyId:e.keyId,password:e.password,secretKey:e.secretKey}}function Y2e(e,t,r){if(r==null||r.trim().length===0)throw new Error(`Direct ${e} publication through sdk-gen-api requires ${t}`);if(r.trim()==="OIDC"||r.trim()==="<USE_OIDC>")throw new Error(`Direct ${e} publication through sdk-gen-api does not support OIDC credentials`);if(Buffer.byteLength(r,"utf8")>16384)throw new Error(`Direct ${e} publication through sdk-gen-api ${t} exceeds the 16 KiB field limit`)}function OWl(e){try{let t=new URL(e);if(t.protocol==="https:"&&t.username.length===0&&t.password.length===0)return}catch{}throw new Error("Direct registry URL must use HTTPS and must not contain user information")}function Lgg(e){return`${(e/1024).toFixed(2)} KiB`}var PWl=Ae(require("path"),1);function BWl(e,t){let r=PWl.default.basename(e);return t==null?r:`${r}-${t}`}ls();Ct();er();var lZl=Ae(wIi(),1);Uy();d0();kt();g8();On();var Trr=require("fs"),Kj=require("fs/promises"),sNe=Ae(require("path"),1),OIi=require("stream/promises");z7r();var SIi=Ae(cZl(),1);function hye(e,t,{target:r="stdout",...n}={}){return SIi.default[r]?XK.link(e,t):n.fallback===!1?e:typeof n.fallback=="function"?n.fallback(e,t):`${e} (\u200B${t}\u200B)`}hye.isSupported=SIi.default.stdout;hye.stderr=(e,t,r={})=>hye(e,t,{target:"stderr",...r});hye.stderr.isSupported=SIi.default.stderr;var PIi=Ae(aI(),1),pZl=Ae(BAi(),1);function uZl(e){let t=e[0];if(t!=null)return t.coordinate._visit({npm:r=>({registry:"npm",label:"npm",version:r.version,url:`https://www.npmjs.com/package/${r.name}/v/${r.version}`}),maven:r=>({registry:"maven",label:"Maven Central",version:r.version,url:`https://central.sonatype.com/artifact/${r.group}/${r.artifact}/${r.version}`}),pypi:r=>({registry:"pypi",label:"PyPI",version:r.version,url:`https://pypi.org/project/${r.name}/${r.version}/`}),ruby:r=>({registry:"rubygems",label:"RubyGems",version:r.version,url:`https://rubygems.org/gems/${r.name}/versions/${r.version}`}),nuget:r=>({registry:"nuget",label:"NuGet",version:r.version,url:`https://www.nuget.org/packages/${r.name}/${r.version}`}),crates:r=>({registry:"crates",label:"crates.io",version:r.version,url:`https://crates.io/crates/${r.name}/${r.version}`}),_other:()=>{}})}var kCg=/^Pipeline: raw result \(\d+ bytes\): (\{.*\})$/,TIi=class{context;generatorInvocation;absolutePathToPreview;telemetryContext;lengthOfLastLogs=0;cachedReplayResult;replayEventEmitted=!1;taskStartedAtMs=Date.now();constructor({interactiveTaskContext:t,generatorInvocation:r,absolutePathToPreview:n,telemetryContext:i}){this.context=t,this.generatorInvocation=r,this.absolutePathToPreview=n,this.telemetryContext=i}async processUpdate(t){t==null&&this.context.failAndThrow("Task is missing on job status",void 0,{code:T.Code.InternalError});let r=t.packages.map(i=>i.coordinate._visit({npm:o=>`${o.name}@${o.version}`,maven:o=>`${o.group}:${o.artifact}:${o.version}`,pypi:o=>`${o.name} ${o.version}`,ruby:o=>`${o.name}:${o.version}`,nuget:o=>`${o.name} ${o.version}`,crates:o=>`${o.name} ${o.version}`,_other:()=>"<unknown package>"}));t.packages.length>0&&this.#n==null&&(this.#n=t.packages[0]?.coordinate._visit({npm:i=>i.version,maven:i=>i.version,pypi:i=>i.version,ruby:i=>i.version,nuget:i=>i.version,crates:i=>i.version,_other:()=>{}})),this.#i==null&&(this.#i=uZl(t.packages)),this.absolutePathToPreview==null&&this.context.setSubtitle(r.length>0?r.map(i=>`\u25E6 ${i}`).join(`
4094
- `):void 0);for(let i of t.logs.slice(this.lengthOfLastLogs))this.context.logger.log(LCg(i.level),i.message),this.#n==null&&(this.#n=NCg(i.message)??this.#n),this.cachedReplayResult==null&&(this.cachedReplayResult=jCg(i.message));this.lengthOfLastLogs=t.logs.length;let n=i=>{this.context.logger.debug(`Generated files. ${hye("View here",i,{fallback:(o,s)=>`${o}: ${s}`})}`)};return await t.status._visit({notStarted:It,running:It,failed:({message:i,s3PreSignedReadUrl:o})=>{o!=null&&n(o),this.context.failAndThrow(i,void 0,{code:T.Code.ContainerError})},finished:async i=>{if(i.s3PreSignedReadUrlV2!=null){n(i.s3PreSignedReadUrlV2);let o=this.getAbsolutePathToLocalOutput();o!=null&&await BIi({s3PreSignedReadUrl:i.s3PreSignedReadUrlV2,absolutePathToLocalOutput:o,context:this.context})}if(this.absolutePathToPreview==null)for(let o of r)this.context.logger.info(`Published ${o}`);this.#e=!0,this.#t=i.createdSnippets!=null?i.createdSnippets:!1,this.#r=i.snippetsS3PreSignedReadUrl,this.#o=i.pullRequestUrl,this.#s=i.noChangesDetected,i.actualVersion!=null&&(this.#n=i.actualVersion),this.emitReplayTelemetryIfReady()},_other:()=>{this.context.logger.warn("Received unknown update type: "+t.status.type)}}),this.#e?{createdSnippets:this.#t,snippetsS3PreSignedReadUrl:this.#r,actualVersion:this.#n,pullRequestUrl:this.#o,noChangesDetected:this.#s,publishTarget:this.#i}:void 0}getAbsolutePathToLocalOutput(){return this.absolutePathToPreview!=null?De(this.absolutePathToPreview,be.of(sNe.default.basename(this.generatorInvocation.name))):this.generatorInvocation.absolutePathToLocalOutput}emitReplayTelemetryIfReady(){if(!this.replayEventEmitted&&this.cachedReplayResult!=null&&!this.telemetryContext.disableTelemetry)try{let t={success:!0,steps:{replay:this.cachedReplayResult},warnings:[]},n={...(0,lZl.buildReplayTelemetryProps)({pipelineResult:t,generatorName:this.generatorInvocation.name,generatorVersion:this.generatorInvocation.version,cliVersion:this.telemetryContext.cliVersion,repoUri:zCg(this.generatorInvocation),automationMode:this.telemetryContext.automationMode,autoMerge:this.telemetryContext.autoMerge,skipIfNoDiff:this.telemetryContext.skipIfNoDiff,hasBreakingChanges:!1,versionArg:this.telemetryContext.versionArg,versionBump:this.telemetryContext.versionBump,replayConfigEnabled:this.telemetryContext.replayConfigEnabled,noReplayFlag:this.telemetryContext.noReplayFlag,githubMode:QCg(this.generatorInvocation),previewMode:this.absolutePathToPreview!=null,durationMs:Date.now()-this.taskStartedAtMs}),surface:"fiddle",org_id:this.telemetryContext.orgId};this.context.instrumentPostHogEvent({command:"replay",properties:n}),this.context.logger.debug(`[telemetry] replay event sent: ${JSON.stringify(n)}`),this.replayEventEmitted=!0}catch(t){this.context.logger.debug(`[telemetry] failed to send replay event: ${String(t)}`)}}#e=!1;get isFinished(){return this.#e}#t=!1;get createdSnippets(){return this.#t}#r=void 0;get snippetsS3PreSignedReadUrl(){return this.#r}#n=void 0;get actualVersion(){return this.#n}#i=void 0;get publishTarget(){return this.#i}#o=void 0;get pullRequestUrl(){return this.#o}#s=void 0;get noChangesDetected(){return this.#s}},FCg=/Tagging release (v?\d+\.\d+\.\d+(?:-[\w.-]+)?)/;function NCg(e){let t=e.match(FCg);if(t?.[1]!=null)return t[1].replace(/^v/,"")}function jCg(e){let t=e.match(kCg);if(t?.[1]!=null)try{return JSON.parse(t[1])?.steps?.replay}catch{return}}function zCg(e){let t=e.raw?.github;return t==null?"":"uri"in t&&typeof t.uri=="string"?t.uri:"repository"in t&&typeof t.repository=="string"?t.repository:""}function QCg(e){let t=e.raw?.github;if(t!=null&&"mode"in t){if(t.mode==="pull-request")return"pull-request";if(t.mode==="commit-and-release")return"commit-and-release"}return"push"}async function BIi({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r,skipFernignore:n=!1}){try{let i=await _Cg(t),o=await UCg(t);!n&&i&&o?await VCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):!n&&i&&!o?await GCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):await MCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}),r.logger.info(me.green(`Downloaded to ${t}`))}catch(i){r.failAndThrow("Failed to download files",i,{code:T.Code.NetworkError})}}async function fZl({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){try{let n=await bg.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(fPs)});await(0,Kj.mkdir)(sNe.default.dirname(t),{recursive:!0}),await(0,OIi.pipeline)(n.data,(0,Trr.createWriteStream)(t)),r.logger.info(me.green(`Downloaded to ${t}`))}catch(n){r.failAndThrow("Failed to download archive",n,{code:T.Code.NetworkError})}}var fPs=300*1e3;async function MCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}){let r=await bg.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(fPs)}),n=await PIi.default.dir({prefix:"fern",unsafeCleanup:!0}),i=sNe.default.join(n.path,"output.zip");await(0,OIi.pipeline)(r.data,(0,Trr.createWriteStream)(i)),await pPs(t),await(0,Kj.mkdir)(t,{recursive:!0}),await hZl(i,t)}async function pPs(e){await Ut(e)&&(await dZl(e),await(0,Kj.rm)(e,{recursive:!0,force:!0}))}async function dZl(e){try{let t=await(0,Kj.readdir)(e,{withFileTypes:!0});for(let r of t){let n=_t.of(sNe.default.join(e,r.name));r.isDirectory()&&await dZl(n);try{await(0,Kj.chmod)(n,493)}catch{}}await(0,Kj.chmod)(e,493)}catch{}}function LCg(e){switch(e){case"DEBUG":return Xn.Debug;case"INFO":return Xn.Info;case"WARN":return Xn.Warn;case"ERROR":return Xn.Error;default:return Xn.Info}}async function _Cg(e){let t=De(e,be.of(nT));return await Ut(t)}async function UCg(e){let t=De(e,be.of(".git"));return await Ut(t)}async function YY(e,t,r){return(await Oa(r.logger,"git",e,{cwd:t,doNotPipeOutput:!0})).stdout}async function VCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=De(t,be.of(nT)),i=await Q$({absolutePathToFernignore:n});await YY(["rm","-rf","."],t,r),await mZl({s3PreSignedReadUrl:e,outputPath:t}),await YY(["add","."],t,r),await YY(["reset","--",...i],t,r),await YY(["restore","."],t,r)}async function GCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=_t.of((await PIi.default.dir({})).path),i=De(t,be.of(nT)),o=await Q$({absolutePathToFernignore:i});await(0,Kj.cp)(t,n,{recursive:!0}),await YY(["init"],n,r),await YY(["add","."],n,r),await YY(["-c","user.name=fern","-c","user.email=hey@buildwithfern.com","-c","commit.gpgsign=false","commit","--allow-empty","--no-verify","-m","init"],n,r),await YY(["rm","-rf","."],n,r),await mZl({s3PreSignedReadUrl:e,outputPath:n}),await YY(["add","."],n,r),await YY(["reset","--",...o],n,r),await YY(["restore","."],n,r),await pPs(De(n,be.of(".git"))),await pPs(t),await(0,Kj.cp)(n,t,{recursive:!0})}async function mZl({s3PreSignedReadUrl:e,outputPath:t}){let r=await bg.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(fPs)}),n=await PIi.default.dir({prefix:"fern",unsafeCleanup:!0}),i=sNe.default.join(n.path,"output.zip");await(0,OIi.pipeline)(r.data,(0,Trr.createWriteStream)(i)),await hZl(i,t)}async function hZl(e,t){return new Promise((r,n)=>{pZl.default.open(e,{lazyEntries:!0},(i,o)=>{if(i||!o){n(i??new Error("Failed to open zip file"));return}o.on("error",n),o.on("end",r),o.on("entry",s=>{let a=sNe.default.join(t,s.fileName);if(s.fileName.endsWith("/")){(0,Kj.mkdir)(a,{recursive:!0}).then(()=>o.readEntry()).catch(n);return}(0,Kj.mkdir)(sNe.default.dirname(a),{recursive:!0}).then(()=>{o.openReadStream(s,(c,u)=>{if(c||!u){n(c??new Error("Failed to open read stream"));return}u.pipe((0,Trr.createWriteStream)(a)).on("finish",()=>o.readEntry()).on("error",n)})}).catch(n)}),o.readEntry()})})}function dPs(e){return[...new Set(e.filter(t=>t.length>0))].sort((t,r)=>r.length-t.length)}function XY(e,t){return dPs(t).reduce((r,n)=>r.replaceAll(n,"[REDACTED]"),e)}function mPs(e,t){return XY(e,t)}var qCg=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;function CTt(e){let t=qCg.exec(e);return t===null||t[1]===void 0||t[2]===void 0||t[3]===void 0?null:{core:[t[1],t[2],t[3]],prerelease:t[4]?.split(".")??null}}function gZl(e,t){for(let r=0;r<e.core.length;r+=1){let n=AZl(e.core[r]??"",t.core[r]??"");if(n!==0)return n}return WCg(e.prerelease,t.prerelease)}function WCg(e,t){if(e===null||t===null)return e===t?0:e===null?1:-1;let r=Math.max(e.length,t.length);for(let n=0;n<r;n+=1){let i=e[n],o=t[n];if(i===void 0||o===void 0)return i===o?0:i===void 0?-1:1;let s=HCg(i,o);if(s!==0)return s}return 0}function HCg(e,t){let r=/^\d+$/.test(e),n=/^\d+$/.test(t);return r&&n?AZl(e,t):r!==n?r?-1:1:e===t?0:e<t?-1:1}function AZl(e,t){return e.length!==t.length?e.length<t.length?-1:1:e===t?0:e<t?-1:1}var hPs=class extends Error{name="GeneratorConfigPolicyInvariantError";code="INVALID_GENERATOR_CUTOVER_POLICY";generatorId;language;cutoverVersion;retryable=!1;recommendedAction="FIX_GENERATOR_CUTOVER_POLICY";constructor(t,r){super(`Generator ${t} has an invalid cutover version: ${r.cutoverVersion}`),this.generatorId=t,this.language=r.language,this.cutoverVersion=r.cutoverVersion}};function KCg(e){return new Map(e.map(([t,r])=>{let n=CTt(r.cutoverVersion);if(n===null)throw new hPs(t,r);return[t,{...r,parsedCutoverVersion:n}]}))}var JCg=KCg([["fernapi/fern-typescript",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-typescript-sdk",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-typescript-node-sdk",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-typescript-browser-sdk",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-python-sdk",{language:"python",cutoverVersion:"6.0.0"}],["fernapi/fern-java-sdk",{language:"java",cutoverVersion:"5.0.0"}],["fernapi/fern-kotlin-sdk",{language:"kotlin",cutoverVersion:"5.0.0"}],["fernapi/fern-go-sdk",{language:"go",cutoverVersion:"2.0.0"}],["fernapi/fern-csharp-sdk",{language:"csharp",cutoverVersion:"3.0.0"}],["fernapi/fern-php-sdk",{language:"php",cutoverVersion:"3.0.0"}],["fernapi/fern-ruby-sdk",{language:"ruby",cutoverVersion:"2.0.0"}],["fernapi/fern-ruby-sdk-v2",{language:"ruby",cutoverVersion:"2.0.0"}],["fernapi/fern-rust-sdk",{language:"rust",cutoverVersion:"1.0.0"}],["fernapi/fern-swift-sdk",{language:"swift",cutoverVersion:"1.0.0"}],["fernapi/fern-cli",{language:"cli",cutoverVersion:"1.0.0"}],["fernapi/fern-cli-generator",{language:"cli",cutoverVersion:"1.0.0"}],["fernapi/fern-mcp-server",{language:"mcp",cutoverVersion:"0.1.0"}]]);function Orr(e){return JCg.get(e)}var $ae=class extends Error{name="GeneratorConfigCompatibilityError";code;generatorId;language;requestedVersion;cutoverVersion;receivedConfigKind;expectedConfigKind;expectedLanguage;retryable=!1;recommendedAction;constructor(t){super(t.message),this.code=t.code,this.generatorId=t.generatorId,this.language=t.language,this.requestedVersion=t.requestedVersion,this.cutoverVersion=t.cutoverVersion,this.receivedConfigKind=t.receivedConfigKind,this.expectedConfigKind=t.expectedConfigKind,this.expectedLanguage=t.expectedLanguage,this.recommendedAction=t.recommendedAction}};function gPs(e){return Orr(e)?.language}function O9e(e){let t=gye(e),r=e.configKind;if(!XCg(r))throw T9e(e,{code:"INVALID_CONFIG_KIND",message:"Configuration kind must be legacy-fern or sdk-config-v1",cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:t.configKind,recommendedAction:"USE_SUPPORTED_CONFIG_KIND"},r);if(r!==t.configKind){let n=Orr(e.generatorId);throw n===void 0?new Error(`Missing validated generator policy for ${e.generatorId}`):YCg(e,n,t.configKind,r)}return t}function gye(e){let t=Orr(e.generatorId);if(t===void 0)throw T9e(e,{code:"UNKNOWN_GENERATOR",message:`Unknown first-party generator: ${e.generatorId}`,cutoverVersion:null,expectedLanguage:null,expectedConfigKind:null,recommendedAction:"USE_KNOWN_GENERATOR_ID"});if(t.language!==e.language)throw T9e(e,{code:"GENERATOR_LANGUAGE_MISMATCH",message:`Generator ${e.generatorId} targets ${t.language}, not ${e.language}`,cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:null,recommendedAction:"USE_GENERATOR_LANGUAGE"});let r=CTt(e.requestedVersion);if(r===null)throw T9e(e,{code:"INVALID_GENERATOR_VERSION",message:`Generator version must be an exact semantic version: ${e.requestedVersion}`,cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:null,recommendedAction:"USE_EXACT_GENERATOR_VERSION"});let n=gZl(r,t.parsedCutoverVersion)<0,i=n?"legacy-fern":"sdk-config-v1";return{generatorId:e.generatorId,language:t.language,requestedVersion:e.requestedVersion,cutoverVersion:t.cutoverVersion,configKind:i,payloadKind:n?"fern-runtime-bundle":"sdk-config-v1"}}function P9e({generatorId:e,language:t,configKind:r,versionSource:n}){let i=Orr(e);if(i===void 0)throw T9e({generatorId:e,language:t,requestedVersion:"unpinned"},{code:"UNKNOWN_GENERATOR",message:`Unknown first-party generator: ${e}`,cutoverVersion:null,expectedLanguage:null,expectedConfigKind:null,recommendedAction:"USE_KNOWN_GENERATOR_ID"});if(i.language!==t)throw T9e({generatorId:e,language:t,requestedVersion:"unpinned"},{code:"GENERATOR_LANGUAGE_MISMATCH",message:`Generator ${e} targets ${i.language}, not ${t}`,cutoverVersion:i.cutoverVersion,expectedLanguage:i.language,expectedConfigKind:null,recommendedAction:"USE_GENERATOR_LANGUAGE"});let o={generatorId:e,language:t,cutoverVersion:i.cutoverVersion};if(r==="legacy-fern"){if(n!=="fern-latest")throw new Error("Legacy Fern unpinned routes must use fern-latest as their version source");return{...o,versionSource:n,configKind:r,payloadKind:"fern-runtime-bundle"}}return{...o,versionSource:n,configKind:r,payloadKind:"sdk-config-v1"}}function APs(e){return P9e({...e,configKind:"sdk-config-v1",versionSource:"sdk-config-omitted"})}function T9e(e,t,r=e.configKind){return new $ae({generatorId:e.generatorId,language:e.language,requestedVersion:e.requestedVersion,receivedConfigKind:r,...t})}function YCg(e,t,r,n){let i=r==="legacy-fern";return T9e(e,{code:i?"LEGACY_FERN_CONFIG_REQUIRED":"SDK_CONFIG_V1_REQUIRED",message:i?`Generator ${e.generatorId} ${e.requestedVersion} requires legacy Fern configuration`:`Generator ${e.generatorId} ${e.requestedVersion} requires SDK Config v1`,cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:r,recommendedAction:i?"USE_LEGACY_FERN_CONFIG":"USE_SDK_CONFIG_V1"},n)}function XCg(e){return e==="legacy-fern"||e==="sdk-config-v1"}var ZY="latest",yPs="__fern_sdk_config_unpinned__";function Prr(e){return e===yPs}function bPs(e){return e??yPs}function RIi(e,t){return e.requestedVersion!=null?!1:e.versionSource==="fern-latest"?t===ZY:Prr(t)}var $Cg=2e3,yZl=900*1e3,bZl=6e4,STt=64,exg=25*1024*1024,txg=25*1024*1024,EZl=5*1024*1024,IZl=25*1024*1024,rxg=25*1024*1024,RZl=100*1024*1024,nxg=RZl,DZl=50*1024*1024,ixg=1024*1024,kZl=60*1024*1024,EPs=20*1024,oxg="unpinned",sxg=new Set(["localhost","127.0.0.1","[::1]","::1"]),axg=new Intl.Collator("en",{numeric:!0});function FZl(e,t){return t?{type:"download"}:e}var cxg=/^[a-z][a-z0-9_]{0,63}$/,kIi=class extends Error{status;code;constructor(t,r,n){super(t),this.name="FernSdkGenApiSubmissionError",this.status=r,this.code=n}},Brr="use-sdk-gen-api",TTt="FERN_USE_SDK_GEN_API";function Rrr(){let e=process.env[TTt]?.trim().toLowerCase();if(e==="true")return!0;if(e==="false")return!1}function OTt(e){let t=Rrr();return t!=null?Promise.resolve(t):non().isEnabled(Brr,NZl(e))}function vPs(e){let t=Rrr();return t??non().getCachedValue(Brr,NZl(e))}async function Drr({organization:e,generatorNames:t}){let r=[...new Set(t)],n=await Promise.all(r.map(async i=>{try{return await OTt({organization:e,generatorName:i})}catch{return!1}}));return new Map(r.map((i,o)=>[i,n[o]===!0]))}function NZl({organization:e,generatorName:t}){let r=Gv(t);return{org:e,generator:t,...r!=null?{language:r}:{}}}var uxg=new Set(["fernapi/fern-mcp-server"]);function B9e(e){return uxg.has(e)}function jZl({generatorName:e,version:t}){let r=Gv(e);return r==null||CTt(t)==null?!1:gye({generatorId:e,language:r,requestedVersion:t}).configKind==="sdk-config-v1"}function aNe({generatorName:e,version:t,usesSdkConfig:r}){if(!B9e(e)&&!(!r&&!jZl({generatorName:e,version:t})))return Rrr()!==!1}function PTt(e){return B9e(e)}function BTt(){let e=process.env.FERN_SDK_GEN_API_ORIGIN??"https://sdk-gen.postman.co";if(e==null)return;let t;try{t=new URL(e)}catch{throw new Error("FERN_SDK_GEN_API_ORIGIN must be a valid URL")}if(t.username.length>0||t.password.length>0)throw new Error("FERN_SDK_GEN_API_ORIGIN must not contain credentials");let r=t.protocol==="http:"&&sxg.has(t.hostname);if(t.protocol!=="https:"&&!r)throw new Error("FERN_SDK_GEN_API_ORIGIN must use HTTPS unless it targets localhost");return t.toString().replace(/\/$/,"")}function Gv(e){return gPs(e)}function zZl(e,t="legacy-fern"){let r=Gv(e.name);if(r!=null)return e.version===ZY&&t==="legacy-fern"?P9e({generatorId:e.name,language:e.language??r,configKind:t,versionSource:"fern-latest"}):O9e({generatorId:e.name,language:e.language??r,requestedVersion:e.version,configKind:t})}function zIi(e,t){let r=e.outputMode;switch(r.type){case"downloadFiles":return{requestedOutput:{type:"download"}};case"github":return vZl({owner:r.owner,repo:r.repo,branch:r.branch,mode:r.makePr===!0?"pull-request":"release",publishInfo:r.publishInfo,githubOptions:t});case"githubV2":{let n=r.githubV2;return vZl({owner:n.owner,repo:n.repo,host:n.host,branch:n.branch,mode:n.type==="pullRequest"?"pull-request":n.type==="push"?"push":"release",reviewers:n.type==="pullRequest"?pxg(n.reviewers):void 0,publishInfo:n.publishInfo,workflows:n.workflows,githubOptions:t})}case"publishV2":{let n=fxg(r.publishV2);return{...n.package!=null?{package:n.package}:{},requestedOutput:{type:"publish",publish:n.publish}}}case"publish":{let n=gxg(e,r.registryOverrides);return{...n.package!=null?{package:n.package}:{},requestedOutput:{type:"publish",publish:n.publish}}}}}function vZl({owner:e,repo:t,host:r,branch:n,mode:i,reviewers:o,publishInfo:s,workflows:a,githubOptions:c}){let u=s!=null?dxg(s):void 0;return{...u?.package!=null?{package:u.package}:{},requestedOutput:{type:"github",repository:`${e}/${t}`,...r!=null?{host:r}:{},...n!=null?{branch:n}:{},mode:i,...o!=null?{reviewers:o}:{},...u!=null?{publish:u.publish}:{},...a===!1?{workflows:!1}:{},...c}}}function lxg(e,t){return e.type==="github"&&t!=null?{...e,...t}:e}function pxg(e){if(e==null)return;let t=e.filter(n=>n.type==="team").map(n=>n.name),r=e.filter(n=>n.type==="user").map(n=>n.name);if(!(t.length===0&&r.length===0))return{...t.length>0?{teams:t}:{},...r.length>0?{users:r}:{}}}function fxg(e){switch(e.type){case"npmOverride":return CPs(e.npmOverride);case"mavenOverride":return xPs(e.mavenOverride);case"pypiOverride":return QZl(e.pypiOverride);case"rubyGemsOverride":return xTt("rubygems",e.rubyGemsOverride);case"nugetOverride":return xTt("nuget",e.nugetOverride);case"cratesOverride":return xTt("crates",e.cratesOverride);case"postman":throw new Error("sdk-gen-api does not support Postman collection publication as an SDK output")}}function dxg(e){switch(e.type){case"npm":return CPs(e);case"maven":return xPs(e);case"pypi":return QZl(e);case"rubygems":return xTt("rubygems",e);case"nuget":return xTt("nuget",e);case"crates":return xTt("crates",e);case"postman":throw new Error("sdk-gen-api does not support Postman collection publication as an SDK output")}}function CPs(e){return{...e?.packageName?{package:{packageName:e.packageName}}:{},publish:{registry:"npm",...e?.registryUrl?{url:e.registryUrl}:{}}}}function QZl(e){let t=e!=null&&"coordinate"in e?e.coordinate:e?.packageName;return{...t?{package:{packageName:t}}:{},publish:{registry:"pypi",...e?.registryUrl?{url:e.registryUrl}:{}}}}function xPs(e){let t=e?.coordinate!=null?hxg(e.coordinate):void 0;return{...t!=null?{package:t}:{},publish:{registry:"maven",...e?.registryUrl?{url:e.registryUrl}:{}}}}var mxg=new Set(["OIDC","<USE_OIDC>"]);function xTt(e,t){let r=e==="nuget"||e==="rubygems",n=r&&t?.apiKey!=null&&mxg.has(t.apiKey),i=r&&!n?AEi(t?.apiKey):void 0;return{...t?.packageName?{package:{packageName:t.packageName}}:{},publish:{registry:e,...t?.registryUrl?{url:t.registryUrl}:{},...i!=null?{apiKeyEnvironmentVariable:i}:{},...n?{trustedPublishing:!0}:{}}}}function hxg(e){let[t,r]=e.split(":");if(!t||!r)throw new Error(`Invalid Maven coordinate for sdk-gen-api: ${e}`);return{groupId:t,artifactId:r}}function gxg(e,t){let r=Gv(e.name);if((r==="typescript"||r==="mcp")&&t.npm!=null)return CPs(t.npm);if((r==="java"||r==="kotlin")&&t.maven!=null)return xPs(t.maven);let n=MZl(r);if(n==null)throw new Error(`sdk-gen-api cannot infer a registry for ${r??e.name}`);return{publish:{registry:n}}}function MZl(e){switch(e){case"typescript":return"npm";case"python":return"pypi";case"java":case"kotlin":return"maven";case"go":return"go";case"csharp":return"nuget";case"php":return"composer";case"ruby":return"rubygems";case"rust":return"crates";case"mcp":return"npm";case"swift":case"cli":case void 0:return}}function LZl(e,t){let r=t.outputMode;if(r.type!=="publish"&&r.type!=="publishV2")return;let n=zIi(t).requestedOutput;if(n.type==="publish"&&n.publish.url!=null&&TWl(n.publish.url),r.type==="publish"){let o=Gv(t.name);if((o==="typescript"||o==="mcp")&&r.registryOverrides.npm!=null)return CZl(e,r.registryOverrides.npm.token);if((o==="java"||o==="kotlin")&&r.registryOverrides.maven!=null)return xZl(e,r.registryOverrides.maven);let s=MZl(o);throw s==null||!yxg(s)?new Error(`sdk-gen-api does not support direct ${s??"unknown"} registry publication`):new Error(`Direct ${s} publication through sdk-gen-api requires publish credentials`)}let i=r.publishV2;switch(i.type){case"npmOverride":{let o=DIi("npm",i.npmOverride);return CZl(e,o.token)}case"mavenOverride":{let o=DIi("maven",i.mavenOverride);return xZl(e,o)}case"pypiOverride":{let o=DIi("pypi",i.pypiOverride);return Axg(e,o.username,o.password)}case"cratesOverride":{let o=DIi("crates",i.cratesOverride);return _Zl(e,"crates",o.token)}case"rubyGemsOverride":throw new Error("sdk-gen-api does not support direct rubygems registry publication");case"nugetOverride":throw new Error("sdk-gen-api does not support direct nuget registry publication");case"postman":throw new Error("sdk-gen-api does not support Postman collection publication as an SDK output")}}function QIi(e,t,r,n){return{targetId:e,...j1s(t,r,n)}}function DIi(e,t){if(t==null)throw new Error(`Direct ${e} publication through sdk-gen-api is missing its registry configuration`);return t}function CZl(e,t){return _Zl(e,"npm",t)}function _Zl(e,t,r){return QIi(e,{registry:t,token:r})}function Axg(e,t,r){return QIi(e,{registry:"pypi",username:t,password:r})}function xZl(e,t){return QIi(e,{registry:"maven",username:t.username,password:t.password,...t.signature==null?{}:{signature:t.signature}})}function yxg(e){return e==="npm"||e==="maven"||e==="pypi"||e==="crates"}function bxg(e,t,r){let n=e.targets.flatMap((i,o)=>{if(i.requestedOutput.type!=="publish")return[];let s=t[o];if(s==null)throw new Error(`Cannot pair sdk-gen-api target ${i.targetId} with publish credentials`);let a=r?.[o],{publishUrl:c,publishRegistry:u}=VZl(i.requestedOutput),l=a!=null?QIi(i.targetId,a,c,u):LZl(i.targetId,s);return l!=null?[l]:[]});if(n.length!==0){if(n.length>STt)throw new Error(`sdk-gen-api supports at most ${STt} direct publish credential targets`);if(e.credentialSetId==null)throw new Error("sdk-gen-api direct registry targets require a credentialSetId");return{schemaVersion:"fern-publish-credentials/v1",credentialSetId:e.credentialSetId,targets:n}}}function UZl(e){LZl("preflight",e)}function MIi(e){yEi(e.map(t=>({publicationRequested:t.requestedOutput?.type==="publish"||t.requestedOutput?.type==="github"&&t.requestedOutput.publish!=null,credentialsRequired:t.requestedOutput?.type==="publish",...VZl(t.requestedOutput),...t.publishCredential==null?{}:{publishCredential:t.publishCredential}})))}function VZl(e){let t=e?.type==="publish"||e?.type==="github"?e.publish:void 0;return t==null?{}:{publishRegistry:t.registry,...t.url==null?{}:{publishUrl:t.url}}}function GZl(e){let{generatorInvocation:t,sdkVersion:r,specsTarGzBuffer:n,whitelabel:i}=e,o=Gv(t.name),s=r!=null&&r.trim().length>0&&(!(0,wTt.isAutoVersion)(r)||qZl(e.sdkConfigRequestedOutput));return o!=null&&s&&n!=null&&i==null}function qZl(e){return e?.type==="github"}function WZl({candidate:e,isSdkConfigTarget:t,isPreview:r}){let{generatorInvocation:n,sdkVersion:i,specsTarGzBuffer:o,whitelabel:s}=e;return i==null?"the SDK version could not be resolved":s!=null?"whitelabel generation has not yet moved from Fiddle to the shared pipeline":(0,wTt.isAutoVersion)(i)&&!qZl(e.sdkConfigRequestedOutput)?t?r?"preview generation only downloads files, so it cannot use --version AUTO":"automatic SDK versioning (--version AUTO) through sdk-gen-api requires GitHub output":"automatic SDK versioning has not yet moved from Fiddle to the shared pipeline":o==null?"the source archive is unavailable":`generator language ${n.language??"unknown"} does not match ${Gv(n.name)}`}var FIi=class{expectedTargets;participants=[];removedTargetIds=new Set;terminalError;dispatched=!1;constructor(t){if(t<1)throw new Error("A Fern sdk-gen-api batch must expect at least one target");this.expectedTargets=t}run(t){return this.terminalError!=null?Promise.reject(this.terminalError):t.targetIdSeed!=null&&this.removedTargetIds.has(t.targetIdSeed)?Promise.reject(new Error(`Fern sdk-gen-api target ${t.targetIdSeed} was removed`)):this.dispatched?Promise.reject(new Error("The Fern sdk-gen-api batch was already dispatched")):new Promise((r,n)=>{this.participants.push({...t,resolve:r,reject:n}),this.dispatchIfReady()})}skip(){this.dispatched||this.terminalError!=null||(this.expectedTargets-=1,this.dispatchIfReady())}remove(t,r){if(this.dispatched||this.terminalError!=null||this.removedTargetIds.has(t))return!1;this.removedTargetIds.add(t);let n=this.participants.findIndex(o=>o.targetIdSeed===t),[i]=n>=0?this.participants.splice(n,1):[];return i?.reject(r),this.expectedTargets-=1,this.dispatchIfReady(),!0}cancel(t){if(!(this.dispatched||this.terminalError!=null)){this.terminalError=t;for(let r of this.participants)r.reject(t)}}dispatchIfReady(){this.dispatched||this.terminalError!=null||this.expectedTargets===0||this.participants.length!==this.expectedTargets||(this.dispatched=!0,this.dispatch())}async dispatch(){let t=[...this.participants].sort(Bxg);try{(await YZl(t)).forEach((n,i)=>{let o=t[i];n.status==="fulfilled"?o?.resolve(n.value):o?.reject(n.reason)})}catch(r){this.terminalError=r;for(let n of this.participants)n.reject(r)}}},NIi=class{expectedTargetIds;settledTargetIds=new Set;waiters=[];preflightParticipants=[];terminalError;didRunPreflight=!1;constructor(t){if(this.expectedTargetIds=new Set(t),this.expectedTargetIds.size!==t.length)throw new Error("Fern sdk-gen-api preparation target IDs must be unique")}ready(t,r){if(this.assertExpected(t),this.settledTargetIds.has(t))throw new Error(`Fern sdk-gen-api target ${t} prepared more than once`);return this.settledTargetIds.add(t),r!=null&&this.preflightParticipants.push(r),new Promise((n,i)=>{this.waiters.push({resolve:n,reject:i}),this.finishIfSettled()})}fail(t,r,n){return this.assertExpected(t),this.settledTargetIds.has(t)?!1:(this.settledTargetIds.add(t),n||(this.terminalError=r),this.finishIfSettled(),!0)}assertExpected(t){if(!this.expectedTargetIds.has(t))throw new Error(`Unexpected Fern sdk-gen-api preparation target ${t}`)}finishIfSettled(){if(this.settledTargetIds.size===this.expectedTargetIds.size){if(!this.didRunPreflight&&this.terminalError==null&&this.preflightParticipants.length>0){this.didRunPreflight=!0;try{JZl(this.preflightParticipants)}catch(t){this.terminalError=t}}for(let t of this.waiters)this.terminalError!=null?t.reject(this.terminalError):t.resolve()}}};async function HZl(e){let[t]=await YZl([e]);if(t?.status==="fulfilled")return t.value;throw t?.reason??new Error("sdk-gen-api did not return the requested target")}function KZl(e){if(e>STt)throw new Error(`sdk-gen-api supports at most ${STt} target payloads per build; received ${e}`)}function JZl(e){let t=e[0];if(t==null)throw new Error("Cannot submit an empty Fern sdk-gen-api build");Oxg(e);let r;try{r=BTt()}catch(p){return t.context.failAndThrow(p instanceof Error?p.message:"Invalid sdk-gen-api origin",p,{code:T.Code.ConfigError})}if(!r)return t.context.failAndThrow("FERN_SDK_GEN_API_ORIGIN is required when sdk-gen-api generation is enabled",void 0,{code:T.Code.ConfigError});_xg(e),Rxg(e,t);let n=Uxg({apiName:t.apiName,organization:t.organization,cliVersion:t.cliVersion,specsTarGzBuffer:t.specsTarGzBuffer,targets:e.map(p=>({generatorInvocation:p.generatorInvocation,resolvedGeneratorVersion:p.resolvedGeneratorVersion,sdkGenApiRoute:p.sdkGenApiRoute,sdkName:p.sdkName,sdkVersion:p.sdkVersion,apiVersion:p.apiVersion,targetIdSeed:p.targetIdSeed,sourceSpecIndexes:p.sourceSpecIndexes,audiences:p.audiences,payload:p.payload,requestedOutput:p.requestedOutput,publishCredential:p.publishCredential,githubOptions:p.githubOptions}))}),i=bxg(n,e.map(p=>p.generatorInvocation),e.map(p=>p.publishCredential)),o=i!=null?Buffer.from(JSON.stringify(i)):void 0;if(o!=null&&o.length>65536)return t.context.failAndThrow(`sdk-gen-api publish credentials file is ${kxg(o.length)}, exceeding the 64 KiB limit`,void 0,{code:T.Code.ConfigError});let s=t.specsTarGzBuffer.length+e.reduce((p,d)=>p+d.payload.body.length,0)+(o?.length??0);if(s>DZl)return t.context.failAndThrow(`sdk-gen-api source archive, target payloads, and publish credentials total ${eW(s)}, exceeding the 50 MiB in-memory upload limit`,void 0,{code:T.Code.ConfigError});let a=JSON.stringify(n),c=Buffer.byteLength(a,"utf8");if(c>ixg)return t.context.failAndThrow(`sdk-gen-api serialized request field is ${eW(c)}, exceeding the 1 MiB UTF-8 field limit; reduce generator customConfig, readme, settings, or API override metadata`,void 0,{code:T.Code.ConfigError});let u=new PZl.default;u.append("request",a),u.append("sources",t.specsTarGzBuffer,{filename:"specs.tar.gz",contentType:"application/gzip"}),e.forEach((p,d)=>{let f=n.targets[d];if(f==null)throw new Error(`Cannot pair sdk-gen-api payload at index ${d} with a target`);let m=p.payload.payloadKind==="fern-runtime-bundle";u.append("payloads",p.payload.body,{filename:`${f.targetId}.json${m?".gz":""}`,contentType:m?"application/gzip":"application/json"})}),o!=null&&u.append("credentials",o,{filename:"publish-credentials.v1.json",contentType:"application/json"});let l=u.getLengthSync();return l>kZl?t.context.failAndThrow(`sdk-gen-api multipart request is ${eW(l)}, exceeding the 60 MiB limit; reduce source or target payload size`,void 0,{code:T.Code.ConfigError}):{first:t,origin:r,request:n,form:u,sensitiveValues:dPs([t.token.value,...xxg(i)])}}async function YZl(e){let{first:t,origin:r,request:n,form:i,sensitiveValues:o}=JZl(e);Exg({first:t,origin:r,request:n,participants:e,sensitiveValues:o});let s;try{s=(await bg.post(`${r}/v1/fern/build`,i,{headers:{...i.getHeaders(),Authorization:`Bearer ${t.token.value}`,"X-Fern-Organization-Id":t.organization},maxBodyLength:kZl,timeout:bZl})).data.buildId}catch(u){Ixg(t.context,u,o);let l=SZl(u,o);return t.context.failAndThrow(`Failed to submit sdk-gen-api build: ${l.message}`,l,{code:T.Code.NetworkError})}for(let u of e)u.context.logger.debug(`sdk-gen-api build ID: ${s}`);let a=new Map,c=Date.now()+yZl;for(;;){let u;try{let d=await bg.get(`${r}/v1/fern/build/${s}`,{headers:{Authorization:`Bearer ${t.token.value}`,"X-Fern-Organization-Id":t.organization},timeout:bZl});u=wxg(d.data,o)}catch(d){let f=SZl(d,o);return t.context.failAndThrow("Failed to poll sdk-gen-api build",f,{code:T.Code.NetworkError})}let l=n.targets.find(d=>!u.targets.some(f=>f.targetId===d.targetId));if(l!=null)return t.context.failAndThrow(`sdk-gen-api response did not contain target ${l.targetId}`,void 0,{code:T.Code.InternalError});for(let[d,f]of n.targets.entries()){let m=u.targets.find(y=>y.targetId===f.targetId),g=e[d]?.context;if(m==null||g==null)continue;let A=a.get(m.targetId)??0;for(let y of m.logs.slice(A))vxg(g,y);a.set(m.targetId,m.logs.length)}if(n.targets.every(d=>Fxg(u,d.targetId))||u.status==="failed"||u.status==="succeeded")return Promise.allSettled(e.map((d,f)=>Nxg(d,n.targets[f]?.targetId,u,n.targets[f]?.requestedOutput)));if(Date.now()>=c)return t.context.failAndThrow(`Timed out waiting for sdk-gen-api build ${s} after ${yZl/6e4} minutes`,void 0,{code:T.Code.NetworkError});await new Promise(d=>setTimeout(d,$Cg))}}function Exg({first:e,origin:t,request:r,participants:n,sensitiveValues:i}){let o=new Map(r.targets.map((s,a)=>{let c=n[a];return[s.targetId,{uploadBytes:c?.payload.body.length??0,targetIdSeed:c?.targetIdSeed,sourceSpecIndexes:c?.sourceSpecIndexes}]}));e.context.logger.debug(`Submitting sdk-gen-api build: ${jIi({origin:t,sourceArchiveBytes:e.specsTarGzBuffer.length,request:{protocolVersion:r.protocolVersion,apiName:r.apiName,cliVersion:r.cliVersion,idempotencyKey:wZl(r.idempotencyKey),credentialSetId:r.credentialSetId==null?void 0:wZl(r.credentialSetId),apiInputs:r.apiInputs,targets:r.targets.map(s=>({targetId:s.targetId,apiInputId:s.apiInputId,language:s.language,sdk:s.sdk,fernGenerator:s.fernGenerator,payloadKind:s.payloadKind,package:s.package,requestedOutput:s.requestedOutput,invocation:{customConfigKeys:Object.keys(s.invocation.customConfig).sort(),keywords:s.invocation.keywords,smartCasing:s.invocation.smartCasing,smartCasingDigitWordBoundary:s.invocation.smartCasingDigitWordBoundary,disableExamples:s.invocation.disableExamples,audiences:s.invocation.audiences,hasReadme:s.invocation.readme!=null,hasSettings:s.invocation.settings!=null,hasApiOverride:s.invocation.apiOverride!=null},payload:o.get(s.targetId)}))}},i)}`)}function Ixg(e,t,r){if(!(t instanceof $qt)){e.logger.debug(`sdk-gen-api submission failed before receiving an HTTP response: ${jIi(t instanceof Error?{name:t.name,message:t.message}:{error:String(t)},r)}`);return}e.logger.debug(`sdk-gen-api submission HTTP failure: ${jIi({status:t.response?.status??t.status,statusText:t.response?.statusText,code:t.code,responseBody:t.response?.data},r)}`)}function wZl(e){return e.length<=12?e:`${e.slice(0,12)}...`}function jIi(e,t){let r;try{r=typeof e=="string"?e:JSON.stringify(e)}catch(i){r=i instanceof Error?`Failed to serialize debug value: ${i.message}`:String(e)}let n=XY(r,t);return n.length>EPs?`${n.slice(0,EPs)}... [truncated ${n.length-EPs} bytes]`:n}function vxg(e,t){switch(t.level.toLowerCase()){case"error":e.logger.error(t.message);return;case"warn":case"warning":e.logger.warn(t.message);return;case"debug":case"trace":e.logger.debug(t.message);return;default:e.logger.info(t.message)}}function SZl(e,t){if(!(e instanceof $qt))return new kIi(XY(e instanceof Error?e.message:"Unknown submission error",t),void 0,void 0);let r=Cxg(e,t);return new kIi(r??XY(e.message,t),e.response?.status??e.status,e.code)}function Cxg(e,t){let r=e.response?.data;if(typeof r=="object"&&r!=null&&"message"in r&&typeof r.message=="string")return XY(r.message,t);if(r!=null)return`sdk-gen-api response body: ${jIi(r,t)}`}function xxg(e){return(e?.targets??[]).flatMap(t=>t.registry==="npm"||t.registry==="crates"?[t.token]:t.registry==="pypi"?[t.username,t.password]:[t.username,t.password,...t.signature!=null?[t.signature.keyId,t.signature.password,t.signature.secretKey]:[]])}function wxg(e,t){return{...e,targets:e.targets.map(r=>({...r,logs:r.logs.map(n=>({...n,message:XY(n.message,t)})),...r.error==null?{}:{error:{message:XY(r.error.message,t)}},...r.publication==null?{}:r.publication.status==="success"?{publication:{...r.publication,publishTarget:{...r.publication.publishTarget,identifier:mPs(r.publication.publishTarget.identifier,t)}}}:{publication:{...r.publication,publishTarget:{...r.publication.publishTarget,identifier:mPs(r.publication.publishTarget.identifier,t)},error:Sxg(r.publication.error,t)}}}))}}function Sxg(e,t){let{reason:r,detail:n,...i}=e,o=typeof n=="string"?XY(n,t).trim():void 0,s=typeof r=="string"&&cxg.test(r)&&XY(r,t)===r?r:void 0;return{...i,message:XY(e.message,t),...s!=null?{reason:s}:{},...o!=null&&o.length>0?{detail:o}:{}}}function Txg(e){let t=`sdk-gen-api publication failed (${e.code}): ${e.message}`;return e.detail==null||e.detail===e.message?t:e.reason!=null?`${t}: ${e.detail} [${e.reason}]`:`${t}: ${e.detail}`}function Oxg(e){for(let t of e){let{generatorInvocation:r}=t,n=r.language??Gv(r.name);n==null&&t.context.failAndThrow(`Cannot submit SDK generation to sdk-gen-api: generator language is unknown for ${r.name}`,void 0,{code:T.Code.ConfigError});let i;try{i=Pxg(t,n)}catch(o){if(!(o instanceof $ae))throw o;t.context.failAndThrow(krr(o),void 0,{code:T.Code.ConfigError})}i.payloadKind!==t.payload.payloadKind&&t.context.failAndThrow(`Cannot submit SDK generation to sdk-gen-api: selected route payload ${i.payloadKind} does not match participant payload ${t.payload.payloadKind}`,void 0,{code:T.Code.ConfigError})}}function Pxg(e,t){let{generatorInvocation:r,sdkGenApiRoute:n}=e;if(n?.requestedVersion==null){if(n!=null){if(!RIi(n,r.version))throw ZZl(n,r.version);return P9e({generatorId:r.name,language:t,configKind:n.configKind,versionSource:n.versionSource})}return O9e({generatorId:r.name,language:t,requestedVersion:r.version,configKind:e.payload.payloadKind==="fern-runtime-bundle"?"legacy-fern":"sdk-config-v1"})}return O9e({generatorId:r.name,language:t,requestedVersion:n.requestedVersion,configKind:n.configKind})}function krr(e){let t=[e.code,`generator=${e.generatorId}`,`language=${e.language}`,`requestedVersion=${e.requestedVersion}`,`cutoverVersion=${e.cutoverVersion??"n/a"}`,`receivedConfigKind=${String(e.receivedConfigKind)}`,`expectedConfigKind=${e.expectedConfigKind??"n/a"}`,`expectedLanguage=${e.expectedLanguage??"n/a"}`,`retryable=${e.retryable}`,`recommendedAction=${e.recommendedAction}`].join("; "),r=e.recommendedAction==="USE_SDK_CONFIG_V1"?" Run `fern sdk migrate`, then pass the generated document with `fern generate --sdk-config <path>` before using this generator version.":"";return`Cannot submit SDK generation to sdk-gen-api: ${e.message} [${t}].${r}`}function XZl(e,t,r){if(e==null)return t.version;if(e.requestedVersion!=null)return e.requestedVersion;if(!RIi(e,t.version))throw ZZl(e,t.version);return r}function ZZl(e,t){return new Error(`An unpinned sdk-gen-api route does not match its generator version representation: invocationVersion=${JSON.stringify(t)}; configKind=${e.configKind}; versionSource=${e.requestedVersion==null?e.versionSource:"pinned"}`)}function IPs(e,t,r){return XZl(e,t,r)??oxg}function Bxg(e,t){let r=axg.compare(e.targetIdSeed??"",t.targetIdSeed??"");if(r!==0)return r;let n=e.generatorInvocation.name.localeCompare(t.generatorInvocation.name);if(n!==0)return n;let i=IPs(e.sdkGenApiRoute,e.generatorInvocation).localeCompare(IPs(t.sdkGenApiRoute,t.generatorInvocation));return i!==0?i:e.sdkVersion.localeCompare(t.sdkVersion)}function Rxg(e,t){e.length>STt&&t.context.failAndThrow(`sdk-gen-api supports at most ${STt} target payloads per build; received ${e.length}`,void 0,{code:T.Code.ConfigError}),t.specsTarGzBuffer.length>exg&&t.context.failAndThrow(`sdk-gen-api source archive is ${eW(t.specsTarGzBuffer.length)}, exceeding the 25 MiB compressed limit`,void 0,{code:T.Code.ConfigError});let r=e.findIndex(s=>s.payload.body.length>(s.payload.payloadKind==="fern-runtime-bundle"?EZl:IZl));if(r>=0){let s=e[r],a=s?.payload.payloadKind==="fern-runtime-bundle"?EZl:IZl;t.context.failAndThrow(`sdk-gen-api ${TZl(s,r)} is ${eW(s?.payload.body.length??0)}, exceeding the ${eW(a)} upload limit`,void 0,{code:T.Code.ConfigError})}let n=e.reduce((s,a)=>s+a.payload.body.length,t.specsTarGzBuffer.length);n>DZl&&t.context.failAndThrow(`sdk-gen-api source archive and target payloads total ${eW(n)}, exceeding the 50 MiB in-memory upload limit; reduce the source archive size, target payload size, or number of targets`,void 0,{code:T.Code.ConfigError});let i=e.reduce((s,a)=>a.payload.payloadKind==="fern-runtime-bundle"?s+a.payload.body.length:s,0);i>rxg&&t.context.failAndThrow(`sdk-gen-api runtime bundles total ${eW(i)}, exceeding the 25 MiB compressed limit; reduce the number or size of targets`,void 0,{code:T.Code.ConfigError}),OZl({buffer:t.specsTarGzBuffer,maxBytes:txg,label:"source archive",context:t.context});let o=0;for(let[s,a]of e.entries())o+=a.payload.payloadKind==="fern-runtime-bundle"?OZl({buffer:a.payload.body,maxBytes:nxg,label:TZl(a,s),context:t.context}):a.payload.body.length,o>RZl&&t.context.failAndThrow(`sdk-gen-api target payloads total ${eW(o)}, exceeding the 100 MiB decoded limit; reduce the number or size of targets`,void 0,{code:T.Code.ConfigError})}function TZl(e,t){return`${e?.payload.payloadKind??"target payload"} ${e?.targetIdSeed??t.toString()}`}function OZl({buffer:e,maxBytes:t,label:r,context:n}){let i;try{i=(0,BZl.gunzipSync)(e,{maxOutputLength:t+1})}catch(o){return Dxg(o)?n.failAndThrow(`sdk-gen-api ${r} exceeds the ${eW(t)} decompressed limit`,void 0,{code:T.Code.ConfigError}):n.failAndThrow(`sdk-gen-api ${r} is malformed gzip; regenerate it and retry`,o,{code:T.Code.ConfigError})}return i.length>t?n.failAndThrow(`sdk-gen-api ${r} is ${eW(i.length)} decompressed, exceeding the ${eW(t)} decompressed limit`,void 0,{code:T.Code.ConfigError}):i.length}function Dxg(e){return e instanceof Error&&"code"in e&&e.code==="ERR_BUFFER_TOO_LARGE"}function eW(e){return`${(e/(1024*1024)).toFixed(2)} MiB`}function kxg(e){return`${(e/1024).toFixed(2)} KiB`}function Fxg(e,t){let r=e.targets.find(n=>n.targetId===t);return r?.status==="failed"||r?.status==="succeeded"}async function Nxg(e,t,r,n){let i=r.targets.find(a=>a.targetId===t);if(i==null)return e.context.failAndThrow("sdk-gen-api response did not contain the requested target",void 0,{code:T.Code.InternalError});if(i.status==="failed")return i.publication?.status==="failure"?e.context.failAndThrow(Txg(i.publication.error),void 0,{code:T.Code.ContainerError}):e.context.failAndThrow(i.error?.message??"sdk-gen-api generation failed",void 0,{code:T.Code.ContainerError});if(i.status!=="succeeded")return e.context.failAndThrow(`sdk-gen-api build ended with status ${r.status} while target ${i.targetId} remained ${i.status}`,void 0,{code:T.Code.InternalError});if(i.result?.artifactUrl==null)return e.context.failAndThrow("sdk-gen-api target completed without an artifact URL",void 0,{code:T.Code.InternalError});e.absolutePathToPreview!=null?await BIi({s3PreSignedReadUrl:i.result.artifactUrl,absolutePathToLocalOutput:De(e.absolutePathToPreview,be.of(BWl(e.generatorInvocation.name,Mxg(e.generatorInvocation)))),context:e.context,skipFernignore:e.skipFernignore}):e.absolutePathToLocalOutputArchive!=null?await fZl({s3PreSignedReadUrl:i.result.artifactUrl,absolutePathToLocalOutput:e.absolutePathToLocalOutputArchive,context:e.context}):e.generatorInvocation.absolutePathToLocalOutput!=null&&await BIi({s3PreSignedReadUrl:i.result.artifactUrl,absolutePathToLocalOutput:e.generatorInvocation.absolutePathToLocalOutput,context:e.context,skipFernignore:e.skipFernignore});let o=i.result.actualVersion??((0,wTt.isAutoVersion)(e.sdkVersion)?void 0:e.sdkVersion),s=jxg(e,i,n);return(0,wTt.isAutoVersion)(e.sdkVersion)&&o!=null&&e.context.logger.info(`AUTO versioning picked new version: ${o}`),{createdSnippets:!1,snippetsS3PreSignedReadUrl:void 0,actualVersion:o,...s,publishTarget:o==null?void 0:Lxg(i,o)}}function jxg(e,t,r){if(r?.type!=="github")return{pullRequestUrl:void 0,noChangesDetected:void 0};let{publication:n}=t;if(n?.status!=="success"||n.publishTarget.type!=="github")return e.context.failAndThrow(`sdk-gen-api reported the build as succeeded but did not confirm the GitHub delivery to ${r.repository}`,void 0,{code:T.Code.InternalError});let i=zxg(n.output.pullRequestUrl),o=n.output.noChangesDetected===!0,s={pullRequestUrl:o?void 0:i,noChangesDetected:o?!0:void 0},a=n.output.pullRequestUrl!=null&&i==null;return Qxg(e.context.logger,r,s,a),s}function zxg(e){let t=e==null?void 0:$Zl(e);if(t==null)return;let{origin:r,pathname:n}=new URL(t);return`${r}${n}`}function Qxg(e,{repository:t,mode:r},{pullRequestUrl:n,noChangesDetected:i},o){if(i){e.info(`No changes detected for ${t}; nothing was delivered to GitHub.`);return}if(n!=null){e.info(`Pull request: ${n}`);return}if(o){e.warn(`sdk-gen-api returned a pull request link for ${t} that was not a safe HTTPS URL.`);return}r==="pull-request"&&e.warn(`sdk-gen-api did not return a pull request link for ${t}.`)}function Mxg(e){return e.sdkConfigTargetIndex}function Lxg(e,t){if(e.publication?.status!=="success")return;let r=e.publication.publishTarget.type,n=e.publication.publishTarget.identifier,i=$Zl(n);switch(r){case"npm":return{registry:r,label:"npm",version:t,identifier:n,...i!=null?{url:i}:{}};case"pypi":return{registry:r,label:"PyPI",version:t,identifier:n,...i!=null?{url:i}:{}};case"crates":return{registry:r,label:"crates.io",version:t,identifier:n,...i!=null?{url:i}:{}};case"maven":return{registry:r,label:"Maven Central",version:t,identifier:n,...i!=null?{url:i}:{}};case"github":case"unsupported":return}}function $Zl(e){try{let t=new URL(e);return t.protocol==="https:"&&t.username.length===0&&t.password.length===0?e:void 0}catch{return}}function _xg(e){let t=e[0];if(t==null)return;let r=(0,ece.createHash)("sha256").update(t.specsTarGzBuffer).digest("hex");for(let n of e.slice(1)){let i=(0,ece.createHash)("sha256").update(n.specsTarGzBuffer).digest("hex");if(n.apiName!==t.apiName||n.organization!==t.organization||n.token.value!==t.token.value||i!==r)throw new Error("Fern sdk-gen-api batch targets must share API, organization, token, and sources")}}function Uxg({apiName:e,organization:t,cliVersion:r,specsTarGzBuffer:n,targets:i}){if(i.length===0)throw new Error("Cannot create an empty Fern sdk-gen-api request");let o=[],s=i.map(({targetIdSeed:f,sourceSpecIndexes:m},g)=>{if(m==null)return o.some(y=>y.id==="default")||o.push({id:"default",specIndexes:"all"}),"default";let A=`target-${f??g.toString()}`;return o.push({id:A,specIndexes:m}),A}),a=i.map(({generatorInvocation:f,resolvedGeneratorVersion:m,sdkGenApiRoute:g,sdkName:A,sdkVersion:y,apiVersion:I,targetIdSeed:x,audiences:v,payload:w,requestedOutput:B,githubOptions:R},D)=>{let O=Gv(f.name);if(O==null)throw new Error(`Unsupported Fern SDK generator: ${f.name}`);let z=zIi(f,R),Y=lxg(B??z.requestedOutput,R),$=w.payloadKind==="fern-runtime-bundle"?z.package:w.package,ee=XZl(g,f,m),ae=IPs(g,f,m);return{targetId:(0,ece.createHash)("sha256").update(`${e}:${f.name}:${ae}:${x??D.toString()}`).digest("hex").slice(0,20),apiInputId:s[D]??"default",language:O,sdk:{name:A??e,version:y,...I!=null?{apiVersion:I}:{}},fernGenerator:{id:f.name,...ee!=null?{version:ee}:{}},payloadKind:w.payloadKind,...$!=null?{package:$}:{},invocation:{customConfig:U$(f.config)??{},keywords:f.keywords??[],smartCasing:f.smartCasing,smartCasingDigitWordBoundary:f.smartCasingDigitWordBoundary,disableExamples:f.disableExamples,...v!=null?{audiences:v}:{},...f.readme!=null?{readme:f.readme}:{},...f.settings!=null?{settings:f.settings}:{},...f.apiOverride!=null?{apiOverride:f.apiOverride}:{}},requestedOutput:Y}}),c=i.map(f=>(0,ece.createHash)("sha256").update(f.payload.body).digest("hex")),u=JSON.stringify({protocolVersion:2,organization:t,apiName:e,apiInputs:o,targets:a,payloadHashes:c,sourceHash:(0,ece.createHash)("sha256").update(n).digest("hex")}),l=a.some(f=>f.requestedOutput.type==="publish")?Vxg(u):void 0,p=a.some(f=>(0,wTt.isAutoVersion)(f.sdk.version))?(0,ece.randomUUID)():void 0,d=(0,ece.createHash)("sha256").update(n).update(JSON.stringify({protocolVersion:2,organization:t,apiName:e,credentialSetId:l,apiInputs:o,targets:a,payloadHashes:c,...p!=null?{autoVersionRunId:p}:{}})).digest("hex");return{protocolVersion:2,apiName:e,...r?{cliVersion:r}:{},idempotencyKey:d,...l!=null?{credentialSetId:l}:{},apiInputs:o,targets:a}}function Vxg(e){let t=(0,ece.createHash)("sha256").update(e).digest().subarray(0,16);t[6]=(t[6]??0)&15|128,t[8]=(t[8]??0)&63|128;let r=t.toString("hex");return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}Pc();ls();Ct();Wn();function R9e({apiName:e,organization:t,generatorInvocation:r}){let n=Gxg(r);return{apiName:e,organization:t,customConfig:U$(r.config),outputConfig:n??sr.GeneratorOutputConfig.local()}}function Gxg(e){let t=e.outputMode;switch(t.type){case"downloadFiles":return sr.GeneratorOutputConfig.local();case"publishV2":return qxg({publish:t.publishV2,version:e.version});case"githubV2":return Wxg({github:t.githubV2,language:e.language,version:e.version});case"publish":case"github":return;default:Ee(t)}}function qxg({publish:e,version:t}){switch(e.type){case"npmOverride":{let r=e.npmOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.npm({version:t,packageName:r.packageName,repoUrl:void 0}))}case"mavenOverride":{let r=e.mavenOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.maven({version:t,coordinate:r.coordinate,repoUrl:void 0}))}case"pypiOverride":{let r=e.pypiOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.pypi({version:t,packageName:r.coordinate,repoUrl:void 0}))}case"rubyGemsOverride":{let r=e.rubyGemsOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.rubygems({version:t,packageName:r.packageName,repoUrl:void 0}))}case"nugetOverride":{let r=e.nugetOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.nuget({version:t,packageName:r.packageName,repoUrl:void 0}))}case"cratesOverride":{let r=e.cratesOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.crates({version:t,packageName:r.packageName,repoUrl:void 0}))}case"postman":return;default:Ee(e)}}function Wxg({github:e,version:t,language:r}){let n=Hxg({owner:e.owner,repo:e.repo});if(r===Hr.GenerationLanguage.GO)return sr.GeneratorOutputConfig.publish(sr.PublishInfo.go({version:t,repoUrl:n}));if(r===Hr.GenerationLanguage.SWIFT)return sr.GeneratorOutputConfig.publish(sr.PublishInfo.swift({version:t,repoUrl:n}));let i=e.publishInfo;if(i!=null)switch(i.type){case"maven":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.maven({version:t,coordinate:i.coordinate,repoUrl:n}));case"npm":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.npm({version:t,packageName:i.packageName,repoUrl:n}));case"pypi":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.pypi({version:t,packageName:i.packageName,repoUrl:n}));case"rubygems":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.rubygems({version:t,packageName:i.packageName,repoUrl:n}));case"nuget":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.nuget({version:t,packageName:i.packageName,repoUrl:n}));case"crates":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.crates({version:t,packageName:i.packageName,repoUrl:n}));case"postman":return;default:Ee(i)}}function Hxg({owner:e,repo:t}){return`https://github.com/${e}/${t}`}Fi();q3();kt();e8();var Py=Ae(Top(),1),b6=Ae(CA(),1),Bop=Ae(require("path"),1),EDg="0.0.1";function rnr(e){if(e.raw?.github!=null&&typeof e.raw.github=="object"&&"license"in e.raw.github){let t=e.raw.github;if(t.license!=null){if(typeof t.license=="string")return{type:"basic",value:t.license};if(typeof t.license=="object"&&"custom"in t.license)return{type:"custom",value:t.license.custom}}}if(e.raw?.metadata?.license!=null){let t=e.raw.metadata.license;if(typeof t=="string")return{type:"basic",value:t};if(typeof t=="object"&&"custom"in t)return{type:"custom",value:t.custom}}}function IDg(e,t){let r=rnr(e);if(r!=null){if(r.type==="basic"){if(r.value==="MIT"||r.value==="Apache-2.0")return Py.FernGeneratorExec.LicenseConfig.basic({id:r.value==="MIT"?Py.FernGeneratorExec.LicenseId.Mit:Py.FernGeneratorExec.LicenseId.Apache2})}else if(r.type==="custom")return Py.FernGeneratorExec.LicenseConfig.custom({filename:Bop.basename(r.value)})}}function sCi(e,t={}){let r=t.omitPublishCredentials??!1;return e!=null?Yr.GithubPublishInfo._visit(e,{npm:n=>{let i=(n.token??"").trim(),o=HBs(i),s=i!=="";return Py.FernGeneratorExec.GithubPublishInfo.npm({registryUrl:n.registryUrl,packageName:n.packageName,tokenEnvironmentVariable:(0,b6.EnvironmentVariable)(r?o!=null?"<USE_OIDC>":"":o!=null?"<USE_OIDC>":i.startsWith("${")&&i.endsWith("}")?i.slice(2,-1).trim():""),shouldGeneratePublishWorkflow:o!=null||s})},maven:n=>Py.FernGeneratorExec.GithubPublishInfo.maven({registryUrl:n.registryUrl,coordinate:n.coordinate,usernameEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.credentials?.username??""),passwordEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.credentials?.password??""),signature:n.signature!=null&&!r?{keyIdEnvironmentVariable:(0,b6.EnvironmentVariable)(n.signature.keyId??""),passwordEnvironmentVariable:(0,b6.EnvironmentVariable)(n.signature.password??""),secretKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(n.signature.secretKey??"")}:void 0}),pypi:n=>{let i=(n.credentials?.password??"").trim(),o=HBs(i),s=n.credentials!=null;return Py.FernGeneratorExec.GithubPublishInfo.pypi({registryUrl:n.registryUrl,packageName:n.packageName,usernameEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":"PYPI_USERNAME"),passwordEnvironmentVariable:(0,b6.EnvironmentVariable)(r?o!=null?"OIDC":"":o!=null?"OIDC":"PYPI_PASSWORD"),shouldGeneratePublishWorkflow:o!=null||s,pypiMetadata:n.pypiMetadata})},rubygems:n=>Py.FernGeneratorExec.GithubPublishInfo.rubygems({registryUrl:n.registryUrl,packageName:n.packageName,apiKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.apiKey??"")}),postman:n=>Py.FernGeneratorExec.GithubPublishInfo.postman({apiKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.apiKey??""),workspaceIdEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.workspaceId??"")}),nuget:n=>{let i=(n.apiKey??"").trim(),o=HBs(i);return Py.FernGeneratorExec.GithubPublishInfo.nuget({registryUrl:n.registryUrl,packageName:n.packageName,apiKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(r?o!=null?"<USE_OIDC>":"":o!=null?"<USE_OIDC>":i.startsWith("${")&&i.endsWith("}")?i.slice(2,-1).trim():""),shouldGeneratePublishWorkflow:o!=null?!0:void 0})},crates:n=>Py.FernGeneratorExec.GithubPublishInfo.crates({registryUrl:n.registryUrl,packageName:n.packageName,tokenEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.token??"")}),_other:()=>{}}):void 0}function HBs(e){if(e==="OIDC"||e==="<USE_OIDC>")return e}function nOt({generatorInvocation:e,customConfig:t,workspaceName:r,organization:n,outputVersion:i=EDg,absolutePathToSnippet:o,absolutePathToSnippetTemplates:s,absolutePathToFernConfig:a,writeUnitTests:c,generateOauthClients:u,generatePaginatedClients:l,whiteLabel:p,publishToRegistry:d,omitPublishCredentials:f,paths:m}){let g=IDg(e,a),{snippetPath:A,snippetTemplatePath:y,irPath:I,outputDirectory:x}=m,v=e.outputMode._visit({publish:B=>{if(d===!0){let R=CDg(B,f===!0);return{...Pop(i,R,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}}return{...Oop(i,B,e,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}},publishV2:B=>{if(d===!0){let R=xDg(B,f===!0);return{...Pop(i,R,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}}return{...Oop(i,B,e,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}},downloadFiles:()=>({mode:Py.FernGeneratorExec.OutputMode.downloadFiles(),path:x,snippetFilepath:A,publishingMetadata:e.publishMetadata}),github:B=>{let R={mode:Py.FernGeneratorExec.OutputMode.github({repoUrl:`https://github.com/${B.owner}/${B.repo}`,version:i,publishInfo:sCi(B.publishInfo,{omitPublishCredentials:f}),installationToken:void 0}),path:x,publishingMetadata:e.publishMetadata};return o!==void 0&&(R.snippetFilepath=A),s!==void 0&&(R.snippetTemplateFilepath=y),R},githubV2:B=>{let R=B._visit({commitAndRelease:O=>`https://github.com/${O.owner}/${O.repo}`,push:O=>`https://github.com/${O.owner}/${O.repo}`,pullRequest:O=>`https://github.com/${O.owner}/${O.repo}`,_other:()=>{throw new T({message:"Encountered unknown github mode",code:T.Code.InternalError})}}),D={mode:Py.FernGeneratorExec.OutputMode.github({repoUrl:R,version:i,publishInfo:sCi(B.publishInfo,{omitPublishCredentials:f})}),path:x,publishingMetadata:e.publishMetadata};return o!==void 0&&(D.snippetFilepath=A),s!==void 0&&(D.snippetTemplateFilepath=y),D},_other:()=>{throw new T({message:"Output type did not match any of the types supported by Fern",code:T.Code.InternalError})}}),w=wDg(e,i);return{irFilepath:I,output:v,publish:w,customConfig:t,workspaceName:r,organization:n,environment:Py.FernGeneratorExec.GeneratorEnvironment.local(),dryRun:!1,whitelabel:p??!1,writeUnitTests:c,generateOauthClients:u,generatePaginatedClients:l,license:g}}function Oop(e,t,r,n){let{outputDirectory:i}=n,o;"registryOverrides"in t?o=t.registryOverrides.maven??t.registryOverrides.npm:o!=null&&(o=t._visit({mavenOverride:a=>a,npmOverride:a=>a,pypiOverride:a=>a,rubyGemsOverride:a=>a,postman:a=>a,nugetOverride:a=>a,cratesOverride:a=>a,_other:()=>{}}));let s="";return r.raw?.github!=null&&(lwe(r.raw.github)?s=Jx(r.raw.github.uri).repoUrl:s=r.raw?.github.repository),{mode:Py.FernGeneratorExec.OutputMode.github({repoUrl:s,version:e}),path:i}}function Pop(e,t,r){let{outputDirectory:n}=r,{registries:i,registriesV2:o}=vDg(t);return{mode:Py.FernGeneratorExec.OutputMode.publish({registries:i,registriesV2:o,publishTarget:t,version:e}),path:n}}function vDg(e){let t=structuredClone(Rop),r=structuredClone(Dop);if(e==null)return{registries:t,registriesV2:r};switch(e.type){case"npm":t.npm={registryUrl:e.registryUrl,token:e.token,scope:""},r.npm={registryUrl:e.registryUrl,token:e.token,packageName:e.packageName};break;case"maven":t.maven={registryUrl:e.registryUrl,username:e.username,password:e.password,group:"",signature:e.signature},r.maven={registryUrl:e.registryUrl,username:e.username,password:e.password,coordinate:e.coordinate,signature:e.signature};break;case"pypi":r.pypi={registryUrl:e.registryUrl,username:e.username,password:e.password,packageName:e.packageName,pypiMetadata:e.pypiMetadata};break;case"rubygems":r.rubygems={registryUrl:e.registryUrl,apiKey:e.apiKey,packageName:e.packageName};break;case"nuget":r.nuget={registryUrl:e.registryUrl,apiKey:e.apiKey,packageName:e.packageName};break;case"crates":r.crates={registryUrl:e.registryUrl,token:e.token,packageName:e.packageName};break;default:break}return{registries:t,registriesV2:r}}function CDg(e,t){if("registryOverrides"in e){let r=e.registryOverrides;if(r.npm!=null)return Py.FernGeneratorExec.GeneratorPublishTarget.npm({registryUrl:r.npm.registryUrl,token:t?"":r.npm.token,packageName:r.npm.packageName});if(r.maven!=null)return Py.FernGeneratorExec.GeneratorPublishTarget.maven({registryUrl:r.maven.registryUrl,username:t?"":r.maven.username??"",password:t?"":r.maven.password??"",coordinate:r.maven.coordinate??"",signature:void 0})}}function xDg(e,t){return e._visit({npmOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.npm({registryUrl:r.registryUrl,token:t?"":r.token,packageName:r.packageName}):void 0,mavenOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.maven({registryUrl:r.registryUrl,username:t?"":r.username,password:t?"":r.password,coordinate:r.coordinate,signature:t?void 0:r.signature??void 0}):void 0,pypiOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.pypi({registryUrl:r.registryUrl,username:t?"":r.username,password:t?"":r.password,packageName:r.coordinate,pypiMetadata:r.pypiMetadata??void 0}):void 0,rubyGemsOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.rubygems({registryUrl:r.registryUrl,apiKey:t?"":r.apiKey,packageName:r.packageName}):void 0,nugetOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.nuget({registryUrl:r.registryUrl,apiKey:t?"":r.apiKey,packageName:r.packageName}):void 0,cratesOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.crates({registryUrl:r.registryUrl,token:t?"":r.token,packageName:r.packageName}):void 0,postman:r=>Py.FernGeneratorExec.GeneratorPublishTarget.postman({apiKey:t?"":r.apiKey,workspaceId:t?"":r.workspaceId}),_other:()=>{}})}function wDg(e,t){let r=e.outputMode._visit({publish:()=>{},publishV2:()=>{},downloadFiles:()=>{},github:o=>o.publishInfo,githubV2:o=>o._visit({push:s=>s.publishInfo,commitAndRelease:s=>s.publishInfo,pullRequest:s=>s.publishInfo,_other:()=>{}}),_other:()=>{}});if(r==null||r.type!=="pypi")return;let n=(r.credentials?.password??"").trim();if(n!=="OIDC"&&n!=="<USE_OIDC>")return;let i=structuredClone(Dop);return i.pypi={registryUrl:r.registryUrl,username:"__token__",password:"OIDC",packageName:r.packageName,pypiMetadata:r.pypiMetadata},{registries:structuredClone(Rop),registriesV2:i,publishTarget:void 0,version:t}}var Rop={maven:{registryUrl:"",username:"",password:"",group:"",signature:void 0},npm:{registryUrl:"",token:"",scope:""}},Dop={maven:{registryUrl:"",username:"",password:"",coordinate:"",signature:void 0},npm:{registryUrl:"",token:"",packageName:""},pypi:{registryUrl:"",username:"",password:"",packageName:"",pypiMetadata:void 0},rubygems:{registryUrl:"",apiKey:"",packageName:""},nuget:{registryUrl:"",apiKey:"",packageName:""},crates:{registryUrl:"",token:"",packageName:""}};Ct();var ysp=Ae(Asp(),1);Ui();var bsp=require("util"),fFg=(0,bsp.promisify)(ysp.default);async function onr(e,t,r){let n=CQt(e,t),i=[];for(let o of n){let s=await Promise.all(o.map(async a=>{try{let c=await fFg(a);return c==null||c.height==null||c.width==null?void 0:{filePath:a,width:c.width,height:c.height,blurDataUrl:void 0}}catch(c){r.logger.error(`Failed to measure image size for ${a}. ${c?.message}`);return}}));i.push(...s.filter(la))}return new Map(i.map(o=>[o.filePath,o]))}Ct();function snr(e,t){if(e.startsWith("https://")||e.startsWith("http://"))return e;switch(t){case"github":return`https://github.com/${e}`;case"gitlab":return`https://gitlab.com/${e}`;case"bitbucket":return`https://bitbucket.org/${e}`;default:Ee(t)}}function mRs(e){let t=e.sdkConfigPath==null?"":`; SDK Config: ${e.sdkConfigPath.join(".")}`;return`[${e.severity}] [${e.code}] ${e.path.join(".")}: ${e.reason}${t}; ${e.suggestedAction}`}function Esp({workspace:e,generatorInvocation:t,audiences:r,replay:n,sourceArchive:i,mapFernGroupToSdkConfig:o}){let s=o({fernWorkspace:e,replay:n,group:{groupName:"sdk-gen-api",audiences:r,generators:[t],reviewers:void 0},source:dFg(i)});return{payloadKind:"sdk-config-v1",body:Buffer.from(JSON.stringify(s.sdkConfig),"utf8"),diagnostics:s.diagnostics}}function dFg(e){return{specs:e.specIndexes.map((r,n)=>{let i=e.manifest.specs[r];if(i==null)throw new Error(`Fern source manifest does not contain selected index ${r}`);if(!mFg(i))throw new Error(`SDK Config generation does not support Fern source type ${i.type} (${i.specPath})`);return{id:`source-${n}`,type:i.type,path:i.specPath.replace(/^\/+/,""),...i.namespace==null?{}:{namespace:i.namespace},...i.apiImportSettings==null?{}:{apiImportSettings:i.apiImportSettings},...i.overridePaths==null||i.overridePaths.length===0?{}:{overrides:i.overridePaths}}})}}function mFg(e){return e.type==="openapi"||e.type==="asyncapi"||e.type==="graphql"}Pc();ls();kd();Ct();LI();Ah();Gme();Ct();Uy();On();Ui();function wye({context:e,violations:t,logWarnings:r,logSummary:n=!0,logBreadcrumbs:i=!0,elapsedMillis:o=0}){let s=[],a={};for(let l of t){let p=JSON.stringify(l.nodePath),d=a[p]??[];d.some(m=>m.message===l.message&&m.nodePath.length===l.nodePath.length&&m.nodePath.every((g,A)=>T3(g,l.nodePath[A]))&&m.relativeFilepath===l.relativeFilepath&&m.severity===l.severity)||(s.push(l),a[p]=[...d,l])}t=s;let c=IFg(t),u=hFg(t);for(let l of Array.from(u.keys()).sort()){let p=u.get(l);if(p){let d=p.violations[0]?.relativeFilepath??"";gFg({logWarnings:r,logBreadcrumbs:i,configRelativeFilepath:d,nodePath:p.nodePath,violations:p.violations,context:e})}}return n&&EFg({context:e,stats:c,logWarnings:r,elapsedMillis:o}),{hasErrors:c.numFatal>0}}function hFg(e){let t={};for(let r of e){let i=r.nodePath.length===0?`file:${r.relativeFilepath}`:`node:${JSON.stringify(r.nodePath)}`;t[i]||(t[i]={nodePath:r.nodePath,violations:[]}),t[i].violations.push(r)}return new Map(Object.entries(t))}function gFg({logWarnings:e,logBreadcrumbs:t,configRelativeFilepath:r,nodePath:n,violations:i,context:o}){let s=AFg(i);if(s==="warning"&&!e)return;let a="",c=i.map(u=>u.severity==="warning"&&!e?null:(a===""&&(a=u.relativeFilepath),`${bFg(u.severity)} ${u.message}`)).filter(u=>u!=null).join(`
4094
+ `):void 0);for(let i of t.logs.slice(this.lengthOfLastLogs))this.context.logger.log(LCg(i.level),i.message),this.#n==null&&(this.#n=NCg(i.message)??this.#n),this.cachedReplayResult==null&&(this.cachedReplayResult=jCg(i.message));this.lengthOfLastLogs=t.logs.length;let n=i=>{this.context.logger.debug(`Generated files. ${hye("View here",i,{fallback:(o,s)=>`${o}: ${s}`})}`)};return await t.status._visit({notStarted:It,running:It,failed:({message:i,s3PreSignedReadUrl:o})=>{o!=null&&n(o),this.context.failAndThrow(i,void 0,{code:T.Code.ContainerError})},finished:async i=>{if(i.s3PreSignedReadUrlV2!=null){n(i.s3PreSignedReadUrlV2);let o=this.getAbsolutePathToLocalOutput();o!=null&&await BIi({s3PreSignedReadUrl:i.s3PreSignedReadUrlV2,absolutePathToLocalOutput:o,context:this.context})}if(this.absolutePathToPreview==null)for(let o of r)this.context.logger.info(`Published ${o}`);this.#e=!0,this.#t=i.createdSnippets!=null?i.createdSnippets:!1,this.#r=i.snippetsS3PreSignedReadUrl,this.#o=i.pullRequestUrl,this.#s=i.noChangesDetected,i.actualVersion!=null&&(this.#n=i.actualVersion),this.emitReplayTelemetryIfReady()},_other:()=>{this.context.logger.warn("Received unknown update type: "+t.status.type)}}),this.#e?{createdSnippets:this.#t,snippetsS3PreSignedReadUrl:this.#r,actualVersion:this.#n,pullRequestUrl:this.#o,noChangesDetected:this.#s,publishTarget:this.#i}:void 0}getAbsolutePathToLocalOutput(){return this.absolutePathToPreview!=null?De(this.absolutePathToPreview,be.of(sNe.default.basename(this.generatorInvocation.name))):this.generatorInvocation.absolutePathToLocalOutput}emitReplayTelemetryIfReady(){if(!this.replayEventEmitted&&this.cachedReplayResult!=null&&!this.telemetryContext.disableTelemetry)try{let t={success:!0,steps:{replay:this.cachedReplayResult},warnings:[]},n={...(0,lZl.buildReplayTelemetryProps)({pipelineResult:t,generatorName:this.generatorInvocation.name,generatorVersion:this.generatorInvocation.version,cliVersion:this.telemetryContext.cliVersion,repoUri:zCg(this.generatorInvocation),automationMode:this.telemetryContext.automationMode,autoMerge:this.telemetryContext.autoMerge,skipIfNoDiff:this.telemetryContext.skipIfNoDiff,hasBreakingChanges:!1,versionArg:this.telemetryContext.versionArg,versionBump:this.telemetryContext.versionBump,replayConfigEnabled:this.telemetryContext.replayConfigEnabled,noReplayFlag:this.telemetryContext.noReplayFlag,githubMode:QCg(this.generatorInvocation),previewMode:this.absolutePathToPreview!=null,durationMs:Date.now()-this.taskStartedAtMs}),surface:"fiddle",org_id:this.telemetryContext.orgId};this.context.instrumentPostHogEvent({command:"replay",properties:n}),this.context.logger.debug(`[telemetry] replay event sent: ${JSON.stringify(n)}`),this.replayEventEmitted=!0}catch(t){this.context.logger.debug(`[telemetry] failed to send replay event: ${String(t)}`)}}#e=!1;get isFinished(){return this.#e}#t=!1;get createdSnippets(){return this.#t}#r=void 0;get snippetsS3PreSignedReadUrl(){return this.#r}#n=void 0;get actualVersion(){return this.#n}#i=void 0;get publishTarget(){return this.#i}#o=void 0;get pullRequestUrl(){return this.#o}#s=void 0;get noChangesDetected(){return this.#s}},FCg=/Tagging release (v?\d+\.\d+\.\d+(?:-[\w.-]+)?)/;function NCg(e){let t=e.match(FCg);if(t?.[1]!=null)return t[1].replace(/^v/,"")}function jCg(e){let t=e.match(kCg);if(t?.[1]!=null)try{return JSON.parse(t[1])?.steps?.replay}catch{return}}function zCg(e){let t=e.raw?.github;return t==null?"":"uri"in t&&typeof t.uri=="string"?t.uri:"repository"in t&&typeof t.repository=="string"?t.repository:""}function QCg(e){let t=e.raw?.github;if(t!=null&&"mode"in t){if(t.mode==="pull-request")return"pull-request";if(t.mode==="commit-and-release")return"commit-and-release"}return"push"}async function BIi({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r,skipFernignore:n=!1}){try{let i=await _Cg(t),o=await UCg(t);!n&&i&&o?await VCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):!n&&i&&!o?await GCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}):await MCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}),r.logger.info(me.green(`Downloaded to ${t}`))}catch(i){r.failAndThrow("Failed to download files",i,{code:T.Code.NetworkError})}}async function fZl({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){try{let n=await bg.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(fPs)});await(0,Kj.mkdir)(sNe.default.dirname(t),{recursive:!0}),await(0,OIi.pipeline)(n.data,(0,Trr.createWriteStream)(t)),r.logger.info(me.green(`Downloaded to ${t}`))}catch(n){r.failAndThrow("Failed to download archive",n,{code:T.Code.NetworkError})}}var fPs=300*1e3;async function MCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t}){let r=await bg.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(fPs)}),n=await PIi.default.dir({prefix:"fern",unsafeCleanup:!0}),i=sNe.default.join(n.path,"output.zip");await(0,OIi.pipeline)(r.data,(0,Trr.createWriteStream)(i)),await pPs(t),await(0,Kj.mkdir)(t,{recursive:!0}),await hZl(i,t)}async function pPs(e){await Ut(e)&&(await dZl(e),await(0,Kj.rm)(e,{recursive:!0,force:!0}))}async function dZl(e){try{let t=await(0,Kj.readdir)(e,{withFileTypes:!0});for(let r of t){let n=_t.of(sNe.default.join(e,r.name));r.isDirectory()&&await dZl(n);try{await(0,Kj.chmod)(n,493)}catch{}}await(0,Kj.chmod)(e,493)}catch{}}function LCg(e){switch(e){case"DEBUG":return Xn.Debug;case"INFO":return Xn.Info;case"WARN":return Xn.Warn;case"ERROR":return Xn.Error;default:return Xn.Info}}async function _Cg(e){let t=De(e,be.of(nT));return await Ut(t)}async function UCg(e){let t=De(e,be.of(".git"));return await Ut(t)}async function YY(e,t,r){return(await Oa(r.logger,"git",e,{cwd:t,doNotPipeOutput:!0})).stdout}async function VCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=De(t,be.of(nT)),i=await Q$({absolutePathToFernignore:n});await YY(["rm","-rf","."],t,r),await mZl({s3PreSignedReadUrl:e,outputPath:t}),await YY(["add","."],t,r),await YY(["reset","--",...i],t,r),await YY(["restore","."],t,r)}async function GCg({s3PreSignedReadUrl:e,absolutePathToLocalOutput:t,context:r}){let n=_t.of((await PIi.default.dir({})).path),i=De(t,be.of(nT)),o=await Q$({absolutePathToFernignore:i});await(0,Kj.cp)(t,n,{recursive:!0}),await YY(["init"],n,r),await YY(["add","."],n,r),await YY(["-c","user.name=fern","-c","user.email=hey@buildwithfern.com","-c","commit.gpgsign=false","commit","--allow-empty","--no-verify","-m","init"],n,r),await YY(["rm","-rf","."],n,r),await mZl({s3PreSignedReadUrl:e,outputPath:n}),await YY(["add","."],n,r),await YY(["reset","--",...o],n,r),await YY(["restore","."],n,r),await pPs(De(n,be.of(".git"))),await pPs(t),await(0,Kj.cp)(n,t,{recursive:!0})}async function mZl({s3PreSignedReadUrl:e,outputPath:t}){let r=await bg.get(e,{responseType:"stream",timeout:6e4,signal:AbortSignal.timeout(fPs)}),n=await PIi.default.dir({prefix:"fern",unsafeCleanup:!0}),i=sNe.default.join(n.path,"output.zip");await(0,OIi.pipeline)(r.data,(0,Trr.createWriteStream)(i)),await hZl(i,t)}async function hZl(e,t){return new Promise((r,n)=>{pZl.default.open(e,{lazyEntries:!0},(i,o)=>{if(i||!o){n(i??new Error("Failed to open zip file"));return}o.on("error",n),o.on("end",r),o.on("entry",s=>{let a=sNe.default.join(t,s.fileName);if(s.fileName.endsWith("/")){(0,Kj.mkdir)(a,{recursive:!0}).then(()=>o.readEntry()).catch(n);return}(0,Kj.mkdir)(sNe.default.dirname(a),{recursive:!0}).then(()=>{o.openReadStream(s,(c,u)=>{if(c||!u){n(c??new Error("Failed to open read stream"));return}u.pipe((0,Trr.createWriteStream)(a)).on("finish",()=>o.readEntry()).on("error",n)})}).catch(n)}),o.readEntry()})})}function dPs(e){return[...new Set(e.filter(t=>t.length>0))].sort((t,r)=>r.length-t.length)}function XY(e,t){return dPs(t).reduce((r,n)=>r.replaceAll(n,"[REDACTED]"),e)}function mPs(e,t){return XY(e,t)}var qCg=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*)(?:\.(?:0|[1-9]\d*|\d*[A-Za-z-][0-9A-Za-z-]*))*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/;function CTt(e){let t=qCg.exec(e);return t===null||t[1]===void 0||t[2]===void 0||t[3]===void 0?null:{core:[t[1],t[2],t[3]],prerelease:t[4]?.split(".")??null}}function gZl(e,t){for(let r=0;r<e.core.length;r+=1){let n=AZl(e.core[r]??"",t.core[r]??"");if(n!==0)return n}return WCg(e.prerelease,t.prerelease)}function WCg(e,t){if(e===null||t===null)return e===t?0:e===null?1:-1;let r=Math.max(e.length,t.length);for(let n=0;n<r;n+=1){let i=e[n],o=t[n];if(i===void 0||o===void 0)return i===o?0:i===void 0?-1:1;let s=HCg(i,o);if(s!==0)return s}return 0}function HCg(e,t){let r=/^\d+$/.test(e),n=/^\d+$/.test(t);return r&&n?AZl(e,t):r!==n?r?-1:1:e===t?0:e<t?-1:1}function AZl(e,t){return e.length!==t.length?e.length<t.length?-1:1:e===t?0:e<t?-1:1}var hPs=class extends Error{name="GeneratorConfigPolicyInvariantError";code="INVALID_GENERATOR_CUTOVER_POLICY";generatorId;language;cutoverVersion;retryable=!1;recommendedAction="FIX_GENERATOR_CUTOVER_POLICY";constructor(t,r){super(`Generator ${t} has an invalid cutover version: ${r.cutoverVersion}`),this.generatorId=t,this.language=r.language,this.cutoverVersion=r.cutoverVersion}};function KCg(e){return new Map(e.map(([t,r])=>{let n=CTt(r.cutoverVersion);if(n===null)throw new hPs(t,r);return[t,{...r,parsedCutoverVersion:n}]}))}var JCg=KCg([["fernapi/fern-typescript",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-typescript-sdk",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-typescript-node-sdk",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-typescript-browser-sdk",{language:"typescript",cutoverVersion:"4.0.0"}],["fernapi/fern-python-sdk",{language:"python",cutoverVersion:"6.0.0"}],["fernapi/fern-java-sdk",{language:"java",cutoverVersion:"5.0.0"}],["fernapi/fern-kotlin-sdk",{language:"kotlin",cutoverVersion:"5.0.0"}],["fernapi/fern-go-sdk",{language:"go",cutoverVersion:"2.0.0"}],["fernapi/fern-csharp-sdk",{language:"csharp",cutoverVersion:"3.0.0"}],["fernapi/fern-php-sdk",{language:"php",cutoverVersion:"3.0.0"}],["fernapi/fern-ruby-sdk",{language:"ruby",cutoverVersion:"2.0.0"}],["fernapi/fern-ruby-sdk-v2",{language:"ruby",cutoverVersion:"2.0.0"}],["fernapi/fern-rust-sdk",{language:"rust",cutoverVersion:"1.0.0"}],["fernapi/fern-swift-sdk",{language:"swift",cutoverVersion:"1.0.0"}],["fernapi/fern-cli",{language:"cli",cutoverVersion:"1.0.0"}],["fernapi/fern-cli-generator",{language:"cli",cutoverVersion:"1.0.0"}],["fernapi/fern-mcp-server",{language:"mcp",cutoverVersion:"0.1.0"}]]);function Orr(e){return JCg.get(e)}var $ae=class extends Error{name="GeneratorConfigCompatibilityError";code;generatorId;language;requestedVersion;cutoverVersion;receivedConfigKind;expectedConfigKind;expectedLanguage;retryable=!1;recommendedAction;constructor(t){super(t.message),this.code=t.code,this.generatorId=t.generatorId,this.language=t.language,this.requestedVersion=t.requestedVersion,this.cutoverVersion=t.cutoverVersion,this.receivedConfigKind=t.receivedConfigKind,this.expectedConfigKind=t.expectedConfigKind,this.expectedLanguage=t.expectedLanguage,this.recommendedAction=t.recommendedAction}};function gPs(e){return Orr(e)?.language}function O9e(e){let t=gye(e),r=e.configKind;if(!XCg(r))throw T9e(e,{code:"INVALID_CONFIG_KIND",message:"Configuration kind must be legacy-fern or sdk-config-v1",cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:t.configKind,recommendedAction:"USE_SUPPORTED_CONFIG_KIND"},r);if(r!==t.configKind){let n=Orr(e.generatorId);throw n===void 0?new Error(`Missing validated generator policy for ${e.generatorId}`):YCg(e,n,t.configKind,r)}return t}function gye(e){let t=Orr(e.generatorId);if(t===void 0)throw T9e(e,{code:"UNKNOWN_GENERATOR",message:`Unknown first-party generator: ${e.generatorId}`,cutoverVersion:null,expectedLanguage:null,expectedConfigKind:null,recommendedAction:"USE_KNOWN_GENERATOR_ID"});if(t.language!==e.language)throw T9e(e,{code:"GENERATOR_LANGUAGE_MISMATCH",message:`Generator ${e.generatorId} targets ${t.language}, not ${e.language}`,cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:null,recommendedAction:"USE_GENERATOR_LANGUAGE"});let r=CTt(e.requestedVersion);if(r===null)throw T9e(e,{code:"INVALID_GENERATOR_VERSION",message:`Generator version must be an exact semantic version: ${e.requestedVersion}`,cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:null,recommendedAction:"USE_EXACT_GENERATOR_VERSION"});let n=gZl(r,t.parsedCutoverVersion)<0,i=n?"legacy-fern":"sdk-config-v1";return{generatorId:e.generatorId,language:t.language,requestedVersion:e.requestedVersion,cutoverVersion:t.cutoverVersion,configKind:i,payloadKind:n?"fern-runtime-bundle":"sdk-config-v1"}}function P9e({generatorId:e,language:t,configKind:r,versionSource:n}){let i=Orr(e);if(i===void 0)throw T9e({generatorId:e,language:t,requestedVersion:"unpinned"},{code:"UNKNOWN_GENERATOR",message:`Unknown first-party generator: ${e}`,cutoverVersion:null,expectedLanguage:null,expectedConfigKind:null,recommendedAction:"USE_KNOWN_GENERATOR_ID"});if(i.language!==t)throw T9e({generatorId:e,language:t,requestedVersion:"unpinned"},{code:"GENERATOR_LANGUAGE_MISMATCH",message:`Generator ${e} targets ${i.language}, not ${t}`,cutoverVersion:i.cutoverVersion,expectedLanguage:i.language,expectedConfigKind:null,recommendedAction:"USE_GENERATOR_LANGUAGE"});let o={generatorId:e,language:t,cutoverVersion:i.cutoverVersion};if(r==="legacy-fern"){if(n!=="fern-latest")throw new Error("Legacy Fern unpinned routes must use fern-latest as their version source");return{...o,versionSource:n,configKind:r,payloadKind:"fern-runtime-bundle"}}return{...o,versionSource:n,configKind:r,payloadKind:"sdk-config-v1"}}function APs(e){return P9e({...e,configKind:"sdk-config-v1",versionSource:"sdk-config-omitted"})}function T9e(e,t,r=e.configKind){return new $ae({generatorId:e.generatorId,language:e.language,requestedVersion:e.requestedVersion,receivedConfigKind:r,...t})}function YCg(e,t,r,n){let i=r==="legacy-fern";return T9e(e,{code:i?"LEGACY_FERN_CONFIG_REQUIRED":"SDK_CONFIG_V1_REQUIRED",message:i?`Generator ${e.generatorId} ${e.requestedVersion} requires legacy Fern configuration`:`Generator ${e.generatorId} ${e.requestedVersion} requires SDK Config v1`,cutoverVersion:t.cutoverVersion,expectedLanguage:t.language,expectedConfigKind:r,recommendedAction:i?"USE_LEGACY_FERN_CONFIG":"USE_SDK_CONFIG_V1"},n)}function XCg(e){return e==="legacy-fern"||e==="sdk-config-v1"}var ZY="latest",yPs="__fern_sdk_config_unpinned__";function Prr(e){return e===yPs}function bPs(e){return e??yPs}function RIi(e,t){return e.requestedVersion!=null?!1:e.versionSource==="fern-latest"?t===ZY:Prr(t)}var $Cg=2e3,yZl=900*1e3,bZl=6e4,STt=64,exg=25*1024*1024,txg=25*1024*1024,EZl=5*1024*1024,IZl=25*1024*1024,rxg=25*1024*1024,RZl=100*1024*1024,nxg=RZl,DZl=50*1024*1024,ixg=1024*1024,kZl=60*1024*1024,EPs=20*1024,oxg="unpinned",sxg=new Set(["localhost","127.0.0.1","[::1]","::1"]),axg=new Intl.Collator("en",{numeric:!0});function FZl(e,t){return t?{type:"download"}:e}var cxg=/^[a-z][a-z0-9_]{0,63}$/,kIi=class extends Error{status;code;constructor(t,r,n){super(t),this.name="FernSdkGenApiSubmissionError",this.status=r,this.code=n}},Brr="use-sdk-gen-api",TTt="FERN_USE_SDK_GEN_API";function Rrr(){let e=process.env[TTt]?.trim().toLowerCase();if(e==="true")return!0;if(e==="false")return!1}function OTt(e){let t=Rrr();return t!=null?Promise.resolve(t):non().isEnabled(Brr,NZl(e))}function vPs(e){let t=Rrr();return t??non().getCachedValue(Brr,NZl(e))}async function Drr({organization:e,generatorNames:t}){let r=[...new Set(t)],n=await Promise.all(r.map(async i=>{try{return await OTt({organization:e,generatorName:i})}catch{return!1}}));return new Map(r.map((i,o)=>[i,n[o]===!0]))}function NZl({organization:e,generatorName:t}){let r=Gv(t);return{org:e,generator:t,...r!=null?{language:r}:{}}}var uxg=new Set(["fernapi/fern-mcp-server"]);function B9e(e){return uxg.has(e)}function jZl({generatorName:e,version:t}){let r=Gv(e);return r==null||CTt(t)==null?!1:gye({generatorId:e,language:r,requestedVersion:t}).configKind==="sdk-config-v1"}function aNe({generatorName:e,version:t,usesSdkConfig:r}){if(!B9e(e)&&!(!r&&!jZl({generatorName:e,version:t})))return Rrr()!==!1}function PTt(e){return B9e(e)}function BTt(){let e=process.env.FERN_SDK_GEN_API_ORIGIN??"https://sdk-gen.postman.co";if(e==null)return;let t;try{t=new URL(e)}catch{throw new Error("FERN_SDK_GEN_API_ORIGIN must be a valid URL")}if(t.username.length>0||t.password.length>0)throw new Error("FERN_SDK_GEN_API_ORIGIN must not contain credentials");let r=t.protocol==="http:"&&sxg.has(t.hostname);if(t.protocol!=="https:"&&!r)throw new Error("FERN_SDK_GEN_API_ORIGIN must use HTTPS unless it targets localhost");return t.toString().replace(/\/$/,"")}function Gv(e){return gPs(e)}function zZl(e,t="legacy-fern"){let r=Gv(e.name);if(r!=null)return e.version===ZY&&t==="legacy-fern"?P9e({generatorId:e.name,language:e.language??r,configKind:t,versionSource:"fern-latest"}):O9e({generatorId:e.name,language:e.language??r,requestedVersion:e.version,configKind:t})}function zIi(e,t){let r=e.outputMode;switch(r.type){case"downloadFiles":return{requestedOutput:{type:"download"}};case"github":return vZl({owner:r.owner,repo:r.repo,branch:r.branch,mode:r.makePr===!0?"pull-request":"release",publishInfo:r.publishInfo,githubOptions:t});case"githubV2":{let n=r.githubV2;return vZl({owner:n.owner,repo:n.repo,host:n.host,branch:n.branch,mode:n.type==="pullRequest"?"pull-request":n.type==="push"?"push":"release",reviewers:n.type==="pullRequest"?pxg(n.reviewers):void 0,publishInfo:n.publishInfo,workflows:n.workflows,githubOptions:t})}case"publishV2":{let n=fxg(r.publishV2);return{...n.package!=null?{package:n.package}:{},requestedOutput:{type:"publish",publish:n.publish}}}case"publish":{let n=gxg(e,r.registryOverrides);return{...n.package!=null?{package:n.package}:{},requestedOutput:{type:"publish",publish:n.publish}}}}}function vZl({owner:e,repo:t,host:r,branch:n,mode:i,reviewers:o,publishInfo:s,workflows:a,githubOptions:c}){let u=s!=null?dxg(s):void 0;return{...u?.package!=null?{package:u.package}:{},requestedOutput:{type:"github",repository:`${e}/${t}`,...r!=null?{host:r}:{},...n!=null?{branch:n}:{},mode:i,...o!=null?{reviewers:o}:{},...u!=null?{publish:u.publish}:{},...a===!1?{workflows:!1}:{},...c}}}function lxg(e,t){return e.type==="github"&&t!=null?{...e,...t}:e}function pxg(e){if(e==null)return;let t=e.filter(n=>n.type==="team").map(n=>n.name),r=e.filter(n=>n.type==="user").map(n=>n.name);if(!(t.length===0&&r.length===0))return{...t.length>0?{teams:t}:{},...r.length>0?{users:r}:{}}}function fxg(e){switch(e.type){case"npmOverride":return CPs(e.npmOverride);case"mavenOverride":return xPs(e.mavenOverride);case"pypiOverride":return QZl(e.pypiOverride);case"rubyGemsOverride":return xTt("rubygems",e.rubyGemsOverride);case"nugetOverride":return xTt("nuget",e.nugetOverride);case"cratesOverride":return xTt("crates",e.cratesOverride);case"postman":throw new Error("sdk-gen-api does not support Postman collection publication as an SDK output")}}function dxg(e){switch(e.type){case"npm":return CPs(e);case"maven":return xPs(e);case"pypi":return QZl(e);case"rubygems":return xTt("rubygems",e);case"nuget":return xTt("nuget",e);case"crates":return xTt("crates",e);case"postman":throw new Error("sdk-gen-api does not support Postman collection publication as an SDK output")}}function CPs(e){return{...e?.packageName?{package:{packageName:e.packageName}}:{},publish:{registry:"npm",...e?.registryUrl?{url:e.registryUrl}:{}}}}function QZl(e){let t=e!=null&&"coordinate"in e?e.coordinate:e?.packageName;return{...t?{package:{packageName:t}}:{},publish:{registry:"pypi",...e?.registryUrl?{url:e.registryUrl}:{}}}}function xPs(e){let t=e?.coordinate!=null?hxg(e.coordinate):void 0;return{...t!=null?{package:t}:{},publish:{registry:"maven",...e?.registryUrl?{url:e.registryUrl}:{}}}}var mxg=new Set(["OIDC","<USE_OIDC>"]);function xTt(e,t){let r=e==="nuget"||e==="rubygems",n=r&&t?.apiKey!=null&&mxg.has(t.apiKey),i=r&&!n?AEi(t?.apiKey):void 0;return{...t?.packageName?{package:{packageName:t.packageName}}:{},publish:{registry:e,...t?.registryUrl?{url:t.registryUrl}:{},...i!=null?{apiKeyEnvironmentVariable:i}:{},...n?{trustedPublishing:!0}:{}}}}function hxg(e){let[t,r]=e.split(":");if(!t||!r)throw new Error(`Invalid Maven coordinate for sdk-gen-api: ${e}`);return{groupId:t,artifactId:r}}function gxg(e,t){let r=Gv(e.name);if((r==="typescript"||r==="mcp")&&t.npm!=null)return CPs(t.npm);if((r==="java"||r==="kotlin")&&t.maven!=null)return xPs(t.maven);let n=MZl(r);if(n==null)throw new Error(`sdk-gen-api cannot infer a registry for ${r??e.name}`);return{publish:{registry:n}}}function MZl(e){switch(e){case"typescript":return"npm";case"python":return"pypi";case"java":case"kotlin":return"maven";case"go":return"go";case"csharp":return"nuget";case"php":return"composer";case"ruby":return"rubygems";case"rust":return"crates";case"mcp":return"npm";case"swift":case"cli":case void 0:return}}function LZl(e,t){let r=t.outputMode;if(r.type!=="publish"&&r.type!=="publishV2")return;let n=zIi(t).requestedOutput;if(n.type==="publish"&&n.publish.url!=null&&TWl(n.publish.url),r.type==="publish"){let o=Gv(t.name);if((o==="typescript"||o==="mcp")&&r.registryOverrides.npm!=null)return CZl(e,r.registryOverrides.npm.token);if((o==="java"||o==="kotlin")&&r.registryOverrides.maven!=null)return xZl(e,r.registryOverrides.maven);let s=MZl(o);throw s==null||!yxg(s)?new Error(`sdk-gen-api does not support direct ${s??"unknown"} registry publication`):new Error(`Direct ${s} publication through sdk-gen-api requires publish credentials`)}let i=r.publishV2;switch(i.type){case"npmOverride":{let o=DIi("npm",i.npmOverride);return CZl(e,o.token)}case"mavenOverride":{let o=DIi("maven",i.mavenOverride);return xZl(e,o)}case"pypiOverride":{let o=DIi("pypi",i.pypiOverride);return Axg(e,o.username,o.password)}case"cratesOverride":{let o=DIi("crates",i.cratesOverride);return _Zl(e,"crates",o.token)}case"rubyGemsOverride":throw new Error("sdk-gen-api does not support direct rubygems registry publication");case"nugetOverride":throw new Error("sdk-gen-api does not support direct nuget registry publication");case"postman":throw new Error("sdk-gen-api does not support Postman collection publication as an SDK output")}}function QIi(e,t,r,n){return{targetId:e,...j1s(t,r,n)}}function DIi(e,t){if(t==null)throw new Error(`Direct ${e} publication through sdk-gen-api is missing its registry configuration`);return t}function CZl(e,t){return _Zl(e,"npm",t)}function _Zl(e,t,r){return QIi(e,{registry:t,token:r})}function Axg(e,t,r){return QIi(e,{registry:"pypi",username:t,password:r})}function xZl(e,t){return QIi(e,{registry:"maven",username:t.username,password:t.password,...t.signature==null?{}:{signature:t.signature}})}function yxg(e){return e==="npm"||e==="maven"||e==="pypi"||e==="crates"}function bxg(e,t,r){let n=e.targets.flatMap((i,o)=>{if(i.requestedOutput.type!=="publish")return[];let s=t[o];if(s==null)throw new Error(`Cannot pair sdk-gen-api target ${i.targetId} with publish credentials`);let a=r?.[o],{publishUrl:c,publishRegistry:u}=VZl(i.requestedOutput),l=a!=null?QIi(i.targetId,a,c,u):LZl(i.targetId,s);return l!=null?[l]:[]});if(n.length!==0){if(n.length>STt)throw new Error(`sdk-gen-api supports at most ${STt} direct publish credential targets`);if(e.credentialSetId==null)throw new Error("sdk-gen-api direct registry targets require a credentialSetId");return{schemaVersion:"fern-publish-credentials/v1",credentialSetId:e.credentialSetId,targets:n}}}function UZl(e){LZl("preflight",e)}function MIi(e){yEi(e.map(t=>({publicationRequested:t.requestedOutput?.type==="publish"||t.requestedOutput?.type==="github"&&t.requestedOutput.publish!=null,credentialsRequired:t.requestedOutput?.type==="publish",...VZl(t.requestedOutput),...t.publishCredential==null?{}:{publishCredential:t.publishCredential}})))}function VZl(e){let t=e?.type==="publish"||e?.type==="github"?e.publish:void 0;return t==null?{}:{publishRegistry:t.registry,...t.url==null?{}:{publishUrl:t.url}}}function GZl(e){let{generatorInvocation:t,sdkVersion:r,specsTarGzBuffer:n,whitelabel:i}=e,o=Gv(t.name),s=r!=null&&r.trim().length>0&&(!(0,wTt.isAutoVersion)(r)||qZl(e.sdkConfigRequestedOutput));return o!=null&&s&&n!=null&&i==null}function qZl(e){return e?.type==="github"}function WZl({candidate:e,isSdkConfigTarget:t,isPreview:r}){let{generatorInvocation:n,sdkVersion:i,specsTarGzBuffer:o,whitelabel:s}=e;return i==null?"the SDK version could not be resolved. Pass one with --version (for example, --version 1.0.0)":s!=null?"whitelabel generation has not yet moved from Fiddle to the shared pipeline":(0,wTt.isAutoVersion)(i)&&!qZl(e.sdkConfigRequestedOutput)?t?r?"preview generation only downloads files, so it cannot use --version AUTO":"automatic SDK versioning (--version AUTO) through sdk-gen-api requires GitHub output":"automatic SDK versioning has not yet moved from Fiddle to the shared pipeline":o==null?"the source archive is unavailable":`generator language ${n.language??"unknown"} does not match ${Gv(n.name)}`}var FIi=class{expectedTargets;participants=[];removedTargetIds=new Set;terminalError;dispatched=!1;constructor(t){if(t<1)throw new Error("A Fern sdk-gen-api batch must expect at least one target");this.expectedTargets=t}run(t){return this.terminalError!=null?Promise.reject(this.terminalError):t.targetIdSeed!=null&&this.removedTargetIds.has(t.targetIdSeed)?Promise.reject(new Error(`Fern sdk-gen-api target ${t.targetIdSeed} was removed`)):this.dispatched?Promise.reject(new Error("The Fern sdk-gen-api batch was already dispatched")):new Promise((r,n)=>{this.participants.push({...t,resolve:r,reject:n}),this.dispatchIfReady()})}skip(){this.dispatched||this.terminalError!=null||(this.expectedTargets-=1,this.dispatchIfReady())}remove(t,r){if(this.dispatched||this.terminalError!=null||this.removedTargetIds.has(t))return!1;this.removedTargetIds.add(t);let n=this.participants.findIndex(o=>o.targetIdSeed===t),[i]=n>=0?this.participants.splice(n,1):[];return i?.reject(r),this.expectedTargets-=1,this.dispatchIfReady(),!0}cancel(t){if(!(this.dispatched||this.terminalError!=null)){this.terminalError=t;for(let r of this.participants)r.reject(t)}}dispatchIfReady(){this.dispatched||this.terminalError!=null||this.expectedTargets===0||this.participants.length!==this.expectedTargets||(this.dispatched=!0,this.dispatch())}async dispatch(){let t=[...this.participants].sort(Bxg);try{(await YZl(t)).forEach((n,i)=>{let o=t[i];n.status==="fulfilled"?o?.resolve(n.value):o?.reject(n.reason)})}catch(r){this.terminalError=r;for(let n of this.participants)n.reject(r)}}},NIi=class{expectedTargetIds;settledTargetIds=new Set;waiters=[];preflightParticipants=[];terminalError;didRunPreflight=!1;constructor(t){if(this.expectedTargetIds=new Set(t),this.expectedTargetIds.size!==t.length)throw new Error("Fern sdk-gen-api preparation target IDs must be unique")}ready(t,r){if(this.assertExpected(t),this.settledTargetIds.has(t))throw new Error(`Fern sdk-gen-api target ${t} prepared more than once`);return this.settledTargetIds.add(t),r!=null&&this.preflightParticipants.push(r),new Promise((n,i)=>{this.waiters.push({resolve:n,reject:i}),this.finishIfSettled()})}fail(t,r,n){return this.assertExpected(t),this.settledTargetIds.has(t)?!1:(this.settledTargetIds.add(t),n||(this.terminalError=r),this.finishIfSettled(),!0)}assertExpected(t){if(!this.expectedTargetIds.has(t))throw new Error(`Unexpected Fern sdk-gen-api preparation target ${t}`)}finishIfSettled(){if(this.settledTargetIds.size===this.expectedTargetIds.size){if(!this.didRunPreflight&&this.terminalError==null&&this.preflightParticipants.length>0){this.didRunPreflight=!0;try{JZl(this.preflightParticipants)}catch(t){this.terminalError=t}}for(let t of this.waiters)this.terminalError!=null?t.reject(this.terminalError):t.resolve()}}};async function HZl(e){let[t]=await YZl([e]);if(t?.status==="fulfilled")return t.value;throw t?.reason??new Error("sdk-gen-api did not return the requested target")}function KZl(e){if(e>STt)throw new Error(`sdk-gen-api supports at most ${STt} target payloads per build; received ${e}`)}function JZl(e){let t=e[0];if(t==null)throw new Error("Cannot submit an empty Fern sdk-gen-api build");Oxg(e);let r;try{r=BTt()}catch(p){return t.context.failAndThrow(p instanceof Error?p.message:"Invalid sdk-gen-api origin",p,{code:T.Code.ConfigError})}if(!r)return t.context.failAndThrow("FERN_SDK_GEN_API_ORIGIN is required when sdk-gen-api generation is enabled",void 0,{code:T.Code.ConfigError});_xg(e),Rxg(e,t);let n=Uxg({apiName:t.apiName,organization:t.organization,cliVersion:t.cliVersion,specsTarGzBuffer:t.specsTarGzBuffer,targets:e.map(p=>({generatorInvocation:p.generatorInvocation,resolvedGeneratorVersion:p.resolvedGeneratorVersion,sdkGenApiRoute:p.sdkGenApiRoute,sdkName:p.sdkName,sdkVersion:p.sdkVersion,apiVersion:p.apiVersion,targetIdSeed:p.targetIdSeed,sourceSpecIndexes:p.sourceSpecIndexes,audiences:p.audiences,payload:p.payload,requestedOutput:p.requestedOutput,publishCredential:p.publishCredential,githubOptions:p.githubOptions}))}),i=bxg(n,e.map(p=>p.generatorInvocation),e.map(p=>p.publishCredential)),o=i!=null?Buffer.from(JSON.stringify(i)):void 0;if(o!=null&&o.length>65536)return t.context.failAndThrow(`sdk-gen-api publish credentials file is ${kxg(o.length)}, exceeding the 64 KiB limit`,void 0,{code:T.Code.ConfigError});let s=t.specsTarGzBuffer.length+e.reduce((p,d)=>p+d.payload.body.length,0)+(o?.length??0);if(s>DZl)return t.context.failAndThrow(`sdk-gen-api source archive, target payloads, and publish credentials total ${eW(s)}, exceeding the 50 MiB in-memory upload limit`,void 0,{code:T.Code.ConfigError});let a=JSON.stringify(n),c=Buffer.byteLength(a,"utf8");if(c>ixg)return t.context.failAndThrow(`sdk-gen-api serialized request field is ${eW(c)}, exceeding the 1 MiB UTF-8 field limit; reduce generator customConfig, readme, settings, or API override metadata`,void 0,{code:T.Code.ConfigError});let u=new PZl.default;u.append("request",a),u.append("sources",t.specsTarGzBuffer,{filename:"specs.tar.gz",contentType:"application/gzip"}),e.forEach((p,d)=>{let f=n.targets[d];if(f==null)throw new Error(`Cannot pair sdk-gen-api payload at index ${d} with a target`);let m=p.payload.payloadKind==="fern-runtime-bundle";u.append("payloads",p.payload.body,{filename:`${f.targetId}.json${m?".gz":""}`,contentType:m?"application/gzip":"application/json"})}),o!=null&&u.append("credentials",o,{filename:"publish-credentials.v1.json",contentType:"application/json"});let l=u.getLengthSync();return l>kZl?t.context.failAndThrow(`sdk-gen-api multipart request is ${eW(l)}, exceeding the 60 MiB limit; reduce source or target payload size`,void 0,{code:T.Code.ConfigError}):{first:t,origin:r,request:n,form:u,sensitiveValues:dPs([t.token.value,...xxg(i)])}}async function YZl(e){let{first:t,origin:r,request:n,form:i,sensitiveValues:o}=JZl(e);Exg({first:t,origin:r,request:n,participants:e,sensitiveValues:o});let s;try{s=(await bg.post(`${r}/v1/fern/build`,i,{headers:{...i.getHeaders(),Authorization:`Bearer ${t.token.value}`,"X-Fern-Organization-Id":t.organization},maxBodyLength:kZl,timeout:bZl})).data.buildId}catch(u){Ixg(t.context,u,o);let l=SZl(u,o);return t.context.failAndThrow(`Failed to submit sdk-gen-api build: ${l.message}`,l,{code:T.Code.NetworkError})}for(let u of e)u.context.logger.debug(`sdk-gen-api build ID: ${s}`);let a=new Map,c=Date.now()+yZl;for(;;){let u;try{let d=await bg.get(`${r}/v1/fern/build/${s}`,{headers:{Authorization:`Bearer ${t.token.value}`,"X-Fern-Organization-Id":t.organization},timeout:bZl});u=wxg(d.data,o)}catch(d){let f=SZl(d,o);return t.context.failAndThrow("Failed to poll sdk-gen-api build",f,{code:T.Code.NetworkError})}let l=n.targets.find(d=>!u.targets.some(f=>f.targetId===d.targetId));if(l!=null)return t.context.failAndThrow(`sdk-gen-api response did not contain target ${l.targetId}`,void 0,{code:T.Code.InternalError});for(let[d,f]of n.targets.entries()){let m=u.targets.find(y=>y.targetId===f.targetId),g=e[d]?.context;if(m==null||g==null)continue;let A=a.get(m.targetId)??0;for(let y of m.logs.slice(A))vxg(g,y);a.set(m.targetId,m.logs.length)}if(n.targets.every(d=>Fxg(u,d.targetId))||u.status==="failed"||u.status==="succeeded")return Promise.allSettled(e.map((d,f)=>Nxg(d,n.targets[f]?.targetId,u,n.targets[f]?.requestedOutput)));if(Date.now()>=c)return t.context.failAndThrow(`Timed out waiting for sdk-gen-api build ${s} after ${yZl/6e4} minutes`,void 0,{code:T.Code.NetworkError});await new Promise(d=>setTimeout(d,$Cg))}}function Exg({first:e,origin:t,request:r,participants:n,sensitiveValues:i}){let o=new Map(r.targets.map((s,a)=>{let c=n[a];return[s.targetId,{uploadBytes:c?.payload.body.length??0,targetIdSeed:c?.targetIdSeed,sourceSpecIndexes:c?.sourceSpecIndexes}]}));e.context.logger.debug(`Submitting sdk-gen-api build: ${jIi({origin:t,sourceArchiveBytes:e.specsTarGzBuffer.length,request:{protocolVersion:r.protocolVersion,apiName:r.apiName,cliVersion:r.cliVersion,idempotencyKey:wZl(r.idempotencyKey),credentialSetId:r.credentialSetId==null?void 0:wZl(r.credentialSetId),apiInputs:r.apiInputs,targets:r.targets.map(s=>({targetId:s.targetId,apiInputId:s.apiInputId,language:s.language,sdk:s.sdk,fernGenerator:s.fernGenerator,payloadKind:s.payloadKind,package:s.package,requestedOutput:s.requestedOutput,invocation:{customConfigKeys:Object.keys(s.invocation.customConfig).sort(),keywords:s.invocation.keywords,smartCasing:s.invocation.smartCasing,smartCasingDigitWordBoundary:s.invocation.smartCasingDigitWordBoundary,disableExamples:s.invocation.disableExamples,audiences:s.invocation.audiences,hasReadme:s.invocation.readme!=null,hasSettings:s.invocation.settings!=null,hasApiOverride:s.invocation.apiOverride!=null},payload:o.get(s.targetId)}))}},i)}`)}function Ixg(e,t,r){if(!(t instanceof $qt)){e.logger.debug(`sdk-gen-api submission failed before receiving an HTTP response: ${jIi(t instanceof Error?{name:t.name,message:t.message}:{error:String(t)},r)}`);return}e.logger.debug(`sdk-gen-api submission HTTP failure: ${jIi({status:t.response?.status??t.status,statusText:t.response?.statusText,code:t.code,responseBody:t.response?.data},r)}`)}function wZl(e){return e.length<=12?e:`${e.slice(0,12)}...`}function jIi(e,t){let r;try{r=typeof e=="string"?e:JSON.stringify(e)}catch(i){r=i instanceof Error?`Failed to serialize debug value: ${i.message}`:String(e)}let n=XY(r,t);return n.length>EPs?`${n.slice(0,EPs)}... [truncated ${n.length-EPs} bytes]`:n}function vxg(e,t){switch(t.level.toLowerCase()){case"error":e.logger.error(t.message);return;case"warn":case"warning":e.logger.warn(t.message);return;case"debug":case"trace":e.logger.debug(t.message);return;default:e.logger.info(t.message)}}function SZl(e,t){if(!(e instanceof $qt))return new kIi(XY(e instanceof Error?e.message:"Unknown submission error",t),void 0,void 0);let r=Cxg(e,t);return new kIi(r??XY(e.message,t),e.response?.status??e.status,e.code)}function Cxg(e,t){let r=e.response?.data;if(typeof r=="object"&&r!=null&&"message"in r&&typeof r.message=="string")return XY(r.message,t);if(r!=null)return`sdk-gen-api response body: ${jIi(r,t)}`}function xxg(e){return(e?.targets??[]).flatMap(t=>t.registry==="npm"||t.registry==="crates"?[t.token]:t.registry==="pypi"?[t.username,t.password]:[t.username,t.password,...t.signature!=null?[t.signature.keyId,t.signature.password,t.signature.secretKey]:[]])}function wxg(e,t){return{...e,targets:e.targets.map(r=>({...r,logs:r.logs.map(n=>({...n,message:XY(n.message,t)})),...r.error==null?{}:{error:{message:XY(r.error.message,t)}},...r.publication==null?{}:r.publication.status==="success"?{publication:{...r.publication,publishTarget:{...r.publication.publishTarget,identifier:mPs(r.publication.publishTarget.identifier,t)}}}:{publication:{...r.publication,publishTarget:{...r.publication.publishTarget,identifier:mPs(r.publication.publishTarget.identifier,t)},error:Sxg(r.publication.error,t)}}}))}}function Sxg(e,t){let{reason:r,detail:n,...i}=e,o=typeof n=="string"?XY(n,t).trim():void 0,s=typeof r=="string"&&cxg.test(r)&&XY(r,t)===r?r:void 0;return{...i,message:XY(e.message,t),...s!=null?{reason:s}:{},...o!=null&&o.length>0?{detail:o}:{}}}function Txg(e){let t=`sdk-gen-api publication failed (${e.code}): ${e.message}`;return e.detail==null||e.detail===e.message?t:e.reason!=null?`${t}: ${e.detail} [${e.reason}]`:`${t}: ${e.detail}`}function Oxg(e){for(let t of e){let{generatorInvocation:r}=t,n=r.language??Gv(r.name);n==null&&t.context.failAndThrow(`Cannot submit SDK generation to sdk-gen-api: generator language is unknown for ${r.name}`,void 0,{code:T.Code.ConfigError});let i;try{i=Pxg(t,n)}catch(o){if(!(o instanceof $ae))throw o;t.context.failAndThrow(krr(o),void 0,{code:T.Code.ConfigError})}i.payloadKind!==t.payload.payloadKind&&t.context.failAndThrow(`Cannot submit SDK generation to sdk-gen-api: selected route payload ${i.payloadKind} does not match participant payload ${t.payload.payloadKind}`,void 0,{code:T.Code.ConfigError})}}function Pxg(e,t){let{generatorInvocation:r,sdkGenApiRoute:n}=e;if(n?.requestedVersion==null){if(n!=null){if(!RIi(n,r.version))throw ZZl(n,r.version);return P9e({generatorId:r.name,language:t,configKind:n.configKind,versionSource:n.versionSource})}return O9e({generatorId:r.name,language:t,requestedVersion:r.version,configKind:e.payload.payloadKind==="fern-runtime-bundle"?"legacy-fern":"sdk-config-v1"})}return O9e({generatorId:r.name,language:t,requestedVersion:n.requestedVersion,configKind:n.configKind})}function krr(e){let t=[e.code,`generator=${e.generatorId}`,`language=${e.language}`,`requestedVersion=${e.requestedVersion}`,`cutoverVersion=${e.cutoverVersion??"n/a"}`,`receivedConfigKind=${String(e.receivedConfigKind)}`,`expectedConfigKind=${e.expectedConfigKind??"n/a"}`,`expectedLanguage=${e.expectedLanguage??"n/a"}`,`retryable=${e.retryable}`,`recommendedAction=${e.recommendedAction}`].join("; "),r=e.recommendedAction==="USE_SDK_CONFIG_V1"?" Run `fern sdk migrate`, then pass the generated document with `fern generate --sdk-config <path>` before using this generator version.":"";return`Cannot submit SDK generation to sdk-gen-api: ${e.message} [${t}].${r}`}function XZl(e,t,r){if(e==null)return t.version;if(e.requestedVersion!=null)return e.requestedVersion;if(!RIi(e,t.version))throw ZZl(e,t.version);return r}function ZZl(e,t){return new Error(`An unpinned sdk-gen-api route does not match its generator version representation: invocationVersion=${JSON.stringify(t)}; configKind=${e.configKind}; versionSource=${e.requestedVersion==null?e.versionSource:"pinned"}`)}function IPs(e,t,r){return XZl(e,t,r)??oxg}function Bxg(e,t){let r=axg.compare(e.targetIdSeed??"",t.targetIdSeed??"");if(r!==0)return r;let n=e.generatorInvocation.name.localeCompare(t.generatorInvocation.name);if(n!==0)return n;let i=IPs(e.sdkGenApiRoute,e.generatorInvocation).localeCompare(IPs(t.sdkGenApiRoute,t.generatorInvocation));return i!==0?i:e.sdkVersion.localeCompare(t.sdkVersion)}function Rxg(e,t){e.length>STt&&t.context.failAndThrow(`sdk-gen-api supports at most ${STt} target payloads per build; received ${e.length}`,void 0,{code:T.Code.ConfigError}),t.specsTarGzBuffer.length>exg&&t.context.failAndThrow(`sdk-gen-api source archive is ${eW(t.specsTarGzBuffer.length)}, exceeding the 25 MiB compressed limit`,void 0,{code:T.Code.ConfigError});let r=e.findIndex(s=>s.payload.body.length>(s.payload.payloadKind==="fern-runtime-bundle"?EZl:IZl));if(r>=0){let s=e[r],a=s?.payload.payloadKind==="fern-runtime-bundle"?EZl:IZl;t.context.failAndThrow(`sdk-gen-api ${TZl(s,r)} is ${eW(s?.payload.body.length??0)}, exceeding the ${eW(a)} upload limit`,void 0,{code:T.Code.ConfigError})}let n=e.reduce((s,a)=>s+a.payload.body.length,t.specsTarGzBuffer.length);n>DZl&&t.context.failAndThrow(`sdk-gen-api source archive and target payloads total ${eW(n)}, exceeding the 50 MiB in-memory upload limit; reduce the source archive size, target payload size, or number of targets`,void 0,{code:T.Code.ConfigError});let i=e.reduce((s,a)=>a.payload.payloadKind==="fern-runtime-bundle"?s+a.payload.body.length:s,0);i>rxg&&t.context.failAndThrow(`sdk-gen-api runtime bundles total ${eW(i)}, exceeding the 25 MiB compressed limit; reduce the number or size of targets`,void 0,{code:T.Code.ConfigError}),OZl({buffer:t.specsTarGzBuffer,maxBytes:txg,label:"source archive",context:t.context});let o=0;for(let[s,a]of e.entries())o+=a.payload.payloadKind==="fern-runtime-bundle"?OZl({buffer:a.payload.body,maxBytes:nxg,label:TZl(a,s),context:t.context}):a.payload.body.length,o>RZl&&t.context.failAndThrow(`sdk-gen-api target payloads total ${eW(o)}, exceeding the 100 MiB decoded limit; reduce the number or size of targets`,void 0,{code:T.Code.ConfigError})}function TZl(e,t){return`${e?.payload.payloadKind??"target payload"} ${e?.targetIdSeed??t.toString()}`}function OZl({buffer:e,maxBytes:t,label:r,context:n}){let i;try{i=(0,BZl.gunzipSync)(e,{maxOutputLength:t+1})}catch(o){return Dxg(o)?n.failAndThrow(`sdk-gen-api ${r} exceeds the ${eW(t)} decompressed limit`,void 0,{code:T.Code.ConfigError}):n.failAndThrow(`sdk-gen-api ${r} is malformed gzip; regenerate it and retry`,o,{code:T.Code.ConfigError})}return i.length>t?n.failAndThrow(`sdk-gen-api ${r} is ${eW(i.length)} decompressed, exceeding the ${eW(t)} decompressed limit`,void 0,{code:T.Code.ConfigError}):i.length}function Dxg(e){return e instanceof Error&&"code"in e&&e.code==="ERR_BUFFER_TOO_LARGE"}function eW(e){return`${(e/(1024*1024)).toFixed(2)} MiB`}function kxg(e){return`${(e/1024).toFixed(2)} KiB`}function Fxg(e,t){let r=e.targets.find(n=>n.targetId===t);return r?.status==="failed"||r?.status==="succeeded"}async function Nxg(e,t,r,n){let i=r.targets.find(a=>a.targetId===t);if(i==null)return e.context.failAndThrow("sdk-gen-api response did not contain the requested target",void 0,{code:T.Code.InternalError});if(i.status==="failed")return i.publication?.status==="failure"?e.context.failAndThrow(Txg(i.publication.error),void 0,{code:T.Code.ContainerError}):e.context.failAndThrow(i.error?.message??"sdk-gen-api generation failed",void 0,{code:T.Code.ContainerError});if(i.status!=="succeeded")return e.context.failAndThrow(`sdk-gen-api build ended with status ${r.status} while target ${i.targetId} remained ${i.status}`,void 0,{code:T.Code.InternalError});if(i.result?.artifactUrl==null)return e.context.failAndThrow("sdk-gen-api target completed without an artifact URL",void 0,{code:T.Code.InternalError});e.absolutePathToPreview!=null?await BIi({s3PreSignedReadUrl:i.result.artifactUrl,absolutePathToLocalOutput:De(e.absolutePathToPreview,be.of(BWl(e.generatorInvocation.name,Mxg(e.generatorInvocation)))),context:e.context,skipFernignore:e.skipFernignore}):e.absolutePathToLocalOutputArchive!=null?await fZl({s3PreSignedReadUrl:i.result.artifactUrl,absolutePathToLocalOutput:e.absolutePathToLocalOutputArchive,context:e.context}):e.generatorInvocation.absolutePathToLocalOutput!=null&&await BIi({s3PreSignedReadUrl:i.result.artifactUrl,absolutePathToLocalOutput:e.generatorInvocation.absolutePathToLocalOutput,context:e.context,skipFernignore:e.skipFernignore});let o=i.result.actualVersion??((0,wTt.isAutoVersion)(e.sdkVersion)?void 0:e.sdkVersion),s=jxg(e,i,n);return(0,wTt.isAutoVersion)(e.sdkVersion)&&o!=null&&e.context.logger.info(`AUTO versioning picked new version: ${o}`),{createdSnippets:!1,snippetsS3PreSignedReadUrl:void 0,actualVersion:o,...s,publishTarget:o==null?void 0:Lxg(i,o)}}function jxg(e,t,r){if(r?.type!=="github")return{pullRequestUrl:void 0,noChangesDetected:void 0};let{publication:n}=t;if(n?.status!=="success"||n.publishTarget.type!=="github")return e.context.failAndThrow(`sdk-gen-api reported the build as succeeded but did not confirm the GitHub delivery to ${r.repository}`,void 0,{code:T.Code.InternalError});let i=zxg(n.output.pullRequestUrl),o=n.output.noChangesDetected===!0,s={pullRequestUrl:o?void 0:i,noChangesDetected:o?!0:void 0},a=n.output.pullRequestUrl!=null&&i==null;return Qxg(e.context.logger,r,s,a),s}function zxg(e){let t=e==null?void 0:$Zl(e);if(t==null)return;let{origin:r,pathname:n}=new URL(t);return`${r}${n}`}function Qxg(e,{repository:t,mode:r},{pullRequestUrl:n,noChangesDetected:i},o){if(i){e.info(`No changes detected for ${t}; nothing was delivered to GitHub.`);return}if(n!=null){e.info(`Pull request: ${n}`);return}if(o){e.warn(`sdk-gen-api returned a pull request link for ${t} that was not a safe HTTPS URL.`);return}r==="pull-request"&&e.warn(`sdk-gen-api did not return a pull request link for ${t}.`)}function Mxg(e){return e.sdkConfigTargetIndex}function Lxg(e,t){if(e.publication?.status!=="success")return;let r=e.publication.publishTarget.type,n=e.publication.publishTarget.identifier,i=$Zl(n);switch(r){case"npm":return{registry:r,label:"npm",version:t,identifier:n,...i!=null?{url:i}:{}};case"pypi":return{registry:r,label:"PyPI",version:t,identifier:n,...i!=null?{url:i}:{}};case"crates":return{registry:r,label:"crates.io",version:t,identifier:n,...i!=null?{url:i}:{}};case"maven":return{registry:r,label:"Maven Central",version:t,identifier:n,...i!=null?{url:i}:{}};case"github":case"unsupported":return}}function $Zl(e){try{let t=new URL(e);return t.protocol==="https:"&&t.username.length===0&&t.password.length===0?e:void 0}catch{return}}function _xg(e){let t=e[0];if(t==null)return;let r=(0,ece.createHash)("sha256").update(t.specsTarGzBuffer).digest("hex");for(let n of e.slice(1)){let i=(0,ece.createHash)("sha256").update(n.specsTarGzBuffer).digest("hex");if(n.apiName!==t.apiName||n.organization!==t.organization||n.token.value!==t.token.value||i!==r)throw new Error("Fern sdk-gen-api batch targets must share API, organization, token, and sources")}}function Uxg({apiName:e,organization:t,cliVersion:r,specsTarGzBuffer:n,targets:i}){if(i.length===0)throw new Error("Cannot create an empty Fern sdk-gen-api request");let o=[],s=i.map(({targetIdSeed:f,sourceSpecIndexes:m},g)=>{if(m==null)return o.some(y=>y.id==="default")||o.push({id:"default",specIndexes:"all"}),"default";let A=`target-${f??g.toString()}`;return o.push({id:A,specIndexes:m}),A}),a=i.map(({generatorInvocation:f,resolvedGeneratorVersion:m,sdkGenApiRoute:g,sdkName:A,sdkVersion:y,apiVersion:I,targetIdSeed:x,audiences:v,payload:w,requestedOutput:B,githubOptions:R},D)=>{let O=Gv(f.name);if(O==null)throw new Error(`Unsupported Fern SDK generator: ${f.name}`);let z=zIi(f,R),Y=lxg(B??z.requestedOutput,R),$=w.payloadKind==="fern-runtime-bundle"?z.package:w.package,ee=XZl(g,f,m),ae=IPs(g,f,m);return{targetId:(0,ece.createHash)("sha256").update(`${e}:${f.name}:${ae}:${x??D.toString()}`).digest("hex").slice(0,20),apiInputId:s[D]??"default",language:O,sdk:{name:A??e,version:y,...I!=null?{apiVersion:I}:{}},fernGenerator:{id:f.name,...ee!=null?{version:ee}:{}},payloadKind:w.payloadKind,...$!=null?{package:$}:{},invocation:{customConfig:U$(f.config)??{},keywords:f.keywords??[],smartCasing:f.smartCasing,smartCasingDigitWordBoundary:f.smartCasingDigitWordBoundary,disableExamples:f.disableExamples,...v!=null?{audiences:v}:{},...f.readme!=null?{readme:f.readme}:{},...f.settings!=null?{settings:f.settings}:{},...f.apiOverride!=null?{apiOverride:f.apiOverride}:{}},requestedOutput:Y}}),c=i.map(f=>(0,ece.createHash)("sha256").update(f.payload.body).digest("hex")),u=JSON.stringify({protocolVersion:2,organization:t,apiName:e,apiInputs:o,targets:a,payloadHashes:c,sourceHash:(0,ece.createHash)("sha256").update(n).digest("hex")}),l=a.some(f=>f.requestedOutput.type==="publish")?Vxg(u):void 0,p=a.some(f=>(0,wTt.isAutoVersion)(f.sdk.version))?(0,ece.randomUUID)():void 0,d=(0,ece.createHash)("sha256").update(n).update(JSON.stringify({protocolVersion:2,organization:t,apiName:e,credentialSetId:l,apiInputs:o,targets:a,payloadHashes:c,...p!=null?{autoVersionRunId:p}:{}})).digest("hex");return{protocolVersion:2,apiName:e,...r?{cliVersion:r}:{},idempotencyKey:d,...l!=null?{credentialSetId:l}:{},apiInputs:o,targets:a}}function Vxg(e){let t=(0,ece.createHash)("sha256").update(e).digest().subarray(0,16);t[6]=(t[6]??0)&15|128,t[8]=(t[8]??0)&63|128;let r=t.toString("hex");return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}Pc();ls();Ct();Wn();function R9e({apiName:e,organization:t,generatorInvocation:r}){let n=Gxg(r);return{apiName:e,organization:t,customConfig:U$(r.config),outputConfig:n??sr.GeneratorOutputConfig.local()}}function Gxg(e){let t=e.outputMode;switch(t.type){case"downloadFiles":return sr.GeneratorOutputConfig.local();case"publishV2":return qxg({publish:t.publishV2,version:e.version});case"githubV2":return Wxg({github:t.githubV2,language:e.language,version:e.version});case"publish":case"github":return;default:Ee(t)}}function qxg({publish:e,version:t}){switch(e.type){case"npmOverride":{let r=e.npmOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.npm({version:t,packageName:r.packageName,repoUrl:void 0}))}case"mavenOverride":{let r=e.mavenOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.maven({version:t,coordinate:r.coordinate,repoUrl:void 0}))}case"pypiOverride":{let r=e.pypiOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.pypi({version:t,packageName:r.coordinate,repoUrl:void 0}))}case"rubyGemsOverride":{let r=e.rubyGemsOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.rubygems({version:t,packageName:r.packageName,repoUrl:void 0}))}case"nugetOverride":{let r=e.nugetOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.nuget({version:t,packageName:r.packageName,repoUrl:void 0}))}case"cratesOverride":{let r=e.cratesOverride;return r==null?void 0:sr.GeneratorOutputConfig.publish(sr.PublishInfo.crates({version:t,packageName:r.packageName,repoUrl:void 0}))}case"postman":return;default:Ee(e)}}function Wxg({github:e,version:t,language:r}){let n=Hxg({owner:e.owner,repo:e.repo});if(r===Hr.GenerationLanguage.GO)return sr.GeneratorOutputConfig.publish(sr.PublishInfo.go({version:t,repoUrl:n}));if(r===Hr.GenerationLanguage.SWIFT)return sr.GeneratorOutputConfig.publish(sr.PublishInfo.swift({version:t,repoUrl:n}));let i=e.publishInfo;if(i!=null)switch(i.type){case"maven":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.maven({version:t,coordinate:i.coordinate,repoUrl:n}));case"npm":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.npm({version:t,packageName:i.packageName,repoUrl:n}));case"pypi":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.pypi({version:t,packageName:i.packageName,repoUrl:n}));case"rubygems":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.rubygems({version:t,packageName:i.packageName,repoUrl:n}));case"nuget":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.nuget({version:t,packageName:i.packageName,repoUrl:n}));case"crates":return sr.GeneratorOutputConfig.publish(sr.PublishInfo.crates({version:t,packageName:i.packageName,repoUrl:n}));case"postman":return;default:Ee(i)}}function Hxg({owner:e,repo:t}){return`https://github.com/${e}/${t}`}Fi();q3();kt();e8();var Py=Ae(Top(),1),b6=Ae(CA(),1),Bop=Ae(require("path"),1),EDg="0.0.1";function rnr(e){if(e.raw?.github!=null&&typeof e.raw.github=="object"&&"license"in e.raw.github){let t=e.raw.github;if(t.license!=null){if(typeof t.license=="string")return{type:"basic",value:t.license};if(typeof t.license=="object"&&"custom"in t.license)return{type:"custom",value:t.license.custom}}}if(e.raw?.metadata?.license!=null){let t=e.raw.metadata.license;if(typeof t=="string")return{type:"basic",value:t};if(typeof t=="object"&&"custom"in t)return{type:"custom",value:t.custom}}}function IDg(e,t){let r=rnr(e);if(r!=null){if(r.type==="basic"){if(r.value==="MIT"||r.value==="Apache-2.0")return Py.FernGeneratorExec.LicenseConfig.basic({id:r.value==="MIT"?Py.FernGeneratorExec.LicenseId.Mit:Py.FernGeneratorExec.LicenseId.Apache2})}else if(r.type==="custom")return Py.FernGeneratorExec.LicenseConfig.custom({filename:Bop.basename(r.value)})}}function sCi(e,t={}){let r=t.omitPublishCredentials??!1;return e!=null?Yr.GithubPublishInfo._visit(e,{npm:n=>{let i=(n.token??"").trim(),o=HBs(i),s=i!=="";return Py.FernGeneratorExec.GithubPublishInfo.npm({registryUrl:n.registryUrl,packageName:n.packageName,tokenEnvironmentVariable:(0,b6.EnvironmentVariable)(r?o!=null?"<USE_OIDC>":"":o!=null?"<USE_OIDC>":i.startsWith("${")&&i.endsWith("}")?i.slice(2,-1).trim():""),shouldGeneratePublishWorkflow:o!=null||s})},maven:n=>Py.FernGeneratorExec.GithubPublishInfo.maven({registryUrl:n.registryUrl,coordinate:n.coordinate,usernameEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.credentials?.username??""),passwordEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.credentials?.password??""),signature:n.signature!=null&&!r?{keyIdEnvironmentVariable:(0,b6.EnvironmentVariable)(n.signature.keyId??""),passwordEnvironmentVariable:(0,b6.EnvironmentVariable)(n.signature.password??""),secretKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(n.signature.secretKey??"")}:void 0}),pypi:n=>{let i=(n.credentials?.password??"").trim(),o=HBs(i),s=n.credentials!=null;return Py.FernGeneratorExec.GithubPublishInfo.pypi({registryUrl:n.registryUrl,packageName:n.packageName,usernameEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":"PYPI_USERNAME"),passwordEnvironmentVariable:(0,b6.EnvironmentVariable)(r?o!=null?"OIDC":"":o!=null?"OIDC":"PYPI_PASSWORD"),shouldGeneratePublishWorkflow:o!=null||s,pypiMetadata:n.pypiMetadata})},rubygems:n=>Py.FernGeneratorExec.GithubPublishInfo.rubygems({registryUrl:n.registryUrl,packageName:n.packageName,apiKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.apiKey??"")}),postman:n=>Py.FernGeneratorExec.GithubPublishInfo.postman({apiKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.apiKey??""),workspaceIdEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.workspaceId??"")}),nuget:n=>{let i=(n.apiKey??"").trim(),o=HBs(i);return Py.FernGeneratorExec.GithubPublishInfo.nuget({registryUrl:n.registryUrl,packageName:n.packageName,apiKeyEnvironmentVariable:(0,b6.EnvironmentVariable)(r?o!=null?"<USE_OIDC>":"":o!=null?"<USE_OIDC>":i.startsWith("${")&&i.endsWith("}")?i.slice(2,-1).trim():""),shouldGeneratePublishWorkflow:o!=null?!0:void 0})},crates:n=>Py.FernGeneratorExec.GithubPublishInfo.crates({registryUrl:n.registryUrl,packageName:n.packageName,tokenEnvironmentVariable:(0,b6.EnvironmentVariable)(r?"":n.token??"")}),_other:()=>{}}):void 0}function HBs(e){if(e==="OIDC"||e==="<USE_OIDC>")return e}function nOt({generatorInvocation:e,customConfig:t,workspaceName:r,organization:n,outputVersion:i=EDg,absolutePathToSnippet:o,absolutePathToSnippetTemplates:s,absolutePathToFernConfig:a,writeUnitTests:c,generateOauthClients:u,generatePaginatedClients:l,whiteLabel:p,publishToRegistry:d,omitPublishCredentials:f,paths:m}){let g=IDg(e,a),{snippetPath:A,snippetTemplatePath:y,irPath:I,outputDirectory:x}=m,v=e.outputMode._visit({publish:B=>{if(d===!0){let R=CDg(B,f===!0);return{...Pop(i,R,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}}return{...Oop(i,B,e,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}},publishV2:B=>{if(d===!0){let R=xDg(B,f===!0);return{...Pop(i,R,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}}return{...Oop(i,B,e,m),snippetFilepath:A,publishingMetadata:e.publishMetadata}},downloadFiles:()=>({mode:Py.FernGeneratorExec.OutputMode.downloadFiles(),path:x,snippetFilepath:A,publishingMetadata:e.publishMetadata}),github:B=>{let R={mode:Py.FernGeneratorExec.OutputMode.github({repoUrl:`https://github.com/${B.owner}/${B.repo}`,version:i,publishInfo:sCi(B.publishInfo,{omitPublishCredentials:f}),installationToken:void 0}),path:x,publishingMetadata:e.publishMetadata};return o!==void 0&&(R.snippetFilepath=A),s!==void 0&&(R.snippetTemplateFilepath=y),R},githubV2:B=>{let R=B._visit({commitAndRelease:O=>`https://github.com/${O.owner}/${O.repo}`,push:O=>`https://github.com/${O.owner}/${O.repo}`,pullRequest:O=>`https://github.com/${O.owner}/${O.repo}`,_other:()=>{throw new T({message:"Encountered unknown github mode",code:T.Code.InternalError})}}),D={mode:Py.FernGeneratorExec.OutputMode.github({repoUrl:R,version:i,publishInfo:sCi(B.publishInfo,{omitPublishCredentials:f})}),path:x,publishingMetadata:e.publishMetadata};return o!==void 0&&(D.snippetFilepath=A),s!==void 0&&(D.snippetTemplateFilepath=y),D},_other:()=>{throw new T({message:"Output type did not match any of the types supported by Fern",code:T.Code.InternalError})}}),w=wDg(e,i);return{irFilepath:I,output:v,publish:w,customConfig:t,workspaceName:r,organization:n,environment:Py.FernGeneratorExec.GeneratorEnvironment.local(),dryRun:!1,whitelabel:p??!1,writeUnitTests:c,generateOauthClients:u,generatePaginatedClients:l,license:g}}function Oop(e,t,r,n){let{outputDirectory:i}=n,o;"registryOverrides"in t?o=t.registryOverrides.maven??t.registryOverrides.npm:o!=null&&(o=t._visit({mavenOverride:a=>a,npmOverride:a=>a,pypiOverride:a=>a,rubyGemsOverride:a=>a,postman:a=>a,nugetOverride:a=>a,cratesOverride:a=>a,_other:()=>{}}));let s="";return r.raw?.github!=null&&(lwe(r.raw.github)?s=Jx(r.raw.github.uri).repoUrl:s=r.raw?.github.repository),{mode:Py.FernGeneratorExec.OutputMode.github({repoUrl:s,version:e}),path:i}}function Pop(e,t,r){let{outputDirectory:n}=r,{registries:i,registriesV2:o}=vDg(t);return{mode:Py.FernGeneratorExec.OutputMode.publish({registries:i,registriesV2:o,publishTarget:t,version:e}),path:n}}function vDg(e){let t=structuredClone(Rop),r=structuredClone(Dop);if(e==null)return{registries:t,registriesV2:r};switch(e.type){case"npm":t.npm={registryUrl:e.registryUrl,token:e.token,scope:""},r.npm={registryUrl:e.registryUrl,token:e.token,packageName:e.packageName};break;case"maven":t.maven={registryUrl:e.registryUrl,username:e.username,password:e.password,group:"",signature:e.signature},r.maven={registryUrl:e.registryUrl,username:e.username,password:e.password,coordinate:e.coordinate,signature:e.signature};break;case"pypi":r.pypi={registryUrl:e.registryUrl,username:e.username,password:e.password,packageName:e.packageName,pypiMetadata:e.pypiMetadata};break;case"rubygems":r.rubygems={registryUrl:e.registryUrl,apiKey:e.apiKey,packageName:e.packageName};break;case"nuget":r.nuget={registryUrl:e.registryUrl,apiKey:e.apiKey,packageName:e.packageName};break;case"crates":r.crates={registryUrl:e.registryUrl,token:e.token,packageName:e.packageName};break;default:break}return{registries:t,registriesV2:r}}function CDg(e,t){if("registryOverrides"in e){let r=e.registryOverrides;if(r.npm!=null)return Py.FernGeneratorExec.GeneratorPublishTarget.npm({registryUrl:r.npm.registryUrl,token:t?"":r.npm.token,packageName:r.npm.packageName});if(r.maven!=null)return Py.FernGeneratorExec.GeneratorPublishTarget.maven({registryUrl:r.maven.registryUrl,username:t?"":r.maven.username??"",password:t?"":r.maven.password??"",coordinate:r.maven.coordinate??"",signature:void 0})}}function xDg(e,t){return e._visit({npmOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.npm({registryUrl:r.registryUrl,token:t?"":r.token,packageName:r.packageName}):void 0,mavenOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.maven({registryUrl:r.registryUrl,username:t?"":r.username,password:t?"":r.password,coordinate:r.coordinate,signature:t?void 0:r.signature??void 0}):void 0,pypiOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.pypi({registryUrl:r.registryUrl,username:t?"":r.username,password:t?"":r.password,packageName:r.coordinate,pypiMetadata:r.pypiMetadata??void 0}):void 0,rubyGemsOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.rubygems({registryUrl:r.registryUrl,apiKey:t?"":r.apiKey,packageName:r.packageName}):void 0,nugetOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.nuget({registryUrl:r.registryUrl,apiKey:t?"":r.apiKey,packageName:r.packageName}):void 0,cratesOverride:r=>r!=null?Py.FernGeneratorExec.GeneratorPublishTarget.crates({registryUrl:r.registryUrl,token:t?"":r.token,packageName:r.packageName}):void 0,postman:r=>Py.FernGeneratorExec.GeneratorPublishTarget.postman({apiKey:t?"":r.apiKey,workspaceId:t?"":r.workspaceId}),_other:()=>{}})}function wDg(e,t){let r=e.outputMode._visit({publish:()=>{},publishV2:()=>{},downloadFiles:()=>{},github:o=>o.publishInfo,githubV2:o=>o._visit({push:s=>s.publishInfo,commitAndRelease:s=>s.publishInfo,pullRequest:s=>s.publishInfo,_other:()=>{}}),_other:()=>{}});if(r==null||r.type!=="pypi")return;let n=(r.credentials?.password??"").trim();if(n!=="OIDC"&&n!=="<USE_OIDC>")return;let i=structuredClone(Dop);return i.pypi={registryUrl:r.registryUrl,username:"__token__",password:"OIDC",packageName:r.packageName,pypiMetadata:r.pypiMetadata},{registries:structuredClone(Rop),registriesV2:i,publishTarget:void 0,version:t}}var Rop={maven:{registryUrl:"",username:"",password:"",group:"",signature:void 0},npm:{registryUrl:"",token:"",scope:""}},Dop={maven:{registryUrl:"",username:"",password:"",coordinate:"",signature:void 0},npm:{registryUrl:"",token:"",packageName:""},pypi:{registryUrl:"",username:"",password:"",packageName:"",pypiMetadata:void 0},rubygems:{registryUrl:"",apiKey:"",packageName:""},nuget:{registryUrl:"",apiKey:"",packageName:""},crates:{registryUrl:"",token:"",packageName:""}};Ct();var ysp=Ae(Asp(),1);Ui();var bsp=require("util"),fFg=(0,bsp.promisify)(ysp.default);async function onr(e,t,r){let n=CQt(e,t),i=[];for(let o of n){let s=await Promise.all(o.map(async a=>{try{let c=await fFg(a);return c==null||c.height==null||c.width==null?void 0:{filePath:a,width:c.width,height:c.height,blurDataUrl:void 0}}catch(c){r.logger.error(`Failed to measure image size for ${a}. ${c?.message}`);return}}));i.push(...s.filter(la))}return new Map(i.map(o=>[o.filePath,o]))}Ct();function snr(e,t){if(e.startsWith("https://")||e.startsWith("http://"))return e;switch(t){case"github":return`https://github.com/${e}`;case"gitlab":return`https://gitlab.com/${e}`;case"bitbucket":return`https://bitbucket.org/${e}`;default:Ee(t)}}function mRs(e){let t=e.sdkConfigPath==null?"":`; SDK Config: ${e.sdkConfigPath.join(".")}`;return`[${e.severity}] [${e.code}] ${e.path.join(".")}: ${e.reason}${t}; ${e.suggestedAction}`}function Esp({workspace:e,generatorInvocation:t,audiences:r,replay:n,sourceArchive:i,mapFernGroupToSdkConfig:o}){let s=o({fernWorkspace:e,replay:n,group:{groupName:"sdk-gen-api",audiences:r,generators:[t],reviewers:void 0},source:dFg(i)});return{payloadKind:"sdk-config-v1",body:Buffer.from(JSON.stringify(s.sdkConfig),"utf8"),diagnostics:s.diagnostics}}function dFg(e){return{specs:e.specIndexes.map((r,n)=>{let i=e.manifest.specs[r];if(i==null)throw new Error(`Fern source manifest does not contain selected index ${r}`);if(!mFg(i))throw new Error(`SDK Config generation does not support Fern source type ${i.type} (${i.specPath})`);return{id:`source-${n}`,type:i.type,path:i.specPath.replace(/^\/+/,""),...i.namespace==null?{}:{namespace:i.namespace},...i.apiImportSettings==null?{}:{apiImportSettings:i.apiImportSettings},...i.overridePaths==null||i.overridePaths.length===0?{}:{overrides:i.overridePaths}}})}}function mFg(e){return e.type==="openapi"||e.type==="asyncapi"||e.type==="graphql"}Pc();ls();kd();Ct();LI();Ah();Gme();Ct();Uy();On();Ui();function wye({context:e,violations:t,logWarnings:r,logSummary:n=!0,logBreadcrumbs:i=!0,elapsedMillis:o=0}){let s=[],a={};for(let l of t){let p=JSON.stringify(l.nodePath),d=a[p]??[];d.some(m=>m.message===l.message&&m.nodePath.length===l.nodePath.length&&m.nodePath.every((g,A)=>T3(g,l.nodePath[A]))&&m.relativeFilepath===l.relativeFilepath&&m.severity===l.severity)||(s.push(l),a[p]=[...d,l])}t=s;let c=IFg(t),u=hFg(t);for(let l of Array.from(u.keys()).sort()){let p=u.get(l);if(p){let d=p.violations[0]?.relativeFilepath??"";gFg({logWarnings:r,logBreadcrumbs:i,configRelativeFilepath:d,nodePath:p.nodePath,violations:p.violations,context:e})}}return n&&EFg({context:e,stats:c,logWarnings:r,elapsedMillis:o}),{hasErrors:c.numFatal>0}}function hFg(e){let t={};for(let r of e){let i=r.nodePath.length===0?`file:${r.relativeFilepath}`:`node:${JSON.stringify(r.nodePath)}`;t[i]||(t[i]={nodePath:r.nodePath,violations:[]}),t[i].violations.push(r)}return new Map(Object.entries(t))}function gFg({logWarnings:e,logBreadcrumbs:t,configRelativeFilepath:r,nodePath:n,violations:i,context:o}){let s=AFg(i);if(s==="warning"&&!e)return;let a="",c=i.map(u=>u.severity==="warning"&&!e?null:(a===""&&(a=u.relativeFilepath),`${bFg(u.severity)} ${u.message}`)).filter(u=>u!=null).join(`
4095
4095
  `);o.logger.log(yFg(s),s8({breadcrumbs:t?[r,...n.map(u=>{let l=typeof u=="string"?u:u.key;return typeof u!="string"&&u.arrayIndex!=null&&(l+=`[${u.arrayIndex}]`),l})]:[],title:a,subtitle:c})+`
4096
4096
  `)}function AFg(e){return e.some(t=>t.severity==="fatal")?"fatal":e.some(t=>t.severity==="error")?"error":"warning"}function yFg(e){switch(e){case"fatal":return Xn.Error;case"error":return Xn.Error;case"warning":return Xn.Warn;default:Ee(e)}}function bFg(e){switch(e){case"fatal":return me.red("[error]");case"error":return me.red("[error]");case"warning":return me.yellow("[warning]");default:Ee(e)}}function EFg({stats:e,context:t,logWarnings:r,elapsedMillis:n=0}){let{numFatal:i,numErrors:o,numWarnings:s}=e,a=n>0?` in ${(n/1e3).toFixed(3)} seconds.`:".",c=`Found ${i+o} errors and ${s} warnings`+a;!r&&s>0&&(c+=" Run fern check --warnings to print out the warnings not shown."),i+o>0?t.logger.error(c):s>0?t.logger.warn(c):t.logger.info(me.green("\u2713 All checks passed"))}function IFg(e){let t=0,r=0,n=0;for(let i of e)switch(i.severity){case"fatal":t+=1;continue;case"error":r+=1;continue;case"warning":n+=1;continue;default:Ee(i.severity)}return{numFatal:t,numErrors:r,numWarnings:n}}Fi();er();Ct();async function Isp({groups:e,visitor:t,nodePath:r,cliVersion:n}){if(e!=null)for(let[i,o]of Object.entries(e))await vFg({group:o,visitor:t,nodePath:[...r,i],cliVersion:n})}async function vFg({group:e,visitor:t,nodePath:r,cliVersion:n}){await Promise.all(e.generators.map(async(i,o)=>await t.generatorInvocation?.({invocation:i,cliVersion:n},[...r,"generators",o.toString(),"image"in i?i.image.name:i.name])))}async function vsp(e,t,r){await r.file?.(e,[]),await hV(e,{"auth-schemes":It,api:It,whitelabel:It,metadata:It,readme:It,"default-group":It,aliases:It,reviewers:It,openapi:It,"openapi-overrides":It,"spec-origin":It,"async-api":It,"api-settings":It,ai:It,autorelease:It,replay:It,automation:It,groups:async n=>{await Isp({groups:n,visitor:r,nodePath:["groups"],cliVersion:t})}})}function Csp({relativeFilepath:e,contents:t,allRuleVisitors:r,addViolations:n}){function i(o){let s=async(a,c)=>{for(let{name:u,visitors:l}of r){let p=l.generatorsYml?.[o];if(p!=null){let d=await p(a,{relativeFilepath:e,contents:t});n(d.map(f=>({name:u,severity:f.severity,relativeFilepath:e,nodePath:c,message:f.message})))}}};return{[o]:s}}return{...i("file"),...i("generatorInvocation")}}Fi();kd();ehe();kt();function CFg(e,t,r){let n;try{n=GS(r,t)}catch(i){throw new T({message:`Failed to compare versions: ${i instanceof Error?i.message:String(i)}`,code:T.Code.VersionError})}if(!n)return[{severity:"fatal",message:`The generator ${e} requires CLI version ${t} or later (current version: ${r}). Please run \`fern upgrade\` to upgrade your CLI version and use this generator.`}]}function xFg(e){return Number(e.replace("v",""))}var hRs={name:"compatible-ir-version",create:async()=>({generatorsYml:{generatorInvocation:async({invocation:e,cliVersion:t})=>{if(t==null||t==="0.0.0")return[];let r=uHr({token:void 0}),n=await r.generators.cli.getCliRelease(t);if(!n.ok)return[];let i=n.body.irVersion,o="image"in e?e.image.name:e.name,s;if(e["ir-version"]!=null)s=xFg(e["ir-version"]);else{let c={...e,name:$h(o)},u=await xUe(c);if(u==null)return[];s=u}if(s<=i)return[];let a=await r.generators.cli.getMinCliForIr(s);return a.ok?CFg(o,a.body.version,t)??[]:[]}}})};Fi();var gRs={name:"no-direct-rubygems-publishing",checkOnly:!0,create:async()=>({generatorsYml:{generatorInvocation:async({invocation:e})=>Hr.isDirectRubyGemsPublishing(e)?[{severity:"error",message:Hr.DIRECT_RUBYGEMS_PUBLISHING_UNSUPPORTED_MESSAGE}]:[]}})};Fi();var ARs={name:"unsigned-maven-publishing",create:async()=>({generatorsYml:{generatorInvocation:async({invocation:e})=>{if(!Hr.isUnsignedMavenPublishingWithoutUrl(e))return[];let t="image"in e?e.image.name:e.name;return[{severity:"warning",message:Hr.getUnsignedMavenPublishingWithoutUrlMessage(t)}]}}})};var yRs={name:"valid-alias-group-references",create:async()=>({generatorsYml:{file:async e=>{let t=[],r=e.aliases,n=e.groups??{};if(r==null)return t;let i=new Set(Object.keys(n));for(let[o,s]of Object.entries(r))if(Array.isArray(s))for(let a of s)i.has(a)||t.push({severity:"error",message:`Alias "${o}" references unknown group "${a}". Available groups: ${[...i].join(", ")||"none"}`});return t}}})};function xsp(){return[hRs,gRs,ARs,yRs]}async function zCi(e,t,{includeCheckOnlyRules:r=!1}={}){let n=xsp().filter(i=>r||i.checkOnly!==!0);return wFg({workspace:e,rules:n,logger:t})}async function wFg({workspace:e,rules:t,logger:r}){let n=[],i=await Promise.all(t.map(async o=>({name:o.name,visitors:await o.create({workspace:e,logger:r})})));if(e.generatorsConfiguration?.rawConfiguration){let o=await SFg({contents:e.generatorsConfiguration.rawConfiguration,allRuleVisitors:i,cliVersion:e.cliVersion});n.push(...o)}return n}async function SFg({contents:e,allRuleVisitors:t,cliVersion:r}){let n=[],i=Csp({relativeFilepath:be.of(zu),contents:e,allRuleVisitors:t,addViolations:o=>{n.push(...o)}});return await vsp(e,r,i),n}kt();var bRs=Ae(Ssp(),1);async function ERs({workspace:e,context:t,ossWorkspace:r}){(0,bRs.default)(e.definition.rootApiFile.contents.name).validForNewPackages||t.failAndThrow("API name is not valid.",void 0,{code:T.Code.ValidationError});let n=performance.now(),i=dUe(e,t.logger),o=await zCi(e,t.logger,{includeCheckOnlyRules:!0}),s=[...i,...o];r&&s.push(...await bSe(r,t));let a=performance.now()-n,c=s.some(u=>u.severity==="fatal"||u.severity==="error");return{apiName:e.definition.rootApiFile.contents.name,violations:s,elapsedMillis:a,hasErrors:c}}async function Tsp({workspace:e,context:t,logWarnings:r,logSummary:n=!0,ossWorkspace:i}){let o=performance.now(),s=dUe(e,t.logger),a=await zCi(e,t.logger),c=[...s,...a];i&&c.push(...await bSe(i,t));let u=performance.now()-o,{hasErrors:l}=wye({violations:c,context:t,logWarnings:r,logSummary:n,elapsedMillis:u});return{hasErrors:l}}async function rX({workspace:e,context:t,logWarnings:r,ossWorkspace:n}){(0,bRs.default)(e.definition.rootApiFile.contents.name).validForNewPackages||t.failAndThrow("API name is not valid.",void 0,{code:T.Code.ValidationError});let{hasErrors:i}=await Tsp({workspace:e,context:t,logWarnings:r,ossWorkspace:n});i&&t.failAndThrow(void 0,void 0,{code:T.Code.ValidationError})}LI();er();lc();Nd();pAe();kt();g8();On();var Jhp=require("crypto"),Fnr=require("fs/promises");Ui();var knr=Ae(Hme(),1),bFs=require("path");var RFg=new Set(["legacy","ledger"]);function Osp(){if(process.env.FERN_SELF_HOSTED==="true")return"legacy";let e=process.env.FERN_DOCS_DEPLOY_MODE?.toLowerCase().trim();return e==null||e===""?"ledger":DFg(e)?e:(console.warn(`[fern] Unrecognized FERN_DOCS_DEPLOY_MODE="${e}" \u2014 falling back to "ledger". Valid values: ledger, legacy.`),"ledger")}function DFg(e){return RFg.has(e)}LI();Ah();pAe();var Fhp=require("crypto"),Nhp=require("fs/promises"),jhp=Ae(Hme(),1);Ct();function iOt(e,t){if(e==null)return;let r=t?.get(e);return r??e}function kFg(e,t,r){let n=iOt(e,r);if(n==null)return;let i=t?.[n];if(!(i?.width==null||i?.height==null))return{path:n,width:i.width,height:i.height}}function cnr(e,t){if(e==null)return;if(e.type==="url")return{type:"url",value:e.value};let r=iOt(e.value,t);if(r!=null)return{type:"path",value:r}}function IRs(e,t,r){let n=e.background!=null?{type:"solid",...e.background}:void 0,i=iOt(e.backgroundImage,r);return{logo:kFg(e.logo,t,r),backgroundImage:i,accentPrimary:e.accentPrimary,background:n,border:e.border,sidebarBackground:e.sidebarBackground,headerBackground:e.headerBackground,cardBackground:e.cardBackground}}function FFg(e,t,r){if(e!=null)switch(e.type){case"dark":case"light":return{type:e.type,...IRs(e,t,r)};case"darkAndLight":return{type:"darkAndLight",dark:IRs(e.dark,t,r),light:IRs(e.light,t,r)};default:Ee(e)}}function NFg(e,t){if(e==null)return;let{"og:image":r,"og:logo":n,"twitter:image":i,"og:background-image":o,"og:dynamic:background-image":s,...a}=e;return{...a,"og:image":cnr(r,t)??void 0,"og:logo":cnr(n,t)??void 0,"twitter:image":cnr(i,t)??void 0,"og:background-image":cnr(o,t)??void 0,"og:dynamic:background-image":cnr(s,t)??void 0}}function jFg(e,t){if(e==null)return;let r=[];for(let n of e.files){let i=iOt(n.fileId,t);i!=null&&r.push({path:i,strategy:n.strategy})}return{remote:e.remote?.map(n=>({url:n.url,strategy:n.strategy,disableSri:n.disableSri})),files:r,inline:e.inline}}function zFg(e,t){if(e==null)return;let r=n=>{if(n!=null)return{type:"custom",name:n.name,variants:n.variants.map(i=>({fontFile:iOt(i.fontFile,t)??i.fontFile,weight:i.weight,style:i.style})),display:n.display,fallback:n.fallback,fontVariationSettings:n.fontVariationSettings}};return{headingsFont:r(e.headingsFont),bodyFont:r(e.bodyFont),codeFont:r(e.codeFont)}}function QFg(e){if(e==null)return;let t={pageDirective:e.pageDirective,pageDescriptionSource:e.pageDescriptionSource,siteDescription:e.siteDescription},{robotsTxtOnInstanceUrl:r}=e;return r!=null?Object.assign(t,{robotsTxtOnInstanceUrl:r}):t}function MFg(e){if(e!=null)return{intercom:e.intercom}}function Psp({docsConfig:e,fileManifest:t,fileIdToPath:r,editThisPage:n}){return{title:e.title,defaultLanguage:e.defaultLanguage,translations:e.translations,announcement:e.announcement,navbarLinks:e.navbarLinks,footerLinks:e.footerLinks,logoHeight:e.logoHeight,logoHref:e.logoHref,logoRightText:e.logoRightText,favicon:iOt(e.favicon,r),agents:QFg(e.agents),metadata:NFg(e.metadata,r),redirects:e.redirects,colorsV3:FFg(e.colorsV3,t,r),layout:e.layout,theme:e.theme,settings:e.settings,typographyV2:zFg(e.typographyV2,r),analyticsConfig:e.analyticsConfig,css:e.css,js:jFg(e.js,r),aiChatConfig:e.aiChatConfig,pageActions:e.pageActions,editThisPageLaunch:e.editThisPageLaunch,embedding:e.embedding,editThisPageGithub:n?.github!=null?{owner:n.github.owner,repo:n.github.repo,branch:n.github.branch??"main",host:n.github.host??"https://github.com"}:void 0,integrations:MFg(e.integrations),header:e.header,footer:e.footer}}async function oOt(e,t,r){let n=new Array(t.length),i=new Set;for(let o=0;o<t.length;o++){let s=t[o];if(s===void 0)continue;let a=(async()=>{let c=await r(s,o);n[o]=c})().then(()=>{i.delete(a)});i.add(a),i.size>=e&&await Promise.race(i)}return await Promise.all(i),n}var aMg=10,cMg=4,AFs=3,uMg=1e3;function zhp(e){return(0,Fhp.createHash)("sha256").update(e).digest("hex")}var Qhp=/file:([^\s"'<>)}\]]+)/g;function lMg(e){let t=new Set;for(let r of e.matchAll(Qhp)){let n=r[1];n!=null&&t.add(n)}return[...t]}function pMg(e,t){return t==null||t.size===0?e:e.replace(Qhp,(r,n)=>`file:${t.get(n)??n}`)}function fMg(e){return JSON.stringify(e,(t,r)=>r!=null&&typeof r=="object"&&!Array.isArray(r)?Object.fromEntries(Object.entries(r).sort(([n],[i])=>n<i?-1:n>i?1:0)):r)}function Dhp(e){let t=Buffer.from(fMg(e),"utf-8"),r=zhp(t);return{ref:{hash:r,contentType:"application/json",contentLength:t.length},hash:r,buf:t}}function sWe({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:s}){let a=new Map,c={};for(let[f,m]of Object.entries(e.pages)){if(m==null)continue;let g=pMg(m.markdown,i),A=Buffer.from(g,"utf-8"),y=zhp(A),I=lMg(g);c[f]={hash:y,contentType:"text/markdown",contentLength:A.length,...I.length>0?{referencedFiles:I}:{}},a.set(y,A)}let u=Psp({docsConfig:e.config,fileManifest:n,fileIdToPath:i,editThisPage:o}),l=null;if(r.size>0){let f=Object.fromEntries(r),m=Dhp(f);a.set(m.hash,m.buf),l=m.ref}let p=null;if(e.jsFiles!=null&&Object.keys(e.jsFiles).length>0){let f=Dhp(e.jsFiles);a.set(f.hash,f.buf),p=f.ref}return{localeEntry:{root:e.config.root??e.config.navigation,pages:c,config:u,apiManifest:l,jsFiles:p,fileManifest:n,redirects:null,locale:s??e.config.translations?.defaultLocale??"en",git:t},blobs:a}}async function Mhp({docsDefinition:e,organization:t,domain:r,basepath:n,basepathAware:i,previewId:o,customDomains:s,git:a,token:c,fdrOrigin:u,headers:l,context:p,apiDefinitions:d,fileManifest:f,filePaths:m,fileIdToPath:g,editThisPage:A,resolver:y}){let{localeEntry:I,blobs:x}=sWe({docsDefinition:e,git:a,apiDefinitions:d,fileManifest:f,fileIdToPath:g,editThisPage:A}),v=await vOt({docsDefinition:e,git:a,apiDefinitions:d,fileManifest:f,fileIdToPath:g,editThisPage:A,resolver:y,context:p});for(let fe of v)for(let[ie,de]of fe.blobs)x.set(ie,de);let{createDocsLedgerClient:w}=await Promise.resolve().then(()=>(hFs(),Php)),B=w({baseUrl:u,token:c,headers:l}),R=[I,...v.map(fe=>fe.localeEntry)],D={orgId:t,domain:r,basepath:n??"",...i&&{basepathAware:!0},customDomains:s??[],previewId:o??null,defaultLocale:I.locale,locales:R};p.logger.debug("[ledger] Registering deployment...");let O=performance.now(),z=await B.register(D),Y=performance.now()-O;p.logger.debug(`[ledger] Registered in ${Y.toFixed(0)}ms \u2014 hash=${z.deploymentHash}, missing=${z.missingContent.length} blobs`),await yFs(z.missingContent,x,p,m),p.logger.debug("[ledger] Finishing deployment...");let $=performance.now(),ee=await B.finish(D),ae=performance.now()-$;if(p.logger.debug(`[ledger] Finished in ${ae.toFixed(0)}ms \u2014 deploymentId=${ee.deploymentId}, reused=${ee.reusedDeployment}`),ee.translationsProcessed!=null)for(let fe of ee.translationsProcessed)p.logger.debug(`[ledger] Locale "${fe.locale}": ${fe.segmentsAdded} segment(s) added`);return ee}async function yFs(e,t,r,n){if(e.length>0){r.logger.debug(`[ledger] Uploading ${e.length} missing blobs...`);let i=performance.now(),o=await oOt(aMg,[...e],async({hash:u,uploadUrl:l})=>{let p=t.get(u),d="application/octet-stream";if(p==null&&n!=null){let f=n.get(u);if(f!=null){p=await(0,Nhp.readFile)(f);let m=jhp.lookup(f);m!==!1&&(d=m)}}return p==null?(r.logger.warn(`[ledger] Server requested blob ${u} but we don't have it \u2014 skipping`),"skipped"):dMg(p,l,u,d,r)}),s=o.filter(u=>u==="uploaded").length,a=o.filter(u=>u==="already_exists").length,c=performance.now()-i;r.logger.debug(`[ledger] Upload complete in ${c.toFixed(0)}ms \u2014 ${s} uploaded, ${a} already in store`)}else r.logger.debug("[ledger] All content already in CAS \u2014 no uploads needed")}async function dMg(e,t,r,n,i){let o=e.buffer.slice(e.byteOffset,e.byteOffset+e.byteLength);for(let s=0;s<=AFs;s++){let a=await fetch(t,{method:"PUT",headers:{"Content-Type":n},body:o});if(a.ok)return"uploaded";if(a.status===412)return i.logger.debug(`[ledger] Blob ${r} already exists in store \u2014 skipping`),"already_exists";if(a.status===403){let l=await a.text();throw new Error(`[ledger] Presigned URL rejected for ${r} (expired or signature mismatch): ${l}`)}if(a.status===400){let l=await a.text();throw new Error(`[ledger] Content integrity check failed for ${r}: ${l}`)}if((a.status===429||a.status>=500)&&s<AFs){let l=uMg*2**s;i.logger.debug(`[ledger] Upload ${r} got ${a.status}, retrying in ${l}ms (attempt ${s+1}/${AFs})`),await new Promise(p=>setTimeout(p,l));continue}let u=await a.text();throw new Error(`[ledger] S3 upload failed for ${r}: ${a.status} ${u}`)}throw new Error(`[ledger] Upload exhausted retries for ${r}`)}function khp(e,t,r){try{let n=DK(e,fn.ApiDefinitionId(t),new kK({snippetsConfigWithSdkId:{},snippetsBySdkId:{},snippetTemplatesByEndpoint:{},snippetTemplatesByEndpointId:{},snippetsBySdkIdAndEndpointId:{}}));return FK(n)}catch(n){r.logger.debug(`[ledger] Failed to convert API definition "${t}" to read form: ${String(n)}`);return}}function mMg({baseApiDefinitions:e,translatedSpecs:t,context:r}){let n=new Map(e);for(let[i,o]of t)try{let s=YO({ir:o.ir,snippetsConfig:o.snippetsConfig,playgroundConfig:o.playgroundConfig,graphqlOperations:o.graphqlOperations,graphqlTypes:o.graphqlTypes,context:r,apiNameOverride:o.apiName});n.set(i,s)}catch(s){r.logger.warn(`[ledger] Failed to convert translated API definition for API "${i}": ${String(s)}. Falling back to base (untranslated) API.`)}return n}async function vOt({docsDefinition:e,git:t,apiDefinitions:r,fileManifest:n,fileIdToPath:i,editThisPage:o,resolver:s,context:a}){if(s==null)return[];let c=s.getTranslationPages(),u=s.getTranslationNavigationOverlays();if(c==null||Object.keys(c).length===0)return[];let l=s.getTranslatedApiSpecs(),p={};if(l.size>0)for(let[m,g]of r){let A=khp(g,m,a);A!=null&&(p[m]=A)}let d=Object.entries(c);a.logger.debug(`[ledger] Building ${d.length} translation locale(s)...`);let{buildTranslatedDocsDefinition:f}=await Promise.resolve().then(()=>(Rhp(),Bhp));return oOt(cMg,d,async([m,g])=>{let A=await f({docsDefinition:e,locale:m,localePages:g,translationNavigationOverlays:u,resolver:s,context:a}),y=l.get(m),I=r,x=new Set;if(y!=null&&y.size>0&&(I=mMg({baseApiDefinitions:r,translatedSpecs:y,context:a}),A.config.root!=null)){let B={};for(let[O]of y){let z=I.get(O);if(z!=null){let Y=khp(z,O,a);Y!=null&&(B[O]=Y)}}let R=oGe(A.config.root,p,B);if(R.size>0){a.logger.warn(`Translated API definition(s) [${Array.from(R).join(", ")}] for locale "${m}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`);for(let O of R){let z=r.get(O);z!=null&&I.set(O,z)}}let D=new Set(Object.keys(B).filter(O=>!R.has(O)));x=new Set(Array.from(D).filter(O=>I.get(O)!==r.get(O))),Object.keys(B).length>0&&(A.config.root=sGe(A.config.root,p,B,{rewritableApiIds:D}))}A.config.root=pGe(A.config.root,{translatedApiDefinitionIds:x});let{localeEntry:v,blobs:w}=sWe({docsDefinition:A,git:t,apiDefinitions:I,fileManifest:n,fileIdToPath:i,editThisPage:o,locale:m});return{locale:m,localePages:g,translatedDefinition:A,localeEntry:v,blobs:w}})}hFs();async function Lhp({docsDefinition:e,organization:t,basePath:r,previewId:n,git:i,token:o,fdrOrigin:s,headers:a,context:c,apiDefinitions:u,fileManifest:l,filePaths:p,fileIdToPath:d,editThisPage:f,resolver:m}){let{localeEntry:g,blobs:A}=sWe({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f}),y=await vOt({docsDefinition:e,git:i,apiDefinitions:u,fileManifest:l,fileIdToPath:d,editThisPage:f,resolver:m,context:c});for(let Y of y)for(let[$,ee]of Y.blobs)A.set($,ee);let I=[g,...y.map(Y=>Y.localeEntry)],x=vxi({baseUrl:s,token:o,headers:a});c.logger.debug("[ledger-preview] Registering preview deployment...");let v=performance.now(),w={orgId:t,previewId:n??null,basePath:r??"",defaultLocale:g.locale,locales:I,root:g.root,pages:g.pages,apiManifest:g.apiManifest,config:g.config,fileManifest:g.fileManifest,jsFiles:g.jsFiles,redirects:g.redirects,locale:g.locale,version:g.version,repo:g.repo,git:i},B=await x.previewRegister(w),R=performance.now()-v;c.logger.debug(`[ledger-preview] Registered in ${R.toFixed(0)}ms \u2014 hash=${B.deploymentHash}, preview=${B.previewUrl}, missing=${B.missingContent.length} blobs`),await yFs(B.missingContent,A,c,p),c.logger.debug("[ledger-preview] Finishing preview deployment...");let D=performance.now(),O=await x.finish({orgId:t,domain:B.domain,basepath:B.basepath,customDomains:[],previewId:B.previewId,defaultLocale:g.locale,locales:I}),z=performance.now()-D;if(c.logger.debug(`[ledger-preview] Finished in ${z.toFixed(0)}ms \u2014 deploymentId=${O.deploymentId}, reused=${O.reusedDeployment}`),O.translationsProcessed!=null)for(let Y of O.translationsProcessed)c.logger.debug(`[ledger-preview] Locale "${Y.locale}": ${Y.segmentsAdded} segment(s) added`);return{previewUrl:B.previewUrl,deploymentId:O.deploymentId}}async function _hp({fn:e,maxRetries:t,baseDelayMs:r,jitterFactor:n=0,isRetryable:i=()=>!0,logger:o,label:s,delayFn:a=c=>new Promise(u=>setTimeout(u,c))}){let c;for(let u=0;u<=t;u++)try{return await e()}catch(l){if(c=l,!i(l)||u>=t)throw l;let p=n>0?1+(Math.random()-.5)*n:1,d=Math.round(r*2**u*p);s!=null&&o.warn(`${s} (attempt ${u+1}/${t+1}), retrying in ${d}ms...`),await a(d)}throw c}var hMg=10,Uhp=10,wxi=parseInt(process.env.FERN_DOCS_ASSET_HASH_CONCURRENCY??"32",10),gMg=3,AMg=1e3,yMg=.5;function Vhp(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function bMg(e){if(e==null)return"Unknown error";let t=e instanceof Error?e.message:String(e),r=e.data;if(r?.issues!=null&&Array.isArray(r.issues)&&r.issues.length>0){let n=r.issues.map(i=>{let o=i.path?.join(".")??"",s=i.message??"invalid";return o?` - ${o}: ${s}`:` - ${s}`}).join(`
4097
4097
  `);return t+`
@@ -4121,7 +4121,7 @@ ${tt.stack}`),!1}};await D();let O=w.apiWorkspaces.flatMap(Be=>Be.getAbsoluteFil
4121
4121
  `)},ue=[],Pe,Ce=!1;z.on("all",(Be,Ge)=>{n.logger.info(me.dim(`[${Be}] ${Ge}`)),!Ce&&(ue.push(_t.of(Ge)),Pe!=null&&clearTimeout(Pe),Pe=setTimeout(()=>{(async()=>{Ce=!0;try{let tt=R.getFilesToReload(ue);await D(tt)&&await ce()}finally{ue.length=0,Ce=!1}})()},H5g))}),n.logger.info(`Docs preview server (Astro) ready on http://localhost:${i}${g}`),await de}async function Z5g({bundlePath:e,forceDownload:t,cacheDir:r,context:n}){if(e!=null)return n.logger.info(`Using Astro bundle from path: ${e}`),await CEp(_t.of(e));if(t){let a=ZFe({astro:!0,cacheDir:r});await Ut(a)&&(n.logger.info("Force download requested. Deleting cached Astro bundle..."),await(0,Ewi.rm)(a,{recursive:!0}))}let i="https://prod-local-preview-astro-bundle.s3.amazonaws.com/";if(i==null)throw new T({message:"Failed to connect to the docs preview server. Please contact support@buildwithfern.com",code:T.Code.InternalError});let o=HGe({astro:!0,cacheDir:r});if((await _$t({bucketUrl:i,logger:n.logger,preferCached:!0,astro:!0,tryTar:!0,cacheDir:r})).type==="failure")if(await Ut(o))n.logger.warn("Falling back to cached Astro bundle...");else throw new T({message:"Failed to download the Astro docs preview bundle. Please reach out to support@buildwithfern.com.",code:T.Code.NetworkError});return await CEp(o)}async function CEp(e){let t=De(e,be.of(J5g)),r=Y5g;if(await Ut(t)){let i=JSON.parse(await(0,Ewi.readFile)(t,"utf-8"));typeof i.entry=="string"&&(r=i.entry)}let n=De(e,be.of(r));if(!await Ut(n))throw new T({message:`${e} does not contain the Astro preview server (missing ${r}).`,code:T.Code.UserError});return{root:e,entry:n}}var $5g="_fern-files";function e8g({rendererPort:e,rendererHost:t,mirrorPort:r,basepath:n,reloadClients:i}){let o=`${n}/${$5g}/`;return Y2s.default.createServer((s,a)=>{if(s.url===wEp){a.writeHead(200,{"content-type":"text/event-stream","cache-control":"no-store",connection:"keep-alive"}),a.write(`: connected
4122
4122
 
4123
4123
  `),i.add(a),s.on("close",()=>i.delete(a));return}let c=s.url!=null&&s.url.startsWith(o),u=Y2s.default.request(c?{host:"127.0.0.1",port:r,method:s.method,path:`/files/${s.url?.slice(o.length)??""}`,headers:s.headers}:{host:"127.0.0.1",port:e,method:s.method,path:s.url,headers:{...s.headers,[xEp]:t}},l=>{let p={...l.headers};if(!((p["content-type"]??"").includes("text/html")&&p["content-encoding"]==null)){a.writeHead(l.statusCode??502,p),l.pipe(a);return}let f=[];l.on("data",m=>f.push(m)),l.on("end",()=>{let m=Buffer.concat(f).toString("utf-8"),g=m.lastIndexOf("</body>"),A=g>=0?`${m.slice(0,g)}${vEp}${m.slice(g)}`:`${m}${vEp}`,y=Buffer.from(A,"utf-8");delete p["transfer-encoding"],p["content-length"]=y.byteLength.toString(),a.writeHead(l.statusCode??502,p),a.end(y)}),l.on("error",()=>a.destroy())});u.on("error",l=>{a.headersSent||a.writeHead(502,{"content-type":"text/plain"}),a.end(`Astro preview server unavailable: ${l.message}
4124
- `)}),s.pipe(u)})}function t8g(){return new Promise((e,t)=>{let r=X2s.default.createServer();r.once("error",t),r.listen(0,"127.0.0.1",()=>{let n=r.address(),i=typeof n=="object"&&n!=null?n.port:void 0;r.close(()=>i!=null?e(i):t(new Error("could not allocate a port")))})})}function r8g(e,t,r){let n=Date.now()+r;return new Promise((i,o)=>{let s=!1;t.on("exit",c=>{s=!0,o(new Error(`Astro preview server exited with code ${c} before becoming ready`))});let a=()=>{if(s)return;if(Date.now()>n){o(new Error("timed out waiting for the Astro preview server to become ready"));return}let c=X2s.default.connect(e,"127.0.0.1");c.once("connect",()=>{c.destroy(),i()}),c.once("error",()=>{c.destroy(),setTimeout(a,200)})};a()})}kt();var OEp=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,SEp="docs.buildwithfern.com",TEp=62;function gWe(e){let t=e.toLowerCase().trim();t.startsWith("https://")?t=t.slice(8):t.startsWith("http://")&&(t=t.slice(7));let r=t.indexOf("/");return r!==-1&&(t=t.slice(0,r)),OEp.test(t)}function PEp(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function cir({orgId:e,previewId:t}){let r=PEp(t),n=`${e}-preview-${r}.${SEp}`;if(n.length<=TEp)return n;let i=`${e}-preview-`,o=TEp-i.length;if(o<8)throw new T({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:T.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${SEp}`}Ct();LI();Ah();er();d0();kt();On();var SNs=require("child_process"),UIp=Ae(REp(),1),TNs=Ae(ywi(),1),ONs=Ae(require("fs"),1),BNs=require("fs/promises"),VIp=Ae(require("http"),1),GIp=Ae(require("os"),1),jwi=Ae(require("path"),1);INs();LI();er();var vNs=require("fs/promises");async function CNs(e,t){let r=new Map,{docsDefinition:n,translationPages:i,translationNavigationOverlays:o,translatedApiDefinitions:s,collectedFileIds:a,docsWorkspacePath:c,markdownFilesToPathName:u}=e,l=i!=null&&Object.keys(i).length>0,p=s!=null&&Object.keys(s).length>0;if(!l&&!p)return r;let d=n.config.translations?.defaultLocale,f=new Set([...Object.keys(i??{}),...Object.keys(s??{})]);for(let m of f){if(m===d)continue;let g=i?.[m]??{};try{let A=async fe=>{let ie=Io(c,fe),de=Yn(c,be.of(`translations/${m}/${ie}`));return await Ut(de)?de:fe},y=async fe=>{let ie=await A(fe),de=await(0,vNs.readFile)(ie,"utf-8"),Se=de.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return Se!=null?de.slice(Se[0].length):de},I=async fe=>{let ie=await A(fe);return(0,vNs.readFile)(ie,"utf-8")},x={};for(let[fe,ie]of Object.entries(n.pages))ie!=null&&(x[fe]=ie);for(let[fe,ie]of Object.entries(g))try{let de=x[fe],Se=Yn(c,be.of(fe)),{markdown:Fe}=await IF({markdown:ie,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t,markdownLoader:y}),ce=await c_({markdown:Fe,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t,fileLoader:I}),ue=u_({markdown:ce,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t}),Pe=JO(ue);Pe=n_(Pe,a,u,{absolutePathToMarkdownFile:Se,absolutePathToFernFolder:c},t),x[fe]={markdown:Pe,rawMarkdown:Pe,editThisPageUrl:de?.editThisPageUrl,editThisPageLaunch:de?.editThisPageLaunch}}catch(de){t.logger.warn(`Failed to process translated page "${fe}" for locale "${m}": ${String(de)}. Falling back to base page.`)}let v=aGe(n.config.root,g,t),w=o?.[m],B=n.config.announcement,R=n.config.navbarLinks;w!=null&&(v=uGe(v,w),B=lGe(w)??B,w.navbarLinks!=null&&(R=w.navbarLinks));let D=n.apis,O=s?.[m],z=O,Y;if(O!=null&&v!=null){let fe=oGe(v,D,O);fe.size>0&&(t.logger.warn(`Translated API definition(s) [${Array.from(fe).join(", ")}] for locale "${m}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`),z=Object.fromEntries(Object.entries(O).filter(([ie])=>!fe.has(ie)))),Y=new Set(Object.keys(O).filter(ie=>!fe.has(ie)))}let ee=z!=null&&Object.keys(z).length>0?{...n.apis,...z}:n.apis;O!=null&&Object.keys(O).length>0&&v!=null&&(v=sGe(v,D,O,{rewritableApiIds:Y}));let ae={...n,apis:ee,pages:x,config:{...n.config,root:v,announcement:B,navbarLinks:R}};r.set(m,ae),t.logger.debug(`Computed translated definition for locale "${m}"`+(O!=null?` (with ${Object.keys(O).length} translated API(s))`:""))}catch(A){t.logger.warn(`Failed to compute translation for locale "${m}": ${String(A)}`)}}return r}er();var WW=require("fs/promises"),jIp=require("os"),wNs=Ae(require("path"),1),PGg=".fern",BGg="logs",xNs=100*1024*1024;function RGg(){return"cli@5.170.0"}var vWe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t,r){if(this.initialized)return;this.consoleLogger=t;let n=r??De(De(_t.of((0,jIp.homedir)()),be.of(PGg)),be.of(BGg));await Ut(n)||await(0,WW.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=De(n,be.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${wNs.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
4124
+ `)}),s.pipe(u)})}function t8g(){return new Promise((e,t)=>{let r=X2s.default.createServer();r.once("error",t),r.listen(0,"127.0.0.1",()=>{let n=r.address(),i=typeof n=="object"&&n!=null?n.port:void 0;r.close(()=>i!=null?e(i):t(new Error("could not allocate a port")))})})}function r8g(e,t,r){let n=Date.now()+r;return new Promise((i,o)=>{let s=!1;t.on("exit",c=>{s=!0,o(new Error(`Astro preview server exited with code ${c} before becoming ready`))});let a=()=>{if(s)return;if(Date.now()>n){o(new Error("timed out waiting for the Astro preview server to become ready"));return}let c=X2s.default.connect(e,"127.0.0.1");c.once("connect",()=>{c.destroy(),i()}),c.once("error",()=>{c.destroy(),setTimeout(a,200)})};a()})}kt();var OEp=/^[a-z0-9-]+-preview-[a-z0-9-]+\.docs\.buildwithfern\.com$/i,SEp="docs.buildwithfern.com",TEp=62;function gWe(e){let t=e.toLowerCase().trim();t.startsWith("https://")?t=t.slice(8):t.startsWith("http://")&&(t=t.slice(7));let r=t.indexOf("/");return r!==-1&&(t=t.slice(0,r)),OEp.test(t)}function PEp(e){let t=e.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-{2,}/g,"-").replace(/^-+|-+$/g,"");return t.length===0?"default":t}function cir({orgId:e,previewId:t}){let r=PEp(t),n=`${e}-preview-${r}.${SEp}`;if(n.length<=TEp)return n;let i=`${e}-preview-`,o=TEp-i.length;if(o<8)throw new T({message:`Organization name "${e}" is too long to generate a valid preview URL`,code:T.Code.ValidationError});let a=r.slice(0,o).replace(/-+$/,"");return`${i}${a}.${SEp}`}Ct();LI();Ah();er();d0();kt();On();var SNs=require("child_process"),UIp=Ae(REp(),1),TNs=Ae(ywi(),1),ONs=Ae(require("fs"),1),BNs=require("fs/promises"),VIp=Ae(require("http"),1),GIp=Ae(require("os"),1),jwi=Ae(require("path"),1);INs();LI();er();var vNs=require("fs/promises");async function CNs(e,t){let r=new Map,{docsDefinition:n,translationPages:i,translationNavigationOverlays:o,translatedApiDefinitions:s,collectedFileIds:a,docsWorkspacePath:c,markdownFilesToPathName:u}=e,l=i!=null&&Object.keys(i).length>0,p=s!=null&&Object.keys(s).length>0;if(!l&&!p)return r;let d=n.config.translations?.defaultLocale,f=new Set([...Object.keys(i??{}),...Object.keys(s??{})]);for(let m of f){if(m===d)continue;let g=i?.[m]??{};try{let A=async fe=>{let ie=Io(c,fe),de=Yn(c,be.of(`translations/${m}/${ie}`));return await Ut(de)?de:fe},y=async fe=>{let ie=await A(fe),de=await(0,vNs.readFile)(ie,"utf-8"),Se=de.match(/^---\r?\n[\s\S]*?\r?\n---\r?\n?/);return Se!=null?de.slice(Se[0].length):de},I=async fe=>{let ie=await A(fe);return(0,vNs.readFile)(ie,"utf-8")},x={};for(let[fe,ie]of Object.entries(n.pages))ie!=null&&(x[fe]=ie);for(let[fe,ie]of Object.entries(g))try{let de=x[fe],Se=Yn(c,be.of(fe)),{markdown:Fe}=await IF({markdown:ie,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t,markdownLoader:y}),ce=await c_({markdown:Fe,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t,fileLoader:I}),ue=u_({markdown:ce,absolutePathToFernFolder:c,absolutePathToMarkdownFile:Se,context:t}),Pe=JO(ue);Pe=n_(Pe,a,u,{absolutePathToMarkdownFile:Se,absolutePathToFernFolder:c},t),x[fe]={markdown:Pe,rawMarkdown:Pe,editThisPageUrl:de?.editThisPageUrl,editThisPageLaunch:de?.editThisPageLaunch}}catch(de){t.logger.warn(`Failed to process translated page "${fe}" for locale "${m}": ${String(de)}. Falling back to base page.`)}let v=aGe(n.config.root,g,t),w=o?.[m],B=n.config.announcement,R=n.config.navbarLinks;w!=null&&(v=uGe(v,w),B=lGe(w)??B,w.navbarLinks!=null&&(R=w.navbarLinks));let D=n.apis,O=s?.[m],z=O,Y;if(O!=null&&v!=null){let fe=oGe(v,D,O);fe.size>0&&(t.logger.warn(`Translated API definition(s) [${Array.from(fe).join(", ")}] for locale "${m}" diverge from the default-locale spec (e.g. changed OpenAPI tag names, operationIds, or paths, or a missing/added endpoint), so they can't be fully matched to the navigation tree. Serving the default-locale API for those (localized sidebar titles are still applied where they can be matched). For fully localized API reference content, translate only human-readable text and keep tag names/operationIds/paths identical to the base spec.`),z=Object.fromEntries(Object.entries(O).filter(([ie])=>!fe.has(ie)))),Y=new Set(Object.keys(O).filter(ie=>!fe.has(ie)))}let ee=z!=null&&Object.keys(z).length>0?{...n.apis,...z}:n.apis;O!=null&&Object.keys(O).length>0&&v!=null&&(v=sGe(v,D,O,{rewritableApiIds:Y}));let ae={...n,apis:ee,pages:x,config:{...n.config,root:v,announcement:B,navbarLinks:R}};r.set(m,ae),t.logger.debug(`Computed translated definition for locale "${m}"`+(O!=null?` (with ${Object.keys(O).length} translated API(s))`:""))}catch(A){t.logger.warn(`Failed to compute translation for locale "${m}": ${String(A)}`)}}return r}er();var WW=require("fs/promises"),jIp=require("os"),wNs=Ae(require("path"),1),PGg=".fern",BGg="logs",xNs=100*1024*1024;function RGg(){return"cli@5.170.1"}var vWe=class{logFilePath=null;initialized=!1;sessionStartTime;consoleLogger;constructor(){this.sessionStartTime=Date.now()}async initialize(t,r){if(this.initialized)return;this.consoleLogger=t;let n=r??De(De(_t.of((0,jIp.homedir)()),be.of(PGg)),be.of(BGg));await Ut(n)||await(0,WW.mkdir)(n,{recursive:!0});let o=`${new Date().toISOString().replace(/[:.]/g,"-")}.debug.log`;this.logFilePath=De(n,be.of(o));let s=["================================================================================","Fern Docs Dev Debug Log",`Session started: ${new Date().toISOString()}`,`Log file: ${wNs.default.basename(this.logFilePath)}`,"================================================================================",""].join(`
4125
4125
  `);await(0,WW.writeFile)(this.logFilePath,s,"utf-8"),this.initialized=!0,this.enforceLogSizeLimit(n)}getLogFilePath(){return this.logFilePath}async writeEntry(t){if(!this.initialized||!this.logFilePath)return;let r=JSON.stringify(t)+`
4126
4126
  `;try{await(0,WW.appendFile)(this.logFilePath,r,"utf-8")}catch{}}async logFrontendMetrics(t){let r={timestamp:t.timestamp,source:t.source,level:t.level,eventType:this.getEventType(t.payload,t.isAggregate),isAggregate:t.isAggregate,data:t.payload};await this.writeEntry(r)}async logCliMetric(t,r="info"){let n={timestamp:t.timestamp,source:RGg(),level:r,eventType:t.type,data:{durationMs:t.durationMs,metadata:t.metadata}};await this.writeEntry(n)}async logCliMemory(){let t=process.memoryUsage(),r={type:"cli_memory",timestamp:new Date().toISOString(),metadata:{heapUsed:t.heapUsed,heapTotal:t.heapTotal,external:t.external,rss:t.rss,heapUsedMB:Math.round(t.heapUsed/1024/1024*100)/100,heapTotalMB:Math.round(t.heapTotal/1024/1024*100)/100,rssMB:Math.round(t.rss/1024/1024*100)/100}};await this.logCliMetric(r)}async logCliReloadStart(){let t={type:"cli_reload_start",timestamp:new Date().toISOString()};await this.logCliMetric(t)}async logCliReloadFinish(t,r){let n={type:"cli_reload_finish",timestamp:new Date().toISOString(),durationMs:t,metadata:r};await this.logCliMetric(n)}async logCliDocsGeneration(t,r){let n={type:"cli_docs_generation",timestamp:new Date().toISOString(),durationMs:t,metadata:r};await this.logCliMetric(n)}async logCliValidation(t,r){let n={type:"cli_validation",timestamp:new Date().toISOString(),durationMs:t,metadata:{success:r}};await this.logCliMetric(n)}async enforceLogSizeLimit(t){try{let n=(await(0,WW.readdir)(t)).filter(c=>c.endsWith(".log")),i=[];for(let c of n){let u=wNs.default.join(t,c);try{let l=await(0,WW.stat)(u);i.push({name:c,fullPath:u,size:l.size,mtimeMs:l.mtimeMs})}catch{}}let o=i.reduce((c,u)=>c+u.size,0),s=Math.round(o/1024/1024*100)/100,a=xNs/1024/1024;if(o<=xNs){this.consoleLogger?.debug(`Log directory size ${s} MB does not exceed ${a} MB cap`);return}this.consoleLogger?.info(`Rotating logs: total size ${s} MB exceeds ${a} MB cap`),i.sort((c,u)=>c.mtimeMs-u.mtimeMs);for(let c of i){if(o<=xNs)break;if(!(this.logFilePath!=null&&c.fullPath===this.logFilePath))try{await(0,WW.unlink)(c.fullPath),o-=c.size}catch{}}}catch{}}getEventType(t,r){return r?"aggregate_summary":"type"in t&&typeof t.type=="string"?t.type:"unknown"}static isMetricsMessage(t){if(typeof t!="object"||t===null)return!1;let r=t;return r.type==="metrics"&&typeof r.timestamp=="string"&&typeof r.source=="string"}};var Nwi={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, OPTIONS","Access-Control-Allow-Headers":"Content-Type"};function zIp(e){let t=DGg();if(t==null)return;let{port:r,debugLogger:n,getDocsLoadResponse:i,extractLocaleFromPath:o}=e,s=new Map;function a(u){let l=JSON.stringify(u),p=[];for(let[d]of s)try{d.send(l)}catch{p.push(d)}for(let d of p){let f=s.get(d);f&&(clearInterval(f.pingInterval),s.delete(d))}}let c=t.serve({port:r,async fetch(u,l){if(u.method==="OPTIONS")return new Response(null,{status:204,headers:Nwi});let p=new URL(u.url);if(u.headers.get("upgrade")?.toLowerCase()==="websocket"){l.upgrade(u,{data:{connectionId:`${Date.now()}`}});return}if(u.method==="POST"&&p.pathname==="/v2/registry/docs/load-with-url")try{let f=await u.json(),m=o?.(f?.url);return new Response(JSON.stringify(i(m)),{headers:{"Content-Type":"application/json",...Nwi}})}catch{return new Response(JSON.stringify(i()),{headers:{"Content-Type":"application/json",...Nwi}})}let d=/^\/_local\/(.*)/.exec(p.pathname);return u.method==="GET"&&d!=null?new Response(t.file(`/${d[1]}`),{headers:Nwi}):new Response("Not Found",{status:404})},websocket:{open(u){let{connectionId:l}=u.data,p=setInterval(()=>{let d=s.get(u);if(!d)return;let f=Date.now();if(f-d.lastPong>9e4){u.close();return}try{u.send(JSON.stringify({type:"ping",timestamp:f}))}catch{u.close()}},3e4);s.set(u,{pingInterval:p,lastPong:Date.now()});try{u.send(JSON.stringify({type:"connected",connectionId:l}))}catch{}},message(u,l){try{let p=JSON.parse(l.toString());if(p.type==="pong"){let d=s.get(u);d&&(d.lastPong=Date.now())}else vWe.isMetricsMessage(p)&&n.logFrontendMetrics(p)}catch{}},close(u){let l=s.get(u);l&&(clearInterval(l.pingInterval),s.delete(u))}}});return{sendData:a,stop:u=>c.stop(u)}}function DGg(){return globalThis.Bun}var QIp=require("fs"),MIp=Ae(require("path"),1),kGg=`"use strict";
4127
4127
 
@@ -4442,7 +4442,7 @@ ${n}
4442
4442
 
4443
4443
  Add a 'docs:' section to your fern.yml to get started.`,code:T.Code.ConfigError});let i=n.docs.raw.libraries;if(i==null)throw new T({message:`No libraries configured in docs.yml.
4444
4444
 
4445
- Add a 'libraries' section to configure library documentation.`,code:T.Code.ConfigError});let o=await t.getTokenOrPrompt();await t.verifyOrgAccess({organization:n.org,token:o});let s=n.docs.absoluteFilePath??n.absoluteFilePath??t.cwd,a=_t.of(un(s)),c=new zd({context:t,logLevel:Xn.Info});await Csr({libraries:i,library:r.library,docsDirectoryPath:a,orgId:n.org,tokenValue:o.value,context:c,wrapStep:EP,docsConfig:n.docs.raw})}};function D_s(e){let t=new R_s;li(e,"generate","[Beta] Generate MDX documentation from library source code. Requires 'libraries' config in docs.yml.",(r,n)=>t.handle(r,n),r=>r.option("library",{type:"string",description:"Name of a specific library defined in docs.yml to generate docs for"}))}function k_s(e){DA({cli:e,name:"md",subcommands:[D_s,t_s]})}kt();function tRi(e,t,r,n,i,o){e.command(t,r,s=>{for(let a of o)a(s);return s.command("$0",!1,a=>{let c=a.version(!1);return i!=null?i(c):c},Dsn(n)),s.version(!1).usage(r)})}Ct();LI();kt();On();Ct();kt();var rRi=class{context;task;project;docsWorkspace;ossWorkspaces;token;constructor({context:t,task:r,project:n,docsWorkspace:i,ossWorkspaces:o,token:s}){this.context=t,this.task=r,this.project=n,this.docsWorkspace=i,this.ossWorkspaces=o,this.token=s}async publish({instanceUrl:t,preview:r,previewId:n,skipUpload:i}){let o=new zd({context:this.context,task:this.task});try{let s=await znr({organization:this.project.config.organization,apiWorkspaces:this.project.apiWorkspaces,ossWorkspaces:this.ossWorkspaces,docsWorkspace:this.docsWorkspace,context:o,token:this.token,instanceUrl:t,preview:r,previewId:n,disableTemplates:void 0,skipUpload:i,cliVersion:"5.170.0",loginCommand:"fern auth login"});return o.getResult()===Sf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Sn(s)}}}};Ct();On();var NRt=class e{static MAX_DISPLAYED_LOGS_TTY=10;static URL_PATTERN=/https?:\/\/[^\s]+/;context;stream;tasks={};taskOrder=[];startTime;isRegistered=!1;constructor(t){this.context=t.context,this.stream=t.stream??process.stderr}addTask(t){let r={...t,status:t.status??"pending"};return this.tasks[t.id]=r,this.taskOrder.push(t.id),this}async start(t){return this.startTime=Date.now(),t!=null&&await this.context.ttyAwareLogger.takeOverTerminal(()=>{this.stream.write(`
4445
+ Add a 'libraries' section to configure library documentation.`,code:T.Code.ConfigError});let o=await t.getTokenOrPrompt();await t.verifyOrgAccess({organization:n.org,token:o});let s=n.docs.absoluteFilePath??n.absoluteFilePath??t.cwd,a=_t.of(un(s)),c=new zd({context:t,logLevel:Xn.Info});await Csr({libraries:i,library:r.library,docsDirectoryPath:a,orgId:n.org,tokenValue:o.value,context:c,wrapStep:EP,docsConfig:n.docs.raw})}};function D_s(e){let t=new R_s;li(e,"generate","[Beta] Generate MDX documentation from library source code. Requires 'libraries' config in docs.yml.",(r,n)=>t.handle(r,n),r=>r.option("library",{type:"string",description:"Name of a specific library defined in docs.yml to generate docs for"}))}function k_s(e){DA({cli:e,name:"md",subcommands:[D_s,t_s]})}kt();function tRi(e,t,r,n,i,o){e.command(t,r,s=>{for(let a of o)a(s);return s.command("$0",!1,a=>{let c=a.version(!1);return i!=null?i(c):c},Dsn(n)),s.version(!1).usage(r)})}Ct();LI();kt();On();Ct();kt();var rRi=class{context;task;project;docsWorkspace;ossWorkspaces;token;constructor({context:t,task:r,project:n,docsWorkspace:i,ossWorkspaces:o,token:s}){this.context=t,this.task=r,this.project=n,this.docsWorkspace=i,this.ossWorkspaces=o,this.token=s}async publish({instanceUrl:t,preview:r,previewId:n,skipUpload:i}){let o=new zd({context:this.context,task:this.task});try{let s=await znr({organization:this.project.config.organization,apiWorkspaces:this.project.apiWorkspaces,ossWorkspaces:this.ossWorkspaces,docsWorkspace:this.docsWorkspace,context:o,token:this.token,instanceUrl:t,preview:r,previewId:n,disableTemplates:void 0,skipUpload:i,cliVersion:"5.170.1",loginCommand:"fern auth login"});return o.getResult()===Sf.Failure?{success:!1}:{success:!0,url:s}}catch(s){return{success:!1,error:Sn(s)}}}};Ct();On();var NRt=class e{static MAX_DISPLAYED_LOGS_TTY=10;static URL_PATTERN=/https?:\/\/[^\s]+/;context;stream;tasks={};taskOrder=[];startTime;isRegistered=!1;constructor(t){this.context=t.context,this.stream=t.stream??process.stderr}addTask(t){let r={...t,status:t.status??"pending"};return this.tasks[t.id]=r,this.taskOrder.push(t.id),this}async start(t){return this.startTime=Date.now(),t!=null&&await this.context.ttyAwareLogger.takeOverTerminal(()=>{this.stream.write(`
4446
4446
  `),this.stream.write(`${me.cyan("\u25C6")} ${me.bold(t.title)}
4447
4447
  `),t.subtitle!=null&&this.stream.write(` ${me.dim(t.subtitle)}
4448
4448
  `),this.stream.write(`
@@ -5136,7 +5136,7 @@ ${r}`}function jNi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
5136
5136
  `),g="";return c&&(g=l.style.error(c)),[`${p} ${f} ${s}`,[m,g].filter(Boolean).join(`
5137
5137
  `)]});var bty=Px((e,t)=>{let{validate:r=()=>!0}=e,n=sv(e.theme),[i,o]=yu("idle"),[s,a]=yu(),[c,u]=yu(""),l=Tx({status:i,theme:n});Ox(async(g,A)=>{if(i==="idle")if(Sx(g)){let y=c;o("loading");let I=await r(y);I===!0?(u(y),o("done"),t(y)):(A.write(c),a(I||"You must provide a valid value"),o("idle"))}else u(A.line),a(void 0)});let p=n.style.message(e.message,i),d="",f;e.mask?d=(typeof e.mask=="string"?e.mask:"*").repeat(c.length):i!=="done"&&(f=`${n.style.help("[input is masked]")}${RFt}`),i==="done"&&(d=n.style.answer(d));let m="";return s&&(m=n.style.error(s)),[[l,p,e.mask?d:f].join(" "),m]});var UKe=Ae(JS(),1);var Ety={icon:{cursor:bw.pointer},style:{disabled:e=>UKe.default.dim(`- ${e}`),searchTerm:e=>UKe.default.cyan(e),description:e=>UKe.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${UKe.default.bold(t)} ${UKe.default.dim(r)}`).join(UKe.default.dim(" \u2022 "))},helpMode:"always"};function ura(e){return!qd.isSeparator(e)&&!e.disabled}function Ity(e){return e.map(t=>{if(qd.isSeparator(t))return t;if(typeof t=="string")return{value:t,name:t,short:t,disabled:!1};let r=t.name??String(t.value),n={value:t.value,name:r,short:t.short??r,disabled:t.disabled??!1};return t.description&&(n.description=t.description),n})}var vty=Px((e,t)=>{let{pageSize:r=7,validate:n=()=>!0}=e,i=sv(Ety,e.theme),[o,s]=yu("loading"),[a,c]=yu(""),[u,l]=yu([]),[p,d]=yu(),f=Tx({status:o,theme:i}),m=q6(()=>{let z=u.findIndex(ura),Y=u.findLastIndex(ura);return{first:z,last:Y}},[u]),[g=m.first,A]=yu();hU(()=>{let z=new AbortController;return s("loading"),d(void 0),(async()=>{try{let $=await e.source(a||void 0,{signal:z.signal});z.signal.aborted||(A(void 0),d(void 0),l(Ity($)),s("idle"))}catch($){!z.signal.aborted&&$ instanceof Error&&d($.message)}})(),()=>{z.abort()}},[a]);let y=u[g];Ox(async(z,Y)=>{if(Sx(z))if(y){s("loading");let $=await n(y.value);s("idle"),$===!0?(s("done"),t(y.value)):y.name===a?d($||"You must provide a valid value"):(Y.write(y.name),c(y.name))}else Y.write(a);else if(Xbe(z)&&y)Y.clearLine(0),Y.write(y.name),c(y.name);else if(o!=="loading"&&(QR(z)||G6(z))){if(Y.clearLine(0),QR(z)&&g!==m.first||G6(z)&&g!==m.last){let $=QR(z)?-1:1,ee=g;do ee=(ee+$+u.length)%u.length;while(!ura(u[ee]));A(ee)}}else c(Y.line)});let I=i.style.message(e.message,o),x;if(i.helpMode!=="never")if(e.instructions){let{pager:z,navigation:Y}=e.instructions;x=i.style.help(u.length>r?z:Y)}else x=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let v=QKe({items:u,active:g,renderItem({item:z,isActive:Y}){if(qd.isSeparator(z))return` ${z.separator}`;if(z.disabled){let ae=typeof z.disabled=="string"?z.disabled:"(disabled)";return i.style.disabled(`${z.name} ${ae}`)}let $=Y?i.style.highlight:ae=>ae,ee=Y?i.icon.cursor:" ";return $(`${ee} ${z.name}`)},pageSize:r,loop:!1}),w;p?w=i.style.error(p):u.length===0&&a!==""&&o==="idle"&&(w=i.style.error("No results found"));let B;if(o==="done"&&y)return[f,I,i.style.answer(y.short)].filter(Boolean).join(" ").trimEnd();B=i.style.searchTerm(a);let R=y?.description,D=[f,I,B].filter(Boolean).join(" ").trimEnd(),O=[w??v," ",R?i.style.description(R):"",x].filter(Boolean).join(`
5138
5138
  `).trimEnd();return[D,O]});var kFt=Ae(JS(),1);var Cty={icon:{cursor:bw.pointer},style:{disabled:e=>kFt.default.dim(`- ${e}`),description:e=>kFt.default.cyan(e),keysHelpTip:e=>e.map(([t,r])=>`${kFt.default.bold(t)} ${kFt.default.dim(r)}`).join(kFt.default.dim(" \u2022 "))},helpMode:"always",indexMode:"hidden",keybindings:[]};function DFt(e){return!qd.isSeparator(e)&&!e.disabled}function xty(e){return e.map(t=>{if(qd.isSeparator(t))return t;if(typeof t=="string")return{value:t,name:t,short:t,disabled:!1};let r=t.name??String(t.value),n={value:t.value,name:r,short:t.short??r,disabled:t.disabled??!1};return t.description&&(n.description=t.description),n})}var lra=Px((e,t)=>{let{loop:r=!0,pageSize:n=7}=e,i=sv(Cty,e.theme),{keybindings:o}=i,[s,a]=yu("idle"),c=Tx({status:s,theme:i}),u=zKe(),l=!o.includes("vim"),p=q6(()=>xty(e.choices),[e.choices]),d=q6(()=>{let R=p.findIndex(DFt),D=p.findLastIndex(DFt);if(R===-1)throw new qle("[select prompt] No selectable choices. All choices are disabled.");return{first:R,last:D}},[p]),f=q6(()=>"default"in e?p.findIndex(R=>DFt(R)&&R.value===e.default):-1,[e.default,p]),[m,g]=yu(f===-1?d.first:f),A=p[m];Ox((R,D)=>{if(clearTimeout(u.current),Sx(R))a("done"),t(A.value);else if(QR(R,o)||G6(R,o)){if(D.clearLine(0),r||QR(R,o)&&m!==d.first||G6(R,o)&&m!==d.last){let O=QR(R,o)?-1:1,z=m;do z=(z+O+p.length)%p.length;while(!DFt(p[z]));g(z)}}else if(Our(R)&&!Number.isNaN(Number(D.line))){let O=Number(D.line)-1,z=-1,Y=p.findIndex(ee=>qd.isSeparator(ee)?!1:(z++,z===O)),$=p[Y];$!=null&&DFt($)&&g(Y),u.current=setTimeout(()=>{D.clearLine(0)},700)}else if(FKe(R))D.clearLine(0);else if(l){let O=D.line.toLowerCase(),z=p.findIndex(Y=>qd.isSeparator(Y)||!DFt(Y)?!1:Y.name.toLowerCase().startsWith(O));z!==-1&&g(z),u.current=setTimeout(()=>{D.clearLine(0)},700)}}),hU(()=>()=>{clearTimeout(u.current)},[]);let y=i.style.message(e.message,s),I;if(i.helpMode!=="never")if(e.instructions){let{pager:R,navigation:D}=e.instructions;I=i.style.help(p.length>n?R:D)}else I=i.style.keysHelpTip([["\u2191\u2193","navigate"],["\u23CE","select"]]);let x=0,v=QKe({items:p,active:m,renderItem({item:R,isActive:D,index:O}){if(qd.isSeparator(R))return x++,` ${R.separator}`;let z=i.indexMode==="number"?`${O+1-x}. `:"";if(R.disabled){let ee=typeof R.disabled=="string"?R.disabled:"(disabled)";return i.style.disabled(`${z}${R.name} ${ee}`)}let Y=D?i.style.highlight:ee=>ee,$=D?i.icon.cursor:" ";return Y(`${$} ${z}${R.name}`)},pageSize:n,loop:r});if(s==="done")return[c,y,i.style.answer(A.short)].filter(Boolean).join(" ");let{description:w}=A;return`${[[c,y].filter(Boolean).join(" "),v," ",w?i.style.description(w):"",I].filter(Boolean).join(`
5139
- `).trimEnd()}${RFt}`});On();Ui();var Wle={GENERATION_STARTED:"generation_started",GENERATION_COMPLETED:"generation_completed",GENERATION_FAILED:"generation_failed",VERIFICATION_FAILED:"verification_failed",SDK_PR_CREATED:"sdk_pr_created",UPGRADE_APPLIED:"upgrade_applied",MAJOR_VERSION_BUMP:"major_version_bump"},wty={[Wle.GENERATION_STARTED]:!1,[Wle.GENERATION_COMPLETED]:!1,[Wle.GENERATION_FAILED]:!0,[Wle.VERIFICATION_FAILED]:!0,[Wle.SDK_PR_CREATED]:!1,[Wle.UPGRADE_APPLIED]:!1,[Wle.MAJOR_VERSION_BUMP]:!1};function s7p(e){return wty[e]}function a7p(e,t){return{automation_mode:!0,surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function c7p(e,t){function r(i,o,s){s!=null&&(i[o]=s)}let n={surface:"cli",automation_mode:"true"};return r(n,"event",e.event),r(n,"action",t.action),r(n,"run_id",t.run_id),r(n,"org",t.org),r(n,"config_repo",t.config_repo),r(n,"trigger",t.trigger),r(n,"error_code",e.errorCode??"none"),n}function u7p(e,t){return{github_run_id:t.github_run_id,github_run_url:t.github_run_url,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,cli_version:t.cli_version,...e.attributes??{}}}function l7p(e,t){return{event:e.event,timestamp:new Date().toISOString(),surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function p7p(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?Wle.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?Wle.VERIFICATION_FAILED:Wle.GENERATION_FAILED}var Sty="",Tty="FERN_AUTOMATION_EVENTS_ORIGIN",Oty=3e3,yji=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[Tty]??Sty)),e.instance}constructor(t){this.origin=t}resolveEndpoint(){if(this.origin.length!==0)return`${this.origin.replace(/\/$/,"")}/v1/automation/events`}post(t,r){this.inflight.push(this.send(t,r))}async shutdown(){let t=this.inflight;this.inflight=[],t.length>0&&await Promise.allSettled(t)}async send(t,r){let n=this.resolveEndpoint();if(n==null)return;let i=new AbortController,o=setTimeout(()=>i.abort(),Oty);try{let s={"content-type":"application/json"},a=await EM();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(l7p(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function f7p(){let{fern_run_id:e,github_run_id:t}=Ppe();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.170.0"}}function d7p(){return process.env.FERN_AUTOMATION==="true"}var Pty=3e3,bji=class{constructor(t,r=yji.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=f7p()}reporter;automationEventApiClient;context;setOrganization(t){this.context={...this.context,org:t}}emit(t,r){let n=this.captureSentryForFailure({event:t,context:this.context,error:r?.error}),i=n==null?t:{...t,attributes:{...t.attributes??{},sentry_event_id:n}};this.capturePostHogEvent({event:i,context:this.context}),this.captureAutomationEventApiEvent(i,this.context)}async flush(){let t;try{await Promise.race([this.automationEventApiClient.shutdown(),new Promise(r=>{t=setTimeout(r,Pty)})])}finally{clearTimeout(t)}}capturePostHogEvent({event:t,context:r}){this.reporter.instrumentPostHogAutomationEvent({distinctId:r.run_id??void 0,event:t.event,properties:a7p(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!s7p(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:c7p(t,r),context:{automation:u7p(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};kt();function Eji(e,t,r){if(t instanceof hc)return;let n=FMe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new T({message:s,code:n});d7p()?Rty(i,e,n,s,a):Bty(e,o,n,a)}function Bty(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),uQt(r)&&e.captureException(n,{tags:{"error.code":r}})}function Rty(e,t,r,n,i){let o=p7p(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}kt();function VKe(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Iji({cliName:e,packageVersion:t,isLocal:r}){return VKe()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var vji=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Iji(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new T({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:T.Code.ConfigError});this.sentry=tQt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[_Ye(),oEe(),sEe(),V0e(),iEe()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),rQt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):_P(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};kt();var Cji=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new T({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:T.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};Gme();Ct();Uy();kt();On();var Dur=class{result=Sf.Success;lastFailureMessage=void 0;logImmediately;logPrefix;title;subtasks=[];shouldBufferLogs;bufferedLogs=[];status="notStarted";onResult;instrumentPostHogEventImpl;captureExceptionImpl;emitAutomationTelemetryEventImpl;constructor({logImmediately:t,logPrefix:r,title:n,takeOverTerminal:i,onResult:o,shouldBufferLogs:s,instrumentPostHogEvent:a,captureException:c,emitAutomationTelemetryEvent:u}){this.logImmediately=t,this.logPrefix=r??"",this.title=n,this.takeOverTerminal=i,this.onResult=o,this.shouldBufferLogs=s,this.instrumentPostHogEventImpl=a,this.captureExceptionImpl=c,this.emitAutomationTelemetryEventImpl=u}start(){return this.status="running",this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.status="finished",this.flushLogs(),this.onResult?.(this.getResult()))}isFinished(){return this.status==="finished"}takeOverTerminal;failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),this.finish(),new hc(t??(r instanceof hc?r.failureMessage:this.lastFailureMessage))}failWithoutThrowing(t,r,n){this.result=Sf.Failure,!(r instanceof hc)&&(t!=null&&(this.lastFailureMessage=t),nqt({message:t,error:r,logger:this.logger}),Eji(this,r,{...n,message:t}))}getLastFailureMessage(){return this.lastFailureMessage}captureException(t,r){return this.captureExceptionImpl?.(t,r)}emitAutomationTelemetryEvent(t,r){this.emitAutomationTelemetryEventImpl(t,r)}getResult(){return this.result}instrumentPostHogEvent(t){this.instrumentPostHogEventImpl(t)}logAtLevel(t,...r){this.logAtLevelWithOverrides(t,r)}logAtLevelWithOverrides(t,r,n={}){this.log({parts:r,level:t,time:new Date,...n})}log(t){this.bufferedLogs.push({...t,prefix:this.logPrefix}),this.shouldBufferLogs||this.flushLogs()}flushLogs(){this.logImmediately(this.bufferedLogs),this.bufferedLogs=[]}logger=oI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new pra({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${me.blackBright(t)} `,takeOverTerminal:this.takeOverTerminal,onResult:this.onResult,shouldBufferLogs:this.shouldBufferLogs,instrumentPostHogEvent:i=>this.instrumentPostHogEventImpl(i),captureException:this.captureExceptionImpl,emitAutomationTelemetryEvent:this.emitAutomationTelemetryEventImpl});return this.subtasks.push(n),n}async runInteractiveTask(t,r){let n=this.addInteractiveTask(t).start();try{await r(n)}catch(o){n.failWithoutThrowing(void 0,o)}finally{n.finish()}let i=n.getResult()===Sf.Success;return i||(this.lastFailureMessage=n.getLastFailureMessage()??this.lastFailureMessage),i}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
5139
+ `).trimEnd()}${RFt}`});On();Ui();var Wle={GENERATION_STARTED:"generation_started",GENERATION_COMPLETED:"generation_completed",GENERATION_FAILED:"generation_failed",VERIFICATION_FAILED:"verification_failed",SDK_PR_CREATED:"sdk_pr_created",UPGRADE_APPLIED:"upgrade_applied",MAJOR_VERSION_BUMP:"major_version_bump"},wty={[Wle.GENERATION_STARTED]:!1,[Wle.GENERATION_COMPLETED]:!1,[Wle.GENERATION_FAILED]:!0,[Wle.VERIFICATION_FAILED]:!0,[Wle.SDK_PR_CREATED]:!1,[Wle.UPGRADE_APPLIED]:!1,[Wle.MAJOR_VERSION_BUMP]:!1};function s7p(e){return wty[e]}function a7p(e,t){return{automation_mode:!0,surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function c7p(e,t){function r(i,o,s){s!=null&&(i[o]=s)}let n={surface:"cli",automation_mode:"true"};return r(n,"event",e.event),r(n,"action",t.action),r(n,"run_id",t.run_id),r(n,"org",t.org),r(n,"config_repo",t.config_repo),r(n,"trigger",t.trigger),r(n,"error_code",e.errorCode??"none"),n}function u7p(e,t){return{github_run_id:t.github_run_id,github_run_url:t.github_run_url,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,cli_version:t.cli_version,...e.attributes??{}}}function l7p(e,t){return{event:e.event,timestamp:new Date().toISOString(),surface:"cli",action:t.action,run_id:t.run_id,github_run_id:t.github_run_id,github_run_url:t.github_run_url,org:t.org,config_repo:t.config_repo,config_commit_sha:t.config_commit_sha,config_branch:t.config_branch,config_pr_number:t.config_pr_number,trigger:t.trigger,cli_version:t.cli_version,...e.errorCode!==void 0?{error_code:e.errorCode}:{},...e.attributes??{}}}function p7p(e){let t=e.join(" ");return/\bautomations\s+generate\b/.test(t)?Wle.GENERATION_FAILED:/\bautomations\s+preview\b/.test(t)?Wle.VERIFICATION_FAILED:Wle.GENERATION_FAILED}var Sty="",Tty="FERN_AUTOMATION_EVENTS_ORIGIN",Oty=3e3,yji=class e{static instance;origin;inflight=[];static getInstance(){return e.instance==null&&(e.instance=new e(process.env[Tty]??Sty)),e.instance}constructor(t){this.origin=t}resolveEndpoint(){if(this.origin.length!==0)return`${this.origin.replace(/\/$/,"")}/v1/automation/events`}post(t,r){this.inflight.push(this.send(t,r))}async shutdown(){let t=this.inflight;this.inflight=[],t.length>0&&await Promise.allSettled(t)}async send(t,r){let n=this.resolveEndpoint();if(n==null)return;let i=new AbortController,o=setTimeout(()=>i.abort(),Oty);try{let s={"content-type":"application/json"},a=await EM();a!=null&&a.value.length>0&&(s.Authorization=`Bearer ${a.value}`);let c=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(l7p(t,r)),signal:i.signal})}catch{return}finally{clearTimeout(o)}}};function f7p(){let{fern_run_id:e,github_run_id:t}=Ppe();return{action:process.env.FERN_ACTION,run_id:e,github_run_id:t,github_run_url:process.env.FERN_GITHUB_RUN_URL,org:void 0,config_repo:process.env.FERN_CONFIG_REPO,config_commit_sha:process.env.FERN_CONFIG_COMMIT_SHA,config_branch:process.env.FERN_CONFIG_BRANCH,config_pr_number:process.env.FERN_CONFIG_PR_NUMBER,trigger:process.env.GITHUB_EVENT_NAME,cli_version:"5.170.1"}}function d7p(){return process.env.FERN_AUTOMATION==="true"}var Pty=3e3,bji=class{constructor(t,r=yji.getInstance()){this.reporter=t;this.automationEventApiClient=r;this.context=f7p()}reporter;automationEventApiClient;context;setOrganization(t){this.context={...this.context,org:t}}emit(t,r){let n=this.captureSentryForFailure({event:t,context:this.context,error:r?.error}),i=n==null?t:{...t,attributes:{...t.attributes??{},sentry_event_id:n}};this.capturePostHogEvent({event:i,context:this.context}),this.captureAutomationEventApiEvent(i,this.context)}async flush(){let t;try{await Promise.race([this.automationEventApiClient.shutdown(),new Promise(r=>{t=setTimeout(r,Pty)})])}finally{clearTimeout(t)}}capturePostHogEvent({event:t,context:r}){this.reporter.instrumentPostHogAutomationEvent({distinctId:r.run_id??void 0,event:t.event,properties:a7p(t,r)})}captureSentryForFailure({event:t,context:r,error:n}){if(!(!s7p(t.event)||t.errorCode==null))return this.reporter.captureException(n,{tags:c7p(t,r),context:{automation:u7p(t,r)}})}captureAutomationEventApiEvent(t,r){this.automationEventApiClient.post(t,r)}};kt();function Eji(e,t,r){if(t instanceof hc)return;let n=FMe(t,r?.code),i=r?.argv??process.argv,o=i.join(" "),s=r?.message??(t instanceof Error?t.message:void 0)??"",a=t??new T({message:s,code:n});d7p()?Rty(i,e,n,s,a):Bty(e,o,n,a)}function Bty(e,t,r,n){e.instrumentPostHogEvent({command:t,properties:{failed:!0,errorCode:r}}),uQt(r)&&e.captureException(n,{tags:{"error.code":r}})}function Rty(e,t,r,n,i){let o=p7p(e);t.emitAutomationTelemetryEvent({event:o,errorCode:r,attributes:{error_message:n}},{error:i})}kt();function VKe(){return process.env.FERN_DISABLE_TELEMETRY==="true"}function Iji({cliName:e,packageVersion:t,isLocal:r}){return VKe()||r?!1:!(t==="0.0.0")&&(e==="fern"&&!0)}var vji=class{sentry;constructor({release:t,telemetry:r}){let n="https://84f58b5e457f06999d92f11ce4b79158@o4509504076185600.ingest.us.sentry.io/4511021546602496";if(Iji(r)&&n!=null&&n.length>0){let i="production";if(i==null||i.length===0)throw new T({message:"SENTRY_ENVIRONMENT must be set when SENTRY_DSN is configured",code:T.Code.ConfigError});this.sentry=tQt({dsn:n,release:t,environment:i,defaultIntegrations:!1,integrations:[_Ye(),oEe(),sEe(),V0e(),iEe()],tracesSampleRate:0,attachStacktrace:!0,sendClientReports:!1}),rQt()}}captureException(t,r){if(this.sentry!=null)try{let n=r?.tags,i=r?.context,o=n!=null&&Object.keys(n).length>0,s=i!=null&&Object.values(i).some(a=>a!=null);return!o&&!s?this.sentry.captureException(t):_P(a=>{if(o&&a.setTags(n),i!=null)for(let[c,u]of Object.entries(i))u!=null&&a.setContext(c,u);return this.sentry?.captureException(t,void 0,a)})}catch{return}}async flush(){this.sentry!=null&&await Promise.resolve(this.sentry.flush(2e3)).catch(()=>{})}};kt();var Cji=class{originalWrite;redirected=!1;redirect(){if(this.redirected)throw new T({message:"StdoutRedirector: already redirected \u2014 did you forget to restore()?",code:T.Code.InternalError});this.originalWrite=process.stdout.write,process.stdout.write=process.stderr.write.bind(process.stderr),this.redirected=!0}restore(){!this.redirected||this.originalWrite==null||(process.stdout.write=this.originalWrite,this.originalWrite=void 0,this.redirected=!1)}async withRedirect(t){this.redirect();try{return await t()}finally{this.restore()}}};Gme();Ct();Uy();kt();On();var Dur=class{result=Sf.Success;lastFailureMessage=void 0;logImmediately;logPrefix;title;subtasks=[];shouldBufferLogs;bufferedLogs=[];status="notStarted";onResult;instrumentPostHogEventImpl;captureExceptionImpl;emitAutomationTelemetryEventImpl;constructor({logImmediately:t,logPrefix:r,title:n,takeOverTerminal:i,onResult:o,shouldBufferLogs:s,instrumentPostHogEvent:a,captureException:c,emitAutomationTelemetryEvent:u}){this.logImmediately=t,this.logPrefix=r??"",this.title=n,this.takeOverTerminal=i,this.onResult=o,this.shouldBufferLogs=s,this.instrumentPostHogEventImpl=a,this.captureExceptionImpl=c,this.emitAutomationTelemetryEventImpl=u}start(){return this.status="running",this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.status="finished",this.flushLogs(),this.onResult?.(this.getResult()))}isFinished(){return this.status==="finished"}takeOverTerminal;failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),this.finish(),new hc(t??(r instanceof hc?r.failureMessage:this.lastFailureMessage))}failWithoutThrowing(t,r,n){this.result=Sf.Failure,!(r instanceof hc)&&(t!=null&&(this.lastFailureMessage=t),nqt({message:t,error:r,logger:this.logger}),Eji(this,r,{...n,message:t}))}getLastFailureMessage(){return this.lastFailureMessage}captureException(t,r){return this.captureExceptionImpl?.(t,r)}emitAutomationTelemetryEvent(t,r){this.emitAutomationTelemetryEventImpl(t,r)}getResult(){return this.result}instrumentPostHogEvent(t){this.instrumentPostHogEventImpl(t)}logAtLevel(t,...r){this.logAtLevelWithOverrides(t,r)}logAtLevelWithOverrides(t,r,n={}){this.log({parts:r,level:t,time:new Date,...n})}log(t){this.bufferedLogs.push({...t,prefix:this.logPrefix}),this.shouldBufferLogs||this.flushLogs()}flushLogs(){this.logImmediately(this.bufferedLogs),this.bufferedLogs=[]}logger=oI(this.logAtLevel.bind(this));addInteractiveTask({name:t,subtitle:r}){let n=new pra({name:t,subtitle:r,logImmediately:i=>this.logImmediately(i),logPrefix:`${this.logPrefix}${me.blackBright(t)} `,takeOverTerminal:this.takeOverTerminal,onResult:this.onResult,shouldBufferLogs:this.shouldBufferLogs,instrumentPostHogEvent:i=>this.instrumentPostHogEventImpl(i),captureException:this.captureExceptionImpl,emitAutomationTelemetryEvent:this.emitAutomationTelemetryEventImpl});return this.subtasks.push(n),n}async runInteractiveTask(t,r){let n=this.addInteractiveTask(t).start();try{await r(n)}catch(o){n.failWithoutThrowing(void 0,o)}finally{n.finish()}let i=n.getResult()===Sf.Success;return i||(this.lastFailureMessage=n.getLastFailureMessage()??this.lastFailureMessage),i}printInteractiveTasks({spinner:t}){return this.subtasks.map(r=>r.print({spinner:t})).join(`
5140
5140
  `)}},pra=class extends Dur{name;subtitle;constructor({name:t,subtitle:r,...n}){super(n),this.name=t,this.subtitle=r}start(){return super.start(),this.logAtLevelWithOverrides(Xn.Info,["Started."],{omitOnTTY:!0}),this.flushLogs(),this}isStarted(){return this.status!=="notStarted"}finish(){this.status!=="finished"&&(this.result===Sf.Success?this.logAtLevelWithOverrides(Xn.Info,["Finished."],{omitOnTTY:!0}):this.logAtLevelWithOverrides(Xn.Error,["Failed."],{omitOnTTY:!0}),super.finish())}setSubtitle(t){this.subtitle=t}print({spinner:t}){let r=[this.name];return this.subtitle!=null&&r.push(me.dim(this.subtitle)),r.push(...this.subtasks.map(n=>n.print({spinner:t}))),Gz({prefix:this.getIcon({spinner:t}),content:r.join(`
5141
5141
  `)})}printInteractiveTasks({spinner:t}){return this.print({spinner:t})}getIcon({spinner:t}){let r=this.subtasks.length>0;switch(this.status){case"notStarted":return r?me.dim("\u25B8 "):me.dim("\u25E6 ");case"running":return r?me.cyan("\u25BE "):t;case"finished":switch(this.getResult()){case Sf.Success:return r?me.green("\u25BE "):me.green("\u2713 ");case Sf.Failure:return r?me.red("\u25BE "):me.red("x ")}}}getResult(){if(this.result===Sf.Failure)return Sf.Failure;for(let t of this.subtasks)if(t.getResult()===Sf.Failure)return Sf.Failure;return Sf.Success}};kt();var m7p=Ae(F_e(),1);On();function h7p(e){return e.filter(t=>t.isUpgradeAvailable).length>0}function Dty(e){return(e.cliUpgradeInfo?.isUpgradeAvailable??!1)||h7p(e.generatorUpgradeInfo)}async function g7p({cliEnvironment:e,upgradeInfo:t}){if(!Dty(t)||e.packageVersion==t.cliUpgradeInfo?.latestVersion)return;let r=`${me.underline("Upgrades available")}
5142
5142
 
@@ -5145,7 +5145,7 @@ ${r}`}function jNi(e){let t=this,{emitParseErrors:r,...n}={...t.data("settings")
5145
5145
  Run ${me.cyan("fern generator upgrade")} to upgrade your generators.`),i.length>2&&(r+=`
5146
5146
  Run ${me.cyan("fern generator upgrade --list")} to see the full list of generator upgrades available.`),Dft(r,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"})}async function fra({generatorUpgradeInfo:e,header:t,limit:r,includeBoxen:n=!0}){if(!h7p(e))return;let i=t??"",o=e.filter(a=>a.isUpgradeAvailable);r!=null&&(o=o.slice(0,r+1));let s=o.sort((a,c)=>a.generatorName.localeCompare(c.generatorName)||a.currentVersion.localeCompare(c.currentVersion));for(let a of s)i+=`
5147
5147
  ${await kty(a.generatorName)} (${a.apiName!=null?"API: "+a.apiName+", ":""}Group: ${a.generatorGroup}) `+me.dim(a.currentVersion)+me.reset(" \u2192 ")+me.green(a.latestVersion);return i+=`
5148
- `,n?Dft(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function kty(e){let r=await new m7p.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new T({message:`Generator ${e} not found`,code:T.Code.ConfigError});return r.body.displayName}Fi();ehe();kt();var kur=Ae(_y(),1);function FFt(e){let t;return()=>(t??=e.runTask(r=>pd(r)),t)}function xji({generatorId:e,candidateVersion:t,currentVersion:r}){if(!A7p(t)||!A7p(r))throw new T({message:`Cannot compare versions for generator "${e}": configured version "${r}", candidate version "${t}". Use valid semantic versions such as 1.2.3.`,code:T.Code.VersionError});try{return t===r?0:GS(t,r)?1:GS(r,t)?-1:0}catch{let n=kur.default.valid(t),i=kur.default.valid(r);if(n!=null&&i!=null)return Math.sign(kur.default.compare(n,i));throw new T({message:`Cannot compare versions for generator "${e}": configured version "${r}", candidate version "${t}". Use valid semantic versions such as 1.2.3.`,code:T.Code.VersionError})}}function A7p(e){if(e==="latest"||kur.default.valid(e)!=null)return!0;try{return iJ(e),!0}catch{return!1}}async function wji({generatorId:e,currentVersion:t,includeMajor:r,channel:n,organization:i,getToken:o,context:s}){if(n!=null)throw new Error(`SDK Gen API generator version discovery does not support the requested upgrade channel "${n}". Remove --channel to use executable index versions; FDR channel metadata is used only when the ${Brr} feature flag is off for this organization.`);let a=BTt();if(a==null)throw new Error("FERN_SDK_GEN_API_ORIGIN is required when sdk-gen-api generation is enabled");let c=Gv(e);if(c==null)return s.logger.error(`SDK Gen API cannot discover versions for unsupported generator ${e}. Use a canonical first-party SDK generator name.`),{};let u=await o(),l=await Vvs({origin:a,organization:i,token:u,generatorId:e,language:c,currentVersion:t,includeMajor:r});return l.state==="UNAVAILABLE"?(s.logger.error(`SDK Gen API cannot resolve an executable version for ${e}@${t} (${l.reason}). Publish the coordinate to this environment or choose a supported generator version.`),{}):{compatibleVersion:l.compatibleVersion,withheldMajorVersion:l.withheldMajorVersion}}async function Fty({cliContext:e,project:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s}){let{apiWorkspaces:a}=t,c=FFt(e);if(a.length===1){let l={type:"singleApi",versions:{}};return await y7p({cliContext:e,apiWorkspaces:a,perGeneratorAction:async(p,d,f,m)=>{l.versions[d]==null&&(l.versions[d]={});let g=x_e(f.name);if(g==null){m.logger.debug(`Skipping unknown generator: ${f.name}`);return}let A=await E7p({generatorName:f.name,normalizedGeneratorName:g,cliVersion:e.environment.packageVersion,currentGeneratorVersion:f.version,channel:i,includeMajor:o,organization:t.config.organization,skipFeatureFlagRequest:s,getSdkGenApiToken:c,context:m});A!=null&&(l.versions[d][f.name]={previousVersion:f.version,latestVersion:A})},generatorFilter:r,groupFilter:n}),l}let u={type:"multiApi",versions:{}};return await y7p({cliContext:e,apiWorkspaces:a,perGeneratorAction:async(l,p,d,f)=>{if(l==null)return;u.versions[l]==null&&(u.versions[l]={}),u.versions[l][p]==null&&(u.versions[l][p]={});let m=x_e(d.name);if(m==null){f.logger.debug(`Skipping unknown generator: ${d.name}`);return}let g=await E7p({generatorName:d.name,normalizedGeneratorName:m,cliVersion:e.environment.packageVersion,currentGeneratorVersion:d.version,channel:i,includeMajor:o,organization:t.config.organization,skipFeatureFlagRequest:s,getSdkGenApiToken:c,context:f});g!=null&&(u.versions[l][p][d.name]={previousVersion:d.version,latestVersion:g})},generatorFilter:r,groupFilter:n}),u}async function y7p({cliContext:e,apiWorkspaces:t,perGeneratorAction:r,generatorFilter:n,groupFilter:i}){await Promise.all(t.map(async o=>{await e.runTaskForWorkspace(o,async s=>{let a=await m4({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?$h(n):void 0;for(let u of a.groups)if(!(i!=null&&u.groupName!==i))for(let l of u.generators)c!=null&&l.name!==c||await r(o.workspaceName,u.groupName,l,s)})}))}function b7p(e,t,r){let n=[];for(let[i,o]of Object.entries(e))for(let[s,a]of Object.entries(o)){r.debug(`Checking if ${s} in group ${i} has an upgrade available...`);let c=xji({generatorId:s,candidateVersion:a.latestVersion,currentVersion:a.previousVersion})===1;r.debug(`Latest version: ${a.latestVersion}. `+(c?"Upgrade available.":"No upgrade available.")),n.push({generatorName:s,generatorGroup:i,apiName:t,isUpgradeAvailable:c,currentVersion:a.previousVersion,latestVersion:a.latestVersion})}return n}async function E7p({generatorName:e,normalizedGeneratorName:t,cliVersion:r,currentGeneratorVersion:n,channel:i,includeMajor:o,organization:s,skipFeatureFlagRequest:a,getSdkGenApiToken:c,context:u}){return n==="latest"?"latest":await Nty({organization:s,generatorName:$h(e),skipFeatureFlagRequest:a})?(await wji({generatorId:$h(e),currentVersion:n,includeMajor:o??!1,channel:i,organization:s,getToken:c,context:u})).compatibleVersion:LB({generatorName:t,cliVersion:r,currentGeneratorVersion:n,channel:i,includeMajor:o,context:u})}async function Sji({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s}){let a=[];if(e!=null){let c=await Fty({cliContext:t,project:e,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s});if(c.type==="multiApi")for(let[u,l]of Object.entries(c.versions))a.push(...b7p(l,u,t.logger));else a.push(...b7p(c.versions,void 0,t.logger))}return a}async function Nty({organization:e,generatorName:t,skipFeatureFlagRequest:r}){return r===!0?vPs({organization:e,generatorName:t})??!1:OTt({organization:e,generatorName:t})}kt();Ljr();async function Zbe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await S6e(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new T({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:T.Code.NetworkError})}}var I7p=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Tji=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Xn.Info;isLocal;stdoutRedirector=new Cji;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await yKt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new bqt(t,r),this.isLocal=n??!1,this.posthogManager=i;let o=this.getPackageName(),s=this.getPackageVersion(),a=this.getCliName();(o==null||s==null||a==null)&&this.exitProgram(),this.environment={packageName:o,packageVersion:s,cliName:a},this.sentryClient=new vji({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new bji(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.170.0"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${me.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new hc(t??(r instanceof hc?r.failureMessage:r!=null?Sn(r):void 0))}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof hc)&&(nqt({message:t,error:r,logger:this.logger}),Eji(this,r,{...n,message:t}))}enableJsonMode(){this.jsonMode||(this.jsonMode=!0,this.stdoutRedirector.redirect())}get isJsonMode(){return this.jsonMode}get isTTY(){return this.ttyAwareLogger.isTTY}writeJsonToStdout(t){this.writeTextToStdout(JSON.stringify(t,null,2)+`
5148
+ `,n?Dft(i,{padding:1,float:"center",textAlignment:"center",borderColor:"yellow",borderStyle:"round"}):i}async function kty(e){let r=await new m7p.FernRegistryClient({environment:"https://registry.buildwithfern.com"}).generators.getGeneratorByImage({dockerImage:e});if(!r.ok||r.body==null)throw new T({message:`Generator ${e} not found`,code:T.Code.ConfigError});return r.body.displayName}Fi();ehe();kt();var kur=Ae(_y(),1);function FFt(e){let t;return()=>(t??=e.runTask(r=>pd(r)),t)}function xji({generatorId:e,candidateVersion:t,currentVersion:r}){if(!A7p(t)||!A7p(r))throw new T({message:`Cannot compare versions for generator "${e}": configured version "${r}", candidate version "${t}". Use valid semantic versions such as 1.2.3.`,code:T.Code.VersionError});try{return t===r?0:GS(t,r)?1:GS(r,t)?-1:0}catch{let n=kur.default.valid(t),i=kur.default.valid(r);if(n!=null&&i!=null)return Math.sign(kur.default.compare(n,i));throw new T({message:`Cannot compare versions for generator "${e}": configured version "${r}", candidate version "${t}". Use valid semantic versions such as 1.2.3.`,code:T.Code.VersionError})}}function A7p(e){if(e==="latest"||kur.default.valid(e)!=null)return!0;try{return iJ(e),!0}catch{return!1}}async function wji({generatorId:e,currentVersion:t,includeMajor:r,channel:n,organization:i,getToken:o,context:s}){if(n!=null)throw new Error(`SDK Gen API generator version discovery does not support the requested upgrade channel "${n}". Remove --channel to use executable index versions; FDR channel metadata is used only when the ${Brr} feature flag is off for this organization.`);let a=BTt();if(a==null)throw new Error("FERN_SDK_GEN_API_ORIGIN is required when sdk-gen-api generation is enabled");let c=Gv(e);if(c==null)return s.logger.error(`SDK Gen API cannot discover versions for unsupported generator ${e}. Use a canonical first-party SDK generator name.`),{};let u=await o(),l=await Vvs({origin:a,organization:i,token:u,generatorId:e,language:c,currentVersion:t,includeMajor:r});return l.state==="UNAVAILABLE"?(s.logger.error(`SDK Gen API cannot resolve an executable version for ${e}@${t} (${l.reason}). Publish the coordinate to this environment or choose a supported generator version.`),{}):{compatibleVersion:l.compatibleVersion,withheldMajorVersion:l.withheldMajorVersion}}async function Fty({cliContext:e,project:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s}){let{apiWorkspaces:a}=t,c=FFt(e);if(a.length===1){let l={type:"singleApi",versions:{}};return await y7p({cliContext:e,apiWorkspaces:a,perGeneratorAction:async(p,d,f,m)=>{l.versions[d]==null&&(l.versions[d]={});let g=x_e(f.name);if(g==null){m.logger.debug(`Skipping unknown generator: ${f.name}`);return}let A=await E7p({generatorName:f.name,normalizedGeneratorName:g,cliVersion:e.environment.packageVersion,currentGeneratorVersion:f.version,channel:i,includeMajor:o,organization:t.config.organization,skipFeatureFlagRequest:s,getSdkGenApiToken:c,context:m});A!=null&&(l.versions[d][f.name]={previousVersion:f.version,latestVersion:A})},generatorFilter:r,groupFilter:n}),l}let u={type:"multiApi",versions:{}};return await y7p({cliContext:e,apiWorkspaces:a,perGeneratorAction:async(l,p,d,f)=>{if(l==null)return;u.versions[l]==null&&(u.versions[l]={}),u.versions[l][p]==null&&(u.versions[l][p]={});let m=x_e(d.name);if(m==null){f.logger.debug(`Skipping unknown generator: ${d.name}`);return}let g=await E7p({generatorName:d.name,normalizedGeneratorName:m,cliVersion:e.environment.packageVersion,currentGeneratorVersion:d.version,channel:i,includeMajor:o,organization:t.config.organization,skipFeatureFlagRequest:s,getSdkGenApiToken:c,context:f});g!=null&&(u.versions[l][p][d.name]={previousVersion:d.version,latestVersion:g})},generatorFilter:r,groupFilter:n}),u}async function y7p({cliContext:e,apiWorkspaces:t,perGeneratorAction:r,generatorFilter:n,groupFilter:i}){await Promise.all(t.map(async o=>{await e.runTaskForWorkspace(o,async s=>{let a=await m4({absolutePathToWorkspace:o.absoluteFilePath,context:s});if(a==null||a.groups==null)return;let c=n!=null?$h(n):void 0;for(let u of a.groups)if(!(i!=null&&u.groupName!==i))for(let l of u.generators)c!=null&&l.name!==c||await r(o.workspaceName,u.groupName,l,s)})}))}function b7p(e,t,r){let n=[];for(let[i,o]of Object.entries(e))for(let[s,a]of Object.entries(o)){r.debug(`Checking if ${s} in group ${i} has an upgrade available...`);let c=xji({generatorId:s,candidateVersion:a.latestVersion,currentVersion:a.previousVersion})===1;r.debug(`Latest version: ${a.latestVersion}. `+(c?"Upgrade available.":"No upgrade available.")),n.push({generatorName:s,generatorGroup:i,apiName:t,isUpgradeAvailable:c,currentVersion:a.previousVersion,latestVersion:a.latestVersion})}return n}async function E7p({generatorName:e,normalizedGeneratorName:t,cliVersion:r,currentGeneratorVersion:n,channel:i,includeMajor:o,organization:s,skipFeatureFlagRequest:a,getSdkGenApiToken:c,context:u}){return n==="latest"?"latest":await Nty({organization:s,generatorName:$h(e),skipFeatureFlagRequest:a})?(await wji({generatorId:$h(e),currentVersion:n,includeMajor:o??!1,channel:i,organization:s,getToken:c,context:u})).compatibleVersion:LB({generatorName:t,cliVersion:r,currentGeneratorVersion:n,channel:i,includeMajor:o,context:u})}async function Sji({project:e,cliContext:t,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s}){let a=[];if(e!=null){let c=await Fty({cliContext:t,project:e,generatorFilter:r,groupFilter:n,channel:i,includeMajor:o,skipFeatureFlagRequest:s});if(c.type==="multiApi")for(let[u,l]of Object.entries(c.versions))a.push(...b7p(l,u,t.logger));else a.push(...b7p(c.versions,void 0,t.logger))}return a}async function Nty({organization:e,generatorName:t,skipFeatureFlagRequest:r}){return r===!0?vPs({organization:e,generatorName:t})??!1:OTt({organization:e,generatorName:t})}kt();Ljr();async function Zbe({cliEnvironment:e,includePreReleases:t=!1}){if(e.packageName!=="fern-api"||e.packageVersion==="0.0.0")return e.packageVersion;try{return await S6e(e.packageName,{version:t?"prerelease":"latest"})}catch(r){throw new T({message:`Failed to resolve latest CLI version: ${r instanceof Error?r.message:String(r)}`,code:T.Code.NetworkError})}}var I7p=["#2E86AB","#A23B72","#F18F01","#C73E1D","#CCE2A3"],Tji=class e{environment;sentryClient;posthogManager;automationTelemetryManager;didSucceed=!0;numTasks=0;ttyAwareLogger;logLevel=Xn.Info;isLocal;stdoutRedirector=new Cji;jsonMode=!1;static async create(t,r,{isLocal:n}){let i=await yKt();return new e(t,r,{isLocal:n,posthogManager:i})}constructor(t,r,{isLocal:n,posthogManager:i}){this.ttyAwareLogger=new bqt(t,r),this.isLocal=n??!1,this.posthogManager=i;let o=this.getPackageName(),s=this.getPackageVersion(),a=this.getCliName();(o==null||s==null||a==null)&&this.exitProgram(),this.environment={packageName:o,packageVersion:s,cliName:a},this.sentryClient=new vji({release:`cli@${this.environment.packageVersion}`,telemetry:{cliName:this.environment.cliName,packageVersion:this.environment.packageVersion,isLocal:this.isLocal}}),this.automationTelemetryManager=new bji(this)}getPackageName(){return"fern-api"}getPackageVersion(){return"5.170.1"}getCliName(){return"fern"}setLogLevel(t){this.logLevel=t}logFernVersionDebug(){this.logger.debug(`Running ${me.bold(`${this.environment.cliName}`)} (${this.environment.packageName}@${this.environment.packageVersion})`)}failAndThrow(t,r,n){throw this.failWithoutThrowing(t,r,n),new hc(t??(r instanceof hc?r.failureMessage:r!=null?Sn(r):void 0))}failWithoutThrowing(t,r,n){this.didSucceed=!1,!(r instanceof hc)&&(nqt({message:t,error:r,logger:this.logger}),Eji(this,r,{...n,message:t}))}enableJsonMode(){this.jsonMode||(this.jsonMode=!0,this.stdoutRedirector.redirect())}get isJsonMode(){return this.jsonMode}get isTTY(){return this.ttyAwareLogger.isTTY}writeJsonToStdout(t){this.writeTextToStdout(JSON.stringify(t,null,2)+`
5149
5149
  `)}writeTextToStdout(t){this.stdoutRedirector.restore(),process.stdout.write(t),this.jsonMode&&this.stdoutRedirector.redirect()}async exit({code:t}={}){!this._suppressUpgradeMessage&&!this.isLocal&&await this.nudgeUpgradeIfAvailable(),this.ttyAwareLogger.finish();try{await Promise.all([this.posthogManager.flush(),iZo()])}catch{}await this.sentryClient.flush(),await this.automationTelemetryManager.flush(),this.exitProgram({code:t})}async nudgeUpgradeIfAvailable(){try{let t=await Promise.race([this.isUpgradeAvailable({skipFeatureFlagRequest:!0}),new Promise((n,i)=>setTimeout(()=>i("Request timed out"),300))]),r=await g7p({cliEnvironment:this.environment,upgradeInfo:t});r!=null&&(r.endsWith(`
5150
5150
  `)||(r+=`
5151
5151
  `),this.stderr.info(r))}catch{}}async exitIfFailed(){this.didSucceed||await this.exit()}exitProgram({code:t}={}){process.exit(t??(this.didSucceed?0:1))}longestWorkspaceName;registerWorkspaces(t){let r=Nqi(t.map(n=>n.type==="docs"?"docs":n.workspaceName??"api"),n=>n.length);r!=null&&(this.longestWorkspaceName=r)}project;registerProject(t){this.project=t,this.automationTelemetryManager.setOrganization(t.config.organization)}runTask(t){return this.runTaskWithInit(this.constructTaskInit(),t)}addTask(){return this.addTaskWithInit(this.constructTaskInit())}async runTaskForWorkspace(t,r){await this.runTaskWithInit(this.constructTaskInitForWorkspace(t),r)}addTaskWithInit(t){let r=new Dur(t);return this.ttyAwareLogger.registerTask(r),r}USE_NODE_18_OR_ABOVE_MESSAGE="The Fern CLI requires Node 18+ or above.";async runTaskWithInit(t,r){let n=this.addTaskWithInit(t).start(),i;try{i=await r(n)}catch(o){let s=o instanceof hc?o.failureMessage??n.getLastFailureMessage():Sn(o);throw n.failWithoutThrowing(void 0,o),new hc(s)}finally{n.finish()}return i}instrumentPostHogEvent(t){this.isLocal||this.posthogManager.sendEvent(t)}instrumentPostHogAutomationEvent(t){this.isLocal||this.posthogManager.sendAutomationEvent(t)}captureException(t,r){return this.sentryClient.captureException(t,r)}emitAutomationTelemetryEvent(t,r){this.automationTelemetryManager.emit(t,r)}logger=oI((t,...r)=>this.log(t,...r));stderr=oI((t,...r)=>this.logStderr(t,...r));constructTaskInitForWorkspace(t){let r=t.type==="docs"?"docs":t.workspaceName??"api",n=v7p(r),i=1+(this.longestWorkspaceName!=null?v7p(this.longestWorkspaceName):n).length,o=n.padEnd(i),s=I7p[this.numTasks++%I7p.length],a=me.hex(s)(o);return{...this.constructTaskInit(),logPrefix:a,title:me.hex(s).bold(r)}}constructTaskInit(){return{logImmediately:t=>this.logImmediately(t),takeOverTerminal:t=>this.ttyAwareLogger.takeOverTerminal(t),onResult:t=>{t===Sf.Failure&&(this.didSucceed=!1)},instrumentPostHogEvent:t=>{this.instrumentPostHogEvent(t)},shouldBufferLogs:!1,captureException:(t,r)=>this.sentryClient.captureException(t,r),emitAutomationTelemetryEvent:(t,r)=>this.emitAutomationTelemetryEvent(t,r)}}log(t,...r){this.logImmediately([{parts:r,level:t,time:new Date}])}logStderr(t,...r){this.logImmediately([{parts:r,level:t,time:new Date}],{stderr:!0})}logImmediately(t,{stderr:r=!1}={}){let n=t.filter(i=>mS.indexOf(i.level)>=mS.indexOf(this.logLevel));this.ttyAwareLogger.log(n,{includeDebugInfo:this.logLevel===Xn.Debug,stderr:r||this.jsonMode})}_suppressUpgradeMessage=!1;suppressUpgradeMessage(){this._suppressUpgradeMessage=!0}_isUpgradeAvailable;async isUpgradeAvailable({includePreReleases:t=!1,skipFeatureFlagRequest:r=!1}={}){if(this._isUpgradeAvailable==null){this.logger.debug(`Checking if ${this.environment.packageName} upgrade is available...`);let n=await Zbe({cliEnvironment:this.environment,includePreReleases:t}),i=GS(n,this.environment.packageVersion);this.logger.debug(`Latest version: ${n}. `+(i?"Upgrade available.":"No upgrade available."));let o={isUpgradeAvailable:i,latestVersion:n},s=await Sji({project:this.project,cliContext:this,skipFeatureFlagRequest:r});this._isUpgradeAvailable={cliUpgradeInfo:o,generatorUpgradeInfo:s}}return this._isUpgradeAvailable}async confirmPrompt(t,r=!1){return this.selectPrompt({message:t,choices:[{name:"No",value:!1},{name:"Yes",value:!0}],default:r})}async selectPrompt({message:t,choices:r,default:n}){try{return await lra({message:t,choices:r,default:n,theme:{prefix:me.yellow("?"),style:{answer:i=>me.cyan(i),message:i=>me.bold(i),highlight:i=>me.cyan(i)}}})}catch(i){throw i?.name==="ExitPromptError"?(this.logger.info(`